@shopify/react-native-skia 0.1.231 → 0.1.232
Sign up to get free protection for your applications and to get access to all the features.
- package/cpp/rnskia/dom/props/FontProp.h +2 -7
- package/lib/commonjs/dom/nodes/drawings/Text.js +1 -11
- package/lib/commonjs/dom/nodes/drawings/Text.js.map +1 -1
- package/lib/commonjs/dom/types/Drawings.d.ts +1 -1
- package/lib/commonjs/dom/types/Drawings.js.map +1 -1
- package/lib/commonjs/skia/types/Matrix4.d.ts +5 -0
- package/lib/commonjs/skia/types/Matrix4.js +8 -3
- package/lib/commonjs/skia/types/Matrix4.js.map +1 -1
- package/lib/commonjs/skia/types/Paragraph/Paragraph.d.ts +2 -2
- package/lib/commonjs/skia/types/Paragraph/Paragraph.js.map +1 -1
- package/lib/commonjs/skia/types/Paragraph/ParagraphStyle.d.ts +6 -6
- package/lib/commonjs/skia/types/Paragraph/ParagraphStyle.js +25 -25
- package/lib/commonjs/skia/types/Paragraph/ParagraphStyle.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkParagraphStyle.js +1 -1
- package/lib/commonjs/skia/web/JsiSkParagraphStyle.js.map +1 -1
- package/lib/commonjs/web/LoadSkiaWeb.js +4 -1
- package/lib/commonjs/web/LoadSkiaWeb.js.map +1 -1
- package/lib/module/dom/nodes/drawings/Text.js +1 -11
- package/lib/module/dom/nodes/drawings/Text.js.map +1 -1
- package/lib/module/dom/types/Drawings.d.ts +1 -1
- package/lib/module/dom/types/Drawings.js.map +1 -1
- package/lib/module/skia/types/Matrix4.d.ts +5 -0
- package/lib/module/skia/types/Matrix4.js +6 -4
- package/lib/module/skia/types/Matrix4.js.map +1 -1
- package/lib/module/skia/types/Paragraph/Paragraph.d.ts +2 -2
- package/lib/module/skia/types/Paragraph/Paragraph.js.map +1 -1
- package/lib/module/skia/types/Paragraph/ParagraphStyle.d.ts +6 -6
- package/lib/module/skia/types/Paragraph/ParagraphStyle.js +21 -21
- package/lib/module/skia/types/Paragraph/ParagraphStyle.js.map +1 -1
- package/lib/module/skia/web/JsiSkParagraphStyle.js +2 -2
- package/lib/module/skia/web/JsiSkParagraphStyle.js.map +1 -1
- package/lib/module/web/LoadSkiaWeb.js +5 -1
- package/lib/module/web/LoadSkiaWeb.js.map +1 -1
- package/lib/typescript/src/dom/types/Drawings.d.ts +1 -1
- package/lib/typescript/src/skia/types/Matrix4.d.ts +5 -0
- package/lib/typescript/src/skia/types/Paragraph/Paragraph.d.ts +2 -2
- package/lib/typescript/src/skia/types/Paragraph/ParagraphStyle.d.ts +6 -6
- package/package.json +1 -1
- package/src/dom/nodes/drawings/Text.ts +1 -14
- package/src/dom/types/Drawings.ts +1 -1
- package/src/skia/types/Matrix4.ts +8 -6
- package/src/skia/types/Paragraph/Paragraph.ts +2 -2
- package/src/skia/types/Paragraph/ParagraphStyle.ts +6 -6
- package/src/skia/web/JsiSkParagraphStyle.ts +2 -2
- package/src/web/LoadSkiaWeb.tsx +4 -1
@@ -4,6 +4,7 @@ type Point = {
|
|
4
4
|
};
|
5
5
|
type Vec2 = readonly [number, number];
|
6
6
|
type Vec3 = readonly [number, number, number];
|
7
|
+
type Vec4 = readonly [number, number, number, number];
|
7
8
|
export type Matrix3 = readonly [
|
8
9
|
number,
|
9
10
|
number,
|
@@ -51,6 +52,10 @@ export declare const translate: (x: number, y: number, z?: number) => Matrix4;
|
|
51
52
|
* @worklet
|
52
53
|
*/
|
53
54
|
export declare const perspective: (p: number) => Matrix4;
|
55
|
+
/**
|
56
|
+
* @worklet
|
57
|
+
*/
|
58
|
+
export declare const matrixVecMul4: (m: Matrix4, v: Vec4) => Vec4;
|
54
59
|
/**
|
55
60
|
* @worklet
|
56
61
|
*/
|
@@ -57,18 +57,20 @@ const rotatedUnitSinCos = (axisVec, sinAngle, cosAngle) => {
|
|
57
57
|
const t = 1 - c;
|
58
58
|
return [t * x * x + c, t * x * y - s * z, t * x * z + s * y, 0, t * x * y + s * z, t * y * y + c, t * y * z - s * x, 0, t * x * z - s * y, t * y * z + s * x, t * z * z + c, 0, 0, 0, 0, 1];
|
59
59
|
};
|
60
|
+
/**
|
61
|
+
* @worklet
|
62
|
+
*/
|
60
63
|
|
61
|
-
|
64
|
+
|
65
|
+
export const matrixVecMul4 = (m, v) => {
|
62
66
|
"worklet";
|
63
67
|
|
64
|
-
|
65
|
-
return [vx * m[0] + vy * m[4] + vz * m[8] + vw * m[12], vx * m[1] + vy * m[5] + vz * m[9] + vw * m[13], vx * m[2] + vy * m[6] + vz * m[10] + vw * m[14], vx * m[3] + vy * m[7] + vz * m[11] + vw * m[15]];
|
68
|
+
return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3] * v[3], m[4] * v[0] + m[5] * v[1] + m[6] * v[2] + m[7] * v[3], m[8] * v[0] + m[9] * v[1] + m[10] * v[2] + m[11] * v[3], m[12] * v[0] + m[13] * v[1] + m[14] * v[2] + m[15] * v[3]];
|
66
69
|
};
|
67
70
|
/**
|
68
71
|
* @worklet
|
69
72
|
*/
|
70
73
|
|
71
|
-
|
72
74
|
export const mapPoint3d = (m, v) => {
|
73
75
|
"worklet";
|
74
76
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["exhaustiveCheck","a","Error","Matrix4","translate","x","y","z","perspective","p","normalizeVec","vec","length","Math","sqrt","rotatedUnitSinCos","axisVec","sinAngle","cosAngle","c","s","t","matrixVecMul4","m","v","vx","vy","vz","vw","mapPoint3d","r","multiply4","b","result","Array","fill","i","j","skewY","angle","tan","skewX","toMatrix3","rotate","axis","value","sin","cos","pivot","scale","sx","sy","sz","m4","rotateAxis","rotateZ","rotateX","rotateY","processTransform3d","transforms","reduce","acc","val","key","Object","keys","transform","convertToColumnMajor","rowMajorMatrix","colMajorMatrix","size","row","col","convertToAffineMatrix","d","tx","ty"],"sources":["Matrix4.ts"],"sourcesContent":["type Point = { x: number; y: number };\ntype Vec2 = readonly [number, number];\ntype Vec3 = readonly [number, number, number];\ntype Vec4 = readonly [number, number, number, number];\n\nexport type Matrix3 = readonly [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number\n];\n\nexport type Matrix4 = readonly [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number\n];\n\ntype Transform3dName =\n | \"translateX\"\n | \"translateY\"\n | \"translateZ\"\n | \"translate\"\n | \"scale\"\n | \"scaleX\"\n | \"scaleY\"\n | \"skewX\"\n | \"skewY\"\n | \"rotateZ\"\n | \"rotate\"\n | \"perspective\"\n | \"rotateX\"\n | \"rotateY\"\n | \"matrix\";\n\ntype Transformations = {\n [Name in Transform3dName]: Name extends \"matrix\"\n ? Matrix4\n : Name extends \"translate\"\n ? Vec3 | Vec2\n : number;\n};\n\ntype Transform3d =\n | Pick<Transformations, \"translateX\">\n | Pick<Transformations, \"translateY\">\n | Pick<Transformations, \"translateZ\">\n | Pick<Transformations, \"translate\">\n | Pick<Transformations, \"scale\">\n | Pick<Transformations, \"scaleX\">\n | Pick<Transformations, \"scaleY\">\n | Pick<Transformations, \"skewX\">\n | Pick<Transformations, \"skewY\">\n | Pick<Transformations, \"perspective\">\n | Pick<Transformations, \"rotateX\">\n | Pick<Transformations, \"rotateY\">\n | Pick<Transformations, \"rotateZ\">\n | Pick<Transformations, \"rotate\">\n | Pick<Transformations, \"matrix\">;\n\nexport type Transforms3d = Transform3d[];\n\nconst exhaustiveCheck = (a: never): never => {\n \"worklet\";\n throw new Error(`Unexhaustive handling for ${a}`);\n};\n\n/**\n * @worklet\n */\nexport const Matrix4 = (): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const translate = (x: number, y: number, z: number = 0): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const perspective = (p: number): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, -1 / p, 1];\n};\n\nconst normalizeVec = (vec: Vec3): Vec3 => {\n \"worklet\";\n const [x, y, z] = vec;\n const length = Math.sqrt(x * x + y * y + z * z);\n // Check for zero length to avoid division by zero\n if (length === 0) {\n return [0, 0, 0];\n }\n return [x / length, y / length, z / length];\n};\n\nconst rotatedUnitSinCos = (\n axisVec: Vec3,\n sinAngle: number,\n cosAngle: number\n): Matrix4 => {\n \"worklet\";\n const x = axisVec[0];\n const y = axisVec[1];\n const z = axisVec[2];\n const c = cosAngle;\n const s = sinAngle;\n const t = 1 - c;\n return [\n t * x * x + c,\n t * x * y - s * z,\n t * x * z + s * y,\n 0,\n t * x * y + s * z,\n t * y * y + c,\n t * y * z - s * x,\n 0,\n t * x * z - s * y,\n t * y * z + s * x,\n t * z * z + c,\n 0,\n 0,\n 0,\n 0,\n 1,\n ];\n};\n\nconst matrixVecMul4 = (m: Matrix4, v: Vec4) => {\n \"worklet\";\n const [vx, vy, vz, vw] = v;\n return [\n vx * m[0] + vy * m[4] + vz * m[8] + vw * m[12],\n vx * m[1] + vy * m[5] + vz * m[9] + vw * m[13],\n vx * m[2] + vy * m[6] + vz * m[10] + vw * m[14],\n vx * m[3] + vy * m[7] + vz * m[11] + vw * m[15],\n ];\n};\n\n/**\n * @worklet\n */\nexport const mapPoint3d = (m: Matrix4, v: Vec3) => {\n \"worklet\";\n const r = matrixVecMul4(m, [...v, 1]);\n return [r[0] / r[3], r[1] / r[3], r[2] / r[3]] as const;\n};\n\n/**\n * @worklet\n */\nexport const multiply4 = (a: Matrix4, b: Matrix4): Matrix4 => {\n \"worklet\";\n const result = new Array(16).fill(0);\n for (let i = 0; i < 4; i++) {\n for (let j = 0; j < 4; j++) {\n result[i * 4 + j] =\n a[i * 4] * b[j] +\n a[i * 4 + 1] * b[j + 4] +\n a[i * 4 + 2] * b[j + 8] +\n a[i * 4 + 3] * b[j + 12];\n }\n }\n return result as unknown as Matrix4;\n};\n\nconst skewY = (angle: number): Matrix4 => {\n \"worklet\";\n return [1, Math.tan(angle), 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\nconst skewX = (angle: number): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, Math.tan(angle), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const toMatrix3 = (m: Matrix4) => {\n \"worklet\";\n return [m[0], m[1], m[3], m[4], m[5], m[7], m[12], m[13], m[15]];\n};\n\nconst rotate = (axis: Vec3, value: number) => {\n \"worklet\";\n return rotatedUnitSinCos(\n normalizeVec(axis),\n Math.sin(value),\n Math.cos(value)\n );\n};\n\n/**\n * @worklet\n */\nexport const pivot = (m: Matrix4, p: Point) => {\n \"worklet\";\n return multiply4(translate(p.x, p.y), multiply4(m, translate(-p.x, -p.y)));\n};\n\n/**\n * @worklet\n */\nexport const scale = (\n sx: number,\n sy: number,\n sz: number = 1,\n p?: Point\n): Matrix4 => {\n \"worklet\";\n const m4: Matrix4 = [sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1];\n if (p) {\n return pivot(m4, p);\n }\n return m4;\n};\n\nconst rotateAxis = (axis: Vec3, angle: number, p?: Point) => {\n \"worklet\";\n const result = rotate(axis, angle);\n if (p) {\n return pivot(result, p);\n }\n return result;\n};\n\n/**\n * @worklet\n */\nexport const rotateZ = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([0, 0, 1], value, p);\n};\n\n/**\n * @worklet\n */\nexport const rotateX = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([1, 0, 0], value, p);\n};\n\n/**\n * @worklet\n */\nexport const rotateY = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([0, 1, 0], value, p);\n};\n\n/**\n * @worklet\n */\nexport const processTransform3d = (transforms: Transforms3d) => {\n \"worklet\";\n return transforms.reduce((acc, val) => {\n const key = Object.keys(val)[0] as Transform3dName;\n const transform = val as Pick<Transformations, typeof key>;\n if (key === \"translateX\") {\n const value = transform[key];\n return multiply4(acc, translate(value, 0, 0));\n }\n if (key === \"translate\") {\n const [x, y, z = 0] = transform[key];\n return multiply4(acc, translate(x, y, z));\n }\n if (key === \"translateY\") {\n const value = transform[key];\n return multiply4(acc, translate(0, value, 0));\n }\n if (key === \"translateZ\") {\n const value = transform[key];\n return multiply4(acc, translate(0, 0, value));\n }\n if (key === \"scale\") {\n const value = transform[key];\n return multiply4(acc, scale(value, value, 1));\n }\n if (key === \"scaleX\") {\n const value = transform[key];\n return multiply4(acc, scale(value, 1, 1));\n }\n if (key === \"scaleY\") {\n const value = transform[key];\n return multiply4(acc, scale(1, value, 1));\n }\n if (key === \"skewX\") {\n const value = transform[key];\n return multiply4(acc, skewX(value));\n }\n if (key === \"skewY\") {\n const value = transform[key];\n return multiply4(acc, skewY(value));\n }\n if (key === \"rotateX\") {\n const value = transform[key];\n return multiply4(acc, rotate([1, 0, 0], value));\n }\n if (key === \"rotateY\") {\n const value = transform[key];\n return multiply4(acc, rotate([0, 1, 0], value));\n }\n if (key === \"perspective\") {\n const value = transform[key];\n return multiply4(acc, perspective(value));\n }\n if (key === \"rotate\" || key === \"rotateZ\") {\n const value = transform[key];\n return multiply4(acc, rotate([0, 0, 1], value));\n }\n if (key === \"matrix\") {\n const value = transform[key];\n return multiply4(acc, value);\n }\n return exhaustiveCheck(key);\n }, Matrix4());\n};\n\n/**\n * @worklet\n */\nexport const convertToColumnMajor = (rowMajorMatrix: Matrix4) => {\n \"worklet\";\n\n const colMajorMatrix = new Array<number>(16);\n const size = 4;\n for (let row = 0; row < size; row++) {\n for (let col = 0; col < size; col++) {\n colMajorMatrix[col * size + row] = rowMajorMatrix[row * size + col];\n }\n }\n return colMajorMatrix;\n};\n\n/**\n * @worklet\n */\nexport const convertToAffineMatrix = (m4: number[]) => {\n \"worklet\";\n // Extracting the relevant components from the 4x4 matrix\n const a = m4[0]; // Scale X\n const b = m4[1]; // Skew Y\n const c = m4[4]; // Skew X\n const d = m4[5]; // Scale Y\n const tx = m4[12]; // Translate X\n const ty = m4[13]; // Translate Y\n\n // Returning the 6-element affine transformation matrix\n return [a, b, c, d, tx, ty];\n};\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["exhaustiveCheck","a","Error","Matrix4","translate","x","y","z","perspective","p","normalizeVec","vec","length","Math","sqrt","rotatedUnitSinCos","axisVec","sinAngle","cosAngle","c","s","t","matrixVecMul4","m","v","mapPoint3d","r","multiply4","b","result","Array","fill","i","j","skewY","angle","tan","skewX","toMatrix3","rotate","axis","value","sin","cos","pivot","scale","sx","sy","sz","m4","rotateAxis","rotateZ","rotateX","rotateY","processTransform3d","transforms","reduce","acc","val","key","Object","keys","transform","convertToColumnMajor","rowMajorMatrix","colMajorMatrix","size","row","col","convertToAffineMatrix","d","tx","ty"],"sources":["Matrix4.ts"],"sourcesContent":["type Point = { x: number; y: number };\ntype Vec2 = readonly [number, number];\ntype Vec3 = readonly [number, number, number];\ntype Vec4 = readonly [number, number, number, number];\n\nexport type Matrix3 = readonly [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number\n];\n\nexport type Matrix4 = readonly [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number\n];\n\ntype Transform3dName =\n | \"translateX\"\n | \"translateY\"\n | \"translateZ\"\n | \"translate\"\n | \"scale\"\n | \"scaleX\"\n | \"scaleY\"\n | \"skewX\"\n | \"skewY\"\n | \"rotateZ\"\n | \"rotate\"\n | \"perspective\"\n | \"rotateX\"\n | \"rotateY\"\n | \"matrix\";\n\ntype Transformations = {\n [Name in Transform3dName]: Name extends \"matrix\"\n ? Matrix4\n : Name extends \"translate\"\n ? Vec3 | Vec2\n : number;\n};\n\ntype Transform3d =\n | Pick<Transformations, \"translateX\">\n | Pick<Transformations, \"translateY\">\n | Pick<Transformations, \"translateZ\">\n | Pick<Transformations, \"translate\">\n | Pick<Transformations, \"scale\">\n | Pick<Transformations, \"scaleX\">\n | Pick<Transformations, \"scaleY\">\n | Pick<Transformations, \"skewX\">\n | Pick<Transformations, \"skewY\">\n | Pick<Transformations, \"perspective\">\n | Pick<Transformations, \"rotateX\">\n | Pick<Transformations, \"rotateY\">\n | Pick<Transformations, \"rotateZ\">\n | Pick<Transformations, \"rotate\">\n | Pick<Transformations, \"matrix\">;\n\nexport type Transforms3d = Transform3d[];\n\nconst exhaustiveCheck = (a: never): never => {\n \"worklet\";\n throw new Error(`Unexhaustive handling for ${a}`);\n};\n\n/**\n * @worklet\n */\nexport const Matrix4 = (): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const translate = (x: number, y: number, z: number = 0): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const perspective = (p: number): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, -1 / p, 1];\n};\n\nconst normalizeVec = (vec: Vec3): Vec3 => {\n \"worklet\";\n const [x, y, z] = vec;\n const length = Math.sqrt(x * x + y * y + z * z);\n // Check for zero length to avoid division by zero\n if (length === 0) {\n return [0, 0, 0];\n }\n return [x / length, y / length, z / length];\n};\n\nconst rotatedUnitSinCos = (\n axisVec: Vec3,\n sinAngle: number,\n cosAngle: number\n): Matrix4 => {\n \"worklet\";\n const x = axisVec[0];\n const y = axisVec[1];\n const z = axisVec[2];\n const c = cosAngle;\n const s = sinAngle;\n const t = 1 - c;\n return [\n t * x * x + c,\n t * x * y - s * z,\n t * x * z + s * y,\n 0,\n t * x * y + s * z,\n t * y * y + c,\n t * y * z - s * x,\n 0,\n t * x * z - s * y,\n t * y * z + s * x,\n t * z * z + c,\n 0,\n 0,\n 0,\n 0,\n 1,\n ];\n};\n\n/**\n * @worklet\n */\nexport const matrixVecMul4 = (m: Matrix4, v: Vec4): Vec4 => {\n \"worklet\";\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3] * v[3],\n m[4] * v[0] + m[5] * v[1] + m[6] * v[2] + m[7] * v[3],\n m[8] * v[0] + m[9] * v[1] + m[10] * v[2] + m[11] * v[3],\n m[12] * v[0] + m[13] * v[1] + m[14] * v[2] + m[15] * v[3],\n ];\n};\n\n/**\n * @worklet\n */\nexport const mapPoint3d = (m: Matrix4, v: Vec3) => {\n \"worklet\";\n const r = matrixVecMul4(m, [...v, 1]);\n return [r[0] / r[3], r[1] / r[3], r[2] / r[3]] as const;\n};\n\n/**\n * @worklet\n */\nexport const multiply4 = (a: Matrix4, b: Matrix4): Matrix4 => {\n \"worklet\";\n const result = new Array(16).fill(0);\n for (let i = 0; i < 4; i++) {\n for (let j = 0; j < 4; j++) {\n result[i * 4 + j] =\n a[i * 4] * b[j] +\n a[i * 4 + 1] * b[j + 4] +\n a[i * 4 + 2] * b[j + 8] +\n a[i * 4 + 3] * b[j + 12];\n }\n }\n return result as unknown as Matrix4;\n};\n\nconst skewY = (angle: number): Matrix4 => {\n \"worklet\";\n return [1, Math.tan(angle), 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\nconst skewX = (angle: number): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, Math.tan(angle), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const toMatrix3 = (m: Matrix4) => {\n \"worklet\";\n return [m[0], m[1], m[3], m[4], m[5], m[7], m[12], m[13], m[15]];\n};\n\nconst rotate = (axis: Vec3, value: number) => {\n \"worklet\";\n return rotatedUnitSinCos(\n normalizeVec(axis),\n Math.sin(value),\n Math.cos(value)\n );\n};\n\n/**\n * @worklet\n */\nexport const pivot = (m: Matrix4, p: Point) => {\n \"worklet\";\n return multiply4(translate(p.x, p.y), multiply4(m, translate(-p.x, -p.y)));\n};\n\n/**\n * @worklet\n */\nexport const scale = (\n sx: number,\n sy: number,\n sz: number = 1,\n p?: Point\n): Matrix4 => {\n \"worklet\";\n const m4: Matrix4 = [sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1];\n if (p) {\n return pivot(m4, p);\n }\n return m4;\n};\n\nconst rotateAxis = (axis: Vec3, angle: number, p?: Point) => {\n \"worklet\";\n const result = rotate(axis, angle);\n if (p) {\n return pivot(result, p);\n }\n return result;\n};\n\n/**\n * @worklet\n */\nexport const rotateZ = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([0, 0, 1], value, p);\n};\n\n/**\n * @worklet\n */\nexport const rotateX = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([1, 0, 0], value, p);\n};\n\n/**\n * @worklet\n */\nexport const rotateY = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([0, 1, 0], value, p);\n};\n\n/**\n * @worklet\n */\nexport const processTransform3d = (transforms: Transforms3d) => {\n \"worklet\";\n return transforms.reduce((acc, val) => {\n const key = Object.keys(val)[0] as Transform3dName;\n const transform = val as Pick<Transformations, typeof key>;\n if (key === \"translateX\") {\n const value = transform[key];\n return multiply4(acc, translate(value, 0, 0));\n }\n if (key === \"translate\") {\n const [x, y, z = 0] = transform[key];\n return multiply4(acc, translate(x, y, z));\n }\n if (key === \"translateY\") {\n const value = transform[key];\n return multiply4(acc, translate(0, value, 0));\n }\n if (key === \"translateZ\") {\n const value = transform[key];\n return multiply4(acc, translate(0, 0, value));\n }\n if (key === \"scale\") {\n const value = transform[key];\n return multiply4(acc, scale(value, value, 1));\n }\n if (key === \"scaleX\") {\n const value = transform[key];\n return multiply4(acc, scale(value, 1, 1));\n }\n if (key === \"scaleY\") {\n const value = transform[key];\n return multiply4(acc, scale(1, value, 1));\n }\n if (key === \"skewX\") {\n const value = transform[key];\n return multiply4(acc, skewX(value));\n }\n if (key === \"skewY\") {\n const value = transform[key];\n return multiply4(acc, skewY(value));\n }\n if (key === \"rotateX\") {\n const value = transform[key];\n return multiply4(acc, rotate([1, 0, 0], value));\n }\n if (key === \"rotateY\") {\n const value = transform[key];\n return multiply4(acc, rotate([0, 1, 0], value));\n }\n if (key === \"perspective\") {\n const value = transform[key];\n return multiply4(acc, perspective(value));\n }\n if (key === \"rotate\" || key === \"rotateZ\") {\n const value = transform[key];\n return multiply4(acc, rotate([0, 0, 1], value));\n }\n if (key === \"matrix\") {\n const value = transform[key];\n return multiply4(acc, value);\n }\n return exhaustiveCheck(key);\n }, Matrix4());\n};\n\n/**\n * @worklet\n */\nexport const convertToColumnMajor = (rowMajorMatrix: Matrix4) => {\n \"worklet\";\n\n const colMajorMatrix = new Array<number>(16);\n const size = 4;\n for (let row = 0; row < size; row++) {\n for (let col = 0; col < size; col++) {\n colMajorMatrix[col * size + row] = rowMajorMatrix[row * size + col];\n }\n }\n return colMajorMatrix;\n};\n\n/**\n * @worklet\n */\nexport const convertToAffineMatrix = (m4: number[]) => {\n \"worklet\";\n // Extracting the relevant components from the 4x4 matrix\n const a = m4[0]; // Scale X\n const b = m4[1]; // Skew Y\n const c = m4[4]; // Skew X\n const d = m4[5]; // Scale Y\n const tx = m4[12]; // Translate X\n const ty = m4[13]; // Translate Y\n\n // Returning the 6-element affine transformation matrix\n return [a, b, c, d, tx, ty];\n};\n"],"mappings":"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"}
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import type { SkCanvas } from "../Canvas";
|
2
2
|
import type { SkJSIInstance } from "../JsiInstance";
|
3
3
|
import type { SkRect } from "../Rect";
|
4
|
-
import type {
|
4
|
+
import type { TextDirection } from "./ParagraphStyle";
|
5
5
|
export interface SkRectWithDirection {
|
6
6
|
rect: SkRect;
|
7
|
-
direction:
|
7
|
+
direction: TextDirection;
|
8
8
|
}
|
9
9
|
export interface SkParagraph extends SkJSIInstance<"Paragraph"> {
|
10
10
|
/**
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":[],"sources":["Paragraph.ts"],"sourcesContent":["import type { SkCanvas } from \"../Canvas\";\nimport type { SkJSIInstance } from \"../JsiInstance\";\nimport type { SkRect } from \"../Rect\";\n\nimport type {
|
1
|
+
{"version":3,"names":[],"sources":["Paragraph.ts"],"sourcesContent":["import type { SkCanvas } from \"../Canvas\";\nimport type { SkJSIInstance } from \"../JsiInstance\";\nimport type { SkRect } from \"../Rect\";\n\nimport type { TextDirection } from \"./ParagraphStyle\";\n\nexport interface SkRectWithDirection {\n rect: SkRect;\n direction: TextDirection;\n}\n\nexport interface SkParagraph extends SkJSIInstance<\"Paragraph\"> {\n /**\n * Calculates the position of the the glyphs in the paragraph\n * @param width Max width of the paragraph\n */\n layout(width: number): void;\n /**\n * Paints the paragraph to the provded canvas\n * @param canvas Canvas to paint into\n * @param x X coordinate to paint at\n * @param y Y coordinate to paint at\n */\n paint(canvas: SkCanvas, x: number, y: number): void;\n /**\n * Returns the height of the paragraph. This method requires the layout\n * method to have been called first.\n */\n getHeight(): number;\n /**\n * Returns the max width of the paragraph. This method requires the layout\n * method to have been called first.\n */\n getMaxWidth(): number;\n /**\n * Returns the minimum intrinsic width of the paragraph.\n * The minimum intrinsic width is the width beyond which increasing the width of the paragraph\n * does not decrease the height. This is effectively the width at which the paragraph\n * can no longer wrap lines and is forced to overflow.\n * This method requires the layout method to have been called first.\n * @returns {number} The minimum intrinsic width of the paragraph.\n */\n getMinIntrinsicWidth(): number;\n /**\n * Returns the maximum intrinsic width of the paragraph.\n * The maximum intrinsic width is the width at which the paragraph can layout its content without line breaks,\n * meaning it's the width of the widest line or the widest word if the widest line is shorter than that.\n * This width represents the ideal width for the paragraph to display all content in a single line without overflow.\n * This method requires the layout method to have been called first.\n * @returns {number} The maximum intrinsic width of the paragraph.\n */\n getMaxIntrinsicWidth(): number;\n\n /**\n * Returns the width of the longest line in the paragraph.\n * This method requires the layout method to have been called first.\n */\n getLongestLine(): number;\n\n /**\n * Returns the index of the glyph at the given position. This method requires\n * the layout method to have been called first.\n * @param x X coordinate of the position\n * @param y Y coordinate of the position\n */\n getGlyphPositionAtCoordinate(x: number, y: number): number;\n /**\n * Returns the bounding boxes of the glyphs in the given range. This method\n * requires the layout method to have been called first.\n * @param start Start index of the range\n * @param end End index of the range\n */\n getRectsForRange(start: number, end: number): SkRect[];\n /**\n * Returns the bounding boxes for all lines in the paragraph. This method\n * requires the layout method to have been called first.\n */\n getLineMetrics(): Array<SkRect>;\n /**\n * Returns a list of rects with direction info for the placeholders added\n * to the paragraph.\n */\n getRectsForPlaceholders(): SkRectWithDirection[];\n}\n"],"mappings":""}
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import type { SkTextFontStyle, SkTextStyle } from "./TextStyle";
|
2
|
-
export declare enum
|
2
|
+
export declare enum TextDirection {
|
3
3
|
RTL = 0,
|
4
4
|
LTR = 1
|
5
5
|
}
|
6
|
-
export declare enum
|
6
|
+
export declare enum TextAlign {
|
7
7
|
Left = 0,
|
8
8
|
Right = 1,
|
9
9
|
Center = 2,
|
@@ -21,7 +21,7 @@ export interface SkStrutStyle {
|
|
21
21
|
leading?: number;
|
22
22
|
forceStrutHeight?: boolean;
|
23
23
|
}
|
24
|
-
export declare enum
|
24
|
+
export declare enum TextHeightBehavior {
|
25
25
|
All = 0,
|
26
26
|
DisableFirstAscent = 1,
|
27
27
|
DisableLastDescent = 2,
|
@@ -34,8 +34,8 @@ export interface SkParagraphStyle {
|
|
34
34
|
maxLines?: number;
|
35
35
|
replaceTabCharacters?: boolean;
|
36
36
|
strutStyle?: SkStrutStyle;
|
37
|
-
textAlign?:
|
38
|
-
textDirection?:
|
39
|
-
textHeightBehavior?:
|
37
|
+
textAlign?: TextAlign;
|
38
|
+
textDirection?: TextDirection;
|
39
|
+
textHeightBehavior?: TextHeightBehavior;
|
40
40
|
textStyle?: SkTextStyle;
|
41
41
|
}
|
@@ -1,27 +1,27 @@
|
|
1
|
-
export let
|
1
|
+
export let TextDirection;
|
2
2
|
|
3
|
-
(function (
|
4
|
-
|
5
|
-
|
6
|
-
})(
|
3
|
+
(function (TextDirection) {
|
4
|
+
TextDirection[TextDirection["RTL"] = 0] = "RTL";
|
5
|
+
TextDirection[TextDirection["LTR"] = 1] = "LTR";
|
6
|
+
})(TextDirection || (TextDirection = {}));
|
7
7
|
|
8
|
-
export let
|
8
|
+
export let TextAlign;
|
9
9
|
|
10
|
-
(function (
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
})(
|
10
|
+
(function (TextAlign) {
|
11
|
+
TextAlign[TextAlign["Left"] = 0] = "Left";
|
12
|
+
TextAlign[TextAlign["Right"] = 1] = "Right";
|
13
|
+
TextAlign[TextAlign["Center"] = 2] = "Center";
|
14
|
+
TextAlign[TextAlign["Justify"] = 3] = "Justify";
|
15
|
+
TextAlign[TextAlign["Start"] = 4] = "Start";
|
16
|
+
TextAlign[TextAlign["End"] = 5] = "End";
|
17
|
+
})(TextAlign || (TextAlign = {}));
|
18
18
|
|
19
|
-
export let
|
19
|
+
export let TextHeightBehavior;
|
20
20
|
|
21
|
-
(function (
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
})(
|
21
|
+
(function (TextHeightBehavior) {
|
22
|
+
TextHeightBehavior[TextHeightBehavior["All"] = 0] = "All";
|
23
|
+
TextHeightBehavior[TextHeightBehavior["DisableFirstAscent"] = 1] = "DisableFirstAscent";
|
24
|
+
TextHeightBehavior[TextHeightBehavior["DisableLastDescent"] = 2] = "DisableLastDescent";
|
25
|
+
TextHeightBehavior[TextHeightBehavior["DisableAll"] = 3] = "DisableAll";
|
26
|
+
})(TextHeightBehavior || (TextHeightBehavior = {}));
|
27
27
|
//# sourceMappingURL=ParagraphStyle.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["
|
1
|
+
{"version":3,"names":["TextDirection","TextAlign","TextHeightBehavior"],"sources":["ParagraphStyle.ts"],"sourcesContent":["import type { SkTextFontStyle, SkTextStyle } from \"./TextStyle\";\n\nexport enum TextDirection {\n RTL = 0,\n LTR = 1,\n}\nexport enum TextAlign {\n Left = 0,\n Right,\n Center,\n Justify,\n Start,\n End,\n}\n\nexport interface SkStrutStyle {\n strutEnabled?: boolean;\n fontFamilies?: string[];\n fontStyle?: SkTextFontStyle;\n fontSize?: number;\n heightMultiplier?: number;\n halfLeading?: boolean;\n leading?: number;\n forceStrutHeight?: boolean;\n}\n\nexport enum TextHeightBehavior {\n All = 0x0,\n DisableFirstAscent = 0x1,\n DisableLastDescent = 0x2,\n DisableAll = 0x1 | 0x2,\n}\n\nexport interface SkParagraphStyle {\n disableHinting?: boolean;\n ellipsis?: string;\n heightMultiplier?: number;\n maxLines?: number;\n replaceTabCharacters?: boolean;\n strutStyle?: SkStrutStyle;\n textAlign?: TextAlign;\n textDirection?: TextDirection;\n textHeightBehavior?: TextHeightBehavior;\n textStyle?: SkTextStyle;\n}\n"],"mappings":"AAEA,WAAYA,aAAZ;;WAAYA,a;EAAAA,a,CAAAA,a;EAAAA,a,CAAAA,a;GAAAA,a,KAAAA,a;;AAIZ,WAAYC,SAAZ;;WAAYA,S;EAAAA,S,CAAAA,S;EAAAA,S,CAAAA,S;EAAAA,S,CAAAA,S;EAAAA,S,CAAAA,S;EAAAA,S,CAAAA,S;EAAAA,S,CAAAA,S;GAAAA,S,KAAAA,S;;AAoBZ,WAAYC,kBAAZ;;WAAYA,kB;EAAAA,kB,CAAAA,kB;EAAAA,kB,CAAAA,kB;EAAAA,kB,CAAAA,kB;EAAAA,kB,CAAAA,kB;GAAAA,kB,KAAAA,kB"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { TextDirection } from "../types";
|
2
2
|
export class JsiSkParagraphStyle {
|
3
3
|
static toParagraphStyle(ck, value) {
|
4
4
|
var _value$disableHinting, _value$ellipsis, _value$heightMultipli, _value$maxLines, _value$replaceTabChar, _ps$strutStyle, _value$strutStyle$fon, _value$strutStyle, _value$strutStyle$fon2, _value$strutStyle2, _value$strutStyle$hei, _value$strutStyle3, _value$strutStyle$lea, _value$strutStyle4, _value$strutStyle$for, _value$strutStyle5, _ps$strutStyle$fontSt, _value$strutStyle6, _value$strutStyle6$fo, _value$strutStyle7, _value$strutStyle7$fo, _value$strutStyle8, _value$strutStyle8$fo, _value$strutStyle$hal, _value$strutStyle9, _value$strutStyle$str, _value$strutStyle10;
|
@@ -19,7 +19,7 @@ export class JsiSkParagraphStyle {
|
|
19
19
|
value: value.textAlign
|
20
20
|
} : undefined !== null && undefined !== void 0 ? undefined : ps.textAlign;
|
21
21
|
ps.textDirection = value.textDirection !== undefined ? {
|
22
|
-
value: value.textDirection ===
|
22
|
+
value: value.textDirection === TextDirection.LTR ? 1 : 0
|
23
23
|
} : ps.textDirection;
|
24
24
|
ps.textHeightBehavior = value.textHeightBehavior !== undefined ? {
|
25
25
|
value: value.textHeightBehavior
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["
|
1
|
+
{"version":3,"names":["TextDirection","JsiSkParagraphStyle","toParagraphStyle","ck","value","ps","ParagraphStyle","textStyle","color","BLACK","disableHinting","ellipsis","heightMultiplier","maxLines","replaceTabCharacters","textAlign","undefined","textDirection","LTR","textHeightBehavior","strutStyle","fontFamilies","fontSize","leading","forceStrutHeight","fontStyle","slant","width","weight","halfLeading","strutEnabled"],"sources":["JsiSkParagraphStyle.ts"],"sourcesContent":["import type { CanvasKit, ParagraphStyle } from \"canvaskit-wasm\";\n\nimport { TextDirection, type SkParagraphStyle } from \"../types\";\n\nexport class JsiSkParagraphStyle {\n static toParagraphStyle(\n ck: CanvasKit,\n value: SkParagraphStyle\n ): ParagraphStyle {\n // Seems like we need to provide the textStyle.color value, otherwise\n // the constructor crashes.\n const ps = new ck.ParagraphStyle({ textStyle: { color: ck.BLACK } });\n\n ps.disableHinting = value.disableHinting ?? ps.disableHinting;\n ps.ellipsis = value.ellipsis ?? ps.ellipsis;\n ps.heightMultiplier = value.heightMultiplier ?? ps.heightMultiplier;\n ps.maxLines = value.maxLines ?? ps.maxLines;\n ps.replaceTabCharacters =\n value.replaceTabCharacters ?? ps.replaceTabCharacters;\n ps.textAlign =\n value.textAlign !== undefined\n ? { value: value.textAlign }\n : undefined ?? ps.textAlign;\n ps.textDirection =\n value.textDirection !== undefined\n ? { value: value.textDirection === TextDirection.LTR ? 1 : 0 }\n : ps.textDirection;\n ps.textHeightBehavior =\n value.textHeightBehavior !== undefined\n ? { value: value.textHeightBehavior }\n : ps.textHeightBehavior;\n\n ps.strutStyle = ps.strutStyle ?? {};\n ps.strutStyle.fontFamilies =\n value.strutStyle?.fontFamilies ?? ps.strutStyle.fontFamilies;\n ps.strutStyle.fontSize =\n value.strutStyle?.fontSize ?? ps.strutStyle.fontSize;\n ps.strutStyle.heightMultiplier =\n value.strutStyle?.heightMultiplier ?? ps.strutStyle.heightMultiplier;\n ps.strutStyle.leading = value.strutStyle?.leading ?? ps.strutStyle.leading;\n ps.strutStyle.forceStrutHeight =\n value.strutStyle?.forceStrutHeight ?? ps.strutStyle.forceStrutHeight;\n\n ps.strutStyle.fontStyle = ps.strutStyle.fontStyle ?? {};\n\n ps.strutStyle.fontStyle.slant =\n value.strutStyle?.fontStyle?.slant !== undefined\n ? { value: value.strutStyle.fontStyle.slant }\n : ps.strutStyle.fontStyle.slant;\n ps.strutStyle.fontStyle.width =\n value.strutStyle?.fontStyle?.width !== undefined\n ? { value: value.strutStyle.fontStyle.width }\n : ps.strutStyle.fontStyle.width;\n ps.strutStyle.fontStyle.weight =\n value.strutStyle?.fontStyle?.weight !== undefined\n ? { value: value.strutStyle.fontStyle.weight }\n : ps.strutStyle.fontStyle.weight;\n ps.strutStyle.halfLeading =\n value.strutStyle?.halfLeading ?? ps.strutStyle.halfLeading;\n ps.strutStyle.strutEnabled =\n value.strutStyle?.strutEnabled ?? ps.strutStyle.strutEnabled;\n\n return ps;\n }\n}\n"],"mappings":"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"}
|
@@ -1,12 +1,16 @@
|
|
1
1
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
2
2
|
// @ts-ignore
|
3
3
|
import CanvasKitInit from "canvaskit-wasm/bin/full/canvaskit";
|
4
|
+
let ckSharedPromise;
|
4
5
|
export const LoadSkiaWeb = async opts => {
|
6
|
+
var _ckSharedPromise;
|
7
|
+
|
5
8
|
if (global.CanvasKit !== undefined) {
|
6
9
|
return;
|
7
10
|
}
|
8
11
|
|
9
|
-
|
12
|
+
ckSharedPromise = (_ckSharedPromise = ckSharedPromise) !== null && _ckSharedPromise !== void 0 ? _ckSharedPromise : CanvasKitInit(opts);
|
13
|
+
const CanvasKit = await ckSharedPromise; // The CanvasKit API is stored on the global object and used
|
10
14
|
// to create the JsiSKApi in the Skia.web.ts file.
|
11
15
|
|
12
16
|
global.CanvasKit = CanvasKit;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["CanvasKitInit","LoadSkiaWeb","opts","global","CanvasKit","undefined","LoadSkia"],"sources":["LoadSkiaWeb.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CanvasKitInit from \"canvaskit-wasm/bin/full/canvaskit\";\nimport type {\n CanvasKit as CanvasKitType,\n CanvasKitInitOptions,\n} from \"canvaskit-wasm\";\n\ndeclare global {\n var CanvasKit: CanvasKitType;\n}\n\nexport const LoadSkiaWeb = async (opts?: CanvasKitInitOptions) => {\n if (global.CanvasKit !== undefined) {\n return;\n }\n
|
1
|
+
{"version":3,"names":["CanvasKitInit","ckSharedPromise","LoadSkiaWeb","opts","global","CanvasKit","undefined","LoadSkia"],"sources":["LoadSkiaWeb.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CanvasKitInit from \"canvaskit-wasm/bin/full/canvaskit\";\nimport type {\n CanvasKit as CanvasKitType,\n CanvasKitInitOptions,\n} from \"canvaskit-wasm\";\n\ndeclare global {\n var CanvasKit: CanvasKitType;\n}\n\nlet ckSharedPromise: Promise<CanvasKitType>;\n\nexport const LoadSkiaWeb = async (opts?: CanvasKitInitOptions) => {\n if (global.CanvasKit !== undefined) {\n return;\n }\n ckSharedPromise = ckSharedPromise ?? CanvasKitInit(opts);\n const CanvasKit = await ckSharedPromise;\n // The CanvasKit API is stored on the global object and used\n // to create the JsiSKApi in the Skia.web.ts file.\n global.CanvasKit = CanvasKit;\n};\n\n// We keep this function for backward compatibility\nexport const LoadSkia = LoadSkiaWeb;\n"],"mappings":"AAAA;AACA;AACA,OAAOA,aAAP,MAA0B,mCAA1B;AAUA,IAAIC,eAAJ;AAEA,OAAO,MAAMC,WAAW,GAAG,MAAOC,IAAP,IAAuC;EAAA;;EAChE,IAAIC,MAAM,CAACC,SAAP,KAAqBC,SAAzB,EAAoC;IAClC;EACD;;EACDL,eAAe,uBAAGA,eAAH,+DAAsBD,aAAa,CAACG,IAAD,CAAlD;EACA,MAAME,SAAS,GAAG,MAAMJ,eAAxB,CALgE,CAMhE;EACA;;EACAG,MAAM,CAACC,SAAP,GAAmBA,SAAnB;AACD,CATM,C,CAWP;;AACA,OAAO,MAAME,QAAQ,GAAGL,WAAjB"}
|
@@ -4,6 +4,7 @@ type Point = {
|
|
4
4
|
};
|
5
5
|
type Vec2 = readonly [number, number];
|
6
6
|
type Vec3 = readonly [number, number, number];
|
7
|
+
type Vec4 = readonly [number, number, number, number];
|
7
8
|
export type Matrix3 = readonly [
|
8
9
|
number,
|
9
10
|
number,
|
@@ -51,6 +52,10 @@ export declare const translate: (x: number, y: number, z?: number) => Matrix4;
|
|
51
52
|
* @worklet
|
52
53
|
*/
|
53
54
|
export declare const perspective: (p: number) => Matrix4;
|
55
|
+
/**
|
56
|
+
* @worklet
|
57
|
+
*/
|
58
|
+
export declare const matrixVecMul4: (m: Matrix4, v: Vec4) => Vec4;
|
54
59
|
/**
|
55
60
|
* @worklet
|
56
61
|
*/
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import type { SkCanvas } from "../Canvas";
|
2
2
|
import type { SkJSIInstance } from "../JsiInstance";
|
3
3
|
import type { SkRect } from "../Rect";
|
4
|
-
import type {
|
4
|
+
import type { TextDirection } from "./ParagraphStyle";
|
5
5
|
export interface SkRectWithDirection {
|
6
6
|
rect: SkRect;
|
7
|
-
direction:
|
7
|
+
direction: TextDirection;
|
8
8
|
}
|
9
9
|
export interface SkParagraph extends SkJSIInstance<"Paragraph"> {
|
10
10
|
/**
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import type { SkTextFontStyle, SkTextStyle } from "./TextStyle";
|
2
|
-
export declare enum
|
2
|
+
export declare enum TextDirection {
|
3
3
|
RTL = 0,
|
4
4
|
LTR = 1
|
5
5
|
}
|
6
|
-
export declare enum
|
6
|
+
export declare enum TextAlign {
|
7
7
|
Left = 0,
|
8
8
|
Right = 1,
|
9
9
|
Center = 2,
|
@@ -21,7 +21,7 @@ export interface SkStrutStyle {
|
|
21
21
|
leading?: number;
|
22
22
|
forceStrutHeight?: boolean;
|
23
23
|
}
|
24
|
-
export declare enum
|
24
|
+
export declare enum TextHeightBehavior {
|
25
25
|
All = 0,
|
26
26
|
DisableFirstAscent = 1,
|
27
27
|
DisableLastDescent = 2,
|
@@ -34,8 +34,8 @@ export interface SkParagraphStyle {
|
|
34
34
|
maxLines?: number;
|
35
35
|
replaceTabCharacters?: boolean;
|
36
36
|
strutStyle?: SkStrutStyle;
|
37
|
-
textAlign?:
|
38
|
-
textDirection?:
|
39
|
-
textHeightBehavior?:
|
37
|
+
textAlign?: TextAlign;
|
38
|
+
textDirection?: TextDirection;
|
39
|
+
textHeightBehavior?: TextHeightBehavior;
|
40
40
|
textStyle?: SkTextStyle;
|
41
41
|
}
|
package/package.json
CHANGED
@@ -23,21 +23,8 @@ export class TextNode extends JsiDrawingNode<TextProps, SkFont | null> {
|
|
23
23
|
|
24
24
|
protected deriveProps() {
|
25
25
|
const { font } = this.props;
|
26
|
-
if (font
|
27
|
-
return null;
|
28
|
-
} else if (font === undefined) {
|
29
|
-
console.warn(
|
30
|
-
"<Text />: the font property is mandatory on React Native Web"
|
31
|
-
);
|
26
|
+
if (!font) {
|
32
27
|
return null;
|
33
|
-
// return this.Skia.Font(
|
34
|
-
// this.Skia.FontMgr.System().matchFamilyStyle("System", {
|
35
|
-
// width: 5,
|
36
|
-
// weight: 400,
|
37
|
-
// slant: 0,
|
38
|
-
// }),
|
39
|
-
// 14
|
40
|
-
// );
|
41
28
|
}
|
42
29
|
return font;
|
43
30
|
}
|
@@ -150,14 +150,16 @@ const rotatedUnitSinCos = (
|
|
150
150
|
];
|
151
151
|
};
|
152
152
|
|
153
|
-
|
153
|
+
/**
|
154
|
+
* @worklet
|
155
|
+
*/
|
156
|
+
export const matrixVecMul4 = (m: Matrix4, v: Vec4): Vec4 => {
|
154
157
|
"worklet";
|
155
|
-
const [vx, vy, vz, vw] = v;
|
156
158
|
return [
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
159
|
+
m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3] * v[3],
|
160
|
+
m[4] * v[0] + m[5] * v[1] + m[6] * v[2] + m[7] * v[3],
|
161
|
+
m[8] * v[0] + m[9] * v[1] + m[10] * v[2] + m[11] * v[3],
|
162
|
+
m[12] * v[0] + m[13] * v[1] + m[14] * v[2] + m[15] * v[3],
|
161
163
|
];
|
162
164
|
};
|
163
165
|
|
@@ -2,11 +2,11 @@ import type { SkCanvas } from "../Canvas";
|
|
2
2
|
import type { SkJSIInstance } from "../JsiInstance";
|
3
3
|
import type { SkRect } from "../Rect";
|
4
4
|
|
5
|
-
import type {
|
5
|
+
import type { TextDirection } from "./ParagraphStyle";
|
6
6
|
|
7
7
|
export interface SkRectWithDirection {
|
8
8
|
rect: SkRect;
|
9
|
-
direction:
|
9
|
+
direction: TextDirection;
|
10
10
|
}
|
11
11
|
|
12
12
|
export interface SkParagraph extends SkJSIInstance<"Paragraph"> {
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import type { SkTextFontStyle, SkTextStyle } from "./TextStyle";
|
2
2
|
|
3
|
-
export enum
|
3
|
+
export enum TextDirection {
|
4
4
|
RTL = 0,
|
5
5
|
LTR = 1,
|
6
6
|
}
|
7
|
-
export enum
|
7
|
+
export enum TextAlign {
|
8
8
|
Left = 0,
|
9
9
|
Right,
|
10
10
|
Center,
|
@@ -24,7 +24,7 @@ export interface SkStrutStyle {
|
|
24
24
|
forceStrutHeight?: boolean;
|
25
25
|
}
|
26
26
|
|
27
|
-
export enum
|
27
|
+
export enum TextHeightBehavior {
|
28
28
|
All = 0x0,
|
29
29
|
DisableFirstAscent = 0x1,
|
30
30
|
DisableLastDescent = 0x2,
|
@@ -38,8 +38,8 @@ export interface SkParagraphStyle {
|
|
38
38
|
maxLines?: number;
|
39
39
|
replaceTabCharacters?: boolean;
|
40
40
|
strutStyle?: SkStrutStyle;
|
41
|
-
textAlign?:
|
42
|
-
textDirection?:
|
43
|
-
textHeightBehavior?:
|
41
|
+
textAlign?: TextAlign;
|
42
|
+
textDirection?: TextDirection;
|
43
|
+
textHeightBehavior?: TextHeightBehavior;
|
44
44
|
textStyle?: SkTextStyle;
|
45
45
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import type { CanvasKit, ParagraphStyle } from "canvaskit-wasm";
|
2
2
|
|
3
|
-
import {
|
3
|
+
import { TextDirection, type SkParagraphStyle } from "../types";
|
4
4
|
|
5
5
|
export class JsiSkParagraphStyle {
|
6
6
|
static toParagraphStyle(
|
@@ -23,7 +23,7 @@ export class JsiSkParagraphStyle {
|
|
23
23
|
: undefined ?? ps.textAlign;
|
24
24
|
ps.textDirection =
|
25
25
|
value.textDirection !== undefined
|
26
|
-
? { value: value.textDirection ===
|
26
|
+
? { value: value.textDirection === TextDirection.LTR ? 1 : 0 }
|
27
27
|
: ps.textDirection;
|
28
28
|
ps.textHeightBehavior =
|
29
29
|
value.textHeightBehavior !== undefined
|
package/src/web/LoadSkiaWeb.tsx
CHANGED
@@ -10,11 +10,14 @@ declare global {
|
|
10
10
|
var CanvasKit: CanvasKitType;
|
11
11
|
}
|
12
12
|
|
13
|
+
let ckSharedPromise: Promise<CanvasKitType>;
|
14
|
+
|
13
15
|
export const LoadSkiaWeb = async (opts?: CanvasKitInitOptions) => {
|
14
16
|
if (global.CanvasKit !== undefined) {
|
15
17
|
return;
|
16
18
|
}
|
17
|
-
|
19
|
+
ckSharedPromise = ckSharedPromise ?? CanvasKitInit(opts);
|
20
|
+
const CanvasKit = await ckSharedPromise;
|
18
21
|
// The CanvasKit API is stored on the global object and used
|
19
22
|
// to create the JsiSKApi in the Skia.web.ts file.
|
20
23
|
global.CanvasKit = CanvasKit;
|