Commit graph

403 commits

Author SHA1 Message Date
Hermet Park
b3559ecf56 loaders svg: code refactoring.
keep it clean & neat within tvg coding convention.
2021-04-13 17:16:38 +09:00
Hermet Park
d2c04f6037 wasm: fix compile errors. 2021-04-09 22:18:57 +09:00
Hermet Park
5c9016158e loader svg: fix composition(mask/clip) issue.
composition target missed transform of its source.

That brings incorrect composition area.

This fixes it.
2021-04-09 21:02:55 +09:00
Hermet Park
35fdc9a278 loaders svg: set default color for composition paint.
not only clippath but alpha compositions might also have any valid color.
Set it default and let it override values while appending shapes if it's necessary.
2021-04-09 17:10:20 +09:00
Hermet Park
903df3da6a loaders svg: prevent composition setting if the result shape is invalid.
Current loader could return invalid shapes -default, from _appendShape()-
by a certain interpretation result,

Though it's a wrong or exception case, we can prevent worse case by avoiding it.
2021-04-09 16:51:05 +09:00
Hermet Park
e1eb98af79 loaders svg: code refactoring
clean up code and remove unnecessary internal class.

this also helps to reduce binary size by 5.5kb

no logical changes.
2021-04-09 15:57:23 +09:00
Hermet Park
adf1312a5e loaders svg: ++ log info for wrong situation.
if either log is printed, we need to improve the composition method.
2021-04-09 11:02:35 +09:00
Hermet Park
605a3bf175 loaders svg: code refactoring
++ clean code.
2021-04-09 10:55:09 +09:00
Hermet Park
6239eca92f loaders svg: fix invalid clip path result.
tvg engine expects the valid clippath with valid colors,
loaders set any colors values to enable it.

this fixes invalid clippath behavior.
2021-04-08 17:54:25 +09:00
Hermet Park
cd0c7486f3 loader png: code refactoring
Seperate behaviors open/read/close,
free/close pngimage properly,
add copyright for files.

