@shopify/react-native-skia 0.1.192 → 0.1.194
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 +1 -1
- package/android/build.gradle +1 -0
- package/android/cpp/jni/JniPlatformContext.cpp +1 -1
- package/android/src/main/java/com/shopify/reactnative/skia/ViewScreenshotService.java +104 -103
- package/cpp/api/JsiSkImage.h +25 -4
- package/cpp/api/JsiSkImageFactory.h +2 -2
- package/cpp/api/JsiSkPath.h +8 -6
- package/cpp/rnskia/dom/base/Declaration.h +5 -7
- package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +3 -1
- package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +1 -0
- package/cpp/rnskia/dom/nodes/JsiPathNode.h +2 -2
- package/cpp/rnskia/dom/props/BoxShadowProps.h +2 -0
- package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +2 -8
- package/cpp/skia/include/android/SkImageAndroid.h +101 -0
- package/cpp/skia/include/codec/SkAndroidCodec.h +26 -8
- package/cpp/skia/include/codec/SkCodec.h +31 -17
- package/cpp/skia/include/codec/SkEncodedImageFormat.h +36 -0
- package/cpp/skia/include/codec/SkPixmapUtils.h +31 -0
- package/cpp/skia/include/config/SkUserConfig.h +61 -29
- package/cpp/skia/include/core/SkBitmap.h +25 -25
- package/cpp/skia/include/core/SkBlurTypes.h +0 -2
- package/cpp/skia/include/core/SkCanvas.h +32 -15
- package/cpp/skia/include/core/SkCapabilities.h +2 -2
- package/cpp/skia/include/core/SkColor.h +2 -0
- package/cpp/skia/include/core/SkColorPriv.h +19 -4
- package/cpp/skia/include/core/SkColorSpace.h +14 -17
- package/cpp/skia/include/core/SkColorType.h +1 -0
- package/cpp/skia/include/core/SkContourMeasure.h +1 -1
- package/cpp/skia/include/core/SkCoverageMode.h +0 -2
- package/cpp/skia/include/core/SkCubicMap.h +2 -0
- package/cpp/skia/include/core/SkData.h +5 -2
- package/cpp/skia/include/core/SkDataTable.h +6 -2
- package/cpp/skia/include/core/SkDeferredDisplayList.h +11 -10
- package/cpp/skia/include/core/SkDeferredDisplayListRecorder.h +9 -8
- package/cpp/skia/include/core/SkDrawable.h +10 -2
- package/cpp/skia/include/core/SkEncodedImageFormat.h +3 -30
- package/cpp/skia/include/core/SkFlattenable.h +4 -2
- package/cpp/skia/include/core/SkFont.h +1 -0
- package/cpp/skia/include/core/SkFontMetrics.h +1 -0
- package/cpp/skia/include/core/SkFontMgr.h +20 -29
- package/cpp/skia/include/core/SkFontStyle.h +4 -1
- package/cpp/skia/include/core/SkGraphics.h +21 -18
- package/cpp/skia/include/core/SkICC.h +3 -13
- package/cpp/skia/include/core/SkImage.h +395 -717
- package/cpp/skia/include/core/SkImageGenerator.h +19 -74
- package/cpp/skia/include/core/SkImageInfo.h +7 -5
- package/cpp/skia/include/core/SkM44.h +11 -0
- package/cpp/skia/include/core/SkMaskFilter.h +6 -3
- package/cpp/skia/include/core/SkMatrix.h +14 -4
- package/cpp/skia/include/core/SkMesh.h +52 -18
- package/cpp/skia/include/core/SkMilestone.h +1 -1
- package/cpp/skia/include/core/SkPaint.h +11 -34
- package/cpp/skia/include/core/SkPath.h +23 -4
- package/cpp/skia/include/core/SkPathBuilder.h +13 -5
- package/cpp/skia/include/core/SkPathMeasure.h +1 -1
- package/cpp/skia/include/core/SkPathTypes.h +0 -2
- package/cpp/skia/include/core/SkPathUtils.h +42 -0
- package/cpp/skia/include/core/SkPicture.h +3 -2
- package/cpp/skia/include/core/SkPictureRecorder.h +2 -0
- package/cpp/skia/include/core/SkPixelRef.h +4 -8
- package/cpp/skia/include/core/SkPixmap.h +12 -20
- package/cpp/skia/include/core/SkPoint.h +4 -2
- package/cpp/skia/include/core/SkPromiseImageTexture.h +2 -2
- package/cpp/skia/include/core/SkRRect.h +5 -1
- package/cpp/skia/include/core/SkRect.h +6 -3
- package/cpp/skia/include/core/SkRefCnt.h +9 -14
- package/cpp/skia/include/core/SkRegion.h +1 -1
- package/cpp/skia/include/core/SkScalar.h +2 -4
- package/cpp/skia/include/core/SkSerialProcs.h +18 -10
- package/cpp/skia/include/core/SkShader.h +1 -64
- package/cpp/skia/include/core/SkSize.h +2 -0
- package/cpp/skia/include/core/SkSpan.h +4 -112
- package/cpp/skia/include/core/SkStream.h +11 -12
- package/cpp/skia/include/core/SkString.h +9 -25
- package/cpp/skia/include/core/SkStrokeRec.h +1 -1
- package/cpp/skia/include/core/SkSurface.h +83 -61
- package/cpp/skia/include/core/SkSurfaceCharacterization.h +3 -3
- package/cpp/skia/include/core/SkSurfaceProps.h +9 -1
- package/cpp/skia/include/core/SkTextBlob.h +2 -2
- package/cpp/skia/include/core/SkTextureCompressionType.h +30 -0
- package/cpp/skia/include/core/SkTime.h +1 -1
- package/cpp/skia/include/core/SkTypeface.h +9 -2
- package/cpp/skia/include/core/SkTypes.h +37 -466
- package/cpp/skia/include/core/SkVertices.h +2 -0
- package/cpp/skia/include/core/SkYUVAInfo.h +4 -0
- package/cpp/skia/include/core/SkYUVAPixmaps.h +7 -1
- package/cpp/skia/include/docs/SkPDFDocument.h +12 -1
- package/cpp/skia/include/effects/SkColorMatrix.h +2 -1
- package/cpp/skia/include/effects/SkGradientShader.h +65 -14
- package/cpp/skia/include/effects/SkImageFilters.h +0 -11
- package/cpp/skia/include/effects/SkRuntimeEffect.h +41 -11
- package/cpp/skia/include/encode/SkEncoder.h +7 -3
- package/cpp/skia/include/encode/SkICC.h +36 -0
- package/cpp/skia/include/encode/SkJpegEncoder.h +102 -71
- package/cpp/skia/include/encode/SkPngEncoder.h +89 -71
- package/cpp/skia/include/encode/SkWebpEncoder.h +65 -38
- package/cpp/skia/include/gpu/GpuTypes.h +23 -1
- package/cpp/skia/include/gpu/GrBackendSurface.h +9 -7
- package/cpp/skia/include/gpu/GrContextOptions.h +28 -9
- package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +6 -4
- package/cpp/skia/include/gpu/GrDirectContext.h +84 -63
- package/cpp/skia/include/gpu/GrDriverBugWorkarounds.h +2 -1
- package/cpp/skia/include/gpu/GrRecordingContext.h +9 -5
- package/cpp/skia/include/gpu/GrTypes.h +18 -18
- package/cpp/skia/include/gpu/d3d/GrD3DTypes.h +4 -4
- package/cpp/skia/include/gpu/dawn/GrDawnTypes.h +3 -3
- package/cpp/skia/include/gpu/ganesh/GrTextureGenerator.h +77 -0
- package/cpp/skia/include/gpu/ganesh/SkImageGanesh.h +385 -0
- package/cpp/skia/include/gpu/gl/GrGLExtensions.h +3 -3
- package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -1
- package/cpp/skia/include/gpu/gl/GrGLInterface.h +0 -3
- package/cpp/skia/include/gpu/gl/GrGLTypes.h +2 -1
- package/cpp/skia/include/gpu/graphite/BackendTexture.h +72 -3
- package/cpp/skia/include/gpu/graphite/Context.h +85 -32
- package/cpp/skia/include/gpu/graphite/ContextOptions.h +15 -11
- package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +55 -5
- package/cpp/skia/include/gpu/graphite/ImageProvider.h +6 -4
- package/cpp/skia/include/gpu/graphite/Recorder.h +41 -11
- package/cpp/skia/include/gpu/graphite/Recording.h +50 -3
- package/cpp/skia/include/gpu/graphite/TextureInfo.h +47 -8
- package/cpp/skia/include/gpu/graphite/YUVABackendTextures.h +139 -0
- package/cpp/skia/include/gpu/graphite/dawn/DawnTypes.h +40 -0
- package/cpp/skia/include/gpu/graphite/dawn/DawnUtils.h +28 -0
- package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +1 -1
- package/cpp/skia/include/gpu/graphite/mtl/{MtlTypes.h → MtlGraphiteTypes.h} +7 -6
- package/cpp/skia/include/gpu/graphite/mtl/MtlGraphiteUtils.h +27 -0
- package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +4 -9
- package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteUtils.h +28 -0
- package/cpp/skia/include/gpu/mock/GrMockTypes.h +17 -13
- package/cpp/skia/include/gpu/mtl/GrMtlTypes.h +2 -2
- package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +1 -1
- package/cpp/skia/include/gpu/vk/GrVkTypes.h +3 -3
- package/cpp/skia/include/gpu/vk/VulkanExtensions.h +3 -3
- package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +5 -7
- package/cpp/skia/include/pathops/SkPathOps.h +3 -3
- package/cpp/skia/include/ports/SkFontMgr_data.h +22 -0
- package/cpp/skia/include/ports/SkFontMgr_indirect.h +14 -14
- package/cpp/skia/include/ports/SkRemotableFontMgr.h +2 -2
- package/cpp/skia/include/ports/SkTypeface_win.h +2 -1
- package/cpp/skia/include/private/SkChecksum.h +32 -7
- package/cpp/skia/include/private/SkColorData.h +1 -26
- package/cpp/skia/include/private/SkGainmapInfo.h +97 -0
- package/cpp/skia/include/private/SkGainmapShader.h +53 -0
- package/cpp/skia/include/private/SkIDChangeListener.h +4 -3
- package/cpp/skia/include/private/SkJpegGainmapEncoder.h +71 -0
- package/cpp/skia/include/private/SkJpegMetadataDecoder.h +61 -0
- package/cpp/skia/include/private/SkOpts_spi.h +3 -1
- package/cpp/skia/include/private/SkPathRef.h +64 -47
- package/cpp/skia/include/private/SkSLDefines.h +5 -5
- package/cpp/skia/include/private/SkSLSampleUsage.h +0 -4
- package/cpp/skia/include/private/SkSpinlock.h +1 -1
- package/cpp/skia/include/private/SkWeakRefCnt.h +3 -0
- package/cpp/skia/include/private/{SingleOwner.h → base/SingleOwner.h} +8 -5
- package/cpp/skia/include/private/base/SkAPI.h +52 -0
- package/cpp/skia/include/private/base/SkAlign.h +39 -0
- package/cpp/skia/include/private/base/SkAlignedStorage.h +32 -0
- package/cpp/skia/include/private/base/SkAssert.h +92 -0
- package/cpp/skia/include/private/base/SkAttributes.h +102 -0
- package/cpp/skia/include/private/base/SkCPUTypes.h +25 -0
- package/cpp/skia/include/private/base/SkContainers.h +46 -0
- package/cpp/skia/include/private/base/SkDebug.h +27 -0
- package/cpp/skia/include/private/{SkDeque.h → base/SkDeque.h} +3 -1
- package/cpp/skia/include/private/base/SkFeatures.h +151 -0
- package/cpp/skia/include/private/{SkFixed.h → base/SkFixed.h} +9 -7
- package/cpp/skia/include/private/{SkFloatBits.h → base/SkFloatBits.h} +2 -3
- package/cpp/skia/include/private/{SkFloatingPoint.h → base/SkFloatingPoint.h} +18 -9
- package/cpp/skia/include/private/base/SkLoadUserConfig.h +63 -0
- package/cpp/skia/include/private/{SkMacros.h → base/SkMacros.h} +17 -2
- package/cpp/skia/include/private/{SkMalloc.h → base/SkMalloc.h} +4 -7
- package/cpp/skia/include/{core → private/base}/SkMath.h +25 -2
- package/cpp/skia/include/private/{SkMutex.h → base/SkMutex.h} +5 -5
- package/cpp/skia/include/private/{SkNoncopyable.h → base/SkNoncopyable.h} +2 -2
- package/cpp/skia/include/private/{SkOnce.h → base/SkOnce.h} +3 -1
- package/cpp/skia/include/private/base/SkPathEnums.h +25 -0
- package/cpp/skia/include/private/{SkSafe32.h → base/SkSafe32.h} +16 -1
- package/cpp/skia/include/private/{SkSemaphore.h → base/SkSemaphore.h} +4 -3
- package/cpp/skia/include/private/base/SkSpan_impl.h +129 -0
- package/cpp/skia/include/private/base/SkTArray.h +694 -0
- package/cpp/skia/include/private/{SkTDArray.h → base/SkTDArray.h} +17 -54
- package/cpp/skia/include/private/{SkTFitsIn.h → base/SkTFitsIn.h} +14 -8
- package/cpp/skia/include/private/{SkTLogic.h → base/SkTLogic.h} +1 -1
- package/cpp/skia/include/private/{SkTemplates.h → base/SkTemplates.h} +63 -88
- package/cpp/skia/include/private/{SkThreadID.h → base/SkThreadID.h} +5 -2
- package/cpp/skia/include/private/{SkTo.h → base/SkTo.h} +13 -2
- package/cpp/skia/include/private/base/SkTypeTraits.h +33 -0
- package/cpp/skia/include/private/chromium/GrVkSecondaryCBDrawContext.h +130 -0
- package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +5 -9
- package/cpp/skia/include/private/chromium/SkDiscardableMemory.h +70 -0
- package/cpp/skia/include/private/chromium/Slug.h +0 -9
- package/cpp/skia/include/private/gpu/ganesh/GrContext_Base.h +2 -1
- package/cpp/skia/include/private/gpu/ganesh/GrD3DTypesMinimal.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrDawnTypesPriv.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrGLTypesPriv.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrImageContext.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrMockTypesPriv.h +3 -2
- package/cpp/skia/include/private/gpu/ganesh/GrMtlTypesPriv.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +17 -23
- package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +2 -2
- package/cpp/skia/include/private/gpu/graphite/DawnTypesPriv.h +38 -0
- package/cpp/skia/include/private/gpu/graphite/{MtlTypesPriv.h → MtlGraphiteTypesPriv.h} +5 -5
- package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +1 -9
- package/cpp/skia/include/private/gpu/vk/SkiaVulkan.h +4 -0
- package/cpp/skia/include/utils/SkCamera.h +1 -1
- package/cpp/skia/include/utils/SkCustomTypeface.h +7 -1
- package/cpp/skia/include/utils/SkNWayCanvas.h +6 -6
- package/cpp/skia/include/utils/SkOrderedFontMgr.h +7 -6
- package/cpp/skia/include/utils/SkPaintFilterCanvas.h +2 -2
- package/cpp/skia/include/utils/SkParsePath.h +1 -1
- package/cpp/skia/modules/skcms/skcms.h +14 -0
- package/cpp/skia/modules/skcms/src/Transform_inl.h +19 -0
- package/cpp/skia/modules/skparagraph/include/FontCollection.h +2 -2
- package/cpp/skia/modules/skparagraph/include/Paragraph.h +72 -2
- package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +1 -11
- package/cpp/skia/modules/skparagraph/include/ParagraphPainter.h +63 -0
- package/cpp/skia/modules/skparagraph/include/TextStyle.h +27 -4
- package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +13 -13
- package/cpp/skia/modules/skresources/include/SkResources.h +18 -4
- package/cpp/skia/modules/svg/include/SkSVGAttribute.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +2 -2
- package/cpp/skia/modules/svg/include/SkSVGContainer.h +2 -2
- package/cpp/skia/modules/svg/include/SkSVGDOM.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGFilterContext.h +2 -2
- package/cpp/skia/modules/svg/include/SkSVGGradient.h +2 -2
- package/cpp/skia/modules/svg/include/SkSVGIDMapper.h +2 -2
- package/cpp/skia/modules/svg/include/SkSVGRenderContext.h +3 -3
- package/cpp/skia/modules/svg/include/SkSVGSVG.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGTypes.h +22 -21
- package/cpp/skia/modules/svg/include/SkSVGValue.h +1 -1
- package/cpp/skia/{include/private → src/core}/SkTHash.h +41 -37
- package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +1 -2
- package/ios/RNSkia-iOS/ViewScreenshotService.mm +1 -1
- package/libs/android/arm64-v8a/libskia.a +0 -0
- package/libs/android/arm64-v8a/libskottie.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/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/libsksg.a +0 -0
- package/libs/android/armeabi-v7a/libskshaper.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/libsksg.a +0 -0
- package/libs/android/x86/libskshaper.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/libsksg.a +0 -0
- package/libs/android/x86_64/libskshaper.a +0 -0
- package/libs/android/x86_64/libsvg.a +0 -0
- package/libs/ios/libskia.xcframework/Info.plist +5 -5
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
- package/libs/ios/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/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/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 +1 -1
- package/react-native-skia.podspec +1 -1
- package/scripts/install-npm.js +11 -1
- package/cpp/skia/include/core/SkImageEncoder.h +0 -71
- package/cpp/skia/include/gpu/GrConfig.h +0 -53
- package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +0 -195
- package/cpp/skia/include/private/SkHalf.h +0 -38
- package/cpp/skia/include/private/SkImageInfoPriv.h +0 -199
- package/cpp/skia/include/private/SkSLIRNode.h +0 -64
- package/cpp/skia/include/private/SkSLLayout.h +0 -144
- package/cpp/skia/include/private/SkSLModifiers.h +0 -178
- package/cpp/skia/include/private/SkSLProgramElement.h +0 -77
- package/cpp/skia/include/private/SkSLProgramKind.h +0 -35
- package/cpp/skia/include/private/SkSLStatement.h +0 -86
- package/cpp/skia/include/private/SkSLString.h +0 -41
- package/cpp/skia/include/private/SkSLSymbol.h +0 -94
- package/cpp/skia/include/private/SkSafe_math.h +0 -52
- package/cpp/skia/include/private/SkStringView.h +0 -51
- package/cpp/skia/include/private/SkTArray.h +0 -655
- package/cpp/skia/include/private/SkUniquePaintParamsID.h +0 -35
- package/cpp/skia/include/private/SkVx.h +0 -1026
- package/cpp/skia/include/sksl/DSL.h +0 -37
- package/cpp/skia/include/sksl/DSLBlock.h +0 -58
- package/cpp/skia/include/sksl/DSLCase.h +0 -62
- package/cpp/skia/include/sksl/DSLCore.h +0 -492
- package/cpp/skia/include/sksl/DSLExpression.h +0 -241
- package/cpp/skia/include/sksl/DSLFunction.h +0 -113
- package/cpp/skia/include/sksl/DSLLayout.h +0 -92
- package/cpp/skia/include/sksl/DSLModifiers.h +0 -69
- package/cpp/skia/include/sksl/DSLStatement.h +0 -82
- package/cpp/skia/include/sksl/DSLSymbols.h +0 -61
- package/cpp/skia/include/sksl/DSLType.h +0 -271
- package/cpp/skia/include/sksl/DSLVar.h +0 -231
- package/cpp/skia/include/sksl/SkSLErrorReporter.h +0 -65
- package/cpp/skia/include/sksl/SkSLOperator.h +0 -154
- package/cpp/skia/include/sksl/SkSLPosition.h +0 -104
- package/cpp/skia/include/utils/SkRandom.h +0 -169
- package/cpp/skia/src/core/SkLRUCache.h +0 -126
- package/cpp/skia/src/core/SkTInternalLList.h +0 -302
- /package/cpp/skia/include/{core → codec}/SkPngChunkReader.h +0 -0
- /package/cpp/skia/include/private/{SkTPin.h → base/SkTPin.h} +0 -0
- /package/cpp/skia/include/private/{SkThreadAnnotations.h → base/SkThreadAnnotations.h} +0 -0
package/android/CMakeLists.txt
CHANGED
|
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.4.1)
|
|
|
3
3
|
|
|
4
4
|
set (CMAKE_VERBOSE_MAKEFILE ON)
|
|
5
5
|
set (CMAKE_CXX_STANDARD 17)
|
|
6
|
-
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSK_GL -DSK_BUILD_FOR_ANDROID -DFOLLY_NO_CONFIG=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -DFOLLY_HAVE_MEMRCHR=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_MOBILE=1 -DON_ANDROID -DONANDROID")
|
|
6
|
+
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSK_GL -DSK_GANESH -DSK_BUILD_FOR_ANDROID -DFOLLY_NO_CONFIG=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -DFOLLY_HAVE_MEMRCHR=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_MOBILE=1 -DON_ANDROID -DONANDROID")
|
|
7
7
|
|
|
8
8
|
set (PACKAGE_NAME "rnskia")
|
|
9
9
|
set (SKIA_LIB "skia")
|
package/android/build.gradle
CHANGED
|
@@ -101,7 +101,7 @@ sk_sp<SkImage> JniPlatformContext::takeScreenshotFromViewTag(size_t tag) {
|
|
|
101
101
|
// Create pixmap from pixels and make a copy of it so that
|
|
102
102
|
// the SkImage owns its own pixels
|
|
103
103
|
SkPixmap pm(skInfo, pixels, bmi.stride);
|
|
104
|
-
auto skImage =
|
|
104
|
+
auto skImage = SkImages::RasterFromPixmapCopy(pm);
|
|
105
105
|
|
|
106
106
|
// Unlock pixels
|
|
107
107
|
AndroidBitmap_unlockPixels(env, bitmap);
|
|
@@ -58,123 +58,124 @@ public class ViewScreenshotService {
|
|
|
58
58
|
paint.setDither(true);
|
|
59
59
|
|
|
60
60
|
// Render the main view and its children
|
|
61
|
-
final Canvas
|
|
62
|
-
view.draw(c);
|
|
61
|
+
final Canvas canvas = new Canvas(bitmap);
|
|
63
62
|
|
|
64
|
-
//
|
|
65
|
-
|
|
63
|
+
// Renders view with child views to canvas
|
|
64
|
+
renderViewToCanvas(canvas, view, paint);
|
|
66
65
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
if (child instanceof TextureView) {
|
|
70
|
-
// skip all invisible to user child views
|
|
71
|
-
if (child.getVisibility() != VISIBLE) continue;
|
|
66
|
+
return bitmap;
|
|
67
|
+
}
|
|
72
68
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if (
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
PixelCopy.request(svChild, childBitmapBuffer, new PixelCopy.OnPixelCopyFinishedListener() {
|
|
95
|
-
@Override
|
|
96
|
-
public void onPixelCopyFinished(int copyResult) {
|
|
97
|
-
final int countCanvasSave = c.save();
|
|
98
|
-
applyTransformations(c, view, child);
|
|
99
|
-
c.drawBitmap(childBitmapBuffer, 0, 0, paint);
|
|
100
|
-
c.restoreToCount(countCanvasSave);
|
|
101
|
-
latch.countDown();
|
|
102
|
-
}
|
|
103
|
-
}, new Handler(Looper.getMainLooper()));
|
|
104
|
-
latch.await(SURFACE_VIEW_READ_PIXELS_TIMEOUT, TimeUnit.SECONDS);
|
|
105
|
-
} catch (Exception e) {
|
|
106
|
-
Log.e(TAG, "Cannot PixelCopy for " + svChild, e);
|
|
107
|
-
}
|
|
108
|
-
} else {
|
|
109
|
-
Bitmap cache = svChild.getDrawingCache();
|
|
110
|
-
if (cache != null) {
|
|
111
|
-
c.drawBitmap(svChild.getDrawingCache(), 0, 0, paint);
|
|
112
|
-
}
|
|
69
|
+
private static void renderViewToCanvas(Canvas canvas, View view, Paint paint) {
|
|
70
|
+
// Apply transformations for the current view
|
|
71
|
+
canvas.save();
|
|
72
|
+
applyTransformations(canvas, view);
|
|
73
|
+
|
|
74
|
+
// Draw children if the view has children
|
|
75
|
+
if ((view instanceof ViewGroup)) {
|
|
76
|
+
// Draw children
|
|
77
|
+
ViewGroup group = (ViewGroup) view;
|
|
78
|
+
|
|
79
|
+
// Hide visible children - this needs to be done because view.draw(canvas)
|
|
80
|
+
// will render all visible non-texture/surface views directly - causing
|
|
81
|
+
// views to be rendered twice - once by view.draw() and once when we
|
|
82
|
+
// enumerate children. We therefore need to turn off rendering of visible
|
|
83
|
+
// children before we call view.draw:
|
|
84
|
+
List<View> visibleChildren = new ArrayList<>();
|
|
85
|
+
for (int i = 0; i < group.getChildCount(); i++) {
|
|
86
|
+
View child = group.getChildAt(i);
|
|
87
|
+
if (child.getVisibility() == VISIBLE) {
|
|
88
|
+
visibleChildren.add(child);
|
|
89
|
+
child.setVisibility(View.INVISIBLE);
|
|
113
90
|
}
|
|
114
91
|
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
return bitmap;
|
|
118
|
-
}
|
|
119
92
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
final ArrayList<View> viewArrayList = new ArrayList<>();
|
|
123
|
-
viewArrayList.add(v);
|
|
93
|
+
// Draw ourselves
|
|
94
|
+
view.draw(canvas);
|
|
124
95
|
|
|
125
|
-
|
|
126
|
-
|
|
96
|
+
// Enable children again
|
|
97
|
+
for (int i = 0; i < visibleChildren.size(); i++) {
|
|
98
|
+
View child = visibleChildren.get(i);
|
|
99
|
+
child.setVisibility(VISIBLE);
|
|
100
|
+
}
|
|
127
101
|
|
|
128
|
-
|
|
102
|
+
// Draw children
|
|
103
|
+
for (int i = 0; i < group.getChildCount(); i++) {
|
|
104
|
+
View child = group.getChildAt(i);
|
|
129
105
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
View child = viewGroup.getChildAt(i);
|
|
106
|
+
// skip all invisible to user child views
|
|
107
|
+
if (child.getVisibility() != VISIBLE) continue;
|
|
133
108
|
|
|
134
|
-
|
|
135
|
-
|
|
109
|
+
// skip any child that we don't know how to process
|
|
110
|
+
if (child instanceof TextureView) {
|
|
111
|
+
final TextureView tvChild = (TextureView) child;
|
|
112
|
+
tvChild.setOpaque(false); // <-- switch off background fill
|
|
113
|
+
|
|
114
|
+
canvas.save();
|
|
115
|
+
applyTransformations(canvas, child);
|
|
116
|
+
|
|
117
|
+
// TextureView should use bitmaps with matching size,
|
|
118
|
+
// otherwise content of the TextureView will be scaled to provided bitmap dimensions
|
|
119
|
+
final Bitmap childBitmapBuffer = tvChild.getBitmap(Bitmap.createBitmap(child.getWidth(), child.getHeight(), Bitmap.Config.ARGB_8888));
|
|
120
|
+
canvas.drawBitmap(childBitmapBuffer, 0, 0, paint);
|
|
121
|
+
|
|
122
|
+
canvas.restore();
|
|
123
|
+
|
|
124
|
+
} else if (child instanceof SurfaceView) {
|
|
125
|
+
final SurfaceView svChild = (SurfaceView) child;
|
|
126
|
+
final CountDownLatch latch = new CountDownLatch(1);
|
|
127
|
+
|
|
128
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
|
129
|
+
final Bitmap childBitmapBuffer = Bitmap.createBitmap(child.getWidth(), child.getHeight(), Bitmap.Config.ARGB_8888);
|
|
130
|
+
try {
|
|
131
|
+
PixelCopy.request(svChild, childBitmapBuffer, copyResult -> {
|
|
132
|
+
canvas.save();
|
|
133
|
+
applyTransformations(canvas, child);
|
|
134
|
+
canvas.drawBitmap(childBitmapBuffer, 0, 0, paint);
|
|
135
|
+
canvas.restore();
|
|
136
|
+
latch.countDown();
|
|
137
|
+
}, new Handler(Looper.getMainLooper()));
|
|
138
|
+
latch.await(SURFACE_VIEW_READ_PIXELS_TIMEOUT, TimeUnit.SECONDS);
|
|
139
|
+
} catch (Exception e) {
|
|
140
|
+
Log.e(TAG, "Cannot PixelCopy for " + svChild, e);
|
|
141
|
+
}
|
|
142
|
+
} else {
|
|
143
|
+
Bitmap cache = svChild.getDrawingCache();
|
|
144
|
+
if (cache != null) {
|
|
145
|
+
canvas.save();
|
|
146
|
+
applyTransformations(canvas, child);
|
|
147
|
+
canvas.drawBitmap(svChild.getDrawingCache(), 0, 0, paint);
|
|
148
|
+
canvas.restore();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
} else {
|
|
152
|
+
// Regular views needs to be rendered again to ensure correct z-index
|
|
153
|
+
// order with texture views and surface views.
|
|
154
|
+
renderViewToCanvas(canvas, child, paint);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
} else {
|
|
158
|
+
// Draw ourselves
|
|
159
|
+
view.draw(canvas);
|
|
136
160
|
}
|
|
137
161
|
|
|
138
|
-
|
|
162
|
+
// Restore canvas
|
|
163
|
+
canvas.restore();
|
|
139
164
|
}
|
|
140
165
|
|
|
141
|
-
/**
|
|
142
|
-
* Concat all the transformation matrix's from parent to child.
|
|
143
|
-
*/
|
|
144
166
|
@NonNull
|
|
145
|
-
@
|
|
146
|
-
|
|
147
|
-
final Matrix
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
// apply transformations from parent --> child order
|
|
159
|
-
Collections.reverse(ms);
|
|
160
|
-
|
|
161
|
-
for (final View v : ms) {
|
|
162
|
-
c.save();
|
|
163
|
-
|
|
164
|
-
// apply each view transformations, so each child will be affected by them
|
|
165
|
-
final float dx = v.getLeft() + ((v != child) ? v.getPaddingLeft() : 0) + v.getTranslationX();
|
|
166
|
-
final float dy = v.getTop() + ((v != child) ? v.getPaddingTop() : 0) + v.getTranslationY();
|
|
167
|
-
c.translate(dx, dy);
|
|
168
|
-
c.rotate(v.getRotation(), v.getPivotX(), v.getPivotY());
|
|
169
|
-
c.scale(v.getScaleX(), v.getScaleY());
|
|
170
|
-
|
|
171
|
-
// compute the matrix just for any future use
|
|
172
|
-
transform.postTranslate(dx, dy);
|
|
173
|
-
transform.postRotate(v.getRotation(), v.getPivotX(), v.getPivotY());
|
|
174
|
-
transform.postScale(v.getScaleX(), v.getScaleY());
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
return transform;
|
|
167
|
+
private static void applyTransformations(final Canvas c, @NonNull final View view) {
|
|
168
|
+
// Get the transformation matrix of the view
|
|
169
|
+
final Matrix matrix = view.getMatrix();
|
|
170
|
+
|
|
171
|
+
// Create a new matrix for translation
|
|
172
|
+
final Matrix translateMatrix = new Matrix();
|
|
173
|
+
final float dx = view.getLeft() + view.getPaddingLeft() + view.getTranslationX();
|
|
174
|
+
final float dy = view.getTop() + view.getPaddingTop() + view.getTranslationY();
|
|
175
|
+
translateMatrix.setTranslate(dx, dy);
|
|
176
|
+
|
|
177
|
+
// Pre-concatenate the current matrix of the canvas with the translation and transformation matrices of the view
|
|
178
|
+
c.concat(translateMatrix);
|
|
179
|
+
c.concat(matrix);
|
|
178
180
|
}
|
|
179
|
-
|
|
180
181
|
}
|
package/cpp/api/JsiSkImage.h
CHANGED
|
@@ -14,7 +14,9 @@
|
|
|
14
14
|
#include "SkBase64.h"
|
|
15
15
|
#include "SkImage.h"
|
|
16
16
|
#include "SkStream.h"
|
|
17
|
-
#include
|
|
17
|
+
#include "codec/SkEncodedImageFormat.h"
|
|
18
|
+
#include "include/encode/SkJpegEncoder.h"
|
|
19
|
+
#include "include/encode/SkPngEncoder.h"
|
|
18
20
|
|
|
19
21
|
#pragma clang diagnostic pop
|
|
20
22
|
|
|
@@ -70,7 +72,15 @@ public:
|
|
|
70
72
|
auto quality = count == 2 ? arguments[1].asNumber() : 100.0;
|
|
71
73
|
|
|
72
74
|
// Get data
|
|
73
|
-
|
|
75
|
+
sk_sp<SkData> data;
|
|
76
|
+
if (format == SkEncodedImageFormat::kJPEG) {
|
|
77
|
+
SkJpegEncoder::Options options;
|
|
78
|
+
options.fQuality = quality;
|
|
79
|
+
data = SkJpegEncoder::Encode(nullptr, getObject().get(), options);
|
|
80
|
+
} else {
|
|
81
|
+
SkPngEncoder::Options options;
|
|
82
|
+
data = SkPngEncoder::Encode(nullptr, getObject().get(), options);
|
|
83
|
+
}
|
|
74
84
|
auto arrayCtor =
|
|
75
85
|
runtime.global().getPropertyAsFunction(runtime, "Uint8Array");
|
|
76
86
|
size_t size = data->size();
|
|
@@ -95,8 +105,19 @@ public:
|
|
|
95
105
|
: SkEncodedImageFormat::kPNG;
|
|
96
106
|
|
|
97
107
|
auto quality = count == 2 ? arguments[1].asNumber() : 100.0;
|
|
98
|
-
|
|
99
|
-
|
|
108
|
+
auto image = getObject();
|
|
109
|
+
if (image->isTextureBacked()) {
|
|
110
|
+
image = image->makeNonTextureImage();
|
|
111
|
+
}
|
|
112
|
+
sk_sp<SkData> data;
|
|
113
|
+
if (format == SkEncodedImageFormat::kJPEG) {
|
|
114
|
+
SkJpegEncoder::Options options;
|
|
115
|
+
options.fQuality = quality;
|
|
116
|
+
data = SkJpegEncoder::Encode(nullptr, image.get(), options);
|
|
117
|
+
} else {
|
|
118
|
+
SkPngEncoder::Options options;
|
|
119
|
+
data = SkPngEncoder::Encode(nullptr, image.get(), options);
|
|
120
|
+
}
|
|
100
121
|
auto len = SkBase64::Encode(data->bytes(), data->size(), nullptr);
|
|
101
122
|
auto buffer = std::string(len, 0);
|
|
102
123
|
SkBase64::Encode(data->bytes(), data->size(),
|
|
@@ -18,7 +18,7 @@ class JsiSkImageFactory : public JsiSkHostObject {
|
|
|
18
18
|
public:
|
|
19
19
|
JSI_HOST_FUNCTION(MakeImageFromEncoded) {
|
|
20
20
|
auto data = JsiSkData::fromValue(runtime, arguments[0]);
|
|
21
|
-
auto image =
|
|
21
|
+
auto image = SkImages::DeferredFromEncodedData(data);
|
|
22
22
|
if (image == nullptr) {
|
|
23
23
|
return jsi::Value::null();
|
|
24
24
|
}
|
|
@@ -30,7 +30,7 @@ public:
|
|
|
30
30
|
auto imageInfo = JsiSkImageInfo::fromValue(runtime, arguments[0]);
|
|
31
31
|
auto pixelData = JsiSkData::fromValue(runtime, arguments[1]);
|
|
32
32
|
auto bytesPerRow = arguments[2].asNumber();
|
|
33
|
-
auto image =
|
|
33
|
+
auto image = SkImages::RasterFromData(*imageInfo, pixelData, bytesPerRow);
|
|
34
34
|
if (image == nullptr) {
|
|
35
35
|
return jsi::Value::null();
|
|
36
36
|
}
|
package/cpp/api/JsiSkPath.h
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
#include <jsi/jsi.h>
|
|
8
8
|
|
|
9
9
|
#include "JsiSkHostObjects.h"
|
|
10
|
+
#include "JsiSkMatrix.h"
|
|
10
11
|
#include "JsiSkPoint.h"
|
|
11
12
|
#include "JsiSkRRect.h"
|
|
12
13
|
#include "JsiSkRect.h"
|
|
@@ -20,13 +21,12 @@
|
|
|
20
21
|
#include "SkPathEffect.h"
|
|
21
22
|
#include "SkPathOps.h"
|
|
22
23
|
#include "SkPathTypes.h"
|
|
24
|
+
#include "SkPathUtils.h"
|
|
23
25
|
#include "SkString.h"
|
|
24
26
|
#include "SkStrokeRec.h"
|
|
25
27
|
#include "SkTextUtils.h"
|
|
26
28
|
#include "SkTrimPathEffect.h"
|
|
27
29
|
|
|
28
|
-
#include "JsiSkMatrix.h"
|
|
29
|
-
|
|
30
30
|
#pragma clang diagnostic pop
|
|
31
31
|
|
|
32
32
|
namespace RNSkia {
|
|
@@ -284,8 +284,11 @@ public:
|
|
|
284
284
|
|
|
285
285
|
auto jsiPrecision = opts.getProperty(runtime, "precision");
|
|
286
286
|
auto precision = jsiPrecision.isUndefined() ? 1 : jsiPrecision.asNumber();
|
|
287
|
-
auto result =
|
|
288
|
-
|
|
287
|
+
auto result =
|
|
288
|
+
skpathutils::FillPathWithPaint(path, p, &path, nullptr, precision);
|
|
289
|
+
if (result) {
|
|
290
|
+
getObject()->swap(path);
|
|
291
|
+
}
|
|
289
292
|
return result ? thisValue.getObject(runtime) : jsi::Value::null();
|
|
290
293
|
}
|
|
291
294
|
|
|
@@ -320,8 +323,7 @@ public:
|
|
|
320
323
|
|
|
321
324
|
JSI_HOST_FUNCTION(toSVGString) {
|
|
322
325
|
SkPath path = *getObject();
|
|
323
|
-
|
|
324
|
-
SkParsePath::ToSVGString(path, &s);
|
|
326
|
+
auto s = SkParsePath::ToSVGString(path);
|
|
325
327
|
return jsi::String::createFromUtf8(runtime, s.c_str());
|
|
326
328
|
}
|
|
327
329
|
|
|
@@ -24,17 +24,15 @@ public:
|
|
|
24
24
|
void push(T el) { _elements.push(el); }
|
|
25
25
|
|
|
26
26
|
// Clears and returns all elements
|
|
27
|
-
std::vector<T> popAll() {
|
|
28
|
-
|
|
29
|
-
// Pops the number of items up to limit
|
|
30
|
-
std::vector<T> popMultiple(size_t limit) {
|
|
31
|
-
auto size = std::min(limit, _elements.size());
|
|
27
|
+
std::vector<T> popAll() {
|
|
28
|
+
auto size = _elements.size();
|
|
32
29
|
std::vector<T> tmp;
|
|
33
30
|
tmp.reserve(size);
|
|
34
31
|
for (size_t i = 0; i < size; ++i) {
|
|
35
32
|
tmp.push_back(_elements.top());
|
|
36
33
|
_elements.pop();
|
|
37
34
|
}
|
|
35
|
+
std::reverse(std::begin(tmp), std::end(tmp));
|
|
38
36
|
return tmp;
|
|
39
37
|
}
|
|
40
38
|
|
|
@@ -50,7 +48,7 @@ public:
|
|
|
50
48
|
// Clears and returns through reducer function in reversed order
|
|
51
49
|
T popAsOne(std::function<T(T inner, T outer)> composer) {
|
|
52
50
|
auto tmp = popAll();
|
|
53
|
-
|
|
51
|
+
std::reverse(std::begin(tmp), std::end(tmp));
|
|
54
52
|
return std::accumulate(std::begin(tmp), std::end(tmp),
|
|
55
53
|
static_cast<T>(nullptr), [=](T inner, T outer) {
|
|
56
54
|
if (inner == nullptr) {
|
|
@@ -63,7 +61,7 @@ public:
|
|
|
63
61
|
// Returns the size of the elements
|
|
64
62
|
size_t size() { return _elements.size(); }
|
|
65
63
|
|
|
66
|
-
|
|
64
|
+
private:
|
|
67
65
|
std::stack<T> _elements;
|
|
68
66
|
};
|
|
69
67
|
|
|
@@ -30,7 +30,9 @@ protected:
|
|
|
30
30
|
#endif
|
|
31
31
|
// Save paint if the paint property is set
|
|
32
32
|
if (_paintProp->isSet()) {
|
|
33
|
-
|
|
33
|
+
auto localCtx = _paintProp->getUnsafeDerivedValue().get();
|
|
34
|
+
localCtx->setCanvas(context->getCanvas());
|
|
35
|
+
draw(localCtx);
|
|
34
36
|
} else {
|
|
35
37
|
// Call abstract draw method
|
|
36
38
|
draw(context);
|
|
@@ -108,8 +108,8 @@ protected:
|
|
|
108
108
|
// _path is const so we can't mutate it directly, let's replace the
|
|
109
109
|
// path like this:
|
|
110
110
|
auto p = std::make_shared<SkPath>(*_path.get());
|
|
111
|
-
if (!
|
|
112
|
-
|
|
111
|
+
if (!skpathutils::FillPathWithPaint(*_path.get(), strokePaint,
|
|
112
|
+
p.get(), nullptr, precision)) {
|
|
113
113
|
_path = nullptr;
|
|
114
114
|
} else {
|
|
115
115
|
_path = std::const_pointer_cast<const SkPath>(p);
|
|
@@ -27,7 +27,7 @@ class SkShader;
|
|
|
27
27
|
class SkAndroidFrameworkUtils {
|
|
28
28
|
public:
|
|
29
29
|
|
|
30
|
-
#if
|
|
30
|
+
#if defined(SK_GANESH)
|
|
31
31
|
/**
|
|
32
32
|
* clipWithStencil draws the current clip into a stencil buffer with reference value and mask
|
|
33
33
|
* set to 0x1. This function works only on a GPU canvas.
|
|
@@ -37,7 +37,7 @@ public:
|
|
|
37
37
|
* @return true on success or false if clip is empty or not a GPU canvas.
|
|
38
38
|
*/
|
|
39
39
|
static bool clipWithStencil(SkCanvas* canvas);
|
|
40
|
-
#endif //
|
|
40
|
+
#endif //defined(SK_GANESH)
|
|
41
41
|
|
|
42
42
|
static void SafetyNetLog(const char*);
|
|
43
43
|
|
|
@@ -58,12 +58,6 @@ public:
|
|
|
58
58
|
*/
|
|
59
59
|
static SkCanvas* getBaseWrappedCanvas(SkCanvas* canvas);
|
|
60
60
|
|
|
61
|
-
/**
|
|
62
|
-
* Skia will change the order in which local matrices concatenate. In order to not break Android
|
|
63
|
-
* apps targeting older API levels we offer this function to use the legacy concatenation order.
|
|
64
|
-
*/
|
|
65
|
-
static void UseLegacyLocalMatrixConcatenation();
|
|
66
|
-
|
|
67
61
|
/**
|
|
68
62
|
* If the shader represents a linear gradient ShaderAsALinearGradient
|
|
69
63
|
* returns true and if info is not null, ShaderAsALinearGradient populates
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2023 Google LLC
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed by a BSD-style license that can be
|
|
5
|
+
* found in the LICENSE file.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef SkImageAndroid_DEFINED
|
|
9
|
+
#define SkImageAndroid_DEFINED
|
|
10
|
+
|
|
11
|
+
#include "include/core/SkImage.h"
|
|
12
|
+
#include "include/core/SkRefCnt.h"
|
|
13
|
+
#include "include/gpu/GrTypes.h"
|
|
14
|
+
|
|
15
|
+
class SkColorSpace;
|
|
16
|
+
class GrDirectContext;
|
|
17
|
+
class SkPixmap;
|
|
18
|
+
struct AHardwareBuffer;
|
|
19
|
+
|
|
20
|
+
namespace SkImages {
|
|
21
|
+
|
|
22
|
+
/** (See Skia bug 7447)
|
|
23
|
+
Creates SkImage from Android hardware buffer.
|
|
24
|
+
Returned SkImage takes a reference on the buffer.
|
|
25
|
+
Only available on Android, when __ANDROID_API__ is defined to be 26 or greater.
|
|
26
|
+
@param hardwareBuffer AHardwareBuffer Android hardware buffer
|
|
27
|
+
@param colorSpace range of colors; may be nullptr
|
|
28
|
+
@return created SkImage, or nullptr
|
|
29
|
+
*/
|
|
30
|
+
SK_API sk_sp<SkImage> DeferredFromAHardwareBuffer(AHardwareBuffer* hardwareBuffer,
|
|
31
|
+
SkAlphaType alphaType = kPremul_SkAlphaType);
|
|
32
|
+
SK_API sk_sp<SkImage> DeferredFromAHardwareBuffer(
|
|
33
|
+
AHardwareBuffer* hardwareBuffer,
|
|
34
|
+
SkAlphaType alphaType,
|
|
35
|
+
sk_sp<SkColorSpace> colorSpace,
|
|
36
|
+
GrSurfaceOrigin surfaceOrigin = kTopLeft_GrSurfaceOrigin);
|
|
37
|
+
|
|
38
|
+
/** Creates SkImage from Android hardware buffer and uploads the data from the SkPixmap to it.
|
|
39
|
+
Returned SkImage takes a reference on the buffer.
|
|
40
|
+
Only available on Android, when __ANDROID_API__ is defined to be 26 or greater.
|
|
41
|
+
@param context GPU context
|
|
42
|
+
@param pixmap SkPixmap that contains data to be uploaded to the AHardwareBuffer
|
|
43
|
+
@param hardwareBuffer AHardwareBuffer Android hardware buffer
|
|
44
|
+
@param surfaceOrigin surface origin for resulting image
|
|
45
|
+
@return created SkImage, or nullptr
|
|
46
|
+
*/
|
|
47
|
+
SK_API sk_sp<SkImage> TextureFromAHardwareBufferWithData(
|
|
48
|
+
GrDirectContext* context,
|
|
49
|
+
const SkPixmap& pixmap,
|
|
50
|
+
AHardwareBuffer* hardwareBuffer,
|
|
51
|
+
GrSurfaceOrigin surfaceOrigin = kTopLeft_GrSurfaceOrigin);
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Like SkImagePriv::SkMakeImageFromRasterBitmap, except this can be pinned using
|
|
55
|
+
* skgpu::ganesh::PinAsTexture and CopyPixelMode is never.
|
|
56
|
+
*/
|
|
57
|
+
SK_API sk_sp<SkImage> PinnableRasterFromBitmap(const SkBitmap&);
|
|
58
|
+
|
|
59
|
+
} // namespace SkImages
|
|
60
|
+
|
|
61
|
+
// TODO(kjlubick) remove this after Android has been ported.
|
|
62
|
+
namespace sk_image_factory {
|
|
63
|
+
inline sk_sp<SkImage> MakePinnableFromRasterBitmap(const SkBitmap& b) {
|
|
64
|
+
return SkImages::PinnableRasterFromBitmap(b);
|
|
65
|
+
}
|
|
66
|
+
} // namespace sk_image_factory
|
|
67
|
+
|
|
68
|
+
namespace skgpu::ganesh {
|
|
69
|
+
/**
|
|
70
|
+
* Will attempt to upload and lock the contents of the image as a texture, so that subsequent
|
|
71
|
+
* draws to a gpu-target will come from that texture (and not by looking at the original image
|
|
72
|
+
* src). In particular this is intended to use the texture even if the image's original content
|
|
73
|
+
* changes subsequent to this call (i.e. the src is mutable!).
|
|
74
|
+
*
|
|
75
|
+
* Only compatible with SkImages created from SkImages::PinnableRasterFromBitmap.
|
|
76
|
+
*
|
|
77
|
+
* All successful calls must be balanced by an equal number of calls to UnpinTexture().
|
|
78
|
+
*
|
|
79
|
+
* Once in this "pinned" state, the image has all of the same thread restrictions that exist
|
|
80
|
+
* for a natively created gpu image (e.g. SkImage::MakeFromTexture)
|
|
81
|
+
* - all drawing, pinning, unpinning must happen in the same thread as the GrContext.
|
|
82
|
+
*
|
|
83
|
+
* @return true if the image was successfully uploaded and locked into a texture
|
|
84
|
+
*/
|
|
85
|
+
bool PinAsTexture(GrRecordingContext*, SkImage*);
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* The balancing call to a successful invocation of PinAsTexture. When a balanced
|
|
89
|
+
* number of calls have been made, then the "pinned" texture is free to be purged, etc. This
|
|
90
|
+
* also means that a subsequent "pin" call will look at the original content again, and if
|
|
91
|
+
* its uniqueID/generationID has changed, then a newer texture will be uploaded/pinned.
|
|
92
|
+
*
|
|
93
|
+
* Only compatible with SkImages created from SkImages::PinnableRasterFromBitmap.
|
|
94
|
+
*
|
|
95
|
+
* The context passed to unpin must match the one passed to pin.
|
|
96
|
+
*/
|
|
97
|
+
void UnpinTexture(GrRecordingContext*, SkImage*);
|
|
98
|
+
|
|
99
|
+
} // namespace skgpu::ganesh
|
|
100
|
+
|
|
101
|
+
#endif
|
|
@@ -9,24 +9,27 @@
|
|
|
9
9
|
#define SkAndroidCodec_DEFINED
|
|
10
10
|
|
|
11
11
|
#include "include/codec/SkCodec.h"
|
|
12
|
-
#include "include/core/SkAlphaType.h"
|
|
13
12
|
#include "include/core/SkColorSpace.h"
|
|
14
|
-
#include "include/core/SkColorType.h"
|
|
15
|
-
#include "include/core/SkEncodedImageFormat.h"
|
|
16
13
|
#include "include/core/SkImageInfo.h"
|
|
17
14
|
#include "include/core/SkRefCnt.h"
|
|
18
15
|
#include "include/core/SkSize.h"
|
|
19
16
|
#include "include/core/SkTypes.h"
|
|
20
17
|
#include "include/private/SkEncodedInfo.h"
|
|
21
|
-
#include "include/private/SkNoncopyable.h"
|
|
18
|
+
#include "include/private/base/SkNoncopyable.h"
|
|
22
19
|
#include "modules/skcms/skcms.h"
|
|
23
20
|
|
|
21
|
+
// TODO(kjlubick, bungeman) Replace these includes with forward declares
|
|
22
|
+
#include "include/codec/SkEncodedImageFormat.h" // IWYU pragma: keep
|
|
23
|
+
#include "include/core/SkAlphaType.h" // IWYU pragma: keep
|
|
24
|
+
#include "include/core/SkColorType.h" // IWYU pragma: keep
|
|
25
|
+
|
|
24
26
|
#include <cstddef>
|
|
25
27
|
#include <memory>
|
|
26
28
|
|
|
27
29
|
class SkData;
|
|
28
30
|
class SkPngChunkReader;
|
|
29
31
|
class SkStream;
|
|
32
|
+
struct SkGainmapInfo;
|
|
30
33
|
struct SkIRect;
|
|
31
34
|
|
|
32
35
|
/**
|
|
@@ -118,10 +121,8 @@ public:
|
|
|
118
121
|
/**
|
|
119
122
|
* @param outputColorType Color type that the client will decode to.
|
|
120
123
|
* @param prefColorSpace Preferred color space to decode to.
|
|
121
|
-
* This may not return |prefColorSpace| for
|
|
122
|
-
*
|
|
123
|
-
* linear sRGB, transfer function must be parametric.
|
|
124
|
-
* (2) Codec Limitations: F16 requires a linear color space.
|
|
124
|
+
* This may not return |prefColorSpace| for
|
|
125
|
+
* specific color types.
|
|
125
126
|
*
|
|
126
127
|
* Returns the appropriate color space to decode to.
|
|
127
128
|
*/
|
|
@@ -262,6 +263,23 @@ public:
|
|
|
262
263
|
|
|
263
264
|
SkCodec* codec() const { return fCodec.get(); }
|
|
264
265
|
|
|
266
|
+
/**
|
|
267
|
+
* Retrieve the gainmap for an image.
|
|
268
|
+
*
|
|
269
|
+
* @param outInfo On success, this is populated with the parameters for
|
|
270
|
+
* rendering this gainmap. This parameter must be non-nullptr.
|
|
271
|
+
*
|
|
272
|
+
* @param outGainmapImageStream On success, this is populated with a stream from which the
|
|
273
|
+
* gainmap image may be decoded. This parameter is optional, and
|
|
274
|
+
* may be set to nullptr.
|
|
275
|
+
*
|
|
276
|
+
* @return If this has a gainmap image and that gainmap image was
|
|
277
|
+
* successfully extracted then return true. Otherwise return
|
|
278
|
+
* false.
|
|
279
|
+
*/
|
|
280
|
+
bool getAndroidGainmap(SkGainmapInfo* outInfo,
|
|
281
|
+
std::unique_ptr<SkStream>* outGainmapImageStream);
|
|
282
|
+
|
|
265
283
|
protected:
|
|
266
284
|
SkAndroidCodec(SkCodec*);
|
|
267
285
|
|