@shopify/react-native-skia 0.1.122 → 0.1.125

Sign up to get free protection for your applications and to get access to all the features.
Files changed (466) hide show
  1. package/android/CMakeLists.txt +6 -1
  2. package/android/build.gradle +1 -1
  3. package/android/cpp/jni/JniSkiaDrawView.cpp +14 -71
  4. package/android/cpp/jni/JniSkiaManager.cpp +1 -1
  5. package/android/cpp/jni/include/JniSkiaDrawView.h +18 -22
  6. package/android/cpp/jni/include/JniSkiaManager.h +4 -4
  7. package/android/cpp/rnskia-android/RNSkDrawViewImpl.cpp +68 -0
  8. package/android/cpp/rnskia-android/RNSkDrawViewImpl.h +48 -0
  9. package/android/cpp/{jni/include/JniPlatformContextWrapper.h → rnskia-android/RNSkPlatformContextImpl.h} +4 -4
  10. package/android/cpp/{jni → rnskia-android}/SkiaOpenGLRenderer.cpp +39 -54
  11. package/android/cpp/{jni/include → rnskia-android}/SkiaOpenGLRenderer.h +2 -31
  12. package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaViewManager.java +1 -1
  13. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDrawView.java +21 -28
  14. package/cpp/api/JsiSkApi.h +3 -1
  15. package/cpp/api/JsiSkCanvas.h +1 -1
  16. package/cpp/api/JsiSkColor.h +41 -7
  17. package/cpp/api/JsiSkColorFilterFactory.h +2 -1
  18. package/cpp/api/JsiSkImageFilter.h +0 -2
  19. package/cpp/api/JsiSkImageFilterFactory.h +37 -17
  20. package/cpp/api/JsiSkMatrix.h +44 -2
  21. package/cpp/api/JsiSkPaint.h +4 -7
  22. package/cpp/api/JsiSkRuntimeEffect.h +7 -0
  23. package/cpp/api/JsiSkRuntimeEffectFactory.h +3 -2
  24. package/cpp/api/JsiSkRuntimeShaderBuilder.h +70 -0
  25. package/cpp/api/JsiSkShaderFactory.h +2 -2
  26. package/cpp/api/JsiSkVertices.h +1 -1
  27. package/cpp/api/third_party/CSSColorParser.cpp +194 -0
  28. package/cpp/api/third_party/CSSColorParser.h +1 -191
  29. package/cpp/jsi/JsiSimpleValueWrapper.h +98 -0
  30. package/cpp/rnskia/RNSkAnimation.h +0 -2
  31. package/cpp/rnskia/RNSkDrawView.cpp +84 -126
  32. package/cpp/rnskia/RNSkDrawView.h +7 -37
  33. package/cpp/rnskia/RNSkJsiViewApi.h +8 -5
  34. package/cpp/rnskia/RNSkManager.cpp +2 -2
  35. package/cpp/rnskia/RNSkManager.h +2 -2
  36. package/cpp/rnskia/RNSkPlatformContext.h +1 -1
  37. package/cpp/rnskia/RNSkValueApi.h +6 -2
  38. package/cpp/rnskia/values/RNSkClockValue.h +18 -10
  39. package/cpp/rnskia/values/RNSkDerivedValue.h +12 -5
  40. package/cpp/rnskia/values/RNSkReadonlyValue.h +25 -17
  41. package/cpp/rnskia/values/RNSkValue.h +8 -3
  42. package/cpp/utils/RNSkTimingInfo.h +13 -1
  43. package/ios/RNSkia-iOS/PlatformContext.h +30 -4
  44. package/ios/RNSkia-iOS/RNSkDrawViewImpl.h +8 -10
  45. package/ios/RNSkia-iOS/RNSkDrawViewImpl.mm +25 -10
  46. package/ios/RNSkia-iOS/SkiaDrawView.mm +22 -20
  47. package/lib/commonjs/{values/animation → animation}/decay/decay.js +0 -0
  48. package/lib/commonjs/{values/animation → animation}/decay/decay.js.map +0 -0
  49. package/lib/commonjs/{values/animation → animation}/decay/index.js +0 -0
  50. package/lib/commonjs/{values/animation → animation}/decay/index.js.map +0 -0
  51. package/lib/commonjs/{values/animation → animation}/decay/runDecay.js +1 -1
  52. package/lib/commonjs/animation/decay/runDecay.js.map +1 -0
  53. package/lib/commonjs/{values/animation → animation}/decay/types.js +0 -0
  54. package/lib/commonjs/{values/animation → animation}/decay/types.js.map +0 -0
  55. package/lib/commonjs/{values/animation → animation}/functions/index.js +0 -0
  56. package/lib/commonjs/{values/animation → animation}/functions/index.js.map +0 -0
  57. package/lib/commonjs/animation/functions/interpolate.js +141 -0
  58. package/lib/commonjs/animation/functions/interpolate.js.map +1 -0
  59. package/lib/commonjs/animation/functions/interpolateColors.js +39 -0
  60. package/lib/commonjs/animation/functions/interpolateColors.js.map +1 -0
  61. package/lib/commonjs/{values/animation → animation}/index.js +0 -0
  62. package/lib/commonjs/{values/animation → animation}/index.js.map +0 -0
  63. package/lib/commonjs/{values/animation → animation}/spring/Spring.js +0 -0
  64. package/lib/commonjs/{values/animation → animation}/spring/Spring.js.map +0 -0
  65. package/lib/commonjs/{values/animation → animation}/spring/functions/index.js +0 -0
  66. package/lib/commonjs/{values/animation → animation}/spring/functions/index.js.map +0 -0
  67. package/lib/commonjs/{values/animation → animation}/spring/functions/spring.js +0 -0
  68. package/lib/commonjs/{values/animation → animation}/spring/functions/spring.js.map +0 -0
  69. package/lib/commonjs/{values/animation → animation}/spring/index.js +0 -0
  70. package/lib/commonjs/{values/animation → animation}/spring/index.js.map +0 -0
  71. package/lib/commonjs/{values/animation → animation}/spring/runSpring.js +0 -0
  72. package/lib/commonjs/animation/spring/runSpring.js.map +1 -0
  73. package/lib/commonjs/{values/animation → animation}/spring/types.js +0 -0
  74. package/lib/commonjs/{values/animation → animation}/spring/types.js.map +0 -0
  75. package/lib/commonjs/{values/animation → animation}/spring/useSpring.js +0 -0
  76. package/lib/commonjs/animation/spring/useSpring.js.map +1 -0
  77. package/lib/commonjs/{values/animation → animation}/timing/Easing.js +0 -0
  78. package/lib/commonjs/{values/animation → animation}/timing/Easing.js.map +0 -0
  79. package/lib/commonjs/{values/animation → animation}/timing/createTiming.js +1 -1
  80. package/lib/commonjs/animation/timing/createTiming.js.map +1 -0
  81. package/lib/commonjs/{values/animation → animation}/timing/functions/bezier.js +0 -0
  82. package/lib/commonjs/{values/animation → animation}/timing/functions/bezier.js.map +0 -0
  83. package/lib/commonjs/{values/animation → animation}/timing/functions/getResolvedParams.js +3 -3
  84. package/lib/commonjs/animation/timing/functions/getResolvedParams.js.map +1 -0
  85. package/lib/commonjs/{values/animation → animation}/timing/functions/index.js +0 -0
  86. package/lib/commonjs/{values/animation → animation}/timing/functions/index.js.map +0 -0
  87. package/lib/commonjs/{values/animation → animation}/timing/functions/timing.js +0 -0
  88. package/lib/commonjs/{values/animation → animation}/timing/functions/timing.js.map +1 -1
  89. package/lib/commonjs/{values/animation → animation}/timing/functions/types.js +0 -0
  90. package/lib/commonjs/{values/animation → animation}/timing/functions/types.js.map +0 -0
  91. package/lib/commonjs/{values/animation → animation}/timing/index.js +0 -0
  92. package/lib/commonjs/{values/animation → animation}/timing/index.js.map +0 -0
  93. package/lib/commonjs/{values/animation → animation}/timing/runTiming.js +0 -0
  94. package/lib/commonjs/animation/timing/runTiming.js.map +1 -0
  95. package/lib/commonjs/{values/animation → animation}/timing/useLoop.js +0 -0
  96. package/lib/commonjs/{values/animation → animation}/timing/useLoop.js.map +0 -0
  97. package/lib/commonjs/{values/animation → animation}/timing/useTiming.js +1 -1
  98. package/lib/commonjs/animation/timing/useTiming.js.map +1 -0
  99. package/lib/commonjs/{values/animation → animation}/types.js +0 -0
  100. package/lib/commonjs/{values/animation → animation}/types.js.map +0 -0
  101. package/lib/commonjs/index.js +13 -0
  102. package/lib/commonjs/index.js.map +1 -1
  103. package/lib/commonjs/renderer/Canvas.js +17 -8
  104. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  105. package/lib/commonjs/renderer/components/Paint.js +1 -1
  106. package/lib/commonjs/renderer/components/Paint.js.map +1 -1
  107. package/lib/commonjs/renderer/components/colorFilters/BlendColor.js.map +1 -1
  108. package/lib/commonjs/renderer/components/colorFilters/Lerp.js +1 -1
  109. package/lib/commonjs/renderer/components/colorFilters/Lerp.js.map +1 -1
  110. package/lib/commonjs/renderer/components/imageFilters/InnerShadow.js +4 -2
  111. package/lib/commonjs/renderer/components/imageFilters/InnerShadow.js.map +1 -1
  112. package/lib/commonjs/renderer/components/imageFilters/RuntimeShader.js +37 -0
  113. package/lib/commonjs/renderer/components/imageFilters/RuntimeShader.js.map +1 -0
  114. package/lib/commonjs/renderer/components/imageFilters/index.js +13 -0
  115. package/lib/commonjs/renderer/components/imageFilters/index.js.map +1 -1
  116. package/lib/commonjs/renderer/components/shaders/Gradient.js +1 -1
  117. package/lib/commonjs/renderer/components/shaders/Gradient.js.map +1 -1
  118. package/lib/commonjs/renderer/components/shaders/Shader.js +2 -2
  119. package/lib/commonjs/renderer/components/shaders/Shader.js.map +1 -1
  120. package/lib/commonjs/renderer/components/shapes/Path.js +9 -1
  121. package/lib/commonjs/renderer/components/shapes/Path.js.map +1 -1
  122. package/lib/commonjs/renderer/processors/Circles.js +3 -2
  123. package/lib/commonjs/renderer/processors/Circles.js.map +1 -1
  124. package/lib/commonjs/renderer/processors/Font.js +1 -1
  125. package/lib/commonjs/renderer/processors/Font.js.map +1 -1
  126. package/lib/commonjs/renderer/processors/Paint.js +6 -1
  127. package/lib/commonjs/renderer/processors/Paint.js.map +1 -1
  128. package/lib/commonjs/renderer/processors/Rects.js +11 -21
  129. package/lib/commonjs/renderer/processors/Rects.js.map +1 -1
  130. package/lib/commonjs/renderer/processors/math/Matrix3.js +42 -63
  131. package/lib/commonjs/renderer/processors/math/Matrix3.js.map +1 -1
  132. package/lib/commonjs/renderer/processors/math/Vector.js +4 -5
  133. package/lib/commonjs/renderer/processors/math/Vector.js.map +1 -1
  134. package/lib/commonjs/skia/Color.js +14 -38
  135. package/lib/commonjs/skia/Color.js.map +1 -1
  136. package/lib/commonjs/skia/ImageFilter/ImageFilterFactory.js.map +1 -1
  137. package/lib/commonjs/skia/Matrix.js.map +1 -1
  138. package/lib/commonjs/skia/Paint/Paint.js +13 -1
  139. package/lib/commonjs/skia/Paint/Paint.js.map +1 -1
  140. package/lib/commonjs/skia/Paint/usePaint.js +2 -4
  141. package/lib/commonjs/skia/Paint/usePaint.js.map +1 -1
  142. package/lib/commonjs/skia/Shader/useShader.js +4 -1
  143. package/lib/commonjs/skia/Shader/useShader.js.map +1 -1
  144. package/lib/commonjs/skia/Skia.js +3 -43
  145. package/lib/commonjs/skia/Skia.js.map +1 -1
  146. package/lib/commonjs/skia/SkiaApi.js +4 -0
  147. package/lib/commonjs/skia/SkiaApi.js.map +1 -0
  148. package/lib/commonjs/values/api.js +4 -6
  149. package/lib/commonjs/values/api.js.map +1 -1
  150. package/lib/commonjs/values/api.web.js +18 -0
  151. package/lib/commonjs/values/api.web.js.map +1 -0
  152. package/lib/commonjs/values/index.js +0 -13
  153. package/lib/commonjs/values/index.js.map +1 -1
  154. package/lib/commonjs/values/web/RNSkAnimation.js +46 -0
  155. package/lib/commonjs/values/web/RNSkAnimation.js.map +1 -0
  156. package/lib/commonjs/values/web/RNSkClockValue.js +75 -0
  157. package/lib/commonjs/values/web/RNSkClockValue.js.map +1 -0
  158. package/lib/commonjs/values/web/RNSkDerivedValue.js +51 -0
  159. package/lib/commonjs/values/web/RNSkDerivedValue.js.map +1 -0
  160. package/lib/commonjs/values/web/RNSkReadonlyValue.js +45 -0
  161. package/lib/commonjs/values/web/RNSkReadonlyValue.js.map +1 -0
  162. package/lib/commonjs/values/web/RNSkValue.js +73 -0
  163. package/lib/commonjs/values/web/RNSkValue.js.map +1 -0
  164. package/lib/commonjs/values/web/api.js +31 -0
  165. package/lib/commonjs/values/web/api.js.map +1 -0
  166. package/lib/commonjs/values/web/index.js +19 -0
  167. package/lib/commonjs/values/web/index.js.map +1 -0
  168. package/lib/commonjs/views/SkiaView.js +13 -10
  169. package/lib/commonjs/views/SkiaView.js.map +1 -1
  170. package/lib/commonjs/views/api.js +11 -0
  171. package/lib/commonjs/views/api.js.map +1 -0
  172. package/lib/commonjs/views/types.js.map +1 -1
  173. package/lib/module/{values/animation → animation}/decay/decay.js +0 -0
  174. package/lib/module/{values/animation → animation}/decay/decay.js.map +0 -0
  175. package/lib/module/{values/animation → animation}/decay/index.js +0 -0
  176. package/lib/module/{values/animation → animation}/decay/index.js.map +0 -0
  177. package/lib/module/{values/animation → animation}/decay/runDecay.js +1 -1
  178. package/lib/module/animation/decay/runDecay.js.map +1 -0
  179. package/lib/module/{values/animation → animation}/decay/types.js +0 -0
  180. package/lib/module/{values/animation → animation}/decay/types.js.map +0 -0
  181. package/lib/module/{values/animation → animation}/functions/index.js +0 -0
  182. package/lib/module/{values/animation → animation}/functions/index.js.map +0 -0
  183. package/lib/module/animation/functions/interpolate.js +132 -0
  184. package/lib/module/animation/functions/interpolate.js.map +1 -0
  185. package/lib/module/animation/functions/interpolateColors.js +23 -0
  186. package/lib/module/animation/functions/interpolateColors.js.map +1 -0
  187. package/lib/module/{values/animation → animation}/index.js +0 -0
  188. package/lib/module/{values/animation → animation}/index.js.map +0 -0
  189. package/lib/module/{values/animation → animation}/spring/Spring.js +0 -0
  190. package/lib/module/{values/animation → animation}/spring/Spring.js.map +0 -0
  191. package/lib/module/{values/animation → animation}/spring/functions/index.js +0 -0
  192. package/lib/module/{values/animation → animation}/spring/functions/index.js.map +0 -0
  193. package/lib/module/{values/animation → animation}/spring/functions/spring.js +0 -0
  194. package/lib/module/{values/animation → animation}/spring/functions/spring.js.map +0 -0
  195. package/lib/module/{values/animation → animation}/spring/index.js +0 -0
  196. package/lib/module/{values/animation → animation}/spring/index.js.map +0 -0
  197. package/lib/module/{values/animation → animation}/spring/runSpring.js +0 -0
  198. package/lib/module/animation/spring/runSpring.js.map +1 -0
  199. package/lib/module/{values/animation → animation}/spring/types.js +0 -0
  200. package/lib/module/{values/animation → animation}/spring/types.js.map +0 -0
  201. package/lib/module/{values/animation → animation}/spring/useSpring.js +0 -0
  202. package/lib/module/animation/spring/useSpring.js.map +1 -0
  203. package/lib/module/{values/animation → animation}/timing/Easing.js +0 -0
  204. package/lib/module/{values/animation → animation}/timing/Easing.js.map +0 -0
  205. package/lib/module/{values/animation → animation}/timing/createTiming.js +1 -1
  206. package/lib/module/animation/timing/createTiming.js.map +1 -0
  207. package/lib/module/{values/animation → animation}/timing/functions/bezier.js +0 -0
  208. package/lib/module/{values/animation → animation}/timing/functions/bezier.js.map +0 -0
  209. package/lib/module/{values/animation → animation}/timing/functions/getResolvedParams.js +3 -3
  210. package/lib/module/animation/timing/functions/getResolvedParams.js.map +1 -0
  211. package/lib/module/{values/animation → animation}/timing/functions/index.js +0 -0
  212. package/lib/module/{values/animation → animation}/timing/functions/index.js.map +0 -0
  213. package/lib/module/{values/animation → animation}/timing/functions/timing.js +0 -0
  214. package/lib/module/{values/animation → animation}/timing/functions/timing.js.map +1 -1
  215. package/lib/module/{values/animation → animation}/timing/functions/types.js +0 -0
  216. package/lib/module/{values/animation → animation}/timing/functions/types.js.map +0 -0
  217. package/lib/module/{values/animation → animation}/timing/index.js +0 -0
  218. package/lib/module/{values/animation → animation}/timing/index.js.map +0 -0
  219. package/lib/module/{values/animation → animation}/timing/runTiming.js +0 -0
  220. package/lib/module/animation/timing/runTiming.js.map +1 -0
  221. package/lib/module/{values/animation → animation}/timing/useLoop.js +0 -0
  222. package/lib/module/{values/animation → animation}/timing/useLoop.js.map +0 -0
  223. package/lib/module/{values/animation → animation}/timing/useTiming.js +1 -1
  224. package/lib/module/animation/timing/useTiming.js.map +1 -0
  225. package/lib/module/{values/animation → animation}/types.js +0 -0
  226. package/lib/module/{values/animation → animation}/types.js.map +0 -0
  227. package/lib/module/index.js +1 -0
  228. package/lib/module/index.js.map +1 -1
  229. package/lib/module/renderer/Canvas.js +12 -6
  230. package/lib/module/renderer/Canvas.js.map +1 -1
  231. package/lib/module/renderer/components/Paint.js +2 -2
  232. package/lib/module/renderer/components/Paint.js.map +1 -1
  233. package/lib/module/renderer/components/colorFilters/BlendColor.js.map +1 -1
  234. package/lib/module/renderer/components/colorFilters/Lerp.js +1 -1
  235. package/lib/module/renderer/components/colorFilters/Lerp.js.map +1 -1
  236. package/lib/module/renderer/components/imageFilters/InnerShadow.js +3 -2
  237. package/lib/module/renderer/components/imageFilters/InnerShadow.js.map +1 -1
  238. package/lib/module/renderer/components/imageFilters/RuntimeShader.js +19 -0
  239. package/lib/module/renderer/components/imageFilters/RuntimeShader.js.map +1 -0
  240. package/lib/module/renderer/components/imageFilters/index.js +1 -0
  241. package/lib/module/renderer/components/imageFilters/index.js.map +1 -1
  242. package/lib/module/renderer/components/shaders/Gradient.js +2 -2
  243. package/lib/module/renderer/components/shaders/Gradient.js.map +1 -1
  244. package/lib/module/renderer/components/shaders/Shader.js +3 -2
  245. package/lib/module/renderer/components/shaders/Shader.js.map +1 -1
  246. package/lib/module/renderer/components/shapes/Path.js +9 -2
  247. package/lib/module/renderer/components/shapes/Path.js.map +1 -1
  248. package/lib/module/renderer/processors/Circles.js +3 -2
  249. package/lib/module/renderer/processors/Circles.js.map +1 -1
  250. package/lib/module/renderer/processors/Font.js +1 -1
  251. package/lib/module/renderer/processors/Font.js.map +1 -1
  252. package/lib/module/renderer/processors/Paint.js +6 -1
  253. package/lib/module/renderer/processors/Paint.js.map +1 -1
  254. package/lib/module/renderer/processors/Rects.js +9 -21
  255. package/lib/module/renderer/processors/Rects.js.map +1 -1
  256. package/lib/module/renderer/processors/math/Matrix3.js +52 -72
  257. package/lib/module/renderer/processors/math/Matrix3.js.map +1 -1
  258. package/lib/module/renderer/processors/math/Vector.js +3 -5
  259. package/lib/module/renderer/processors/math/Vector.js.map +1 -1
  260. package/lib/module/skia/Color.js +9 -25
  261. package/lib/module/skia/Color.js.map +1 -1
  262. package/lib/module/skia/ImageFilter/ImageFilterFactory.js.map +1 -1
  263. package/lib/module/skia/Matrix.js.map +1 -1
  264. package/lib/module/skia/Paint/Paint.js +6 -0
  265. package/lib/module/skia/Paint/Paint.js.map +1 -1
  266. package/lib/module/skia/Paint/usePaint.js +2 -3
  267. package/lib/module/skia/Paint/usePaint.js.map +1 -1
  268. package/lib/module/skia/Shader/useShader.js +4 -1
  269. package/lib/module/skia/Shader/useShader.js.map +1 -1
  270. package/lib/module/skia/Skia.js +2 -44
  271. package/lib/module/skia/Skia.js.map +1 -1
  272. package/lib/module/skia/SkiaApi.js +2 -0
  273. package/lib/module/skia/SkiaApi.js.map +1 -0
  274. package/lib/module/values/api.js +4 -6
  275. package/lib/module/values/api.js.map +1 -1
  276. package/lib/module/values/api.web.js +7 -0
  277. package/lib/module/values/api.web.js.map +1 -0
  278. package/lib/module/values/index.js +0 -1
  279. package/lib/module/values/index.js.map +1 -1
  280. package/lib/module/values/web/RNSkAnimation.js +36 -0
  281. package/lib/module/values/web/RNSkAnimation.js.map +1 -0
  282. package/lib/module/values/web/RNSkClockValue.js +65 -0
  283. package/lib/module/values/web/RNSkClockValue.js.map +1 -0
  284. package/lib/module/values/web/RNSkDerivedValue.js +41 -0
  285. package/lib/module/values/web/RNSkDerivedValue.js.map +1 -0
  286. package/lib/module/values/web/RNSkReadonlyValue.js +36 -0
  287. package/lib/module/values/web/RNSkReadonlyValue.js.map +1 -0
  288. package/lib/module/values/web/RNSkValue.js +63 -0
  289. package/lib/module/values/web/RNSkValue.js.map +1 -0
  290. package/lib/module/values/web/api.js +19 -0
  291. package/lib/module/values/web/api.js.map +1 -0
  292. package/lib/module/values/web/index.js +2 -0
  293. package/lib/module/values/web/index.js.map +1 -0
  294. package/lib/module/views/SkiaView.js +1 -3
  295. package/lib/module/views/SkiaView.js.map +1 -1
  296. package/lib/module/views/api.js +4 -0
  297. package/lib/module/views/api.js.map +1 -0
  298. package/lib/module/views/types.js.map +1 -1
  299. package/lib/typescript/src/{values/animation → animation}/decay/decay.d.ts +0 -0
  300. package/lib/typescript/src/{values/animation → animation}/decay/index.d.ts +0 -0
  301. package/lib/typescript/src/{values/animation → animation}/decay/runDecay.d.ts +2 -2
  302. package/lib/typescript/src/{values/animation → animation}/decay/types.d.ts +1 -1
  303. package/lib/typescript/src/{values/animation → animation}/functions/index.d.ts +0 -0
  304. package/lib/typescript/src/animation/functions/interpolate.d.ts +11 -0
  305. package/lib/typescript/src/animation/functions/interpolateColors.d.ts +3 -0
  306. package/lib/typescript/src/{values/animation → animation}/index.d.ts +0 -0
  307. package/lib/typescript/src/{values/animation → animation}/spring/Spring.d.ts +0 -0
  308. package/lib/typescript/src/{values/animation → animation}/spring/functions/index.d.ts +0 -0
  309. package/lib/typescript/src/{values/animation → animation}/spring/functions/spring.d.ts +0 -0
  310. package/lib/typescript/src/{values/animation → animation}/spring/index.d.ts +0 -0
  311. package/lib/typescript/src/{values/animation → animation}/spring/runSpring.d.ts +1 -1
  312. package/lib/typescript/src/{values/animation → animation}/spring/types.d.ts +0 -0
  313. package/lib/typescript/src/{values/animation → animation}/spring/useSpring.d.ts +1 -1
  314. package/lib/typescript/src/{values/animation → animation}/timing/Easing.d.ts +0 -0
  315. package/lib/typescript/src/{values/animation → animation}/timing/createTiming.d.ts +2 -2
  316. package/lib/typescript/src/{values/animation → animation}/timing/functions/bezier.d.ts +0 -0
  317. package/lib/typescript/src/{values/animation → animation}/timing/functions/getResolvedParams.d.ts +0 -0
  318. package/lib/typescript/src/{values/animation → animation}/timing/functions/index.d.ts +0 -0
  319. package/lib/typescript/src/{values/animation → animation}/timing/functions/timing.d.ts +1 -1
  320. package/lib/typescript/src/{values/animation → animation}/timing/functions/types.d.ts +0 -0
  321. package/lib/typescript/src/{values/animation → animation}/timing/index.d.ts +0 -0
  322. package/lib/typescript/src/{values/animation → animation}/timing/runTiming.d.ts +1 -1
  323. package/lib/typescript/src/{values/animation → animation}/timing/useLoop.d.ts +0 -0
  324. package/lib/typescript/src/{values/animation → animation}/timing/useTiming.d.ts +1 -1
  325. package/lib/typescript/src/{values/animation → animation}/types.d.ts +5 -5
  326. package/lib/typescript/src/index.d.ts +1 -0
  327. package/lib/typescript/src/renderer/Canvas.d.ts +6 -0
  328. package/lib/typescript/src/renderer/components/colorFilters/BlendColor.d.ts +1 -1
  329. package/lib/typescript/src/renderer/components/imageFilters/RuntimeShader.d.ts +7 -0
  330. package/lib/typescript/src/renderer/components/imageFilters/index.d.ts +1 -0
  331. package/lib/typescript/src/renderer/components/shaders/Gradient.d.ts +1 -1
  332. package/lib/typescript/src/renderer/components/shaders/Shader.d.ts +2 -2
  333. package/lib/typescript/src/renderer/components/shapes/Circle.d.ts +1 -4
  334. package/lib/typescript/src/renderer/components/shapes/Path.d.ts +3 -1
  335. package/lib/typescript/src/renderer/processors/Paint.d.ts +2 -1
  336. package/lib/typescript/src/renderer/processors/Rects.d.ts +9 -41
  337. package/lib/typescript/src/renderer/processors/math/Matrix3.d.ts +1 -5
  338. package/lib/typescript/src/renderer/processors/math/Vector.d.ts +5 -17
  339. package/lib/typescript/src/skia/Color.d.ts +8 -9
  340. package/lib/typescript/src/skia/ImageFilter/ImageFilterFactory.d.ts +16 -0
  341. package/lib/typescript/src/skia/Matrix.d.ts +7 -1
  342. package/lib/typescript/src/skia/Paint/Paint.d.ts +1 -0
  343. package/lib/typescript/src/skia/RuntimeEffect/RuntimeEffect.d.ts +2 -1
  344. package/lib/typescript/src/skia/RuntimeEffect/RuntimeEffectFactory.d.ts +2 -2
  345. package/lib/typescript/src/skia/Shader/useShader.d.ts +1 -1
  346. package/lib/typescript/src/skia/Skia.d.ts +28 -95
  347. package/lib/typescript/src/skia/SkiaApi.d.ts +71 -0
  348. package/lib/typescript/src/skia/Surface/Surface.d.ts +1 -1
  349. package/lib/typescript/src/skia/Surface/SurfaceFactory.d.ts +2 -2
  350. package/lib/typescript/src/values/api.d.ts +2 -25
  351. package/lib/typescript/src/values/api.web.d.ts +2 -0
  352. package/lib/typescript/src/values/index.d.ts +0 -1
  353. package/lib/typescript/src/values/types.d.ts +24 -1
  354. package/lib/typescript/src/values/web/RNSkAnimation.d.ts +9 -0
  355. package/lib/typescript/src/values/web/RNSkClockValue.d.ts +13 -0
  356. package/lib/typescript/src/values/web/RNSkDerivedValue.d.ts +9 -0
  357. package/lib/typescript/src/values/web/RNSkReadonlyValue.d.ts +11 -0
  358. package/lib/typescript/src/values/web/RNSkValue.d.ts +14 -0
  359. package/lib/typescript/src/values/web/api.d.ts +2 -0
  360. package/lib/typescript/src/values/web/index.d.ts +1 -0
  361. package/lib/typescript/src/views/SkiaView.d.ts +3 -36
  362. package/lib/typescript/src/views/api.d.ts +5 -0
  363. package/lib/typescript/src/views/types.d.ts +32 -0
  364. package/package.json +2 -2
  365. package/src/{values/animation → animation}/decay/decay.ts +0 -0
  366. package/src/{values/animation → animation}/decay/index.ts +0 -0
  367. package/src/{values/animation → animation}/decay/runDecay.ts +2 -2
  368. package/src/{values/animation → animation}/decay/types.ts +1 -1
  369. package/src/{values/animation → animation}/functions/index.ts +0 -0
  370. package/src/animation/functions/interpolate.ts +182 -0
  371. package/src/animation/functions/interpolateColors.ts +58 -0
  372. package/src/{values/animation → animation}/index.ts +0 -0
  373. package/src/{values/animation → animation}/spring/Spring.ts +0 -0
  374. package/src/{values/animation → animation}/spring/functions/index.ts +0 -0
  375. package/src/{values/animation → animation}/spring/functions/spring.ts +0 -0
  376. package/src/{values/animation → animation}/spring/index.ts +0 -0
  377. package/src/{values/animation → animation}/spring/runSpring.ts +1 -1
  378. package/src/{values/animation → animation}/spring/types.ts +0 -0
  379. package/src/{values/animation → animation}/spring/useSpring.ts +1 -1
  380. package/src/{values/animation → animation}/timing/Easing.ts +0 -0
  381. package/src/{values/animation → animation}/timing/createTiming.ts +2 -2
  382. package/src/{values/animation → animation}/timing/functions/__tests__/timing.spec.ts +0 -0
  383. package/src/{values/animation → animation}/timing/functions/bezier.ts +0 -0
  384. package/src/{values/animation → animation}/timing/functions/getResolvedParams.ts +2 -2
  385. package/src/{values/animation → animation}/timing/functions/index.ts +0 -0
  386. package/src/{values/animation → animation}/timing/functions/timing.ts +1 -1
  387. package/src/{values/animation → animation}/timing/functions/types.ts +0 -0
  388. package/src/{values/animation → animation}/timing/index.ts +0 -0
  389. package/src/{values/animation → animation}/timing/runTiming.ts +1 -1
  390. package/src/{values/animation → animation}/timing/useLoop.ts +0 -0
  391. package/src/{values/animation → animation}/timing/useTiming.ts +2 -2
  392. package/src/{values/animation → animation}/types.ts +5 -5
  393. package/src/index.ts +1 -0
  394. package/src/renderer/Canvas.tsx +13 -6
  395. package/src/renderer/components/Paint.tsx +2 -2
  396. package/src/renderer/components/colorFilters/BlendColor.tsx +1 -1
  397. package/src/renderer/components/colorFilters/Lerp.tsx +1 -1
  398. package/src/renderer/components/imageFilters/InnerShadow.tsx +4 -2
  399. package/src/renderer/components/imageFilters/RuntimeShader.tsx +23 -0
  400. package/src/renderer/components/imageFilters/index.ts +1 -0
  401. package/src/renderer/components/shaders/Gradient.ts +2 -4
  402. package/src/renderer/components/shaders/Shader.tsx +3 -3
  403. package/src/renderer/components/shapes/Path.tsx +11 -3
  404. package/src/renderer/processors/Circles.ts +2 -1
  405. package/src/renderer/processors/Font.ts +1 -1
  406. package/src/renderer/processors/Paint.ts +5 -0
  407. package/src/renderer/processors/Rects.ts +9 -14
  408. package/src/renderer/processors/math/Matrix3.ts +24 -105
  409. package/src/renderer/processors/math/Vector.ts +3 -2
  410. package/src/skia/Color.ts +13 -27
  411. package/src/skia/ImageFilter/ImageFilterFactory.ts +20 -0
  412. package/src/skia/Matrix.ts +8 -1
  413. package/src/skia/Paint/Paint.ts +7 -0
  414. package/src/skia/Paint/usePaint.ts +2 -4
  415. package/src/skia/RuntimeEffect/RuntimeEffect.ts +3 -1
  416. package/src/skia/RuntimeEffect/RuntimeEffectFactory.ts +2 -2
  417. package/src/skia/Shader/useShader.ts +4 -1
  418. package/src/skia/Skia.ts +4 -123
  419. package/src/skia/SkiaApi.ts +86 -0
  420. package/src/skia/Surface/Surface.ts +1 -1
  421. package/src/skia/Surface/SurfaceFactory.ts +2 -2
  422. package/src/values/api.ts +3 -42
  423. package/src/values/api.web.ts +5 -0
  424. package/src/values/index.ts +0 -1
  425. package/src/values/types.ts +30 -1
  426. package/src/values/web/RNSkAnimation.ts +33 -0
  427. package/src/values/web/RNSkClockValue.ts +58 -0
  428. package/src/values/web/RNSkDerivedValue.ts +38 -0
  429. package/src/values/web/RNSkReadonlyValue.ts +32 -0
  430. package/src/values/web/RNSkValue.ts +57 -0
  431. package/src/values/web/__tests__/RNSkAnimation.spec.ts +21 -0
  432. package/src/values/web/__tests__/RNSkDerivedValue.spec.ts +15 -0
  433. package/src/values/web/__tests__/RNSkReadonlyValue.spec.ts +8 -0
  434. package/src/values/web/__tests__/RNSkValue.spec.ts +11 -0
  435. package/src/values/web/api.ts +33 -0
  436. package/src/values/web/index.ts +1 -0
  437. package/src/views/SkiaView.tsx +3 -49
  438. package/src/views/api.ts +7 -0
  439. package/src/views/types.ts +40 -0
  440. package/lib/commonjs/values/animation/decay/runDecay.js.map +0 -1
  441. package/lib/commonjs/values/animation/functions/interpolate.js +0 -139
  442. package/lib/commonjs/values/animation/functions/interpolate.js.map +0 -1
  443. package/lib/commonjs/values/animation/functions/interpolateColors.js +0 -47
  444. package/lib/commonjs/values/animation/functions/interpolateColors.js.map +0 -1
  445. package/lib/commonjs/values/animation/spring/runSpring.js.map +0 -1
  446. package/lib/commonjs/values/animation/spring/useSpring.js.map +0 -1
  447. package/lib/commonjs/values/animation/timing/createTiming.js.map +0 -1
  448. package/lib/commonjs/values/animation/timing/functions/getResolvedParams.js.map +0 -1
  449. package/lib/commonjs/values/animation/timing/runTiming.js.map +0 -1
  450. package/lib/commonjs/values/animation/timing/useTiming.js.map +0 -1
  451. package/lib/module/values/animation/decay/runDecay.js.map +0 -1
  452. package/lib/module/values/animation/functions/interpolate.js +0 -132
  453. package/lib/module/values/animation/functions/interpolate.js.map +0 -1
  454. package/lib/module/values/animation/functions/interpolateColors.js +0 -32
  455. package/lib/module/values/animation/functions/interpolateColors.js.map +0 -1
  456. package/lib/module/values/animation/spring/runSpring.js.map +0 -1
  457. package/lib/module/values/animation/spring/useSpring.js.map +0 -1
  458. package/lib/module/values/animation/timing/createTiming.js.map +0 -1
  459. package/lib/module/values/animation/timing/functions/getResolvedParams.js.map +0 -1
  460. package/lib/module/values/animation/timing/runTiming.js.map +0 -1
  461. package/lib/module/values/animation/timing/useTiming.js.map +0 -1
  462. package/lib/typescript/scripts/install-npm.d.ts +0 -1
  463. package/lib/typescript/src/values/animation/functions/interpolate.d.ts +0 -7
  464. package/lib/typescript/src/values/animation/functions/interpolateColors.d.ts +0 -3
  465. package/src/values/animation/functions/interpolate.ts +0 -169
  466. package/src/values/animation/functions/interpolateColors.ts +0 -62
