@shopify/react-native-skia 0.1.197 → 0.1.200

Sign up to get free protection for your applications and to get access to all the features.
Files changed (187) hide show
  1. package/android/CMakeLists.txt +32 -31
  2. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +4 -2
  3. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +3 -0
  4. package/cpp/api/JsiSkShaderFactory.h +4 -4
  5. package/cpp/api/JsiSkSurfaceFactory.h +2 -1
  6. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +2 -2
  7. package/cpp/skia/include/android/SkCanvasAndroid.h +20 -0
  8. package/cpp/skia/include/android/SkHeifDecoder.h +43 -0
  9. package/cpp/skia/include/android/SkSurfaceAndroid.h +50 -0
  10. package/cpp/skia/include/codec/SkAvifDecoder.h +43 -0
  11. package/cpp/skia/include/codec/SkBmpDecoder.h +43 -0
  12. package/cpp/skia/include/codec/SkCodec.h +25 -1
  13. package/cpp/skia/include/codec/SkGifDecoder.h +43 -0
  14. package/cpp/skia/include/codec/SkIcoDecoder.h +43 -0
  15. package/cpp/skia/include/codec/SkJpegDecoder.h +43 -0
  16. package/cpp/skia/include/codec/SkJpegxlDecoder.h +43 -0
  17. package/cpp/skia/include/codec/SkPngDecoder.h +43 -0
  18. package/cpp/skia/include/codec/SkRawDecoder.h +49 -0
  19. package/cpp/skia/include/codec/SkWbmpDecoder.h +43 -0
  20. package/cpp/skia/include/codec/SkWebpDecoder.h +43 -0
  21. package/cpp/skia/include/core/SkBBHFactory.h +5 -1
  22. package/cpp/skia/include/core/SkBlender.h +0 -2
  23. package/cpp/skia/include/core/SkCanvas.h +4 -23
  24. package/cpp/skia/include/core/SkColorFilter.h +14 -1
  25. package/cpp/skia/include/core/SkColorTable.h +59 -0
  26. package/cpp/skia/include/core/SkContourMeasure.h +3 -0
  27. package/cpp/skia/include/core/SkDeferredDisplayList.h +8 -104
  28. package/cpp/skia/include/core/SkDeferredDisplayListRecorder.h +8 -91
  29. package/cpp/skia/include/core/SkDrawable.h +5 -2
  30. package/cpp/skia/include/core/SkGraphics.h +7 -19
  31. package/cpp/skia/include/core/SkImage.h +157 -249
  32. package/cpp/skia/include/core/SkImageGenerator.h +0 -31
  33. package/cpp/skia/include/core/SkMilestone.h +1 -1
  34. package/cpp/skia/include/core/SkPathMeasure.h +3 -3
  35. package/cpp/skia/include/core/SkPictureRecorder.h +1 -1
  36. package/cpp/skia/include/core/SkPoint.h +5 -563
  37. package/cpp/skia/include/core/SkPoint3.h +1 -0
  38. package/cpp/skia/include/core/SkPromiseImageTexture.h +4 -30
  39. package/cpp/skia/include/core/SkRect.h +8 -8
  40. package/cpp/skia/include/core/SkSamplingOptions.h +4 -2
  41. package/cpp/skia/include/core/SkScalar.h +1 -1
  42. package/cpp/skia/include/core/SkSerialProcs.h +5 -1
  43. package/cpp/skia/include/core/SkShader.h +14 -21
  44. package/cpp/skia/include/core/SkString.h +2 -0
  45. package/cpp/skia/include/core/SkSurface.h +169 -701
  46. package/cpp/skia/include/core/SkSurfaceCharacterization.h +8 -256
  47. package/cpp/skia/include/core/SkTiledImageUtils.h +97 -0
  48. package/cpp/skia/include/core/SkTypes.h +4 -2
  49. package/cpp/skia/include/core/SkYUVAPixmaps.h +0 -5
  50. package/cpp/skia/include/effects/SkGradientShader.h +10 -1
  51. package/cpp/skia/include/effects/SkImageFilters.h +62 -37
  52. package/cpp/skia/include/effects/SkPerlinNoiseShader.h +28 -29
  53. package/cpp/skia/include/effects/SkRuntimeEffect.h +17 -12
  54. package/cpp/skia/include/gpu/GrBackendSurface.h +12 -39
  55. package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -0
  56. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +3 -3
  57. package/cpp/skia/include/gpu/GrDirectContext.h +103 -3
  58. package/cpp/skia/include/gpu/GrRecordingContext.h +10 -19
  59. package/cpp/skia/include/gpu/MutableTextureState.h +4 -0
  60. package/cpp/skia/include/gpu/ganesh/GrExternalTextureGenerator.h +54 -0
  61. package/cpp/skia/include/gpu/ganesh/SkImageGanesh.h +20 -76
  62. package/cpp/skia/include/gpu/ganesh/SkSurfaceGanesh.h +217 -0
  63. package/cpp/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h +73 -0
  64. package/cpp/skia/include/gpu/gl/GrGLTypes.h +13 -2
  65. package/cpp/skia/include/gpu/graphite/BackendSemaphore.h +78 -0
  66. package/cpp/skia/include/gpu/graphite/BackendTexture.h +1 -0
  67. package/cpp/skia/include/gpu/graphite/Image.h +277 -0
  68. package/cpp/skia/include/gpu/graphite/ImageProvider.h +1 -1
  69. package/cpp/skia/include/gpu/graphite/Recording.h +1 -4
  70. package/cpp/skia/include/gpu/graphite/Surface.h +81 -0
  71. package/cpp/skia/include/gpu/graphite/TextureInfo.h +5 -7
  72. package/cpp/skia/include/gpu/graphite/YUVABackendTextures.h +2 -2
  73. package/cpp/skia/include/gpu/mock/GrMockTypes.h +23 -8
  74. package/cpp/skia/include/ports/SkTypeface_fontations.h +21 -0
  75. package/cpp/skia/include/private/SkGainmapInfo.h +2 -0
  76. package/cpp/skia/include/private/SkGainmapShader.h +1 -0
  77. package/cpp/skia/include/private/SkJpegMetadataDecoder.h +19 -1
  78. package/cpp/skia/include/private/SkPathRef.h +13 -15
  79. package/cpp/skia/include/private/SkXmp.h +53 -0
  80. package/cpp/skia/include/private/base/SkFeatures.h +0 -4
  81. package/cpp/skia/include/private/base/SkFloatingPoint.h +11 -5
  82. package/cpp/skia/include/private/base/SkPoint_impl.h +569 -0
  83. package/cpp/skia/include/private/base/SkSpan_impl.h +3 -7
  84. package/cpp/skia/include/private/base/SkTArray.h +11 -11
  85. package/cpp/skia/include/private/chromium/GrDeferredDisplayList.h +120 -0
  86. package/cpp/skia/include/private/chromium/GrDeferredDisplayListRecorder.h +98 -0
  87. package/cpp/skia/include/private/chromium/GrPromiseImageTexture.h +43 -0
  88. package/cpp/skia/include/private/chromium/GrSurfaceCharacterization.h +215 -0
  89. package/cpp/skia/include/private/chromium/GrVkSecondaryCBDrawContext.h +6 -6
  90. package/cpp/skia/include/private/chromium/SkImageChromium.h +104 -0
  91. package/cpp/skia/include/private/chromium/Slug.h +7 -3
  92. package/cpp/skia/include/private/gpu/ganesh/GrContext_Base.h +7 -3
  93. package/cpp/skia/include/private/gpu/ganesh/GrGLTypesPriv.h +2 -0
  94. package/cpp/skia/include/private/gpu/ganesh/GrImageContext.h +3 -2
  95. package/cpp/skia/include/private/gpu/ganesh/GrMtlTypesPriv.h +10 -2
  96. package/cpp/skia/include/{gpu → private/gpu}/ganesh/GrTextureGenerator.h +2 -13
  97. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +1 -1
  98. package/cpp/skia/include/private/gpu/graphite/DawnTypesPriv.h +7 -0
  99. package/cpp/skia/include/private/gpu/graphite/MtlGraphiteTypesPriv.h +19 -6
  100. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +13 -0
  101. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan.h +0 -1
  102. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_android.h +14 -1
  103. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_core.h +999 -79
  104. package/cpp/skia/modules/skcms/src/Transform_inl.h +36 -236
  105. package/cpp/skia/modules/skparagraph/include/Paragraph.h +2 -0
  106. package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +16 -0
  107. package/cpp/skia/modules/skparagraph/include/TextStyle.h +6 -2
  108. package/cpp/skia/modules/skresources/include/SkResources.h +1 -1
  109. package/cpp/skia/modules/svg/include/SkSVGCircle.h +1 -1
  110. package/cpp/skia/modules/svg/include/SkSVGClipPath.h +1 -1
  111. package/cpp/skia/modules/svg/include/SkSVGContainer.h +1 -1
  112. package/cpp/skia/modules/svg/include/SkSVGDOM.h +1 -1
  113. package/cpp/skia/modules/svg/include/SkSVGDefs.h +1 -1
  114. package/cpp/skia/modules/svg/include/SkSVGEllipse.h +1 -1
  115. package/cpp/skia/modules/svg/include/SkSVGFe.h +1 -1
  116. package/cpp/skia/modules/svg/include/SkSVGFeBlend.h +1 -1
  117. package/cpp/skia/modules/svg/include/SkSVGFeColorMatrix.h +1 -1
  118. package/cpp/skia/modules/svg/include/SkSVGFeComposite.h +1 -1
  119. package/cpp/skia/modules/svg/include/SkSVGFeDisplacementMap.h +1 -1
  120. package/cpp/skia/modules/svg/include/SkSVGFeFlood.h +1 -1
  121. package/cpp/skia/modules/svg/include/SkSVGFeGaussianBlur.h +1 -1
  122. package/cpp/skia/modules/svg/include/SkSVGFeImage.h +1 -1
  123. package/cpp/skia/modules/svg/include/SkSVGFeLightSource.h +1 -1
  124. package/cpp/skia/modules/svg/include/SkSVGFeLighting.h +1 -1
  125. package/cpp/skia/modules/svg/include/SkSVGFeOffset.h +1 -1
  126. package/cpp/skia/modules/svg/include/SkSVGFeTurbulence.h +1 -1
  127. package/cpp/skia/modules/svg/include/SkSVGFilter.h +1 -1
  128. package/cpp/skia/modules/svg/include/SkSVGG.h +1 -1
  129. package/cpp/skia/modules/svg/include/SkSVGGradient.h +1 -1
  130. package/cpp/skia/modules/svg/include/SkSVGHiddenContainer.h +1 -1
  131. package/cpp/skia/modules/svg/include/SkSVGImage.h +1 -1
  132. package/cpp/skia/modules/svg/include/SkSVGLine.h +1 -1
  133. package/cpp/skia/modules/svg/include/SkSVGLinearGradient.h +1 -1
  134. package/cpp/skia/modules/svg/include/SkSVGMask.h +1 -1
  135. package/cpp/skia/modules/svg/include/SkSVGNode.h +1 -1
  136. package/cpp/skia/modules/svg/include/SkSVGPath.h +1 -1
  137. package/cpp/skia/modules/svg/include/SkSVGPattern.h +1 -1
  138. package/cpp/skia/modules/svg/include/SkSVGPoly.h +1 -1
  139. package/cpp/skia/modules/svg/include/SkSVGRadialGradient.h +1 -1
  140. package/cpp/skia/modules/svg/include/SkSVGRect.h +1 -1
  141. package/cpp/skia/modules/svg/include/SkSVGRenderContext.h +3 -3
  142. package/cpp/skia/modules/svg/include/SkSVGSVG.h +1 -1
  143. package/cpp/skia/modules/svg/include/SkSVGShape.h +1 -1
  144. package/cpp/skia/modules/svg/include/SkSVGStop.h +1 -1
  145. package/cpp/skia/modules/svg/include/SkSVGText.h +1 -1
  146. package/cpp/skia/modules/svg/include/SkSVGTransformableNode.h +1 -1
  147. package/cpp/skia/modules/svg/include/SkSVGTypes.h +21 -21
  148. package/cpp/skia/modules/svg/include/SkSVGUse.h +1 -1
  149. package/cpp/skia/modules/svg/include/SkSVGValue.h +2 -2
  150. package/cpp/skia/{include/private → src/core}/SkChecksum.h +32 -17
  151. package/cpp/skia/src/core/SkTHash.h +1 -1
  152. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +3 -1
  153. package/ios/RNSkia-iOS/SkiaMetalRenderer.mm +3 -1
  154. package/libs/android/arm64-v8a/libskia.a +0 -0
  155. package/libs/android/arm64-v8a/libskottie.a +0 -0
  156. package/libs/android/arm64-v8a/libsksg.a +0 -0
  157. package/libs/android/arm64-v8a/libsvg.a +0 -0
  158. package/libs/android/armeabi-v7a/libskia.a +0 -0
  159. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  160. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  161. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  162. package/libs/android/x86/libskia.a +0 -0
  163. package/libs/android/x86/libskottie.a +0 -0
  164. package/libs/android/x86/libsksg.a +0 -0
  165. package/libs/android/x86/libsvg.a +0 -0
  166. package/libs/android/x86_64/libskia.a +0 -0
  167. package/libs/android/x86_64/libskottie.a +0 -0
  168. package/libs/android/x86_64/libsksg.a +0 -0
  169. package/libs/android/x86_64/libsvg.a +0 -0
  170. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  171. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  172. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  173. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  174. package/libs/ios/libsksg.xcframework/Info.plist +5 -5
  175. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  176. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  177. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  178. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  179. package/libs/ios/libsvg.xcframework/Info.plist +5 -5
  180. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  181. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  182. package/package.json +1 -3
  183. package/cpp/skia/include/effects/SkTableColorFilter.h +0 -29
  184. package/cpp/skia/include/private/SkOpts_spi.h +0 -23
  185. package/cpp/skia/include/private/SkSpinlock.h +0 -57
  186. package/cpp/skia/include/private/chromium/GrSlug.h +0 -16
  187. package/scripts/install-npm.js +0 -33
