Commit graph

702 commits

Author SHA1 Message Date
Hermet Park
7289116227 remove std async usage.
we can't control any threads count that could drop the performance.

remove async() and will come back with fine-tuned threading-pool.

Change-Id: I17c39792234acfce6db334abc0ce12da23978a9a
2020-08-14 17:41:44 +09:00
Subhransu Mohanty
275c2f9d79 tvg: added task support that runs on a threadpool.
this patch adds an async() function that takes a shared_task
and runs asyncronously in a threadpool.

Change-Id: I02a47df6938656828f924fbf5e2bc075073b329b
2020-08-14 10:57:39 +09:00
Hermet Park
9dd3cc5edc common: code refactoring.
we can return nullptr directly here.

Change-Id: Ic1d987f2701d20ff1b69af2854f9cfee7e2fe065
2020-08-13 20:05:37 +09:00
Hermet Park
3b22a25798 gl_engine: engine should return shape data for resuing it.
Change-Id: I45f7ecbdb707b0751894e01d273b149402e089af
2020-08-13 20:01:03 +09:00
Hermet Park
ac4405a4ec sw_engine: fix potential data overflow.
Change-Id: Ie800fda74d44ad3741f7a92f12681f7f753ee50c
2020-08-13 19:50:46 +09:00
Hermet Park
8abef404cf sw_engine: remove unnecessary assert() call
Change-Id: I8cb249b6b7f32992f7ce9c86e408546c14856330
2020-08-13 19:29:23 +09:00
Hermet Park
3dc3cfd8c0 sw_engine: fix data overflow case.
Change-Id: I01f90a8a6b3bca38142c8c16d1990b5b1a09d081
2020-08-13 19:27:02 +09:00
Hermet Park
7b004363f9 sw_engine renderer: initialize member data in default.
static analizyer bothers us due to this.
we'd rather initialize members for free of them.

Change-Id: I23b769b94be7514a8bf6e6d683ddb90b3cd613c4
2020-08-13 19:15:33 +09:00
Hermet Park
199b54c5ca common: code refactoring.
we can return nullptr directly here.

Change-Id: I35e04dc9850b3b3b75e1e02b4c81a61b79f2c43f
2020-08-13 19:13:17 +09:00
Hermet Park
0b95e55e2f gl_engine renderer: initialize member data in default.
static analizyer bothers us due to this.
we'd rather initialize members for free of them.

Change-Id: Ifa6ebffdfdcb31d2dd3a1d6b911226928f654e3f
2020-08-13 19:02:31 +09:00
Hermet Park
a12f346425 sw_engine: remove unnecessary assert() call
Change-Id: I7c665bab4ef867f912ea738480e6d9b2b63e014e
2020-08-13 19:00:09 +09:00
Michal Szczecinski
2c9610bf6a common_shape: fixed arc api to draw rectangles lower than 0.
Absolute value is used to calculate number of bezier curves used
to approximate arc.

Change-Id: Idedd7fd73590d569417fc646fc7febdaaab65857
2020-08-13 08:54:39 +00:00
Hermet Park
9893af979f replace license from Apache 2.0 to MIT
Change-Id: I61f7cb2b0e407bc035f3b2ec7da9b7f230057e24
2020-08-13 16:53:38 +09:00
Hermet Park
7839c662d7 sw_engine: fix one last compile warning.
casting to loss data in converting data type.

Change-Id: I4c9b45b1c015579807a2d44e0ff2734bd2f655f3
2020-08-06 20:17:34 +09:00
Hermet Park
ef11d500ba common: fix compiler warnings that loss data by mis-matched converision
these conversions are intented, we explicity use casting so that compiler doesn't
catch them anymore.

Change-Id: I9d905c7562c43929b040d034e5ee0d14c6750a80
2020-08-06 20:01:37 +09:00
Hermet Park
2555e82f0d fix compile warnings
comparison of unsigned expression < 0 is always false [-Werror=type-limits]

Change-Id: I8cee625056bcde1f2a3cb2b9ce704b33be5bd725
2020-08-06 17:06:36 +09:00
Hermet Park
d92fc13d8b gl_engine: fix compile warnings
this statement may fall through [-Werror=implicit-fallthrough=]

Change-Id: I3cfc9b51697e229a524f6f75e10b83715b06ce13
2020-08-06 16:57:38 +09:00
Hermet Park
7214559ad9 common: fix compile warnings.
--Werror=unused-parameter

Change-Id: If4c04e3e20b67be62b50c3b1e2e909dbd848eccc
2020-08-06 16:48:26 +09:00
Hermet Park
ad48f7d8ba common: fix compile warnings.
--Werror=unused-parameter

