From c70262696e98cfb2d03a5dcbb47cd5ce063ed9e6 Mon Sep 17 00:00:00 2001 From: VIFEX Date: Wed, 23 Oct 2024 00:15:16 +0800 Subject: [PATCH] fix(vg_lite): fix linear gradient matrix error (#7110) Signed-off-by: pengyiqiang Co-authored-by: pengyiqiang --- src/draw/vg_lite/lv_draw_vg_lite_vector.c | 12 +++++++----- .../draw/svg_draw_svg_group_4.lp32.png | Bin 2399 -> 2414 bytes .../draw/svg_draw_svg_group_4.lp64.png | Bin 2399 -> 2414 bytes .../draw/svg_draw_svg_shapes_3.lp32.png | Bin 2537 -> 2669 bytes .../draw/svg_draw_svg_shapes_3.lp64.png | Bin 2537 -> 2669 bytes .../draw/svg_draw_svg_shapes_7.lp32.png | Bin 4692 -> 4980 bytes .../draw/svg_draw_svg_shapes_7.lp64.png | Bin 4692 -> 4980 bytes .../draw/svg_draw_svg_shapes_8.lp32.png | Bin 2368 -> 2417 bytes .../draw/svg_draw_svg_shapes_8.lp64.png | Bin 2368 -> 2417 bytes .../draw/svg_draw_svg_shapes_9.lp32.png | Bin 3837 -> 3048 bytes .../draw/svg_draw_svg_shapes_9.lp64.png | Bin 3837 -> 3048 bytes 11 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/draw/vg_lite/lv_draw_vg_lite_vector.c b/src/draw/vg_lite/lv_draw_vg_lite_vector.c index 816049f5e..977551e00 100644 --- a/src/draw/vg_lite/lv_draw_vg_lite_vector.c +++ b/src/draw/vg_lite/lv_draw_vg_lite_vector.c @@ -270,12 +270,14 @@ static void task_draw_cb(void * ctx, const lv_vector_path_t * path, const lv_vec } break; case LV_VECTOR_DRAW_STYLE_GRADIENT: { - vg_lite_matrix_t grad_matrix; - vg_lite_identity(&grad_matrix); + vg_lite_matrix_t grad_matrix = matrix; -#if !LV_USE_VG_LITE_THORVG - /* Workaround inconsistent matrix behavior between device and ThorVG */ - lv_vg_lite_matrix_multiply(&grad_matrix, &matrix); +#if LV_USE_VG_LITE_THORVG + /* Workaround inconsistent radial gradient matrix behavior between device and ThorVG */ + if(dsc->fill_dsc.gradient.style == LV_VECTOR_GRADIENT_STYLE_RADIAL) { + /* Restore matrix to identity */ + vg_lite_identity(&grad_matrix); + } #endif vg_lite_matrix_t fill_matrix; lv_vg_lite_matrix(&fill_matrix, &dsc->fill_dsc.matrix); diff --git a/tests/ref_imgs_vg_lite/draw/svg_draw_svg_group_4.lp32.png b/tests/ref_imgs_vg_lite/draw/svg_draw_svg_group_4.lp32.png index 59670b22e6b8fdb37a3c6abfe574d44405970d3e..17271dede42f319086541d28fc79f5ef5ba22270 100644 GIT binary patch literal 2414 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV0^&A1QfZHI&TpJ1E;B{i(^Q|oVPbN`aO1F zaJ{&3s>p}SHH8|!>G`LbCN|tjo%TXz=ccDGPF_8$b6g_1=dFz%|Kp!`ODk)tpFg#U zv!2&icyw1>?H9@4`|f-fq@K~AL^!AT`-tDs4xA$|=zt?XczufWd@aw9t z7t`PTE;{}Ce@i~=f&PLfS|kHdy4v{EqVJ|O!;b^oayP3p+<(G?KN*0dZTU^+2ibjJ zm({bL-WTruuYRBC0Ueqq2ZnuVH^1K$uH(JWl^~{0?c6~1>@{j2tx_vhOTp1-8jU9E i)~ll_ipUi8o4IXQT+H$7pM`+!C&Pk2BcPo+#`BrV=u-mrl*Y};dx3|spzkPc9+voA~r@ybS z`}{id_uZO#w?&T^e!W=Tv+@4t;)eC_Y|dX5ZjhE;&CbAJBh|>tARrvUz+gyC#_i{G zR+}??X!~pv?$40-q=~Q{8&AJtoS!RKZu->DZ7T~yMTj1?-30gK?lp2BZhkWi^Jid? zo5L-};NX+M$Z&*Zcro-=vlp!Yd%W)a`RAYae0yQB&aSH8@SW5*{fcmg8a{CyhK3mj zm>4=Zsm*v>eD10=L&f3Bd8^eK%!>{Zw&OeK(v>lnfciO@%$ z`ysZ~_FNU-$Mc>mL6mkOLG_>=HIQ&(A}>*l>Y{crFq&3J(<+T>7|f)#m+9>Rrx=Sh S8J~a+Ck9VfKbLh*2~7aCjIY}O diff --git a/tests/ref_imgs_vg_lite/draw/svg_draw_svg_group_4.lp64.png b/tests/ref_imgs_vg_lite/draw/svg_draw_svg_group_4.lp64.png index 59670b22e6b8fdb37a3c6abfe574d44405970d3e..17271dede42f319086541d28fc79f5ef5ba22270 100644 GIT binary patch literal 2414 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV0^&A1QfZHI&TpJ1E;B{i(^Q|oVPbN`aO1F zaJ{&3s>p}SHH8|!>G`LbCN|tjo%TXz=ccDGPF_8$b6g_1=dFz%|Kp!`ODk)tpFg#U zv!2&icyw1>?H9@4`|f-fq@K~AL^!AT`-tDs4xA$|=zt?XczufWd@aw9t z7t`PTE;{}Ce@i~=f&PLfS|kHdy4v{EqVJ|O!;b^oayP3p+<(G?KN*0dZTU^+2ibjJ zm({bL-WTruuYRBC0Ueqq2ZnuVH^1K$uH(JWl^~{0?c6~1>@{j2tx_vhOTp1-8jU9E i)~ll_ipUi8o4IXQT+H$7pM`+!C&Pk2BcPo+#`BrV=u-mrl*Y};dx3|spzkPc9+voA~r@ybS z`}{id_uZO#w?&T^e!W=Tv+@4t;)eC_Y|dX5ZjhE;&CbAJBh|>tARrvUz+gyC#_i{G zR+}??X!~pv?$40-q=~Q{8&AJtoS!RKZu->DZ7T~yMTj1?-30gK?lp2BZhkWi^Jid? zo5L-};NX+M$Z&*Zcro-=vlp!Yd%W)a`RAYae0yQB&aSH8@SW5*{fcmg8a{CyhK3mj zm>4=Zsm*v>eD10=L&f3Bd8^eK%!>{Zw&OeK(v>lnfciO@%$ z`ysZ~_FNU-$Mc>mL6mkOLG_>=HIQ&(A}>*l>Y{crFq&3J(<+T>7|f)#m+9>Rrx=Sh S8J~a+Ck9VfKbLh*2~7aCjIY}O diff --git a/tests/ref_imgs_vg_lite/draw/svg_draw_svg_shapes_3.lp32.png b/tests/ref_imgs_vg_lite/draw/svg_draw_svg_shapes_3.lp32.png index c9bd18a2ff9ca7536c1cfc0908942404793e78e4..07695b667dab50a4589bb28808ad40877e480f5c 100644 GIT binary patch delta 583 zcmV-N0=WI@6YUg`BVP(MNklYHo0DxiAh=DHNjI18AWo%B-$p`Emx)!-W z=bpe>x^(DNz=Jy|gDv+-mQ+{xE5*h44GKl@k@U-uAA#p;wHg3?d+zV=&wT~pNEhe6 z006-MjgjFsk>ECw;4OdHyHg(a@bGYVcX!GY;b@nammfZSIQK08c#}>VSa)}KA3uIP z<%w{#o12?2U%s6C7680SCk?De*Wax^UH{{%Ip)TsZa%TS=Z*)DIQ_+* zhwkw50*gQ9_UxfM9Js*lJ$KGLPVadMJLX@p^6;Mj>aSq?lvh$;VDHP>^9FYL{Q0+6 ztpk8v&Jb9iuE)FRZ41x8_@8kQQUb%L)_yhoW8%`QnS65fJx3{M}5svo${rhuY0f4t^u2%kk z2;f_Ee}8}OD*#9GOYXDr0S5t-AOhHvAOhHvAOhHvAOhHvAOhHvAOhHvAOcMm`wHhk VF4GGLJJbLG002ovPDHLkV1jawHv#|v delta 453 zcmaDW@=|z$awO*lPZ!6KiaBp@+2#ocN;m}ad#TJS3A`opGH6n0K&oj@x7bF;tSG7F ztxa4fg%(P5eVAQQkQCdSTjH14YkPms_eZa^J{j~qW@`AmIcjZLElYy;`LbFDhK7j^ zv+FO;nSJ-(J-z9tEz4Wh%F4^f$Hct(CBh)HB$7FMXG~mN+_{~~IdA{``Sa{q+V$lO z4;0QyMU?x^?+;)8Ilo$S)`T8h5@sDC8!{IA;dzoKnJ?4DN(u{6oU8f4}PMcH}*{cX#V+e*XMFdw)Oq9xTJpFfW6>@$0+GkB+|nx!pGA z@exyo4a?Jb*G!%~`St79AaBo|JNNA`4hET3i86nKSrX*ehOLg3XS^{YHo0DxiAh=DHNjI18AWo%B-$p`Emx)!-W z=bpe>x^(DNz=Jy|gDv+-mQ+{xE5*h44GKl@k@U-uAA#p;wHg3?d+zV=&wT~pNEhe6 z006-MjgjFsk>ECw;4OdHyHg(a@bGYVcX!GY;b@nammfZSIQK08c#}>VSa)}KA3uIP z<%w{#o12?2U%s6C7680SCk?De*Wax^UH{{%Ip)TsZa%TS=Z*)DIQ_+* zhwkw50*gQ9_UxfM9Js*lJ$KGLPVadMJLX@p^6;Mj>aSq?lvh$;VDHP>^9FYL{Q0+6 ztpk8v&Jb9iuE)FRZ41x8_@8kQQUb%L)_yhoW8%`QnS65fJx3{M}5svo${rhuY0f4t^u2%kk z2;f_Ee}8}OD*#9GOYXDr0S5t-AOhHvAOhHvAOhHvAOhHvAOhHvAOhHvAOcMm`wHhk VF4GGLJJbLG002ovPDHLkV1jawHv#|v delta 453 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 delta 2866 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 diff --git a/tests/ref_imgs_vg_lite/draw/svg_draw_svg_shapes_7.lp64.png b/tests/ref_imgs_vg_lite/draw/svg_draw_svg_shapes_7.lp64.png index e00168ff839f5f5ca0cb1dbd0ad9d0a5c741a6ac..5aeb017cbecf1369361e02fd746f2668159c1392 100644 GIT binary patch literal 4980 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 delta 2866 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 diff --git a/tests/ref_imgs_vg_lite/draw/svg_draw_svg_shapes_8.lp32.png b/tests/ref_imgs_vg_lite/draw/svg_draw_svg_shapes_8.lp32.png index 10ac3c1ec13639b43e4f58586f4e3d21fdbb00fd..61e4e30413b75abc8db15944f82f21de4b93dd3d 100644 GIT binary patch literal 2417 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV0^&A1QfZHI&TpJ1E+kO%f3tT=>6@FM-+h}oe9SEP_&`GW=y>Z6yJn!e$*Y$S`jOOgE`1xVIv{|vv>Gg><_4k$c zzPS)*J?C`YgTe~DWM4f DJXplO literal 2368 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV0^&A1QfZHI&TpJ11Gzui(^Q|oVPbO`W|** zXbY4-#n3ZJ)QIYFr zZu?q%PV}+ZVsy;NPHtcIKIzj&(~e({k1f5t{!9D3Z8y0Y9xT6;z{qffMU270XHYZB zgwNI7Qj__$y>cl-fiG1ZU8b*p8WjGF*PqtR+sn`pZMMxfmN8~=X>7VbgWeNy#lapn xgFp60T{t8%*=RJ4M$;g#2S$_Vph%)`WH&`A3Z-;#2?1M144$rjF6*2UngF;}4B-F( diff --git a/tests/ref_imgs_vg_lite/draw/svg_draw_svg_shapes_8.lp64.png b/tests/ref_imgs_vg_lite/draw/svg_draw_svg_shapes_8.lp64.png index 10ac3c1ec13639b43e4f58586f4e3d21fdbb00fd..61e4e30413b75abc8db15944f82f21de4b93dd3d 100644 GIT binary patch literal 2417 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV0^&A1QfZHI&TpJ1E+kO%f3tT=>6@FM-+h}oe9SEP_&`GW=y>Z6yJn!e$*Y$S`jOOgE`1xVIv{|vv>Gg><_4k$c zzPS)*J?C`YgTe~DWM4f DJXplO literal 2368 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV0^&A1QfZHI&TpJ11Gzui(^Q|oVPbO`W|** zXbY4-#n3ZJ)QIYFr zZu?q%PV}+ZVsy;NPHtcIKIzj&(~e({k1f5t{!9D3Z8y0Y9xT6;z{qffMU270XHYZB zgwNI7Qj__$y>cl-fiG1ZU8b*p8WjGF*PqtR+sn`pZMMxfmN8~=X>7VbgWeNy#lapn xgFp60T{t8%*=RJ4M$;g#2S$_Vph%)`WH&`A3Z-;#2?1M144$rjF6*2UngF;}4B-F( diff --git a/tests/ref_imgs_vg_lite/draw/svg_draw_svg_shapes_9.lp32.png b/tests/ref_imgs_vg_lite/draw/svg_draw_svg_shapes_9.lp32.png index 5f1b1349b992caf556b61d0f484226381dba7b79..3ad8e7f941743dc969c05e17734162b3f376d45d 100644 GIT binary patch literal 3048 zcmeHJYcQNw7(Tm*Tj?~dOWdQ#Oc$YpCd6!A;yTqNmEC0+8<&Y0;(i-j)+I9;Luh`u zOx=o66q_$n7TeX;1Zg(5lCZ5}W3pw%+H72wh=_jQIgCG@{_9MC_;ud%p7-)R&wI`{ zU&)0Ke?1)&9RPq{V1Vx>0Mx7iAkAx$anF;uhGqbCZwLB%h33>L=Dd=kg(nIg7uiX< z1=ZJLqo%*0RbJk(Sx)^c;8w%0Ry4Dxe?-i;#5>9!d|bu}a(xqOwA(vfHl8e<$S-qt zqvpL;$^74`rez;m_HJ*z{$0s_x4W~Yq_Ro#^v$)kG^H&t`g7N9lsekD8ME%*r@L3h z-uA2TlndFWZ2p#=8u%^FW0a8^si>$=B!St#~DEI^~`REAa@Dbywy0~Ia;K)J(#Dznxgz-Fj*-egT);e zOni|})&(`n9A@|TsKPBl_*X5$kS^4`S2CK=vWsen5DQ8I(>G zdJ+@U5nj&&VU-S;I2=ig=0CP5@puoMtDn1?j@ey3yaCO^21_m?w(8ZguLXBWU7m^% zDMs-d&;{oa3l#tEat$lQgdzSzIpE~ zQD#2KauNFF{GVa@60U%NQ#ofW^~=26S~Exn7Qz>uX++5|krt7Q-G2gObPu4r=RxSA zwJQ_tcznNvehStmHy*1Z_K#L!yphLo=r*}g2$^nN(TB&99c^L__-Py}fm*9Zs&RH$ zbns~w4acKh0_24 literal 3837 zcmeHKZBUa}7CuqI55AnDc5tcfcE@%nXrU9Kn<@)dS}Us%THYiAfjG5|NGTCSknj;< zE33BB{YcRv0$T@xB)p`RG#bS4(Lxt!v_KLY1jE)W7z?s>V^Ad7`@T2by4B9QGyUnG z%$=K)d(U~!^E~I~5GQW4-;$L}0Kjj{t1+(u%zp}iVO=y2?F_tG{SkowXIo-6Cg#g0 zN1lJ@>KDs<#_X$X5~+hIWYzRUnwxz8v3 zFYOZxuWi%!)oIc!b(wo5&XOv3fi2KwES`15>xK{MywrU|tN}Q)p-uHr`VGVQqZtiL|NDIt0HC_Aj z1Bw#p3`Wb8*+a{rJ+ea88`MCqTLGM`n+o~I_E;eU9Au_l_ZW4eAC6j?!L#`$@m8WT zw7Utz8GK@&GW#GIa)7!ftW4uBMcGw%Sb|h@kNY>$wbnQ+7JTP#&a$4 zU3HRtp&)V^LwVbm>lCZ-jjb&HNY@xn;|^MHLKUfB8P8E$Vsh&~Ms++XQd_=?Tvn2F z?fL?k2`e+kUEGxR&vhV;{TsoyFM(Pwo=tw5uINTVM$?JL^1sI`3#$Oue!|==V8A&I z`b}i8r)IN4e$y;#p9glqFuP#l2)=k#itHrn&eZ;$gdrMVTg9`zha0KQBn)C)(=WI- zRFO2?MD_-?;44R(7mX`vP?A$+ti2fQgA^zT?rC3>K{%-wzbZ&aEErW#+eZ~R8bMdG z5#<;E<_?M|92_E|;P7;1${@@QD949izkt?8)WDS|f>aR+IM{Kk*jxD}&eHka&59fo zVNVB;{fX{kv=7mg1u>oW=-T7rl?k@lbw$TX*t*C zOYn+Iy&!RRhRx3;@p+j@Cb((CYNqItZU70ZQKQWEZVHL&K4EEYK(nA|FDgqvGOnxL5F46+et~N7Kdb1>2On~sLeAt3l~~*5WQ4i z9q-s3Xr%j6bou2=|G@N$K7ki!b~NRjR;dbdD+VsQd>^B%wrwQGZZ-%7kv2C1gTJceHLB?6#Fp-gUFM@>rIdI}tpyt@DmIp@GDf2fa4^M_i#$XmG$+m3V3 zf6O&+?lxO~8gpPZkDdW5Qe-)XpW+8KPbt~A36SBWVSUUf2!@4NptEmNlZT6&?l2`)X=xv6 zjzZ8RB1_2F`__ZU@UBUUuhdH*L_keWsfeRxjyKfH&c}h&lv?cCqsTv8!bZKg-#@fJ zOq*2Kpli;2tJ0Jt8GKrMCG=bNxw~U=PVw;I)DxrbR(&`~UkcUsmAJol75_`ifUt_n zC!>mk=OPQwW?eb|#N1kd_^a8iBOhilI8zRXV0Mx7iAkAx$anF;uhGqbCZwLB%h33>L=Dd=kg(nIg7uiX< z1=ZJLqo%*0RbJk(Sx)^c;8w%0Ry4Dxe?-i;#5>9!d|bu}a(xqOwA(vfHl8e<$S-qt zqvpL;$^74`rez;m_HJ*z{$0s_x4W~Yq_Ro#^v$)kG^H&t`g7N9lsekD8ME%*r@L3h z-uA2TlndFWZ2p#=8u%^FW0a8^si>$=B!St#~DEI^~`REAa@Dbywy0~Ia;K)J(#Dznxgz-Fj*-egT);e zOni|})&(`n9A@|TsKPBl_*X5$kS^4`S2CK=vWsen5DQ8I(>G zdJ+@U5nj&&VU-S;I2=ig=0CP5@puoMtDn1?j@ey3yaCO^21_m?w(8ZguLXBWU7m^% zDMs-d&;{oa3l#tEat$lQgdzSzIpE~ zQD#2KauNFF{GVa@60U%NQ#ofW^~=26S~Exn7Qz>uX++5|krt7Q-G2gObPu4r=RxSA zwJQ_tcznNvehStmHy*1Z_K#L!yphLo=r*}g2$^nN(TB&99c^L__-Py}fm*9Zs&RH$ zbns~w4acKh0_24 literal 3837 zcmeHKZBUa}7CuqI55AnDc5tcfcE@%nXrU9Kn<@)dS}Us%THYiAfjG5|NGTCSknj;< zE33BB{YcRv0$T@xB)p`RG#bS4(Lxt!v_KLY1jE)W7z?s>V^Ad7`@T2by4B9QGyUnG z%$=K)d(U~!^E~I~5GQW4-;$L}0Kjj{t1+(u%zp}iVO=y2?F_tG{SkowXIo-6Cg#g0 zN1lJ@>KDs<#_X$X5~+hIWYzRUnwxz8v3 zFYOZxuWi%!)oIc!b(wo5&XOv3fi2KwES`15>xK{MywrU|tN}Q)p-uHr`VGVQqZtiL|NDIt0HC_Aj z1Bw#p3`Wb8*+a{rJ+ea88`MCqTLGM`n+o~I_E;eU9Au_l_ZW4eAC6j?!L#`$@m8WT zw7Utz8GK@&GW#GIa)7!ftW4uBMcGw%Sb|h@kNY>$wbnQ+7JTP#&a$4 zU3HRtp&)V^LwVbm>lCZ-jjb&HNY@xn;|^MHLKUfB8P8E$Vsh&~Ms++XQd_=?Tvn2F z?fL?k2`e+kUEGxR&vhV;{TsoyFM(Pwo=tw5uINTVM$?JL^1sI`3#$Oue!|==V8A&I z`b}i8r)IN4e$y;#p9glqFuP#l2)=k#itHrn&eZ;$gdrMVTg9`zha0KQBn)C)(=WI- zRFO2?MD_-?;44R(7mX`vP?A$+ti2fQgA^zT?rC3>K{%-wzbZ&aEErW#+eZ~R8bMdG z5#<;E<_?M|92_E|;P7;1${@@QD949izkt?8)WDS|f>aR+IM{Kk*jxD}&eHka&59fo zVNVB;{fX{kv=7mg1u>oW=-T7rl?k@lbw$TX*t*C zOYn+Iy&!RRhRx3;@p+j@Cb((CYNqItZU70ZQKQWEZVHL&K4EEYK(nA|FDgqvGOnxL5F46+et~N7Kdb1>2On~sLeAt3l~~*5WQ4i z9q-s3Xr%j6bou2=|G@N$K7ki!b~NRjR;dbdD+VsQd>^B%wrwQGZZ-%7kv2C1gTJceHLB?6#Fp-gUFM@>rIdI}tpyt@DmIp@GDf2fa4^M_i#$XmG$+m3V3 zf6O&+?lxO~8gpPZkDdW5Qe-)XpW+8KPbt~A36SBWVSUUf2!@4NptEmNlZT6&?l2`)X=xv6 zjzZ8RB1_2F`__ZU@UBUUuhdH*L_keWsfeRxjyKfH&c}h&lv?cCqsTv8!bZKg-#@fJ zOq*2Kpli;2tJ0Jt8GKrMCG=bNxw~U=PVw;I)DxrbR(&`~UkcUsmAJol75_`ifUt_n zC!>mk=OPQwW?eb|#N1kd_^a8iBOhilI8zRXV