@shopify/react-native-skia 0.1.124 → 0.1.125

Sign up to get free protection for your applications and to get access to all the features.
Files changed (388) hide show
  1. package/android/CMakeLists.txt +3 -0
  2. package/android/build.gradle +1 -1
  3. package/cpp/api/JsiSkApi.h +3 -1
  4. package/cpp/api/JsiSkCanvas.h +1 -1
  5. package/cpp/api/JsiSkColor.h +41 -7
  6. package/cpp/api/JsiSkColorFilterFactory.h +2 -1
  7. package/cpp/api/JsiSkImageFilter.h +0 -2
  8. package/cpp/api/JsiSkImageFilterFactory.h +37 -17
  9. package/cpp/api/JsiSkMatrix.h +44 -2
  10. package/cpp/api/JsiSkPaint.h +4 -7
  11. package/cpp/api/JsiSkRuntimeEffect.h +7 -0
  12. package/cpp/api/JsiSkRuntimeEffectFactory.h +3 -2
  13. package/cpp/api/JsiSkRuntimeShaderBuilder.h +70 -0
  14. package/cpp/api/JsiSkShaderFactory.h +2 -2
  15. package/cpp/api/JsiSkVertices.h +1 -1
  16. package/cpp/api/third_party/CSSColorParser.cpp +194 -0
  17. package/cpp/api/third_party/CSSColorParser.h +1 -191
  18. package/cpp/jsi/JsiSimpleValueWrapper.h +98 -0
  19. package/cpp/rnskia/values/RNSkReadonlyValue.h +13 -12
  20. package/ios/RNSkia-iOS/PlatformContext.h +30 -4
  21. package/ios/RNSkia-iOS/SkiaDrawView.mm +9 -12
  22. package/lib/commonjs/{values/animation → animation}/decay/decay.js +0 -0
  23. package/lib/commonjs/{values/animation → animation}/decay/decay.js.map +0 -0
  24. package/lib/commonjs/{values/animation → animation}/decay/index.js +0 -0
  25. package/lib/commonjs/{values/animation → animation}/decay/index.js.map +0 -0
  26. package/lib/commonjs/{values/animation → animation}/decay/runDecay.js +1 -1
  27. package/lib/commonjs/animation/decay/runDecay.js.map +1 -0
  28. package/lib/commonjs/{values/animation → animation}/decay/types.js +0 -0
  29. package/lib/commonjs/{values/animation → animation}/decay/types.js.map +0 -0
  30. package/lib/commonjs/{values/animation → animation}/functions/index.js +0 -0
  31. package/lib/commonjs/{values/animation → animation}/functions/index.js.map +0 -0
  32. package/lib/commonjs/animation/functions/interpolate.js +141 -0
  33. package/lib/commonjs/animation/functions/interpolate.js.map +1 -0
  34. package/lib/commonjs/animation/functions/interpolateColors.js +39 -0
  35. package/lib/commonjs/animation/functions/interpolateColors.js.map +1 -0
  36. package/lib/commonjs/{values/animation → animation}/index.js +0 -0
  37. package/lib/commonjs/{values/animation → animation}/index.js.map +0 -0
  38. package/lib/commonjs/{values/animation → animation}/spring/Spring.js +0 -0
  39. package/lib/commonjs/{values/animation → animation}/spring/Spring.js.map +0 -0
  40. package/lib/commonjs/{values/animation → animation}/spring/functions/index.js +0 -0
  41. package/lib/commonjs/{values/animation → animation}/spring/functions/index.js.map +0 -0
  42. package/lib/commonjs/{values/animation → animation}/spring/functions/spring.js +0 -0
  43. package/lib/commonjs/{values/animation → animation}/spring/functions/spring.js.map +0 -0
  44. package/lib/commonjs/{values/animation → animation}/spring/index.js +0 -0
  45. package/lib/commonjs/{values/animation → animation}/spring/index.js.map +0 -0
  46. package/lib/commonjs/{values/animation → animation}/spring/runSpring.js +0 -0
  47. package/lib/commonjs/animation/spring/runSpring.js.map +1 -0
  48. package/lib/commonjs/{values/animation → animation}/spring/types.js +0 -0
  49. package/lib/commonjs/{values/animation → animation}/spring/types.js.map +0 -0
  50. package/lib/commonjs/{values/animation → animation}/spring/useSpring.js +0 -0
  51. package/lib/commonjs/animation/spring/useSpring.js.map +1 -0
  52. package/lib/commonjs/{values/animation → animation}/timing/Easing.js +0 -0
  53. package/lib/commonjs/{values/animation → animation}/timing/Easing.js.map +0 -0
  54. package/lib/commonjs/{values/animation → animation}/timing/createTiming.js +1 -1
  55. package/lib/commonjs/animation/timing/createTiming.js.map +1 -0
  56. package/lib/commonjs/{values/animation → animation}/timing/functions/bezier.js +0 -0
  57. package/lib/commonjs/{values/animation → animation}/timing/functions/bezier.js.map +0 -0
  58. package/lib/commonjs/{values/animation → animation}/timing/functions/getResolvedParams.js +0 -0
  59. package/lib/commonjs/{values/animation → animation}/timing/functions/getResolvedParams.js.map +0 -0
  60. package/lib/commonjs/{values/animation → animation}/timing/functions/index.js +0 -0
  61. package/lib/commonjs/{values/animation → animation}/timing/functions/index.js.map +0 -0
  62. package/lib/commonjs/{values/animation → animation}/timing/functions/timing.js +0 -0
  63. package/lib/commonjs/{values/animation → animation}/timing/functions/timing.js.map +1 -1
  64. package/lib/commonjs/{values/animation → animation}/timing/functions/types.js +0 -0
  65. package/lib/commonjs/{values/animation → animation}/timing/functions/types.js.map +0 -0
  66. package/lib/commonjs/{values/animation → animation}/timing/index.js +0 -0
  67. package/lib/commonjs/{values/animation → animation}/timing/index.js.map +0 -0
  68. package/lib/commonjs/{values/animation → animation}/timing/runTiming.js +0 -0
  69. package/lib/commonjs/animation/timing/runTiming.js.map +1 -0
  70. package/lib/commonjs/{values/animation → animation}/timing/useLoop.js +0 -0
  71. package/lib/commonjs/{values/animation → animation}/timing/useLoop.js.map +0 -0
  72. package/lib/commonjs/{values/animation → animation}/timing/useTiming.js +1 -1
  73. package/lib/commonjs/animation/timing/useTiming.js.map +1 -0
  74. package/lib/commonjs/{values/animation → animation}/types.js +0 -0
  75. package/lib/commonjs/{values/animation → animation}/types.js.map +0 -0
  76. package/lib/commonjs/index.js +13 -0
  77. package/lib/commonjs/index.js.map +1 -1
  78. package/lib/commonjs/renderer/components/colorFilters/BlendColor.js.map +1 -1
  79. package/lib/commonjs/renderer/components/imageFilters/InnerShadow.js +4 -2
  80. package/lib/commonjs/renderer/components/imageFilters/InnerShadow.js.map +1 -1
  81. package/lib/commonjs/renderer/components/imageFilters/RuntimeShader.js +37 -0
  82. package/lib/commonjs/renderer/components/imageFilters/RuntimeShader.js.map +1 -0
  83. package/lib/commonjs/renderer/components/imageFilters/index.js +13 -0
  84. package/lib/commonjs/renderer/components/imageFilters/index.js.map +1 -1
  85. package/lib/commonjs/renderer/components/shaders/Gradient.js +1 -1
  86. package/lib/commonjs/renderer/components/shaders/Gradient.js.map +1 -1
  87. package/lib/commonjs/renderer/components/shaders/Shader.js.map +1 -1
  88. package/lib/commonjs/renderer/processors/Rects.js +5 -15
  89. package/lib/commonjs/renderer/processors/Rects.js.map +1 -1
  90. package/lib/commonjs/renderer/processors/math/Matrix3.js +42 -63
  91. package/lib/commonjs/renderer/processors/math/Matrix3.js.map +1 -1
  92. package/lib/commonjs/renderer/processors/math/Vector.js +4 -5
  93. package/lib/commonjs/renderer/processors/math/Vector.js.map +1 -1
  94. package/lib/commonjs/skia/Color.js +14 -38
  95. package/lib/commonjs/skia/Color.js.map +1 -1
  96. package/lib/commonjs/skia/ImageFilter/ImageFilterFactory.js.map +1 -1
  97. package/lib/commonjs/skia/Matrix.js.map +1 -1
  98. package/lib/commonjs/skia/Shader/useShader.js +4 -1
  99. package/lib/commonjs/skia/Shader/useShader.js.map +1 -1
  100. package/lib/commonjs/skia/Skia.js +3 -45
  101. package/lib/commonjs/skia/Skia.js.map +1 -1
  102. package/lib/commonjs/skia/SkiaApi.js +4 -0
  103. package/lib/commonjs/skia/SkiaApi.js.map +1 -0
  104. package/lib/commonjs/values/api.js +4 -6
  105. package/lib/commonjs/values/api.js.map +1 -1
  106. package/lib/commonjs/values/api.web.js +18 -0
  107. package/lib/commonjs/values/api.web.js.map +1 -0
  108. package/lib/commonjs/values/index.js +0 -13
  109. package/lib/commonjs/values/index.js.map +1 -1
  110. package/lib/commonjs/values/web/RNSkAnimation.js +46 -0
  111. package/lib/commonjs/values/web/RNSkAnimation.js.map +1 -0
  112. package/lib/commonjs/values/web/RNSkClockValue.js +75 -0
  113. package/lib/commonjs/values/web/RNSkClockValue.js.map +1 -0
  114. package/lib/commonjs/values/web/RNSkDerivedValue.js +51 -0
  115. package/lib/commonjs/values/web/RNSkDerivedValue.js.map +1 -0
  116. package/lib/commonjs/values/web/RNSkReadonlyValue.js +45 -0
  117. package/lib/commonjs/values/web/RNSkReadonlyValue.js.map +1 -0
  118. package/lib/commonjs/values/web/RNSkValue.js +73 -0
  119. package/lib/commonjs/values/web/RNSkValue.js.map +1 -0
  120. package/lib/commonjs/values/web/api.js +31 -0
  121. package/lib/commonjs/values/web/api.js.map +1 -0
  122. package/lib/commonjs/values/web/index.js +19 -0
  123. package/lib/commonjs/values/web/index.js.map +1 -0
  124. package/lib/commonjs/views/SkiaView.js +13 -10
  125. package/lib/commonjs/views/SkiaView.js.map +1 -1
  126. package/lib/commonjs/views/api.js +11 -0
  127. package/lib/commonjs/views/api.js.map +1 -0
  128. package/lib/commonjs/views/types.js.map +1 -1
  129. package/lib/module/{values/animation → animation}/decay/decay.js +0 -0
  130. package/lib/module/{values/animation → animation}/decay/decay.js.map +0 -0
  131. package/lib/module/{values/animation → animation}/decay/index.js +0 -0
  132. package/lib/module/{values/animation → animation}/decay/index.js.map +0 -0
  133. package/lib/module/{values/animation → animation}/decay/runDecay.js +1 -1
  134. package/lib/module/animation/decay/runDecay.js.map +1 -0
  135. package/lib/module/{values/animation → animation}/decay/types.js +0 -0
  136. package/lib/module/{values/animation → animation}/decay/types.js.map +0 -0
  137. package/lib/module/{values/animation → animation}/functions/index.js +0 -0
  138. package/lib/module/{values/animation → animation}/functions/index.js.map +0 -0
  139. package/lib/module/animation/functions/interpolate.js +132 -0
  140. package/lib/module/animation/functions/interpolate.js.map +1 -0
  141. package/lib/module/animation/functions/interpolateColors.js +23 -0
  142. package/lib/module/animation/functions/interpolateColors.js.map +1 -0
  143. package/lib/module/{values/animation → animation}/index.js +0 -0
  144. package/lib/module/{values/animation → animation}/index.js.map +0 -0
  145. package/lib/module/{values/animation → animation}/spring/Spring.js +0 -0
  146. package/lib/module/{values/animation → animation}/spring/Spring.js.map +0 -0
  147. package/lib/module/{values/animation → animation}/spring/functions/index.js +0 -0
  148. package/lib/module/{values/animation → animation}/spring/functions/index.js.map +0 -0
  149. package/lib/module/{values/animation → animation}/spring/functions/spring.js +0 -0
  150. package/lib/module/{values/animation → animation}/spring/functions/spring.js.map +0 -0
  151. package/lib/module/{values/animation → animation}/spring/index.js +0 -0
  152. package/lib/module/{values/animation → animation}/spring/index.js.map +0 -0
  153. package/lib/module/{values/animation → animation}/spring/runSpring.js +0 -0
  154. package/lib/module/animation/spring/runSpring.js.map +1 -0
  155. package/lib/module/{values/animation → animation}/spring/types.js +0 -0
  156. package/lib/module/{values/animation → animation}/spring/types.js.map +0 -0
  157. package/lib/module/{values/animation → animation}/spring/useSpring.js +0 -0
  158. package/lib/module/animation/spring/useSpring.js.map +1 -0
  159. package/lib/module/{values/animation → animation}/timing/Easing.js +0 -0
  160. package/lib/module/{values/animation → animation}/timing/Easing.js.map +0 -0
  161. package/lib/module/{values/animation → animation}/timing/createTiming.js +1 -1
  162. package/lib/module/animation/timing/createTiming.js.map +1 -0
  163. package/lib/module/{values/animation → animation}/timing/functions/bezier.js +0 -0
  164. package/lib/module/{values/animation → animation}/timing/functions/bezier.js.map +0 -0
  165. package/lib/module/{values/animation → animation}/timing/functions/getResolvedParams.js +0 -0
  166. package/lib/module/{values/animation → animation}/timing/functions/getResolvedParams.js.map +0 -0
  167. package/lib/module/{values/animation → animation}/timing/functions/index.js +0 -0
  168. package/lib/module/{values/animation → animation}/timing/functions/index.js.map +0 -0
  169. package/lib/module/{values/animation → animation}/timing/functions/timing.js +0 -0
  170. package/lib/module/{values/animation → animation}/timing/functions/timing.js.map +1 -1
  171. package/lib/module/{values/animation → animation}/timing/functions/types.js +0 -0
  172. package/lib/module/{values/animation → animation}/timing/functions/types.js.map +0 -0
  173. package/lib/module/{values/animation → animation}/timing/index.js +0 -0
  174. package/lib/module/{values/animation → animation}/timing/index.js.map +0 -0
  175. package/lib/module/{values/animation → animation}/timing/runTiming.js +0 -0
  176. package/lib/module/animation/timing/runTiming.js.map +1 -0
  177. package/lib/module/{values/animation → animation}/timing/useLoop.js +0 -0
  178. package/lib/module/{values/animation → animation}/timing/useLoop.js.map +0 -0
  179. package/lib/module/{values/animation → animation}/timing/useTiming.js +1 -1
  180. package/lib/module/animation/timing/useTiming.js.map +1 -0
  181. package/lib/module/{values/animation → animation}/types.js +0 -0
  182. package/lib/module/{values/animation → animation}/types.js.map +0 -0
  183. package/lib/module/index.js +1 -0
  184. package/lib/module/index.js.map +1 -1
  185. package/lib/module/renderer/components/colorFilters/BlendColor.js.map +1 -1
  186. package/lib/module/renderer/components/imageFilters/InnerShadow.js +3 -2
  187. package/lib/module/renderer/components/imageFilters/InnerShadow.js.map +1 -1
  188. package/lib/module/renderer/components/imageFilters/RuntimeShader.js +19 -0
  189. package/lib/module/renderer/components/imageFilters/RuntimeShader.js.map +1 -0
  190. package/lib/module/renderer/components/imageFilters/index.js +1 -0
  191. package/lib/module/renderer/components/imageFilters/index.js.map +1 -1
  192. package/lib/module/renderer/components/shaders/Gradient.js +2 -2
  193. package/lib/module/renderer/components/shaders/Gradient.js.map +1 -1
  194. package/lib/module/renderer/components/shaders/Shader.js.map +1 -1
  195. package/lib/module/renderer/processors/Rects.js +4 -15
  196. package/lib/module/renderer/processors/Rects.js.map +1 -1
  197. package/lib/module/renderer/processors/math/Matrix3.js +52 -72
  198. package/lib/module/renderer/processors/math/Matrix3.js.map +1 -1
  199. package/lib/module/renderer/processors/math/Vector.js +3 -5
  200. package/lib/module/renderer/processors/math/Vector.js.map +1 -1
  201. package/lib/module/skia/Color.js +9 -25
  202. package/lib/module/skia/Color.js.map +1 -1
  203. package/lib/module/skia/ImageFilter/ImageFilterFactory.js.map +1 -1
  204. package/lib/module/skia/Matrix.js.map +1 -1
  205. package/lib/module/skia/Shader/useShader.js +4 -1
  206. package/lib/module/skia/Shader/useShader.js.map +1 -1
  207. package/lib/module/skia/Skia.js +2 -46
  208. package/lib/module/skia/Skia.js.map +1 -1
  209. package/lib/module/skia/SkiaApi.js +2 -0
  210. package/lib/module/skia/SkiaApi.js.map +1 -0
  211. package/lib/module/values/api.js +4 -6
  212. package/lib/module/values/api.js.map +1 -1
  213. package/lib/module/values/api.web.js +7 -0
  214. package/lib/module/values/api.web.js.map +1 -0
  215. package/lib/module/values/index.js +0 -1
  216. package/lib/module/values/index.js.map +1 -1
  217. package/lib/module/values/web/RNSkAnimation.js +36 -0
  218. package/lib/module/values/web/RNSkAnimation.js.map +1 -0
  219. package/lib/module/values/web/RNSkClockValue.js +65 -0
  220. package/lib/module/values/web/RNSkClockValue.js.map +1 -0
  221. package/lib/module/values/web/RNSkDerivedValue.js +41 -0
  222. package/lib/module/values/web/RNSkDerivedValue.js.map +1 -0
  223. package/lib/module/values/web/RNSkReadonlyValue.js +36 -0
  224. package/lib/module/values/web/RNSkReadonlyValue.js.map +1 -0
  225. package/lib/module/values/web/RNSkValue.js +63 -0
  226. package/lib/module/values/web/RNSkValue.js.map +1 -0
  227. package/lib/module/values/web/api.js +19 -0
  228. package/lib/module/values/web/api.js.map +1 -0
  229. package/lib/module/values/web/index.js +2 -0
  230. package/lib/module/values/web/index.js.map +1 -0
  231. package/lib/module/views/SkiaView.js +1 -3
  232. package/lib/module/views/SkiaView.js.map +1 -1
  233. package/lib/module/views/api.js +4 -0
  234. package/lib/module/views/api.js.map +1 -0
  235. package/lib/module/views/types.js.map +1 -1
  236. package/lib/typescript/src/{values/animation → animation}/decay/decay.d.ts +0 -0
  237. package/lib/typescript/src/{values/animation → animation}/decay/index.d.ts +0 -0
  238. package/lib/typescript/src/{values/animation → animation}/decay/runDecay.d.ts +2 -2
  239. package/lib/typescript/src/{values/animation → animation}/decay/types.d.ts +1 -1
  240. package/lib/typescript/src/{values/animation → animation}/functions/index.d.ts +0 -0
  241. package/lib/typescript/src/animation/functions/interpolate.d.ts +11 -0
  242. package/lib/typescript/src/animation/functions/interpolateColors.d.ts +3 -0
  243. package/lib/typescript/src/{values/animation → animation}/index.d.ts +0 -0
  244. package/lib/typescript/src/{values/animation → animation}/spring/Spring.d.ts +0 -0
  245. package/lib/typescript/src/{values/animation → animation}/spring/functions/index.d.ts +0 -0
  246. package/lib/typescript/src/{values/animation → animation}/spring/functions/spring.d.ts +0 -0
  247. package/lib/typescript/src/{values/animation → animation}/spring/index.d.ts +0 -0
  248. package/lib/typescript/src/{values/animation → animation}/spring/runSpring.d.ts +1 -1
  249. package/lib/typescript/src/{values/animation → animation}/spring/types.d.ts +0 -0
  250. package/lib/typescript/src/{values/animation → animation}/spring/useSpring.d.ts +1 -1
  251. package/lib/typescript/src/{values/animation → animation}/timing/Easing.d.ts +0 -0
  252. package/lib/typescript/src/{values/animation → animation}/timing/createTiming.d.ts +2 -2
  253. package/lib/typescript/src/{values/animation → animation}/timing/functions/bezier.d.ts +0 -0
  254. package/lib/typescript/src/{values/animation → animation}/timing/functions/getResolvedParams.d.ts +0 -0
  255. package/lib/typescript/src/{values/animation → animation}/timing/functions/index.d.ts +0 -0
  256. package/lib/typescript/src/{values/animation → animation}/timing/functions/timing.d.ts +1 -1
  257. package/lib/typescript/src/{values/animation → animation}/timing/functions/types.d.ts +0 -0
  258. package/lib/typescript/src/{values/animation → animation}/timing/index.d.ts +0 -0
  259. package/lib/typescript/src/{values/animation → animation}/timing/runTiming.d.ts +1 -1
  260. package/lib/typescript/src/{values/animation → animation}/timing/useLoop.d.ts +0 -0
  261. package/lib/typescript/src/{values/animation → animation}/timing/useTiming.d.ts +1 -1
  262. package/lib/typescript/src/{values/animation → animation}/types.d.ts +0 -0
  263. package/lib/typescript/src/index.d.ts +1 -0
  264. package/lib/typescript/src/renderer/components/colorFilters/BlendColor.d.ts +1 -1
  265. package/lib/typescript/src/renderer/components/imageFilters/RuntimeShader.d.ts +7 -0
  266. package/lib/typescript/src/renderer/components/imageFilters/index.d.ts +1 -0
  267. package/lib/typescript/src/renderer/components/shaders/Gradient.d.ts +1 -1
  268. package/lib/typescript/src/renderer/components/shaders/Shader.d.ts +2 -2
  269. package/lib/typescript/src/renderer/components/shapes/Circle.d.ts +1 -4
  270. package/lib/typescript/src/renderer/processors/Rects.d.ts +9 -41
  271. package/lib/typescript/src/renderer/processors/math/Matrix3.d.ts +1 -5
  272. package/lib/typescript/src/renderer/processors/math/Vector.d.ts +5 -17
  273. package/lib/typescript/src/skia/Color.d.ts +8 -9
  274. package/lib/typescript/src/skia/ImageFilter/ImageFilterFactory.d.ts +16 -0
  275. package/lib/typescript/src/skia/Matrix.d.ts +7 -1
  276. package/lib/typescript/src/skia/RuntimeEffect/RuntimeEffect.d.ts +2 -1
  277. package/lib/typescript/src/skia/RuntimeEffect/RuntimeEffectFactory.d.ts +2 -2
  278. package/lib/typescript/src/skia/Shader/useShader.d.ts +1 -1
  279. package/lib/typescript/src/skia/Skia.d.ts +28 -95
  280. package/lib/typescript/src/skia/SkiaApi.d.ts +71 -0
  281. package/lib/typescript/src/skia/Surface/Surface.d.ts +1 -1
  282. package/lib/typescript/src/skia/Surface/SurfaceFactory.d.ts +2 -2
  283. package/lib/typescript/src/values/api.d.ts +2 -25
  284. package/lib/typescript/src/values/api.web.d.ts +2 -0
  285. package/lib/typescript/src/values/index.d.ts +0 -1
  286. package/lib/typescript/src/values/types.d.ts +24 -1
  287. package/lib/typescript/src/values/web/RNSkAnimation.d.ts +9 -0
  288. package/lib/typescript/src/values/web/RNSkClockValue.d.ts +13 -0
  289. package/lib/typescript/src/values/web/RNSkDerivedValue.d.ts +9 -0
  290. package/lib/typescript/src/values/web/RNSkReadonlyValue.d.ts +11 -0
  291. package/lib/typescript/src/values/web/RNSkValue.d.ts +14 -0
  292. package/lib/typescript/src/values/web/api.d.ts +2 -0
  293. package/lib/typescript/src/values/web/index.d.ts +1 -0
  294. package/lib/typescript/src/views/SkiaView.d.ts +3 -36
  295. package/lib/typescript/src/views/api.d.ts +5 -0
  296. package/lib/typescript/src/views/types.d.ts +32 -0
  297. package/package.json +2 -2
  298. package/src/{values/animation → animation}/decay/decay.ts +0 -0
  299. package/src/{values/animation → animation}/decay/index.ts +0 -0
  300. package/src/{values/animation → animation}/decay/runDecay.ts +2 -2
  301. package/src/{values/animation → animation}/decay/types.ts +1 -1
  302. package/src/{values/animation → animation}/functions/index.ts +0 -0
  303. package/src/animation/functions/interpolate.ts +182 -0
  304. package/src/animation/functions/interpolateColors.ts +58 -0
  305. package/src/{values/animation → animation}/index.ts +0 -0
  306. package/src/{values/animation → animation}/spring/Spring.ts +0 -0
  307. package/src/{values/animation → animation}/spring/functions/index.ts +0 -0
  308. package/src/{values/animation → animation}/spring/functions/spring.ts +0 -0
  309. package/src/{values/animation → animation}/spring/index.ts +0 -0
  310. package/src/{values/animation → animation}/spring/runSpring.ts +1 -1
  311. package/src/{values/animation → animation}/spring/types.ts +0 -0
  312. package/src/{values/animation → animation}/spring/useSpring.ts +1 -1
  313. package/src/{values/animation → animation}/timing/Easing.ts +0 -0
  314. package/src/{values/animation → animation}/timing/createTiming.ts +2 -2
  315. package/src/{values/animation → animation}/timing/functions/__tests__/timing.spec.ts +0 -0
  316. package/src/{values/animation → animation}/timing/functions/bezier.ts +0 -0
  317. package/src/{values/animation → animation}/timing/functions/getResolvedParams.ts +0 -0
  318. package/src/{values/animation → animation}/timing/functions/index.ts +0 -0
  319. package/src/{values/animation → animation}/timing/functions/timing.ts +1 -1
  320. package/src/{values/animation → animation}/timing/functions/types.ts +0 -0
  321. package/src/{values/animation → animation}/timing/index.ts +0 -0
  322. package/src/{values/animation → animation}/timing/runTiming.ts +1 -1
  323. package/src/{values/animation → animation}/timing/useLoop.ts +0 -0
  324. package/src/{values/animation → animation}/timing/useTiming.ts +2 -2
  325. package/src/{values/animation → animation}/types.ts +0 -0
  326. package/src/index.ts +1 -0
  327. package/src/renderer/components/colorFilters/BlendColor.tsx +1 -1
  328. package/src/renderer/components/imageFilters/InnerShadow.tsx +4 -2
  329. package/src/renderer/components/imageFilters/RuntimeShader.tsx +23 -0
  330. package/src/renderer/components/imageFilters/index.ts +1 -0
  331. package/src/renderer/components/shaders/Gradient.ts +2 -4
  332. package/src/renderer/components/shaders/Shader.tsx +2 -2
  333. package/src/renderer/processors/Rects.ts +6 -12
  334. package/src/renderer/processors/math/Matrix3.ts +24 -105
  335. package/src/renderer/processors/math/Vector.ts +3 -2
  336. package/src/skia/Color.ts +13 -27
  337. package/src/skia/ImageFilter/ImageFilterFactory.ts +20 -0
  338. package/src/skia/Matrix.ts +8 -1
  339. package/src/skia/RuntimeEffect/RuntimeEffect.ts +3 -1
  340. package/src/skia/RuntimeEffect/RuntimeEffectFactory.ts +2 -2
  341. package/src/skia/Shader/useShader.ts +4 -1
  342. package/src/skia/Skia.ts +4 -126
  343. package/src/skia/SkiaApi.ts +86 -0
  344. package/src/skia/Surface/Surface.ts +1 -1
  345. package/src/skia/Surface/SurfaceFactory.ts +2 -2
  346. package/src/values/api.ts +3 -42
  347. package/src/values/api.web.ts +5 -0
  348. package/src/values/index.ts +0 -1
  349. package/src/values/types.ts +30 -1
  350. package/src/values/web/RNSkAnimation.ts +33 -0
  351. package/src/values/web/RNSkClockValue.ts +58 -0
  352. package/src/values/web/RNSkDerivedValue.ts +38 -0
  353. package/src/values/web/RNSkReadonlyValue.ts +32 -0
  354. package/src/values/web/RNSkValue.ts +57 -0
  355. package/src/values/web/__tests__/RNSkAnimation.spec.ts +21 -0
  356. package/src/values/web/__tests__/RNSkDerivedValue.spec.ts +15 -0
  357. package/src/values/web/__tests__/RNSkReadonlyValue.spec.ts +8 -0
  358. package/src/values/web/__tests__/RNSkValue.spec.ts +11 -0
  359. package/src/values/web/api.ts +33 -0
  360. package/src/values/web/index.ts +1 -0
  361. package/src/views/SkiaView.tsx +3 -49
  362. package/src/views/api.ts +7 -0
  363. package/src/views/types.ts +40 -0
  364. package/lib/commonjs/values/animation/decay/runDecay.js.map +0 -1
  365. package/lib/commonjs/values/animation/functions/interpolate.js +0 -139
  366. package/lib/commonjs/values/animation/functions/interpolate.js.map +0 -1
  367. package/lib/commonjs/values/animation/functions/interpolateColors.js +0 -47
  368. package/lib/commonjs/values/animation/functions/interpolateColors.js.map +0 -1
  369. package/lib/commonjs/values/animation/spring/runSpring.js.map +0 -1
  370. package/lib/commonjs/values/animation/spring/useSpring.js.map +0 -1
  371. package/lib/commonjs/values/animation/timing/createTiming.js.map +0 -1
  372. package/lib/commonjs/values/animation/timing/runTiming.js.map +0 -1
  373. package/lib/commonjs/values/animation/timing/useTiming.js.map +0 -1
  374. package/lib/module/values/animation/decay/runDecay.js.map +0 -1
  375. package/lib/module/values/animation/functions/interpolate.js +0 -132
  376. package/lib/module/values/animation/functions/interpolate.js.map +0 -1
  377. package/lib/module/values/animation/functions/interpolateColors.js +0 -32
  378. package/lib/module/values/animation/functions/interpolateColors.js.map +0 -1
  379. package/lib/module/values/animation/spring/runSpring.js.map +0 -1
  380. package/lib/module/values/animation/spring/useSpring.js.map +0 -1
  381. package/lib/module/values/animation/timing/createTiming.js.map +0 -1
  382. package/lib/module/values/animation/timing/runTiming.js.map +0 -1
  383. package/lib/module/values/animation/timing/useTiming.js.map +0 -1
  384. package/lib/typescript/scripts/install-npm.d.ts +0 -1
  385. package/lib/typescript/src/values/animation/functions/interpolate.d.ts +0 -7
  386. package/lib/typescript/src/values/animation/functions/interpolateColors.d.ts +0 -3
  387. package/src/values/animation/functions/interpolate.ts +0 -169
  388. package/src/values/animation/functions/interpolateColors.ts +0 -62