Change-Id: I180464d770b1aa04afd39c30a3223a7cd48c78a4
2020-08-06 16:24:24 +09:00
Hermet Park
9f6b5eb59e common: changed premultiplied color policy.
Some user have no idea of premultiplied alpha concept,
We suggest more user-friendly interfaces so that they don't confuse it.

Now, this pre-multipying is acommplished by backend engines.

Change-Id: Ifd84d56361cb56a8b98240bbd16690accf370bad
2020-08-06 13:54:51 +09:00
Hermet Park
7106272d97 common: code refactoring.
return as soon as possible.

Change-Id: If48e13e8976bc1692dadd9054b484bf7cd811917
2020-08-03 20:06:02 +09:00
Hermet Park
e98988da02 common shape: support pie filling from arc.
last argument pie=true makes arc to pie shape.

Change-Id: I6f22d00fed77bf728a4ff6e5f1ca42f476ac1664
2020-08-03 20:02:31 +09:00
Michal Szczecinski
214072babe common shape: added arc implementation
Change-Id: Ib483e24d8e358b2860ca8d46e8b88d58d12bdb62
2020-08-03 08:31:54 +02:00
Hermet Park
f15aefa5dc test: updated svg sample
also revise size() method of Picture for proper aligning.

Change-Id: I58a0886968f6058e65a062477e2a873224d8ea8f
2020-07-30 21:10:02 +09:00
Hermet Park
e9a4e2ccb6 common: code refactoring
remove duplicated code among the Paint types.

Change-Id: Ia7c09f29531e6aef73d2ba1f951f8dfdf488deb8
2020-07-30 19:52:48 +09:00
Hermet Park
ec6e5618e2 common picture: introduce picture feature which is for vector file extensions.
Now Scene is only specialized for composition of Paint objects.

Change-Id: I16426913f029c89e9f9ac4d5e0afed11d1a228d0
2020-07-30 17:13:00 +09:00
Hermet Park
39b77361c5 common: code refactoring.
changed just internal variable & method names.

no logical changes.

Change-Id: I01782ec59dec3ff2232e03de7b3863100d9cc27f
2020-07-30 15:15:31 +09:00
Hermet Park
8dca270a30 common: code refactoring for simplicity.
Introduce internal PaintMethod since there more derived paint classes are coming.

This PaintMethod is a sort of Strategy Pattern method.

Change-Id: I29c49f5d4ddbfb9e429d4976636b20b39914ee20
2020-07-30 14:51:31 +09:00
Hermet Park
80d47fd7d3 common: revise canvas interfaces.
1. removed async option which doesn't work currently,
rather than it, we can add async option in initiailizer class.

2. removed update() method.
Instead, we can call update(paint = nullptr); which has exactly same behavior.

Change-Id: I7909a50d804b97baf413a2ff6365a3cf79a3689e
2020-07-30 13:43:18 +09:00
Hermet Park
8ed9edd33e common: code refactoring
keep consistency of internal functions among the paint type methods.

Change-Id: I98a42ac398ddc5aaf49ac59e5cbb1790266bd612
2020-07-29 20:49:59 +09:00
Hermet Park
afc7bc8c2f common: code refactoring
remove exceptional handling which is inevitable scenario.

Change-Id: I761a59a38f4578291ee8bc044c5ca989feedbe79
2020-07-29 19:53:45 +09:00
Hermet Park
9e0c4666af common: revise transform interfaces.
transform interfaces are getting duplicated in derived classes.

we moved to the super for smaller apis count.

Applied strategy pattern to hide the inheritance.

Change-Id: I7b0c3ff9317e9bf3c97bb0c849bf55e79ee9a591
2020-07-29 16:52:40 +09:00
Hermet Park
8a924cbd78 sw_engine: fix out of cell memory.
we can adjust cell size if the cell memory is out.
the main rle logic missed the exception handling.

Change-Id: I4419eefefccafd788729111eafeb65aa4e6a20e9
2020-07-29 13:40:11 +09:00
Hermet Park
d2d4a2a3e7 gl_engine: updated file permission.
please keep 664 for files.