@@ -5,259 +5,11 @@
5
5
  * found in the LICENSE file.
6
6
  */
7
7
 
8
- #ifndef SkSurfaceCharacterization_DEFINED
9
- #define SkSurfaceCharacterization_DEFINED
10
-
11
-
12
- #include "include/core/SkColorSpace.h"
13
- #include "include/core/SkImageInfo.h"
14
- #include "include/core/SkRefCnt.h"
15
- #include "include/core/SkSurfaceProps.h"
16
-
17
- class SkColorSpace;
18
-
19
-
20
- #if defined(SK_GANESH)
21
- #include "include/gpu/GrBackendSurface.h"
22
- #include "include/gpu/GrContextThreadSafeProxy.h"
23
- #include "include/gpu/GrTypes.h"
24
-
25
- /** \class SkSurfaceCharacterization
26
- A surface characterization contains all the information Ganesh requires to makes its internal
27
- rendering decisions. When passed into a SkDeferredDisplayListRecorder it will copy the
28
- data and pass it on to the SkDeferredDisplayList if/when it is created. Note that both of
29
- those objects (the Recorder and the DisplayList) will take a ref on the
30
- GrContextThreadSafeProxy and SkColorSpace objects.
31
- */
32
- class SK_API SkSurfaceCharacterization {
33
- public:
34
- enum class Textureable : bool { kNo = false, kYes = true };
35
- enum class MipMapped : bool { kNo = false, kYes = true };
36
- enum class UsesGLFBO0 : bool { kNo = false, kYes = true };
37
- // This flag indicates that the backing VkImage for this Vulkan surface will have the
38
- // VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT set. This bit allows skia to handle advanced blends
39
- // more optimally in a shader by being able to directly read the dst values.
40
- enum class VkRTSupportsInputAttachment : bool { kNo = false, kYes = true };
41
- // This flag indicates if the surface is wrapping a raw Vulkan secondary command buffer.
42
- enum class VulkanSecondaryCBCompatible : bool { kNo = false, kYes = true };
43
-
44
- SkSurfaceCharacterization()
45
- : fCacheMaxResourceBytes(0)
46
- , fOrigin(kBottomLeft_GrSurfaceOrigin)
47
- , fSampleCnt(0)
48
- , fIsTextureable(Textureable::kYes)
49
- , fIsMipMapped(MipMapped::kYes)
50
- , fUsesGLFBO0(UsesGLFBO0::kNo)
51
- , fVulkanSecondaryCBCompatible(VulkanSecondaryCBCompatible::kNo)
52
- , fIsProtected(GrProtected::kNo)
53
- , fSurfaceProps(0, kUnknown_SkPixelGeometry) {
54
- }
55
-
56
- SkSurfaceCharacterization(SkSurfaceCharacterization&&) = default;
57
- SkSurfaceCharacterization& operator=(SkSurfaceCharacterization&&) = default;
58
-
59
- SkSurfaceCharacterization(const SkSurfaceCharacterization&) = default;
60
- SkSurfaceCharacterization& operator=(const SkSurfaceCharacterization& other) = default;
61
- bool operator==(const SkSurfaceCharacterization& other) const;
62
- bool operator!=(const SkSurfaceCharacterization& other) const {
63
- return !(*this == other);
64
- }
65
-
66
- /*
67
- * Return a new surface characterization with the only difference being a different width
68
- * and height
69
- */
70
- SkSurfaceCharacterization createResized(int width, int height) const;
71
-
72
- /*
73
- * Return a new surface characterization with only a replaced color space
74
- */
75
- SkSurfaceCharacterization createColorSpace(sk_sp<SkColorSpace>) const;
76
-
77
- /*
78
- * Return a new surface characterization with the backend format replaced. A colorType
79
- * must also be supplied to indicate the interpretation of the new format.
80
- */
81
- SkSurfaceCharacterization createBackendFormat(SkColorType colorType,
82
- const GrBackendFormat& backendFormat) const;
83
-
84
- /*
85
- * Return a new surface characterization with just a different use of FBO0 (in GL)
86
- */
87
- SkSurfaceCharacterization createFBO0(bool usesGLFBO0) const;
88
-
89
- GrContextThreadSafeProxy* contextInfo() const { return fContextInfo.get(); }
90
- sk_sp<GrContextThreadSafeProxy> refContextInfo() const { return fContextInfo; }
91
- size_t cacheMaxResourceBytes() const { return fCacheMaxResourceBytes; }
92
-
93
- bool isValid() const { return kUnknown_SkColorType != fImageInfo.colorType(); }
94
-
95
- const SkImageInfo& imageInfo() const { return fImageInfo; }
96
- const GrBackendFormat& backendFormat() const { return fBackendFormat; }
97
- GrSurfaceOrigin origin() const { return fOrigin; }
98
- SkISize dimensions() const { return fImageInfo.dimensions(); }
99
- int width() const { return fImageInfo.width(); }
100
- int height() const { return fImageInfo.height(); }
101
- SkColorType colorType() const { return fImageInfo.colorType(); }
102
- int sampleCount() const { return fSampleCnt; }
103
- bool isTextureable() const { return Textureable::kYes == fIsTextureable; }
104
- bool isMipMapped() const { return MipMapped::kYes == fIsMipMapped; }
105
- bool usesGLFBO0() const { return UsesGLFBO0::kYes == fUsesGLFBO0; }
106
- bool vkRTSupportsInputAttachment() const {
107
- return VkRTSupportsInputAttachment::kYes == fVkRTSupportsInputAttachment;
108
- }
109
- bool vulkanSecondaryCBCompatible() const {
110
- return VulkanSecondaryCBCompatible::kYes == fVulkanSecondaryCBCompatible;
111
- }
112
- GrProtected isProtected() const { return fIsProtected; }
113
- SkColorSpace* colorSpace() const { return fImageInfo.colorSpace(); }
114
- sk_sp<SkColorSpace> refColorSpace() const { return fImageInfo.refColorSpace(); }
115
- const SkSurfaceProps& surfaceProps()const { return fSurfaceProps; }
116
-
117
- // Is the provided backend texture compatible with this surface characterization?
118
- bool isCompatible(const GrBackendTexture&) const;
119
-
120
- private:
121
- friend class SkSurface_Ganesh; // for 'set' & 'config'
122
- friend class GrVkSecondaryCBDrawContext; // for 'set' & 'config'
123
- friend class GrContextThreadSafeProxy; // for private ctor
124
- friend class SkDeferredDisplayListRecorder; // for 'config'
125
- friend class SkSurface; // for 'config'
126
-
127
- SkDEBUGCODE(void validate() const;)
128
-
129
- SkSurfaceCharacterization(sk_sp<GrContextThreadSafeProxy> contextInfo,
130
- size_t cacheMaxResourceBytes,
131
- const SkImageInfo& ii,
132
- const GrBackendFormat& backendFormat,
133
- GrSurfaceOrigin origin,
134
- int sampleCnt,
135
- Textureable isTextureable,
136
- MipMapped isMipMapped,
137
- UsesGLFBO0 usesGLFBO0,
138
- VkRTSupportsInputAttachment vkRTSupportsInputAttachment,
139
- VulkanSecondaryCBCompatible vulkanSecondaryCBCompatible,
140
- GrProtected isProtected,
141
- const SkSurfaceProps& surfaceProps)
142
- : fContextInfo(std::move(contextInfo))
143
- , fCacheMaxResourceBytes(cacheMaxResourceBytes)
144
- , fImageInfo(ii)
145
- , fBackendFormat(backendFormat)
146
- , fOrigin(origin)
147
- , fSampleCnt(sampleCnt)
148
- , fIsTextureable(isTextureable)
149
- , fIsMipMapped(isMipMapped)
150
- , fUsesGLFBO0(usesGLFBO0)
151
- , fVkRTSupportsInputAttachment(vkRTSupportsInputAttachment)
152
- , fVulkanSecondaryCBCompatible(vulkanSecondaryCBCompatible)
153
- , fIsProtected(isProtected)
154
- , fSurfaceProps(surfaceProps) {
155
- if (fSurfaceProps.flags() & SkSurfaceProps::kDynamicMSAA_Flag) {
156
- // Dynamic MSAA is not currently supported with DDL.
157
- *this = {};
158
- }
159
- SkDEBUGCODE(this->validate());
160
- }
161
-
162
- void set(sk_sp<GrContextThreadSafeProxy> contextInfo,
163
- size_t cacheMaxResourceBytes,
164
- const SkImageInfo& ii,
165
- const GrBackendFormat& backendFormat,
166
- GrSurfaceOrigin origin,
167
- int sampleCnt,
168
- Textureable isTextureable,
169
- MipMapped isMipMapped,
170
- UsesGLFBO0 usesGLFBO0,
171
- VkRTSupportsInputAttachment vkRTSupportsInputAttachment,
172
- VulkanSecondaryCBCompatible vulkanSecondaryCBCompatible,
173
- GrProtected isProtected,
174
- const SkSurfaceProps& surfaceProps) {
175
- if (surfaceProps.flags() & SkSurfaceProps::kDynamicMSAA_Flag) {
176
- // Dynamic MSAA is not currently supported with DDL.
177
- *this = {};
178
- } else {
179
- fContextInfo = contextInfo;
180
- fCacheMaxResourceBytes = cacheMaxResourceBytes;
181
-
182
- fImageInfo = ii;
183
- fBackendFormat = backendFormat;
184
- fOrigin = origin;
185
- fSampleCnt = sampleCnt;
186
- fIsTextureable = isTextureable;
187
- fIsMipMapped = isMipMapped;
188
- fUsesGLFBO0 = usesGLFBO0;
189
- fVkRTSupportsInputAttachment = vkRTSupportsInputAttachment;
190
- fVulkanSecondaryCBCompatible = vulkanSecondaryCBCompatible;
191
- fIsProtected = isProtected;
192
- fSurfaceProps = surfaceProps;
193
- }
194
- SkDEBUGCODE(this->validate());
195
- }
196
-
197
- sk_sp<GrContextThreadSafeProxy> fContextInfo;
198
- size_t fCacheMaxResourceBytes;
199
-
200
- SkImageInfo fImageInfo;
201
- GrBackendFormat fBackendFormat;
202
- GrSurfaceOrigin fOrigin;
203
- int fSampleCnt;
204
- Textureable fIsTextureable;
205
- MipMapped fIsMipMapped;
206
- UsesGLFBO0 fUsesGLFBO0;
207
- VkRTSupportsInputAttachment fVkRTSupportsInputAttachment;
208
- VulkanSecondaryCBCompatible fVulkanSecondaryCBCompatible;
209
- GrProtected fIsProtected;
210
- SkSurfaceProps fSurfaceProps;
211
- };
212
-
213
- #else// !defined(SK_GANESH)
214
- class GrBackendFormat;
215
-
216
- class SK_API SkSurfaceCharacterization {
217
- public:
218
- SkSurfaceCharacterization() : fSurfaceProps(0, kUnknown_SkPixelGeometry) { }
219
-
220
- SkSurfaceCharacterization createResized(int width, int height) const {
221
- return *this;
222
- }
223
-
224
- SkSurfaceCharacterization createColorSpace(sk_sp<SkColorSpace>) const {
225
- return *this;
226
- }
227
-
228
- SkSurfaceCharacterization createBackendFormat(SkColorType, const GrBackendFormat&) const {
229
- return *this;
230
- }
231
-
232
- SkSurfaceCharacterization createFBO0(bool usesGLFBO0) const {
233
- return *this;
234
- }
235
-
236
- bool operator==(const SkSurfaceCharacterization& other) const { return false; }
237
- bool operator!=(const SkSurfaceCharacterization& other) const {
238
- return !(*this == other);
239
- }
240
-
241
- size_t cacheMaxResourceBytes() const { return 0; }
242
-
243
- bool isValid() const { return false; }
244
-
245
- int width() const { return 0; }
246
- int height() const { return 0; }
247
- int stencilCount() const { return 0; }
248
- bool isTextureable() const { return false; }
249
- bool isMipMapped() const { return false; }
250
- bool usesGLFBO0() const { return false; }
251
- bool vkRTSupportsAttachmentInput() const { return false; }
252
- bool vulkanSecondaryCBCompatible() const { return false; }
253
- SkColorSpace* colorSpace() const { return nullptr; }
254
- sk_sp<SkColorSpace> refColorSpace() const { return nullptr; }
255
- const SkSurfaceProps& surfaceProps()const { return fSurfaceProps; }
256
-
257
- private:
258
- SkSurfaceProps fSurfaceProps;
259
- };
260
-
261
- #endif
262
-
263
- #endif
8
+ // TODO(kjlubick, robertphillips) migrate Chromium to use the new location and name
9
+ #include "include/private/chromium/GrSurfaceCharacterization.h" // IWYU pragma: export
10
+
11
+ class GrDeferredDisplayList;
12
+ class GrDeferredDisplayListRecorder;
13
+ using SkDeferredDisplayList = GrDeferredDisplayList;
14
+ using SkDeferredDisplayListRecorder = GrDeferredDisplayListRecorder;
15
+ using SkSurfaceCharacterization = GrSurfaceCharacterization;
@@ -0,0 +1,97 @@
1
+ /*
2
+ * Copyright 2023 Google LLC
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 SkTiledImageUtils_DEFINED
9
+ #define SkTiledImageUtils_DEFINED
10
+
11
+ #include "include/core/SkCanvas.h"
12
+ #include "include/core/SkImage.h"
13
+ #include "include/core/SkRect.h"
14
+ #include "include/core/SkRefCnt.h"
15
+ #include "include/core/SkSamplingOptions.h"
16
+ #include "include/core/SkScalar.h"
17
+ #include "include/private/base/SkAPI.h"
18
+ class SkPaint;
19
+
20
+ namespace SkTiledImageUtils {
21
+
22
+ SK_API void DrawImageRect(SkCanvas* canvas,
23
+ const SkImage* image,
24
+ const SkRect& src,
25
+ const SkRect& dst,
26
+ const SkSamplingOptions& sampling = {},
27
+ const SkPaint* paint = nullptr,
28
+ SkCanvas::SrcRectConstraint constraint =
29
+ SkCanvas::kFast_SrcRectConstraint);
30
+
31
+ inline void DrawImageRect(SkCanvas* canvas,
32
+ const sk_sp<SkImage>& image,
33
+ const SkRect& src,
34
+ const SkRect& dst,
35
+ const SkSamplingOptions& sampling = {},
36
+ const SkPaint* paint = nullptr,
37
+ SkCanvas::SrcRectConstraint constraint =
38
+ SkCanvas::kFast_SrcRectConstraint) {
39
+ DrawImageRect(canvas, image.get(), src, dst, sampling, paint, constraint);
40
+ }
41
+
42
+ inline void DrawImageRect(SkCanvas* canvas,
43
+ const SkImage* image,
44
+ const SkRect& dst,
45
+ const SkSamplingOptions& sampling = {},
46
+ const SkPaint* paint = nullptr,
47
+ SkCanvas::SrcRectConstraint constraint =
48
+ SkCanvas::kFast_SrcRectConstraint) {
49
+ if (!image) {
50
+ return;
51
+ }
52
+
53
+ SkRect src = SkRect::MakeIWH(image->width(), image->height());
54
+
55
+ DrawImageRect(canvas, image, src, dst, sampling, paint, constraint);
56
+ }
57
+
58
+ inline void DrawImageRect(SkCanvas* canvas,
59
+ const sk_sp<SkImage>& image,
60
+ const SkRect& dst,
61
+ const SkSamplingOptions& sampling = {},
62
+ const SkPaint* paint = nullptr,
63
+ SkCanvas::SrcRectConstraint constraint =
64
+ SkCanvas::kFast_SrcRectConstraint) {
65
+ DrawImageRect(canvas, image.get(), dst, sampling, paint, constraint);
66
+ }
67
+
68
+ inline void DrawImage(SkCanvas* canvas,
69
+ const SkImage* image,
70
+ SkScalar x, SkScalar y,
71
+ const SkSamplingOptions& sampling = {},
72
+ const SkPaint* paint = nullptr,
73
+ SkCanvas::SrcRectConstraint constraint =
74
+ SkCanvas::kFast_SrcRectConstraint) {
75
+ if (!image) {
76
+ return;
77
+ }
78
+
79
+ SkRect src = SkRect::MakeIWH(image->width(), image->height());
80
+ SkRect dst = SkRect::MakeXYWH(x, y, image->width(), image->height());
81
+
82
+ DrawImageRect(canvas, image, src, dst, sampling, paint, constraint);
83
+ }
84
+
85
+ inline void DrawImage(SkCanvas* canvas,
86
+ const sk_sp<SkImage>& image,
87
+ SkScalar x, SkScalar y,
88
+ const SkSamplingOptions& sampling = {},
89
+ const SkPaint* paint = nullptr,
90
+ SkCanvas::SrcRectConstraint constraint =
91
+ SkCanvas::kFast_SrcRectConstraint) {
92
+ DrawImage(canvas, image.get(), x, y, sampling, paint, constraint);
93
+ }
94
+
95
+ } // namespace SkTiledImageUtils
96
+
97
+ #endif // SkTiledImageUtils_DEFINED
@@ -125,8 +125,10 @@
125
125
 
126
126
  // The top-level define SK_ENABLE_OPTIMIZE_SIZE can be used to remove several large features at once
127
127
  #if defined(SK_ENABLE_OPTIMIZE_SIZE)
128
- # define SK_FORCE_RASTER_PIPELINE_BLITTER
129
- # define SK_DISABLE_SDF_TEXT
128
+ #if !defined(SK_FORCE_RASTER_PIPELINE_BLITTER)
129
+ #define SK_FORCE_RASTER_PIPELINE_BLITTER
130
+ #endif
131
+ #define SK_DISABLE_SDF_TEXT
130
132
  #endif
131
133
 
132
134
  #ifndef SK_DISABLE_LEGACY_SHADERCONTEXT
@@ -23,8 +23,6 @@
23
23
  #include <cstddef>
24
24
  #include <tuple>
25
25
 
26
- class GrImageContext;
27
-
28
26
  /**
29
27
  * SkYUVAInfo combined with per-plane SkColorTypes and row bytes. Fully specifies the SkPixmaps
30
28
  * for a YUVA image without the actual pixel memory and data.
@@ -55,9 +53,6 @@ public:
55
53
  /** Defaults to nothing supported. */