@@ -39,6 +39,9 @@ add_library(
39
39
  "${PROJECT_SOURCE_DIR}/cpp/rnskia/RNSkManager.cpp"
40
40
  "${PROJECT_SOURCE_DIR}/cpp/rnskia/RNSkDrawView.cpp"
41
41
  "${PROJECT_SOURCE_DIR}/cpp/rnskia/RNSkDispatchQueue.cpp"
42
+
43
+
44
+ "${PROJECT_SOURCE_DIR}/cpp/api/third_party/CSSColorParser.cpp"
42
45
 
43
46
  )
44
47
 
@@ -175,7 +175,7 @@ dependencies {
175
175
  //noinspection GradleDynamicVersion
176
176
  extractJNI("com.facebook.fbjni:fbjni:0.2.2")
177
177
 
178
- def rnAAR = fileTree("${rootDir}/../node_modules/react-native/android").matching({ it.include "**/**/*.aar" }).singleFile
178
+ def rnAAR = fileTree("${nodeModules}/react-native/android").matching({ it.include "**/**/*.aar" }).singleFile
179
179
  extractJNI(files(rnAAR))
180
180
  }
181
181
 
@@ -39,6 +39,7 @@
39
39
  #include "JsiSkContourMeasureIter.h"
40
40
  #include "JsiSkPictureRecorder.h"
