@shopify/react-native-skia 0.1.158 → 0.1.159
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/CMakeLists.txt +35 -11
- package/android/build.gradle +21 -25
- package/android/cpp/jni/JniLoad.cpp +2 -0
- package/android/cpp/jni/include/JniSkiaDomView.h +89 -0
- package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +4 -3
- package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +4 -3
- package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +2 -1
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomView.java +45 -0
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +64 -0
- package/cpp/api/JsiSkHostObjects.h +6 -0
- package/cpp/api/JsiSkImageFilterFactory.h +1 -1
- package/cpp/api/JsiSkPaint.h +9 -2
- package/cpp/api/JsiSkPath.h +1 -0
- package/cpp/api/JsiSkRuntimeEffect.h +36 -36
- package/cpp/jsi/JsiHostObject.cpp +16 -28
- package/cpp/jsi/JsiHostObject.h +127 -7
- package/cpp/jsi/JsiValue.cpp +346 -0
- package/cpp/jsi/JsiValue.h +222 -0
- package/cpp/jsi/JsiValueWrapper.h +33 -5
- package/cpp/rnskia/RNSkDomView.cpp +220 -0
- package/cpp/rnskia/RNSkDomView.h +140 -0
- package/cpp/rnskia/RNSkJsView.cpp +0 -4
- package/cpp/rnskia/RNSkJsView.h +6 -4
- package/cpp/rnskia/RNSkManager.cpp +7 -0
- package/cpp/rnskia/RNSkPictureView.h +5 -8
- package/cpp/rnskia/RNSkView.h +113 -5
- package/cpp/rnskia/dom/JsiDomApi.h +167 -0
- package/cpp/rnskia/dom/base/BaseNodeProp.h +72 -0
- package/cpp/rnskia/dom/base/DerivedNodeProp.h +187 -0
- package/cpp/rnskia/dom/base/DrawingContext.cpp +227 -0
- package/cpp/rnskia/dom/base/DrawingContext.h +136 -0
- package/cpp/rnskia/dom/base/JsiDependencyManager.h +294 -0
- package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +176 -0
- package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +50 -0
- package/cpp/rnskia/dom/base/JsiDomNode.h +361 -0
- package/cpp/rnskia/dom/base/JsiDomRenderNode.h +267 -0
- package/cpp/rnskia/dom/base/NodeProp.h +130 -0
- package/cpp/rnskia/dom/base/NodePropsContainer.h +119 -0
- package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +38 -0
- package/cpp/rnskia/dom/nodes/JsiBlendNode.h +112 -0
- package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +78 -0
- package/cpp/rnskia/dom/nodes/JsiBoxNode.h +104 -0
- package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +33 -0
- package/cpp/rnskia/dom/nodes/JsiCircleNode.h +38 -0
- package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +192 -0
- package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +123 -0
- package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +42 -0
- package/cpp/rnskia/dom/nodes/JsiFillNode.h +22 -0
- package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +56 -0
- package/cpp/rnskia/dom/nodes/JsiGroupNode.h +26 -0
- package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +415 -0
- package/cpp/rnskia/dom/nodes/JsiImageNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +44 -0
- package/cpp/rnskia/dom/nodes/JsiLayerNode.h +64 -0
- package/cpp/rnskia/dom/nodes/JsiLineNode.h +43 -0
- package/cpp/rnskia/dom/nodes/JsiOvalNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiPaintNode.h +77 -0
- package/cpp/rnskia/dom/nodes/JsiPatchNode.h +54 -0
- package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +315 -0
- package/cpp/rnskia/dom/nodes/JsiPathNode.h +181 -0
- package/cpp/rnskia/dom/nodes/JsiPictureNode.h +32 -0
- package/cpp/rnskia/dom/nodes/JsiPointsNode.h +51 -0
- package/cpp/rnskia/dom/nodes/JsiRRectNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiRectNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +517 -0
- package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +47 -0
- package/cpp/rnskia/dom/nodes/JsiTextNode.h +54 -0
- package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +32 -0
- package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +43 -0
- package/cpp/rnskia/dom/props/BezierProps.h +63 -0
- package/cpp/rnskia/dom/props/BlendModeProp.h +101 -0
- package/cpp/rnskia/dom/props/BoxShadowProps.h +61 -0
- package/cpp/rnskia/dom/props/CircleProp.h +46 -0
- package/cpp/rnskia/dom/props/ClipProp.h +62 -0
- package/cpp/rnskia/dom/props/ColorProp.h +80 -0
- package/cpp/rnskia/dom/props/DrawingProp.h +33 -0
- package/cpp/rnskia/dom/props/FontProp.h +34 -0
- package/cpp/rnskia/dom/props/GlyphsProp.h +53 -0
- package/cpp/rnskia/dom/props/ImageProps.h +173 -0
- package/cpp/rnskia/dom/props/LayerProp.h +50 -0
- package/cpp/rnskia/dom/props/MatrixProp.h +33 -0
- package/cpp/rnskia/dom/props/NumbersProp.h +63 -0
- package/cpp/rnskia/dom/props/PaintProps.h +172 -0
- package/cpp/rnskia/dom/props/PathProp.h +55 -0
- package/cpp/rnskia/dom/props/PictureProp.h +38 -0
- package/cpp/rnskia/dom/props/PointProp.h +72 -0
- package/cpp/rnskia/dom/props/PointsProp.h +83 -0
- package/cpp/rnskia/dom/props/RRectProp.h +134 -0
- package/cpp/rnskia/dom/props/RadiusProp.h +43 -0
- package/cpp/rnskia/dom/props/RectProp.h +118 -0
- package/cpp/rnskia/dom/props/StrokeProps.h +75 -0
- package/cpp/rnskia/dom/props/SvgProp.h +37 -0
- package/cpp/rnskia/dom/props/TextBlobProp.h +128 -0
- package/cpp/rnskia/dom/props/TileModeProp.h +50 -0
- package/cpp/rnskia/dom/props/TransformProp.h +80 -0
- package/cpp/rnskia/dom/props/TransformsProps.h +68 -0
- package/cpp/rnskia/dom/props/UniformsProp.h +194 -0
- package/cpp/rnskia/dom/props/VertexModeProp.h +47 -0
- package/cpp/rnskia/dom/props/VerticesProps.h +67 -0
- package/cpp/rnskia/values/RNSkReadonlyValue.h +13 -4
- package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +35 -1
- package/cpp/skia/include/codec/SkAndroidCodec.h +17 -1
- package/cpp/skia/include/codec/SkCodec.h +8 -5
- package/cpp/skia/include/core/SkAnnotation.h +2 -0
- package/cpp/skia/include/core/SkBitmap.h +52 -1
- package/cpp/skia/include/core/SkBlendMode.h +2 -0
- package/cpp/skia/include/core/SkCanvas.h +52 -31
- package/cpp/skia/include/core/SkCapabilities.h +44 -0
- package/cpp/skia/include/core/SkColor.h +7 -0
- package/cpp/skia/include/core/SkColorFilter.h +37 -0
- package/cpp/skia/include/core/SkColorSpace.h +1 -1
- package/cpp/skia/include/core/SkFont.h +4 -0
- package/cpp/skia/include/core/SkFontMgr.h +3 -0
- package/cpp/skia/include/core/SkGraphics.h +9 -0
- package/cpp/skia/include/core/SkImage.h +77 -17
- package/cpp/skia/include/core/SkImageEncoder.h +5 -3
- package/cpp/skia/include/core/SkImageGenerator.h +27 -17
- package/cpp/skia/include/core/SkM44.h +1 -0
- package/cpp/skia/include/core/SkMesh.h +120 -34
- package/cpp/skia/include/core/SkMilestone.h +1 -1
- package/cpp/skia/include/core/SkOverdrawCanvas.h +2 -1
- package/cpp/skia/include/core/SkPaint.h +15 -2
- package/cpp/skia/include/core/SkPath.h +4 -0
- package/cpp/skia/include/core/SkPathBuilder.h +1 -1
- package/cpp/skia/include/core/SkPicture.h +0 -3
- package/cpp/skia/include/core/SkPictureRecorder.h +0 -2
- package/cpp/skia/include/core/SkPixmap.h +19 -0
- package/cpp/skia/include/core/SkRasterHandleAllocator.h +3 -1
- package/cpp/skia/include/core/SkRect.h +11 -4
- package/cpp/skia/include/core/SkRefCnt.h +13 -1
- package/cpp/skia/include/core/SkRegion.h +6 -0
- package/cpp/skia/include/core/SkSamplingOptions.h +8 -6
- package/cpp/skia/include/core/SkScalar.h +6 -25
- package/cpp/skia/include/core/SkShader.h +20 -12
- package/cpp/skia/include/core/SkSpan.h +51 -19
- package/cpp/skia/include/core/SkStream.h +2 -2
- package/cpp/skia/include/core/SkString.h +11 -3
- package/cpp/skia/include/core/SkSurface.h +85 -8
- package/cpp/skia/include/core/SkTextBlob.h +5 -2
- package/cpp/skia/include/core/SkTypes.h +11 -10
- package/cpp/skia/include/docs/SkPDFDocument.h +0 -5
- package/cpp/skia/include/effects/Sk1DPathEffect.h +6 -1
- package/cpp/skia/include/effects/Sk2DPathEffect.h +4 -1
- package/cpp/skia/include/effects/SkColorMatrix.h +1 -0
- package/cpp/skia/include/effects/SkColorMatrixFilter.h +5 -8
- package/cpp/skia/include/effects/SkCornerPathEffect.h +5 -1
- package/cpp/skia/include/effects/SkDashPathEffect.h +5 -1
- package/cpp/skia/include/effects/SkGradientShader.h +68 -38
- package/cpp/skia/include/effects/SkHighContrastFilter.h +5 -1
- package/cpp/skia/include/effects/SkImageFilters.h +5 -4
- package/cpp/skia/include/effects/SkLumaColorFilter.h +4 -1
- package/cpp/skia/include/effects/SkOpPathEffect.h +6 -2
- package/cpp/skia/include/effects/SkOverdrawColorFilter.h +5 -2
- package/cpp/skia/include/effects/SkRuntimeEffect.h +54 -62
- package/cpp/skia/include/effects/SkShaderMaskFilter.h +3 -1
- package/cpp/skia/include/effects/SkTableColorFilter.h +8 -21
- package/cpp/skia/include/effects/SkTableMaskFilter.h +5 -1
- package/cpp/skia/include/effects/SkTrimPathEffect.h +5 -1
- package/cpp/skia/include/encode/SkEncoder.h +17 -0
- package/cpp/skia/include/encode/SkWebpEncoder.h +17 -0
- package/cpp/skia/include/gpu/GpuTypes.h +18 -0
- package/cpp/skia/include/gpu/GrBackendSurface.h +38 -17
- package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -71
- package/cpp/skia/include/gpu/GrContextOptions.h +1 -1
- package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +10 -9
- package/cpp/skia/include/gpu/GrDirectContext.h +42 -22
- package/cpp/skia/include/gpu/GrRecordingContext.h +6 -3
- package/cpp/skia/include/gpu/GrTypes.h +11 -11
- package/cpp/skia/include/gpu/MutableTextureState.h +122 -0
- package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -0
- package/cpp/skia/include/gpu/gl/GrGLInterface.h +1 -0
- package/cpp/skia/include/gpu/graphite/BackendTexture.h +7 -0
- package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +195 -0
- package/cpp/skia/include/gpu/graphite/Context.h +47 -55
- package/cpp/skia/include/gpu/graphite/ContextOptions.h +85 -0
- package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +1 -17
- package/cpp/skia/include/gpu/graphite/ImageProvider.h +61 -0
- package/cpp/skia/include/gpu/graphite/Recorder.h +87 -8
- package/cpp/skia/include/gpu/graphite/Recording.h +19 -9
- package/cpp/skia/include/gpu/graphite/TextureInfo.h +40 -8
- package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +25 -0
- package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +3 -2
- package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +69 -0
- package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +39 -0
- package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +21 -19
- package/cpp/skia/include/gpu/vk/GrVkExtensions.h +2 -50
- package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +2 -127
- package/cpp/skia/include/gpu/vk/GrVkTypes.h +5 -43
- package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +46 -0
- package/cpp/skia/include/gpu/vk/VulkanExtensions.h +67 -0
- package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +116 -0
- package/cpp/skia/include/gpu/vk/VulkanTypes.h +59 -0
- package/cpp/skia/include/pathops/SkPathOps.h +1 -1
- package/cpp/skia/include/private/SkColorData.h +10 -40
- package/cpp/skia/include/private/SkEncodedInfo.h +9 -3
- package/cpp/skia/include/private/SkFloatingPoint.h +9 -6
- package/cpp/skia/include/private/SkHalf.h +5 -52
- package/cpp/skia/include/private/SkMacros.h +1 -1
- package/cpp/skia/include/private/SkMalloc.h +4 -0
- package/cpp/skia/include/private/SkPathRef.h +10 -10
- package/cpp/skia/include/private/SkSLModifiers.h +59 -23
- package/cpp/skia/include/private/SkSLProgramKind.h +1 -0
- package/cpp/skia/include/private/SkSLSymbol.h +7 -3
- package/cpp/skia/include/private/SkStringView.h +4 -0
- package/cpp/skia/include/private/SkTArray.h +21 -7
- package/cpp/skia/include/private/SkTDArray.h +173 -285
- package/cpp/skia/include/private/SkTHash.h +33 -32
- package/cpp/skia/include/private/SkTemplates.h +24 -26
- package/cpp/skia/include/private/SkVx.h +218 -135
- package/cpp/skia/include/private/chromium/GrSlug.h +3 -65
- package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +6 -3
- package/cpp/skia/include/private/chromium/Slug.h +76 -0
- package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +6 -1
- package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +5 -39
- package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +63 -0
- package/cpp/skia/include/{gpu/vk/GrVkVulkan.h → private/gpu/vk/SkiaVulkan.h} +2 -2
- package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +57 -0
- package/cpp/skia/include/sksl/DSL.h +0 -1
- package/cpp/skia/include/sksl/DSLBlock.h +4 -18
- package/cpp/skia/include/sksl/DSLCase.h +2 -8
- package/cpp/skia/include/sksl/DSLCore.h +8 -15
- package/cpp/skia/include/sksl/DSLExpression.h +51 -142
- package/cpp/skia/include/sksl/DSLFunction.h +7 -15
- package/cpp/skia/include/sksl/DSLModifiers.h +5 -2
- package/cpp/skia/include/sksl/DSLStatement.h +4 -39
- package/cpp/skia/include/sksl/DSLSymbols.h +1 -11
- package/cpp/skia/include/sksl/DSLType.h +20 -12
- package/cpp/skia/include/sksl/DSLVar.h +56 -146
- package/cpp/skia/include/sksl/SkSLErrorReporter.h +2 -15
- package/cpp/skia/include/sksl/SkSLOperator.h +62 -59
- package/cpp/skia/include/sksl/SkSLPosition.h +2 -0
- package/cpp/skia/include/sksl/SkSLVersion.h +27 -0
- package/cpp/skia/include/svg/SkSVGCanvas.h +1 -0
- package/cpp/skia/include/utils/SkAnimCodecPlayer.h +1 -1
- package/cpp/skia/include/utils/SkBase64.h +2 -0
- package/cpp/skia/include/utils/SkCustomTypeface.h +24 -11
- package/cpp/skia/include/utils/SkEventTracer.h +12 -1
- package/cpp/skia/include/utils/SkNWayCanvas.h +11 -4
- package/cpp/skia/include/utils/SkPaintFilterCanvas.h +9 -4
- package/cpp/skia/include/utils/SkParse.h +3 -0
- package/cpp/skia/include/utils/SkShadowUtils.h +2 -0
- package/cpp/skia/include/utils/SkTextUtils.h +2 -1
- package/cpp/skia/{include/third_party → modules}/skcms/skcms.h +10 -0
- package/cpp/skia/modules/skcms/skcms_internal.h +56 -0
- package/cpp/skia/modules/skcms/src/Transform_inl.h +1609 -0
- package/cpp/skia/modules/skparagraph/include/DartTypes.h +153 -0
- package/cpp/skia/modules/skparagraph/include/FontArguments.h +46 -0
- package/cpp/skia/modules/skparagraph/include/FontCollection.h +84 -0
- package/cpp/skia/modules/skparagraph/include/Metrics.h +98 -0
- package/cpp/skia/modules/skparagraph/include/Paragraph.h +111 -0
- package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +69 -0
- package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +77 -0
- package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +143 -0
- package/cpp/skia/modules/skparagraph/include/TextShadow.h +30 -0
- package/cpp/skia/modules/skparagraph/include/TextStyle.h +352 -0
- package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +81 -0
- package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGTypes.h +3 -3
- package/cpp/skia/src/core/SkLRUCache.h +126 -0
- package/cpp/skia/src/core/SkTInternalLList.h +302 -0
- package/cpp/utils/RNSkTimingInfo.h +1 -0
- package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +15 -4
- package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +40 -54
- package/ios/RNSkia-iOS/SkiaDomViewManager.h +8 -0
- package/ios/RNSkia-iOS/SkiaDomViewManager.mm +51 -0
- package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -56
- package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
- package/lib/commonjs/dom/nodes/RenderNode.js +1 -1
- package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
- package/lib/commonjs/renderer/Canvas.js +19 -63
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/renderer/DependencyManager.js +0 -5
- package/lib/commonjs/renderer/DependencyManager.js.map +1 -1
- package/lib/commonjs/renderer/HostComponents.js.map +1 -1
- package/lib/commonjs/renderer/useCanvas.js +4 -18
- package/lib/commonjs/renderer/useCanvas.js.map +1 -1
- package/lib/commonjs/views/SkiaBaseWebView.js +7 -0
- package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
- package/lib/commonjs/views/SkiaDomView.js +152 -0
- package/lib/commonjs/views/SkiaDomView.js.map +1 -0
- package/lib/commonjs/views/SkiaDomView.web.js +55 -0
- package/lib/commonjs/views/SkiaDomView.web.js.map +1 -0
- package/lib/commonjs/views/SkiaPictureView.js +16 -2
- package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
- package/lib/commonjs/views/SkiaView.js +17 -2
- package/lib/commonjs/views/SkiaView.js.map +1 -1
- package/lib/commonjs/views/index.js +13 -0
- package/lib/commonjs/views/index.js.map +1 -1
- package/lib/commonjs/views/types.js.map +1 -1
- package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
- package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
- package/lib/module/dom/nodes/RenderNode.js +1 -1
- package/lib/module/dom/nodes/RenderNode.js.map +1 -1
- package/lib/module/renderer/Canvas.js +20 -64
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/renderer/DependencyManager.js +0 -5
- package/lib/module/renderer/DependencyManager.js.map +1 -1
- package/lib/module/renderer/HostComponents.js.map +1 -1
- package/lib/module/renderer/useCanvas.js +2 -13
- package/lib/module/renderer/useCanvas.js.map +1 -1
- package/lib/module/views/SkiaBaseWebView.js +7 -0
- package/lib/module/views/SkiaBaseWebView.js.map +1 -1
- package/lib/module/views/SkiaDomView.js +128 -0
- package/lib/module/views/SkiaDomView.js.map +1 -0
- package/lib/module/views/SkiaDomView.web.js +41 -0
- package/lib/module/views/SkiaDomView.web.js.map +1 -0
- package/lib/module/views/SkiaPictureView.js +14 -2
- package/lib/module/views/SkiaPictureView.js.map +1 -1
- package/lib/module/views/SkiaView.js +15 -2
- package/lib/module/views/SkiaView.js.map +1 -1
- package/lib/module/views/index.js +1 -0
- package/lib/module/views/index.js.map +1 -1
- package/lib/module/views/types.js.map +1 -1
- package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +57 -64
- package/lib/typescript/src/renderer/Canvas.d.ts +5 -8
- package/lib/typescript/src/renderer/DependencyManager.d.ts +0 -2
- package/lib/typescript/src/renderer/HostComponents.d.ts +66 -3
- package/lib/typescript/src/renderer/useCanvas.d.ts +0 -6
- package/lib/typescript/src/views/SkiaBaseWebView.d.ts +4 -0
- package/lib/typescript/src/views/SkiaDomView.d.ts +31 -0
- package/lib/typescript/src/views/SkiaDomView.web.d.ts +7 -0
- package/lib/typescript/src/views/index.d.ts +1 -0
- package/lib/typescript/src/views/types.d.ts +12 -2
- package/libs/android/arm64-v8a/libskia.a +0 -0
- package/libs/android/arm64-v8a/libskottie.a +0 -0
- package/libs/android/arm64-v8a/libskparagraph.a +0 -0
- package/libs/android/arm64-v8a/libsksg.a +0 -0
- package/libs/android/arm64-v8a/libskshaper.a +0 -0
- package/libs/android/arm64-v8a/libskunicode.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/libskottie.a +0 -0
- package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
- package/libs/android/armeabi-v7a/libsksg.a +0 -0
- package/libs/android/armeabi-v7a/libskshaper.a +0 -0
- package/libs/android/armeabi-v7a/libskunicode.a +0 -0
- package/libs/android/armeabi-v7a/libsvg.a +0 -0
- package/libs/android/x86/libskia.a +0 -0
- package/libs/android/x86/libskottie.a +0 -0
- package/libs/android/x86/libskparagraph.a +0 -0
- package/libs/android/x86/libsksg.a +0 -0
- package/libs/android/x86/libskshaper.a +0 -0
- package/libs/android/x86/libskunicode.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/libskottie.a +0 -0
- package/libs/android/x86_64/libskparagraph.a +0 -0
- package/libs/android/x86_64/libsksg.a +0 -0
- package/libs/android/x86_64/libskshaper.a +0 -0
- package/libs/android/x86_64/libskunicode.a +0 -0
- package/libs/android/x86_64/libsvg.a +0 -0
- 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/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
- package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
- package/libs/ios/libskparagraph.xcframework/Info.plist +42 -0
- package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
- package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
- package/libs/ios/libsksg.xcframework/Info.plist +5 -5
- package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
- package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
- 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/libskunicode.xcframework/Info.plist +42 -0
- package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
- package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.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 +5 -3
- package/react-native-skia.podspec +3 -1
- package/src/dom/nodes/JsiSkDOM.ts +170 -56
- package/src/dom/nodes/RenderNode.ts +1 -1
- package/src/renderer/Canvas.tsx +32 -56
- package/src/renderer/DependencyManager.tsx +0 -5
- package/src/renderer/HostComponents.ts +152 -1
- package/src/renderer/useCanvas.ts +1 -15
- package/src/views/SkiaBaseWebView.tsx +4 -0
- package/src/views/SkiaDomView.tsx +120 -0
- package/src/views/SkiaDomView.web.tsx +37 -0
- package/src/views/SkiaPictureView.tsx +10 -2
- package/src/views/SkiaView.tsx +11 -3
- package/src/views/index.ts +1 -0
- package/src/views/types.ts +19 -2
- package/cpp/jsi/JsiSimpleValueWrapper.h +0 -99
- package/cpp/skia/include/c/sk_canvas.h +0 -159
- package/cpp/skia/include/c/sk_colorspace.h +0 -25
- package/cpp/skia/include/c/sk_data.h +0 -65
- package/cpp/skia/include/c/sk_image.h +0 -71
- package/cpp/skia/include/c/sk_imageinfo.h +0 -62
- package/cpp/skia/include/c/sk_maskfilter.h +0 -47
- package/cpp/skia/include/c/sk_matrix.h +0 -49
- package/cpp/skia/include/c/sk_paint.h +0 -145
- package/cpp/skia/include/c/sk_path.h +0 -102
- package/cpp/skia/include/c/sk_picture.h +0 -70
- package/cpp/skia/include/c/sk_shader.h +0 -143
- package/cpp/skia/include/c/sk_surface.h +0 -73
- package/cpp/skia/include/c/sk_types.h +0 -278
- package/cpp/skia/include/gpu/graphite/SkStuff.h +0 -47
- package/cpp/skia/include/private/SkNx.h +0 -430
- package/cpp/skia/include/private/SkNx_neon.h +0 -713
- package/cpp/skia/include/private/SkNx_sse.h +0 -823
- package/cpp/skia/include/sksl/DSLRuntimeEffects.h +0 -32
- package/cpp/skia/include/sksl/DSLWrapper.h +0 -77
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
// Copyright 2019 Google LLC.
|
|
2
|
+
#ifndef ParagraphStyle_DEFINED
|
|
3
|
+
#define ParagraphStyle_DEFINED
|
|
4
|
+
|
|
5
|
+
#include "include/core/SkFontStyle.h"
|
|
6
|
+
#include "include/core/SkScalar.h"
|
|
7
|
+
#include "include/core/SkString.h"
|
|
8
|
+
#include "modules/skparagraph/include/DartTypes.h"
|
|
9
|
+
#include "modules/skparagraph/include/TextStyle.h"
|
|
10
|
+
|
|
11
|
+
#include <stddef.h>
|
|
12
|
+
#include <algorithm>
|
|
13
|
+
#include <limits>
|
|
14
|
+
#include <string>
|
|
15
|
+
#include <utility>
|
|
16
|
+
#include <vector>
|
|
17
|
+
|
|
18
|
+
namespace skia {
|
|
19
|
+
namespace textlayout {
|
|
20
|
+
|
|
21
|
+
struct StrutStyle {
|
|
22
|
+
StrutStyle();
|
|
23
|
+
|
|
24
|
+
const std::vector<SkString>& getFontFamilies() const { return fFontFamilies; }
|
|
25
|
+
void setFontFamilies(std::vector<SkString> families) { fFontFamilies = std::move(families); }
|
|
26
|
+
|
|
27
|
+
SkFontStyle getFontStyle() const { return fFontStyle; }
|
|
28
|
+
void setFontStyle(SkFontStyle fontStyle) { fFontStyle = fontStyle; }
|
|
29
|
+
|
|
30
|
+
SkScalar getFontSize() const { return fFontSize; }
|
|
31
|
+
void setFontSize(SkScalar size) { fFontSize = size; }
|
|
32
|
+
|
|
33
|
+
void setHeight(SkScalar height) { fHeight = height; }
|
|
34
|
+
SkScalar getHeight() const { return fHeight; }
|
|
35
|
+
|
|
36
|
+
void setLeading(SkScalar Leading) { fLeading = Leading; }
|
|
37
|
+
SkScalar getLeading() const { return fLeading; }
|
|
38
|
+
|
|
39
|
+
bool getStrutEnabled() const { return fEnabled; }
|
|
40
|
+
void setStrutEnabled(bool v) { fEnabled = v; }
|
|
41
|
+
|
|
42
|
+
bool getForceStrutHeight() const { return fForceHeight; }
|
|
43
|
+
void setForceStrutHeight(bool v) { fForceHeight = v; }
|
|
44
|
+
|
|
45
|
+
bool getHeightOverride() const { return fHeightOverride; }
|
|
46
|
+
void setHeightOverride(bool v) { fHeightOverride = v; }
|
|
47
|
+
|
|
48
|
+
void setHalfLeading(bool halfLeading) { fHalfLeading = halfLeading; }
|
|
49
|
+
bool getHalfLeading() const { return fHalfLeading; }
|
|
50
|
+
|
|
51
|
+
bool operator==(const StrutStyle& rhs) const {
|
|
52
|
+
return this->fEnabled == rhs.fEnabled &&
|
|
53
|
+
this->fHeightOverride == rhs.fHeightOverride &&
|
|
54
|
+
this->fForceHeight == rhs.fForceHeight &&
|
|
55
|
+
this->fHalfLeading == rhs.fHalfLeading &&
|
|
56
|
+
nearlyEqual(this->fLeading, rhs.fLeading) &&
|
|
57
|
+
nearlyEqual(this->fHeight, rhs.fHeight) &&
|
|
58
|
+
nearlyEqual(this->fFontSize, rhs.fFontSize) &&
|
|
59
|
+
this->fFontStyle == rhs.fFontStyle &&
|
|
60
|
+
this->fFontFamilies == rhs.fFontFamilies;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
private:
|
|
64
|
+
|
|
65
|
+
std::vector<SkString> fFontFamilies;
|
|
66
|
+
SkFontStyle fFontStyle;
|
|
67
|
+
SkScalar fFontSize;
|
|
68
|
+
SkScalar fHeight;
|
|
69
|
+
SkScalar fLeading;
|
|
70
|
+
bool fForceHeight;
|
|
71
|
+
bool fEnabled;
|
|
72
|
+
bool fHeightOverride;
|
|
73
|
+
// true: half leading.
|
|
74
|
+
// false: scale ascent/descent with fHeight.
|
|
75
|
+
bool fHalfLeading;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
struct ParagraphStyle {
|
|
79
|
+
ParagraphStyle();
|
|
80
|
+
|
|
81
|
+
bool operator==(const ParagraphStyle& rhs) const {
|
|
82
|
+
return this->fHeight == rhs.fHeight &&
|
|
83
|
+
this->fEllipsis == rhs.fEllipsis &&
|
|
84
|
+
this->fEllipsisUtf16 == rhs.fEllipsisUtf16 &&
|
|
85
|
+
this->fTextDirection == rhs.fTextDirection && this->fTextAlign == rhs.fTextAlign &&
|
|
86
|
+
this->fDefaultTextStyle == rhs.fDefaultTextStyle &&
|
|
87
|
+
this->fReplaceTabCharacters == rhs.fReplaceTabCharacters;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const StrutStyle& getStrutStyle() const { return fStrutStyle; }
|
|
91
|
+
void setStrutStyle(StrutStyle strutStyle) { fStrutStyle = std::move(strutStyle); }
|
|
92
|
+
|
|
93
|
+
const TextStyle& getTextStyle() const { return fDefaultTextStyle; }
|
|
94
|
+
void setTextStyle(const TextStyle& textStyle) { fDefaultTextStyle = textStyle; }
|
|
95
|
+
|
|
96
|
+
TextDirection getTextDirection() const { return fTextDirection; }
|
|
97
|
+
void setTextDirection(TextDirection direction) { fTextDirection = direction; }
|
|
98
|
+
|
|
99
|
+
TextAlign getTextAlign() const { return fTextAlign; }
|
|
100
|
+
void setTextAlign(TextAlign align) { fTextAlign = align; }
|
|
101
|
+
|
|
102
|
+
size_t getMaxLines() const { return fLinesLimit; }
|
|
103
|
+
void setMaxLines(size_t maxLines) { fLinesLimit = maxLines; }
|
|
104
|
+
|
|
105
|
+
SkString getEllipsis() const { return fEllipsis; }
|
|
106
|
+
std::u16string getEllipsisUtf16() const { return fEllipsisUtf16; }
|
|
107
|
+
void setEllipsis(const std::u16string& ellipsis) { fEllipsisUtf16 = ellipsis; }
|
|
108
|
+
void setEllipsis(const SkString& ellipsis) { fEllipsis = ellipsis; }
|
|
109
|
+
|
|
110
|
+
SkScalar getHeight() const { return fHeight; }
|
|
111
|
+
void setHeight(SkScalar height) { fHeight = height; }
|
|
112
|
+
|
|
113
|
+
TextHeightBehavior getTextHeightBehavior() const { return fTextHeightBehavior; }
|
|
114
|
+
void setTextHeightBehavior(TextHeightBehavior v) { fTextHeightBehavior = v; }
|
|
115
|
+
|
|
116
|
+
bool unlimited_lines() const {
|
|
117
|
+
return fLinesLimit == std::numeric_limits<size_t>::max();
|
|
118
|
+
}
|
|
119
|
+
bool ellipsized() const { return !fEllipsis.isEmpty() || !fEllipsisUtf16.empty(); }
|
|
120
|
+
TextAlign effective_align() const;
|
|
121
|
+
bool hintingIsOn() const { return fHintingIsOn; }
|
|
122
|
+
void turnHintingOff() { fHintingIsOn = false; }
|
|
123
|
+
|
|
124
|
+
bool getReplaceTabCharacters() const { return fReplaceTabCharacters; }
|
|
125
|
+
void setReplaceTabCharacters(bool value) { fReplaceTabCharacters = value; }
|
|
126
|
+
|
|
127
|
+
private:
|
|
128
|
+
StrutStyle fStrutStyle;
|
|
129
|
+
TextStyle fDefaultTextStyle;
|
|
130
|
+
TextAlign fTextAlign;
|
|
131
|
+
TextDirection fTextDirection;
|
|
132
|
+
size_t fLinesLimit;
|
|
133
|
+
std::u16string fEllipsisUtf16;
|
|
134
|
+
SkString fEllipsis;
|
|
135
|
+
SkScalar fHeight;
|
|
136
|
+
TextHeightBehavior fTextHeightBehavior;
|
|
137
|
+
bool fHintingIsOn;
|
|
138
|
+
bool fReplaceTabCharacters;
|
|
139
|
+
};
|
|
140
|
+
} // namespace textlayout
|
|
141
|
+
} // namespace skia
|
|
142
|
+
|
|
143
|
+
#endif // ParagraphStyle_DEFINED
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Copyright 2019 Google LLC.
|
|
2
|
+
#ifndef TextShadow_DEFINED
|
|
3
|
+
#define TextShadow_DEFINED
|
|
4
|
+
|
|
5
|
+
#include "include/core/SkColor.h"
|
|
6
|
+
#include "include/core/SkPoint.h"
|
|
7
|
+
|
|
8
|
+
namespace skia {
|
|
9
|
+
namespace textlayout {
|
|
10
|
+
|
|
11
|
+
class TextShadow {
|
|
12
|
+
public:
|
|
13
|
+
SkColor fColor = SK_ColorBLACK;
|
|
14
|
+
SkPoint fOffset;
|
|
15
|
+
double fBlurSigma = 0.0;
|
|
16
|
+
|
|
17
|
+
TextShadow();
|
|
18
|
+
|
|
19
|
+
TextShadow(SkColor color, SkPoint offset, double blurSigma);
|
|
20
|
+
|
|
21
|
+
bool operator==(const TextShadow& other) const;
|
|
22
|
+
|
|
23
|
+
bool operator!=(const TextShadow& other) const;
|
|
24
|
+
|
|
25
|
+
bool hasShadow() const;
|
|
26
|
+
};
|
|
27
|
+
} // namespace textlayout
|
|
28
|
+
} // namespace skia
|
|
29
|
+
|
|
30
|
+
#endif // TextShadow_DEFINED
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
// Copyright 2019 Google LLC.
|
|
2
|
+
#ifndef TextStyle_DEFINED
|
|
3
|
+
#define TextStyle_DEFINED
|
|
4
|
+
|
|
5
|
+
#include <optional>
|
|
6
|
+
#include <vector>
|
|
7
|
+
#include "include/core/SkColor.h"
|
|
8
|
+
#include "include/core/SkFont.h"
|
|
9
|
+
#include "include/core/SkFontMetrics.h"
|
|
10
|
+
#include "include/core/SkFontStyle.h"
|
|
11
|
+
#include "include/core/SkPaint.h"
|
|
12
|
+
#include "include/core/SkScalar.h"
|
|
13
|
+
#include "modules/skparagraph/include/DartTypes.h"
|
|
14
|
+
#include "modules/skparagraph/include/FontArguments.h"
|
|
15
|
+
#include "modules/skparagraph/include/TextShadow.h"
|
|
16
|
+
|
|
17
|
+
// TODO: Make it external so the other platforms (Android) could use it
|
|
18
|
+
#define DEFAULT_FONT_FAMILY "sans-serif"
|
|
19
|
+
|
|
20
|
+
namespace skia {
|
|
21
|
+
namespace textlayout {
|
|
22
|
+
|
|
23
|
+
static inline bool nearlyZero(SkScalar x, SkScalar tolerance = SK_ScalarNearlyZero) {
|
|
24
|
+
if (SkScalarIsFinite(x)) {
|
|
25
|
+
return SkScalarNearlyZero(x, tolerance);
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
static inline bool nearlyEqual(SkScalar x, SkScalar y, SkScalar tolerance = SK_ScalarNearlyZero) {
|
|
31
|
+
if (SkScalarIsFinite(x) && SkScalarIsFinite(x)) {
|
|
32
|
+
return SkScalarNearlyEqual(x, y, tolerance);
|
|
33
|
+
}
|
|
34
|
+
// Inf == Inf, anything else is false
|
|
35
|
+
return x == y;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Multiple decorations can be applied at once. Ex: Underline and overline is
|
|
39
|
+
// (0x1 | 0x2)
|
|
40
|
+
enum TextDecoration {
|
|
41
|
+
kNoDecoration = 0x0,
|
|
42
|
+
kUnderline = 0x1,
|
|
43
|
+
kOverline = 0x2,
|
|
44
|
+
kLineThrough = 0x4,
|
|
45
|
+
};
|
|
46
|
+
constexpr TextDecoration AllTextDecorations[] = {
|
|
47
|
+
kNoDecoration,
|
|
48
|
+
kUnderline,
|
|
49
|
+
kOverline,
|
|
50
|
+
kLineThrough,
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
enum TextDecorationStyle { kSolid, kDouble, kDotted, kDashed, kWavy };
|
|
54
|
+
|
|
55
|
+
enum TextDecorationMode { kGaps, kThrough };
|
|
56
|
+
|
|
57
|
+
enum StyleType {
|
|
58
|
+
kNone,
|
|
59
|
+
kAllAttributes,
|
|
60
|
+
kFont,
|
|
61
|
+
kForeground,
|
|
62
|
+
kBackground,
|
|
63
|
+
kShadow,
|
|
64
|
+
kDecorations,
|
|
65
|
+
kLetterSpacing,
|
|
66
|
+
kWordSpacing
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
struct Decoration {
|
|
70
|
+
TextDecoration fType;
|
|
71
|
+
TextDecorationMode fMode;
|
|
72
|
+
SkColor fColor;
|
|
73
|
+
TextDecorationStyle fStyle;
|
|
74
|
+
SkScalar fThicknessMultiplier;
|
|
75
|
+
|
|
76
|
+
bool operator==(const Decoration& other) const {
|
|
77
|
+
return this->fType == other.fType &&
|
|
78
|
+
this->fMode == other.fMode &&
|
|
79
|
+
this->fColor == other.fColor &&
|
|
80
|
+
this->fStyle == other.fStyle &&
|
|
81
|
+
this->fThicknessMultiplier == other.fThicknessMultiplier;
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
/// Where to vertically align the placeholder relative to the surrounding text.
|
|
86
|
+
enum class PlaceholderAlignment {
|
|
87
|
+
/// Match the baseline of the placeholder with the baseline.
|
|
88
|
+
kBaseline,
|
|
89
|
+
|
|
90
|
+
/// Align the bottom edge of the placeholder with the baseline such that the
|
|
91
|
+
/// placeholder sits on top of the baseline.
|
|
92
|
+
kAboveBaseline,
|
|
93
|
+
|
|
94
|
+
/// Align the top edge of the placeholder with the baseline specified in
|
|
95
|
+
/// such that the placeholder hangs below the baseline.
|
|
96
|
+
kBelowBaseline,
|
|
97
|
+
|
|
98
|
+
/// Align the top edge of the placeholder with the top edge of the font.
|
|
99
|
+
/// When the placeholder is very tall, the extra space will hang from
|
|
100
|
+
/// the top and extend through the bottom of the line.
|
|
101
|
+
kTop,
|
|
102
|
+
|
|
103
|
+
/// Align the bottom edge of the placeholder with the top edge of the font.
|
|
104
|
+
/// When the placeholder is very tall, the extra space will rise from
|
|
105
|
+
/// the bottom and extend through the top of the line.
|
|
106
|
+
kBottom,
|
|
107
|
+
|
|
108
|
+
/// Align the middle of the placeholder with the middle of the text. When the
|
|
109
|
+
/// placeholder is very tall, the extra space will grow equally from
|
|
110
|
+
/// the top and bottom of the line.
|
|
111
|
+
kMiddle,
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
struct FontFeature {
|
|
115
|
+
FontFeature(const SkString name, int value) : fName(name), fValue(value) {}
|
|
116
|
+
bool operator==(const FontFeature& that) const {
|
|
117
|
+
return fName == that.fName && fValue == that.fValue;
|
|
118
|
+
}
|
|
119
|
+
SkString fName;
|
|
120
|
+
int fValue;
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
struct PlaceholderStyle {
|
|
124
|
+
PlaceholderStyle() = default;
|
|
125
|
+
PlaceholderStyle(SkScalar width, SkScalar height, PlaceholderAlignment alignment,
|
|
126
|
+
TextBaseline baseline, SkScalar offset)
|
|
127
|
+
: fWidth(width)
|
|
128
|
+
, fHeight(height)
|
|
129
|
+
, fAlignment(alignment)
|
|
130
|
+
, fBaseline(baseline)
|
|
131
|
+
, fBaselineOffset(offset) {}
|
|
132
|
+
|
|
133
|
+
bool equals(const PlaceholderStyle&) const;
|
|
134
|
+
|
|
135
|
+
SkScalar fWidth = 0;
|
|
136
|
+
SkScalar fHeight = 0;
|
|
137
|
+
PlaceholderAlignment fAlignment = PlaceholderAlignment::kBaseline;
|
|
138
|
+
TextBaseline fBaseline = TextBaseline::kAlphabetic;
|
|
139
|
+
// Distance from the top edge of the rect to the baseline position. This
|
|
140
|
+
// baseline will be aligned against the alphabetic baseline of the surrounding
|
|
141
|
+
// text.
|
|
142
|
+
//
|
|
143
|
+
// Positive values drop the baseline lower (positions the rect higher) and
|
|
144
|
+
// small or negative values will cause the rect to be positioned underneath
|
|
145
|
+
// the line. When baseline == height, the bottom edge of the rect will rest on
|
|
146
|
+
// the alphabetic baseline.
|
|
147
|
+
SkScalar fBaselineOffset = 0;
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
class TextStyle {
|
|
151
|
+
public:
|
|
152
|
+
TextStyle() = default;
|
|
153
|
+
TextStyle(const TextStyle& other) = default;
|
|
154
|
+
TextStyle& operator=(const TextStyle& other) = default;
|
|
155
|
+
|
|
156
|
+
TextStyle cloneForPlaceholder();
|
|
157
|
+
|
|
158
|
+
bool equals(const TextStyle& other) const;
|
|
159
|
+
bool equalsByFonts(const TextStyle& that) const;
|
|
160
|
+
bool matchOneAttribute(StyleType styleType, const TextStyle& other) const;
|
|
161
|
+
bool operator==(const TextStyle& rhs) const { return this->equals(rhs); }
|
|
162
|
+
|
|
163
|
+
// Colors
|
|
164
|
+
SkColor getColor() const { return fColor; }
|
|
165
|
+
void setColor(SkColor color) { fColor = color; }
|
|
166
|
+
|
|
167
|
+
bool hasForeground() const { return fHasForeground; }
|
|
168
|
+
SkPaint getForeground() const { return fForeground; }
|
|
169
|
+
void setForegroundColor(SkPaint paint) {
|
|
170
|
+
fHasForeground = true;
|
|
171
|
+
fForeground = std::move(paint);
|
|
172
|
+
}
|
|
173
|
+
void clearForegroundColor() { fHasForeground = false; }
|
|
174
|
+
|
|
175
|
+
bool hasBackground() const { return fHasBackground; }
|
|
176
|
+
SkPaint getBackground() const { return fBackground; }
|
|
177
|
+
void setBackgroundColor(SkPaint paint) {
|
|
178
|
+
fHasBackground = true;
|
|
179
|
+
fBackground = std::move(paint);
|
|
180
|
+
}
|
|
181
|
+
void clearBackgroundColor() { fHasBackground = false; }
|
|
182
|
+
|
|
183
|
+
// Decorations
|
|
184
|
+
Decoration getDecoration() const { return fDecoration; }
|
|
185
|
+
TextDecoration getDecorationType() const { return fDecoration.fType; }
|
|
186
|
+
TextDecorationMode getDecorationMode() const { return fDecoration.fMode; }
|
|
187
|
+
SkColor getDecorationColor() const { return fDecoration.fColor; }
|
|
188
|
+
TextDecorationStyle getDecorationStyle() const { return fDecoration.fStyle; }
|
|
189
|
+
SkScalar getDecorationThicknessMultiplier() const {
|
|
190
|
+
return fDecoration.fThicknessMultiplier;
|
|
191
|
+
}
|
|
192
|
+
void setDecoration(TextDecoration decoration) { fDecoration.fType = decoration; }
|
|
193
|
+
void setDecorationMode(TextDecorationMode mode) { fDecoration.fMode = mode; }
|
|
194
|
+
void setDecorationStyle(TextDecorationStyle style) { fDecoration.fStyle = style; }
|
|
195
|
+
void setDecorationColor(SkColor color) { fDecoration.fColor = color; }
|
|
196
|
+
void setDecorationThicknessMultiplier(SkScalar m) { fDecoration.fThicknessMultiplier = m; }
|
|
197
|
+
|
|
198
|
+
// Weight/Width/Slant
|
|
199
|
+
SkFontStyle getFontStyle() const { return fFontStyle; }
|
|
200
|
+
void setFontStyle(SkFontStyle fontStyle) { fFontStyle = fontStyle; }
|
|
201
|
+
|
|
202
|
+
// Shadows
|
|
203
|
+
size_t getShadowNumber() const { return fTextShadows.size(); }
|
|
204
|
+
std::vector<TextShadow> getShadows() const { return fTextShadows; }
|
|
205
|
+
void addShadow(TextShadow shadow) { fTextShadows.emplace_back(shadow); }
|
|
206
|
+
void resetShadows() { fTextShadows.clear(); }
|
|
207
|
+
|
|
208
|
+
// Font features
|
|
209
|
+
size_t getFontFeatureNumber() const { return fFontFeatures.size(); }
|
|
210
|
+
std::vector<FontFeature> getFontFeatures() const { return fFontFeatures; }
|
|
211
|
+
void addFontFeature(const SkString& fontFeature, int value)
|
|
212
|
+
{ fFontFeatures.emplace_back(fontFeature, value); }
|
|
213
|
+
void resetFontFeatures() { fFontFeatures.clear(); }
|
|
214
|
+
|
|
215
|
+
// Font arguments
|
|
216
|
+
const std::optional<FontArguments>& getFontArguments() const { return fFontArguments; }
|
|
217
|
+
// The contents of the SkFontArguments will be copied into the TextStyle,
|
|
218
|
+
// and the SkFontArguments can be safely deleted after setFontArguments returns.
|
|
219
|
+
void setFontArguments(const std::optional<SkFontArguments>& args);
|
|
220
|
+
|
|
221
|
+
SkScalar getFontSize() const { return fFontSize; }
|
|
222
|
+
void setFontSize(SkScalar size) { fFontSize = size; }
|
|
223
|
+
|
|
224
|
+
const std::vector<SkString>& getFontFamilies() const { return fFontFamilies; }
|
|
225
|
+
void setFontFamilies(std::vector<SkString> families) {
|
|
226
|
+
fFontFamilies = std::move(families);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
SkScalar getBaselineShift() const { return fBaselineShift; }
|
|
230
|
+
void setBaselineShift(SkScalar baselineShift) { fBaselineShift = baselineShift; }
|
|
231
|
+
|
|
232
|
+
void setHeight(SkScalar height) { fHeight = height; }
|
|
233
|
+
SkScalar getHeight() const { return fHeightOverride ? fHeight : 0; }
|
|
234
|
+
|
|
235
|
+
void setHeightOverride(bool heightOverride) { fHeightOverride = heightOverride; }
|
|
236
|
+
bool getHeightOverride() const { return fHeightOverride; }
|
|
237
|
+
|
|
238
|
+
void setHalfLeading(bool halfLeading) { fHalfLeading = halfLeading; }
|
|
239
|
+
bool getHalfLeading() const { return fHalfLeading; }
|
|
240
|
+
|
|
241
|
+
void setLetterSpacing(SkScalar letterSpacing) { fLetterSpacing = letterSpacing; }
|
|
242
|
+
SkScalar getLetterSpacing() const { return fLetterSpacing; }
|
|
243
|
+
|
|
244
|
+
void setWordSpacing(SkScalar wordSpacing) { fWordSpacing = wordSpacing; }
|
|
245
|
+
SkScalar getWordSpacing() const { return fWordSpacing; }
|
|
246
|
+
|
|
247
|
+
SkTypeface* getTypeface() const { return fTypeface.get(); }
|
|
248
|
+
sk_sp<SkTypeface> refTypeface() const { return fTypeface; }
|
|
249
|
+
void setTypeface(sk_sp<SkTypeface> typeface) { fTypeface = std::move(typeface); }
|
|
250
|
+
|
|
251
|
+
SkString getLocale() const { return fLocale; }
|
|
252
|
+
void setLocale(const SkString& locale) { fLocale = locale; }
|
|
253
|
+
|
|
254
|
+
TextBaseline getTextBaseline() const { return fTextBaseline; }
|
|
255
|
+
void setTextBaseline(TextBaseline baseline) { fTextBaseline = baseline; }
|
|
256
|
+
|
|
257
|
+
void getFontMetrics(SkFontMetrics* metrics) const;
|
|
258
|
+
|
|
259
|
+
bool isPlaceholder() const { return fIsPlaceholder; }
|
|
260
|
+
void setPlaceholder() { fIsPlaceholder = true; }
|
|
261
|
+
|
|
262
|
+
private:
|
|
263
|
+
static const std::vector<SkString>* kDefaultFontFamilies;
|
|
264
|
+
|
|
265
|
+
Decoration fDecoration = {
|
|
266
|
+
TextDecoration::kNoDecoration,
|
|
267
|
+
// TODO: switch back to kGaps when (if) switching flutter to skparagraph
|
|
268
|
+
TextDecorationMode::kThrough,
|
|
269
|
+
// It does not make sense to draw a transparent object, so we use this as a default
|
|
270
|
+
// value to indicate no decoration color was set.
|
|
271
|
+
SK_ColorTRANSPARENT, TextDecorationStyle::kSolid,
|
|
272
|
+
// Thickness is applied as a multiplier to the default thickness of the font.
|
|
273
|
+
1.0f};
|
|
274
|
+
|
|
275
|
+
SkFontStyle fFontStyle;
|
|
276
|
+
|
|
277
|
+
std::vector<SkString> fFontFamilies = *kDefaultFontFamilies;
|
|
278
|
+
|
|
279
|
+
SkScalar fFontSize = 14.0;
|
|
280
|
+
SkScalar fHeight = 1.0;
|
|
281
|
+
bool fHeightOverride = false;
|
|
282
|
+
SkScalar fBaselineShift = 0.0f;
|
|
283
|
+
// true: half leading.
|
|
284
|
+
// false: scale ascent/descent with fHeight.
|
|
285
|
+
bool fHalfLeading = false;
|
|
286
|
+
SkString fLocale = {};
|
|
287
|
+
SkScalar fLetterSpacing = 0.0;
|
|
288
|
+
SkScalar fWordSpacing = 0.0;
|
|
289
|
+
|
|
290
|
+
TextBaseline fTextBaseline = TextBaseline::kAlphabetic;
|
|
291
|
+
|
|
292
|
+
SkColor fColor = SK_ColorWHITE;
|
|
293
|
+
bool fHasBackground = false;
|
|
294
|
+
SkPaint fBackground;
|
|
295
|
+
bool fHasForeground = false;
|
|
296
|
+
SkPaint fForeground;
|
|
297
|
+
|
|
298
|
+
std::vector<TextShadow> fTextShadows;
|
|
299
|
+
|
|
300
|
+
sk_sp<SkTypeface> fTypeface;
|
|
301
|
+
bool fIsPlaceholder = false;
|
|
302
|
+
|
|
303
|
+
std::vector<FontFeature> fFontFeatures;
|
|
304
|
+
|
|
305
|
+
std::optional<FontArguments> fFontArguments;
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
typedef size_t TextIndex;
|
|
309
|
+
typedef SkRange<size_t> TextRange;
|
|
310
|
+
const SkRange<size_t> EMPTY_TEXT = EMPTY_RANGE;
|
|
311
|
+
|
|
312
|
+
struct Block {
|
|
313
|
+
Block() = default;
|
|
314
|
+
Block(size_t start, size_t end, const TextStyle& style) : fRange(start, end), fStyle(style) {}
|
|
315
|
+
Block(TextRange textRange, const TextStyle& style) : fRange(textRange), fStyle(style) {}
|
|
316
|
+
|
|
317
|
+
void add(TextRange tail) {
|
|
318
|
+
SkASSERT(fRange.end == tail.start);
|
|
319
|
+
fRange = TextRange(fRange.start, fRange.start + fRange.width() + tail.width());
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
TextRange fRange = EMPTY_RANGE;
|
|
323
|
+
TextStyle fStyle;
|
|
324
|
+
};
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
typedef size_t BlockIndex;
|
|
328
|
+
typedef SkRange<size_t> BlockRange;
|
|
329
|
+
const size_t EMPTY_BLOCK = EMPTY_INDEX;
|
|
330
|
+
const SkRange<size_t> EMPTY_BLOCKS = EMPTY_RANGE;
|
|
331
|
+
|
|
332
|
+
struct Placeholder {
|
|
333
|
+
Placeholder() = default;
|
|
334
|
+
Placeholder(size_t start, size_t end, const PlaceholderStyle& style, const TextStyle& textStyle,
|
|
335
|
+
BlockRange blocksBefore, TextRange textBefore)
|
|
336
|
+
: fRange(start, end)
|
|
337
|
+
, fStyle(style)
|
|
338
|
+
, fTextStyle(textStyle)
|
|
339
|
+
, fBlocksBefore(blocksBefore)
|
|
340
|
+
, fTextBefore(textBefore) {}
|
|
341
|
+
|
|
342
|
+
TextRange fRange = EMPTY_RANGE;
|
|
343
|
+
PlaceholderStyle fStyle;
|
|
344
|
+
TextStyle fTextStyle;
|
|
345
|
+
BlockRange fBlocksBefore;
|
|
346
|
+
TextRange fTextBefore;
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
} // namespace textlayout
|
|
350
|
+
} // namespace skia
|
|
351
|
+
|
|
352
|
+
#endif // TextStyle_DEFINED
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// Copyright 2019 Google LLC.
|
|
2
|
+
#ifndef TypefaceFontProvider_DEFINED
|
|
3
|
+
#define TypefaceFontProvider_DEFINED
|
|
4
|
+
|
|
5
|
+
#include "include/private/SkTArray.h"
|
|
6
|
+
#include "include/private/SkTHash.h"
|
|
7
|
+
#include <string>
|
|
8
|
+
#include <unordered_map>
|
|
9
|
+
#include <vector>
|
|
10
|
+
#include "include/core/SkFontMgr.h"
|
|
11
|
+
#include "include/core/SkStream.h"
|
|
12
|
+
#include "include/core/SkString.h"
|
|
13
|
+
|
|
14
|
+
namespace skia {
|
|
15
|
+
namespace textlayout {
|
|
16
|
+
|
|
17
|
+
class TypefaceFontStyleSet : public SkFontStyleSet {
|
|
18
|
+
public:
|
|
19
|
+
explicit TypefaceFontStyleSet(const SkString& familyName);
|
|
20
|
+
|
|
21
|
+
int count() override;
|
|
22
|
+
void getStyle(int index, SkFontStyle*, SkString* name) override;
|
|
23
|
+
SkTypeface* createTypeface(int index) override;
|
|
24
|
+
SkTypeface* matchStyle(const SkFontStyle& pattern) override;
|
|
25
|
+
|
|
26
|
+
SkString getFamilyName() const { return fFamilyName; }
|
|
27
|
+
SkString getAlias() const { return fAlias; }
|
|
28
|
+
void appendTypeface(sk_sp<SkTypeface> typeface);
|
|
29
|
+
|
|
30
|
+
private:
|
|
31
|
+
SkTArray<sk_sp<SkTypeface>> fStyles;
|
|
32
|
+
SkString fFamilyName;
|
|
33
|
+
SkString fAlias;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
class TypefaceFontProvider : public SkFontMgr {
|
|
37
|
+
public:
|
|
38
|
+
size_t registerTypeface(sk_sp<SkTypeface> typeface);
|
|
39
|
+
size_t registerTypeface(sk_sp<SkTypeface> typeface, const SkString& alias);
|
|
40
|
+
|
|
41
|
+
int onCountFamilies() const override;
|
|
42
|
+
|
|
43
|
+
void onGetFamilyName(int index, SkString* familyName) const override;
|
|
44
|
+
|
|
45
|
+
SkFontStyleSet* onMatchFamily(const char familyName[]) const override;
|
|
46
|
+
|
|
47
|
+
SkFontStyleSet* onCreateStyleSet(int) const override { return nullptr; }
|
|
48
|
+
SkTypeface* onMatchFamilyStyle(const char[], const SkFontStyle&) const override {
|
|
49
|
+
return nullptr;
|
|
50
|
+
}
|
|
51
|
+
SkTypeface* onMatchFamilyStyleCharacter(const char[], const SkFontStyle&,
|
|
52
|
+
const char*[], int,
|
|
53
|
+
SkUnichar) const override {
|
|
54
|
+
return nullptr;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
sk_sp<SkTypeface> onMakeFromData(sk_sp<SkData>, int) const override { return nullptr; }
|
|
58
|
+
sk_sp<SkTypeface> onMakeFromStreamIndex(std::unique_ptr<SkStreamAsset>, int) const override {
|
|
59
|
+
return nullptr;
|
|
60
|
+
}
|
|
61
|
+
sk_sp<SkTypeface> onMakeFromStreamArgs(std::unique_ptr<SkStreamAsset>,
|
|
62
|
+
const SkFontArguments&) const override {
|
|
63
|
+
return nullptr;
|
|
64
|
+
}
|
|
65
|
+
sk_sp<SkTypeface> onMakeFromFile(const char[], int) const override {
|
|
66
|
+
return nullptr;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
sk_sp<SkTypeface> onLegacyMakeTypeface(const char[], SkFontStyle) const override {
|
|
70
|
+
return nullptr;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
private:
|
|
74
|
+
SkTHashMap<SkString, sk_sp<TypefaceFontStyleSet>> fRegisteredFamilies;
|
|
75
|
+
SkTArray<SkString> fFamilyNames;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
} // namespace textlayout
|
|
79
|
+
} // namespace skia
|
|
80
|
+
|
|
81
|
+
#endif // TypefaceFontProvider_DEFINED
|
|
@@ -141,7 +141,7 @@ private:
|
|
|
141
141
|
|
|
142
142
|
template <typename T, typename TArray>
|
|
143
143
|
bool parseEnumMap(const TArray& arr, T* result) {
|
|
144
|
-
for (size_t i = 0; i <
|
|
144
|
+
for (size_t i = 0; i < std::size(arr); ++i) {
|
|
145
145
|
if (this->parseExpectedStringToken(std::get<0>(arr[i]))) {
|
|
146
146
|
*result = std::get<1>(arr[i]);
|
|
147
147
|
return true;
|
|
@@ -204,10 +204,10 @@ public:
|
|
|
204
204
|
Type type() const { return fType; }
|
|
205
205
|
const SkSVGColorType& color() const { SkASSERT(fType == Type::kColor); return fColor; }
|
|
206
206
|
SkSpan<const SkString> vars() const {
|
|
207
|
-
return fVars ?
|
|
207
|
+
return fVars ? SkSpan<const SkString>(fVars->fData) : SkSpan<const SkString>();
|
|
208
208
|
}
|
|
209
|
-
SkSpan<
|
|
210
|
-
return fVars ?
|
|
209
|
+
SkSpan<SkString> vars() {
|
|
210
|
+
return fVars ? SkSpan<SkString>(fVars->fData) : SkSpan<SkString>();
|
|
211
211
|
}
|
|
212
212
|
|
|
213
213
|
private:
|