@@ -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
+ }
@@ -122,71 +122,6 @@ namespace CSSColorParser {
122
122
  { "yellow", { 255, 255, 0, 1 } }, { "yellowgreen", { 154, 205, 50, 1 } }
123
123
  };
124
124
 
125
- template <typename T>
126
- uint8_t clamp_css_byte(T i) { // Clamp to integer 0 .. 255.
127
- i = ::round(i); // Seems to be what Chrome does (vs truncation).
128
- return i < 0 ? 0 : i > 255 ? 255 : uint8_t(i);
129
- }
130
-
131
- template <typename T>
132
- float clamp_css_float(T f) { // Clamp to float 0.0 .. 1.0.
133
- return f < 0 ? 0 : f > 1 ? 1 : float(f);
134
- }
135
-
136
- float parseFloat(const std::string& str) {
137
- return strtof(str.c_str(), nullptr);
138
- }
139
-
140
- int64_t parseInt(const std::string& str, uint8_t base = 10) {
141
- return strtoll(str.c_str(), nullptr, base);
142
- }
143
-
144
- uint8_t parse_css_int(const std::string& str) { // int or percentage.
145
- if (str.length() && str.back() == '%') {
146
- return clamp_css_byte(parseFloat(str) / 100.0f * 255.0f);
147
- } else {
148
- return clamp_css_byte(parseInt(str));
149
- }
150
- }
151
-
152
- float parse_css_float(const std::string& str) { // float or percentage.
153
- if (str.length() && str.back() == '%') {
154
- return clamp_css_float(parseFloat(str) / 100.0f);
155
- } else {
156
- return clamp_css_float(parseFloat(str));
157
- }
158
- }
159
-
160
- float css_hue_to_rgb(float m1, float m2, float h) {
161
- if (h < 0.0f) {
162
- h += 1.0f;
163
- } else if (h > 1.0f) {
164
- h -= 1.0f;
165
- }
166
-
167
- if (h * 6.0f < 1.0f) {
168
- return m1 + (m2 - m1) * h * 6.0f;
169
- }
170
- if (h * 2.0f < 1.0f) {
171
- return m2;
172
- }
173
- if (h * 3.0f < 2.0f) {
174
- return m1 + (m2 - m1) * (2.0f / 3.0f - h) * 6.0f;
175
- }
176
- return m1;
177
- }
178
-
179
- std::vector<std::string> split(const std::string& s, char delim) {
180
- std::vector<std::string> elems;
181
- std::stringstream ss(s);
182
- std::string item;
183
- while (std::getline(ss, item, delim)) {
184
- elems.push_back(item);
185
- }
186
- return elems;
187
- }
188
-
189
-
190
125
  inline bool operator==(const Color& lhs, const Color& rhs) {
191
126
  return lhs.r == rhs.r && lhs.g == rhs.g && lhs.b == rhs.b && ::fabs(lhs.a - rhs.a) < 0.0001f;
192
127
  }