41
41
  #include "JsiSkPictureFactory.h"
42
+ #include "JsiSkRuntimeShaderBuilder.h"
42
43
  #include "JsiSkColor.h"
43
44
 
44
45
  namespace RNSkia
@@ -65,10 +66,11 @@ namespace RNSkia
65
66
  installFunction("XYWHRect", JsiSkRect::createCtor(context));
66
67
  installFunction("RRectXY", JsiSkRRect::createCtor(context));
67
68
  installFunction("Point", JsiSkPoint::createCtor(context));
69
+ installFunction("RuntimeShaderBuilder", JsiSkRuntimeShaderBuilder::createCtor(context));
68
70
  installFunction("ContourMeasureIter", JsiSkContourMeasureIter::createCtor(context));
69
71
  installFunction("MakeVertices", JsiSkVertices::createCtor(context));
70
72
  installFunction("PictureRecorder", JsiSkPictureRecorder::createCtor(context));
71
- installFunction("parseColorString", JsiSkColor::createCtor());
73
+ installFunction("Color", JsiSkColor::createCtor());
72
74
 
73
75
  // Static members
74
76
  installReadonlyProperty("FontMgr",
@@ -278,7 +278,7 @@ public:
278
278
  auto colorsSize = jsiColors.size(runtime);
279
279
  colors.reserve(colorsSize);
280
280
  for (int i = 0; i < colorsSize; i++) {
281
- SkColor color = jsiColors.getValueAtIndex(runtime, i).asNumber();
281
+ SkColor color = JsiSkColor::fromValue(runtime, jsiColors.getValueAtIndex(runtime, i));
282
282
  colors.push_back(color);
283
283
  }
284
284
  }
