@shopify/react-native-skia 2.0.6 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/android/CMakeLists.txt +20 -1
  2. package/cpp/api/JsiSkApi.h +3 -0
  3. package/cpp/api/JsiSkImageFilterFactory.h +478 -39
  4. package/cpp/api/JsiSkPath.h +2 -1
  5. package/cpp/api/JsiSkPathFactory.h +1 -1
  6. package/cpp/api/JsiSkSkottie.h +590 -0
  7. package/cpp/api/JsiSkottieFactory.h +65 -0
  8. package/cpp/api/recorder/Command.h +1 -0
  9. package/cpp/api/recorder/Convertor.h +16 -0
  10. package/cpp/api/recorder/Drawings.h +23 -0
  11. package/cpp/api/recorder/JsiRecorder.h +6 -0
  12. package/cpp/api/recorder/RNRecorder.h +9 -0
  13. package/cpp/api/third_party/SkottieUtils.cpp +333 -0
  14. package/cpp/api/third_party/SkottieUtils.h +172 -0
  15. package/cpp/skia/modules/jsonreader/SkJSONReader.cpp +980 -0
  16. package/cpp/skia/modules/jsonreader/SkJSONReader.h +389 -0
  17. package/cpp/skia/modules/skottie/include/ExternalLayer.h +56 -0
  18. package/cpp/skia/modules/skottie/include/Skottie.h +313 -0
  19. package/cpp/skia/modules/skottie/include/SkottieProperty.h +190 -0
  20. package/cpp/skia/modules/skottie/include/SlotManager.h +113 -0
  21. package/cpp/skia/modules/skottie/include/TextShaper.h +200 -0
  22. package/cpp/skia/modules/skottie/src/SkottieValue.h +56 -0
  23. package/cpp/skia/modules/skottie/src/animator/Animator.h +89 -0
  24. package/cpp/skia/modules/skottie/src/text/Font.h +82 -0
  25. package/cpp/skia/modules/skottie/src/text/TextAdapter.h +155 -0
  26. package/cpp/skia/modules/skottie/src/text/TextAnimator.h +121 -0
  27. package/cpp/skia/modules/skottie/src/text/TextValue.h +28 -0
  28. package/cpp/skia/modules/sksg/include/SkSGClipEffect.h +61 -0
  29. package/cpp/skia/modules/sksg/include/SkSGColorFilter.h +135 -0
  30. package/cpp/skia/modules/sksg/include/SkSGDraw.h +57 -0
  31. package/cpp/skia/modules/sksg/include/SkSGEffectNode.h +50 -0
  32. package/cpp/skia/modules/sksg/include/SkSGGeometryEffect.h +181 -0
  33. package/cpp/skia/modules/sksg/include/SkSGGeometryNode.h +54 -0
  34. package/cpp/skia/modules/sksg/include/SkSGGradient.h +108 -0
  35. package/cpp/skia/modules/sksg/include/SkSGGroup.h +65 -0
  36. package/cpp/skia/modules/sksg/include/SkSGImage.h +59 -0
  37. package/cpp/skia/modules/sksg/include/SkSGInvalidationController.h +46 -0
  38. package/cpp/skia/modules/sksg/include/SkSGMaskEffect.h +65 -0
  39. package/cpp/skia/modules/sksg/include/SkSGMerge.h +74 -0
  40. package/cpp/skia/modules/sksg/include/SkSGNode.h +128 -0
  41. package/cpp/skia/modules/sksg/include/SkSGOpacityEffect.h +54 -0
  42. package/cpp/skia/modules/sksg/include/SkSGPaint.h +112 -0
  43. package/cpp/skia/modules/sksg/include/SkSGPath.h +68 -0
  44. package/cpp/skia/modules/sksg/include/SkSGPlane.h +47 -0
  45. package/cpp/skia/modules/sksg/include/SkSGRect.h +122 -0
  46. package/cpp/skia/modules/sksg/include/SkSGRenderEffect.h +283 -0
  47. package/cpp/skia/modules/sksg/include/SkSGRenderNode.h +157 -0
  48. package/cpp/skia/modules/sksg/include/SkSGScene.h +47 -0
  49. package/cpp/skia/modules/sksg/include/SkSGText.h +82 -0
  50. package/cpp/skia/modules/sksg/include/SkSGTransform.h +127 -0
  51. package/cpp/skia/src/base/SkArenaAlloc.h +371 -0
  52. package/lib/commonjs/dom/nodes/datatypes/Gradient.d.ts +15 -15
  53. package/lib/commonjs/dom/types/Drawings.d.ts +5 -1
  54. package/lib/commonjs/dom/types/Drawings.js.map +1 -1
  55. package/lib/commonjs/dom/types/NodeType.d.ts +2 -1
  56. package/lib/commonjs/dom/types/NodeType.js +2 -0
  57. package/lib/commonjs/dom/types/NodeType.js.map +1 -1
  58. package/lib/commonjs/renderer/__tests__/e2e/AdvancedImageFilters.spec.d.ts +1 -0
  59. package/lib/commonjs/renderer/__tests__/e2e/Camera.spec.d.ts +21 -0
  60. package/lib/commonjs/renderer/__tests__/e2e/LightingImageFilters.spec.d.ts +1 -0
  61. package/lib/commonjs/renderer/__tests__/e2e/Skottie.spec.d.ts +1 -0
  62. package/lib/commonjs/renderer/__tests__/setup.d.ts +5 -0
  63. package/lib/commonjs/renderer/components/Skottie.d.ts +4 -0
  64. package/lib/commonjs/renderer/components/Skottie.js +13 -0
  65. package/lib/commonjs/renderer/components/Skottie.js.map +1 -0
  66. package/lib/commonjs/renderer/components/index.d.ts +1 -0
  67. package/lib/commonjs/renderer/components/index.js +11 -0
  68. package/lib/commonjs/renderer/components/index.js.map +1 -1
  69. package/lib/commonjs/skia/types/ImageFilter/ImageFilterFactory.d.ts +252 -15
  70. package/lib/commonjs/skia/types/ImageFilter/ImageFilterFactory.js.map +1 -1
  71. package/lib/commonjs/skia/types/Matrix4.d.ts +11 -2
  72. package/lib/commonjs/skia/types/Matrix4.js +42 -1
  73. package/lib/commonjs/skia/types/Matrix4.js.map +1 -1
  74. package/lib/commonjs/skia/types/Recorder.d.ts +2 -1
  75. package/lib/commonjs/skia/types/Recorder.js.map +1 -1
  76. package/lib/commonjs/skia/types/Skia.d.ts +2 -0
  77. package/lib/commonjs/skia/types/Skia.js.map +1 -1
  78. package/lib/commonjs/skia/types/Skottie.d.ts +223 -0
  79. package/lib/commonjs/skia/types/Skottie.js +73 -0
  80. package/lib/commonjs/skia/types/Skottie.js.map +1 -0
  81. package/lib/commonjs/skia/types/index.d.ts +1 -0
  82. package/lib/commonjs/skia/types/index.js +11 -0
  83. package/lib/commonjs/skia/types/index.js.map +1 -1
  84. package/lib/commonjs/skia/web/JsiSkImageFilterFactory.d.ts +29 -12
  85. package/lib/commonjs/skia/web/JsiSkImageFilterFactory.js +88 -19
  86. package/lib/commonjs/skia/web/JsiSkImageFilterFactory.js.map +1 -1
  87. package/lib/commonjs/skia/web/JsiSkia.js +2 -0
  88. package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
  89. package/lib/commonjs/skia/web/JsiSkottieAnimation.d.ts +59 -0
  90. package/lib/commonjs/skia/web/JsiSkottieAnimation.js +243 -0
  91. package/lib/commonjs/skia/web/JsiSkottieAnimation.js.map +1 -0
  92. package/lib/commonjs/skia/web/JsiSkottieFactory.d.ts +9 -0
  93. package/lib/commonjs/skia/web/JsiSkottieFactory.js +26 -0
  94. package/lib/commonjs/skia/web/JsiSkottieFactory.js.map +1 -0
  95. package/lib/commonjs/sksg/Elements.d.ts +2 -1
  96. package/lib/commonjs/sksg/Elements.js.map +1 -1
  97. package/lib/commonjs/sksg/Recorder/Core.d.ts +4 -2
  98. package/lib/commonjs/sksg/Recorder/Core.js +1 -0
  99. package/lib/commonjs/sksg/Recorder/Core.js.map +1 -1
  100. package/lib/commonjs/sksg/Recorder/Player.js +2 -0
  101. package/lib/commonjs/sksg/Recorder/Player.js.map +1 -1
  102. package/lib/commonjs/sksg/Recorder/ReanimatedRecorder.d.ts +2 -1
  103. package/lib/commonjs/sksg/Recorder/ReanimatedRecorder.js +4 -0
  104. package/lib/commonjs/sksg/Recorder/ReanimatedRecorder.js.map +1 -1
  105. package/lib/commonjs/sksg/Recorder/Recorder.d.ts +2 -1
  106. package/lib/commonjs/sksg/Recorder/Recorder.js +6 -0
  107. package/lib/commonjs/sksg/Recorder/Recorder.js.map +1 -1
  108. package/lib/commonjs/sksg/Recorder/Visitor.js +3 -0
  109. package/lib/commonjs/sksg/Recorder/Visitor.js.map +1 -1
  110. package/lib/commonjs/sksg/Recorder/commands/Drawing.d.ts +2 -2
  111. package/lib/commonjs/sksg/Recorder/commands/Drawing.js +11 -4
  112. package/lib/commonjs/sksg/Recorder/commands/Drawing.js.map +1 -1
  113. package/lib/commonjs/sksg/Recorder/commands/ImageFilters.js +1 -1
  114. package/lib/commonjs/sksg/Recorder/commands/ImageFilters.js.map +1 -1
  115. package/lib/module/dom/nodes/datatypes/Gradient.d.ts +15 -15
  116. package/lib/module/dom/types/Drawings.d.ts +5 -1
  117. package/lib/module/dom/types/Drawings.js.map +1 -1
  118. package/lib/module/dom/types/NodeType.d.ts +2 -1
  119. package/lib/module/dom/types/NodeType.js +2 -0
  120. package/lib/module/dom/types/NodeType.js.map +1 -1
  121. package/lib/module/renderer/__tests__/e2e/AdvancedImageFilters.spec.d.ts +1 -0
  122. package/lib/module/renderer/__tests__/e2e/Camera.spec.d.ts +21 -0
  123. package/lib/module/renderer/__tests__/e2e/LightingImageFilters.spec.d.ts +1 -0
  124. package/lib/module/renderer/__tests__/e2e/Skottie.spec.d.ts +1 -0
  125. package/lib/module/renderer/__tests__/setup.d.ts +5 -0
  126. package/lib/module/renderer/components/Skottie.d.ts +4 -0
  127. package/lib/module/renderer/components/Skottie.js +5 -0
  128. package/lib/module/renderer/components/Skottie.js.map +1 -0
  129. package/lib/module/renderer/components/index.d.ts +1 -0
  130. package/lib/module/renderer/components/index.js +1 -0
  131. package/lib/module/renderer/components/index.js.map +1 -1
  132. package/lib/module/skia/types/ImageFilter/ImageFilterFactory.d.ts +252 -15
  133. package/lib/module/skia/types/ImageFilter/ImageFilterFactory.js.map +1 -1
  134. package/lib/module/skia/types/Matrix4.d.ts +11 -2
  135. package/lib/module/skia/types/Matrix4.js +40 -0
  136. package/lib/module/skia/types/Matrix4.js.map +1 -1
  137. package/lib/module/skia/types/Recorder.d.ts +2 -1
  138. package/lib/module/skia/types/Recorder.js.map +1 -1
  139. package/lib/module/skia/types/Skia.d.ts +2 -0
  140. package/lib/module/skia/types/Skia.js.map +1 -1
  141. package/lib/module/skia/types/Skottie.d.ts +223 -0
  142. package/lib/module/skia/types/Skottie.js +74 -0
  143. package/lib/module/skia/types/Skottie.js.map +1 -0
  144. package/lib/module/skia/types/index.d.ts +1 -0
  145. package/lib/module/skia/types/index.js +1 -0
  146. package/lib/module/skia/types/index.js.map +1 -1
  147. package/lib/module/skia/web/JsiSkImageFilterFactory.d.ts +29 -12
  148. package/lib/module/skia/web/JsiSkImageFilterFactory.js +88 -19
  149. package/lib/module/skia/web/JsiSkImageFilterFactory.js.map +1 -1
  150. package/lib/module/skia/web/JsiSkia.js +2 -0
  151. package/lib/module/skia/web/JsiSkia.js.map +1 -1
  152. package/lib/module/skia/web/JsiSkottieAnimation.d.ts +59 -0
  153. package/lib/module/skia/web/JsiSkottieAnimation.js +236 -0
  154. package/lib/module/skia/web/JsiSkottieAnimation.js.map +1 -0
  155. package/lib/module/skia/web/JsiSkottieFactory.d.ts +9 -0
  156. package/lib/module/skia/web/JsiSkottieFactory.js +19 -0
  157. package/lib/module/skia/web/JsiSkottieFactory.js.map +1 -0
  158. package/lib/module/sksg/Elements.d.ts +2 -1
  159. package/lib/module/sksg/Elements.js.map +1 -1
  160. package/lib/module/sksg/Recorder/Core.d.ts +4 -2
  161. package/lib/module/sksg/Recorder/Core.js +1 -0
  162. package/lib/module/sksg/Recorder/Core.js.map +1 -1
  163. package/lib/module/sksg/Recorder/Player.js +3 -1
  164. package/lib/module/sksg/Recorder/Player.js.map +1 -1
  165. package/lib/module/sksg/Recorder/ReanimatedRecorder.d.ts +2 -1
  166. package/lib/module/sksg/Recorder/ReanimatedRecorder.js +4 -0
  167. package/lib/module/sksg/Recorder/ReanimatedRecorder.js.map +1 -1
  168. package/lib/module/sksg/Recorder/Recorder.d.ts +2 -1
  169. package/lib/module/sksg/Recorder/Recorder.js +6 -0
  170. package/lib/module/sksg/Recorder/Recorder.js.map +1 -1
  171. package/lib/module/sksg/Recorder/Visitor.js +3 -0
  172. package/lib/module/sksg/Recorder/Visitor.js.map +1 -1
  173. package/lib/module/sksg/Recorder/commands/Drawing.d.ts +2 -2
  174. package/lib/module/sksg/Recorder/commands/Drawing.js +9 -2
  175. package/lib/module/sksg/Recorder/commands/Drawing.js.map +1 -1
  176. package/lib/module/sksg/Recorder/commands/ImageFilters.js +1 -1
  177. package/lib/module/sksg/Recorder/commands/ImageFilters.js.map +1 -1
  178. package/lib/typescript/lib/commonjs/renderer/components/Skottie.d.ts +2 -0
  179. package/lib/typescript/lib/commonjs/skia/types/Matrix4.d.ts +1 -0
  180. package/lib/typescript/lib/commonjs/skia/types/Skottie.d.ts +6 -0
  181. package/lib/typescript/lib/commonjs/skia/web/JsiSkImageFilterFactory.d.ts +22 -5
  182. package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +2 -0
  183. package/lib/typescript/lib/commonjs/skia/web/JsiSkottieAnimation.d.ts +48 -0
  184. package/lib/typescript/lib/commonjs/skia/web/JsiSkottieFactory.d.ts +6 -0
  185. package/lib/typescript/lib/commonjs/sksg/Recorder/ReanimatedRecorder.d.ts +1 -0
  186. package/lib/typescript/lib/commonjs/sksg/Recorder/Recorder.d.ts +1 -0
  187. package/lib/typescript/lib/commonjs/sksg/Recorder/commands/Drawing.d.ts +1 -1
  188. package/lib/typescript/lib/module/mock/index.d.ts +7 -0
  189. package/lib/typescript/lib/module/renderer/components/Skottie.d.ts +2 -0
  190. package/lib/typescript/lib/module/renderer/components/index.d.ts +1 -0
  191. package/lib/typescript/lib/module/skia/Skia.web.d.ts +1 -0
  192. package/lib/typescript/lib/module/skia/types/Matrix4.d.ts +1 -0
  193. package/lib/typescript/lib/module/skia/types/Skottie.d.ts +5 -0
  194. package/lib/typescript/lib/module/skia/types/index.d.ts +1 -0
  195. package/lib/typescript/lib/module/skia/web/JsiSkImageFilterFactory.d.ts +22 -5
  196. package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +2 -0
  197. package/lib/typescript/lib/module/skia/web/JsiSkottieAnimation.d.ts +47 -0
  198. package/lib/typescript/lib/module/skia/web/JsiSkottieFactory.d.ts +5 -0
  199. package/lib/typescript/lib/module/sksg/Recorder/ReanimatedRecorder.d.ts +1 -0
  200. package/lib/typescript/lib/module/sksg/Recorder/Recorder.d.ts +1 -0
  201. package/lib/typescript/lib/module/sksg/Recorder/commands/Drawing.d.ts +1 -1
  202. package/lib/typescript/src/dom/nodes/datatypes/Gradient.d.ts +15 -15
  203. package/lib/typescript/src/dom/types/Drawings.d.ts +5 -1
  204. package/lib/typescript/src/dom/types/NodeType.d.ts +2 -1
  205. package/lib/typescript/src/renderer/__tests__/e2e/AdvancedImageFilters.spec.d.ts +1 -0
  206. package/lib/typescript/src/renderer/__tests__/e2e/Camera.spec.d.ts +21 -0
  207. package/lib/typescript/src/renderer/__tests__/e2e/LightingImageFilters.spec.d.ts +1 -0
  208. package/lib/typescript/src/renderer/__tests__/e2e/Skottie.spec.d.ts +1 -0
  209. package/lib/typescript/src/renderer/__tests__/setup.d.ts +5 -0
  210. package/lib/typescript/src/renderer/components/Skottie.d.ts +4 -0
  211. package/lib/typescript/src/renderer/components/index.d.ts +1 -0
  212. package/lib/typescript/src/skia/types/ImageFilter/ImageFilterFactory.d.ts +252 -15
  213. package/lib/typescript/src/skia/types/Matrix4.d.ts +11 -2
  214. package/lib/typescript/src/skia/types/Recorder.d.ts +2 -1
  215. package/lib/typescript/src/skia/types/Skia.d.ts +2 -0
  216. package/lib/typescript/src/skia/types/Skottie.d.ts +223 -0
  217. package/lib/typescript/src/skia/types/index.d.ts +1 -0
  218. package/lib/typescript/src/skia/web/JsiSkImageFilterFactory.d.ts +29 -12
  219. package/lib/typescript/src/skia/web/JsiSkottieAnimation.d.ts +59 -0
  220. package/lib/typescript/src/skia/web/JsiSkottieFactory.d.ts +9 -0
  221. package/lib/typescript/src/sksg/Elements.d.ts +2 -1
  222. package/lib/typescript/src/sksg/Recorder/Core.d.ts +4 -2
  223. package/lib/typescript/src/sksg/Recorder/ReanimatedRecorder.d.ts +2 -1
  224. package/lib/typescript/src/sksg/Recorder/Recorder.d.ts +2 -1
  225. package/lib/typescript/src/sksg/Recorder/commands/Drawing.d.ts +2 -2
  226. package/libs/android/arm64-v8a/libjsonreader.a +0 -0
  227. package/libs/android/armeabi-v7a/libjsonreader.a +0 -0
  228. package/libs/android/x86/libjsonreader.a +0 -0
  229. package/libs/android/x86_64/libjsonreader.a +0 -0
  230. package/libs/apple/libpathops.xcframework/Info.plist +9 -9
  231. package/libs/apple/libskia.xcframework/Info.plist +14 -14
  232. package/libs/apple/libskottie.xcframework/Info.plist +13 -13
  233. package/libs/apple/libskparagraph.xcframework/Info.plist +15 -15
  234. package/libs/apple/libsksg.xcframework/Info.plist +13 -13
  235. package/libs/apple/libskshaper.xcframework/Info.plist +15 -15
  236. package/libs/apple/libskunicode_core.xcframework/Info.plist +9 -9
  237. package/libs/apple/libskunicode_libgrapheme.xcframework/Info.plist +13 -13
  238. package/libs/apple/libsvg.xcframework/Info.plist +15 -15
  239. package/package.json +1 -1
  240. package/react-native-skia.podspec +4 -2
  241. package/src/__tests__/snapshots/matrix4/camera-corner.png +0 -0
  242. package/src/__tests__/snapshots/matrix4/camera-offset.png +0 -0
  243. package/src/__tests__/snapshots/matrix4/camera-top-left-center.png +0 -0
  244. package/src/__tests__/snapshots/matrix4/camera-zoom-out.png +0 -0
  245. package/src/__tests__/snapshots/matrix4/full-rect.png +0 -0
  246. package/src/__tests__/snapshots/matrix4/rect.png +0 -0
  247. package/src/__tests__/snapshots/matrix4/scaled-rect.png +0 -0
  248. package/src/__tests__/snapshots/matrix4/test-perspective.png +0 -0
  249. package/src/__tests__/snapshots/matrix4/test-perspective2.png +0 -0
  250. package/src/dom/types/Drawings.ts +6 -0
  251. package/src/dom/types/NodeType.ts +2 -0
  252. package/src/renderer/__tests__/e2e/AdvancedImageFilters.spec.tsx +492 -0
  253. package/src/renderer/__tests__/e2e/Camera.spec.tsx +475 -0
  254. package/src/renderer/__tests__/e2e/LightingImageFilters.spec.tsx +1478 -0
  255. package/src/renderer/__tests__/e2e/Skottie.spec.tsx +440 -0
  256. package/src/renderer/__tests__/e2e/setup/skottie/basic_slots.json +1118 -0
  257. package/src/renderer/__tests__/e2e/setup/skottie/color-props.json +1 -0
  258. package/src/renderer/__tests__/e2e/setup/skottie/confetti.json +5899 -0
  259. package/src/renderer/__tests__/e2e/setup/skottie/drinks.json +43857 -0
  260. package/src/renderer/__tests__/e2e/setup/skottie/fingerprint.json +1 -0
  261. package/src/renderer/__tests__/e2e/setup/skottie/lego_loader.json +29540 -0
  262. package/src/renderer/__tests__/e2e/setup/skottie/new-drop.json +1 -0
  263. package/src/renderer/__tests__/e2e/setup/skottie/onboarding.json +1 -0
  264. package/src/renderer/__tests__/e2e/setup/skottie/text-layer.json +1 -0
  265. package/src/renderer/__tests__/setup.tsx +23 -0
  266. package/src/renderer/components/Skottie.tsx +8 -0
  267. package/src/renderer/components/index.ts +1 -0
  268. package/src/skia/__tests__/assets/Avenir-Heavy.ttf +0 -0
  269. package/src/skia/types/ImageFilter/ImageFilterFactory.ts +391 -21
  270. package/src/skia/types/Matrix4.ts +108 -2
  271. package/src/skia/types/Recorder.ts +2 -0
  272. package/src/skia/types/Skia.ts +2 -0
  273. package/src/skia/types/Skottie.ts +266 -0
  274. package/src/skia/types/index.ts +1 -0
  275. package/src/skia/web/JsiSkImageFilterFactory.ts +266 -31
  276. package/src/skia/web/JsiSkia.ts +2 -0
  277. package/src/skia/web/JsiSkottieAnimation.ts +259 -0
  278. package/src/skia/web/JsiSkottieFactory.ts +25 -0
  279. package/src/sksg/Elements.tsx +2 -0
  280. package/src/sksg/Recorder/Core.ts +3 -0
  281. package/src/sksg/Recorder/Player.ts +3 -0
  282. package/src/sksg/Recorder/ReanimatedRecorder.ts +6 -0
  283. package/src/sksg/Recorder/Recorder.ts +5 -0
  284. package/src/sksg/Recorder/Visitor.ts +3 -0
  285. package/src/sksg/Recorder/commands/Drawing.ts +7 -3
  286. package/src/sksg/Recorder/commands/ImageFilters.ts +1 -1
  287. package/cpp/skia/include/pathops/SkPathOps.h +0 -17