@@ -195,130 +130,5 @@ namespace CSSColorParser {
195
130
  return !(lhs == rhs);
196
131
  }
197
132
 
198
- Color parse(const std::string& css_str) {
199
- std::string str = css_str;
200
-
201
- // Remove all whitespace, not compliant, but should just be more accepting.
202
- str.erase(std::remove(str.begin(), str.end(), ' '), str.end());
203
-
204
- // Convert to lowercase.
205
- std::transform(str.begin(), str.end(), str.begin(), ::tolower);
206
-
207
- for (const auto& namedColor : namedColors) {
208
- if (str == namedColor.name) {
209
- return { namedColor.color };
210
- }
211
- }
212
-
213
- // #abc and #abc123 syntax.
214
- if (str.length() && str.front() == '#') {
215
- auto iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.
216
- if (str.length() == 4) {
217
- if (!(iv >= 0 && iv <= 0xfff)) {
218
- return {};
219
- } else {
220
- return {
221
- static_cast<uint8_t>(((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8)),
222
- static_cast<uint8_t>((iv & 0xf0) | ((iv & 0xf0) >> 4)),
223
- static_cast<uint8_t>((iv & 0xf) | ((iv & 0xf) << 4)),
224
- 1
225
- };
226
- }
227
- } else if (str.length() == 7) {
228
- if (!(iv >= 0 && iv <= 0xffffff)) {
229
- return {}; // Covers NaN.
230
- } else {
231
- return {
232
- static_cast<uint8_t>((iv & 0xff0000) >> 16),
233
- static_cast<uint8_t>((iv & 0xff00) >> 8),
234
- static_cast<uint8_t>(iv & 0xff),
235
- 1
236
- };
237
- }
238
- }else if (str.length() == 5) {
239
- // #rgba
240
- if (!(iv >= 0 && iv <= 0xffff)) return {}; // Covers NaN.
241
- return {
242
- static_cast<uint8_t>(((iv & 0xf000) >> 8) | ((iv & 0xf000) >> 12)),
243
- static_cast<uint8_t>(((iv & 0x0f00) >> 4) | ((iv & 0x0f00) >> 8)),
244
- static_cast<uint8_t>((iv & 0x00f0) | ((iv & 0x00f0) >> 4)),
245
- static_cast<uint8_t>(((iv & 0x000f) << 4 | (iv & 0x000f))) / 255.0f
246
- };
247
- } else if (str.length() == 9) {
248
- // #rrggbbaa
249
- if (!(iv >= 0 && iv <= 0xffffffff)) return {}; // Covers NaN.
250
- return {
251
- static_cast<uint8_t>(((iv & 0xff000000) >> 24) & 0xff),
252
- static_cast<uint8_t>((iv & 0x00ff0000) >> 16),
253
- static_cast<uint8_t>((iv & 0x0000ff00) >> 8),
254
- static_cast<uint8_t>((iv & 0x000000ff)) / 255.0f
255
- };
256
- }
257
-
258
- return {};
259
- }
260
-
261
- size_t op = str.find_first_of('('), ep = str.find_first_of(')');
262
- if (op != std::string::npos && ep + 1 == str.length()) {
263
- const std::string fname = str.substr(0, op);
264
- const std::vector<std::string> params = split(str.substr(op + 1, ep - (op + 1)), ',');
265
-
266
- float alpha = 1.0f;
267
-
268
- if (fname == "rgba" || fname == "rgb") {
269
- if (fname == "rgba") {
270
- if (params.size() != 4) {
271
- return { };
272
- }
273
- alpha = parse_css_float(params.back());
274
- } else {
275
- if (params.size() != 3) {
276
- return { };
277
- }
278
- }
279
-
280
- return {
281
- parse_css_int(params[0]),
282
- parse_css_int(params[1]),
283
- parse_css_int(params[2]),
284
- alpha
285
- };
286
-
287
- } else if (fname == "hsla" || fname == "hsl") {
288
- if (fname == "hsla") {
289
- if (params.size() != 4) {
290
- return { };
291
- }
292
- alpha = parse_css_float(params.back());
293
- } else {
294
- if (params.size() != 3) {
295
- return { };
296
- }
297
- }
298
-
299
- float h = parseFloat(params[0]) / 360.0f;
300
- float i;
301
- // Normalize the hue to [0..1[
302
- h = std::modf(h, &i);
303
-
304
- // NOTE(deanm): According to the CSS spec s/l should only be
305
- // percentages, but we don't bother and let float or percentage.
306
- float s = parse_css_float(params[1]);
307
- float l = parse_css_float(params[2]);
308
-
309
- float m2 = l <= 0.5f ? l * (s + 1.0f) : l + s - l * s;
310
- float m1 = l * 2.0f - m2;
311
-
312
- return {
313
- clamp_css_byte(css_hue_to_rgb(m1, m2, h + 1.0f / 3.0f) * 255.0f),
314
- clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255.0f),
315
- clamp_css_byte(css_hue_to_rgb(m1, m2, h - 1.0f / 3.0f) * 255.0f),
316
- alpha
317
- };
318
- }
319
- }
320
-
321
- return { };
322
- }
323
-
133
+ Color parse(const std::string& css_str);
324
134
  } // namespace CSSColorParser