@@ -26,6 +26,35 @@ namespace RNSkia {
26
26
 
27
27
  ~JsiSkColor() {}
28
28
 
29
+ static jsi::Object toValue(jsi::Runtime &runtime, SkColor color) {
30
+ auto result = runtime
31
+ .global()
32
+ .getPropertyAsFunction(runtime, "Float32Array")
33
+ .callAsConstructor(runtime, 4)
34
+ .getObject(runtime);
35
+ jsi::ArrayBuffer buffer = result
36
+ .getProperty(runtime, jsi::PropNameID::forAscii(runtime, "buffer"))
37
+ .asObject(runtime)
38
+ .getArrayBuffer(runtime);
39
+ auto bfrPtr = reinterpret_cast<float *>(buffer.data(runtime));
40
+ auto color4f = SkColor4f::FromColor(color).array();
41
+ std::copy(color4f.begin(), color4f.end(), bfrPtr);
42
+ return result;
43
+ }
44
+
45
+ static SkColor fromValue(jsi::Runtime &runtime, const jsi::Value &obj) {
46
+ const auto& object = obj.asObject(runtime);
47
+ jsi::ArrayBuffer buffer = object
48
+ .getProperty(runtime, jsi::PropNameID::forAscii(runtime, "buffer"))
49
+ .asObject(runtime)
50
+ .getArrayBuffer(runtime);
51
+ auto bfrPtr = reinterpret_cast<float *>(buffer.data(runtime));
52
+ if (bfrPtr[0] > 1 || bfrPtr[1] > 1 || bfrPtr[2] > 1 || bfrPtr[3] > 1) {
53
+ return SK_ColorBLACK;
54
+ }
55
+ return SkColorSetARGB(bfrPtr[3] * 255, bfrPtr[0] * 255, bfrPtr[1] * 255, bfrPtr[2] * 255);
56
+ }
57
+
29
58
  /**
30
59
  * Creates the function for construction a new instance of the SkColor
31
60
  * wrapper
@@ -35,14 +64,19 @@ namespace RNSkia {
35
64
  static const jsi::HostFunctionType
36
65
  createCtor() {
37
66
  return JSI_HOST_FUNCTION_LAMBDA {
38
- auto text = arguments[0].asString(runtime).utf8(runtime);
39
- auto color = CSSColorParser::parse(text);
40
- if (color.a == -1.0f) {
41
- return jsi::Value::undefined();
67
+ if (arguments[0].isNumber()) {
68
+ return JsiSkColor::toValue(runtime, arguments[0].getNumber());
69
+ } else if(arguments[0].isString()) {
70
+ auto text = arguments[0].asString(runtime).utf8(runtime);
71
+ auto color = CSSColorParser::parse(text);
72
+ if (color.a == -1.0f) {
73
+ return JsiSkColor::toValue(runtime, SK_ColorBLACK);
74
+ }
75
+ return JsiSkColor::toValue(runtime, SkColorSetARGB(color.a * 255, color.r, color.g, color.b));
76
+ } else if (arguments[0].isObject()) {
77
+ return arguments[0].getObject(runtime);
42
78
  }
43
- int a = round(color.a * 255);
44
- // Because JS numbers are unsigned we need to do this conversion
45
- return jsi::Value(static_cast<double>(SkColorSetARGB(a, color.r, color.g, color.b) >> 0));
79
+ return jsi::Value::undefined();
46
80
  };
47
81
  }
48
82
  };
@@ -2,6 +2,7 @@
2
2
 
3
3
  #include "JsiSkColorFilter.h"
4
4
  #include "JsiSkHostObjects.h"
5
+ #include "JsiSkColor.h"
5
6
  #include <jsi/jsi.h>
6
7
  #include <utility>
7
8
 
@@ -34,7 +35,7 @@ public:
34
35
  }
35
36
 
36
37
  JSI_HOST_FUNCTION(MakeBlend) {
37
- auto color = arguments[0].asNumber();
38
+ auto color = JsiSkColor::fromValue(runtime, arguments[0]);
38
39
  SkBlendMode blend = (SkBlendMode)arguments[1].asNumber();
39
40
  // Return the newly constructed object
40
41
  return jsi::Object::createFromHostObject(
@@ -5,13 +5,11 @@
5
5
 
6
6
  #include <jsi/jsi.h>
7
7
 
8
- #include "JsiSkColorFilter.h"
9
8
  #include "JsiSkHostObjects.h"
10
9
 
11
10
  #pragma clang diagnostic push
12
11
  #pragma clang diagnostic ignored "-Wdocumentation"
13
12
 
14
- #include <SkColorFilter.h>
15
13
  #include <SkImageFilters.h>
16
14
 
17
15
  #pragma clang diagnostic pop
@@ -7,11 +7,12 @@
7
7
 
8
8
  #include "JsiSkHostObjects.h"
9
9
  #include "JsiSkImageFilter.h"
10
+ #include "JsiSkRuntimeShaderBuilder.h"
10
11
 
11
12
  #pragma clang diagnostic push
12
13
  #pragma clang diagnostic ignored "-Wdocumentation"
13
14
 
14
- #include <SkColorFilter.h>
15
+ #include <SkImageFilter.h>
15
16
 
16
17
  #pragma clang diagnostic pop
17
18
 
@@ -123,7 +124,7 @@ public:
123
124
  auto dy = arguments[1].asNumber();
124
125
  auto sigmaX = arguments[2].asNumber();
125
126
  auto sigmaY = arguments[3].asNumber();
126
- auto color = arguments[4].asNumber();
127
+ auto color = JsiSkColor::fromValue(runtime, arguments[4]);
127
128
  sk_sp<SkImageFilter> input;
128
129
  if (!arguments[5].isNull() && !arguments[5].isUndefined()) {
129
130
  input = JsiSkImageFilter::fromValue(runtime, arguments[5]);
@@ -144,7 +145,7 @@ public:
144
145
  auto dy = arguments[1].asNumber();
145
146
  auto sigmaX = arguments[2].asNumber();
146
147
  auto sigmaY = arguments[3].asNumber();
147
- auto color = arguments[4].asNumber();
148
+ auto color = JsiSkColor::fromValue(runtime, arguments[4]);
148
149
  sk_sp<SkImageFilter> input;
149
150
  if (!arguments[5].isNull() && !arguments[5].isUndefined()) {
150
151
  input = JsiSkImageFilter::fromValue(runtime, arguments[5]);
@@ -195,20 +196,39 @@ public:
195
196
  getContext(), SkImageFilters::Dilate(rx, ry, std::move(input), cropRect)));
196
197
  }
197
198
 
198
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeBlur),
199
- JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeOffset),
200
- JSI_EXPORT_FUNC(JsiSkImageFilterFactory,
201
- MakeColorFilter),
202
- JSI_EXPORT_FUNC(JsiSkImageFilterFactory,
203
- MakeShader),
204
- JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeDisplacementMap),
205
- JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeCompose),
206
- JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeErode),
207
- JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeDilate),
208
- JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeBlend),
209
- JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeDropShadow),
210
- JSI_EXPORT_FUNC(JsiSkImageFilterFactory,
211
- MakeDropShadowOnly))
199
+ JSI_HOST_FUNCTION(MakeRuntimeShader) {
200
+ auto rtb = JsiSkRuntimeShaderBuilder::fromValue(runtime, arguments[0]);
201
+
202
+ const char* childName = nullptr;
203
+ if (!arguments[1].isNull() && !arguments[1].isUndefined()) {
204
+ childName = arguments[1].asString(runtime).utf8(runtime).c_str();
205
+ }
206
+
207
+ sk_sp<SkImageFilter> input;
208
+ if (!arguments[2].isNull() && !arguments[2].isUndefined()) {
209
+ input = JsiSkImageFilter::fromValue(runtime, arguments[2]);
210
+ }
211
+ return jsi::Object::createFromHostObject(
212
+ runtime,
213
+ std::make_shared<JsiSkImageFilter>(
214
+ getContext(), SkImageFilters::RuntimeShader(*rtb, childName, std::move(input)))
215
+ );
216
+ }
217
+
218
+ JSI_EXPORT_FUNCTIONS(
219
+ JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeBlur),
220
+ JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeOffset),
221
+ JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeColorFilter),
222
+ JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeShader),
223
+ JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeDisplacementMap),
224
+ JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeCompose),
225
+ JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeErode),
226
+ JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeDilate),
227
+ JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeBlend),
228
+ JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeDropShadow),
229
+ JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeDropShadowOnly),
230
+ JSI_EXPORT_FUNC(JsiSkImageFilterFactory, MakeRuntimeShader)
231
+ )
212
232
 
213
233
  JsiSkImageFilterFactory(std::shared_ptr<RNSkPlatformContext> context)
214
234
  : JsiSkHostObject(std::move(context)) {}
@@ -25,9 +25,51 @@ public:
25
25
  : JsiSkWrappingSharedPtrHostObject<SkMatrix>(
26
26
  context, std::make_shared<SkMatrix>(std::move(m))) {}
27
27
 
28
+
29
+ JSI_HOST_FUNCTION(preConcat) {
30
+ auto m3 = JsiSkMatrix::fromValue(runtime, arguments[0]);
31
+ getObject()->preConcat(*m3);
32
+ return jsi::Value::undefined();
33
+ }
34
+
35
+ JSI_HOST_FUNCTION(preTranslate) {
36
+ auto x = arguments[0].asNumber();
37
+ auto y = arguments[1].asNumber();
38
+ getObject()->preTranslate(x, y);
39
+ return jsi::Value::undefined();
40
+ }
41
+
42
+ JSI_HOST_FUNCTION(preScale) {
43
+ auto x = arguments[0].asNumber();
44
+ auto y = arguments[1].asNumber();
45
+ getObject()->preScale(x, y);
46
+ return jsi::Value::undefined();
47
+ }
48
+
49
+ JSI_HOST_FUNCTION(preSkew) {
50
+ auto x = arguments[0].asNumber();
51
+ auto y = arguments[1].asNumber();
52
+ getObject()->preSkew(x, y);
53
+ return jsi::Value::undefined();
54
+ }
55
+
56
+ JSI_HOST_FUNCTION(preRotate) {
57
+ auto a = arguments[0].asNumber();
58
+ getObject()->preRotate(a);
59
+ return jsi::Value::undefined();
60
+ }
61
+
62
+ JSI_EXPORT_FUNCTIONS(
63
+ JSI_EXPORT_FUNC(JsiSkMatrix, preConcat),
64
+ JSI_EXPORT_FUNC(JsiSkMatrix, preTranslate),
65
+ JSI_EXPORT_FUNC(JsiSkMatrix, preScale),
66
+ JSI_EXPORT_FUNC(JsiSkMatrix, preSkew),
67
+ JSI_EXPORT_FUNC(JsiSkMatrix, preRotate),
68
+ )
69
+
28
70
  /**
29
- Returns the underlying object from a host object of this type
30
- */
71
+ * Returns the underlying object from a host object of this type
72
+ */
31
73
  static std::shared_ptr<SkMatrix> fromValue(jsi::Runtime &runtime,
32
74
  const jsi::Value &obj) {
33
75
  const auto& object = obj.asObject(runtime);
@@ -8,8 +8,10 @@
8
8
  #include <JsiSkHostObjects.h>
9
9
  #include <JsiSkImageFilter.h>
10
10
  #include <JsiSkMaskFilter.h>
11
+ #include <JsiSkColorFilter.h>
11
12
  #include <JsiSkPathEffect.h>
12
13
  #include <JsiSkShader.h>
14
+ #include <JsiSkColor.h>
13
15
 
14
16
  #pragma clang diagnostic push
15
17
  #pragma clang diagnostic ignored "-Wdocumentation"
@@ -38,7 +40,7 @@ public:
38
40
  }
39
41
 
40
42
  JSI_HOST_FUNCTION(getColor) {
41
- return static_cast<double>(getObject()->getColor());
43
+ return JsiSkColor::toValue(runtime, getObject()->getColor());
42
44
  }
43
45
 
44
46
  JSI_HOST_FUNCTION(getStrokeCap) {
@@ -58,7 +60,7 @@ public:
58
60
  }
59
61
 
60
62
  JSI_HOST_FUNCTION(setColor) {
61
- SkColor color = arguments[0].asNumber();
63
+ SkColor color = JsiSkColor::fromValue(runtime, arguments[0]);
62
64
  getObject()->setColor(color);
63
65
  return jsi::Value::undefined();
64
66
  }
@@ -90,11 +92,6 @@ public:
90
92
  case 1:
91
93
  getObject()->setStyle(SkPaint::kStroke_Style);
92
94
  break;
93
- // This API is expected to be deprecated
94
- // https://github.com/flutter/flutter/issues/5912
95
- // case 2:
96
- // getObject()->setStyle(SkPaint::kStrokeAndFill_Style);
97
- // break;
98
95
  }
