@shopify/react-native-skia 0.1.129 → 0.1.130
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.
- package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +1 -0
- package/cpp/api/JsiSkRuntimeEffect.h +7 -9
- package/cpp/api/JsiSkVertices.h +0 -2
- package/cpp/rnskia/values/RNSkValue.h +1 -1
- package/cpp/skia/include/codec/SkCodec.h +7 -1
- package/cpp/skia/include/core/SkAlphaType.h +45 -0
- package/cpp/skia/include/core/SkBitmap.h +4 -2
- package/cpp/skia/include/core/SkCanvas.h +31 -20
- package/cpp/skia/include/core/SkColor.h +1 -1
- package/cpp/skia/include/core/SkColorFilter.h +1 -0
- package/cpp/skia/include/core/SkColorType.h +66 -0
- package/cpp/skia/include/core/SkDeferredDisplayListRecorder.h +1 -1
- package/cpp/skia/include/core/SkDrawable.h +7 -0
- package/cpp/skia/include/core/SkEncodedImageFormat.h +1 -0
- package/cpp/skia/include/core/SkFont.h +4 -3
- package/cpp/skia/include/core/SkFontArguments.h +33 -1
- package/cpp/skia/include/core/SkGraphics.h +13 -0
- package/cpp/skia/include/core/SkImage.h +67 -22
- package/cpp/skia/include/core/SkImageEncoder.h +0 -3
- package/cpp/skia/include/core/SkImageGenerator.h +4 -3
- package/cpp/skia/include/core/SkImageInfo.h +35 -142
- package/cpp/skia/include/core/SkMesh.h +303 -0
- package/cpp/skia/include/core/SkMilestone.h +1 -1
- package/cpp/skia/include/core/SkOpenTypeSVGDecoder.h +30 -0
- package/cpp/skia/include/core/SkPaint.h +4 -19
- package/cpp/skia/include/core/SkPath.h +20 -33
- package/cpp/skia/include/core/SkPathBuilder.h +1 -6
- package/cpp/skia/include/core/SkPixelRef.h +1 -1
- package/cpp/skia/include/core/SkPixmap.h +3 -2
- package/cpp/skia/include/core/SkRSXform.h +1 -1
- package/cpp/skia/include/core/SkSamplingOptions.h +16 -5
- package/cpp/skia/include/core/SkSpan.h +5 -5
- package/cpp/skia/include/core/SkString.h +5 -8
- package/cpp/skia/include/core/SkSurface.h +21 -0
- package/cpp/skia/include/core/SkTypeface.h +20 -4
- package/cpp/skia/include/core/SkTypes.h +9 -5
- package/cpp/skia/include/effects/SkGradientShader.h +9 -18
- package/cpp/skia/include/effects/SkRuntimeEffect.h +16 -12
- package/cpp/skia/include/gpu/GpuTypes.h +32 -0
- package/cpp/skia/include/gpu/GrBackendSemaphore.h +1 -1
- package/cpp/skia/include/gpu/GrBackendSurface.h +6 -5
- package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +1 -1
- package/cpp/skia/include/gpu/GrContextOptions.h +11 -20
- package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +7 -0
- package/cpp/skia/include/gpu/GrDirectContext.h +16 -11
- package/cpp/skia/include/gpu/GrDriverBugWorkaroundsAutogen.h +0 -2
- package/cpp/skia/include/gpu/GrRecordingContext.h +14 -7
- package/cpp/skia/include/gpu/GrSurfaceInfo.h +6 -6
- package/cpp/skia/include/gpu/dawn/GrDawnTypes.h +1 -1
- package/cpp/skia/include/gpu/gl/GrGLFunctions.h +3 -1
- package/cpp/skia/include/gpu/gl/GrGLInterface.h +2 -2
- package/cpp/skia/include/gpu/graphite/BackendTexture.h +64 -0
- package/cpp/skia/include/gpu/graphite/Context.h +124 -0
- package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +71 -0
- package/cpp/skia/include/gpu/graphite/Recorder.h +104 -0
- package/cpp/skia/include/gpu/graphite/Recording.h +39 -0
- package/cpp/skia/include/gpu/graphite/SkStuff.h +47 -0
- package/cpp/skia/include/gpu/graphite/TextureInfo.h +91 -0
- package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +24 -0
- package/cpp/skia/include/gpu/graphite/mtl/MtlTypes.h +68 -0
- package/cpp/skia/include/gpu/mock/GrMockTypes.h +1 -2
- package/cpp/skia/include/ports/SkCFObject.h +0 -4
- package/cpp/skia/include/ports/SkTypeface_win.h +2 -2
- package/cpp/skia/include/private/{GrSingleOwner.h → SingleOwner.h} +17 -10
- package/cpp/skia/include/private/SkChecksum.h +11 -0
- package/cpp/skia/include/private/SkEncodedInfo.h +22 -5
- package/cpp/skia/include/private/SkFloatingPoint.h +0 -53
- package/cpp/skia/include/private/SkImageInfoPriv.h +8 -2
- package/cpp/skia/include/private/SkMacros.h +13 -18
- package/cpp/skia/include/private/SkMutex.h +8 -0
- package/cpp/skia/include/private/SkPathRef.h +2 -16
- package/cpp/skia/include/private/SkSLDefines.h +9 -1
- package/cpp/skia/include/private/SkSLIRNode.h +6 -5
- package/cpp/skia/include/private/SkSLLayout.h +11 -10
- package/cpp/skia/include/private/SkSLModifiers.h +4 -3
- package/cpp/skia/include/private/SkSLProgramElement.h +2 -2
- package/cpp/skia/include/private/SkSLProgramKind.h +8 -5
- package/cpp/skia/include/private/SkSLStatement.h +2 -3
- package/cpp/skia/include/private/SkSLString.h +17 -56
- package/cpp/skia/include/private/SkSLSymbol.h +4 -4
- package/cpp/skia/include/private/SkShadowFlags.h +3 -1
- package/cpp/skia/include/private/SkStringView.h +47 -0
- package/cpp/skia/include/private/SkTArray.h +4 -3
- package/cpp/skia/include/private/SkTHash.h +66 -24
- package/cpp/skia/include/private/SkTLogic.h +2 -32
- package/cpp/skia/include/private/SkTemplates.h +2 -2
- package/cpp/skia/include/private/SkThreadAnnotations.h +4 -4
- package/cpp/skia/include/private/SkVx.h +28 -28
- package/cpp/skia/include/private/chromium/GrSlug.h +40 -3
- package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +12 -6
- package/cpp/skia/include/private/{GrContext_Base.h → gpu/ganesh/GrContext_Base.h} +7 -0
- package/cpp/skia/include/private/{GrD3DTypesMinimal.h → gpu/ganesh/GrD3DTypesMinimal.h} +0 -0
- package/cpp/skia/include/private/{GrDawnTypesPriv.h → gpu/ganesh/GrDawnTypesPriv.h} +0 -0
- package/cpp/skia/include/private/{GrGLTypesPriv.h → gpu/ganesh/GrGLTypesPriv.h} +1 -0
- package/cpp/skia/include/private/{GrImageContext.h → gpu/ganesh/GrImageContext.h} +4 -4
- package/cpp/skia/include/private/{GrMockTypesPriv.h → gpu/ganesh/GrMockTypesPriv.h} +0 -0
- package/cpp/skia/include/private/{GrMtlTypesPriv.h → gpu/ganesh/GrMtlTypesPriv.h} +0 -0
- package/cpp/skia/include/private/{GrTypesPriv.h → gpu/ganesh/GrTypesPriv.h} +25 -367
- package/cpp/skia/include/private/{GrVkTypesPriv.h → gpu/ganesh/GrVkTypesPriv.h} +0 -0
- package/cpp/skia/include/private/gpu/graphite/MtlTypesPriv.h +74 -0
- package/cpp/skia/include/sksl/DSL.h +4 -0
- package/cpp/skia/include/sksl/DSLBlock.h +8 -3
- package/cpp/skia/include/sksl/DSLCase.h +6 -6
- package/cpp/skia/include/sksl/DSLCore.h +89 -78
- package/cpp/skia/include/sksl/DSLExpression.h +78 -45
- package/cpp/skia/include/sksl/DSLFunction.h +23 -18
- package/cpp/skia/include/sksl/DSLLayout.h +14 -16
- package/cpp/skia/include/sksl/DSLModifiers.h +7 -5
- package/cpp/skia/include/sksl/DSLRuntimeEffects.h +1 -1
- package/cpp/skia/include/sksl/DSLStatement.h +16 -10
- package/cpp/skia/include/sksl/DSLSymbols.h +7 -7
- package/cpp/skia/include/sksl/DSLType.h +27 -23
- package/cpp/skia/include/sksl/DSLVar.h +72 -61
- package/cpp/skia/include/sksl/SkSLErrorReporter.h +12 -49
- package/cpp/skia/include/sksl/SkSLOperator.h +151 -0
- package/cpp/skia/include/sksl/SkSLPosition.h +102 -0
- package/cpp/skia/include/svg/SkSVGCanvas.h +5 -1
- package/cpp/skia/include/utils/SkAnimCodecPlayer.h +7 -0
- package/cpp/skia/include/utils/SkCamera.h +2 -0
- package/cpp/skia/include/utils/SkCanvasStateUtils.h +4 -1
- package/cpp/skia/include/utils/SkCustomTypeface.h +6 -4
- package/cpp/skia/include/utils/SkNWayCanvas.h +34 -0
- package/cpp/skia/include/utils/SkNullCanvas.h +5 -1
- package/cpp/skia/include/utils/SkOrderedFontMgr.h +12 -0
- package/cpp/skia/include/utils/SkPaintFilterCanvas.h +30 -1
- package/cpp/skia/include/utils/SkParse.h +2 -0
- package/cpp/skia/include/utils/SkShadowUtils.h +3 -2
- package/cpp/skia/include/utils/SkTextUtils.h +8 -4
- package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +27 -1
- package/cpp/skia/modules/svg/include/SkSVGDOM.h +4 -0
- package/cpp/skia/modules/svg/include/SkSVGOpenTypeSVGDecoder.h +32 -0
- package/cpp/skia/modules/svg/include/SkSVGRenderContext.h +3 -3
- package/cpp/skia/modules/svg/include/SkSVGSVG.h +2 -0
- package/cpp/skia/modules/svg/include/SkSVGTypes.h +48 -9
- package/ios/RNSkia-iOS/PlatformContext.h +1 -1
- package/ios/RNSkia-iOS/RNSkDrawViewImpl.mm +1 -0
- package/ios/RNSkia-iOS/SkiaDrawView.mm +1 -1
- package/lib/commonjs/renderer/components/shaders/Shader.js +1 -2
- package/lib/commonjs/renderer/components/shaders/Shader.js.map +1 -1
- package/lib/module/renderer/components/shaders/Shader.js +1 -2
- package/lib/module/renderer/components/shaders/Shader.js.map +1 -1
- package/lib/typescript/src/renderer/components/shaders/Shader.d.ts +0 -1
- package/lib/typescript/src/skia/types/RuntimeEffect/RuntimeEffect.d.ts +2 -4
- package/libs/android/arm64-v8a/libskia.a +0 -0
- package/libs/android/arm64-v8a/libsvg.a +0 -0
- package/libs/android/armeabi-v7a/libskia.a +0 -0
- package/libs/android/armeabi-v7a/libsvg.a +0 -0
- package/libs/android/x86/libskia.a +0 -0
- package/libs/android/x86/libsvg.a +0 -0
- package/libs/android/x86_64/libskia.a +0 -0
- package/libs/android/x86_64/libsvg.a +0 -0
- package/libs/ios/libskia.xcframework/Info.plist +5 -5
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
- package/libs/ios/libskshaper.xcframework/Info.plist +5 -5
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
- package/package.json +2 -2
- package/src/renderer/components/shaders/Shader.tsx +1 -3
- package/src/skia/types/RuntimeEffect/RuntimeEffect.ts +1 -8
- package/cpp/skia/include/core/SkCustomMesh.h +0 -202
- package/cpp/skia/include/core/SkStringView.h +0 -185
- package/cpp/skia/include/private/SkPaintParamsKey.h +0 -110
- package/cpp/skia/include/private/SkShaderCodeDictionary.h +0 -63
- package/cpp/skia/include/private/SkTOptional.h +0 -362
|
@@ -44,12 +44,11 @@ namespace RNSkia
|
|
|
44
44
|
JSI_HOST_FUNCTION(makeShader)
|
|
45
45
|
{
|
|
46
46
|
auto uniforms = castUniforms(runtime, arguments[0]);
|
|
47
|
-
|
|
48
|
-
auto matrix = count >=
|
|
47
|
+
|
|
48
|
+
auto matrix = count >= 2 && !arguments[1].isUndefined() && !arguments[1].isNull() ? JsiSkMatrix::fromValue(runtime, arguments[1]).get() : nullptr;
|
|
49
49
|
|
|
50
50
|
// Create and return shader as host object
|
|
51
|
-
auto shader = getObject()->makeShader(std::move(uniforms), nullptr,
|
|
52
|
-
0, matrix, isOpaque);
|
|
51
|
+
auto shader = getObject()->makeShader(std::move(uniforms), nullptr, 0, matrix);
|
|
53
52
|
|
|
54
53
|
return jsi::Object::createFromHostObject(
|
|
55
54
|
runtime, std::make_shared<JsiSkShader>(getContext(), std::move(shader)));
|
|
@@ -58,11 +57,10 @@ namespace RNSkia
|
|
|
58
57
|
JSI_HOST_FUNCTION(makeShaderWithChildren)
|
|
59
58
|
{
|
|
60
59
|
auto uniforms = castUniforms(runtime, arguments[0]);
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
|
|
63
61
|
// Children
|
|
64
62
|
std::vector<sk_sp<SkShader>> children;
|
|
65
|
-
auto jsiChildren = arguments[
|
|
63
|
+
auto jsiChildren = arguments[1].asObject(runtime).asArray(runtime);
|
|
66
64
|
auto jsiChildCount = jsiChildren.size(runtime);
|
|
67
65
|
children.reserve(jsiChildCount);
|
|
68
66
|
for (int i = 0; i < jsiChildCount; i++)
|
|
@@ -74,11 +72,11 @@ namespace RNSkia
|
|
|
74
72
|
children.push_back(shader);
|
|
75
73
|
}
|
|
76
74
|
|
|
77
|
-
auto matrix = count >=
|
|
75
|
+
auto matrix = count >= 3 && !arguments[2].isUndefined() && !arguments[2].isNull() ? JsiSkMatrix::fromValue(runtime, arguments[2]).get() : nullptr;
|
|
78
76
|
|
|
79
77
|
// Create and return shader as host object
|
|
80
78
|
auto shader = getObject()->makeShader(std::move(uniforms), children.data(),
|
|
81
|
-
children.size(), matrix
|
|
79
|
+
children.size(), matrix);
|
|
82
80
|
|
|
83
81
|
return jsi::Object::createFromHostObject(
|
|
84
82
|
runtime, std::make_shared<JsiSkShader>(getContext(), std::move(shader)));
|
package/cpp/api/JsiSkVertices.h
CHANGED
|
@@ -43,7 +43,7 @@ public:
|
|
|
43
43
|
unsubscribe();
|
|
44
44
|
|
|
45
45
|
// Verify input
|
|
46
|
-
if(value.isObject() && value.asObject(runtime).isHostObject(runtime)) {
|
|
46
|
+
if(value.isObject() && value.asObject(runtime).isHostObject<RNSkAnimation>(runtime)) {
|
|
47
47
|
auto animation = value.asObject(runtime).getHostObject<RNSkAnimation>(runtime);
|
|
48
48
|
if(animation != nullptr) {
|
|
49
49
|
// Now we have a value animation - let us connect and start
|
|
@@ -758,6 +758,12 @@ protected:
|
|
|
758
758
|
std::unique_ptr<SkStream>,
|
|
759
759
|
SkEncodedOrigin = kTopLeft_SkEncodedOrigin);
|
|
760
760
|
|
|
761
|
+
void setSrcXformFormat(XformFormat pixelFormat);
|
|
762
|
+
|
|
763
|
+
XformFormat getSrcXformFormat() const {
|
|
764
|
+
return fSrcXformFormat;
|
|
765
|
+
}
|
|
766
|
+
|
|
761
767
|
virtual SkISize onGetScaledDimensions(float /*desiredScale*/) const {
|
|
762
768
|
// By default, scaling is not supported.
|
|
763
769
|
return this->dimensions();
|
|
@@ -876,7 +882,7 @@ protected:
|
|
|
876
882
|
|
|
877
883
|
private:
|
|
878
884
|
const SkEncodedInfo fEncodedInfo;
|
|
879
|
-
|
|
885
|
+
XformFormat fSrcXformFormat;
|
|
880
886
|
std::unique_ptr<SkStream> fStream;
|
|
881
887
|
bool fNeedsRewind;
|
|
882
888
|
const SkEncodedOrigin fOrigin;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2022 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 SkAlphaType_DEFINED
|
|
9
|
+
#define SkAlphaType_DEFINED
|
|
10
|
+
|
|
11
|
+
/** \enum SkAlphaType
|
|
12
|
+
Describes how to interpret the alpha component of a pixel. A pixel may
|
|
13
|
+
be opaque, or alpha, describing multiple levels of transparency.
|
|
14
|
+
|
|
15
|
+
In simple blending, alpha weights the draw color and the destination
|
|
16
|
+
color to create a new color. If alpha describes a weight from zero to one:
|
|
17
|
+
|
|
18
|
+
new color = draw color * alpha + destination color * (1 - alpha)
|
|
19
|
+
|
|
20
|
+
In practice alpha is encoded in two or more bits, where 1.0 equals all bits set.
|
|
21
|
+
|
|
22
|
+
RGB may have alpha included in each component value; the stored
|
|
23
|
+
value is the original RGB multiplied by alpha. Premultiplied color
|
|
24
|
+
components improve performance.
|
|
25
|
+
*/
|
|
26
|
+
enum SkAlphaType : int {
|
|
27
|
+
kUnknown_SkAlphaType, //!< uninitialized
|
|
28
|
+
kOpaque_SkAlphaType, //!< pixel is opaque
|
|
29
|
+
kPremul_SkAlphaType, //!< pixel components are premultiplied by alpha
|
|
30
|
+
kUnpremul_SkAlphaType, //!< pixel components are independent of alpha
|
|
31
|
+
kLastEnum_SkAlphaType = kUnpremul_SkAlphaType, //!< last valid value
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/** Returns true if SkAlphaType equals kOpaque_SkAlphaType.
|
|
35
|
+
|
|
36
|
+
kOpaque_SkAlphaType is a hint that the SkColorType is opaque, or that all
|
|
37
|
+
alpha values are set to their 1.0 equivalent. If SkAlphaType is
|
|
38
|
+
kOpaque_SkAlphaType, and SkColorType is not opaque, then the result of
|
|
39
|
+
drawing any pixel with a alpha value less than 1.0 is undefined.
|
|
40
|
+
*/
|
|
41
|
+
static inline bool SkAlphaTypeIsOpaque(SkAlphaType at) {
|
|
42
|
+
return kOpaque_SkAlphaType == at;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
#endif
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
#include "include/core/SkTileMode.h"
|
|
19
19
|
|
|
20
20
|
class SkBitmap;
|
|
21
|
+
class SkColorSpace;
|
|
21
22
|
struct SkMask;
|
|
22
23
|
class SkMipmap;
|
|
23
24
|
struct SkIRect;
|
|
@@ -158,7 +159,7 @@ public:
|
|
|
158
159
|
|
|
159
160
|
@return SkColorSpace in SkImageInfo, or nullptr
|
|
160
161
|
*/
|
|
161
|
-
SkColorSpace* colorSpace() const
|
|
162
|
+
SkColorSpace* colorSpace() const;
|
|
162
163
|
|
|
163
164
|
/** Returns smart pointer to SkColorSpace, the range of colors, associated with
|
|
164
165
|
SkImageInfo. The smart pointer tracks the number of objects sharing this
|
|
@@ -168,7 +169,7 @@ public:
|
|
|
168
169
|
|
|
169
170
|
@return SkColorSpace in SkImageInfo wrapped in a smart pointer
|
|
170
171
|
*/
|
|
171
|
-
sk_sp<SkColorSpace> refColorSpace() const
|
|
172
|
+
sk_sp<SkColorSpace> refColorSpace() const;
|
|
172
173
|
|
|
173
174
|
/** Returns number of bytes per pixel required by SkColorType.
|
|
174
175
|
Returns zero if colorType( is kUnknown_SkColorType.
|
|
@@ -1190,6 +1191,7 @@ private:
|
|
|
1190
1191
|
|
|
1191
1192
|
friend class SkImage_Raster;
|
|
1192
1193
|
friend class SkReadBuffer; // unflatten
|
|
1194
|
+
friend class GrProxyProvider; // fMips
|
|
1193
1195
|
};
|
|
1194
1196
|
|
|
1195
1197
|
///////////////////////////////////////////////////////////////////////////////
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
|
|
32
32
|
#include <cstring>
|
|
33
33
|
#include <memory>
|
|
34
|
+
#include <optional>
|
|
34
35
|
#include <vector>
|
|
35
36
|
|
|
36
37
|
#ifndef SK_SUPPORT_LEGACY_GETTOTALMATRIX
|
|
@@ -58,16 +59,15 @@ class SkPixmap;
|
|
|
58
59
|
class SkRegion;
|
|
59
60
|
class SkRRect;
|
|
60
61
|
struct SkRSXform;
|
|
61
|
-
|
|
62
|
+
class SkMesh;
|
|
62
63
|
class SkSpecialImage;
|
|
63
64
|
class SkSurface;
|
|
64
65
|
class SkSurface_Base;
|
|
65
66
|
class SkTextBlob;
|
|
66
67
|
class SkVertices;
|
|
67
68
|
|
|
68
|
-
namespace
|
|
69
|
-
|
|
70
|
-
}
|
|
69
|
+
namespace skgpu::graphite { class Recorder; }
|
|
70
|
+
namespace SkRecords { class Draw; }
|
|
71
71
|
|
|
72
72
|
/** \class SkCanvas
|
|
73
73
|
SkCanvas provides an interface for drawing, and how the drawing is clipped and transformed.
|
|
@@ -300,6 +300,12 @@ public:
|
|
|
300
300
|
*/
|
|
301
301
|
virtual GrRecordingContext* recordingContext();
|
|
302
302
|
|
|
303
|
+
/** Returns Recorder for the GPU surface associated with SkCanvas.
|
|
304
|
+
|
|
305
|
+
@return Recorder, if available; nullptr otherwise
|
|
306
|
+
*/
|
|
307
|
+
virtual skgpu::graphite::Recorder* recorder();
|
|
308
|
+
|
|
303
309
|
/** Sometimes a canvas is owned by a surface. If it is, getSurface() will return a bare
|
|
304
310
|
* pointer to that surface, else this will return nullptr.
|
|
305
311
|
*/
|
|
@@ -1438,7 +1444,8 @@ public:
|
|
|
1438
1444
|
/** \enum SkCanvas::SrcRectConstraint
|
|
1439
1445
|
SrcRectConstraint controls the behavior at the edge of source SkRect,
|
|
1440
1446
|
provided to drawImageRect() when there is any filtering. If kStrict is set,
|
|
1441
|
-
then extra code is used to ensure it
|
|
1447
|
+
then extra code is used to ensure it never samples outside of the src-rect.
|
|
1448
|
+
kStrict_SrcRectConstraint disables the use of mipmaps and anisotropic filtering.
|
|
1442
1449
|
*/
|
|
1443
1450
|
enum SrcRectConstraint {
|
|
1444
1451
|
kStrict_SrcRectConstraint, //!< sample only inside bounds; slower
|
|
@@ -1953,9 +1960,9 @@ public:
|
|
|
1953
1960
|
/**
|
|
1954
1961
|
Experimental, under active development, and subject to change without notice.
|
|
1955
1962
|
|
|
1956
|
-
Draws a mesh using a user-defined specification (see
|
|
1963
|
+
Draws a mesh using a user-defined specification (see SkMeshSpecification).
|
|
1957
1964
|
|
|
1958
|
-
SkBlender is ignored if
|
|
1965
|
+
SkBlender is ignored if SkMesh's specification does not output fragment shader color.
|
|
1959
1966
|
Otherwise, it combines
|
|
1960
1967
|
- the SkShader if SkPaint contains SkShader
|
|
1961
1968
|
- or the opaque SkPaint color if SkPaint does not contain SkShader
|
|
@@ -1963,13 +1970,13 @@ public:
|
|
|
1963
1970
|
|
|
1964
1971
|
SkMaskFilter, SkPathEffect, and antialiasing on SkPaint are ignored.
|
|
1965
1972
|
|
|
1966
|
-
@param
|
|
1973
|
+
@param mesh the mesh vertices and compatible specification.
|
|
1967
1974
|
@param blender combines vertices colors with SkShader if present or SkPaint opaque color
|
|
1968
1975
|
if not. Ignored if the custom mesh does not output color. Defaults to
|
|
1969
1976
|
SkBlendMode::kModulate if nullptr.
|
|
1970
1977
|
@param paint specifies the SkShader, used as SkVertices texture, may be nullptr
|
|
1971
1978
|
*/
|
|
1972
|
-
void
|
|
1979
|
+
void drawMesh(const SkMesh& mesh, sk_sp<SkBlender> blender, const SkPaint& paint);
|
|
1973
1980
|
#endif
|
|
1974
1981
|
|
|
1975
1982
|
/** Draws a Coons patch: the interpolation of four cubics with shared corners,
|
|
@@ -2193,7 +2200,7 @@ protected:
|
|
|
2193
2200
|
|
|
2194
2201
|
#ifndef SK_ENABLE_EXPERIMENTAL_CUSTOM_MESH
|
|
2195
2202
|
// Define this in protected so we can still access internally for testing.
|
|
2196
|
-
void
|
|
2203
|
+
void drawMesh(const SkMesh& mesh, sk_sp<SkBlender> blender, const SkPaint& paint);
|
|
2197
2204
|
#endif
|
|
2198
2205
|
|
|
2199
2206
|
// NOTE: If you are adding a new onDraw virtual to SkCanvas, PLEASE add an override to
|
|
@@ -2237,7 +2244,7 @@ protected:
|
|
|
2237
2244
|
virtual void onDrawVerticesObject(const SkVertices* vertices, SkBlendMode mode,
|
|
2238
2245
|
const SkPaint& paint);
|
|
2239
2246
|
#ifdef SK_ENABLE_SKSL
|
|
2240
|
-
virtual void
|
|
2247
|
+
virtual void onDrawMesh(const SkMesh&, sk_sp<SkBlender>, const SkPaint&);
|
|
2241
2248
|
#endif
|
|
2242
2249
|
virtual void onDrawAnnotation(const SkRect& rect, const char key[], SkData* value);
|
|
2243
2250
|
virtual void onDrawShadowRec(const SkPath&, const SkDrawShadowRec&);
|
|
@@ -2266,12 +2273,12 @@ protected:
|
|
|
2266
2273
|
#if SK_SUPPORT_GPU
|
|
2267
2274
|
/** Experimental
|
|
2268
2275
|
*/
|
|
2269
|
-
virtual sk_sp<GrSlug>
|
|
2270
|
-
const
|
|
2276
|
+
virtual sk_sp<GrSlug> onConvertGlyphRunListToSlug(
|
|
2277
|
+
const SkGlyphRunList& glyphRunList, const SkPaint& paint);
|
|
2271
2278
|
|
|
2272
2279
|
/** Experimental
|
|
2273
2280
|
*/
|
|
2274
|
-
virtual void
|
|
2281
|
+
virtual void onDrawSlug(const GrSlug* slug);
|
|
2275
2282
|
#endif
|
|
2276
2283
|
|
|
2277
2284
|
private:
|
|
@@ -2293,7 +2300,7 @@ private:
|
|
|
2293
2300
|
kYes = true
|
|
2294
2301
|
};
|
|
2295
2302
|
// call the appropriate predrawNotify and create a layer if needed.
|
|
2296
|
-
|
|
2303
|
+
std::optional<AutoLayerForImageFilter> aboutToDraw(
|
|
2297
2304
|
SkCanvas* canvas,
|
|
2298
2305
|
const SkPaint& paint,
|
|
2299
2306
|
const SkRect* rawBounds = nullptr,
|
|
@@ -2355,16 +2362,16 @@ private:
|
|
|
2355
2362
|
void reset(SkBaseDevice* device);
|
|
2356
2363
|
};
|
|
2357
2364
|
|
|
2358
|
-
SkDeque fMCStack;
|
|
2359
|
-
// points to top of stack
|
|
2360
|
-
MCRec* fMCRec;
|
|
2361
|
-
|
|
2362
2365
|
// the first N recs that can fit here mean we won't call malloc
|
|
2363
2366
|
static constexpr int kMCRecSize = 96; // most recent measurement
|
|
2364
2367
|
static constexpr int kMCRecCount = 32; // common depth for save/restores
|
|
2365
2368
|
|
|
2366
2369
|
intptr_t fMCRecStorage[kMCRecSize * kMCRecCount / sizeof(intptr_t)];
|
|
2367
2370
|
|
|
2371
|
+
SkDeque fMCStack;
|
|
2372
|
+
// points to top of stack
|
|
2373
|
+
MCRec* fMCRec;
|
|
2374
|
+
|
|
2368
2375
|
// Installed via init()
|
|
2369
2376
|
sk_sp<SkBaseDevice> fBaseDevice;
|
|
2370
2377
|
const SkSurfaceProps fProps;
|
|
@@ -2397,6 +2404,10 @@ private:
|
|
|
2397
2404
|
friend class SkPictureRecord; // predrawNotify (why does it need it? <reed>)
|
|
2398
2405
|
friend class SkOverdrawCanvas;
|
|
2399
2406
|
friend class SkRasterHandleAllocator;
|
|
2407
|
+
friend class SkRecords::Draw;
|
|
2408
|
+
template <typename Key>
|
|
2409
|
+
friend class SkTestCanvas;
|
|
2410
|
+
|
|
2400
2411
|
protected:
|
|
2401
2412
|
// For use by SkNoDrawCanvas (via SkCanvasVirtualEnforcer, which can't be a friend)
|
|
2402
2413
|
SkCanvas(const SkIRect& bounds);
|
|
@@ -2419,7 +2430,7 @@ private:
|
|
|
2419
2430
|
/** Experimental
|
|
2420
2431
|
* Draw an GrSlug given the current canvas state.
|
|
2421
2432
|
*/
|
|
2422
|
-
void drawSlug(GrSlug* slug);
|
|
2433
|
+
void drawSlug(const GrSlug* slug);
|
|
2423
2434
|
#endif
|
|
2424
2435
|
|
|
2425
2436
|
/** Experimental
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2022 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 SkColorType_DEFINED
|
|
9
|
+
#define SkColorType_DEFINED
|
|
10
|
+
|
|
11
|
+
#include "include/core/SkTypes.h"
|
|
12
|
+
|
|
13
|
+
/** \enum SkColorType
|
|
14
|
+
Describes how pixel bits encode color. A pixel may be an alpha mask, a grayscale, RGB, or ARGB.
|
|
15
|
+
|
|
16
|
+
kN32_SkColorType selects the native 32-bit ARGB format for the current configuration. This can
|
|
17
|
+
lead to inconsistent results across platforms, so use with caution.
|
|
18
|
+
*/
|
|
19
|
+
enum SkColorType : int {
|
|
20
|
+
kUnknown_SkColorType, //!< uninitialized
|
|
21
|
+
kAlpha_8_SkColorType, //!< pixel with alpha in 8-bit byte
|
|
22
|
+
kRGB_565_SkColorType, //!< pixel with 5 bits red, 6 bits green, 5 bits blue, in 16-bit word
|
|
23
|
+
kARGB_4444_SkColorType, //!< pixel with 4 bits for alpha, red, green, blue; in 16-bit word
|
|
24
|
+
kRGBA_8888_SkColorType, //!< pixel with 8 bits for red, green, blue, alpha; in 32-bit word
|
|
25
|
+
kRGB_888x_SkColorType, //!< pixel with 8 bits each for red, green, blue; in 32-bit word
|
|
26
|
+
kBGRA_8888_SkColorType, //!< pixel with 8 bits for blue, green, red, alpha; in 32-bit word
|
|
27
|
+
kRGBA_1010102_SkColorType, //!< 10 bits for red, green, blue; 2 bits for alpha; in 32-bit word
|
|
28
|
+
kBGRA_1010102_SkColorType, //!< 10 bits for blue, green, red; 2 bits for alpha; in 32-bit word
|
|
29
|
+
kRGB_101010x_SkColorType, //!< pixel with 10 bits each for red, green, blue; in 32-bit word
|
|
30
|
+
kBGR_101010x_SkColorType, //!< pixel with 10 bits each for blue, green, red; in 32-bit word
|
|
31
|
+
kGray_8_SkColorType, //!< pixel with grayscale level in 8-bit byte
|
|
32
|
+
kRGBA_F16Norm_SkColorType, //!< pixel with half floats in [0,1] for red, green, blue, alpha;
|
|
33
|
+
// in 64-bit word
|
|
34
|
+
kRGBA_F16_SkColorType, //!< pixel with half floats for red, green, blue, alpha;
|
|
35
|
+
// in 64-bit word
|
|
36
|
+
kRGBA_F32_SkColorType, //!< pixel using C float for red, green, blue, alpha; in 128-bit word
|
|
37
|
+
|
|
38
|
+
// The following 6 colortypes are just for reading from - not for rendering to
|
|
39
|
+
kR8G8_unorm_SkColorType, //!< pixel with a uint8_t for red and green
|
|
40
|
+
|
|
41
|
+
kA16_float_SkColorType, //!< pixel with a half float for alpha
|
|
42
|
+
kR16G16_float_SkColorType, //!< pixel with a half float for red and green
|
|
43
|
+
|
|
44
|
+
kA16_unorm_SkColorType, //!< pixel with a little endian uint16_t for alpha
|
|
45
|
+
kR16G16_unorm_SkColorType, //!< pixel with a little endian uint16_t for red and green
|
|
46
|
+
kR16G16B16A16_unorm_SkColorType, //!< pixel with a little endian uint16_t for red, green, blue
|
|
47
|
+
// and alpha
|
|
48
|
+
|
|
49
|
+
kSRGBA_8888_SkColorType,
|
|
50
|
+
kR8_unorm_SkColorType,
|
|
51
|
+
|
|
52
|
+
kLastEnum_SkColorType = kR8_unorm_SkColorType, //!< last valid value
|
|
53
|
+
|
|
54
|
+
#if SK_PMCOLOR_BYTE_ORDER(B,G,R,A)
|
|
55
|
+
kN32_SkColorType = kBGRA_8888_SkColorType,//!< native 32-bit BGRA encoding
|
|
56
|
+
|
|
57
|
+
#elif SK_PMCOLOR_BYTE_ORDER(R,G,B,A)
|
|
58
|
+
kN32_SkColorType = kRGBA_8888_SkColorType,//!< native 32-bit RGBA encoding
|
|
59
|
+
|
|
60
|
+
#else
|
|
61
|
+
#error "SK_*32_SHIFT values must correspond to BGRA or RGBA byte order"
|
|
62
|
+
#endif
|
|
63
|
+
};
|
|
64
|
+
static constexpr int kSkColorTypeCnt = static_cast<int>(kLastEnum_SkColorType) + 1;
|
|
65
|
+
|
|
66
|
+
#endif
|
|
@@ -103,6 +103,12 @@ public:
|
|
|
103
103
|
*/
|
|
104
104
|
SkRect getBounds();
|
|
105
105
|
|
|
106
|
+
/**
|
|
107
|
+
* Return approximately how many bytes would be freed if this drawable is destroyed.
|
|
108
|
+
* The base implementation returns 0 to indicate that this is unknown.
|
|
109
|
+
*/
|
|
110
|
+
size_t approximateBytesUsed();
|
|
111
|
+
|
|
106
112
|
/**
|
|
107
113
|
* Calling this invalidates the previous generation ID, and causes a new one to be computed
|
|
108
114
|
* the next time getGenerationID() is called. Typically this is called by the object itself,
|
|
@@ -132,6 +138,7 @@ protected:
|
|
|
132
138
|
SkDrawable();
|
|
133
139
|
|
|
134
140
|
virtual SkRect onGetBounds() = 0;
|
|
141
|
+
virtual size_t onApproximateBytesUsed();
|
|
135
142
|
virtual void onDraw(SkCanvas*) = 0;
|
|
136
143
|
|
|
137
144
|
virtual std::unique_ptr<GpuDrawHandler> onSnapGpuDrawHandler(GrBackendApi, const SkMatrix&,
|
|
@@ -331,7 +331,7 @@ public:
|
|
|
331
331
|
@param text character storage encoded with SkTextEncoding
|
|
332
332
|
@param byteLength length of character storage in bytes
|
|
333
333
|
@param bounds returns bounding box relative to (0, 0) if not nullptr
|
|
334
|
-
@return
|
|
334
|
+
@return the sum of the default advance widths
|
|
335
335
|
*/
|
|
336
336
|
SkScalar measureText(const void* text, size_t byteLength, SkTextEncoding encoding,
|
|
337
337
|
SkRect* bounds = nullptr) const {
|
|
@@ -347,7 +347,7 @@ public:
|
|
|
347
347
|
@param byteLength length of character storage in bytes
|
|
348
348
|
@param bounds returns bounding box relative to (0, 0) if not nullptr
|
|
349
349
|
@param paint optional; may be nullptr
|
|
350
|
-
@return
|
|
350
|
+
@return the sum of the default advance widths
|
|
351
351
|
*/
|
|
352
352
|
SkScalar measureText(const void* text, size_t byteLength, SkTextEncoding encoding,
|
|
353
353
|
SkRect* bounds, const SkPaint* paint) const;
|
|
@@ -527,8 +527,9 @@ private:
|
|
|
527
527
|
bool hasSomeAntiAliasing() const;
|
|
528
528
|
|
|
529
529
|
friend class SkFontPriv;
|
|
530
|
-
friend class
|
|
530
|
+
friend class SkGlyphRunListPainterCPU;
|
|
531
531
|
friend class SkStrikeSpec;
|
|
532
|
+
friend class SkRemoteGlyphCacheTest;
|
|
532
533
|
};
|
|
533
534
|
|
|
534
535
|
#endif
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
#ifndef SkFontArguments_DEFINED
|
|
9
9
|
#define SkFontArguments_DEFINED
|
|
10
10
|
|
|
11
|
+
#include "include/core/SkColor.h"
|
|
11
12
|
#include "include/core/SkScalar.h"
|
|
12
13
|
#include "include/core/SkTypes.h"
|
|
13
14
|
|
|
@@ -22,7 +23,27 @@ struct SkFontArguments {
|
|
|
22
23
|
int coordinateCount;
|
|
23
24
|
};
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
/** Specify a palette to use and overrides for palette entries.
|
|
27
|
+
*
|
|
28
|
+
* `overrides` is a list of pairs of palette entry index and color.
|
|
29
|
+
* The overriden palette entries will use the associated color.
|
|
30
|
+
* Override pairs with palette entry indices out of range will not be applied.
|
|
31
|
+
* Later override entries override earlier ones.
|
|
32
|
+
*/
|
|
33
|
+
struct Palette {
|
|
34
|
+
struct Override {
|
|
35
|
+
int index;
|
|
36
|
+
SkColor color;
|
|
37
|
+
};
|
|
38
|
+
int index;
|
|
39
|
+
const Override* overrides;
|
|
40
|
+
int overrideCount;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
SkFontArguments()
|
|
44
|
+
: fCollectionIndex(0)
|
|
45
|
+
, fVariationDesignPosition{nullptr, 0}
|
|
46
|
+
, fPalette{0, nullptr, 0} {}
|
|
26
47
|
|
|
27
48
|
/** Specify the index of the desired font.
|
|
28
49
|
*
|
|
@@ -54,9 +75,20 @@ struct SkFontArguments {
|
|
|
54
75
|
VariationPosition getVariationDesignPosition() const {
|
|
55
76
|
return fVariationDesignPosition;
|
|
56
77
|
}
|
|
78
|
+
|
|
79
|
+
SkFontArguments& setPalette(Palette palette) {
|
|
80
|
+
fPalette.index = palette.index;
|
|
81
|
+
fPalette.overrides = palette.overrides;
|
|
82
|
+
fPalette.overrideCount = palette.overrideCount;
|
|
83
|
+
return *this;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
Palette getPalette() const { return fPalette; }
|
|
87
|
+
|
|
57
88
|
private:
|
|
58
89
|
int fCollectionIndex;
|
|
59
90
|
VariationPosition fVariationDesignPosition;
|
|
91
|
+
Palette fPalette;
|
|
60
92
|
};
|
|
61
93
|
|
|
62
94
|
#endif
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
class SkData;
|
|
14
14
|
class SkImageGenerator;
|
|
15
|
+
class SkOpenTypeSVGDecoder;
|
|
15
16
|
class SkTraceMemoryDump;
|
|
16
17
|
|
|
17
18
|
class SK_API SkGraphics {
|
|
@@ -137,6 +138,18 @@ public:
|
|
|
137
138
|
static ImageGeneratorFromEncodedDataFactory
|
|
138
139
|
SetImageGeneratorFromEncodedDataFactory(ImageGeneratorFromEncodedDataFactory);
|
|
139
140
|
|
|
141
|
+
/**
|
|
142
|
+
* To draw OpenType SVG data, Skia will look at this runtime function pointer. If this function
|
|
143
|
+
* pointer is set, the SkTypeface implementations which support OpenType SVG will call this
|
|
144
|
+
* function to create an SkOpenTypeSVGDecoder to decode the OpenType SVG and draw it as needed.
|
|
145
|
+
* If this function is not set, the SkTypeface implementations will generally not support
|
|
146
|
+
* OpenType SVG and attempt to use other glyph representations if available.
|
|
147
|
+
*/
|
|
148
|
+
using OpenTypeSVGDecoderFactory =
|
|
149
|
+
std::unique_ptr<SkOpenTypeSVGDecoder> (*)(const uint8_t* svg, size_t length);
|
|
150
|
+
static OpenTypeSVGDecoderFactory SetOpenTypeSVGDecoderFactory(OpenTypeSVGDecoderFactory);
|
|
151
|
+
static OpenTypeSVGDecoderFactory GetOpenTypeSVGDecoderFactory();
|
|
152
|
+
|
|
140
153
|
/**
|
|
141
154
|
* Call early in main() to allow Skia to use a JIT to accelerate CPU-bound operations.
|
|
142
155
|
*/
|