56
54
  constexpr SupportedDataTypes() = default;
57
55
 
58
- /** Init based on texture formats supported by the context. */
59
- SupportedDataTypes(const GrImageContext&);
60
-
61
56
  /** All legal combinations of PlaneConfig and DataType are supported. */
62
57
  static constexpr SupportedDataTypes All();
63
58
 
@@ -8,10 +8,19 @@
8
8
  #ifndef SkGradientShader_DEFINED
9
9
  #define SkGradientShader_DEFINED
10
10
 
11
+ #include "include/core/SkColor.h"
11
12
  #include "include/core/SkColorSpace.h"
13
+ #include "include/core/SkPoint.h"
12
14
  #include "include/core/SkRefCnt.h"
13
- #include "include/core/SkShader.h"
15
+ #include "include/core/SkScalar.h"
16
+ #include "include/core/SkShader.h" // IWYU pragma: keep
14
17
  #include "include/core/SkTileMode.h"
18
+ #include "include/private/base/SkAPI.h"
19
+
20
+ #include <cstdint>
21
+ #include <utility>
22
+
23
+ class SkMatrix;
15
24
 
16
25
  /** \class SkGradientShader
17
26
 
@@ -56,23 +56,6 @@ public:
56
56
  SkRect fCropRect;
57
57
  };
58
58
 
59
- /**
60
- * Create a filter that updates the alpha of the image based on 'region'. Pixels inside the
61
- * region are made more opaque and pixels outside are made more transparent.
62
- *
63
- * Specifically, if a pixel is inside the region, its alpha will be set to
64
- * max(innerMin, pixel's alpha). If a pixel is outside the region, its alpha will be updated to
65
- * min(outerMax, pixel's alpha).
66
- * @param region The geometric region controlling the inner and outer alpha thresholds.
67
- * @param innerMin The minimum alpha value for pixels inside 'region'.
68
- * @param outerMax The maximum alpha value for pixels outside of 'region'.
69
- * @param input The input filter, or uses the source bitmap if this is null.
70
- * @param cropRect Optional rectangle that crops the input and output.
71
- */
72
- static sk_sp<SkImageFilter> AlphaThreshold(const SkRegion& region, SkScalar innerMin,
73
- SkScalar outerMax, sk_sp<SkImageFilter> input,
74
- const CropRect& cropRect = {});
75
-
76
59
  /**
77
60
  * Create a filter that implements a custom blend mode. Each output pixel is the result of
78
61
  * combining the corresponding background and foreground pixels using the 4 coefficients:
@@ -198,7 +181,9 @@ public:
198
181
 
199
182
  /**
200
183
  * Create a filter that draws the 'srcRect' portion of image into 'dstRect' using the given
201
- * filter quality. Similar to SkCanvas::drawImageRect. Returns null if 'image' is null.
184
+ * filter quality. Similar to SkCanvas::drawImageRect. The returned image filter evaluates
185
+ * to transparent black if 'image' is null.
186
+ *
202
187
  * @param image The image that is output by the filter, subset by 'srcRect'.
203
188
  * @param srcRect The source pixels sampled into 'dstRect'
204
189
  * @param dstRect The local rectangle to draw the image into.
@@ -209,7 +194,9 @@ public:
209
194
 
210
195
  /**
211
196
  * Create a filter that draws the image using the given sampling.
212
- * Similar to SkCanvas::drawImage. Returns null if 'image' is null.
197
+ * Similar to SkCanvas::drawImage. The returned image filter evaluates to transparent black if
198
+ * 'image' is null.
199
+ *
213
200
  * @param image The image that is output by the filter.
214
201
  * @param sampling The sampling to use when drawing the image.
215
202
  */