@@ -0,0 +1,98 @@
1
+
2
+ #pragma once
3
+
4
+ #include <jsi/jsi.h>
5
+
6
+ namespace RNJsi
7
+ {
8
+ using namespace facebook;
9
+
10
+ enum JsiWrapperValueType
11
+ {
12
+ Undefined,
13
+ Null,
14
+ Bool,
15
+ Number,
16
+ JsiValue
17
+ };
18
+
19
+ /**
20
+ Implements a simple wrapper class for JSI primitives like numbers and boolean values. Objects,
21
+ strings and arrays are stored as values inside a property holder. The class also provides a method
22
+ for comparing values that will compare numbers, booleans and strings.
23
+ */
24
+ class JsiSimpleValueWrapper
25
+ {
26
+ public:
27
+ JsiSimpleValueWrapper(jsi::Runtime& runtime) :
28
+ _type(JsiWrapperValueType::Undefined),
29
+ _propNameId(jsi::PropNameID::forUtf8(runtime, "value"))
30
+ {}
31
+
32
+ jsi::Value getCurrent(jsi::Runtime &runtime)
33
+ {
34
+ switch (_type)
35
+ {
36
+ case JsiWrapperValueType::Undefined:
37
+ return jsi::Value::undefined();
38
+ case JsiWrapperValueType::Null:
39
+ return jsi::Value::null();
40
+ case JsiWrapperValueType::Bool:
41
+ return _boolValue;
42
+ case JsiWrapperValueType::Number:
43
+ return _numberValue;
44
+ case JsiWrapperValueType::JsiValue:
45
+ if (_valueHolder == nullptr) {
46
+ return jsi::Value::undefined();
47
+ }
48
+ return _valueHolder->getProperty(runtime, _propNameId);
49
+ }
50
+ }
51
+
52
+ void setCurrent(jsi::Runtime &runtime, const jsi::Value &value)
53
+ {
54
+ if(value.isNumber()) {
55
+ _type = JsiWrapperValueType::Number;
56
+ _numberValue = value.asNumber();
57
+ } else if(value.isBool()) {
58
+ _type = JsiWrapperValueType::Bool;
59
+ _boolValue = value.getBool();
60
+ } else if(value.isUndefined()) {
61
+ _type = JsiWrapperValueType::Undefined;
62
+ } else if(value.isNull()) {
63
+ _type = JsiWrapperValueType::Null;
64
+ } else {
65
+ _type = JsiWrapperValueType::JsiValue;
66
+ // Save as javascript object - we don't want to have to copy strings, objects and values
67
+ if(_valueHolder == nullptr) {
68
+ _valueHolder = std::make_shared<jsi::Object>(runtime);
69
+ }
70
+ _valueHolder->setProperty(runtime, _propNameId, value);
71
+ }
72
+ }
73
+
74
+ bool equals(jsi::Runtime& runtime, const jsi::Value &value) {
75
+ if(value.isNumber()) {
76
+ return _numberValue == value.asNumber();
77
+ } else if(value.isBool()) {
78
+ return _boolValue == value.getBool();
79
+ } else if(value.isUndefined()) {
80
+ return _type == JsiWrapperValueType::Undefined;
81
+ } else if(value.isNull()) {
82
+ return _type == JsiWrapperValueType::Null;
83
+ } else if(value.isString()) {
84
+ return jsi::String::strictEquals(runtime, value.asString(runtime), getCurrent(runtime).asString(runtime));
85
+ }
86
+ return false;
87
+ }
88
+
89
+ private:
90
+ jsi::PropNameID _propNameId;
91
+ std::shared_ptr<jsi::Object> _valueHolder;
92
+
93
+ bool _boolValue;
94
+ double _numberValue;
95
+
96
+ JsiWrapperValueType _type;
97
+ };
98
+ }
@@ -32,8 +32,6 @@ public:
32
32
  _args[1] = jsi::Value::undefined();
33
33
  }
34
34
 
35
- virtual ~RNSkAnimation() {}
36
-
37
35
  JSI_HOST_FUNCTION(cancel) {
38
36
  stopClock();
39
37
  return jsi::Value::undefined();