99
96
  return jsi::Value::undefined();
100
97
  }
@@ -35,6 +35,12 @@ namespace RNSkia
35
35
  : public JsiSkWrappingSkPtrHostObject<SkRuntimeEffect>
36
36
  {
37
37
  public:
38
+
39
+ static sk_sp<SkRuntimeEffect> fromValue(jsi::Runtime &runtime, const jsi::Value &obj) {
40
+ const auto& object = obj.asObject(runtime);
41
+ return object.asHostObject<JsiSkRuntimeEffect>(runtime)->getObject();
42
+ }
43
+
38
44
  JSI_HOST_FUNCTION(makeShader)
39
45
  {
40
46
  auto uniforms = castUniforms(runtime, arguments[0]);
@@ -213,5 +219,6 @@ namespace RNSkia
213
219
  su.slot = (int)(u.offset / sizeof(float));
214
220
  return su;
215
221
  }
222
+
216
223
  };
217
224
  } // namespace RNSkia
@@ -7,7 +7,6 @@
7
7
  #include <jsi/jsi.h>
8
8
 
9
9
  #include "JsiSkRuntimeEffect.h"
10
- #include "JsiSkColorFilter.h"
11
10
  #include "JsiSkHostObjects.h"
12
11
 
13
12
  namespace RNSkia {
@@ -32,7 +31,9 @@ public:
32
31
  runtime, std::make_shared<JsiSkRuntimeEffect>(getContext(), std::move(effect)));
