JunsuChoi [Fri, 19 Feb 2021 06:58:00 +0000 (15:58 +0900)]
common: Refactoring incorrectly declared loop variable
Loop variables should be declared in the minimal possible scope
thorvg prefers to declare when using local variables.
JunsuChoi [Fri, 19 Feb 2021 06:47:44 +0000 (15:47 +0900)]
common: Pointer that can declare const are refactored to use const
Pointer and reference parameters should be "const" if the corresponding object is not modified
JunsuChoi [Fri, 19 Feb 2021 06:22:17 +0000 (15:22 +0900)]
common: Functions that can declare const are refactored to use const
Member functions that don't mutate their objects should be declared "const"
Mira Grudzinska [Sat, 6 Feb 2021 23:01:49 +0000 (00:01 +0100)]
sw_engine rle: fixing clipping with non overlaping figures
For clip that did not overlap with the plotted source, the whole
source was plotted - the size of the rle data was not updated.
JunsuChoi [Fri, 19 Feb 2021 05:22:47 +0000 (14:22 +0900)]
common: Fix ubuntu version in build test
github action started updating to ubuntu20.04 for ubuntu-latest.
So fix Ubuntu version 18.04 as we are not ready enough to test for 20.04 yet.
Mira Grudzinska [Mon, 1 Feb 2021 00:33:50 +0000 (01:33 +0100)]
common render: removed unnecessary assignments in update() fun
The rotation part of the transformation matrix can be assigned,
it does not have to be multiplied by the identity matrix.
The values of e13 and e23 of the transformation matrix represents the translation,
so they don't need to be taken into account in the rotation part.
JunsuChoi [Tue, 26 Jan 2021 02:36:09 +0000 (11:36 +0900)]
infra CI: Introduce new build test with github action
This is a build checker using the github action.
When a pull request occurs this action does a basic build,
example build, build with test.
JunsuChoi [Tue, 16 Feb 2021 02:19:19 +0000 (11:19 +0900)]
common: Clean up code
- Combine if condition with the same return value.
- Remove empty space
- Remove tab
JunsuChoi [Wed, 13 Jan 2021 04:12:57 +0000 (13:12 +0900)]
infra coding_style: Add coding style check bot
Add a bot that checks the coding style using cpplint
and reports the result as a review comment.
This feature refers to the repository where cpplint
and docker settings with github-action.
This action works whenever a PR is created and updated.
In cpplint, only the violation of ThorVG's coding style is reported
as a warning using several options.
whitespace/parens
whitespace/indent
whitespace/end_of_line
whitespace/blank_line
The bot will review all of the contents of all files in the current commit file list,
However, in the future, we will improve Bot to only review the changes.
Mira Grudzinska [Wed, 3 Feb 2021 13:00:35 +0000 (14:00 +0100)]
sw_engine raster: checking zero division while inverting the transform matrix
In case the user has provided the transformation matrix, it is possible that
the inverse matrix does not exist.
Mira Grudzinska [Thu, 4 Feb 2021 01:10:14 +0000 (02:10 +0100)]
sw_engine raster: adding rastering functions for image without transformation
Added rastering functions for the image (transparent and not) for the fast
track option - identity transform.
Mira Grudzinska [Sat, 6 Feb 2021 23:33:01 +0000 (00:33 +0100)]
example ClipPath: update
Added example with non-overlaping clip and shape.
Hermet Park [Wed, 3 Feb 2021 02:33:39 +0000 (11:33 +0900)]
Update CONTRIBUTING.md
updated maintainers.
Mira Grudzinska [Mon, 1 Feb 2021 23:55:42 +0000 (00:55 +0100)]
sw_engine raster: removing unnecessary logical 'and' operation
Shifting the 32-bit number by 24 bits leaves only 8 bits,
so there is no need to mask them with 0xFF.
Michal Szczecinski [Tue, 2 Feb 2021 09:43:48 +0000 (10:43 +0100)]
renderer: Fixed RenderUpdate::All flag fields.
All flag should have all bits set to 1.
Michal Szczecinski [Tue, 2 Feb 2021 10:00:30 +0000 (11:00 +0100)]
shape: Fixed reset api.
Added stroke's RLE reset in shape reset function.
Mira Grudzinska [Tue, 26 Jan 2021 00:28:24 +0000 (01:28 +0100)]
sw_engine renderer: rendering optimization of shapes without strokes
The value of 'a' for shapes without a stroke could hold the fill 'a' value.
Added checking if stroke exists before calling rastering functions.
Patryk Kaczmarek [Mon, 18 Jan 2021 03:41:01 +0000 (04:41 +0100)]
sw_engine composition: invert alpha masking
composition invert alpha masking
@Examples: added InvMasking
@Issues: 31
Change-Id: I2ee9d428d5749240ddf2e6adbb7677dccbe1926f
JunsuChoi [Mon, 1 Feb 2021 04:22:44 +0000 (13:22 +0900)]
svg_loader SvgLoader: Prevent memory leak
When OOM of SvgLinear/RadialGradient occurs,
the allocated id, ref, transform may become a memory leak.
Therefore, add free memory.
Patryk Kaczmarek [Tue, 26 Jan 2021 03:57:56 +0000 (04:57 +0100)]
Capi: Composite Method binding
Change-Id: Ia08f08f93aea5c047ef3c397fd63524fcd13d8c6
Michal Szczecinski [Mon, 25 Jan 2021 05:20:46 +0000 (06:20 +0100)]
common: Removed doxyfile
Change-Id: I5a32bdf16034872b37be89906878c95b43adbedd
Michal Szczecinski [Tue, 19 Jan 2021 20:48:30 +0000 (21:48 +0100)]
capi: Added doxygen comments and doxygen config file.
Change-Id: I2ffa5d201d6af4fe0fd353ed04736638fcf9bf19
Hermet Park [Wed, 20 Jan 2021 14:29:15 +0000 (23:29 +0900)]
common picture: fix minor logic.
missing nulling pointer,
also return value properly.
Hermet Park [Wed, 20 Jan 2021 13:57:29 +0000 (22:57 +0900)]
common canvas: fix non-updated paints.
When shapes are poped from canvas while retaining shapes instances,
they have no chances to redraw after pushed again due to missing flag.
This patch fixes it by forcely updating flag on pushing time.
@Issues: 181
Hermet Park [Sun, 10 Jan 2021 14:34:22 +0000 (23:34 +0900)]
common paint: duplicate composition target.
composition target also copied in duplication.
added missing part.
Change-Id: I3ea084de1b5b27f72a80f34c74580d12b0962cc4
Hermet Park [Sun, 10 Jan 2021 11:37:20 +0000 (20:37 +0900)]
sw_engine composition: enhance image masking
composition alpha masking supports scene/paints targets.
@Examples: Masking
@Issues: 31
Change-Id: I7aed18172fab54a2e31ccf8894fcb6fb6925a8a8
Hermet Park [Sun, 10 Jan 2021 10:54:05 +0000 (19:54 +0900)]
sw_engine: optimize raster image.
added a routine that draw non-transformed translucent image.
composition images will use this routine to draw faster.
Also added optimization point comments in raster image.
Change-Id: Ibffb6b9fe06d39b5e1ba342f693f9fc64ccb7314
Hermet Park [Sun, 10 Jan 2021 08:53:16 +0000 (17:53 +0900)]
common paint: code refactoring.
remove the opacity argument in the render method.
Considered again, this opacity value is not commonly used yet.
we can introduce it when it's necessary.
Change-Id: I1acaab3b46c9269fa72e1cb9d92d0667d203d3fd
Hermet Park [Sun, 10 Jan 2021 08:24:55 +0000 (17:24 +0900)]
sw_engine renderer: fix invalid rle issue.
if shape rendering is failed, all the prepared data must be reset
because those are invalid.
@Issues: 180
Change-Id: Iaa187d1fac1e3f4fa0106d0b5e499cac0c7ef207
Hermet Park [Sun, 3 Jan 2021 15:46:59 +0000 (00:46 +0900)]
common sw_engine: revise the masking implementation.
We re-implement the masking feature with image composition method.
This patch is working only for single shape but settle up coming extensions.
Hermet Park [Wed, 30 Dec 2020 04:25:38 +0000 (13:25 +0900)]
common: keep consistency file permissions => 664
Change-Id: I9acae8d5e75f05a3d2d741855724062c76f83725
Hermet Park [Wed, 30 Dec 2020 03:40:54 +0000 (12:40 +0900)]
gl_engine: fix coding convention.
no logical changes.
Change-Id: I3daa0840e1b49bb6344e1137434d0d5f5ebe1aee
mmaciola [Wed, 30 Dec 2020 03:40:03 +0000 (04:40 +0100)]
Capi: Shape bounds binding
Change-Id: I25d7abb67b71007be3aa86d70c6fb1c73af08caf
Co-authored-by: Michal Maciola <m.maciola@samsung.com>
Hermet Park [Wed, 30 Dec 2020 03:38:32 +0000 (12:38 +0900)]
sw_engine: apply opacity to graident fill case.
previously, opacity value is ignored to gradient fill.
This patch implements that case.
Change-Id: Iaaba617659e708d1484ca9b2256395397cc95a33
pankajkumar20 [Wed, 30 Dec 2020 03:23:22 +0000 (08:53 +0530)]
common gl_engine: transformation support
support transformation of shapes some partial cases.
Change-Id: Ib2ca857dfda26cf63d9548af9f584a2152eaf363
Hermet Park [Sun, 27 Dec 2020 15:22:24 +0000 (00:22 +0900)]
sw_engine renderer: fix a regression bug.
recover a broken shape+stroking opacity that introduced in ealier refactoring...
Change-Id: Ie40bd81c06d094118c34a1686adb57a91c4330ce
Hermet Park [Sun, 27 Dec 2020 15:19:51 +0000 (00:19 +0900)]
example ClipPath: ++coverage
Apply gradient usage in clip path.
Change-Id: I6e520fba896ed2f75089acc73a2f5fe20fc82e5e
Hermet Park [Fri, 25 Dec 2020 11:44:07 +0000 (20:44 +0900)]
common sw_engine: code refactoring
Renamed internal interfaces.
We need both blender & compositor interfaces.
Renamed SwCompositor -> SwBlender which is for pixel joining methods.
Added (SwCompositor, Compositor) which is designed for compositing images.
Change-Id: I1eff72e5fe719b6e8b49c22dda53c0a365c6a2a0
Hermet Park [Fri, 25 Dec 2020 11:05:42 +0000 (20:05 +0900)]
tools format: remove tizen specific
When ready, we will use this c++ formatter...
Change-Id: I12a66e1ea1f9946c964acd39b5212b1ad5c26cd1
Hermet Park [Fri, 25 Dec 2020 10:47:01 +0000 (19:47 +0900)]
common composite: code refactoring
Splited out ClipPath routine from other pixel compositions'
since yet it's unlikely compatible...
Also revise internal engine interfaces to be simpler.
This is a step forward to enhance masking feature.
Change-Id: Ic86983f0701defd6ef4c9cc4b7bb795753b0266e
Hermet Park [Wed, 23 Dec 2020 06:37:38 +0000 (15:37 +0900)]
common shape: code refactoring
don't convert data type(float-double) during computation.
Change-Id: Iaeb2d1de54505456bb0e5ae6f587b99fa2022154
Mira Grudzinska [Tue, 22 Dec 2020 12:12:58 +0000 (13:12 +0100)]
sw_engine shape: expand the algorithm to draw arcs with negative angles
The _appendArc function allows to draw angles only in a clockwise direction.
The introduced improvement allows to change this direction by giving the 'sweep' argument
with a negative value.
Change-Id: I2546f4d5214d315dff33e7ed4161848af1f0b0b3
Hermet Park [Tue, 22 Dec 2020 02:09:48 +0000 (11:09 +0900)]
sw_engine renderer: fix wrong conditional check.
unsigned int won't be less than 0.
Change-Id: Ib9462f2d11168d794e93a66ea052c1fb6e05ebd5
Hermet Park [Tue, 22 Dec 2020 02:03:13 +0000 (11:03 +0900)]
svg_loader: fixed wrong boundary check
sz must be less than 20 to append 'carriage return'
Change-Id: Idee7610af58082e18edaf4db30e06566d2600ac2
Hermet Park [Tue, 22 Dec 2020 01:55:23 +0000 (10:55 +0900)]
raw_loader: remove unnecessary declaration.
Change-Id: Ifc284ef639649b8f2a9e336ef192dadf7e3bb7ed
Hermet Park [Tue, 22 Dec 2020 01:46:51 +0000 (10:46 +0900)]
sw_engine raster: fix incorrect condition check.
These values won't be less than zero since they are unsigned types.
Change-Id: I8b6e4c2c7fed230fd25cc43614ac0cb8148b6ac4
Hermet Park [Tue, 22 Dec 2020 01:42:11 +0000 (10:42 +0900)]
common shape: ++safety
null check after memory allocation.
Change-Id: I38c8021442e9eed5059143e1655256f2cd353b3d
Hermet Park [Mon, 21 Dec 2020 09:38:12 +0000 (18:38 +0900)]
sw_engine log: adding missed line wrap.
Change-Id: Iabaee4fd0336ae0e44e812afbaed95f66dcc72a7
Hermet Park [Mon, 21 Dec 2020 09:35:11 +0000 (18:35 +0900)]
sw_engine log: + log clipPath case.
These functions are one of special compositions.
Change-Id: I5f992ddec04d0cde064dede1465c4658a25862d1
JunsuChoi [Fri, 18 Dec 2020 03:20:01 +0000 (12:20 +0900)]
svg_loader SvgLoader: Add memory allocation failed check
Prevent to null access when out of memory.
Change-Id: If322dfbcb91c3d5549d849702b174e1d71fd0242
JunsuChoi [Fri, 18 Dec 2020 02:08:42 +0000 (11:08 +0900)]
raw_loader RawLoader: Add initialize
Add initialization to 'copy' member
Change-Id: Ie593ceb1ae0d0c8368bd1ce720e2ce565ef3dbb4
JunsuChoi [Fri, 18 Dec 2020 02:05:22 +0000 (11:05 +0900)]
svg_loader SvgLoader: Prevent array overflow
Since tagName array set '\0' at the end,
it may overflow when sz reaches 20.
So make it a maximum of 19.
Change-Id: I26e85aa8a3b7e2aad1ec849d14a8b4da6e1bcbf7
Hermet Park [Fri, 18 Dec 2020 10:24:36 +0000 (19:24 +0900)]
inc header: remove unnecessary declaration.
This log tag is not used. We can introduce it when it's necessary.
Change-Id: I8fb8fcd5f006b44d2339dd999c474577be6e17be
Hermet Park [Fri, 18 Dec 2020 10:21:34 +0000 (19:21 +0900)]
examples mask: revise the example code.
Yet, this isn't work properly but it supposed to do
We need to fix alpha mask logic.
Change-Id: I1cef63c96663e35214e995c81c140d2cc0266bbc
Hermet Park [Fri, 18 Dec 2020 08:44:59 +0000 (17:44 +0900)]
common sw_engine: fix build break.
some wrong merge conflicts left. resolve them.
Change-Id: I3f0a04fcf72089c7b0637347b4b05c90b51fbeae
Patryk Kaczmarek [Fri, 18 Dec 2020 08:40:54 +0000 (09:40 +0100)]
common composition: support Masking method
New feature - CompositeMethod::MaskAlpha
Newly Support AlphaMask. but it's unstable.
@Issues: 31
Change-Id: I86827870ed0c040ffc676569df13f4bd8c6e9348
Hermet Park [Thu, 17 Dec 2020 07:11:09 +0000 (16:11 +0900)]
svg_loader XmlParser: code refactoring.
just renamed _nodeTypeToString() -> xmlParserNodeTypeToString()
+ print meson message if log is enabled.
Change-Id: Ic7593daaad93518d9a77d3bccdf3fbb6d802ca8d
JunsuChoi [Thu, 17 Dec 2020 04:03:52 +0000 (13:03 +0900)]
svg_loader SvgLoader: Print inefficient elements
Opacity is 0
both Fill.Opacity and Stroke Opacity are 0
point is 0 in Path
declared display="none"
width or height of bounds becomes 0
Change-Id: I99f49551d7f70d9066493607e3eb5c98fd64c08f
Shinwoo Kim [Tue, 15 Dec 2020 08:58:09 +0000 (17:58 +0900)]
fix typo
Change-Id: I78d025c6cc6d0a6949f5050385fa6333967ddcaf
Shinwoo Kim [Tue, 15 Dec 2020 09:01:01 +0000 (18:01 +0900)]
fix mistake
Change-Id: If23aa5db27617b1e11105ad9b56eea311c84061b
Shinwoo Kim [Tue, 15 Dec 2020 08:16:33 +0000 (17:16 +0900)]
wasm: update picture size for file loading
The width and height was not changed, if there is newly loaded file.
As a result, the scale was not correct after loading a file.
Change-Id: I7a0cd943228f985447458527234467a794264b0e
Shinwoo Kim [Tue, 15 Dec 2020 07:21:18 +0000 (16:21 +0900)]
wasm: work with log option
The wasm is using the ThorVG output starting whith "SVG:" to show
unsupported element and attribute of svg file.
This patch updates wasm_build.sh to make ThorVG prints log,
and removes build errors.
- Following commit needs to include 'algorithm'
1ed6113 common sw_engine: code refactoring & stabilizing.
- Following commit needs to include 'string'
5481633 svg_loader XmlParser: Print unsupported elements, ...
Change-Id: I46bee4588d84b2a647455ac831644f88d2e358cb
Hermet Park [Tue, 15 Dec 2020 05:29:52 +0000 (14:29 +0900)]
common log: notify opacity composition usage log.
replaced [XXX] log prefix with XXX:
Change-Id: I75959711d8baed70cc723c3b1672b68e48bc5cf7
JunsuChoi [Mon, 14 Dec 2020 05:02:24 +0000 (14:02 +0900)]
svg_loader XmlParser: Print unsupported elements, attribute with log option
* Using printf is temporary. We are planning a proper way to print the log.
When parsing a Svg file, Loader print unsupported elements and attributes.
Change-Id: Ib63edf69e7a057e34050f5d8450fa5caddcad082
JunsuChoi [Mon, 14 Dec 2020 07:56:18 +0000 (16:56 +0900)]
examples Opacity: Add close method
Change-Id: Ia9dc20f21e746f82eca54dc7b166bdc829110d46
Hermet Park [Mon, 14 Dec 2020 03:29:37 +0000 (12:29 +0900)]
common sw_engine: apply partial composition.
Introduce RendererMethod::renderRegion() to return acutal drawing region info.
That is used by scene composition to composite actual partial drawing region
for better performance.
@Issues: 173
Change-Id: I5b3bb6cc37c1bc25c6f9f284f13e60da811d267b
Hermet Park [Thu, 10 Dec 2020 10:21:31 +0000 (19:21 +0900)]
sw_engine renderer: optimize composition data usage.
Use cache mechanism for composition data so that we don't reallocate
composition memory several times in one frame rendering.
@Issues: 168
Change-Id: I9b10618855822ae03c8684423683739c6dc248f6
Hermet Park [Thu, 10 Dec 2020 10:53:40 +0000 (19:53 +0900)]
examples Svg: replace a few example svgs.
Change-Id: I99c44c334492b6f9fc3b9fd614e1e4b8a12519b9
Hermet Park [Thu, 10 Dec 2020 05:23:29 +0000 (14:23 +0900)]
examples capi: fix a memory leak.
a shape is not cleaned properly.
@Issues: 178
Change-Id: Ib492fe23726d83b41fdd7b6e97cf68224449b0e5
Hermet Park [Thu, 10 Dec 2020 05:16:41 +0000 (14:16 +0900)]
sw_engine rle: fix an invalid memory access.
There is a mistake that over-access boundary.
This fix it.
@Issues: 178
Change-Id: I0f4d9f763eb75ebb16ccb89dedbb356e9833af97
Hermet Park [Thu, 10 Dec 2020 02:57:38 +0000 (11:57 +0900)]
loaders: fix memory leak.
While looking for image loader, it occured memory leaks.
Fixed it properly.
@Issues: 178
Change-Id: If09be510b28a0c0374254779fe8a2f82c3251d6d
Hermet Park [Thu, 10 Dec 2020 02:48:08 +0000 (11:48 +0900)]
sw_engine stroke: fix memory leak.
Properly free data after use.
@Issues: 178
Change-Id: I085fd936081c82f9ea4d332979a90fe276d0e0cc
Hermet Park [Thu, 10 Dec 2020 01:47:08 +0000 (10:47 +0900)]
tools: remove invalid file link.
Change-Id: If6595d2cec8cadf09b152a367196f99445a8236e
pkosko [Thu, 10 Dec 2020 01:38:22 +0000 (02:38 +0100)]
tools: Automatic code format tool added
Tool allows auto formatting of code according to Google coding standard
for easier control and fixing formatting issues.
Change-Id: I1103cf899ff7ab0673faba02dbf2b588d1853593
Hermet Park [Wed, 9 Dec 2020 10:56:59 +0000 (19:56 +0900)]
common sw_engine: code refactoring & stabilizing.
Apply tvg Array instead of std::vector
Also Fixed to compList in update() to passed by reference, not copying.
Also Fixed Composition Target memory leak
Here is the binary size result:
[libthorvg.so] 1785376 >> 1607416
[text] 121255 >> 118277
[data] 7792 >> 7736
[dec] 129119 >> 126085
Change-Id: I70ac0148ca69b4f38dd93099eab55259f9d5abe7
Hermet Park [Wed, 9 Dec 2020 05:58:37 +0000 (14:58 +0900)]
fix typo
Change-Id: Iaeb329aff16c13ca6c625d83ee57a3970f991f3a
Hermet Park [Wed, 9 Dec 2020 05:48:48 +0000 (14:48 +0900)]
common array: Introduce Array function to common.
This Array is promoted from SvgVector to use it widely in tvg.
It's similar with std::vector, we can use it instead of it.
Also, svg_loader replaced with it subsequently.
Change-Id: I1ddca958508ed7ceae9f173c6f8167b5318e1604
Hermet Park [Wed, 9 Dec 2020 05:07:13 +0000 (14:07 +0900)]
svg_loader: code refactoring
Use custom vector data algorithm for optimizing binary size.
Plus remove tuple usage since it leads unnecessary instance copying.
binary size comparison:
[libthorvg.so] 1811400 >> 1785448
[text] 122914 >> 121255
[data] 7824 >> 7792
[dec] 130810 >> 129119
Change-Id: Ie14679c886b42f7db0b4f612e7c6a62eaec8cb7b
Hermet Park [Tue, 8 Dec 2020 11:26:06 +0000 (20:26 +0900)]
sw_engine renderer: code refactoring.
Unify Shape+Stroke composition with CompositeCtx which is added for Scene Composition
This fixes clipping issue as well.
@Issues: 164
Change-Id: I34aaffcaea59b170c0ef3746af67294b2354e4d9
JunsuChoi [Mon, 7 Dec 2020 08:35:26 +0000 (17:35 +0900)]
svg_loader SceneBuilder: No propagate opacity to child
Scene's opacity() propagates opacity value inside.
Therefore, unnecessary opacity calculation.
Change-Id: Ic7460c21b28aaa8bc1ed81272d63ef2931732b52
Hermet Park [Mon, 7 Dec 2020 07:57:28 +0000 (16:57 +0900)]
wasm: code refactoring.
Use Picture::size() method instead of scale()
Picture newly supports size() method to resize image.
It's more convenient for users in its usage.
Change-Id: I78e7ba4487afc0654c757a6298b705cc3241e76d
Hermet Park [Tue, 8 Dec 2020 03:27:13 +0000 (12:27 +0900)]
picture: replace size parameter to float.
Considering smooth-resizing on sub-pixeling.
Change-Id: I3321e88a92b9af635f6ad3f7eb5bf89f2192f6d6
Hermet Park [Mon, 7 Dec 2020 10:52:56 +0000 (19:52 +0900)]
sw_engine renderer: fix a crash issue.
This stroking composition condition must be initialized
even when exceptional cases. We moved the condition setting to
handle it always.
Change-Id: I532b5819d3d560f51611c3be06101ecc7c9197a0
Hermet Park [Mon, 7 Dec 2020 06:45:44 +0000 (15:45 +0900)]
sw_engine renderer: support scene opacity composition
this is an additional enhancement of
af8c278c5e2a47c21f44440cdb0a7aaf6f6d3baa
Now scene opacity composition is supported.
Also, this implementaion fixes an incorrect scene bounding box computation.
Plus, adding stroking feathering to shape bounding box size.
Change-Id: Ic74f2667ca1858b32b67135b3da0354fd2f6bfc5
Hermet Park [Fri, 4 Dec 2020 09:47:29 +0000 (18:47 +0900)]
common picture: revise resize method.
this implementation handles the center-aligned scale.
Also removed viewbox usage since we have size() method.
Change-Id: I9249c12d6eaf429e62ad8a8f0b776f00b50d779f
JunsuChoi [Fri, 4 Dec 2020 06:03:25 +0000 (15:03 +0900)]
common Picture : Introduce Picture's size setter, getter APIs
* common Picture : Introduce Picture's size setter, getter APIs
If picture or file loaded by picture has an explicit Size(width, height),
it is transformed to fit the size.
Change-Id: Ie0b2530a5113b619f7de9d73197ddedb4ef13f99
Hermet Park [Thu, 3 Dec 2020 06:29:40 +0000 (15:29 +0900)]
sw_engine renderer: refactoring code & optimize composition.
Move the prepare stage of shape & stroking composition stage to a separate function
this returns SwImage to use in composite stage.
Also clear partial region buffer since we know composition area.
Change-Id: I68cf6c8a8e4ca36960c917b88fdd2c74f7a494a3
JunsuChoi [Wed, 2 Dec 2020 08:32:58 +0000 (17:32 +0900)]
svg_loader Loader,XmlParser: String that has not been parsed returns false
Existing parser functions always return true.
Parser function's return value was not being properly used.
So, add a return to check whether it is parsed or not.
Change-Id: I7e8a0b02dd22858d2150ec711abc3ba890d9c884
JunsuChoi [Thu, 3 Dec 2020 05:21:28 +0000 (14:21 +0900)]
svg_loader SceneBuilder: Use opacity() without using alpha color
If opacity value is set in node,
opacity() API is used without composing alpha color.
Change-Id: I949454a346b60eb5e32d828784a56c36c4c45977
Hermet Park [Thu, 3 Dec 2020 09:26:21 +0000 (18:26 +0900)]
sw_engine math: fix regression bug.
There is 1 pixel misaligned issue observed.
Found out transform() increases 0.5 pt always.
This transform() logic was broken by this change -
e00f94870510636789dce3702ab651b82b8047ee
and now recorvered to origin.
Change-Id: I05ca6cf4c20f952d8d4c3695a74abf275c1e1b53
Hermet Park [Wed, 2 Dec 2020 08:16:15 +0000 (17:16 +0900)]
sw_engine raster: support opacity composition.
This implementation supports shape + stroke opacity composition.
Currently, tvg shape provides individual alpha values for filling & stroking
These alpha values are working individually, meaning that if stroking is half translucent,
user can see that translucent stroking is crossed the shape outlines.
Sometimes this result can be expected but user also expects the shape filling is invisible
behind of translucent stroking.
For this reason, Paint provides an additional api opacity()
that applies opacity value to whole paint attributes.
This is a little expensive job, please consider if you can possibly avoid that usage.
See Opacity example.
@Issues: 94
Change-Id: I856a67a986e724cb83b484782ce3499aa95455d2
Hermet Park [Wed, 2 Dec 2020 07:49:53 +0000 (16:49 +0900)]
sw_engine raster: code refactoring & optimize code.
* sw_engine raster: code refactoring & optimize code.
1. move the computation out of rolling if possible.
2. renamed internal variables & function prototypes.
Change-Id: Ibfdf82a5b6a4f004f5a64c42d8cbea01c62943dc
Hermet Park [Tue, 1 Dec 2020 07:13:51 +0000 (16:13 +0900)]
gl_engine renderer: fix build break.
interface has been changed. make it up-to-date
Change-Id: I92a7cb1a3df5e0df701bb30506f646c944a47e22
Michal Szczecinski [Thu, 26 Nov 2020 08:31:32 +0000 (09:31 +0100)]
common capi: Added scene clear API
Scene::clear() API allows users to remove shapes on their own, without
a crash in paint->dispose() or tvg_paint_del() methods. This case is
needed especially when thorvg is used to draw frames, when in one frame
we have scene with shape, and in next frames (future time stamps) user
deletes shapes
@API additions
Result Scene::clear();
Tvg_Result tvg_scene_clear(Tvg_Paint *scene);
Example:
```c
Tvg_Paint *scene = tvg_scene_new();
Tvg_Paint *shape = tvg_shape_new();
tvg_scene_push(scene, shape);
tvg_scene_clear();
//Now we can safelly free resources manually
tvg_paint_del(scene);
//Without tvg_scene_clear() memory allocatad for shape was double released
tvg_paint_del(shape);
```
Change-Id: I1b2a52262c0a5db723eba05ebc9867d901ac2932
JunsuChoi [Mon, 30 Nov 2020 05:51:04 +0000 (14:51 +0900)]
common Scene: Fix validation check for child's bounds
Fix typo. and Change return to continue.
Even if the child's boundary calculation is wrong,
other child's boundary should be calculated.
Change-Id: I7e3a73046bef3eee26592a66e0d46bff2a733c8f
JunsuChoi [Mon, 30 Nov 2020 05:50:05 +0000 (14:50 +0900)]
common Test: Add Paint.bounds unit test
Change-Id: I0d99925afc9a942c65098a6f8c39c6ad9cb4d700
JunsuChoi [Mon, 30 Nov 2020 06:20:49 +0000 (15:20 +0900)]
sw_engine Raster: Add null check for transform
If transform is null, identify matrix is used.
Change-Id: Ia01b687c3894354cafd80fc4fe944c0b4756718d
Michal Maciola [Thu, 26 Nov 2020 10:27:05 +0000 (11:27 +0100)]
Picture capi binding
Change-Id: I83af4cf0ee4452041057e097a1f64a08862607bf
Michal Szczecinski [Mon, 30 Nov 2020 04:08:24 +0000 (05:08 +0100)]
capi: Added fill rule API.
Added capi binding for fill rule setter and getter.
@API changes:
enum Tvg_Fill_Rule {
TVG_FILL_RULE_WINDING = 0,
TVG_FILL_RULE_EVEN_ODD,
}
Tvg_Result tvg_shape_set_fill_rule(Tvg_Paint* paint, Tvg_Fill_Rule rule)
Tvg_Fill_Rule tvg_shape_get_fill_rule(Tvg_Paint* paint, Tvg_Fill_Rule* rule)
Change-Id: If83a08dfaceb4e861085de8a38d86d3e321cc64f
Hermet Park [Mon, 23 Nov 2020 09:33:10 +0000 (18:33 +0900)]
examples: ignore loading raw image file.
in the last commit, it added a raw image file in the images folder.
It breaks Multicanvas, Svg which try to load all kinds of files in it.
We don't need to load all files by figuring out file extension name.
Change-Id: Iecea64379fabd85aa636158740a224a43ebc89c0