There still left one optimization point by applying Task.
2021-04-02 12:50:38 +09:00
Hermet Park
9e725226da
meson: revise png loader meson script.
We hate spagettie code, not even build script.
this revise it to keep the build script consistency.
2021-04-02 12:49:18 +09:00
Mateusz Palkowski
832568e07a Added libpng based png loading 2021-04-01 19:38:00 +09:00
Hermet Park
1a7d41ce71 updated copyright 2021-03-23 14:31:58 +09:00
Mira Grudzinska
234a9b2f93
svg_loader: ommiting xml entities in the svg file (#278)
SVG files created using 'sketch' may contain xml entities,
which are not understandable by the svg loader.
For now only '"' is ommited.
2021-03-23 09:22:46 +09:00
Hermet Park
79f1ba8516 loader svg: fix coding convention 2021-03-22 16:28:08 +09:00
Mira Grudzinska
f0540d753a svg_loader: applying AlphaMask during scene building
The AlphaMask composition case was omitted in the _sceneBuilderHelper().
2021-03-22 10:45:14 +09:00
Hermet Park
c40823d70e loaders svg: remove unnecessary move call, move is guaranteed at the return value.
warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
2021-03-16 13:29:16 +09:00
JunsuChoi
631c1e5651 loader SvgSceneBuilder: Add root node to clipping viewBox.
If the boundary of scene created through the scenebuilder is larger than the viewbox,
scene(SVG's root) should be clipped to the size of the viewbox.
So, if scene need a clip, add a parent root and add clippath composition to that root.
2021-03-15 15:24:10 +09:00
Hermet Park
9f0fafa5df This is too untable.... Stress in example is crashed by this.
Revert "svg_loader: limiting the ploted area of svg to viewBox"

This reverts commit 2bb108b2f1.
2021-03-12 18:10:26 +09:00
Mira Grudzinska
2bb108b2f1 svg_loader: limiting the ploted area of svg to viewBox
The 'viewBox' element given in the svg file determines
the coordinates of the plotted area. ClipPath used in Svg loader.
2021-03-12 10:54:38 +09:00
JunsuChoi
355cc8c253 svg_loader SvgPath: Remove unnecessary optimization code
This condition(optimization) is not a step suggested by arc implementation.
https://www.w3.org/TR/SVG11/implnote.html#ArcCorrectionOutOfRangeRadii (Step2)
This code is useful if the arc is too small to represent.
However, scaling often occurs in vectors, which can create unnecessary problems.

example path
<path d="M32.41,20.49a.41.41,0,1,1-.41-.42A.41.41,0,0,1,32.41,20.49Z" transform="translate(0)" fill="#020202"/>
2021-03-05 16:39:16 +09:00
JunsuChoi
f590571e3a svg_loader SvgLoader: Fix copy conditions for stop of gradient
When getting a linked stop list, if there is no existing stop list
in current gradient, it is copied.
2021-03-04 18:43:58 +09:00
Mira Grudzinska
a173b16ed5 svgloader: fixing linear gradient transformation
Gradient stop points were incorrectly transformed when building
the scene in the SVG loader.
2021-03-03 19:48:26 -08:00
Mira Grudzinska
a72be6159d svgloader: fixing SVG image display when viewBox size is not given
When viewBox is not given its dimensions should be determined
by the height and width parameters
2021-03-03 18:02:36 -08:00
Mira Grudzinska
d03db583e5 svgloader: fillRule value passed to the shape
The value was loadeed but not set to the shape.
2021-03-02 18:05:54 -08:00
Hermet Park
197879f2ef fixed all wasm build breaks. 2021-02-23 10:47:46 +09:00
Patryk Kaczmarek
795121fa67 SvgLoader: Mask style implementation
Supprot case when style is defined as <mask> attribute.

[Example SVG file]
```html
<svg version="1.1" id="Layer_1" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve"
  xmlns="http://www.w3.org/2000/svg">
  <defs>
    <mask id="myMask">
      <circle id="maskID" cx="40" cy="40" r="10" fill="white" fill-opacity="1" />
    </mask>
  </defs>
  <rect x="0" y="0" width="64" height="64" style="fill: skyblue; mask=url(#myMask);"/>
</svg>
```

Change-Id: I3b856db85204bf7c503a20e4023417ca79aa930c
2021-02-19 18:23:47 +09:00
JunsuChoi
415fca577e common: TVG_UNUSED marking on unused parameter 2021-02-19 16:51:50 +09:00
JunsuChoi
c819754056 common: Refactoring incorrectly declared loop variable
Loop variables should be declared in the minimal possible scope
thorvg prefers to declare when using local variables.
2021-02-19 16:51:50 +09:00
JunsuChoi
08c37978a9 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
2021-02-19 16:51:50 +09:00
JunsuChoi
c63f961b9c common: Clean up code
- Combine if condition with the same return value.
- Remove empty space
- Remove tab
2021-02-18 14:03:47 +09:00
JunsuChoi
5c914f4ad2 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.
2021-02-02 10:51:50 +09:00
Hermet Park
e737ee4a4f svg_loader: fixed wrong boundary check
sz must be less than 20 to append 'carriage return'
2020-12-22 11:04:39 +09:00
Hermet Park
59ffa16b32 raw_loader: remove unnecessary declaration. 2020-12-22 10:55:23 +09:00
JunsuChoi
438b7d6b02 svg_loader SvgLoader: Add memory allocation failed check
Prevent to null access when out of memory.
2020-12-18 19:51:06 +09:00
JunsuChoi
21b751291a raw_loader RawLoader: Add initialize
Add initialization to 'copy' member
2020-12-18 19:51:06 +09:00
JunsuChoi
f13e1947ff 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.
2020-12-18 19:51:06 +09:00
Hermet Park
cee1348a44 svg_loader XmlParser: code refactoring.
just renamed _nodeTypeToString() -> xmlParserNodeTypeToString()

+ print meson message if log is enabled.
2020-12-17 16:11:09 +09:00
JunsuChoi
23331cf8d4 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
2020-12-17 13:56:09 +09:00
Shinwoo Kim
135e6c872b fix typo 2020-12-16 09:58:40 +09:00
Shinwoo Kim
aedd3afd00 fix mistake 2020-12-16 09:57:57 +09:00
Shinwoo Kim
e9772efbd1 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, ...
2020-12-15 17:38:22 +09:00
Hermet Park
abc9e89517 common log: notify opacity composition usage log.
replaced [XXX] log prefix with XXX:
2020-12-15 14:29:52 +09:00
JunsuChoi
54816339ed 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.
2020-12-15 14:07:38 +09:00
Hermet Park
932cc65543 loaders: fix memory leak.
While looking for image loader, it occured memory leaks.
Fixed it properly.

@Issues: 178
2020-12-10 11:57:38 +09:00
Hermet Park
1ed611386d
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
2020-12-09 19:56:59 +09:00
Hermet Park
d13cd37094 fix typo 2020-12-09 15:29:22 +09:00
Hermet Park
d4515d2732 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.
2020-12-09 15:29:22 +09:00
Hermet Park
ca6639bb2c 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
2020-12-09 14:52:47 +09:00
JunsuChoi
e794c678ec svg_loader SceneBuilder: No propagate opacity to child
Scene's opacity() propagates opacity value inside.
Therefore, unnecessary opacity calculation.
2020-12-08 12:32:05 +09:00