Hermet Park
3e7888b538
svg_loader: code refactoring
...
use color structure to keep neat & compact code.
2021-06-30 14:54:12 +09:00
Mira Grudzinska
feb71ff36c
svg_loader: currentColor - inheritance from a parent
...
The 'currentColor' attribute value was not inherited. Fixed.
2021-06-29 09:27:52 +09:00
Michal Maciola
520d6e7bbd
svg_loader: negative attrs length fix
...
After finding no attributes but white spaces, attrs length could be negative
that resulted in segmentation fault in simpleXmlParseAttributes function.
@Issue: #487
2021-06-28 16:46:26 +09:00
Hermet Park
78bb8d1f2e
svg_loader: fix trivial build warnings.
...
../src/loaders/svg/tvgSvgLoader.cpp: In function ‘void _copyAttr(SvgNode*, const SvgNode*)’:
../src/loaders/svg/tvgSvgLoader.cpp:1598:60: warning: ‘void* memcpy(void*, const void*, size_t)’ writing to an object of type ‘struct SvgStyleProperty’ with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
memcpy(to->style, from->style, sizeof(SvgStyleProperty));
@Issue: 498
2021-06-28 13:47:15 +09:00
Mira Grudzinska
57a22b8462
svg_loader: finish the search after founding the proper color
...
In the _toColor func, after founding the proper color, the search
should be finiched.
2021-06-28 11:32:44 +09:00
Hermet Park
a6f9ec3080
svg_loader: fix memory violation issues.
...
copy attribute must copy the url data,
otherwise, url memory can be atempted freeing twice.
also, fix the memory leak in multiple composition case.
2021-06-25 10:28:27 +09:00
Hermet Park
87b94b7a7f
common: fix compatibility issue for MSVC
...
Math Constants are not defined in Standard C/C++
for this, we can use _USE_MATH_DEFINES before math headers.
2021-06-23 13:38:46 +09:00
Mira Grudzinska
5679d666a6
svg_loader: correct parsing ColorStop offset values
...
Values different from numbers and percentages should be ignored
and the default values should be applied (zeros).
2021-06-23 10:35:58 +09:00
JunsuChoi
f20ef0dc15
svg_loader SvgLoader: Copy the missing composite url
...
When copying an attribute, url information of stype's composite is overwritten with memcpy.
This causes double free by deleting the wrong string in freeNodeStyle.
2021-06-22 10:26:05 +02:00
JunsuChoi
a2d348242b
svg_loader SvgLoader: Prevent invalid access
...
If there is no path information, it is not copied.
2021-06-22 09:55:13 +02:00
Hermet Park
0df8c00519
loaders: revise code from cce4b443b3
...
use copy variable instead of additional buffer pointer.
2021-06-22 10:42:34 +09:00
Michal Maciola
cce4b443b3
loaders: added copy param for Picture::load
...
@API Changed:
Result Picture::load(const char* data, uint32_t size, bool copy /*=false*/) noexcept
TVG_EXPORT Tvg_Result tvg_picture_load_data(Tvg_Paint* paint, const char *data, uint32_t size, bool copy);
2021-06-21 19:52:38 +09:00
Mira Grudzinska
8bb10fb261
svg_loader: radial gradient transformation support
...
For now the gradient radius is scales like x-axis - it has to be changed
after issue #37 will be resolved.
2021-06-21 10:23:42 +09:00
Mira Grudzinska
7ffeb2e606
svg_loader: fixing color parsing
...
For colors given in a style attribute in the format "rgb(rrr, ggg, bbb)"
a parsing was incorect. Now fixed.
2021-06-17 11:12:33 +09:00
Mira Grudzinska
e0a1aa9355
svg_loader: adding check if stroke-dasharray attribute != none
...
The stroke-dasharray value equal to "none" was causing a segfault
during a conversion to float. Fixed now.
2021-06-17 10:16:05 +09:00
Mira Grudzinska
a3e784b6b5
svg_loader: gradient update takes into account a stroke and a fill
...
For shapes with a grad fill and a grad stroke only the fill was drawn.
After this fix both can have a valid gradient.
2021-06-15 14:25:17 +09:00
Hermet Park
15b56a66de
tvg_loader: code refactoring.
...
revise it under the tvg coding convention.
2021-06-11 20:51:50 +09:00
Mira Grudzinska
9b1356e7cb
svg_loader: support stroke gradient
...
The loader was ready to handle the gradient stroke, but there was no API to support
it when the loader was introduced. We've had this API for a while already, so
its call has been added.
2021-06-10 11:36:20 +09:00
Mira Grudzinska
ae5673658e
svg_loader: initializing uninitialized variables
...
The 'loader->svgParse->global' variable was uninitialized when no viewBox attribute
was set. If gradient was applied, the division by zero occured and no gradient was drawn.
2021-06-07 12:30:56 +09:00
JunsuChoi
f8f90f3f34
log SvgLoader: Enhance log message
...
- Change tag name "Doc" to "Svg"
- Fix "Mask" tag name.
- Add element to skip output
- title
- Add attribute to skip output
- id, data-name, version, overflow=visible, xmlns*, xml:space
2021-05-13 23:46:17 +09:00
JunsuChoi
475fc22f6d
loader SvgLoader: Fix memory leak
...
Add memory release for style->comp.url, which is the leaking memory.
[Valgrind Test Result]
==21595== 32 bytes in 1 blocks are definitely lost in loss record 29 of 152
==21595== at 0x4C3217F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==21595== by 0x5C248C6: _idFromUrl(char const*) (tvgSvgLoader.cpp:272)
==21595== by 0x5C24DE1: _handleClipPathAttr(SvgLoaderData*, SvgNode*, char const*) (tvgSvgLoader.cpp:860)
==21595== by 0x5C260CC: _attrParseGNode(void*, char const*, char const*) (tvgSvgLoader.cpp:953)
==21595== by 0x5C2ABA9: simpleXmlParseAttributes(char const*, unsigned int, bool (*)(void*, char const*, char const*), void const*) (tvgXmlParser.cpp:272)
==21595== by 0x5C26F6E: _createGNode(SvgLoaderData*, SvgNode*, char const*, unsigned int) (tvgSvgLoader.cpp:1063)
==21595== by 0x5C27A04: _svgLoaderParserXmlOpen(SvgLoaderData*, char const*, unsigned int, bool) (tvgSvgLoader.cpp:2168)
==21595== by 0x5C27CE9: _svgLoaderParser(void*, SimpleXMLType, char const*, unsigned int) (tvgSvgLoader.cpp:2226)
==21595== by 0x5C2AC8C: simpleXmlParse(char const*, unsigned int, bool, bool (*)(void*, SimpleXMLType, char const*, unsigned int), void const*) (tvgXmlParser.cpp:378)
==21595== by 0x5C27E09: SvgLoader::run(unsigned int) (tvgSvgLoader.cpp:2571)
==21595== by 0x5C1A7C1: operator() (tvgTaskScheduler.h:68)
==21595== by 0x5C1A7C1: tvg::TaskSchedulerImpl::run(unsigned int) (tvgTaskScheduler.cpp:138)
==21595== by 0x5EED6DE: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25)
2021-05-03 16:29:30 +09:00
Hermet Park
1d923a8632
loader svg: fix build break due to typo
2021-05-01 12:37:45 +09:00
Hermet Park
e1ebcf6153
loaders svg: code refactoring
...
split functions as its purpose.
2021-04-21 11:12:22 +09:00
JunsuChoi
51e4757a3b
loader SvgLoader: Fix wrong debug log
...
1.
Modify that attribute information used for use type
looks like it was used for g type.
2.
Fix clippath node looking like setting "none"
(clippath's display = false is intentional)
2021-04-21 11:11:37 +09:00
JunsuChoi
8b54b6768a
loader SvgLoader: add locale-independent strtof function
...
strtof's behavior is changed by system locale.
https://linux.die.net/man/3/strtof
Because of this, strtof(10.0000) returns 0.0 in some locales.
When a given value string is locale-independent, strtof has to be
replaced to custom function.
2021-04-20 19:44:04 +09:00
Hermet Park
b541a0654c
loaders svg: ++safety
...
prevent buffer overflow just in case.
2021-04-20 17:49:48 +09:00
Mira Grudzinska
332012dd6b
loader svg: displaying SVG images without the specified viewBox attribute
...
If no viewBox attribute is given, the height and width attributes are used
to establish the viewBox size. However, this information was not available
inside the scene builder, even though it was needed.
2021-04-15 04:34:44 -07:00
JunsuChoi
5d81fe2446
loader SvgLoader: Fix for coding convention
2021-04-13 19:01:19 +09:00
JunsuChoi
b75e7ea91a
loader SvgLoader: return null if transform attribute invalid
...
In transform matrix parsing, null is returned if any of the matrices are invalid.
2021-04-13 19:01:19 +09:00
Hermet Park
d3a73f7ee9
loaders svg: fix a wrongly handles the corner case.
...
Stop the internel loop quick as possible, and state must be reset.
2021-04-13 17:49:29 +09:00
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
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
1a7d41ce71
updated copyright
2021-03-23 14:31:58 +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
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
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
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
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
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