@@ -223,21 +210,19 @@ public:
223
210
  }
224
211
 
225
212
  /**
226
- * Create a filter that draws the image using Mitchel cubic resampling.
227
- * @param image The image that is output by the filter.
228
- */
229
- static sk_sp<SkImageFilter> Image(sk_sp<SkImage> image) {
230
- return Image(std::move(image), SkSamplingOptions({1/3.0f, 1/3.0f}));
231
- }
232
-
233
- /**
234
- * Create a filter that mimics a zoom/magnifying lens effect.
235
- * @param srcRect
236
- * @param inset
237
- * @param input The input filter that is magnified, if null the source bitmap is used.
238
- * @param cropRect Optional rectangle that crops the input and output.
239
- */
240
- static sk_sp<SkImageFilter> Magnifier(const SkRect& srcRect, SkScalar inset,
213
+ * Create a filter that fills 'lensBounds' with a magnification of the input.
214
+ *
215
+ * @param lensBounds The outer bounds of the magnifier effect
216
+ * @param zoomAmount The amount of magnification applied to the input image
217
+ * @param inset The size or width of the fish-eye distortion around the magnified content
218
+ * @param sampling The SkSamplingOptions applied to the input image when magnified
219
+ * @param input The input filter that is magnified; if null the source bitmap is used
220
+ * @param cropRect Optional rectangle that crops the input and output.
221
+ */
222
+ static sk_sp<SkImageFilter> Magnifier(const SkRect& lensBounds,
223
+ SkScalar zoomAmount,
224
+ SkScalar inset,
225
+ const SkSamplingOptions& sampling,
241
226
  sk_sp<SkImageFilter> input,
242
227
  const CropRect& cropRect = {});
243
228
 
@@ -311,9 +296,11 @@ public:
311
296
  const CropRect& cropRect = {});
