From 608f606d4963a538decd6b878d16858857eb7e7f Mon Sep 17 00:00:00 2001
From: Abdelrahman Ashraf <a.theashraf@gmail.com>
Date: Mon, 18 Mar 2024 13:23:28 +0700
Subject: [PATCH] =?UTF-8?q?chore:=20=F0=9F=A4=96=20utilize=20ABGR8888S=20c?=
 =?UTF-8?q?olor=20space=20for=20web=20(#100)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 deps/modules/thorvg                     |  2 +-
 dotlottie-rs/src/lottie_renderer/mod.rs | 17 +++++++++++++++--
 dotlottie-rs/src/thorvg.rs              |  4 ++++
 3 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/deps/modules/thorvg b/deps/modules/thorvg
index 65d7559b..8545cf5a 160000
--- a/deps/modules/thorvg
+++ b/deps/modules/thorvg
@@ -1 +1 @@
-Subproject commit 65d7559ba7ed7405d27d8c93a66158236e25b217
+Subproject commit 8545cf5ab8632c1860aa09fe5732081415fd6f11
diff --git a/dotlottie-rs/src/lottie_renderer/mod.rs b/dotlottie-rs/src/lottie_renderer/mod.rs
index 85d15d30..259be8e1 100644
--- a/dotlottie-rs/src/lottie_renderer/mod.rs
+++ b/dotlottie-rs/src/lottie_renderer/mod.rs
@@ -69,7 +69,7 @@ impl LottieRenderer {
                 self.width,
                 self.width,
                 self.height,
-                TvgColorspace::ABGR8888,
+                get_color_space_for_target(),
             )
             .map_err(LottieRendererError::ThorvgError)?;
 
@@ -184,7 +184,7 @@ impl LottieRenderer {
                 self.width,
                 self.width,
                 self.height,
-                TvgColorspace::ABGR8888,
+                get_color_space_for_target(),
             )
             .map_err(LottieRendererError::ThorvgError)?;
 
@@ -269,3 +269,16 @@ fn hex_to_rgba(hex_color: u32) -> (u8, u8, u8, u8) {
 
     (red, green, blue, alpha)
 }
+
+#[inline]
+fn get_color_space_for_target() -> TvgColorspace {
+    #[cfg(target_arch = "wasm32")]
+    {
+        TvgColorspace::ABGR8888S
+    }
+
+    #[cfg(not(target_arch = "wasm32"))]
+    {
+        TvgColorspace::ABGR8888
+    }
+}
diff --git a/dotlottie-rs/src/thorvg.rs b/dotlottie-rs/src/thorvg.rs
index f9a0f39e..aa8494a3 100644
--- a/dotlottie-rs/src/thorvg.rs
+++ b/dotlottie-rs/src/thorvg.rs
@@ -34,7 +34,9 @@ pub enum TvgEngine {
 
 pub enum TvgColorspace {
     ABGR8888,
+    ABGR8888S,
     ARGB8888,
+    ARGB8888S,
 }
 
 fn convert_tvg_result(result: Tvg_Result, function_name: &str) -> Result<(), TvgError> {
@@ -99,7 +101,9 @@ impl Canvas {
     ) -> Result<(), TvgError> {
         let color_space = match color_space {
             TvgColorspace::ABGR8888 => Tvg_Colorspace_TVG_COLORSPACE_ABGR8888,
+            TvgColorspace::ABGR8888S => Tvg_Colorspace_TVG_COLORSPACE_ABGR8888S,
             TvgColorspace::ARGB8888 => Tvg_Colorspace_TVG_COLORSPACE_ARGB8888,
+            TvgColorspace::ARGB8888S => Tvg_Colorspace_TVG_COLORSPACE_ARGB8888S,
         };
 
         let result = unsafe {