Change-Id: Iaddd87b0d35a74bc8c6cbf330fecbd28e14ad57a
2020-07-28 20:57:34 +09:00
Hermet Park
bee94d48fe sw_engine gradient: support x/y scale for linear gradient
Change-Id: Ic58e7cc61a3c90307b6cfb629eb8af69b75fb903
2020-07-24 21:09:24 +09:00
Hermet Park
76a7c900be sw_engine gradient: support x/y scale for radial gradient
Change-Id: Id725637e261642d0e92d100c73841278b7f44c1c
2020-07-24 16:48:41 +09:00
Hermet Park
5fdc1f7fc8 sw_engine: revise stroke scaling logic.
previous fast track logic is useless,
it actually doesn't helpful for performance, just increase the code complexity.

Change-Id: Ib6ad204edfb241d74c41413dfec7ab42fb02af81
2020-07-24 11:03:20 +09:00
Hermet Park
f1aab52958 sw_engine: support bidirectional stroke scaling.
if the transform scale factor for x/y is not identical,
it keeps its both xy scale factor then apply them
for stroking calculation.

Change-Id: I519dfce3ce7b4a12c13da1801d6a00e139e7400f
2020-07-23 17:36:54 +09:00
Hermet Park
4d72eeda15 sw_engine: revise scale transform logic.
Basically, stroke width size is linear,

engine couldn't apply scale factor from the matrix which contains 2 dimensional values.

Thus, we can apply it if the scale factor of x/y is identical.

Otherwise, we should transform every stroke points in the stroking process.
That scenario can be improved with another patch.

Change-Id: I070dcf29d2e42f21e182bdf4239781464158ef73
2020-07-22 20:59:52 +09:00
Hermet Park
5dcafb8b89 comon: code refactoring
renamed internal variable for better readibility.

Change-Id: I07dc66c4bd63f2aec8036aab14ec3ed608820fbc
2020-07-22 18:45:11 +09:00
Hermet Park
96477c0a24 sw_engine: revise outline transform
sw_engine simulates floating point by integer bit shifting,
it loses the accuracy while converting the number data.

This occurs the inacculated curve points result if it scales up very large size.

So we transform points before converting data in order to avoid losing the numbers less decimal point.

Change-Id: I0172e83f06b1a19143a2f65f667dc193e9a4396a
2020-07-21 18:44:27 +09:00
Hermet Park
2ba529c8fb common transformation: fix transformation multiply
Change-Id: Ibc95fab0abfc07aa7f0c4ff6c74785d4f73d02c7
2020-07-17 17:54:21 +09:00
Pranay Kumar Samanta
3b385d1d54 gl_engine: Fix crash in animation callback. Refactor test samples draw function. Fix open shape drawing.
Change-Id: I9ca2cb3951f2229f36292b69221451e0eaf5b6a1
2020-07-17 07:54:58 +00:00
Hermet Park
a6344daa66 sw_engine: fix wrong gradient fill transform.
it missed the offset when transformed gradient positions.

now it's fixed.

Change-Id: I916bd88b40bc29ca57d31411b92e10fe357d720e
2020-07-16 13:45:27 +09:00
Hermet Park
9e1ba8d2c0 sw_engine: introduce avx simd instruction
avx is the cutting edge method for intel & amd cpus simd instruction.
We are going to support this feature for the desktop environment (instead of sse)

You can turn on this with configuration something like this:

$meson . build -Dvectors=avx

Current patch supports only for raster solid color

Change-Id: I068ba30a1f63d480415e2762f8021fc8d6d28a39
2020-07-11 20:58:09 +09:00
Hermet Park
99428ee80a build: support features toggling in meson option.
Change-Id: Id1ebda70fe8380aaa913f79af26e5c39893a6df5
2020-07-08 15:30:12 +09:00
Hermet Park
84af527a27 build: refactoring meson script.
move out engine/loader dependency to its immediate parent folders.

Change-Id: I7f08433fc6d2a333951fceaffea81cbe2e5da9e3
2020-07-08 10:56:44 +09:00
Hermet Park
e2fc353846 build: refactoriong meson script.
move gl dependency to gl_engine part which is right position.

Change-Id: I9d4935f94eff96ca1527762c92d07f9b216f19cd
2020-07-08 10:47:04 +09:00
Hermet Park
6967b998b6 common loader: return viewbox info from the vector resource.
if a scene loads a vector resource, it must have viewbox info from the design,
That viewbox will be used as bounding box so that user can scale up/down
the scene by its requirements.

Change-Id: Iafa39af23118a03de207c745364d56c837892e1b
2020-07-07 15:17:43 +09:00
Hermet Park
ef4d7a3956 common shape: expand rectangle arguement to support both corner radius x, y
this is useful for svg loader

Change-Id: Ia11c2d1c6ea88f3fd65c7f75cef8b59bef426bcb
2020-07-07 13:09:46 +09:00