312
297
 
313
298
  /**
314
- * Create a filter that produces the SkPicture as its output, drawn into targetRect. Note that
315
- * the targetRect is not the same as the SkIRect cropRect that many filters accept. Returns
316
- * null if 'pic' is null.
299
+ * Create a filter that produces the SkPicture as its output, clipped to both 'targetRect' and
300
+ * the picture's internal cull rect.
301
+ *
302
+ * If 'pic' is null, the returned image filter produces transparent black.
303
+ *
317
304
  * @param pic The picture that is drawn for the filter output.
318
305
  * @param targetRect The drawing region for the picture.
319
306
  */
@@ -330,6 +317,9 @@ public:
330
317
  * by the SkRuntimeShaderBuilder. The shader is defined in the image filter's local coordinate
331
318
  * system, so it will automatically be affected by SkCanvas' transform.
332
319
  *
320
+ * This variant assumes that the runtime shader samples 'childShaderName' with the same input
321
+ * coordinate passed to to shader.
322
+ *
333
323
  * @param builder The builder used to produce the runtime shader, that will in turn
334
324
  * fill the result image
335
325
  * @param childShaderName The name of the child shader defined in the builder that will be
@@ -340,6 +330,22 @@ public:
340
330
  * shader. If null the implicit source image is used instead
