@shopify/react-native-skia 1.5.9 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- package/android/cpp/jni/include/JniSkiaBaseView.h +6 -4
- package/android/cpp/jni/include/JniSkiaDomView.h +6 -4
- package/android/cpp/jni/include/JniSkiaPictureView.h +6 -4
- package/android/cpp/rnskia-android/MainThreadDispatcher.h +5 -0
- package/android/cpp/rnskia-android/OpenGLContext.h +37 -10
- package/android/cpp/rnskia-android/OpenGLWindowContext.cpp +0 -1
- package/android/cpp/rnskia-android/RNSkAndroidView.h +10 -9
- package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.cpp +42 -36
- package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.h +2 -2
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaAHBView.java +113 -0
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaBaseView.java +45 -54
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaBaseViewManager.java +5 -0
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomView.java +2 -2
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaPictureView.java +2 -2
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaSurfaceView.java +42 -0
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaTextureView.java +90 -0
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaViewAPI.java +16 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaDomViewManagerDelegate.java +3 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaDomViewManagerInterface.java +1 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaPictureViewManagerDelegate.java +3 -1
- package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaPictureViewManagerInterface.java +1 -0
- package/cpp/rnskia/RNSkDomView.cpp +0 -20
- package/cpp/rnskia/RNSkDomView.h +0 -2
- package/cpp/rnskia/RNSkPictureView.h +5 -12
- package/cpp/rnskia/RNSkPlatformContext.h +1 -2
- package/cpp/rnskia/RNSkView.h +13 -24
- package/ios/RNSkia-iOS/SkiaCVPixelBufferUtils.mm +4 -8
- package/ios/RNSkia-iOS/SkiaDomViewManager.mm +5 -0
- package/ios/RNSkia-iOS/SkiaPictureView.mm +1 -0
- package/ios/RNSkia-iOS/SkiaPictureViewManager.mm +5 -0
- package/ios/RNSkia-iOS/SkiaUIView.h +1 -0
- package/ios/RNSkia-iOS/SkiaUIView.mm +5 -0
- package/lib/commonjs/skia/types/Image/ColorType.d.ts +21 -0
- package/lib/commonjs/skia/types/Image/ColorType.js +29 -0
- package/lib/commonjs/skia/types/Image/ColorType.js.map +1 -0
- package/lib/commonjs/skia/types/Image/ColorType.web.d.ts +19 -0
- package/lib/commonjs/skia/types/Image/ColorType.web.js +27 -0
- package/lib/commonjs/skia/types/Image/ColorType.web.js.map +1 -0
- package/lib/commonjs/skia/types/Image/ImageFactory.d.ts +1 -19
- package/lib/commonjs/skia/types/Image/ImageFactory.js +1 -21
- package/lib/commonjs/skia/types/Image/ImageFactory.js.map +1 -1
- package/lib/commonjs/skia/types/Image/index.d.ts +1 -0
- package/lib/commonjs/skia/types/Image/index.js +11 -0
- package/lib/commonjs/skia/types/Image/index.js.map +1 -1
- package/lib/commonjs/specs/SkiaDomViewNativeComponent.d.ts +0 -1
- package/lib/commonjs/specs/SkiaDomViewNativeComponent.js.map +1 -1
- package/lib/commonjs/specs/SkiaPictureViewNativeComponent.d.ts +1 -0
- package/lib/commonjs/specs/SkiaPictureViewNativeComponent.js.map +1 -1
- package/lib/commonjs/views/SkiaDomView.js +3 -1
- package/lib/commonjs/views/SkiaDomView.js.map +1 -1
- package/lib/commonjs/views/SkiaPictureView.js +5 -1
- package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
- package/lib/commonjs/views/types.d.ts +2 -0
- package/lib/commonjs/views/types.js.map +1 -1
- package/lib/module/skia/types/Image/ColorType.d.ts +21 -0
- package/lib/module/skia/types/Image/ColorType.js +23 -0
- package/lib/module/skia/types/Image/ColorType.js.map +1 -0
- package/lib/module/skia/types/Image/ColorType.web.d.ts +19 -0
- package/lib/module/skia/types/Image/ColorType.web.js +21 -0
- package/lib/module/skia/types/Image/ColorType.web.js.map +1 -0
- package/lib/module/skia/types/Image/ImageFactory.d.ts +1 -19
- package/lib/module/skia/types/Image/ImageFactory.js +0 -20
- package/lib/module/skia/types/Image/ImageFactory.js.map +1 -1
- package/lib/module/skia/types/Image/index.d.ts +1 -0
- package/lib/module/skia/types/Image/index.js +1 -0
- package/lib/module/skia/types/Image/index.js.map +1 -1
- package/lib/module/specs/SkiaDomViewNativeComponent.d.ts +0 -1
- package/lib/module/specs/SkiaDomViewNativeComponent.js.map +1 -1
- package/lib/module/specs/SkiaPictureViewNativeComponent.d.ts +1 -0
- package/lib/module/specs/SkiaPictureViewNativeComponent.js.map +1 -1
- package/lib/module/views/SkiaDomView.js +3 -1
- package/lib/module/views/SkiaDomView.js.map +1 -1
- package/lib/module/views/SkiaPictureView.js +5 -1
- package/lib/module/views/SkiaPictureView.js.map +1 -1
- package/lib/module/views/types.d.ts +2 -0
- package/lib/module/views/types.js.map +1 -1
- package/lib/typescript/lib/commonjs/skia/types/Image/ColorType.d.ts +2 -0
- package/lib/typescript/lib/commonjs/skia/types/Image/ColorType.web.d.ts +2 -0
- package/lib/typescript/lib/commonjs/skia/types/Image/ImageFactory.d.ts +0 -1
- package/lib/typescript/lib/module/skia/types/Image/ColorType.d.ts +1 -0
- package/lib/typescript/lib/module/skia/types/Image/ColorType.web.d.ts +1 -0
- package/lib/typescript/lib/module/skia/types/Image/ImageFactory.d.ts +0 -1
- package/lib/typescript/lib/module/skia/types/Image/index.d.ts +1 -0
- package/lib/typescript/src/skia/types/Image/ColorType.d.ts +21 -0
- package/lib/typescript/src/skia/types/Image/ColorType.web.d.ts +19 -0
- package/lib/typescript/src/skia/types/Image/ImageFactory.d.ts +1 -19
- package/lib/typescript/src/skia/types/Image/index.d.ts +1 -0
- package/lib/typescript/src/specs/SkiaDomViewNativeComponent.d.ts +0 -1
- package/lib/typescript/src/specs/SkiaPictureViewNativeComponent.d.ts +1 -0
- package/lib/typescript/src/views/types.d.ts +2 -0
- package/package.json +1 -1
- package/src/skia/__tests__/Enums.spec.ts +2 -2
- package/src/skia/types/Image/ColorType.ts +21 -0
- package/src/skia/types/Image/ColorType.web.ts +19 -0
- package/src/skia/types/Image/ImageFactory.ts +1 -20
- package/src/skia/types/Image/index.ts +1 -0
- package/src/specs/SkiaDomViewNativeComponent.ts +0 -1
- package/src/specs/SkiaPictureViewNativeComponent.ts +1 -0
- package/src/views/SkiaDomView.tsx +2 -1
- package/src/views/SkiaPictureView.tsx +4 -1
- package/src/views/types.ts +3 -0
@@ -0,0 +1,42 @@
|
|
1
|
+
package com.shopify.reactnative.skia;
|
2
|
+
|
3
|
+
import android.annotation.SuppressLint;
|
4
|
+
import android.content.Context;
|
5
|
+
import android.view.SurfaceHolder;
|
6
|
+
import android.view.SurfaceView;
|
7
|
+
import androidx.annotation.NonNull;
|
8
|
+
|
9
|
+
@SuppressLint("ViewConstructor")
|
10
|
+
public class SkiaSurfaceView extends SurfaceView implements SurfaceHolder.Callback {
|
11
|
+
|
12
|
+
SkiaViewAPI mApi;
|
13
|
+
boolean mDebug;
|
14
|
+
|
15
|
+
public SkiaSurfaceView(Context context, SkiaViewAPI api, boolean debug) {
|
16
|
+
super(context);
|
17
|
+
mApi = api;
|
18
|
+
mDebug = debug;
|
19
|
+
getHolder().addCallback(this);
|
20
|
+
}
|
21
|
+
|
22
|
+
@Override
|
23
|
+
protected void onDetachedFromWindow() {
|
24
|
+
super.onDetachedFromWindow();
|
25
|
+
mApi.onSurfaceDestroyed();
|
26
|
+
}
|
27
|
+
|
28
|
+
@Override
|
29
|
+
public void surfaceCreated(@NonNull SurfaceHolder holder) {
|
30
|
+
mApi.onSurfaceCreated(holder.getSurface(), getWidth(), getHeight());
|
31
|
+
}
|
32
|
+
|
33
|
+
@Override
|
34
|
+
public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) {
|
35
|
+
mApi.onSurfaceChanged(holder.getSurface(), getWidth(), getHeight());
|
36
|
+
}
|
37
|
+
|
38
|
+
@Override
|
39
|
+
public void surfaceDestroyed(@NonNull SurfaceHolder holder) {
|
40
|
+
mApi.onSurfaceDestroyed();
|
41
|
+
}
|
42
|
+
}
|
@@ -0,0 +1,90 @@
|
|
1
|
+
package com.shopify.reactnative.skia;
|
2
|
+
|
3
|
+
import android.annotation.SuppressLint;
|
4
|
+
import android.content.Context;
|
5
|
+
import android.graphics.SurfaceTexture;
|
6
|
+
import android.util.Log;
|
7
|
+
import android.view.Surface;
|
8
|
+
import android.view.TextureView;
|
9
|
+
import androidx.annotation.NonNull;
|
10
|
+
|
11
|
+
@SuppressLint("ViewConstructor")
|
12
|
+
public class SkiaTextureView extends TextureView implements TextureView.SurfaceTextureListener {
|
13
|
+
|
14
|
+
private String tag = "SkiaTextureView";
|
15
|
+
|
16
|
+
SkiaViewAPI mApi;
|
17
|
+
boolean mDebug;
|
18
|
+
boolean pristine = true;
|
19
|
+
|
20
|
+
public boolean isDropped = false;
|
21
|
+
|
22
|
+
public SkiaTextureView(Context context, SkiaViewAPI api, boolean debug) {
|
23
|
+
super(context);
|
24
|
+
mApi = api;
|
25
|
+
mDebug = debug;
|
26
|
+
setOpaque(false);
|
27
|
+
setSurfaceTextureListener(this);
|
28
|
+
}
|
29
|
+
|
30
|
+
public void createSurfaceTexture() {
|
31
|
+
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
|
32
|
+
Log.i(tag, "Create SurfaceTexture");
|
33
|
+
SurfaceTexture surfaceTexture = new SurfaceTexture(false);
|
34
|
+
setSurfaceTexture(surfaceTexture);
|
35
|
+
onSurfaceTextureAvailable(surfaceTexture, getWidth(), getHeight());
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
private void reCreateSurfaceTexture() {
|
40
|
+
boolean surfaceIsAlreadyAvailable = getSurfaceTexture() != null;
|
41
|
+
if (surfaceIsAlreadyAvailable) {
|
42
|
+
createSurfaceTexture();
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
@Override
|
47
|
+
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
|
48
|
+
super.onLayout(changed, left, top, right, bottom);
|
49
|
+
}
|
50
|
+
|
51
|
+
@Override
|
52
|
+
public void onSurfaceTextureAvailable(@NonNull SurfaceTexture surfaceTexture, int width, int height) {
|
53
|
+
Log.i(tag, "onSurfaceTextureAvailable: " + width + "x" + height);
|
54
|
+
mApi.onSurfaceTextureCreated(surfaceTexture, width, height);
|
55
|
+
}
|
56
|
+
|
57
|
+
@Override
|
58
|
+
public void onSurfaceTextureSizeChanged(@NonNull SurfaceTexture surfaceTexture, int width, int height) {
|
59
|
+
Log.i(tag, "onSurfaceTextureSizeChanged: " + width + "x" + height);
|
60
|
+
if (isDropped) {
|
61
|
+
return;
|
62
|
+
}
|
63
|
+
mApi.onSurfaceTextureCreated(surfaceTexture, width, height);
|
64
|
+
}
|
65
|
+
|
66
|
+
@Override
|
67
|
+
public boolean onSurfaceTextureDestroyed(@NonNull SurfaceTexture surfaceTexture) {
|
68
|
+
mApi.onSurfaceDestroyed();
|
69
|
+
// Because of React Native Screens (which dettach the view), we always keep the surface alive.
|
70
|
+
// If not, Texture view will recreate the texture surface by itself and
|
71
|
+
// we will lose the fast first time to frame.
|
72
|
+
// We only delete the surface when the view is dropped (destroySurface invoked by SkiaBaseViewManager);
|
73
|
+
if (!isDropped) {
|
74
|
+
reCreateSurfaceTexture();
|
75
|
+
}
|
76
|
+
return false;
|
77
|
+
}
|
78
|
+
|
79
|
+
private long _prevTimestamp = 0;
|
80
|
+
@Override
|
81
|
+
public void onSurfaceTextureUpdated(@NonNull SurfaceTexture surface) {
|
82
|
+
if (!mDebug) {
|
83
|
+
return;
|
84
|
+
}
|
85
|
+
long timestamp = surface.getTimestamp();
|
86
|
+
long frameDuration = (timestamp - _prevTimestamp)/1000000;
|
87
|
+
Log.i("SkiaTextureView", "onSurfaceTextureUpdated "+frameDuration+"ms");
|
88
|
+
_prevTimestamp = timestamp;
|
89
|
+
}
|
90
|
+
}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
package com.shopify.reactnative.skia;
|
2
|
+
|
3
|
+
import android.graphics.SurfaceTexture;
|
4
|
+
import android.view.Surface;
|
5
|
+
|
6
|
+
public interface SkiaViewAPI {
|
7
|
+
void onSurfaceCreated(Surface surface, int width, int height);
|
8
|
+
|
9
|
+
void onSurfaceChanged(Surface surface, int width, int height);
|
10
|
+
|
11
|
+
void onSurfaceTextureCreated(SurfaceTexture surface, int width, int height);
|
12
|
+
|
13
|
+
void onSurfaceTextureChanged(SurfaceTexture surface, int width, int height);
|
14
|
+
|
15
|
+
void onSurfaceDestroyed();
|
16
|
+
}
|
package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaDomViewManagerDelegate.java
CHANGED
@@ -21,6 +21,9 @@ public class SkiaDomViewManagerDelegate<T extends View, U extends BaseViewManage
|
|
21
21
|
@Override
|
22
22
|
public void setProperty(T view, String propName, @Nullable Object value) {
|
23
23
|
switch (propName) {
|
24
|
+
case "opaque":
|
25
|
+
mViewManager.setOpaque(view, value != null && (boolean) value);
|
26
|
+
break;
|
24
27
|
case "debug":
|
25
28
|
mViewManager.setDebug(view, value != null && (boolean) value);
|
26
29
|
break;
|
package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaPictureViewManagerDelegate.java
CHANGED
@@ -24,8 +24,10 @@ public class SkiaPictureViewManagerDelegate<T extends View, U extends BaseViewMa
|
|
24
24
|
case "mode":
|
25
25
|
mViewManager.setMode(view, value == null ? null : (String) value);
|
26
26
|
break;
|
27
|
+
case "opaque":
|
28
|
+
mViewManager.setOpaque(view, value != null && (boolean) value);
|
27
29
|
case "debug":
|
28
|
-
mViewManager.setDebug(view, value
|
30
|
+
mViewManager.setDebug(view, value != null && (boolean) value);
|
29
31
|
break;
|
30
32
|
default:
|
31
33
|
super.setProperty(view, propName, value);
|
@@ -26,26 +26,6 @@ RNSkDomRenderer::~RNSkDomRenderer() {
|
|
26
26
|
}
|
27
27
|
}
|
28
28
|
|
29
|
-
bool RNSkDomRenderer::tryRender(
|
30
|
-
std::shared_ptr<RNSkCanvasProvider> canvasProvider) {
|
31
|
-
|
32
|
-
// We render on the main thread
|
33
|
-
if (_renderLock->try_lock()) {
|
34
|
-
bool result = false;
|
35
|
-
// If we have a Dom Node we can render directly on the main thread
|
36
|
-
if (_root != nullptr) {
|
37
|
-
result = canvasProvider->renderToCanvas(std::bind(
|
38
|
-
&RNSkDomRenderer::renderCanvas, this, std::placeholders::_1,
|
39
|
-
canvasProvider->getScaledWidth(), canvasProvider->getScaledHeight()));
|
40
|
-
}
|
41
|
-
|
42
|
-
_renderLock->unlock();
|
43
|
-
return result;
|
44
|
-
} else {
|
45
|
-
return false;
|
46
|
-
}
|
47
|
-
}
|
48
|
-
|
49
29
|
void RNSkDomRenderer::renderImmediate(
|
50
30
|
std::shared_ptr<RNSkCanvasProvider> canvasProvider) {
|
51
31
|
auto prevDebugOverlay = getShowDebugOverlays();
|
package/cpp/rnskia/RNSkDomView.h
CHANGED
@@ -40,11 +40,7 @@ class RNSkPictureRenderer
|
|
40
40
|
public:
|
41
41
|
RNSkPictureRenderer(std::function<void()> requestRedraw,
|
42
42
|
std::shared_ptr<RNSkPlatformContext> context)
|
43
|
-
: RNSkRenderer(requestRedraw), _platformContext(context) {}
|
44
|
-
|
45
|
-
bool tryRender(std::shared_ptr<RNSkCanvasProvider> canvasProvider) override {
|
46
|
-
return performDraw(canvasProvider);
|
47
|
-
}
|
43
|
+
: RNSkRenderer(std::move(requestRedraw)), _platformContext(std::move(context)) {}
|
48
44
|
|
49
45
|
void
|
50
46
|
renderImmediate(std::shared_ptr<RNSkCanvasProvider> canvasProvider) override {
|
@@ -55,31 +51,28 @@ public:
|
|
55
51
|
if (picture == nullptr) {
|
56
52
|
_picture = nullptr;
|
57
53
|
} else {
|
58
|
-
_picture = std::dynamic_pointer_cast<JsiSkPicture>(picture);
|
54
|
+
_picture = std::dynamic_pointer_cast<JsiSkPicture>(picture)->getObject();
|
59
55
|
}
|
60
56
|
_requestRedraw();
|
61
57
|
}
|
62
58
|
|
63
59
|
private:
|
64
60
|
bool performDraw(std::shared_ptr<RNSkCanvasProvider> canvasProvider) {
|
65
|
-
canvasProvider->renderToCanvas([=](SkCanvas *canvas) {
|
61
|
+
return canvasProvider->renderToCanvas([=](SkCanvas *canvas) {
|
66
62
|
// Make sure to scale correctly
|
67
63
|
auto pd = _platformContext->getPixelDensity();
|
68
64
|
canvas->clear(SK_ColorTRANSPARENT);
|
69
65
|
canvas->save();
|
70
66
|
canvas->scale(pd, pd);
|
71
|
-
|
72
67
|
if (_picture != nullptr) {
|
73
|
-
canvas->drawPicture(_picture
|
68
|
+
canvas->drawPicture(_picture);
|
74
69
|
}
|
75
|
-
|
76
70
|
canvas->restore();
|
77
71
|
});
|
78
|
-
return true;
|
79
72
|
}
|
80
73
|
|
81
74
|
std::shared_ptr<RNSkPlatformContext> _platformContext;
|
82
|
-
|
75
|
+
sk_sp<SkPicture> _picture;
|
83
76
|
};
|
84
77
|
|
85
78
|
class RNSkPictureView : public RNSkView {
|
package/cpp/rnskia/RNSkView.h
CHANGED
@@ -52,33 +52,15 @@ protected:
|
|
52
52
|
class RNSkRenderer {
|
53
53
|
public:
|
54
54
|
explicit RNSkRenderer(std::function<void()> requestRedraw)
|
55
|
-
: _requestRedraw(requestRedraw) {}
|
56
|
-
|
57
|
-
/**
|
58
|
-
Tries to render the current set of drawing operations. If we're busy we'll
|
59
|
-
return false so that the calling RNSkBaseDrawView can request a new render
|
60
|
-
next frame. The tryRender method is typically called on each frame if there
|
61
|
-
are any redraw requests. The method will be called from the main thread, so
|
62
|
-
the implementor must make sure any thread requirements are met before
|
63
|
-
rendering. This method will also allow the rendering to be dispatched to
|
64
|
-
another thread.
|
65
|
-
*/
|
66
|
-
virtual bool
|
67
|
-
tryRender(std::shared_ptr<RNSkCanvasProvider> canvasProvider) = 0;
|
55
|
+
: _requestRedraw(std::move(requestRedraw)), _showDebugOverlays(false) {}
|
68
56
|
|
69
|
-
/**
|
70
|
-
Renders directly to the canvas in the canvas provider. This method is called
|
71
|
-
from a Javascript call to render a snapshot of the SkiaView to an image, and
|
72
|
-
can therefore run outside the tryRender loop and directly in the javascript
|
73
|
-
thread.
|
74
|
-
*/
|
75
57
|
virtual void
|
76
58
|
renderImmediate(std::shared_ptr<RNSkCanvasProvider> canvasProvider) = 0;
|
77
59
|
|
78
60
|
void setShowDebugOverlays(bool showDebugOverlays) {
|
79
61
|
_showDebugOverlays = showDebugOverlays;
|
80
62
|
}
|
81
|
-
bool getShowDebugOverlays() { return _showDebugOverlays; }
|
63
|
+
bool getShowDebugOverlays() const { return _showDebugOverlays; }
|
82
64
|
|
83
65
|
protected:
|
84
66
|
std::function<void()> _requestRedraw;
|
@@ -173,10 +155,17 @@ public:
|
|
173
155
|
void requestRedraw() {
|
174
156
|
if (!_redrawRequested) {
|
175
157
|
_redrawRequested = true;
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
158
|
+
// Capture a weak pointer to this
|
159
|
+
auto weakThis = std::weak_ptr<RNSkView>(shared_from_this());
|
160
|
+
|
161
|
+
_platformContext->runOnMainThread([weakThis]() {
|
162
|
+
// Try to lock the weak pointer
|
163
|
+
if (auto strongThis = weakThis.lock()) {
|
164
|
+
// Only proceed if the object still exists
|
165
|
+
if (strongThis->_renderer && strongThis->_redrawRequested) {
|
166
|
+
strongThis->_renderer->renderImmediate(strongThis->_canvasProvider);
|
167
|
+
strongThis->_redrawRequested = false;
|
168
|
+
}
|
180
169
|
}
|
181
170
|
});
|
182
171
|
}
|
@@ -23,16 +23,12 @@
|
|
23
23
|
#include <TargetConditionals.h>
|
24
24
|
#if TARGET_RT_BIG_ENDIAN
|
25
25
|
#define FourCC2Str(fourcc) \
|
26
|
-
(const char[])
|
27
|
-
|
28
|
-
*(((char *)&fourcc) + 3), 0 \
|
29
|
-
}
|
26
|
+
(const char[]){*((char *)&fourcc), *(((char *)&fourcc) + 1), \
|
27
|
+
*(((char *)&fourcc) + 2), *(((char *)&fourcc) + 3), 0}
|
30
28
|
#else
|
31
29
|
#define FourCC2Str(fourcc) \
|
32
|
-
(const char[])
|
33
|
-
|
34
|
-
*(((char *)&fourcc) + 1), *(((char *)&fourcc) + 0), 0 \
|
35
|
-
}
|
30
|
+
(const char[]){*(((char *)&fourcc) + 3), *(((char *)&fourcc) + 2), \
|
31
|
+
*(((char *)&fourcc) + 1), *(((char *)&fourcc) + 0), 0}
|
36
32
|
#endif
|
37
33
|
|
38
34
|
// pragma MARK: TextureHolder
|
@@ -31,6 +31,11 @@ RCT_CUSTOM_VIEW_PROPERTY(debug, BOOL, SkiaUIView) {
|
|
31
31
|
[(SkiaUIView *)view setDebugMode:debug];
|
32
32
|
}
|
33
33
|
|
34
|
+
RCT_CUSTOM_VIEW_PROPERTY(opaque, BOOL, SkiaUIView) {
|
35
|
+
bool debug = json != NULL ? [RCTConvert BOOL:json] : false;
|
36
|
+
[(SkiaUIView *)view setOpaque:debug];
|
37
|
+
}
|
38
|
+
|
34
39
|
- (UIView *)view {
|
35
40
|
auto skManager = [[self skiaManager] skManager];
|
36
41
|
// Pass SkManager as a raw pointer to avoid circular dependenciesr
|
@@ -31,6 +31,11 @@ RCT_CUSTOM_VIEW_PROPERTY(debug, BOOL, SkiaUIView) {
|
|
31
31
|
[(SkiaUIView *)view setDebugMode:debug];
|
32
32
|
}
|
33
33
|
|
34
|
+
RCT_CUSTOM_VIEW_PROPERTY(opaque, BOOL, SkiaUIView) {
|
35
|
+
bool opaque = json != NULL ? [RCTConvert BOOL:json] : false;
|
36
|
+
[(SkiaUIView *)view setOpaque:opaque];
|
37
|
+
}
|
38
|
+
|
34
39
|
- (UIView *)view {
|
35
40
|
auto skManager = [[self skiaManager] skManager];
|
36
41
|
// Pass SkManager as a raw pointer to avoid circular dependenciesr
|
@@ -15,6 +15,7 @@
|
|
15
15
|
std::shared_ptr<RNSkia::RNSkPlatformContext>)>
|
16
16
|
_factory;
|
17
17
|
bool _debugMode;
|
18
|
+
bool _opaque;
|
18
19
|
size_t _nativeId;
|
19
20
|
}
|
20
21
|
|
@@ -150,6 +151,10 @@
|
|
150
151
|
}
|
151
152
|
}
|
152
153
|
|
154
|
+
- (void)setOpaque:(bool)opaque {
|
155
|
+
_opaque = opaque;
|
156
|
+
}
|
157
|
+
|
153
158
|
- (void)setNativeId:(size_t)nativeId {
|
154
159
|
_nativeId = nativeId;
|
155
160
|
|
@@ -0,0 +1,21 @@
|
|
1
|
+
export declare enum ColorType {
|
2
|
+
Unknown = 0,// uninitialized
|
3
|
+
Alpha_8 = 1,// pixel with alpha in 8-bit byte
|
4
|
+
RGB_565 = 2,// pixel with 5 bits red, 6 bits green, 5 bits blue, in 16-bit word
|
5
|
+
ARGB_4444 = 3,// pixel with 4 bits for alpha, red, green, blue; in 16-bit word
|
6
|
+
RGBA_8888 = 4,// pixel with 8 bits for red, green, blue, alpha; in 32-bit word
|
7
|
+
RGB_888x = 5,// pixel with 8 bits each for red, green, blue; in 32-bit word
|
8
|
+
BGRA_8888 = 6,// pixel with 8 bits for blue, green, red, alpha; in 32-bit word
|
9
|
+
RGBA_1010102 = 7,// 10 bits for red, green, blue; 2 bits for alpha; in 32-bit word
|
10
|
+
BGRA_1010102 = 8,// 10 bits for blue, green, red; 2 bits for alpha; in 32-bit word
|
11
|
+
RGB_101010x = 9,// pixel with 10 bits each for red, green, blue; in 32-bit word
|
12
|
+
BGR_101010x = 10,// pixel with 10 bits each for blue, green, red; in 32-bit word
|
13
|
+
BGR_101010x_XR = 11,// pixel with 10 bits each for blue, green, red; in 32-bit word, extended range
|
14
|
+
BGRA_10101010_XR = 12,// pixel with 10 bits each for blue, green, red, alpha; in 64-bit word, extended range
|
15
|
+
RGBA_10x6 = 13,// pixel with 10 used bits (most significant) followed by 6 unused
|
16
|
+
Gray_8 = 14,// pixel with grayscale level in 8-bit byte
|
17
|
+
RGBA_F16Norm = 15,// pixel with half floats in [0,1] for red, green, blue, alpha; in 64-bit word
|
18
|
+
RGBA_F16 = 16,// pixel with half floats for red, green, blue, alpha; in 64-bit word
|
19
|
+
RGB_F16F16F16x = 17,// pixel with half floats for red, green, blue; in 64-bit word
|
20
|
+
RGBA_F32 = 18
|
21
|
+
}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.ColorType = void 0;
|
7
|
+
let ColorType = exports.ColorType = /*#__PURE__*/function (ColorType) {
|
8
|
+
ColorType[ColorType["Unknown"] = 0] = "Unknown";
|
9
|
+
ColorType[ColorType["Alpha_8"] = 1] = "Alpha_8";
|
10
|
+
ColorType[ColorType["RGB_565"] = 2] = "RGB_565";
|
11
|
+
ColorType[ColorType["ARGB_4444"] = 3] = "ARGB_4444";
|
12
|
+
ColorType[ColorType["RGBA_8888"] = 4] = "RGBA_8888";
|
13
|
+
ColorType[ColorType["RGB_888x"] = 5] = "RGB_888x";
|
14
|
+
ColorType[ColorType["BGRA_8888"] = 6] = "BGRA_8888";
|
15
|
+
ColorType[ColorType["RGBA_1010102"] = 7] = "RGBA_1010102";
|
16
|
+
ColorType[ColorType["BGRA_1010102"] = 8] = "BGRA_1010102";
|
17
|
+
ColorType[ColorType["RGB_101010x"] = 9] = "RGB_101010x";
|
18
|
+
ColorType[ColorType["BGR_101010x"] = 10] = "BGR_101010x";
|
19
|
+
ColorType[ColorType["BGR_101010x_XR"] = 11] = "BGR_101010x_XR";
|
20
|
+
ColorType[ColorType["BGRA_10101010_XR"] = 12] = "BGRA_10101010_XR";
|
21
|
+
ColorType[ColorType["RGBA_10x6"] = 13] = "RGBA_10x6";
|
22
|
+
ColorType[ColorType["Gray_8"] = 14] = "Gray_8";
|
23
|
+
ColorType[ColorType["RGBA_F16Norm"] = 15] = "RGBA_F16Norm";
|
24
|
+
ColorType[ColorType["RGBA_F16"] = 16] = "RGBA_F16";
|
25
|
+
ColorType[ColorType["RGB_F16F16F16x"] = 17] = "RGB_F16F16F16x";
|
26
|
+
ColorType[ColorType["RGBA_F32"] = 18] = "RGBA_F32";
|
27
|
+
return ColorType;
|
28
|
+
}({}); // pixel using C float for red, green, blue, alpha; in 128-bit word
|
29
|
+
//# sourceMappingURL=ColorType.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["ColorType","exports"],"sources":["ColorType.ts"],"sourcesContent":["export enum ColorType {\n Unknown, // uninitialized\n Alpha_8, // pixel with alpha in 8-bit byte\n RGB_565, // pixel with 5 bits red, 6 bits green, 5 bits blue, in 16-bit word\n ARGB_4444, // pixel with 4 bits for alpha, red, green, blue; in 16-bit word\n RGBA_8888, // pixel with 8 bits for red, green, blue, alpha; in 32-bit word\n RGB_888x, // pixel with 8 bits each for red, green, blue; in 32-bit word\n BGRA_8888, // pixel with 8 bits for blue, green, red, alpha; in 32-bit word\n RGBA_1010102, // 10 bits for red, green, blue; 2 bits for alpha; in 32-bit word\n BGRA_1010102, // 10 bits for blue, green, red; 2 bits for alpha; in 32-bit word\n RGB_101010x, // pixel with 10 bits each for red, green, blue; in 32-bit word\n BGR_101010x, // pixel with 10 bits each for blue, green, red; in 32-bit word\n BGR_101010x_XR, // pixel with 10 bits each for blue, green, red; in 32-bit word, extended range\n BGRA_10101010_XR, // pixel with 10 bits each for blue, green, red, alpha; in 64-bit word, extended range\n RGBA_10x6, // pixel with 10 used bits (most significant) followed by 6 unused\n Gray_8, // pixel with grayscale level in 8-bit byte\n RGBA_F16Norm, // pixel with half floats in [0,1] for red, green, blue, alpha; in 64-bit word\n RGBA_F16, // pixel with half floats for red, green, blue, alpha; in 64-bit word\n RGB_F16F16F16x, // pixel with half floats for red, green, blue; in 64-bit word\n RGBA_F32, // pixel using C float for red, green, blue, alpha; in 128-bit word\n}\n"],"mappings":";;;;;;IAAYA,SAAS,GAAAC,OAAA,CAAAD,SAAA,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA,OAmBT","ignoreList":[]}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
export declare enum ColorTypeCanvasKit {
|
2
|
+
Unknown = 0,// uninitialized
|
3
|
+
Alpha_8 = 1,// pixel with alpha in 8-bit byte
|
4
|
+
RGB_565 = 2,// pixel with 5 bits red, 6 bits green, 5 bits blue, in 16-bit word
|
5
|
+
ARGB_4444 = 3,// pixel with 4 bits for alpha, red, green, blue; in 16-bit word
|
6
|
+
RGBA_8888 = 4,// pixel with 8 bits for red, green, blue, alpha; in 32-bit word
|
7
|
+
RGB_888x = 5,// pixel with 8 bits each for red, green, blue; in 32-bit word
|
8
|
+
BGRA_8888 = 6,// pixel with 8 bits for blue, green, red, alpha; in 32-bit word
|
9
|
+
RGBA_1010102 = 7,// 10 bits for red, green, blue; 2 bits for alpha; in 32-bit word
|
10
|
+
BGRA_1010102 = 8,// 10 bits for blue, green, red; 2 bits for alpha; in 32-bit word
|
11
|
+
RGB_101010x = 9,// pixel with 10 bits each for red, green, blue; in 32-bit word
|
12
|
+
BGR_101010x = 10,// pixel with 10 bits each for blue, green, red; in 32-bit word
|
13
|
+
BGR_101010x_XR = 11,// pixel with 10 bits each for blue, green, red; in 32-bit word, extended range
|
14
|
+
RGBA_10x6 = 12,// pixel with 10 used bits (most significant) followed by 6 unused
|
15
|
+
Gray_8 = 13,// pixel with grayscale level in 8-bit byte
|
16
|
+
RGBA_F16Norm = 14,// pixel with half floats in [0,1] for red, green, blue, alpha; in 64-bit word
|
17
|
+
RGBA_F16 = 15,// pixel with half floats for red, green, blue, alpha; in 64-bit word
|
18
|
+
RGBA_F32 = 16
|
19
|
+
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.ColorTypeCanvasKit = void 0;
|
7
|
+
let ColorTypeCanvasKit = exports.ColorTypeCanvasKit = /*#__PURE__*/function (ColorTypeCanvasKit) {
|
8
|
+
ColorTypeCanvasKit[ColorTypeCanvasKit["Unknown"] = 0] = "Unknown";
|
9
|
+
ColorTypeCanvasKit[ColorTypeCanvasKit["Alpha_8"] = 1] = "Alpha_8";
|
10
|
+
ColorTypeCanvasKit[ColorTypeCanvasKit["RGB_565"] = 2] = "RGB_565";
|
11
|
+
ColorTypeCanvasKit[ColorTypeCanvasKit["ARGB_4444"] = 3] = "ARGB_4444";
|
12
|
+
ColorTypeCanvasKit[ColorTypeCanvasKit["RGBA_8888"] = 4] = "RGBA_8888";
|
13
|
+
ColorTypeCanvasKit[ColorTypeCanvasKit["RGB_888x"] = 5] = "RGB_888x";
|
14
|
+
ColorTypeCanvasKit[ColorTypeCanvasKit["BGRA_8888"] = 6] = "BGRA_8888";
|
15
|
+
ColorTypeCanvasKit[ColorTypeCanvasKit["RGBA_1010102"] = 7] = "RGBA_1010102";
|
16
|
+
ColorTypeCanvasKit[ColorTypeCanvasKit["BGRA_1010102"] = 8] = "BGRA_1010102";
|
17
|
+
ColorTypeCanvasKit[ColorTypeCanvasKit["RGB_101010x"] = 9] = "RGB_101010x";
|
18
|
+
ColorTypeCanvasKit[ColorTypeCanvasKit["BGR_101010x"] = 10] = "BGR_101010x";
|
19
|
+
ColorTypeCanvasKit[ColorTypeCanvasKit["BGR_101010x_XR"] = 11] = "BGR_101010x_XR";
|
20
|
+
ColorTypeCanvasKit[ColorTypeCanvasKit["RGBA_10x6"] = 12] = "RGBA_10x6";
|
21
|
+
ColorTypeCanvasKit[ColorTypeCanvasKit["Gray_8"] = 13] = "Gray_8";
|
22
|
+
ColorTypeCanvasKit[ColorTypeCanvasKit["RGBA_F16Norm"] = 14] = "RGBA_F16Norm";
|
23
|
+
ColorTypeCanvasKit[ColorTypeCanvasKit["RGBA_F16"] = 15] = "RGBA_F16";
|
24
|
+
ColorTypeCanvasKit[ColorTypeCanvasKit["RGBA_F32"] = 16] = "RGBA_F32";
|
25
|
+
return ColorTypeCanvasKit;
|
26
|
+
}({}); // pixel using C float for red, green, blue, alpha; in 128-bit word
|
27
|
+
//# sourceMappingURL=ColorType.web.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["ColorTypeCanvasKit","exports"],"sources":["ColorType.web.ts"],"sourcesContent":["export enum ColorTypeCanvasKit {\n Unknown, // uninitialized\n Alpha_8, // pixel with alpha in 8-bit byte\n RGB_565, // pixel with 5 bits red, 6 bits green, 5 bits blue, in 16-bit word\n ARGB_4444, // pixel with 4 bits for alpha, red, green, blue; in 16-bit word\n RGBA_8888, // pixel with 8 bits for red, green, blue, alpha; in 32-bit word\n RGB_888x, // pixel with 8 bits each for red, green, blue; in 32-bit word\n BGRA_8888, // pixel with 8 bits for blue, green, red, alpha; in 32-bit word\n RGBA_1010102, // 10 bits for red, green, blue; 2 bits for alpha; in 32-bit word\n BGRA_1010102, // 10 bits for blue, green, red; 2 bits for alpha; in 32-bit word\n RGB_101010x, // pixel with 10 bits each for red, green, blue; in 32-bit word\n BGR_101010x, // pixel with 10 bits each for blue, green, red; in 32-bit word\n BGR_101010x_XR, // pixel with 10 bits each for blue, green, red; in 32-bit word, extended range\n RGBA_10x6, // pixel with 10 used bits (most significant) followed by 6 unused\n Gray_8, // pixel with grayscale level in 8-bit byte\n RGBA_F16Norm, // pixel with half floats in [0,1] for red, green, blue, alpha; in 64-bit word\n RGBA_F16, // pixel with half floats for red, green, blue, alpha; in 64-bit word\n RGBA_F32, // pixel using C float for red, green, blue, alpha; in 128-bit word\n}\n"],"mappings":";;;;;;IAAYA,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA,OAiBlB","ignoreList":[]}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import type { SkData } from "../Data";
|
2
2
|
import type { NativeBuffer } from "../NativeBuffer";
|
3
|
+
import type { ColorType } from "./ColorType";
|
3
4
|
import type { SkImage } from "./Image";
|
4
5
|
export declare enum AlphaType {
|
5
6
|
Unknown = 0,
|
@@ -7,25 +8,6 @@ export declare enum AlphaType {
|
|
7
8
|
Premul = 2,
|
8
9
|
Unpremul = 3
|
9
10
|
}
|
10
|
-
export declare enum ColorType {
|
11
|
-
Unknown = 0,// uninitialized
|
12
|
-
Alpha_8 = 1,// pixel with alpha in 8-bit byte
|
13
|
-
RGB_565 = 2,// pixel with 5 bits red, 6 bits green, 5 bits blue, in 16-bit word
|
14
|
-
ARGB_4444 = 3,// pixel with 4 bits for alpha, red, green, blue; in 16-bit word
|
15
|
-
RGBA_8888 = 4,// pixel with 8 bits for red, green, blue, alpha; in 32-bit word
|
16
|
-
RGB_888x = 5,// pixel with 8 bits each for red, green, blue; in 32-bit word
|
17
|
-
BGRA_8888 = 6,// pixel with 8 bits for blue, green, red, alpha; in 32-bit word
|
18
|
-
RGBA_1010102 = 7,// 10 bits for red, green, blue; 2 bits for alpha; in 32-bit word
|
19
|
-
BGRA_1010102 = 8,// 10 bits for blue, green, red; 2 bits for alpha; in 32-bit word
|
20
|
-
RGB_101010x = 9,// pixel with 10 bits each for red, green, blue; in 32-bit word
|
21
|
-
BGR_101010x = 10,// pixel with 10 bits each for blue, green, red; in 32-bit word
|
22
|
-
BGR_101010x_XR = 11,// pixel with 10 bits each for blue, green, red; in 32-bit word, extended range
|
23
|
-
RGBA_10x6 = 12,// pixel with 10 used bits (most significant) followed by 6 unused
|
24
|
-
Gray_8 = 13,// pixel with grayscale level in 8-bit byte
|
25
|
-
RGBA_F16Norm = 14,// pixel with half floats in [0,1] for red, green, blue, alpha; in 64-bit word
|
26
|
-
RGBA_F16 = 15,// pixel with half floats for red, green, blue, alpha; in 64-bit word
|
27
|
-
RGBA_F32 = 16
|
28
|
-
}
|
29
11
|
export interface ImageInfo {
|
30
12
|
alphaType: AlphaType;
|
31
13
|
colorType: ColorType;
|
@@ -3,7 +3,7 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.
|
6
|
+
exports.AlphaType = void 0;
|
7
7
|
let AlphaType = exports.AlphaType = /*#__PURE__*/function (AlphaType) {
|
8
8
|
AlphaType[AlphaType["Unknown"] = 0] = "Unknown";
|
9
9
|
AlphaType[AlphaType["Opaque"] = 1] = "Opaque";
|
@@ -11,24 +11,4 @@ let AlphaType = exports.AlphaType = /*#__PURE__*/function (AlphaType) {
|
|
11
11
|
AlphaType[AlphaType["Unpremul"] = 3] = "Unpremul";
|
12
12
|
return AlphaType;
|
13
13
|
}({});
|
14
|
-
let ColorType = exports.ColorType = /*#__PURE__*/function (ColorType) {
|
15
|
-
ColorType[ColorType["Unknown"] = 0] = "Unknown";
|
16
|
-
ColorType[ColorType["Alpha_8"] = 1] = "Alpha_8";
|
17
|
-
ColorType[ColorType["RGB_565"] = 2] = "RGB_565";
|
18
|
-
ColorType[ColorType["ARGB_4444"] = 3] = "ARGB_4444";
|
19
|
-
ColorType[ColorType["RGBA_8888"] = 4] = "RGBA_8888";
|
20
|
-
ColorType[ColorType["RGB_888x"] = 5] = "RGB_888x";
|
21
|
-
ColorType[ColorType["BGRA_8888"] = 6] = "BGRA_8888";
|
22
|
-
ColorType[ColorType["RGBA_1010102"] = 7] = "RGBA_1010102";
|
23
|
-
ColorType[ColorType["BGRA_1010102"] = 8] = "BGRA_1010102";
|
24
|
-
ColorType[ColorType["RGB_101010x"] = 9] = "RGB_101010x";
|
25
|
-
ColorType[ColorType["BGR_101010x"] = 10] = "BGR_101010x";
|
26
|
-
ColorType[ColorType["BGR_101010x_XR"] = 11] = "BGR_101010x_XR";
|
27
|
-
ColorType[ColorType["RGBA_10x6"] = 12] = "RGBA_10x6";
|
28
|
-
ColorType[ColorType["Gray_8"] = 13] = "Gray_8";
|
29
|
-
ColorType[ColorType["RGBA_F16Norm"] = 14] = "RGBA_F16Norm";
|
30
|
-
ColorType[ColorType["RGBA_F16"] = 15] = "RGBA_F16";
|
31
|
-
ColorType[ColorType["RGBA_F32"] = 16] = "RGBA_F32";
|
32
|
-
return ColorType;
|
33
|
-
}({}); // pixel using C float for red, green, blue, alpha; in 128-bit word
|
34
14
|
//# sourceMappingURL=ImageFactory.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["AlphaType","exports"
|
1
|
+
{"version":3,"names":["AlphaType","exports"],"sources":["ImageFactory.ts"],"sourcesContent":["import type { SkData } from \"../Data\";\nimport type { NativeBuffer } from \"../NativeBuffer\";\n\nimport type { ColorType } from \"./ColorType\";\nimport type { SkImage } from \"./Image\";\n\nexport enum AlphaType {\n Unknown,\n Opaque,\n Premul,\n Unpremul,\n}\n\nexport interface ImageInfo {\n alphaType: AlphaType;\n // TODO: add support for color space\n // colorSpace: ColorSpace;\n colorType: ColorType;\n height: number;\n width: number;\n}\n\nexport interface ImageFactory {\n /**\n * Return an Image backed by the encoded data, but attempt to defer decoding until the image\n * is actually used/drawn. This deferral allows the system to cache the result, either on the\n * CPU or on the GPU, depending on where the image is drawn.\n * This decoding uses the codecs that have been compiled into CanvasKit. If the bytes are\n * invalid (or an unrecognized codec), null will be returned. See Image.h for more details.\n * @param data - Data object with bytes of data\n * @returns If the encoded format is not supported, or subset is outside of the bounds of the decoded\n * image, nullptr is returned.\n */\n MakeImageFromEncoded: (encoded: SkData) => SkImage | null;\n\n /**\n * Return an Image backed by a given native buffer.\n * The native buffer must be a valid owning reference.\n *\n * For instance, this API is used by\n * [react-native-vision-camera](https://github.com/mrousavy/react-native-vision-camera)\n * to render a Skia Camera preview.\n *\n * - On Android; This is an `AHardwareBuffer*`\n * - On iOS, this is a `CVPixelBufferRef`\n * @param nativeBuffer A strong `uintptr_t` pointer to the native buffer\n * @throws Throws an error if the Image could not be created, for example when the given\n * native buffer is invalid.\n */\n MakeImageFromNativeBuffer: (nativeBuffer: NativeBuffer) => SkImage;\n\n /**\n * Returns an image that will be a screenshot of the view represented by\n * the view tag\n * @param viewTag - The tag of the view to make an image from.\n * @returns Returns a valid SkImage, if the view tag is invalid, nullptr is returned.\n */\n MakeImageFromViewTag: (viewTag: number) => Promise<SkImage | null>;\n\n /**\n * Returns an image with the given pixel data and format.\n * Note that we will always make a copy of the pixel data, because of inconsistencies in\n * behavior between GPU and CPU (i.e. the pixel data will be turned into a GPU texture and\n * not modifiable after creation).\n *\n * @param info\n * @param data - bytes representing the pixel data.\n * @param bytesPerRow\n */\n MakeImage(info: ImageInfo, data: SkData, bytesPerRow: number): SkImage | null;\n}\n"],"mappings":";;;;;;IAMYA,SAAS,GAAAC,OAAA,CAAAD,SAAA,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA","ignoreList":[]}
|