Michal Maciola [Tue, 2 Nov 2021 17:11:45 +0000 (18:11 +0100)]
WASM: Use ARGB8888. Convert into ABGR and unmultiply after sync()
Wasm needs ABGR STRAIGHT buffer.
As there is a problem using ABGR for loaders, it is better to use ARGB8888.
This patch makes wasm using ARGB8888 and relocate pixels and unmultiply after sync().
Hermet Park [Wed, 3 Nov 2021 08:07:38 +0000 (17:07 +0900)]
common math: code refactoring
introduce common math functions to improve the reusability.
Hermet Park [Wed, 3 Nov 2021 11:24:36 +0000 (20:24 +0900)]
common shape: ++tiny optimization
reduce the binary size by 80 bytes.
Hermet Park [Wed, 3 Nov 2021 10:47:48 +0000 (19:47 +0900)]
optimize binary size.
apply two more compiler options to reduce binary size.
Saved about 7kb.
Hermet Park [Tue, 2 Nov 2021 12:10:46 +0000 (21:10 +0900)]
doc: added capi documentation.
Hermet Park [Tue, 2 Nov 2021 12:08:36 +0000 (21:08 +0900)]
doc: added c api documentation
Hermet Park [Tue, 2 Nov 2021 11:59:20 +0000 (20:59 +0900)]
doc: up to date v0.6.0
Hermet Park [Tue, 2 Nov 2021 11:06:06 +0000 (20:06 +0900)]
infra: just released v0.6.0
Hermet Park [Tue, 2 Nov 2021 10:53:08 +0000 (19:53 +0900)]
update wasm build script
remove the deprecations and warnings.
Hermet Park [Tue, 2 Nov 2021 10:31:16 +0000 (19:31 +0900)]
jpg_loader: fix compiler warnings.
"warning: shifting a negative signed value is undefined [-Wshift-negative-value"
Hermet Park [Tue, 2 Nov 2021 10:46:00 +0000 (19:46 +0900)]
tvg_loader interpreter: tiny optmization
skip memory copy as possible.
Mira Grudzinska [Tue, 26 Oct 2021 00:07:24 +0000 (02:07 +0200)]
tvg_saver/tvg_loader: gradient fill in the tvg format
Introducing the gradient transform() apis and changing the grad
algorithms made it possible to apply the shape's transformation
before saving the tvg file, in case the shape (or its stroke)
has a fill.
Hermet Park [Tue, 2 Nov 2021 09:42:16 +0000 (18:42 +0900)]
sw_engine image: fix memory leak.
reset rle is supposed to be reused, image should keep its pointer.
@Issue: https://github.com/Samsung/thorvg/issues/982
Mira Grudzinska [Sun, 10 Oct 2021 21:41:52 +0000 (23:41 +0200)]
svg_loader: define the scaling factors for units changing
The values in absolute units are calculated based on the pixel unit.
Till now the default value of 90dpi was used. Since CSS3 (now CSS4 is
the most recent) 1 inch equals to 96 pixels. The necessary constants
are introduces in this commit.
Hermet Park [Tue, 2 Nov 2021 10:02:07 +0000 (19:02 +0900)]
jpg_loader: code refactoring
removed unused variables.
Hermet Park [Tue, 2 Nov 2021 09:57:55 +0000 (18:57 +0900)]
png_loader: code refactoring
removed unused variables.
Hermet Park [Tue, 2 Nov 2021 05:38:09 +0000 (14:38 +0900)]
tools svg2tvg: ++exception handling.
skip to process if the input is invalid.
Hermet Park [Tue, 2 Nov 2021 05:31:27 +0000 (14:31 +0900)]
examples: updated tvgs
re-compiled the tvgs with the latest tvg saver.
Hermet Park [Tue, 2 Nov 2021 05:26:20 +0000 (14:26 +0900)]
infra: add tvg resource pack.
Keep v0.5 version of tvgs for checking compatibility.
Hermet Park [Tue, 2 Nov 2021 04:18:17 +0000 (13:18 +0900)]
infra: update meson option description
JunsuChoi [Tue, 2 Nov 2021 00:50:08 +0000 (09:50 +0900)]
infra meson: Add -Dstatic option
Add an option for use in environments where
the use of static libraries must be enforced.
Mira Grudzinska [Mon, 1 Nov 2021 13:28:06 +0000 (14:28 +0100)]
sw_engine: var/funct renaming
Changed names:
shape->rect -> shape->fastTrack
_factTrack -> _axisAlignedRect
Mira Grudzinska [Mon, 1 Nov 2021 19:28:41 +0000 (20:28 +0100)]
svg_loader: fix bounds for gradient
In the case when bounds should not include a stroke width, width
and height values were reduced by half of a stroke width, instead
of the full width.
Mira Grudzinska [Mon, 1 Nov 2021 13:10:40 +0000 (14:10 +0100)]
sw_engine: fastTrack with clips
After 362d2df the fastTrack cases were applied even for shapes with clips.
These changes fixed this - the check whether a shape is a rect should be done
only if it has no clips.
Hermet Park [Mon, 1 Nov 2021 07:53:25 +0000 (16:53 +0900)]
Revert "loaders: Consider colorspaces (#838)"
This reverts commit
cd5116b05315698ebc5e8592beb4753929dc2eed.
Ah this breaks the Stress example due to Picture::duplicate() is not available...
Need to consider and come back again.
Michal Maciola [Mon, 1 Nov 2021 07:10:22 +0000 (08:10 +0100)]
loaders: Consider colorspaces (#838)
* common: added colorSpace() function
This patch introduces colorSpace() function for SW and GL engine.
* infra: change LoadModule:read() into LoadModule:read(uint32_t colorspace)
This patch changes LoadModule:read() into LoadModule:read(uint32_t colorspace)
* picture: implement passing colorspace into loader
This patch implements passing colorspace into loaders.
Loader->read is now called on the first update.
* external_jpg_loader: support colorspaces
* external_png_loader: support colorspaces
Michal Maciola [Tue, 14 Sep 2021 07:29:14 +0000 (09:29 +0200)]
common: Unmultiplicated colorspace
This patch introduces _STRAIGHT colorspaces (ABGR8888_STRAIGHT and
ARGB8888_STRAIGHT) whose colors are un-alpha-premultiplied. Unmultiplicated
colors are especially needed for wasm thorvg loader and svg2png / tvg2png.
Only C version now.
@issue: #791
Mira Grudzinska [Mon, 1 Nov 2021 00:28:53 +0000 (01:28 +0100)]
tvg_saver: preTransform condition
A stroke is irregularly scaled in case when:
1) m11 != m22
2) m11 == m22 == 0 and m12 != m21
The second case was missing in the code.
JunsuChoi [Mon, 1 Nov 2021 05:06:47 +0000 (14:06 +0900)]
test Picture: Fix array release
fix code
Mira Grudzinska [Fri, 29 Oct 2021 00:09:56 +0000 (02:09 +0200)]
tvg_loader: TVGLOG added in case an unknown fill or stroke tag used
Hermet Park [Fri, 29 Oct 2021 07:53:10 +0000 (16:53 +0900)]
common: code refactoring
removed invalid nullptr checks.
New allocation doesn't gurantee that returns nullptr when it's failed.
It's useless on the modern compliers and our policy respects it.
jykeon [Mon, 1 Nov 2021 03:38:22 +0000 (12:38 +0900)]
bump up version v0.5.2
Change-Id: I5a44c3c30055afd2c4f2fe7b273ce6142a44a74f
Signed-off-by: jykeon <jykeon@samsung.com>
Mira Grudzinska [Fri, 29 Oct 2021 12:58:07 +0000 (14:58 +0200)]
sw_engine: incorrect matrix used
The invTransform should be used instead of transform - missed during
all the gradient changes.
Michal Maciola [Mon, 25 Oct 2021 13:02:28 +0000 (15:02 +0200)]
SVG: Support geometry properties of use tag
This patch adds a support for geometry properties (x, y) of <use> tag
Mira Grudzinska [Sat, 23 Oct 2021 12:27:04 +0000 (14:27 +0200)]
svg_loader: gradient transformation properly applied
The final gradient transformation depends on the coordinate system.
It can not be applied during an svg loading. The transformation matrix
has to be passed via api for further gradient processing.
Mira Grudzinska [Tue, 26 Oct 2021 10:51:05 +0000 (12:51 +0200)]
sw_engine: variables names changed
Rasial gradient variables names changed to be more descriptive.
Mira Grudzinska [Sat, 23 Oct 2021 13:20:43 +0000 (15:20 +0200)]
sw_engine: gradient transformation combined with the shape transformation
The gradient transformation has to be included in the last step
of gradient preparation (and combined with a shape transformation).
Mira Grudzinska [Mon, 20 Sep 2021 00:39:24 +0000 (02:39 +0200)]
sw_engine: proper radial gradient transformation
Mira Grudzinska [Thu, 28 Oct 2021 23:14:12 +0000 (01:14 +0200)]
sw_engine: refactoring
The rasterization region was rearranged in the case of fastTrack,
but its validation and boundaries weren't check, causing segf in some
cases. Fixed.
Mira Grudzinska [Wed, 27 Oct 2021 00:55:22 +0000 (02:55 +0200)]
svg_loader: shape's bounds without a stroke
A shape's bounds used for a gradient transformation shouldn't take
a stroke into account.
JunsuChoi [Thu, 28 Oct 2021 03:50:07 +0000 (12:50 +0900)]
infra action: Enable to run test(window build)
use static png, jpg library
Hermet Park [Fri, 29 Oct 2021 04:17:56 +0000 (04:17 +0000)]
Merge "tizen_only: Leave the redundant capis until efl remove them." into tizen
Hermet Park [Thu, 28 Oct 2021 06:15:16 +0000 (15:15 +0900)]
tizen_only: Leave the redundant capis until efl remove them.
Change-Id: Ib0f76263cc233408022495056a6e9bd9e3df412b
JunsuChoi [Wed, 27 Oct 2021 08:03:28 +0000 (17:03 +0900)]
test Scene/Canvas: Fix maximum size for big size test
In some development environments, -1 of uint32_t may become 0.
Hermet Park [Wed, 27 Oct 2021 11:53:01 +0000 (20:53 +0900)]
tools svg2tvg: support converting multiple files.
Usage:
svg2tvg [SVG file] or [SVG folder]
Examples:
$ svg2tvg input.svg
$ svg2tvg svgfolder
JunsuChoi [Thu, 28 Oct 2021 04:45:58 +0000 (13:45 +0900)]
test Picture : Remove unnecessary namespace
Remove `std::`
JunsuChoi [Thu, 28 Oct 2021 03:07:49 +0000 (12:07 +0900)]
test Picture: Change file open of ifstream to binary(and readonly) type
When opening a file using ifstream, a different problem occurs for each platform.
To fix this, change to binary, readonly type.
refer to:
https://stackoverflow.com/questions/9817806/why-does-my-program-produce-different-results-on-windows-and-linux-about-file-r
Hermet Park [Wed, 27 Oct 2021 07:34:03 +0000 (16:34 +0900)]
sw_engine shape: code refactoring.
move the exceptional code for the coherency,
and ++ more history of the description.
Hermet Park [Wed, 27 Oct 2021 11:58:45 +0000 (20:58 +0900)]
Update README.md
Hermet Park [Wed, 27 Oct 2021 10:25:43 +0000 (19:25 +0900)]
tools svg2tvg: improve the usability.
Removed the .svg in the output name.
Before: tiger.svg -> tiger.svg.tvg
After: tiger.svg -> tiger.tvg
Hermet Park [Wed, 27 Oct 2021 04:47:52 +0000 (13:47 +0900)]
jpg_loader: support multi-thread and header reading in prior to decoding.
revise the code to support async loading of the static jpeg_loader,
also support header reading in prior to decoding.
Mira Grudzinska [Sat, 23 Oct 2021 19:31:02 +0000 (21:31 +0200)]
sw_engine: rasterization region edited in the case of fast tracking
Since no antialiasing is applied for the fastTracking cases,
the shape's rasterization region needs to be edited. To establish
the rastered bbox, the rounding is performed before the bbox corners
are casted to the SwCoords.
Hermet Park [Tue, 26 Oct 2021 10:37:06 +0000 (19:37 +0900)]
jpg_loader: code refactoring
revise code to satisfy with the tvg world.
no logical changes.
- modified file names
- added the samsung copyright
- removed unnecessary typedefs
- ++indentation
- --LOC
Mira Grudzinska [Tue, 26 Oct 2021 09:11:56 +0000 (11:11 +0200)]
capi: tvg_paint_transform -> tvg_paint_set_transform
Mira Grudzinska [Tue, 26 Oct 2021 00:13:57 +0000 (02:13 +0200)]
example: gradtransf.svg
The file enables to check the correctness of the gradient transformations
and units.
Removed duplicate file.
Hermet Park [Tue, 26 Oct 2021 06:52:24 +0000 (15:52 +0900)]
Update CONTRIBUTING.md
Michal Maciola [Fri, 22 Oct 2021 15:01:14 +0000 (17:01 +0200)]
jpg loader: support static jpeg loader using richgel999
Adds an alternative static jpg loader.
The jpg loader copied the jpeg decoding implementation from this open-source
repo: https://github.com/richgel999/jpeg-compressor
That opensource has the public-domain license, it doesn't have any restriction
of the copy.
note: jpgd.cpp is modified version (changed decompress_jpeg_image_from_stream)
for returning BGRA
Mira Grudzinska [Tue, 26 Oct 2021 00:02:46 +0000 (02:02 +0200)]
capi: casting on 'const Paint*' instead of constness removing
Mira Grudzinska [Tue, 26 Oct 2021 00:21:07 +0000 (02:21 +0200)]
example: modify the tvg example to plot all of the files
Change-Id: I63908b03d0276aa78bc8a266c62a89c98f9634c1
Hermet Park [Mon, 25 Oct 2021 10:24:45 +0000 (19:24 +0900)]
capi: ++missing const in capis.
Non-changeable apis should keep the const parameter so that
user knows the api won't change the internal data.
Thanksfully, we didn't release the capis, we can change it.
Mira Grudzinska [Fri, 22 Oct 2021 18:28:28 +0000 (20:28 +0200)]
tests: added Capis gradient transformation tests
Mira Grudzinska [Fri, 22 Oct 2021 11:46:06 +0000 (13:46 +0200)]
capi: gradient transformation apis added
Mira Grudzinska [Fri, 22 Oct 2021 23:50:18 +0000 (01:50 +0200)]
sw_engine: including gradient transformation into gradient preparation
The gradient transformation has to be taken into account as the last
step of the gradient preparation.
Mira Grudzinska [Fri, 17 Sep 2021 22:33:32 +0000 (00:33 +0200)]
sw_engine: proper linear gradient transformation
In the case of any shape transformation, the gradient fill
was not correct.
JunsuChoi [Mon, 25 Oct 2021 04:43:20 +0000 (13:43 +0900)]
svg_loader SvgLoader: Fix gradient default value
If isXXPercentage is true, then it is calculated accordingly.
JunsuChoi [Mon, 25 Oct 2021 05:33:20 +0000 (14:33 +0900)]
example: Modify the number of svg image examples
Find the hidden example...
Mira Grudzinska [Sat, 23 Oct 2021 00:16:40 +0000 (02:16 +0200)]
svg_loader: requested changes applied
Mira Grudzinska [Sun, 10 Oct 2021 15:14:42 +0000 (17:14 +0200)]
svg_loader: gradient handling and recalculation changed
The need to convert the gradient values occurs only when they are given
as nominal values in the current user coordinate system (userSpaceOnUse).
Mira Grudzinska [Fri, 22 Oct 2021 11:49:44 +0000 (13:49 +0200)]
capi: added pointer validation
Hermet Park [Sat, 23 Oct 2021 02:52:10 +0000 (11:52 +0900)]
doc: updated api doc.
use @retval for the multiple return values.
Mira Grudzinska [Tue, 21 Sep 2021 01:11:47 +0000 (03:11 +0200)]
svg loader: converting the image path to the absolute one
The href image tag should point to an absolute image path.
Hermet Park [Fri, 22 Oct 2021 14:21:26 +0000 (23:21 +0900)]
wasm: update the code.
Yes, now we have standard apis for getting class types,
don't need to hack it anymore.
Now, replaced the redundant id() calls with identifier()
Hermet Park [Fri, 22 Oct 2021 14:14:23 +0000 (23:14 +0900)]
common: code refactoring
renamed internal module name IteratorModule -> IteratorAccessor
Change-Id: Ic317e5738161e697f3dbfe1bc7b9f1fd653f03cd
Mira Grudzinska [Fri, 22 Oct 2021 10:33:50 +0000 (12:33 +0200)]
tests: fill transformation tests added
Hermet Park [Fri, 22 Oct 2021 10:09:25 +0000 (19:09 +0900)]
api: not allow the inheritance of the Saver.
We missed the final keyword for the Saver,
This inheritance is out of our policy.
It might be break apis but Saver class is just opened,
and we're pretty sure that there is no any extension of this.
I know this is the bad decision, but we have a chance yet,
so we must correct it before further late.
Hermet Park [Fri, 22 Oct 2021 07:18:35 +0000 (16:18 +0900)]
common: replace the id() -> identifier()
Hermet Park [Fri, 22 Oct 2021 06:15:33 +0000 (15:15 +0900)]
test: API coverage up
Added identifier() test cases.
Hermet Park [Fri, 22 Oct 2021 05:39:38 +0000 (14:39 +0900)]
common: Introduce class type identifier apis.
This identifier is useful when user identify the instance type in runtime.
ThorVG basically don't prefer to dynamic_cast() nor typeid(),
it compiles with -fno-rtti option for the optimial size.
Here is an example for the simple usage.
if (paint->identifier() == Shape::identifier())
auto shape = static_cast<Shape*>(paint);
@Issue: https://github.com/Samsung/thorvg/issues/693
신지예 [Fri, 22 Oct 2021 09:11:11 +0000 (18:11 +0900)]
common: Fix typo
Change-Id: Idfd45fc9eb3beb1ad720492e55888db57745aaca
JunsuChoi [Fri, 22 Oct 2021 05:42:33 +0000 (14:42 +0900)]
png_loader meson: Remove dependency check using find_library()
meson's find_library() throws an error when the package cannot be found.
png static library is added, so it should be passed when package is not found.
Therefore, delete unnecessary find_library.
Ji2z [Fri, 22 Oct 2021 03:27:31 +0000 (12:27 +0900)]
common: Fix typo
Fix typo backeneds to backends
Change-Id: Idd13c3972ba2fa0fddc2a1eb706c55a9ea46674f
Hermet Park [Fri, 22 Oct 2021 03:33:07 +0000 (12:33 +0900)]
updated README.md
Hermet Park [Fri, 22 Oct 2021 03:15:42 +0000 (12:15 +0900)]
Update README.md
Hermet Park [Fri, 22 Oct 2021 03:09:32 +0000 (12:09 +0900)]
docs: updated example resource.
Hermet Park [Fri, 15 Oct 2021 10:55:34 +0000 (19:55 +0900)]
loader png: support static png loader
Copied only necessary decoding functions from the lodepng opensource.
See: https://lodev.org/lodepng/
additional changes:
- disabled crc for the optimal size.
- converted the format bgr -> rgb for our png example.
Still we don't have a concrete idea for the image formats,
We should fix the converting methods between bgra <-> rgba.
@Issue: https://github.com/Samsung/thorvg/issues/594
Hermet Park [Thu, 21 Oct 2021 06:15:07 +0000 (15:15 +0900)]
svg_loader: code refactoring.
cast to proper value type.
JunsuChoi [Thu, 21 Oct 2021 04:13:23 +0000 (13:13 +0900)]
svg_loader XMLParser: Clean up parameter type
size_t to unsigned int
JunsuChoi [Wed, 20 Oct 2021 06:40:12 +0000 (15:40 +0900)]
svg_loader XMLParser: Refacotring simpleXmlParse method
1.
Remove macro function. The existing macro function
was doing meaningless nested `return false`.
2.
Extract the logic to find the type as a function.
3.
The SimpleXMLType::Error case is not actually used,
and in case of invalid XML, Do 'return false' immediately.
Hermet Park [Wed, 20 Oct 2021 13:50:07 +0000 (22:50 +0900)]
updated license
Add missing original copyright texts in the source code.
Hermet Park [Wed, 20 Oct 2021 13:18:19 +0000 (22:18 +0900)]
Revert "common: Update license infomation"
This reverts commit
4c87f18345d65617a89b04347fffd1df810681fc.
Come to think of it, this is not correct.
Apply the copyright to only files from the original source code.
JunsuChoi [Wed, 20 Oct 2021 07:01:43 +0000 (16:01 +0900)]
common: Update license infomation
Update LICENSE by adding BSD license.
Michal Maciola [Wed, 22 Sep 2021 07:48:54 +0000 (09:48 +0200)]
svg_loader: fix potential mem corruption in _idFromUrl function
This patch fixes some potential memory corruptions in _idFromUrl function
when name (url) is longer than 50 chars or is incorrectly terminated.
Mira Grudzinska [Mon, 11 Oct 2021 13:20:03 +0000 (15:20 +0200)]
common: new api for a grad transformation
The new apii allows to transform the gradient fill.
JunsuChoi [Tue, 19 Oct 2021 06:49:50 +0000 (15:49 +0900)]
common: Fix typo
Mira Grudzinska [Sun, 17 Oct 2021 23:39:54 +0000 (01:39 +0200)]
capi: example modified
Hermet Park [Wed, 13 Oct 2021 11:15:44 +0000 (20:15 +0900)]
svg_loader util: fix the floating constant truncated to zero issue.
fyi, the minimum value of the float is 1.
175494351 E-38
@Issue: https://github.com/Samsung/thorvg/issues/899
Mira Grudzinska [Thu, 14 Oct 2021 00:12:49 +0000 (02:12 +0200)]
svg_loader: fixing viewBox clipping
For vw=width and vh=height, vx or vy > 0 had no effect. Fixed
JunsuChoi [Fri, 15 Oct 2021 04:19:03 +0000 (13:19 +0900)]
[Tizen] common: Change dlog tag name for VD profile
Change-Id: Id9c8e235fe86f690b3a9dee2ea0caae954aae0bd
Michal Maciola [Thu, 14 Oct 2021 15:40:31 +0000 (17:40 +0200)]
svg_loader util: fix missing quot
There was checking for 0 ('\0') that should be checking for '0'
Hermet Park [Thu, 14 Oct 2021 07:18:46 +0000 (16:18 +0900)]
Update README.md