@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,153 @@
|
|
|
1
|
+
// Copyright 2019 Google LLC.
|
|
2
|
+
|
|
3
|
+
#ifndef DartTypes_DEFINED
|
|
4
|
+
#define DartTypes_DEFINED
|
|
5
|
+
|
|
6
|
+
#include "include/core/SkRect.h"
|
|
7
|
+
#include "include/core/SkTypes.h"
|
|
8
|
+
|
|
9
|
+
#include <algorithm>
|
|
10
|
+
#include <iterator>
|
|
11
|
+
#include <limits>
|
|
12
|
+
|
|
13
|
+
namespace skia {
|
|
14
|
+
namespace textlayout {
|
|
15
|
+
|
|
16
|
+
enum Affinity { kUpstream, kDownstream };
|
|
17
|
+
|
|
18
|
+
enum class RectHeightStyle {
|
|
19
|
+
// Provide tight bounding boxes that fit heights per run.
|
|
20
|
+
kTight,
|
|
21
|
+
|
|
22
|
+
// The height of the boxes will be the maximum height of all runs in the
|
|
23
|
+
// line. All rects in the same line will be the same height.
|
|
24
|
+
kMax,
|
|
25
|
+
|
|
26
|
+
// Extends the top and/or bottom edge of the bounds to fully cover any line
|
|
27
|
+
// spacing. The top edge of each line should be the same as the bottom edge
|
|
28
|
+
// of the line above. There should be no gaps in vertical coverage given any
|
|
29
|
+
// ParagraphStyle line_height.
|
|
30
|
+
//
|
|
31
|
+
// The top and bottom of each rect will cover half of the
|
|
32
|
+
// space above and half of the space below the line.
|
|
33
|
+
kIncludeLineSpacingMiddle,
|
|
34
|
+
// The line spacing will be added to the top of the rect.
|
|
35
|
+
kIncludeLineSpacingTop,
|
|
36
|
+
// The line spacing will be added to the bottom of the rect.
|
|
37
|
+
kIncludeLineSpacingBottom,
|
|
38
|
+
//
|
|
39
|
+
kStrut
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
enum class RectWidthStyle {
|
|
43
|
+
// Provide tight bounding boxes that fit widths to the runs of each line
|
|
44
|
+
// independently.
|
|
45
|
+
kTight,
|
|
46
|
+
|
|
47
|
+
// Extends the width of the last rect of each line to match the position of
|
|
48
|
+
// the widest rect over all the lines.
|
|
49
|
+
kMax
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
enum class TextAlign {
|
|
53
|
+
kLeft,
|
|
54
|
+
kRight,
|
|
55
|
+
kCenter,
|
|
56
|
+
kJustify,
|
|
57
|
+
kStart,
|
|
58
|
+
kEnd,
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
enum class TextDirection {
|
|
62
|
+
kRtl,
|
|
63
|
+
kLtr,
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
struct PositionWithAffinity {
|
|
67
|
+
int32_t position;
|
|
68
|
+
Affinity affinity;
|
|
69
|
+
|
|
70
|
+
PositionWithAffinity() : position(0), affinity(kDownstream) {}
|
|
71
|
+
PositionWithAffinity(int32_t p, Affinity a) : position(p), affinity(a) {}
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
struct TextBox {
|
|
75
|
+
SkRect rect;
|
|
76
|
+
TextDirection direction;
|
|
77
|
+
|
|
78
|
+
TextBox(SkRect r, TextDirection d) : rect(r), direction(d) {}
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
// -------------------------------------------------------------------
|
|
82
|
+
// --- Reversed iterable
|
|
83
|
+
|
|
84
|
+
template<typename C, typename UnaryFunction>
|
|
85
|
+
UnaryFunction directional_for_each(C& c, bool forwards, UnaryFunction f) {
|
|
86
|
+
return forwards
|
|
87
|
+
? std::for_each(std::begin(c), std::end(c), f)
|
|
88
|
+
: std::for_each(std::rbegin(c), std::rend(c), f);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const size_t EMPTY_INDEX = std::numeric_limits<size_t>::max();
|
|
92
|
+
template <typename T> struct SkRange {
|
|
93
|
+
SkRange() : start(), end() {}
|
|
94
|
+
SkRange(T s, T e) : start(s), end(e) {}
|
|
95
|
+
|
|
96
|
+
using SignedT = std::make_signed_t<T>;
|
|
97
|
+
|
|
98
|
+
T start, end;
|
|
99
|
+
|
|
100
|
+
bool operator==(const SkRange<T>& other) const {
|
|
101
|
+
return start == other.start && end == other.end;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
T width() const { return end - start; }
|
|
105
|
+
|
|
106
|
+
void Shift(SignedT delta) {
|
|
107
|
+
start += delta;
|
|
108
|
+
end += delta;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
bool contains(SkRange<size_t> other) const {
|
|
112
|
+
return start <= other.start && end >= other.end;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
bool intersects(SkRange<size_t> other) const {
|
|
116
|
+
return std::max(start, other.start) <= std::min(end, other.end);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
SkRange<size_t> intersection(SkRange<size_t> other) const {
|
|
120
|
+
return SkRange<size_t>(std::max(start, other.start), std::min(end, other.end));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
bool empty() const {
|
|
124
|
+
return start == EMPTY_INDEX && end == EMPTY_INDEX;
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
const SkRange<size_t> EMPTY_RANGE = SkRange<size_t>(EMPTY_INDEX, EMPTY_INDEX);
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
enum class TextBaseline {
|
|
132
|
+
kAlphabetic,
|
|
133
|
+
kIdeographic,
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
enum TextHeightBehavior {
|
|
137
|
+
kAll = 0x0,
|
|
138
|
+
kDisableFirstAscent = 0x1,
|
|
139
|
+
kDisableLastDescent = 0x2,
|
|
140
|
+
kDisableAll = 0x1 | 0x2,
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
enum class LineMetricStyle : uint8_t {
|
|
144
|
+
// Use ascent, descent, etc from a fixed baseline.
|
|
145
|
+
Typographic,
|
|
146
|
+
// Use ascent, descent, etc like css with the leading split and with height adjustments
|
|
147
|
+
CSS
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
} // namespace textlayout
|
|
151
|
+
} // namespace skia
|
|
152
|
+
|
|
153
|
+
#endif // DartTypes_DEFINED
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Copyright 2019 Google LLC.
|
|
2
|
+
#ifndef FontArguments_DEFINED
|
|
3
|
+
#define FontArguments_DEFINED
|
|
4
|
+
|
|
5
|
+
#include <functional>
|
|
6
|
+
#include <vector>
|
|
7
|
+
#include "include/core/SkFontArguments.h"
|
|
8
|
+
#include "include/core/SkTypeface.h"
|
|
9
|
+
|
|
10
|
+
namespace skia {
|
|
11
|
+
namespace textlayout {
|
|
12
|
+
|
|
13
|
+
class FontArguments {
|
|
14
|
+
public:
|
|
15
|
+
FontArguments(const SkFontArguments&);
|
|
16
|
+
FontArguments(const FontArguments&) = default;
|
|
17
|
+
FontArguments(FontArguments&&) = default;
|
|
18
|
+
|
|
19
|
+
FontArguments& operator=(const FontArguments&) = default;
|
|
20
|
+
FontArguments& operator=(FontArguments&&) = default;
|
|
21
|
+
|
|
22
|
+
sk_sp<SkTypeface> CloneTypeface(sk_sp<SkTypeface> typeface) const;
|
|
23
|
+
|
|
24
|
+
friend bool operator==(const FontArguments& a, const FontArguments& b);
|
|
25
|
+
friend bool operator!=(const FontArguments& a, const FontArguments& b);
|
|
26
|
+
friend struct std::hash<FontArguments>;
|
|
27
|
+
|
|
28
|
+
private:
|
|
29
|
+
FontArguments() = delete;
|
|
30
|
+
|
|
31
|
+
int fCollectionIndex;
|
|
32
|
+
std::vector<SkFontArguments::VariationPosition::Coordinate> fCoordinates;
|
|
33
|
+
int fPaletteIndex;
|
|
34
|
+
std::vector<SkFontArguments::Palette::Override> fPaletteOverrides;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
} // namespace textlayout
|
|
38
|
+
} // namespace skia
|
|
39
|
+
|
|
40
|
+
namespace std {
|
|
41
|
+
template<> struct hash<skia::textlayout::FontArguments> {
|
|
42
|
+
size_t operator()(const skia::textlayout::FontArguments& args) const;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
#endif // FontArguments_DEFINED
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// Copyright 2019 Google LLC.
|
|
2
|
+
#ifndef FontCollection_DEFINED
|
|
3
|
+
#define FontCollection_DEFINED
|
|
4
|
+
|
|
5
|
+
#include <memory>
|
|
6
|
+
#include <optional>
|
|
7
|
+
#include <set>
|
|
8
|
+
#include "include/core/SkFontMgr.h"
|
|
9
|
+
#include "include/core/SkRefCnt.h"
|
|
10
|
+
#include "include/private/SkTHash.h"
|
|
11
|
+
#include "modules/skparagraph/include/FontArguments.h"
|
|
12
|
+
#include "modules/skparagraph/include/ParagraphCache.h"
|
|
13
|
+
#include "modules/skparagraph/include/TextStyle.h"
|
|
14
|
+
|
|
15
|
+
namespace skia {
|
|
16
|
+
namespace textlayout {
|
|
17
|
+
|
|
18
|
+
class TextStyle;
|
|
19
|
+
class Paragraph;
|
|
20
|
+
class FontCollection : public SkRefCnt {
|
|
21
|
+
public:
|
|
22
|
+
FontCollection();
|
|
23
|
+
|
|
24
|
+
size_t getFontManagersCount() const;
|
|
25
|
+
|
|
26
|
+
void setAssetFontManager(sk_sp<SkFontMgr> fontManager);
|
|
27
|
+
void setDynamicFontManager(sk_sp<SkFontMgr> fontManager);
|
|
28
|
+
void setTestFontManager(sk_sp<SkFontMgr> fontManager);
|
|
29
|
+
void setDefaultFontManager(sk_sp<SkFontMgr> fontManager);
|
|
30
|
+
void setDefaultFontManager(sk_sp<SkFontMgr> fontManager, const char defaultFamilyName[]);
|
|
31
|
+
void setDefaultFontManager(sk_sp<SkFontMgr> fontManager, const std::vector<SkString>& defaultFamilyNames);
|
|
32
|
+
|
|
33
|
+
sk_sp<SkFontMgr> getFallbackManager() const { return fDefaultFontManager; }
|
|
34
|
+
|
|
35
|
+
std::vector<sk_sp<SkTypeface>> findTypefaces(const std::vector<SkString>& familyNames, SkFontStyle fontStyle);
|
|
36
|
+
std::vector<sk_sp<SkTypeface>> findTypefaces(const std::vector<SkString>& familyNames, SkFontStyle fontStyle, const std::optional<FontArguments>& fontArgs);
|
|
37
|
+
|
|
38
|
+
sk_sp<SkTypeface> defaultFallback(SkUnichar unicode, SkFontStyle fontStyle, const SkString& locale);
|
|
39
|
+
sk_sp<SkTypeface> defaultFallback();
|
|
40
|
+
|
|
41
|
+
void disableFontFallback();
|
|
42
|
+
void enableFontFallback();
|
|
43
|
+
bool fontFallbackEnabled() { return fEnableFontFallback; }
|
|
44
|
+
|
|
45
|
+
ParagraphCache* getParagraphCache() { return &fParagraphCache; }
|
|
46
|
+
|
|
47
|
+
void clearCaches();
|
|
48
|
+
|
|
49
|
+
private:
|
|
50
|
+
std::vector<sk_sp<SkFontMgr>> getFontManagerOrder() const;
|
|
51
|
+
|
|
52
|
+
sk_sp<SkTypeface> matchTypeface(const SkString& familyName, SkFontStyle fontStyle);
|
|
53
|
+
|
|
54
|
+
struct FamilyKey {
|
|
55
|
+
FamilyKey(const std::vector<SkString>& familyNames, SkFontStyle style, const std::optional<FontArguments>& args)
|
|
56
|
+
: fFamilyNames(familyNames), fFontStyle(style), fFontArguments(args) {}
|
|
57
|
+
|
|
58
|
+
FamilyKey() {}
|
|
59
|
+
|
|
60
|
+
std::vector<SkString> fFamilyNames;
|
|
61
|
+
SkFontStyle fFontStyle;
|
|
62
|
+
std::optional<FontArguments> fFontArguments;
|
|
63
|
+
|
|
64
|
+
bool operator==(const FamilyKey& other) const;
|
|
65
|
+
|
|
66
|
+
struct Hasher {
|
|
67
|
+
size_t operator()(const FamilyKey& key) const;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
bool fEnableFontFallback;
|
|
72
|
+
SkTHashMap<FamilyKey, std::vector<sk_sp<SkTypeface>>, FamilyKey::Hasher> fTypefaces;
|
|
73
|
+
sk_sp<SkFontMgr> fDefaultFontManager;
|
|
74
|
+
sk_sp<SkFontMgr> fAssetFontManager;
|
|
75
|
+
sk_sp<SkFontMgr> fDynamicFontManager;
|
|
76
|
+
sk_sp<SkFontMgr> fTestFontManager;
|
|
77
|
+
|
|
78
|
+
std::vector<SkString> fDefaultFamilyNames;
|
|
79
|
+
ParagraphCache fParagraphCache;
|
|
80
|
+
};
|
|
81
|
+
} // namespace textlayout
|
|
82
|
+
} // namespace skia
|
|
83
|
+
|
|
84
|
+
#endif // FontCollection_DEFINED
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// Copyright 2019 Google LLC.
|
|
2
|
+
#ifndef Metrics_DEFINED
|
|
3
|
+
#define Metrics_DEFINED
|
|
4
|
+
|
|
5
|
+
#include <map>
|
|
6
|
+
#include "modules/skparagraph/include/TextStyle.h"
|
|
7
|
+
|
|
8
|
+
namespace skia {
|
|
9
|
+
namespace textlayout {
|
|
10
|
+
class StyleMetrics {
|
|
11
|
+
public:
|
|
12
|
+
StyleMetrics(const TextStyle* style) : text_style(style) {}
|
|
13
|
+
|
|
14
|
+
StyleMetrics(const TextStyle* style, SkFontMetrics& metrics)
|
|
15
|
+
: text_style(style), font_metrics(metrics) {}
|
|
16
|
+
|
|
17
|
+
const TextStyle* text_style;
|
|
18
|
+
|
|
19
|
+
// SkFontMetrics contains the following metrics:
|
|
20
|
+
//
|
|
21
|
+
// * Top distance to reserve above baseline
|
|
22
|
+
// * Ascent distance to reserve below baseline
|
|
23
|
+
// * Descent extent below baseline
|
|
24
|
+
// * Bottom extent below baseline
|
|
25
|
+
// * Leading distance to add between lines
|
|
26
|
+
// * AvgCharWidth average character width
|
|
27
|
+
// * MaxCharWidth maximum character width
|
|
28
|
+
// * XMin minimum x
|
|
29
|
+
// * XMax maximum x
|
|
30
|
+
// * XHeight height of lower-case 'x'
|
|
31
|
+
// * CapHeight height of an upper-case letter
|
|
32
|
+
// * UnderlineThickness underline thickness
|
|
33
|
+
// * UnderlinePosition underline position relative to baseline
|
|
34
|
+
// * StrikeoutThickness strikeout thickness
|
|
35
|
+
// * StrikeoutPosition strikeout position relative to baseline
|
|
36
|
+
SkFontMetrics font_metrics;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
class LineMetrics {
|
|
40
|
+
public:
|
|
41
|
+
LineMetrics() { }
|
|
42
|
+
|
|
43
|
+
LineMetrics(size_t start,
|
|
44
|
+
size_t end,
|
|
45
|
+
size_t end_excluding_whitespace,
|
|
46
|
+
size_t end_including_newline,
|
|
47
|
+
bool hard_break)
|
|
48
|
+
: fStartIndex(start)
|
|
49
|
+
, fEndIndex(end)
|
|
50
|
+
, fEndExcludingWhitespaces(end_excluding_whitespace)
|
|
51
|
+
, fEndIncludingNewline(end_including_newline)
|
|
52
|
+
, fHardBreak(hard_break) {}
|
|
53
|
+
// The following fields are used in the layout process itself.
|
|
54
|
+
|
|
55
|
+
// The indexes in the text buffer the line begins and ends.
|
|
56
|
+
size_t fStartIndex = 0;
|
|
57
|
+
size_t fEndIndex = 0;
|
|
58
|
+
size_t fEndExcludingWhitespaces = 0;
|
|
59
|
+
size_t fEndIncludingNewline = 0;
|
|
60
|
+
bool fHardBreak = false;
|
|
61
|
+
|
|
62
|
+
// The following fields are tracked after or during layout to provide to
|
|
63
|
+
// the user as well as for computing bounding boxes.
|
|
64
|
+
|
|
65
|
+
// The final computed ascent and descent for the line. This can be impacted by
|
|
66
|
+
// the strut, height, scaling, as well as outlying runs that are very tall.
|
|
67
|
+
//
|
|
68
|
+
// The top edge is `baseline - ascent` and the bottom edge is `baseline +
|
|
69
|
+
// descent`. Ascent and descent are provided as positive numbers. Raw numbers
|
|
70
|
+
// for specific runs of text can be obtained in run_metrics_map. These values
|
|
71
|
+
// are the cumulative metrics for the entire line.
|
|
72
|
+
double fAscent = SK_ScalarMax;
|
|
73
|
+
double fDescent = SK_ScalarMin;
|
|
74
|
+
double fUnscaledAscent = SK_ScalarMax;
|
|
75
|
+
// Total height of the paragraph including the current line.
|
|
76
|
+
//
|
|
77
|
+
// The height of the current line is `round(ascent + descent)`.
|
|
78
|
+
double fHeight = 0.0;
|
|
79
|
+
// Width of the line.
|
|
80
|
+
double fWidth = 0.0;
|
|
81
|
+
// The left edge of the line. The right edge can be obtained with `left +
|
|
82
|
+
// width`
|
|
83
|
+
double fLeft = 0.0;
|
|
84
|
+
// The y position of the baseline for this line from the top of the paragraph.
|
|
85
|
+
double fBaseline = 0.0;
|
|
86
|
+
// Zero indexed line number
|
|
87
|
+
size_t fLineNumber = 0;
|
|
88
|
+
|
|
89
|
+
// Mapping between text index ranges and the FontMetrics associated with
|
|
90
|
+
// them. The first run will be keyed under start_index. The metrics here
|
|
91
|
+
// are before layout and are the base values we calculate from.
|
|
92
|
+
std::map<size_t, StyleMetrics> fLineMetrics;
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
} // namespace textlayout
|
|
96
|
+
} // namespace skia
|
|
97
|
+
|
|
98
|
+
#endif // Metrics_DEFINED
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// Copyright 2019 Google LLC.
|
|
2
|
+
#ifndef Paragraph_DEFINED
|
|
3
|
+
#define Paragraph_DEFINED
|
|
4
|
+
|
|
5
|
+
#include "modules/skparagraph/include/FontCollection.h"
|
|
6
|
+
#include "modules/skparagraph/include/Metrics.h"
|
|
7
|
+
#include "modules/skparagraph/include/ParagraphStyle.h"
|
|
8
|
+
#include "modules/skparagraph/include/TextStyle.h"
|
|
9
|
+
|
|
10
|
+
class SkCanvas;
|
|
11
|
+
|
|
12
|
+
namespace skia {
|
|
13
|
+
namespace textlayout {
|
|
14
|
+
|
|
15
|
+
class Paragraph {
|
|
16
|
+
|
|
17
|
+
public:
|
|
18
|
+
Paragraph(ParagraphStyle style, sk_sp<FontCollection> fonts);
|
|
19
|
+
|
|
20
|
+
virtual ~Paragraph() = default;
|
|
21
|
+
|
|
22
|
+
SkScalar getMaxWidth() { return fWidth; }
|
|
23
|
+
|
|
24
|
+
SkScalar getHeight() { return fHeight; }
|
|
25
|
+
|
|
26
|
+
SkScalar getMinIntrinsicWidth() { return fMinIntrinsicWidth; }
|
|
27
|
+
|
|
28
|
+
SkScalar getMaxIntrinsicWidth() { return fMaxIntrinsicWidth; }
|
|
29
|
+
|
|
30
|
+
SkScalar getAlphabeticBaseline() { return fAlphabeticBaseline; }
|
|
31
|
+
|
|
32
|
+
SkScalar getIdeographicBaseline() { return fIdeographicBaseline; }
|
|
33
|
+
|
|
34
|
+
SkScalar getLongestLine() { return fLongestLine; }
|
|
35
|
+
|
|
36
|
+
bool didExceedMaxLines() { return fExceededMaxLines; }
|
|
37
|
+
|
|
38
|
+
virtual void layout(SkScalar width) = 0;
|
|
39
|
+
|
|
40
|
+
virtual void paint(SkCanvas* canvas, SkScalar x, SkScalar y) = 0;
|
|
41
|
+
|
|
42
|
+
// Returns a vector of bounding boxes that enclose all text between
|
|
43
|
+
// start and end glyph indexes, including start and excluding end
|
|
44
|
+
virtual std::vector<TextBox> getRectsForRange(unsigned start,
|
|
45
|
+
unsigned end,
|
|
46
|
+
RectHeightStyle rectHeightStyle,
|
|
47
|
+
RectWidthStyle rectWidthStyle) = 0;
|
|
48
|
+
|
|
49
|
+
virtual std::vector<TextBox> getRectsForPlaceholders() = 0;
|
|
50
|
+
|
|
51
|
+
// Returns the index of the glyph that corresponds to the provided coordinate,
|
|
52
|
+
// with the top left corner as the origin, and +y direction as down
|
|
53
|
+
virtual PositionWithAffinity getGlyphPositionAtCoordinate(SkScalar dx, SkScalar dy) = 0;
|
|
54
|
+
|
|
55
|
+
// Finds the first and last glyphs that define a word containing
|
|
56
|
+
// the glyph at index offset
|
|
57
|
+
virtual SkRange<size_t> getWordBoundary(unsigned offset) = 0;
|
|
58
|
+
|
|
59
|
+
virtual void getLineMetrics(std::vector<LineMetrics>&) = 0;
|
|
60
|
+
|
|
61
|
+
virtual size_t lineNumber() = 0;
|
|
62
|
+
|
|
63
|
+
virtual void markDirty() = 0;
|
|
64
|
+
|
|
65
|
+
// This function will return the number of unresolved glyphs or
|
|
66
|
+
// -1 if not applicable (has not been shaped yet - valid case)
|
|
67
|
+
virtual int32_t unresolvedGlyphs() = 0;
|
|
68
|
+
|
|
69
|
+
// Experimental API that allows fast way to update "immutable" paragraph
|
|
70
|
+
virtual void updateTextAlign(TextAlign textAlign) = 0;
|
|
71
|
+
virtual void updateText(size_t from, SkString text) = 0;
|
|
72
|
+
virtual void updateFontSize(size_t from, size_t to, SkScalar fontSize) = 0;
|
|
73
|
+
virtual void updateForegroundPaint(size_t from, size_t to, SkPaint paint) = 0;
|
|
74
|
+
virtual void updateBackgroundPaint(size_t from, size_t to, SkPaint paint) = 0;
|
|
75
|
+
|
|
76
|
+
enum VisitorFlags {
|
|
77
|
+
kWhiteSpace_VisitorFlag = 1 << 0,
|
|
78
|
+
};
|
|
79
|
+
struct VisitorInfo {
|
|
80
|
+
const SkFont& font;
|
|
81
|
+
SkPoint origin;
|
|
82
|
+
SkScalar advanceX;
|
|
83
|
+
int count;
|
|
84
|
+
const uint16_t* glyphs; // count values
|
|
85
|
+
const SkPoint* positions; // count values
|
|
86
|
+
const uint32_t* utf8Starts; // count+1 values
|
|
87
|
+
unsigned flags;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
// lineNumber begins at 0. If info is null, this signals the end of that line.
|
|
91
|
+
using Visitor = std::function<void(int lineNumber, const VisitorInfo*)>;
|
|
92
|
+
virtual void visit(const Visitor&) = 0;
|
|
93
|
+
|
|
94
|
+
protected:
|
|
95
|
+
sk_sp<FontCollection> fFontCollection;
|
|
96
|
+
ParagraphStyle fParagraphStyle;
|
|
97
|
+
|
|
98
|
+
// Things for Flutter
|
|
99
|
+
SkScalar fAlphabeticBaseline;
|
|
100
|
+
SkScalar fIdeographicBaseline;
|
|
101
|
+
SkScalar fHeight;
|
|
102
|
+
SkScalar fWidth;
|
|
103
|
+
SkScalar fMaxIntrinsicWidth;
|
|
104
|
+
SkScalar fMinIntrinsicWidth;
|
|
105
|
+
SkScalar fLongestLine;
|
|
106
|
+
bool fExceededMaxLines;
|
|
107
|
+
};
|
|
108
|
+
} // namespace textlayout
|
|
109
|
+
} // namespace skia
|
|
110
|
+
|
|
111
|
+
#endif // Paragraph_DEFINED
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// Copyright 2019 Google LLC.
|
|
2
|
+
#ifndef ParagraphBuilder_DEFINED
|
|
3
|
+
#define ParagraphBuilder_DEFINED
|
|
4
|
+
|
|
5
|
+
#include <memory>
|
|
6
|
+
#include <stack>
|
|
7
|
+
#include <string>
|
|
8
|
+
#include <tuple>
|
|
9
|
+
#include "modules/skparagraph/include/FontCollection.h"
|
|
10
|
+
#include "modules/skparagraph/include/Paragraph.h"
|
|
11
|
+
#include "modules/skparagraph/include/ParagraphStyle.h"
|
|
12
|
+
#include "modules/skparagraph/include/TextStyle.h"
|
|
13
|
+
|
|
14
|
+
namespace skia {
|
|
15
|
+
namespace textlayout {
|
|
16
|
+
|
|
17
|
+
class ParagraphBuilder {
|
|
18
|
+
public:
|
|
19
|
+
ParagraphBuilder(const ParagraphStyle&, sk_sp<FontCollection>) { }
|
|
20
|
+
|
|
21
|
+
virtual ~ParagraphBuilder() = default;
|
|
22
|
+
|
|
23
|
+
// Push a style to the stack. The corresponding text added with AddText will
|
|
24
|
+
// use the top-most style.
|
|
25
|
+
virtual void pushStyle(const TextStyle& style) = 0;
|
|
26
|
+
|
|
27
|
+
// Remove a style from the stack. Useful to apply different styles to chunks
|
|
28
|
+
// of text such as bolding.
|
|
29
|
+
// Example:
|
|
30
|
+
// builder.PushStyle(normal_style);
|
|
31
|
+
// builder.AddText("Hello this is normal. ");
|
|
32
|
+
//
|
|
33
|
+
// builder.PushStyle(bold_style);
|
|
34
|
+
// builder.AddText("And this is BOLD. ");
|
|
35
|
+
//
|
|
36
|
+
// builder.Pop();
|
|
37
|
+
// builder.AddText(" Back to normal again.");
|
|
38
|
+
virtual void pop() = 0;
|
|
39
|
+
|
|
40
|
+
virtual TextStyle peekStyle() = 0;
|
|
41
|
+
|
|
42
|
+
// Adds UTF16-encoded text to the builder. Forms the proper runs to use the upper-most style
|
|
43
|
+
// on the style_stack.
|
|
44
|
+
virtual void addText(const std::u16string& text) = 0;
|
|
45
|
+
|
|
46
|
+
// Adds UTF8-encoded text to the builder, using the top-most style on the style_stack.
|
|
47
|
+
virtual void addText(const char* text) = 0;
|
|
48
|
+
virtual void addText(const char* text, size_t len) = 0;
|
|
49
|
+
|
|
50
|
+
// Pushes the information required to leave an open space, where Flutter may
|
|
51
|
+
// draw a custom placeholder into.
|
|
52
|
+
// Internally, this method adds a single object replacement character (0xFFFC)
|
|
53
|
+
virtual void addPlaceholder(const PlaceholderStyle& placeholderStyle) = 0;
|
|
54
|
+
|
|
55
|
+
// Constructs a SkParagraph object that can be used to layout and paint the text to a SkCanvas.
|
|
56
|
+
virtual std::unique_ptr<Paragraph> Build() = 0;
|
|
57
|
+
|
|
58
|
+
// Resets this builder to its initial state, discarding any text, styles, placeholders that have
|
|
59
|
+
// been added, but keeping the initial ParagraphStyle.
|
|
60
|
+
virtual void Reset() = 0;
|
|
61
|
+
|
|
62
|
+
// Just until we fix all the google3 code
|
|
63
|
+
static std::unique_ptr<ParagraphBuilder> make(const ParagraphStyle& style,
|
|
64
|
+
sk_sp<FontCollection> fontCollection);
|
|
65
|
+
};
|
|
66
|
+
} // namespace textlayout
|
|
67
|
+
} // namespace skia
|
|
68
|
+
|
|
69
|
+
#endif // ParagraphBuilder_DEFINED
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// Copyright 2019 Google LLC.
|
|
2
|
+
#ifndef ParagraphCache_DEFINED
|
|
3
|
+
#define ParagraphCache_DEFINED
|
|
4
|
+
|
|
5
|
+
#include "include/private/SkMutex.h"
|
|
6
|
+
#include "src/core/SkLRUCache.h"
|
|
7
|
+
#include <functional> // std::function
|
|
8
|
+
|
|
9
|
+
#define PARAGRAPH_CACHE_STATS
|
|
10
|
+
|
|
11
|
+
namespace skia {
|
|
12
|
+
namespace textlayout {
|
|
13
|
+
|
|
14
|
+
enum InternalState {
|
|
15
|
+
kUnknown = 0,
|
|
16
|
+
kShaped = 2,
|
|
17
|
+
kClusterized = 3,
|
|
18
|
+
kMarked = 4,
|
|
19
|
+
kLineBroken = 5,
|
|
20
|
+
kFormatted = 6,
|
|
21
|
+
kDrawn = 7
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
class ParagraphImpl;
|
|
25
|
+
class ParagraphCacheKey;
|
|
26
|
+
class ParagraphCacheValue;
|
|
27
|
+
|
|
28
|
+
class ParagraphCache {
|
|
29
|
+
public:
|
|
30
|
+
ParagraphCache();
|
|
31
|
+
~ParagraphCache();
|
|
32
|
+
|
|
33
|
+
void abandon();
|
|
34
|
+
void reset();
|
|
35
|
+
bool updateParagraph(ParagraphImpl* paragraph);
|
|
36
|
+
bool findParagraph(ParagraphImpl* paragraph);
|
|
37
|
+
|
|
38
|
+
// For testing
|
|
39
|
+
void setChecker(std::function<void(ParagraphImpl* impl, const char*, bool)> checker) {
|
|
40
|
+
fChecker = std::move(checker);
|
|
41
|
+
}
|
|
42
|
+
void printStatistics();
|
|
43
|
+
void turnOn(bool value) { fCacheIsOn = value; }
|
|
44
|
+
int count() { return fLRUCacheMap.count(); }
|
|
45
|
+
|
|
46
|
+
bool isPossiblyTextEditing(ParagraphImpl* paragraph);
|
|
47
|
+
|
|
48
|
+
private:
|
|
49
|
+
|
|
50
|
+
struct Entry;
|
|
51
|
+
void updateFrom(const ParagraphImpl* paragraph, Entry* entry);
|
|
52
|
+
void updateTo(ParagraphImpl* paragraph, const Entry* entry);
|
|
53
|
+
|
|
54
|
+
mutable SkMutex fParagraphMutex;
|
|
55
|
+
std::function<void(ParagraphImpl* impl, const char*, bool)> fChecker;
|
|
56
|
+
|
|
57
|
+
static const int kMaxEntries = 128;
|
|
58
|
+
|
|
59
|
+
struct KeyHash {
|
|
60
|
+
uint32_t operator()(const ParagraphCacheKey& key) const;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
SkLRUCache<ParagraphCacheKey, std::unique_ptr<Entry>, KeyHash> fLRUCacheMap;
|
|
64
|
+
bool fCacheIsOn;
|
|
65
|
+
ParagraphCacheValue* fLastCachedValue;
|
|
66
|
+
|
|
67
|
+
#ifdef PARAGRAPH_CACHE_STATS
|
|
68
|
+
int fTotalRequests;
|
|
69
|
+
int fCacheMisses;
|
|
70
|
+
int fHashMisses; // cache hit but hash table missed
|
|
71
|
+
#endif
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
} // namespace textlayout
|
|
75
|
+
} // namespace skia
|
|
76
|
+
|
|
77
|
+
#endif // ParagraphCache_DEFINED
|