341
331
  */
342
332
  static sk_sp<SkImageFilter> RuntimeShader(const SkRuntimeShaderBuilder& builder,
333
+ std::string_view childShaderName,
334
+ sk_sp<SkImageFilter> input) {
335
+ return RuntimeShader(builder, /*sampleRadius=*/0.f, childShaderName, std::move(input));
336
+ }
337
+
338
+ /**
339
+ * As above, but 'sampleRadius' defines the sampling radius of 'childShaderName' relative to
340
+ * the runtime shader produced by 'builder'. If greater than 0, the coordinate passed to
341
+ * childShader.eval() will be up to 'sampleRadius' away (maximum absolute offset in 'x' or 'y')
342
+ * from the coordinate passed into the runtime shader.
343
+ *
344
+ * This allows Skia to provide sampleable values for the image filter without worrying about
345
+ * boundary conditions.
346
+ */
347
+ static sk_sp<SkImageFilter> RuntimeShader(const SkRuntimeShaderBuilder& builder,
348
+ SkScalar sampleRadius,
343
349
  std::string_view childShaderName,
344
350
  sk_sp<SkImageFilter> input);
345
351
 
@@ -359,6 +365,22 @@ public:
359
365
  * @param inputCount How many entries are present in 'childShaderNames' and 'inputs'.
