Commit graph

631 commits

Author SHA1 Message Date
Hermet Park
92f57a149f sw_engine raster: code refactoring
changed internal function names, keep the neat & clean thorvg style code.
2021-11-17 19:40:38 +09:00
Hermet Park
f9bc684699 sw_engine raster: code refactoring
clarfy & regroup the internal functions which have been messed up by rendering options.

no logical changes
2021-11-16 20:27:11 +09:00
Hermet Park
e581ae4353 sw_engine neon: code refactoring.
keep the internal function name consistency.
2021-11-16 20:14:45 +09:00
Mira Grudzinska
3f82522f60 sw_engine: ialpha function pointer used instead of 255 - alpha 2021-11-16 20:14:31 +09:00
Hermet Park
c9377708a9 sw_engine image: ++optimization
apply fast track to fast up the image rasterization.

only shifted image doesn't need to have the matrix-transform computation,
we can avoid it by just shifting offset xy by simple caculating.

@Issue: https://github.com/Samsung/thorvg/issues/206
2021-11-15 17:38:57 +09:00
Hermet Park
0fcdba8a4b common math: code refactoring
introduced mathZero(), mathEqual() for floating variables.
2021-11-15 17:10:54 +09:00
Hermet Park
ee60a04f20 sw_engine image: code refactoring
revert d520da2db8