@@ -0,0 +1,28 @@
1
+ /*
2
+ * Copyright 2019 Google Inc.
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef SkottieTextValue_DEFINED
9
+ #define SkottieTextValue_DEFINED
10
+
11
+ #include "modules/skottie/include/SkottieProperty.h"
12
+
13
+ namespace skjson { class Value; }
14
+
15
+ namespace skottie {
16
+ typedef TextPropertyValue TextValue;
17
+
18
+ namespace internal {
19
+
20
+ class AnimationBuilder;
21
+
22
+ // Unlike other types, TextValue parsing requires access to an AnimationBuilder.
23
+ bool Parse(const skjson::Value&, const AnimationBuilder&, TextValue*);
24
+
25
+ } // namespace internal
26
+ } // namespace skottie
27
+
28
+ #endif // SkottieTextValue_DEFINED
@@ -0,0 +1,61 @@
1
+ /*
2
+ * Copyright 2018 Google Inc.
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef SkSGClipEffect_DEFINED
9
+ #define SkSGClipEffect_DEFINED
10
+
11
+ #include "include/core/SkRect.h"
12
+ #include "include/core/SkRefCnt.h"
13
+ #include "modules/sksg/include/SkSGEffectNode.h"
14
+ #include "modules/sksg/include/SkSGGeometryNode.h"
15
+ #include "modules/sksg/include/SkSGRenderNode.h"
16
+
17
+ #include <utility>
18
+
19
+ class SkCanvas;
20
+ class SkMatrix;
21
+ struct SkPoint;
22
+
23
+ namespace sksg {
24
+ class InvalidationController;
25
+
26
+ /**
27
+ * Concrete Effect node, applying a clip to its descendants.
28
+ *
29
+ */
30
+ class ClipEffect final : public EffectNode {
31
+ public:
32
+ static sk_sp<ClipEffect> Make(sk_sp<RenderNode> child, sk_sp<GeometryNode> clip,
33
+ bool aa = false, bool force_clip = false) {
34
+ return (child && clip)
35
+ ? sk_sp<ClipEffect>(new ClipEffect(std::move(child), std::move(clip), aa, force_clip))
36
+ : nullptr;
37
+ }
38
+
39
+ ~ClipEffect() override;
40
+
41
+ protected:
42
+ ClipEffect(sk_sp<RenderNode>, sk_sp<GeometryNode>, bool aa, bool force_clip);
43
+
44
+ void onRender(SkCanvas*, const RenderContext*) const override;
45
+ const RenderNode* onNodeAt(const SkPoint&) const override;
46
+
47
+ SkRect onRevalidate(InvalidationController*, const SkMatrix&) override;
48
+
49
+ private:
50
+ const sk_sp<GeometryNode> fClipNode;
51
+ const bool fAntiAlias,
52
+ fForceClip;
53
+
54
+ bool fNoop = false;
55
+
56
+ using INHERITED = EffectNode;
57
+ };
58
+
59
+ } // namespace sksg
60
+
61
+ #endif // SkSGClipEffect_DEFINED
@@ -0,0 +1,135 @@
1
+ /*
2
+ * Copyright 2018 Google Inc.
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef SkSGColorFilter_DEFINED
9
+ #define SkSGColorFilter_DEFINED
10
+
11
+ #include "include/core/SkColorFilter.h"
12
+ #include "include/core/SkRect.h"
13
+ #include "include/core/SkRefCnt.h"
14
+ #include "modules/sksg/include/SkSGEffectNode.h"
15
+ #include "modules/sksg/include/SkSGNode.h"
16
+
17
+ #include <vector>
18
+
19
+ class SkCanvas;
20
+ class SkMatrix;
21
+ enum class SkBlendMode;
22
+ struct SkPoint;
23
+
24
+ namespace sksg {
25
+
26
+ class Color;
27
+ class InvalidationController;
28
+ class RenderNode;
29
+
30
+ /**
31
+ * Base class for nodes which apply a color filter when rendering their descendants.
32
+ */
33
+ class ColorFilter : public EffectNode {
34
+ protected:
35
+ explicit ColorFilter(sk_sp<RenderNode>);
36
+
37
+ void onRender(SkCanvas*, const RenderContext*) const final;
38
+ const RenderNode* onNodeAt(const SkPoint&) const final;
39
+
40
+ SkRect onRevalidate(InvalidationController*, const SkMatrix&) final;
41
+
42
+ virtual sk_sp<SkColorFilter> onRevalidateFilter() = 0;
43
+
44
+ private:
45
+ sk_sp<SkColorFilter> fColorFilter;
46
+
47
+ using INHERITED = EffectNode;
48
+ };
49
+
50
+ /**
51
+ * Wrapper for externally-managed SkColorFilters.
52
+ *
53
+ * Allows attaching non-sksg color filters to the render tree.
54
+ */
55
+ class ExternalColorFilter final : public EffectNode {
56
+ public:
57
+ static sk_sp<ExternalColorFilter> Make(sk_sp<RenderNode> child);
58
+
59
+ ~ExternalColorFilter() override;
60
+
61
+ enum class Coverage {
62
+ kNormal, // the effect applies to the regular content coverage
63
+ kBoundingBox, // the effect applies to the full content bounding box
64
+ };
65
+
66
+ SG_ATTRIBUTE(ColorFilter, sk_sp<SkColorFilter>, fColorFilter)
67
+ SG_ATTRIBUTE(Coverage , Coverage , fCoverage )
68
+
69
+ protected:
70
+ void onRender(SkCanvas*, const RenderContext*) const override;
71
+
72
+ private:
73
+ explicit ExternalColorFilter(sk_sp<RenderNode>);
74
+
75
+ sk_sp<SkColorFilter> fColorFilter;
76
+ Coverage fCoverage = Coverage::kNormal;
77
+
78
+ using INHERITED = EffectNode;
79
+ };
80
+
81
+ /**
82
+ * Concrete SkBlendModeColorFilter Effect node.
83
+ */
84
+ class ModeColorFilter final : public ColorFilter {
85
+ public:
86
+ ~ModeColorFilter() override;
87
+
88
+ static sk_sp<ModeColorFilter> Make(sk_sp<RenderNode> child,
89
+ sk_sp<Color> color,
90
+ SkBlendMode mode);
91
+
92
+ protected:
93
+ sk_sp<SkColorFilter> onRevalidateFilter() override;
94
+
95
+ private:
96
+ ModeColorFilter(sk_sp<RenderNode>, sk_sp<Color>, SkBlendMode);
97
+
98
+ const sk_sp<Color> fColor;
99
+ const SkBlendMode fMode;
100
+
101
+ using INHERITED = ColorFilter;
102
+ };
103
+
104
+ /**
105
+ * Tint/multi-tone color effect: maps RGB colors to the [C0,C1][C1,C2]..[Cn-1,Cn] gradient
106
+ * based on input luminance (where the colors are evenly distributed across the luminance domain),
107
+ * then mixes with the input based on weight. Leaves alpha unchanged.
108
+ */
109
+ class GradientColorFilter final : public ColorFilter {
110
+ public:
111
+ ~GradientColorFilter() override;
112
+
113
+ static sk_sp<GradientColorFilter> Make(sk_sp<RenderNode> child,
114
+ sk_sp<Color> c0, sk_sp<Color> c1);
115
+ static sk_sp<GradientColorFilter> Make(sk_sp<RenderNode> child,
116
+ std::vector<sk_sp<Color>>);
117
+
118
+ SG_ATTRIBUTE(Weight, float, fWeight)
119
+
120
+ protected:
121
+ sk_sp<SkColorFilter> onRevalidateFilter() override;
122
+
123
+ private:
124
+ GradientColorFilter(sk_sp<RenderNode>, std::vector<sk_sp<Color>>);
125
+
126
+ const std::vector<sk_sp<Color>> fColors;
127
+
128
+ float fWeight = 0;
129
+
130
+ using INHERITED = ColorFilter;
131
+ };
132
+
133
+ } // namespace sksg
134
+
135
+ #endif // SkSGColorFilter_DEFINED
@@ -0,0 +1,57 @@
1
+ /*
2
+ * Copyright 2017 Google Inc.
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef SkSGDraw_DEFINED
9
+ #define SkSGDraw_DEFINED
10
+
11
+ #include "include/core/SkRect.h"
12
+ #include "include/core/SkRefCnt.h"
13
+ #include "modules/sksg/include/SkSGGeometryNode.h"
14
+ #include "modules/sksg/include/SkSGPaint.h"
15
+ #include "modules/sksg/include/SkSGRenderNode.h"
16
+
17
+ #include <utility>
18
+
19
+ class SkCanvas;
20
+ class SkMatrix;
21
+ struct SkPoint;
22
+
23
+ namespace sksg {
24
+ class InvalidationController;
25
+
26
+ /**
27
+ * Concrete rendering node.
28
+ *
29
+ * Wraps and draws a [geometry, paint] tuple.
30
+ *
31
+ * Think Skia SkCanvas::drawFoo(foo, paint) calls.
32
+ */
33
+ class Draw : public RenderNode {
34
+ public:
35
+ static sk_sp<Draw> Make(sk_sp<GeometryNode> geo, sk_sp<PaintNode> paint) {
36
+ return (geo && paint) ? sk_sp<Draw>(new Draw(std::move(geo), std::move(paint))) : nullptr;
37
+ }
38
+
39
+ protected:
40
+ Draw(sk_sp<GeometryNode>, sk_sp<PaintNode> paint);
41
+ ~Draw() override;
42
+
43
+ void onRender(SkCanvas*, const RenderContext*) const override;
44
+ const RenderNode* onNodeAt(const SkPoint&) const override;
45
+
46
+ SkRect onRevalidate(InvalidationController*, const SkMatrix&) override;
47
+
48
+ private:
49
+ sk_sp<GeometryNode> fGeometry;
50
+ sk_sp<PaintNode> fPaint;
51
+
52
+ using INHERITED = RenderNode;
53
+ };
54
+
55
+ } // namespace sksg
56
+
57
+ #endif // SkSGDraw_DEFINED
@@ -0,0 +1,50 @@
1
+ /*
2
+ * Copyright 2017 Google Inc.
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef SkSGEffectNode_DEFINED
9
+ #define SkSGEffectNode_DEFINED
10
+
11
+ #include "include/core/SkRect.h"
12
+ #include "include/core/SkRefCnt.h"
13
+ #include "modules/sksg/include/SkSGRenderNode.h"
14
+
15
+ #include <cstdint>
16
+
17
+ class SkCanvas;
18
+ class SkMatrix;
19
+ struct SkPoint;
20
+
21
+ namespace sksg {
22
+ class InvalidationController;
23
+
24
+ /**
25
+ * Base class for nodes which apply some transformation when rendering
26
+ * their descendants.
27
+ *
28
+ * This includes transforms, clipping, filters, etc.
29
+ */
30
+ class EffectNode : public RenderNode {
31
+ protected:
32
+ explicit EffectNode(sk_sp<RenderNode>, uint32_t inval_traits = 0);
33
+ ~EffectNode() override;
34
+
35
+ void onRender(SkCanvas*, const RenderContext*) const override;
36
+ const RenderNode* onNodeAt(const SkPoint&) const override;
37
+
38
+ SkRect onRevalidate(InvalidationController*, const SkMatrix&) override;
39
+
40
+ const sk_sp<RenderNode>& getChild() const { return fChild; }
41
+
42
+ private:
43
+ sk_sp<RenderNode> fChild;
44
+
45
+ using INHERITED = RenderNode;
46
+ };
47
+
48
+ } // namespace sksg
49
+
50
+ #endif // SkSGEffectNode_DEFINED
@@ -0,0 +1,181 @@
1
+ /*
2
+ * Copyright 2020 Google Inc.
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef SkSGGeometryEffect_DEFINED
9
+ #define SkSGGeometryEffect_DEFINED
10
+
11
+ #include "include/core/SkPaint.h"
12
+ #include "include/core/SkPath.h"
13
+ #include "include/core/SkRect.h"
14
+ #include "include/core/SkRefCnt.h"
15
+ #include "include/core/SkScalar.h"
16
+ #include "include/effects/SkTrimPathEffect.h"
17
+ #include "modules/sksg/include/SkSGGeometryNode.h"
18
+ #include "modules/sksg/include/SkSGNode.h"
19
+ #include "modules/sksg/include/SkSGTransform.h"
20
+
21
+ #include <utility>
22
+ #include <vector>
23
+
24
+ class SkCanvas;
25
+ class SkMatrix;
26
+ struct SkPoint;
27
+
28
+ namespace sksg {
29
+ class InvalidationController;
30
+
31
+ /**
32
+ * Base class for geometry effects.
33
+ */
34
+ class GeometryEffect : public GeometryNode {
35
+ protected:
36
+ explicit GeometryEffect(sk_sp<GeometryNode>);
37
+ ~GeometryEffect() override;
38
+
39
+ void onClip(SkCanvas*, bool antiAlias) const final;
40
+ void onDraw(SkCanvas*, const SkPaint&) const final;
41
+ bool onContains(const SkPoint&) const final;
42
+
43
+ SkRect onRevalidate(InvalidationController*, const SkMatrix&) final;
44
+ SkPath onAsPath() const final;
45
+
46
+ virtual SkPath onRevalidateEffect(const sk_sp<GeometryNode>&, const SkMatrix&) = 0;
47
+
48
+ private:
49
+ const sk_sp<GeometryNode> fChild;
50
+ SkPath fPath; // transformed child cache.
51
+
52
+ using INHERITED = GeometryNode;
53
+ };
54
+
55
+ /**
56
+ * Apply a trim effect to the child geometry.
57
+ */
58
+ class TrimEffect final : public GeometryEffect {
59
+ public:
60
+ static sk_sp<TrimEffect> Make(sk_sp<GeometryNode> child) {
61
+ return child ? sk_sp<TrimEffect>(new TrimEffect(std::move(child))) : nullptr;
62
+ }
63
+
64
+ SG_ATTRIBUTE(Start , SkScalar , fStart )
65
+ SG_ATTRIBUTE(Stop , SkScalar , fStop )
66
+ SG_ATTRIBUTE(Mode , SkTrimPathEffect::Mode, fMode )
67
+
68
+ private:
69
+ explicit TrimEffect(sk_sp<GeometryNode> child) : INHERITED(std::move(child)) {}
70
+
71
+ SkPath onRevalidateEffect(const sk_sp<GeometryNode>&, const SkMatrix&) override;
72
+
73
+ SkScalar fStart = 0,
74
+ fStop = 1;
75
+ SkTrimPathEffect::Mode fMode = SkTrimPathEffect::Mode::kNormal;
76
+
77
+ using INHERITED = GeometryEffect;
78
+ };
79
+
80
+ /**
81
+ * Apply a transform to a GeometryNode.
82
+ */
83
+ class GeometryTransform final : public GeometryEffect {
84
+ public:
85
+ static sk_sp<GeometryTransform> Make(sk_sp<GeometryNode> child, sk_sp<Transform> transform) {
86
+ return child && transform
87
+ ? sk_sp<GeometryTransform>(new GeometryTransform(std::move(child),
88
+ std::move(transform)))
89
+ : nullptr;
90
+ }
91
+
92
+ ~GeometryTransform() override;
93
+
94
+ const sk_sp<Transform>& getTransform() const { return fTransform; }
95
+
96
+ private:
97
+ GeometryTransform(sk_sp<GeometryNode>, sk_sp<Transform>);
98
+
99
+ SkPath onRevalidateEffect(const sk_sp<GeometryNode>&, const SkMatrix&) override;
100
+
101
+ const sk_sp<Transform> fTransform;
102
+
103
+ using INHERITED = GeometryEffect;
104
+ };
105
+
106
+ /**
107
+ * Apply a dash effect to the child geometry.
108
+ *
109
+ * Follows the same semantics as SkDashPathEffect, with one minor tweak: when the number of
110
+ * intervals is odd, they are repeated once more to attain an even sequence (same as SVG
111
+ * stroke-dasharray: https://www.w3.org/TR/SVG11/painting.html#StrokeDasharrayProperty).
112
+ */
113
+ class DashEffect final : public GeometryEffect {
114
+ public:
115
+ static sk_sp<DashEffect> Make(sk_sp<GeometryNode> child) {
116
+ return child ? sk_sp<DashEffect>(new DashEffect(std::move(child))) : nullptr;
117
+ }
118
+
119
+ SG_ATTRIBUTE(Intervals, std::vector<float>, fIntervals)
120
+ SG_ATTRIBUTE(Phase, float , fPhase )
121
+
122
+ private:
123
+ explicit DashEffect(sk_sp<GeometryNode> child) : INHERITED(std::move(child)) {}
124
+
125
+ SkPath onRevalidateEffect(const sk_sp<GeometryNode>&, const SkMatrix&) override;
126
+
127
+ std::vector<float> fIntervals;
128
+ float fPhase = 0;
129
+
130
+ using INHERITED = GeometryEffect;
131
+ };
132
+
133
+ /**
134
+ * Apply a rounded-corner effect to the child geometry.
135
+ */
136
+ class RoundEffect final : public GeometryEffect {
137
+ public:
138
+ static sk_sp<RoundEffect> Make(sk_sp<GeometryNode> child) {
139
+ return child ? sk_sp<RoundEffect>(new RoundEffect(std::move(child))) : nullptr;
140
+ }
141
+
142
+ SG_ATTRIBUTE(Radius, SkScalar, fRadius)
143
+
144
+ private:
145
+ explicit RoundEffect(sk_sp<GeometryNode> child) : INHERITED(std::move(child)) {}
146
+
147
+ SkPath onRevalidateEffect(const sk_sp<GeometryNode>&, const SkMatrix&) override;
148
+
149
+ SkScalar fRadius = 0;
150
+
151
+ using INHERITED = GeometryEffect;
152
+ };
153
+
154
+ /**
155
+ * Apply an offset effect to the child geometry.
156
+ */
157
+ class OffsetEffect final : public GeometryEffect {
158
+ public:
159
+ static sk_sp<OffsetEffect> Make(sk_sp<GeometryNode> child) {
160
+ return child ? sk_sp<OffsetEffect>(new OffsetEffect(std::move(child))) : nullptr;
161
+ }
162
+
163
+ SG_ATTRIBUTE(Offset , SkScalar , fOffset )
164
+ SG_ATTRIBUTE(MiterLimit , SkScalar , fMiterLimit)
165
+ SG_ATTRIBUTE(Join , SkPaint::Join, fJoin )
166
+
167
+ private:
168
+ explicit OffsetEffect(sk_sp<GeometryNode> child) : INHERITED(std::move(child)) {}
169
+
170
+ SkPath onRevalidateEffect(const sk_sp<GeometryNode>&, const SkMatrix&) override;
171
+
172
+ SkScalar fOffset = 0,
173
+ fMiterLimit = 4;
174
+ SkPaint::Join fJoin = SkPaint::kMiter_Join;
175
+
176
+ using INHERITED = GeometryEffect;
177
+ };
178
+
179
+ } // namespace sksg
180
+
181
+ #endif // SkSGGeometryEffect_DEFINED
@@ -0,0 +1,54 @@
1
+ /*
2
+ * Copyright 2017 Google Inc.
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef SkSGGeometryNode_DEFINED
9
+ #define SkSGGeometryNode_DEFINED
10
+
11
+ #include "modules/sksg/include/SkSGNode.h"
12
+
13
+ class SkCanvas;
14
+ class SkPaint;
15
+ class SkPath;
16
+ struct SkPoint;
17
+
18
+ namespace sksg {
19
+
20
+ /**
21
+ * Base class for nodes which provide 'geometry' (as opposed to paint)
22
+ * for drawing.
23
+ *
24
+ * Think SkRect, SkPath, etc.
25
+ */
26
+ class GeometryNode : public Node {
27
+ public:
28
+ void clip(SkCanvas*, bool antiAlias) const;
29
+ void draw(SkCanvas*, const SkPaint&) const;
30
+
31
+ bool contains(const SkPoint&) const;
32
+
33
+ SkPath asPath() const;
34
+
35
+ protected:
36
+ GeometryNode();
37
+
38
+ virtual void onClip(SkCanvas*, bool antiAlias) const = 0;
39
+
40
+ virtual void onDraw(SkCanvas*, const SkPaint&) const = 0;
41
+
42
+ virtual bool onContains(const SkPoint&) const = 0;
43
+
44
+ virtual SkPath onAsPath() const = 0;
45
+
46
+ private:
47
+ friend class Draw; // wants to know the cached bounds.
48
+
49
+ using INHERITED = Node;
50
+ };
51
+
52
+ } // namespace sksg
53
+
54
+ #endif // SkSGGeometryNode_DEFINED
@@ -0,0 +1,108 @@
1
+ /*
2
+ * Copyright 2018 Google Inc.
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef SkSGGradient_DEFINED
9
+ #define SkSGGradient_DEFINED
10
+
11
+ #include "include/core/SkColor.h"
12
+ #include "include/core/SkPoint.h"
13
+ #include "include/core/SkRefCnt.h"
14
+ #include "include/core/SkScalar.h"
15
+ #include "include/core/SkTileMode.h"
16
+ #include "modules/sksg/include/SkSGNode.h"
17
+ #include "modules/sksg/include/SkSGRenderEffect.h"
18
+
19
+ #include <vector>
20
+
21
+ class SkShader;
22
+
23
+ namespace sksg {
24
+
25
+ /**
26
+ * Gradient base class.
27
+ */
28
+ class Gradient : public Shader {
29
+ public:
30
+ struct ColorStop {
31
+ SkScalar fPosition;
32
+ SkColor4f fColor;
33
+
34
+ bool operator==(const ColorStop& other) const {
35
+ return fPosition == other.fPosition && fColor == other.fColor;
36
+ }
37
+ };
38
+
39
+ SG_ATTRIBUTE(ColorStops, std::vector<ColorStop>, fColorStops)
40
+ SG_ATTRIBUTE(TileMode , SkTileMode , fTileMode )
41
+
42
+ protected:
43
+ sk_sp<SkShader> onRevalidateShader() final;
44
+
45
+ virtual sk_sp<SkShader> onMakeShader(const std::vector<SkColor4f>& colors,
46
+ const std::vector<SkScalar >& positions) const = 0;
47
+
48
+ protected:
49
+ Gradient() = default;
50
+
51
+ private:
52
+ std::vector<ColorStop> fColorStops;
53
+ SkTileMode fTileMode = SkTileMode::kClamp;
54
+
55
+ using INHERITED = Shader;
56
+ };
57
+
58
+ class LinearGradient final : public Gradient {
59
+ public:
60
+ static sk_sp<LinearGradient> Make() {
61
+ return sk_sp<LinearGradient>(new LinearGradient());
62
+ }
63
+
64
+ SG_ATTRIBUTE(StartPoint, SkPoint, fStartPoint)
65
+ SG_ATTRIBUTE(EndPoint , SkPoint, fEndPoint )
66
+
67
+ protected:
68
+ sk_sp<SkShader> onMakeShader(const std::vector<SkColor4f>&,
69
+ const std::vector<SkScalar >&) const override;
70
+
71
+ private:
72
+ LinearGradient() = default;
73
+
74
+ SkPoint fStartPoint = SkPoint::Make(0, 0),
75
+ fEndPoint = SkPoint::Make(0, 0);
76
+
77
+ using INHERITED = Gradient;
78
+ };
79
+
80
+ class RadialGradient final : public Gradient {
81
+ public:
82
+ static sk_sp<RadialGradient> Make() {
83
+ return sk_sp<RadialGradient>(new RadialGradient());
84
+ }
85
+
86
+ SG_ATTRIBUTE(StartCenter, SkPoint , fStartCenter)
87
+ SG_ATTRIBUTE(EndCenter , SkPoint , fEndCenter )
88
+ SG_ATTRIBUTE(StartRadius, SkScalar, fStartRadius)
89
+ SG_ATTRIBUTE(EndRadius , SkScalar, fEndRadius )
90
+
91
+ protected:
92
+ sk_sp<SkShader> onMakeShader(const std::vector<SkColor4f>&,
93
+ const std::vector<SkScalar >&) const override;
94
+
95
+ private:
96
+ RadialGradient() = default;
97
+
98
+ SkPoint fStartCenter = SkPoint::Make(0, 0),
99
+ fEndCenter = SkPoint::Make(0, 0);
100
+ SkScalar fStartRadius = 0,
101
+ fEndRadius = 0;
102
+
103
+ using INHERITED = Gradient;
104
+ };
105
+
106
+ } // namespace sksg
107
+
108
+ #endif // SkSGGradient_DEFINED