360
366
  */
361
367
  static sk_sp<SkImageFilter> RuntimeShader(const SkRuntimeShaderBuilder& builder,
368
+ std::string_view childShaderNames[],
369
+ const sk_sp<SkImageFilter> inputs[],
370
+ int inputCount) {
371
+ return RuntimeShader(builder, /*maxSampleRadius=*/0.f, childShaderNames,
372
+ inputs, inputCount);
373
+ }
374
+
375
+ /**
376
+ * As above, but 'maxSampleRadius' defines the sampling limit on coordinates provided to all
377
+ * child shaders. Like the single-child variant with a sample radius, this can be used to
378
+ * inform Skia that the runtime shader guarantees that all dynamic children (defined in
379
+ * childShaderNames) will be evaluated with coordinates at most 'maxSampleRadius' away from the
380
+ * coordinate provided to the runtime shader itself.
381
+ */
382
+ static sk_sp<SkImageFilter> RuntimeShader(const SkRuntimeShaderBuilder& builder,
383
+ SkScalar maxSampleRadius,
362
384
  std::string_view childShaderNames[],
363
385
  const sk_sp<SkImageFilter> inputs[],
364
386
  int inputCount);
@@ -377,6 +399,9 @@ public:
377
399
  * Like Image() and Picture(), this is a leaf filter that can be used to introduce inputs to
