@shopify/react-native-skia 0.1.192 → 0.1.194
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|