33
32
  }
34
33
 
35
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkRuntimeEffectFactory, Make))
34
+ JSI_EXPORT_FUNCTIONS(
35
+ JSI_EXPORT_FUNC(JsiSkRuntimeEffectFactory, Make)
36
+ )
36
37
 
37
38
  JsiSkRuntimeEffectFactory(std::shared_ptr<RNSkPlatformContext> context)
38
39
  : JsiSkHostObject(std::move(context)) {}
@@ -0,0 +1,70 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+ #include <utility>
5
+
6
+ #include <jsi/jsi.h>
7
+
8
+ #include "JsiSkHostObjects.h"
9
+
10
+ #pragma clang diagnostic push
11
+ #pragma clang diagnostic ignored "-Wdocumentation"
12
+
13
+ #include "JsiSkRuntimeEffect.h"
14
+ #include <SkRuntimeEffect.h>
15
+
16
+ #pragma clang diagnostic pop
17
+
18
+ namespace RNSkia {
19
+
20
+ using namespace facebook;
21
+
22
+ class JsiSkRuntimeShaderBuilder : public JsiSkWrappingSharedPtrHostObject<SkRuntimeShaderBuilder> {
23
+ public:
24
+
25
+ /**
26
+ Constructor
27
+ */
28
+ JsiSkRuntimeShaderBuilder(std::shared_ptr<RNSkPlatformContext> context, const SkRuntimeShaderBuilder &rt)
29
+ : JsiSkWrappingSharedPtrHostObject<SkRuntimeShaderBuilder>(
30
+ std::move(context), std::make_shared<SkRuntimeShaderBuilder>(rt)){}
31
+
32
+ /**
33
+ Returns the underlying object from a host object of this type
34
+ */
35
+ static std::shared_ptr<SkRuntimeShaderBuilder> fromValue(jsi::Runtime &runtime,
36
+ const jsi::Value &obj) {
37
+ const auto& object = obj.asObject(runtime);
38
+ return object.asHostObject<JsiSkRuntimeShaderBuilder>(runtime)->getObject();
39
+
40
+ }
41
+
42
+ /**
43
+ Returns the jsi object from a host object of this type
44
+ */
45
+ static jsi::Value toValue(jsi::Runtime &runtime,
46
+ std::shared_ptr<RNSkPlatformContext> context,
47
+ const SkRuntimeShaderBuilder &rt) {
48
+ return jsi::Object::createFromHostObject(
49
+ runtime, std::make_shared<JsiSkRuntimeShaderBuilder>(std::move(context), rt));
50
+ }
51
+
52
+ /**
53
+ * Creates the function for construction a new instance of the SkRect
54
+ * wrapper
55
+ * @param context platform context
56
+ * @return A function for creating a new host object wrapper for the SkRect
57
+ * class
58
+ */
59
+ static const jsi::HostFunctionType
60
+ createCtor(std::shared_ptr<RNSkPlatformContext> context) {
61
+ return JSI_HOST_FUNCTION_LAMBDA {
62
+ auto rt = JsiSkRuntimeEffect::fromValue(runtime, arguments[0]);
63
+ auto rtb = SkRuntimeShaderBuilder(rt);
64
+ // Return the newly constructed object
65
+ return jsi::Object::createFromHostObject(
66
+ runtime, std::make_shared<JsiSkRuntimeShaderBuilder>(std::move(context), std::move(rtb)));
67
+ };
68
+ }
69
+ };
70
+ } // namespace RNSkia
@@ -50,7 +50,7 @@ std::vector<SkColor> getColors(jsi::Runtime &runtime, const jsi::Value& value) {
50
50
  auto size = jsiColors.size(runtime);
51
51
  colors.reserve(size);
52
52
  for (int i = 0; i < size; i++) {
53
- SkColor color = jsiColors.getValueAtIndex(runtime, i).asNumber();
53
+ SkColor color = JsiSkColor::fromValue(runtime, jsiColors.getValueAtIndex(runtime, i));
54
54
  colors.push_back(color);
55
55
  }
56
56
  }