378
400
  * a complex filter graph, but should generally be combined with a filter that as at least
379
401
  * one null input to use the implicit source image.
402
+ *
403
+ * Returns an image filter that evaluates to transparent black if 'shader' is null.
404
+ *
380
405
  * @param shader The shader that fills the result image
381
406
  */
382
407
  static sk_sp<SkImageFilter> Shader(sk_sp<SkShader> shader, const CropRect& cropRect = {}) {
@@ -8,7 +8,12 @@
8
8
  #ifndef SkPerlinNoiseShader_DEFINED
9
9
  #define SkPerlinNoiseShader_DEFINED
10
10
 
11
- #include "include/core/SkShader.h"
11
+ #include "include/core/SkRefCnt.h"
12
+ #include "include/core/SkScalar.h"
13
+ #include "include/core/SkShader.h" // IWYU pragma: keep
14
+ #include "include/private/base/SkAPI.h"
15
+
16
+ struct SkISize;
12
17
 
13
18
  /** \class SkPerlinNoiseShader
14
19
 
@@ -22,33 +27,27 @@
22
27
  The algorithm used is described here :
23
28
  http://www.w3.org/TR/SVG/filters.html#feTurbulenceElement
24
29
  */
25
- class SK_API SkPerlinNoiseShader {
26
- public:
27
- /**
28
- * This will construct Perlin noise of the given type (Fractal Noise or Turbulence).
29
- *
30
- * Both base frequencies (X and Y) have a usual range of (0..1) and must be non-negative.
31
- *
32
- * The number of octaves provided should be fairly small, with a limit of 255 enforced.
33
- * Each octave doubles the frequency, so 10 octaves would produce noise from
34
- * baseFrequency * 1, * 2, * 4, ..., * 512, which quickly yields insignificantly small
35
- * periods and resembles regular unstructured noise rather than Perlin noise.
36
- *
37
- * If tileSize isn't NULL or an empty size, the tileSize parameter will be used to modify
38
- * the frequencies so that the noise will be tileable for the given tile size. If tileSize
39
- * is NULL or an empty size, the frequencies will be used as is without modification.
40
- */
41
- static sk_sp<SkShader> MakeFractalNoise(SkScalar baseFrequencyX, SkScalar baseFrequencyY,
42
- int numOctaves, SkScalar seed,
43
- const SkISize* tileSize = nullptr);
44
- static sk_sp<SkShader> MakeTurbulence(SkScalar baseFrequencyX, SkScalar baseFrequencyY,
45
- int numOctaves, SkScalar seed,
46
- const SkISize* tileSize = nullptr);
47
-
48
- static void RegisterFlattenables();
49
-
50
- private:
51
- SkPerlinNoiseShader() = delete;
52
- };
30
+ namespace SkShaders {
31
+ /**
32
+ * This will construct Perlin noise of the given type (Fractal Noise or Turbulence).
33
+ *
34
+ * Both base frequencies (X and Y) have a usual range of (0..1) and must be non-negative.
35
+ *
36
+ * The number of octaves provided should be fairly small, with a limit of 255 enforced.
37
+ * Each octave doubles the frequency, so 10 octaves would produce noise from
38
+ * baseFrequency * 1, * 2, * 4, ..., * 512, which quickly yields insignificantly small
39
+ * periods and resembles regular unstructured noise rather than Perlin noise.
40
+ *
41
+ * If tileSize isn't NULL or an empty size, the tileSize parameter will be used to modify
42
+ * the frequencies so that the noise will be tileable for the given tile size. If tileSize
43
+ * is NULL or an empty size, the frequencies will be used as is without modification.
44
+ */
45
+ SK_API sk_sp<SkShader> MakeFractalNoise(SkScalar baseFrequencyX, SkScalar baseFrequencyY,
46
+ int numOctaves, SkScalar seed,
47
+ const SkISize* tileSize = nullptr);
48
+ SK_API sk_sp<SkShader> MakeTurbulence(SkScalar baseFrequencyX, SkScalar baseFrequencyY,
49
+ int numOctaves, SkScalar seed,
50
+ const SkISize* tileSize = nullptr);
51
+ } // namespace SkShaders
53
52
 
54
53
  #endif