After considered the scneario seriously,
this doesn't helpful for the performance at all...
just increased code complexity. earlier bad decision... revert it.
2021-11-15 11:27:29 +09:00
Mira Grudzinska
8362ddda74 sw_engine: avxRasterTranslucentRle implemented 2021-11-15 11:16:17 +09:00
Hermet Park
1592443c3e common paint: improve rotation condition precision
cover the four cases: 0, 90, 180, 270 degrees...
2021-11-12 19:45:01 +09:00
Hermet Park
cfe5d80099 common paint: improve rotation condition precision 2021-11-12 17:24:02 +09:00
Hermet Park
b1604e2ec7 common paint: fix invalid memory access in unit test
casting the paint to shape is not allowed if the compositor target
is not shape, here it concretely checking the the type before casting....
2021-11-12 16:42:30 +09:00
Hermet Park
d520da2db8 sw_engine image: optimized image rendering.
Applied the fast-track routine for axis-aligned images.
This helps to remove outline generation if no clips.
2021-11-12 16:28:15 +09:00
Hermet Park
ae3dae8c55 sw_engine image: introduce the stride property for the image.
we are considering the larger space of the image buffer,
in this case stride info is necessary.
2021-11-12 10:49:36 +09:00
Hermet Park
44ccfc46d8 common paint: alpha masking optimization
applying fast track approach to the alpha mask when its condition is matched.
(simple rectangle alpha masking which isn't half-translucent)

From time to time, designers brutally use the alpha masking to clip simple region,
thorvg can help the situation by avoiding masking usage internally.

This can reduce the 1-step render pass composition.

@Issue: https://github.com/Samsung/thorvg/issues/344
2021-11-12 10:49:24 +09:00
Hermet Park
91668143e1 sw_engine raster: code refactoring
remove duplicated logic.
2021-11-12 10:49:15 +09:00
Hermet Park
1527f70221 sw_engine raster: allow image interpolation by increasing tolerance.
current image interpolation method is a bit awkward,
because xy scale different scale factor is not allowed.

we must improve the algorithm,

but now considering floating point precision,
we allow the interpolation by less ratio floating fraction.
2021-11-12 10:47:30 +09:00
Hermet Park
6c4896b911 sw_engine raster: code refactoring.
keep the code clean & neat.
2021-11-11 14:39:02 +09:00
Hermet Park
98e542e2f6 common render: code refactoring.
correct wrong coding convention.
2021-11-11 14:13:00 +09:00
Hermet Park
2f334f3300 common paint: code refactoring
renamed internal variable. no logical changes.
2021-11-11 13:07:13 +09:00
Mira Grudzinska
10e0d18d6e sw_engine: missing implementations added
Rastering functions for masked images that are not rectangular
(clipped) were implemented.
2021-11-11 12:25:13 +09:00
Hermet Park
d8262dd1f8 sw_engine raster: code refactoring
--remove parameter
2021-11-10 19:39:21 +09:00
Hermet Park
f9a7df7a10 sw_engine raster: code refactoring
unify several function paramters with one structure.
2021-11-10 19:29:09 +09:00
Hermet Park
205e463160 sw_engine raster: code refactoring
keep it neat & clean code with descriptions.
2021-11-10 18:26:31 +09:00
Hermet Park
d73ecc5524 sw_engine raster: code refactoring
renamed internal variables, no logical changes.
2021-11-10 17:34:27 +09:00
Hermet Park
cffc87e7b1 sw_engine raster: code refactoring.
keep the code thorvg convention.
2021-11-10 17:03:07 +09:00
Mira Grudzinska
8c4b679fb7 sw_engine: unification of mask and inv mask functions
The function pointers used to pass the proper blending method - mask
or inverse mask.
2021-11-10 13:07:57 +09:00
Hermet Park
097e10fea4 sw_engine renderer: fix the invalid memory access in the corner case.
Tasks can be disposed while the renderer referencing it.
Now, we can delete the tasks with lazy approach by introducing some tags.

@Issue: https://github.com/Samsung/thorvg/issues/995
2021-11-09 20:38:12 +09:00
Mira Grudzinska
14c1562b36 tvg_saver: fix memory leaks
In the cae when Result::InsufficientCondition was retured by the save()
api, the user had to remember to delete the passed paint - fixed.
Also path was not released.
2021-11-09 20:15:06 +09:00
Hermet Park
cbcb85cd7c sw_engine renderer: code refactoring
free the member resources in the destructor.
2021-11-09 16:09:44 +09:00
Hermet Park
74413a989f common paint: fix a memory leak.
delete dangling object properly in the corner case.

Unfortunately, this brings to correct the capi test cases.
we assume the paints is deleted whenever its result is successful or not.

@Issue: https://github.com/Samsung/thorvg/issues/995
2021-11-09 14:51:32 +09:00
Hermet Park
37e39866dd common: ++exception handling.
fix the memory leak in the corner case

detected by tvg test suites

@Issue: https://github.com/Samsung/thorvg/issues/995
2021-11-09 14:16:15 +09:00
Hermet Park
2aa551e222 common array: + exception handling.
properly handle if the realloc() is failed.

@Isssue: https://github.com/Samsung/thorvg/issues/995
2021-11-08 12:28:17 +09:00
Hermet Park
b956b0a7e0 sw_engine raster: fix build break.
trivial mistake by cdf7019b19
2021-11-05 20:59:54 +09:00
Hermet Park
45f521618c sw_engine image: ++missing logs. 2021-11-05 17:43:08 +09:00
Hermet Park
cdf7019b19 sw_raster image: add error logs to notify issues. 2021-11-05 17:42:19 +09:00
Mira Grudzinska
7bc7ab83d0 sw_engine: functions supporting a masking of the clipped images are missing
To preserve the naming convention function '_rasterTranslucentImageRle'
is reanmed to '_translucentImageRle'. The '_rasterTranslucentImageRle'
function is though created - it checks the composition method and calls
the corresponding function. Missing functions are marked, but not implemented
(separate commit).
2021-11-05 17:36:25 +09:00
Hermet Park
eadb7fc4af binary size optimization.
replaced new/delete with malloc/free

saved 936 bytes
2021-11-04 20:10:21 +09:00
Hermet Park
b289950a5f common shape: code refactoring.
cast to float type properly.
2021-11-04 17:35:30 +09:00
Hermet Park
c3a29bd648 common math: code refactoring
introduce common math functions to improve the reusability.
2021-11-04 17:11:27 +09:00
Hermet Park
7c1b16ba11 common shape: ++tiny optimization
reduce the binary size by 80 bytes.
2021-11-03 20:24:36 +09:00
Mira Grudzinska
6b132d77e8 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.
2021-11-02 19:37:02 +09:00
Hermet Park
3b54e4797e 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
2021-11-02 19:33:32 +09:00
Mira Grudzinska
abc3b40a37 sw_engine: var/funct renaming
Changed names:
shape->rect -> shape->fastTrack
_factTrack -> _axisAlignedRect
2021-11-02 11:41:14 +09:00
Mira Grudzinska
26f99372b0 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.
2021-11-01 22:21:17 +09:00
Hermet Park
3b2e1f4291 Revert "loaders: Consider colorspaces (#838)"
This reverts commit cd5116b053.

Ah this breaks the Stress example due to Picture::duplicate() is not available...

Need to consider and come back again.
2021-11-01 16:53:25 +09:00
Michal Maciola
cd5116b053
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
2021-11-01 16:10:22 +09:00
Michal Maciola
479cea74cc 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
2021-11-01 15:57:13 +09:00
Hermet Park
875e200767 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.
2021-11-01 12:09:32 +09:00
Mira Grudzinska
a9990be54c sw_engine: incorrect matrix used
The invTransform should be used instead of transform - missed during
all the gradient changes.
2021-10-29 15:04:52 +02:00
Mira Grudzinska
5ca50a28a2 sw_engine: variables names changed
Rasial gradient variables names changed to be more descriptive.
2021-10-29 10:55:06 +09:00