@@ -191,7 +191,7 @@ public:
191
191
  }
192
192
 
193
193
  JSI_HOST_FUNCTION(MakeColor) {
194
- auto color = arguments[0].asNumber();
194
+ auto color = JsiSkColor::fromValue(runtime, arguments[0]);
195
195
  sk_sp<SkShader> gradient = SkShaders::Color(color);
196
196
  return jsi::Object::createFromHostObject(
197
197
  runtime, std::make_shared<JsiSkShader>(getContext(), std::move(gradient)));
@@ -97,7 +97,7 @@ namespace RNSkia {
97
97
  auto colorsSize = jsiColors.size(runtime);
98
98
  colors.reserve(colorsSize);
99
99
  for (int i = 0; i < colorsSize; i++) {
100
- SkColor color = jsiColors.getValueAtIndex(runtime, i).asNumber();
100
+ SkColor color = JsiSkColor::fromValue(runtime, jsiColors.getValueAtIndex(runtime, i));
101
101
  colors.push_back(color);
102
102
  }
103
103
  }
@@ -0,0 +1,194 @@
1
+ #include "CSSColorParser.h"
2
+
3
+ namespace CSSColorParser {
4
+
5
+ template <typename T>
6
+ uint8_t clamp_css_byte(T i) { // Clamp to integer 0 .. 255.
7
+ i = ::round(i); // Seems to be what Chrome does (vs truncation).
8
+ return i < 0 ? 0 : i > 255 ? 255 : uint8_t(i);
9
+ }
10
+
11
+ template <typename T>
12
+ float clamp_css_float(T f) { // Clamp to float 0.0 .. 1.0.
13
+ return f < 0 ? 0 : f > 1 ? 1 : float(f);
14
+ }
15
+
16
+ float parseFloat(const std::string& str) {
17
+ return strtof(str.c_str(), nullptr);
18
+ }
19
+
20
+ int64_t parseInt(const std::string& str, uint8_t base = 10) {
21
+ return strtoll(str.c_str(), nullptr, base);
22
+ }
23
+
24
+ uint8_t parse_css_int(const std::string& str) { // int or percentage.
25
+ if (str.length() && str.back() == '%') {
26
+ return clamp_css_byte(parseFloat(str) / 100.0f * 255.0f);
27
+ } else {
28
+ return clamp_css_byte(parseInt(str));
29
+ }
30
+ }
31
+
32
+ float parse_css_float(const std::string& str) { // float or percentage.
33
+ if (str.length() && str.back() == '%') {
34
+ return clamp_css_float(parseFloat(str) / 100.0f);
35
+ } else {
36
+ return clamp_css_float(parseFloat(str));
37
+ }
38
+ }
39
+
40
+ float css_hue_to_rgb(float m1, float m2, float h) {
41
+ if (h < 0.0f) {
42
+ h += 1.0f;
43
+ } else if (h > 1.0f) {
44
+ h -= 1.0f;
45
+ }
46
+
47
+ if (h * 6.0f < 1.0f) {
48
+ return m1 + (m2 - m1) * h * 6.0f;
49
+ }
50
+ if (h * 2.0f < 1.0f) {
51
+ return m2;
52
+ }
53
+ if (h * 3.0f < 2.0f) {
54
+ return m1 + (m2 - m1) * (2.0f / 3.0f - h) * 6.0f;
55
+ }
56
+ return m1;
57
+ }
58
+
59
+ std::vector<std::string> split(const std::string& s, char delim) {
60
+ std::vector<std::string> elems;
61
+ std::stringstream ss(s);
62
+ std::string item;
63
+ while (std::getline(ss, item, delim)) {
64
+ elems.push_back(item);
65
+ }
66
+ return elems;
67
+ }
68
+
69
+ Color parse(const std::string& css_str) {
70
+ std::string str = css_str;
71
+
72
+ // Remove all whitespace, not compliant, but should just be more accepting.
73
+ str.erase(std::remove(str.begin(), str.end(), ' '), str.end());
74
+
75
+ // Convert to lowercase.
76
+ std::transform(str.begin(), str.end(), str.begin(), ::tolower);
77
+
78
+ for (const auto& namedColor : namedColors) {
79
+ if (str == namedColor.name) {
80
+ return { namedColor.color };
81
+ }
82
+ }
83
+
84
+ // #abc and #abc123 syntax.
85
+ if (str.length() && str.front() == '#') {
86
+ auto iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.
87
+ if (str.length() == 4) {
88
+ if (!(iv >= 0 && iv <= 0xfff)) {
89
+ return {};
90
+ } else {
91
+ return {
92
+ static_cast<uint8_t>(((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8)),
93
+ static_cast<uint8_t>((iv & 0xf0) | ((iv & 0xf0) >> 4)),
94
+ static_cast<uint8_t>((iv & 0xf) | ((iv & 0xf) << 4)),
95
+ 1
96
+ };
97
+ }
98
+ } else if (str.length() == 7) {
99
+ if (!(iv >= 0 && iv <= 0xffffff)) {
100
+ return {}; // Covers NaN.
101
+ } else {
102
+ return {
103
+ static_cast<uint8_t>((iv & 0xff0000) >> 16),
104
+ static_cast<uint8_t>((iv & 0xff00) >> 8),
105
+ static_cast<uint8_t>(iv & 0xff),
106
+ 1
107
+ };
108
+ }
109
+ }else if (str.length() == 5) {
110
+ // #rgba
111
+ if (!(iv >= 0 && iv <= 0xffff)) return {}; // Covers NaN.
112
+ return {
113
+ static_cast<uint8_t>(((iv & 0xf000) >> 8) | ((iv & 0xf000) >> 12)),
114
+ static_cast<uint8_t>(((iv & 0x0f00) >> 4) | ((iv & 0x0f00) >> 8)),
115
+ static_cast<uint8_t>((iv & 0x00f0) | ((iv & 0x00f0) >> 4)),
116
+ static_cast<uint8_t>(((iv & 0x000f) << 4 | (iv & 0x000f))) / 255.0f
117
+ };
118
+ } else if (str.length() == 9) {
119
+ // #rrggbbaa
120
+ if (!(iv >= 0 && iv <= 0xffffffff)) return {}; // Covers NaN.
121
+ return {
122
+ static_cast<uint8_t>(((iv & 0xff000000) >> 24) & 0xff),
123
+ static_cast<uint8_t>((iv & 0x00ff0000) >> 16),
124
+ static_cast<uint8_t>((iv & 0x0000ff00) >> 8),
125
+ static_cast<uint8_t>((iv & 0x000000ff)) / 255.0f
126
+ };
127
+ }
128
+
129
+ return {};
130
+ }
131
+
132
+ size_t op = str.find_first_of('('), ep = str.find_first_of(')');
133
+ if (op != std::string::npos && ep + 1 == str.length()) {
134
+ const std::string fname = str.substr(0, op);
135
+ const std::vector<std::string> params = split(str.substr(op + 1, ep - (op + 1)), ',');
136
+
137
+ float alpha = 1.0f;
138
+
139
+ if (fname == "rgba" || fname == "rgb") {
140
+ if (fname == "rgba") {
141
+ if (params.size() != 4) {
142
+ return { };
143
+ }
144
+ alpha = parse_css_float(params.back());
145
+ } else {
146
+ if (params.size() != 3) {
147
+ return { };
148
+ }
149
+ }
150
+
151
+ return {
152
+ parse_css_int(params[0]),
153
+ parse_css_int(params[1]),
154
+ parse_css_int(params[2]),
155
+ alpha
156
+ };
157
+
158
+ } else if (fname == "hsla" || fname == "hsl") {
159
+ if (fname == "hsla") {
160
+ if (params.size() != 4) {
161
+ return { };
162
+ }
163
+ alpha = parse_css_float(params.back());
164
+ } else {
165
+ if (params.size() != 3) {
166
+ return { };
167
+ }
168
+ }
169
+
170
+ float h = parseFloat(params[0]) / 360.0f;
171
+ float i;
172
+ // Normalize the hue to [0..1[
173
+ h = std::modf(h, &i);
174
+
175
+ // NOTE(deanm): According to the CSS spec s/l should only be
176
+ // percentages, but we don't bother and let float or percentage.
177
+ float s = parse_css_float(params[1]);
178
+ float l = parse_css_float(params[2]);
179
+
180
+ float m2 = l <= 0.5f ? l * (s + 1.0f) : l + s - l * s;
181
+ float m1 = l * 2.0f - m2;
182
+
183
+ return {
184
+ clamp_css_byte(css_hue_to_rgb(m1, m2, h + 1.0f / 3.0f) * 255.0f),
185
+ clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255.0f),
186
+ clamp_css_byte(css_hue_to_rgb(m1, m2, h - 1.0f / 3.0f) * 255.0f),
187
+ alpha
188
+ };
189
+ }
190
+ }
191
+
192
+ return { };
193
+ }
194
+ }