Skip to content

Commit eb37899

Browse files
authored
Expo matrix values (#914)
1 parent fb3b69c commit eb37899

File tree

5 files changed

+28
-13
lines changed

5 files changed

+28
-13
lines changed

example/src/Examples/API/Transform.tsx

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -126,19 +126,19 @@ export const Transform = () => {
126126
const pers0 = 0;
127127
const pers1 = 0;
128128
const pers2 = 1;
129-
canvas.concat(
130-
Skia.Matrix([
131-
scaleX,
132-
skewX,
133-
transX,
134-
skewY,
135-
scaleY,
136-
transY,
137-
pers0,
138-
pers1,
139-
pers2,
140-
])
141-
);
129+
const m = Skia.Matrix([
130+
scaleX,
131+
skewX,
132+
transX,
133+
skewY,
134+
scaleY,
135+
transY,
136+
pers0,
137+
pers1,
138+
pers2,
139+
]);
140+
//console.log({ matrix: m.get() });
141+
canvas.concat(m);
142142

143143
canvas.drawImageRect(image, imgRect, rect, paint);
144144
canvas.restore();

package/cpp/api/JsiSkMatrix.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,14 @@ class JsiSkMatrix : public JsiSkWrappingSharedPtrHostObject<SkMatrix> {
8888
return jsi::Value::undefined();
8989
}
9090

91+
JSI_HOST_FUNCTION(get) {
92+
auto values = jsi::Array(runtime, 9);
93+
for (auto i = 0; i < 9; i++) {
94+
values.setValueAtIndex(runtime, i, getObject()->get(i));
95+
}
96+
return values;
97+
}
98+
9199
JSI_EXPORT_PROPERTY_GETTERS(JSI_EXPORT_PROP_GET(JsiSkMatrix, __typename__))
92100

93101
JSI_EXPORT_FUNCTIONS(
@@ -97,6 +105,7 @@ class JsiSkMatrix : public JsiSkWrappingSharedPtrHostObject<SkMatrix> {
97105
JSI_EXPORT_FUNC(JsiSkMatrix, skew),
98106
JSI_EXPORT_FUNC(JsiSkMatrix, rotate),
99107
JSI_EXPORT_FUNC(JsiSkMatrix, identity),
108+
JSI_EXPORT_FUNC(JsiSkMatrix, get),
100109
)
101110

102111
/**

package/src/renderer/__tests__/Transform.spec.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ describe("Renderer", () => {
2929
matrix.translate(origin.x, origin.y);
3030
matrix.scale(0.5);
3131
matrix.translate(-origin.x, -origin.y);
32+
expect(matrix.get()).toStrictEqual([0.5, 0, 192, 0, 0.5, 192, 0, 0, 1]);
3233
const surface = drawOnNode(
3334
<Group matrix={matrix}>
3435
<Rect x={0} y={0} width={size} height={size} color="lightblue" />

package/src/skia/types/Matrix.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export interface SkMatrix extends SkJSIInstance<"Matrix"> {
2222
skew: (x: number, y: number) => void;
2323
rotate: (theta: number) => void;
2424
identity: () => void;
25+
get: () => number[];
2526
}
2627

2728
type Transform2dName =

package/src/skia/web/JsiSkMatrix.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,8 @@ export class JsiSkMatrix
5757
identity() {
5858
this.ref.set(this.CanvasKit.Matrix.identity());
5959
}
60+
61+
get() {
62+
return Array.from(this.ref);
63+
}
6064
}

0 commit comments

Comments
 (0)