manga-renderer 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/LICENSE +17 -0
  2. package/README.md +118 -0
  3. package/dist/index.d.ts +28 -0
  4. package/dist/index.js +184 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/lib/book/book.d.ts +133 -0
  7. package/dist/lib/book/book.js +329 -0
  8. package/dist/lib/book/book.js.map +1 -0
  9. package/dist/lib/book/envelope.d.ts +26 -0
  10. package/dist/lib/book/envelope.js +158 -0
  11. package/dist/lib/book/envelope.js.map +1 -0
  12. package/dist/lib/book/imagePacking.d.ts +10 -0
  13. package/dist/lib/book/imagePacking.js +213 -0
  14. package/dist/lib/book/imagePacking.js.map +1 -0
  15. package/dist/lib/book/layout.d.ts +41 -0
  16. package/dist/lib/book/layout.js +14 -0
  17. package/dist/lib/book/layout.js.map +1 -0
  18. package/dist/lib/book/notebook.d.ts +72 -0
  19. package/dist/lib/book/notebook.js +30 -0
  20. package/dist/lib/book/notebook.js.map +1 -0
  21. package/dist/lib/book/richChat.d.ts +36 -0
  22. package/dist/lib/book/richChat.js +87 -0
  23. package/dist/lib/book/richChat.js.map +1 -0
  24. package/dist/lib/book/storyboard.d.ts +125 -0
  25. package/dist/lib/book/storyboard.js +44 -0
  26. package/dist/lib/book/storyboard.js.map +1 -0
  27. package/dist/lib/layeredCanvas/dataModels/bubble.d.ts +96 -0
  28. package/dist/lib/layeredCanvas/dataModels/bubble.js +630 -0
  29. package/dist/lib/layeredCanvas/dataModels/bubble.js.map +1 -0
  30. package/dist/lib/layeredCanvas/dataModels/effect.d.ts +25 -0
  31. package/dist/lib/layeredCanvas/dataModels/effect.js +104 -0
  32. package/dist/lib/layeredCanvas/dataModels/effect.js.map +1 -0
  33. package/dist/lib/layeredCanvas/dataModels/film.d.ts +44 -0
  34. package/dist/lib/layeredCanvas/dataModels/film.js +172 -0
  35. package/dist/lib/layeredCanvas/dataModels/film.js.map +1 -0
  36. package/dist/lib/layeredCanvas/dataModels/frameTree.d.ts +99 -0
  37. package/dist/lib/layeredCanvas/dataModels/frameTree.js +861 -0
  38. package/dist/lib/layeredCanvas/dataModels/frameTree.js.map +1 -0
  39. package/dist/lib/layeredCanvas/dataModels/media.d.ts +39 -0
  40. package/dist/lib/layeredCanvas/dataModels/media.js +69 -0
  41. package/dist/lib/layeredCanvas/dataModels/media.js.map +1 -0
  42. package/dist/lib/layeredCanvas/layers/SampleLayer.d.ts +6 -0
  43. package/dist/lib/layeredCanvas/layers/SampleLayer.js +22 -0
  44. package/dist/lib/layeredCanvas/layers/SampleLayer.js.map +1 -0
  45. package/dist/lib/layeredCanvas/layers/arrayLayer.d.ts +49 -0
  46. package/dist/lib/layeredCanvas/layers/arrayLayer.js +364 -0
  47. package/dist/lib/layeredCanvas/layers/arrayLayer.js.map +1 -0
  48. package/dist/lib/layeredCanvas/layers/bubbleLayer.d.ts +97 -0
  49. package/dist/lib/layeredCanvas/layers/bubbleLayer.js +1418 -0
  50. package/dist/lib/layeredCanvas/layers/bubbleLayer.js.map +1 -0
  51. package/dist/lib/layeredCanvas/layers/floorLayer.d.ts +13 -0
  52. package/dist/lib/layeredCanvas/layers/floorLayer.js +64 -0
  53. package/dist/lib/layeredCanvas/layers/floorLayer.js.map +1 -0
  54. package/dist/lib/layeredCanvas/layers/frameLayer.d.ts +106 -0
  55. package/dist/lib/layeredCanvas/layers/frameLayer.js +1283 -0
  56. package/dist/lib/layeredCanvas/layers/frameLayer.js.map +1 -0
  57. package/dist/lib/layeredCanvas/layers/inlinePainterLayer.d.ts +33 -0
  58. package/dist/lib/layeredCanvas/layers/inlinePainterLayer.js +222 -0
  59. package/dist/lib/layeredCanvas/layers/inlinePainterLayer.js.map +1 -0
  60. package/dist/lib/layeredCanvas/layers/paperRendererLayer.d.ts +64 -0
  61. package/dist/lib/layeredCanvas/layers/paperRendererLayer.js +443 -0
  62. package/dist/lib/layeredCanvas/layers/paperRendererLayer.js.map +1 -0
  63. package/dist/lib/layeredCanvas/layers/undoLayer.d.ts +8 -0
  64. package/dist/lib/layeredCanvas/layers/undoLayer.js +24 -0
  65. package/dist/lib/layeredCanvas/layers/undoLayer.js.map +1 -0
  66. package/dist/lib/layeredCanvas/system/keyCache.d.ts +4 -0
  67. package/dist/lib/layeredCanvas/system/keyCache.js +61 -0
  68. package/dist/lib/layeredCanvas/system/keyCache.js.map +1 -0
  69. package/dist/lib/layeredCanvas/system/layeredCanvas.d.ts +172 -0
  70. package/dist/lib/layeredCanvas/system/layeredCanvas.js +597 -0
  71. package/dist/lib/layeredCanvas/system/layeredCanvas.js.map +1 -0
  72. package/dist/lib/layeredCanvas/system/paperArray.d.ts +29 -0
  73. package/dist/lib/layeredCanvas/system/paperArray.js +108 -0
  74. package/dist/lib/layeredCanvas/system/paperArray.js.map +1 -0
  75. package/dist/lib/layeredCanvas/tools/draw/bubbleGraphic.d.ts +7 -0
  76. package/dist/lib/layeredCanvas/tools/draw/bubbleGraphic.js +728 -0
  77. package/dist/lib/layeredCanvas/tools/draw/bubbleGraphic.js.map +1 -0
  78. package/dist/lib/layeredCanvas/tools/draw/clickableIcon.d.ts +42 -0
  79. package/dist/lib/layeredCanvas/tools/draw/clickableIcon.js +129 -0
  80. package/dist/lib/layeredCanvas/tools/draw/clickableIcon.js.map +1 -0
  81. package/dist/lib/layeredCanvas/tools/draw/drawFilmStack.d.ts +4 -0
  82. package/dist/lib/layeredCanvas/tools/draw/drawFilmStack.js +53 -0
  83. package/dist/lib/layeredCanvas/tools/draw/drawFilmStack.js.map +1 -0
  84. package/dist/lib/layeredCanvas/tools/draw/drawText.d.ts +8 -0
  85. package/dist/lib/layeredCanvas/tools/draw/drawText.js +45 -0
  86. package/dist/lib/layeredCanvas/tools/draw/drawText.js.map +1 -0
  87. package/dist/lib/layeredCanvas/tools/draw/richText.d.ts +15 -0
  88. package/dist/lib/layeredCanvas/tools/draw/richText.js +172 -0
  89. package/dist/lib/layeredCanvas/tools/draw/richText.js.map +1 -0
  90. package/dist/lib/layeredCanvas/tools/draw/selectionFrame.d.ts +5 -0
  91. package/dist/lib/layeredCanvas/tools/draw/selectionFrame.js +63 -0
  92. package/dist/lib/layeredCanvas/tools/draw/selectionFrame.js.map +1 -0
  93. package/dist/lib/layeredCanvas/tools/draw/typeSetting.d.ts +16 -0
  94. package/dist/lib/layeredCanvas/tools/draw/typeSetting.js +2 -0
  95. package/dist/lib/layeredCanvas/tools/draw/typeSetting.js.map +1 -0
  96. package/dist/lib/layeredCanvas/tools/draw/verticalText.d.ts +3 -0
  97. package/dist/lib/layeredCanvas/tools/draw/verticalText.js +230 -0
  98. package/dist/lib/layeredCanvas/tools/draw/verticalText.js.map +1 -0
  99. package/dist/lib/layeredCanvas/tools/focusKeeper.d.ts +8 -0
  100. package/dist/lib/layeredCanvas/tools/focusKeeper.js +15 -0
  101. package/dist/lib/layeredCanvas/tools/focusKeeper.js.map +1 -0
  102. package/dist/lib/layeredCanvas/tools/frameExamples.d.ts +382 -0
  103. package/dist/lib/layeredCanvas/tools/frameExamples.js +758 -0
  104. package/dist/lib/layeredCanvas/tools/frameExamples.js.map +1 -0
  105. package/dist/lib/layeredCanvas/tools/geometry/bubbleGeometry.d.ts +12 -0
  106. package/dist/lib/layeredCanvas/tools/geometry/bubbleGeometry.js +117 -0
  107. package/dist/lib/layeredCanvas/tools/geometry/bubbleGeometry.js.map +1 -0
  108. package/dist/lib/layeredCanvas/tools/geometry/convertPoint.d.ts +2 -0
  109. package/dist/lib/layeredCanvas/tools/geometry/convertPoint.js +25 -0
  110. package/dist/lib/layeredCanvas/tools/geometry/convertPoint.js.map +1 -0
  111. package/dist/lib/layeredCanvas/tools/geometry/geometry.d.ts +69 -0
  112. package/dist/lib/layeredCanvas/tools/geometry/geometry.js +408 -0
  113. package/dist/lib/layeredCanvas/tools/geometry/geometry.js.map +1 -0
  114. package/dist/lib/layeredCanvas/tools/geometry/geometry.vitest.d.ts +1 -0
  115. package/dist/lib/layeredCanvas/tools/geometry/geometry.vitest.js +58 -0
  116. package/dist/lib/layeredCanvas/tools/geometry/geometry.vitest.js.map +1 -0
  117. package/dist/lib/layeredCanvas/tools/geometry/quickHull.d.ts +10 -0
  118. package/dist/lib/layeredCanvas/tools/geometry/quickHull.js +91 -0
  119. package/dist/lib/layeredCanvas/tools/geometry/quickHull.js.map +1 -0
  120. package/dist/lib/layeredCanvas/tools/geometry/trapezoid.d.ts +18 -0
  121. package/dist/lib/layeredCanvas/tools/geometry/trapezoid.js +105 -0
  122. package/dist/lib/layeredCanvas/tools/geometry/trapezoid.js.map +1 -0
  123. package/dist/lib/layeredCanvas/tools/grid.d.ts +7 -0
  124. package/dist/lib/layeredCanvas/tools/grid.js +16 -0
  125. package/dist/lib/layeredCanvas/tools/grid.js.map +1 -0
  126. package/dist/lib/layeredCanvas/tools/haiku.d.ts +1 -0
  127. package/dist/lib/layeredCanvas/tools/haiku.js +17 -0
  128. package/dist/lib/layeredCanvas/tools/haiku.js.map +1 -0
  129. package/dist/lib/layeredCanvas/tools/imageUtil.d.ts +8 -0
  130. package/dist/lib/layeredCanvas/tools/imageUtil.js +58 -0
  131. package/dist/lib/layeredCanvas/tools/imageUtil.js.map +1 -0
  132. package/dist/lib/layeredCanvas/tools/kinsoku.d.ts +26 -0
  133. package/dist/lib/layeredCanvas/tools/kinsoku.js +124 -0
  134. package/dist/lib/layeredCanvas/tools/kinsoku.js.map +1 -0
  135. package/dist/lib/layeredCanvas/tools/misc.d.ts +25 -0
  136. package/dist/lib/layeredCanvas/tools/misc.js +46 -0
  137. package/dist/lib/layeredCanvas/tools/misc.js.map +1 -0
  138. package/dist/lib/layeredCanvas/tools/perfectFreehandUtil.d.ts +2 -0
  139. package/dist/lib/layeredCanvas/tools/perfectFreehandUtil.js +21 -0
  140. package/dist/lib/layeredCanvas/tools/perfectFreehandUtil.js.map +1 -0
  141. package/dist/lib/layeredCanvas/tools/pictureControl.d.ts +4 -0
  142. package/dist/lib/layeredCanvas/tools/pictureControl.js +24 -0
  143. package/dist/lib/layeredCanvas/tools/pictureControl.js.map +1 -0
  144. package/dist/lib/layeredCanvas/tools/rectHandle.d.ts +6 -0
  145. package/dist/lib/layeredCanvas/tools/rectHandle.js +17 -0
  146. package/dist/lib/layeredCanvas/tools/rectHandle.js.map +1 -0
  147. package/dist/tsconfig.tsbuildinfo +1 -0
  148. package/package.json +64 -0
@@ -0,0 +1,105 @@
1
+ import { isPointInTriangle, segmentIntersection, pointToTriangleDistance, subtract2D, cross2D } from "./geometry";
2
+ export const trapezoidCorners = ["topLeft", "topRight", "bottomLeft", "bottomRight"];
3
+ export function trapezoidPath(ctx, corners) {
4
+ ctx.moveTo(...corners.topLeft);
5
+ ctx.lineTo(...corners.topRight);
6
+ ctx.lineTo(...corners.bottomRight);
7
+ ctx.lineTo(...corners.bottomLeft);
8
+ ctx.lineTo(...corners.topLeft);
9
+ ctx.closePath();
10
+ }
11
+ export function extendTrapezoid(t, x, y) {
12
+ return {
13
+ topLeft: [t.topLeft[0] - x, t.topLeft[1] - y],
14
+ topRight: [t.topRight[0] + x, t.topRight[1] - y],
15
+ bottomLeft: [t.bottomLeft[0] - x, t.bottomLeft[1] + y],
16
+ bottomRight: [t.bottomRight[0] + x, t.bottomRight[1] + y],
17
+ };
18
+ }
19
+ export function rectToTrapezoid(r) {
20
+ return {
21
+ topLeft: [r[0], r[1]],
22
+ topRight: [r[0] + r[2], r[1]],
23
+ bottomLeft: [r[0], r[1] + r[3]],
24
+ bottomRight: [r[0] + r[2], r[1] + r[3]],
25
+ };
26
+ }
27
+ export function trapezoidBoundingRect(corners) {
28
+ const box = [
29
+ Math.min(corners.topLeft[0], corners.bottomLeft[0]),
30
+ Math.min(corners.topLeft[1], corners.topRight[1]),
31
+ Math.max(corners.topRight[0], corners.bottomRight[0]),
32
+ Math.max(corners.bottomLeft[1], corners.bottomRight[1]),
33
+ ];
34
+ return [box[0], box[1], box[2] - box[0], box[3] - box[1]];
35
+ }
36
+ export function trapezoidCenter(corners) {
37
+ return [
38
+ (corners.topLeft[0] + corners.topRight[0] + corners.bottomLeft[0] + corners.bottomRight[0]) / 4,
39
+ (corners.topLeft[1] + corners.topRight[1] + corners.bottomLeft[1] + corners.bottomRight[1]) / 4,
40
+ ];
41
+ }
42
+ export function isPointInTrapezoid(p, t) {
43
+ return isPointInTriangle(p, [t.topLeft, t.topRight, t.bottomRight]) ||
44
+ isPointInTriangle(p, [t.topLeft, t.bottomRight, t.bottomLeft]);
45
+ }
46
+ // 自己交差があっても正しく判定する
47
+ export function isPointInQuadrilateral(p, t) {
48
+ const [A, B, C, D] = [t.topLeft, t.topRight, t.bottomRight, t.bottomLeft];
49
+ const q = segmentIntersection([A, B], [C, D]);
50
+ let result = false;
51
+ if (q) {
52
+ result = isPointInTriangle(p, [A, q, D]) || isPointInTriangle(p, [C, q, B]);
53
+ }
54
+ else {
55
+ result = isPointInTriangle(p, [A, B, C]) || isPointInTriangle(p, [A, C, D]);
56
+ }
57
+ /*
58
+ const r = trapezoidBoundingRect(t);
59
+ if (result && !rectContains(r, p)) {
60
+ console.log("out of bounding rect", t, p, q);
61
+ }
62
+ */
63
+ return result;
64
+ }
65
+ export function pointToQuadrilateralDistance(p, t, ignoresinverted) {
66
+ const [A, B, C, D] = [t.topLeft, t.topRight, t.bottomRight, t.bottomLeft];
67
+ // A C
68
+ // |X|
69
+ // D B
70
+ const q = segmentIntersection([A, B], [C, D]);
71
+ if (q) {
72
+ return Math.min(pointToTriangleDistance(p, [A, q, D], ignoresinverted), pointToTriangleDistance(p, [C, q, B], ignoresinverted));
73
+ }
74
+ // A-B
75
+ // X
76
+ // C-D
77
+ const q2 = segmentIntersection([A, D], [B, C]);
78
+ if (q2) {
79
+ return Math.min(pointToTriangleDistance(p, [A, B, q2], ignoresinverted), pointToTriangleDistance(p, [q2, C, D], ignoresinverted));
80
+ }
81
+ // A-B
82
+ // | |
83
+ // D-C
84
+ return Math.min(pointToTriangleDistance(p, [A, B, C], ignoresinverted), pointToTriangleDistance(p, [A, C, D], ignoresinverted));
85
+ }
86
+ export function isQuadrilateralConvex(t) {
87
+ const vertices = [t.topLeft, t.topRight, t.bottomRight, t.bottomLeft];
88
+ const numVertices = vertices.length;
89
+ for (let i = 0; i < numVertices; i++) {
90
+ const current = vertices[i];
91
+ const next = vertices[(i + 1) % numVertices];
92
+ const nextNext = vertices[(i + 2) % numVertices];
93
+ const edge1 = subtract2D(next, current);
94
+ const edge2 = subtract2D(nextNext, next);
95
+ const cross = cross2D(edge1, edge2);
96
+ if (cross < 0) { // 外積が負の場合は凹
97
+ return false;
98
+ }
99
+ // 外積が0の場合は辺が直線上にあるため、必要に応じて扱いを決定
100
+ // ここでは0を許容して凸とみなします
101
+ }
102
+ // すべての外積が正または0であれば凸
103
+ return true;
104
+ }
105
+ //# sourceMappingURL=trapezoid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trapezoid.js","sourceRoot":"","sources":["../../../../../src/lib/layeredCanvas/tools/geometry/trapezoid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type Vector, type Rect } from './geometry/geometry';
2
+ export declare class Grid {
3
+ private cellUnit;
4
+ rect: Rect;
5
+ constructor(rect: Rect, margin: number, cellUnit: Vector);
6
+ calcPosition(regularizedOrigin: Vector, offsetUnit: Vector): Vector;
7
+ }
@@ -0,0 +1,16 @@
1
+ import { extendRect } from './geometry/geometry';
2
+ export class Grid {
3
+ cellUnit;
4
+ rect;
5
+ constructor(rect, margin, cellUnit) {
6
+ this.cellUnit = cellUnit;
7
+ this.rect = extendRect(rect, margin);
8
+ }
9
+ calcPosition(regularizedOrigin, offsetUnit) {
10
+ const unit = this.cellUnit;
11
+ const [x, y, w, h] = this.rect;
12
+ const origin = [x + w * regularizedOrigin[0], y + h * regularizedOrigin[1]];
13
+ return [origin[0] + unit[0] * offsetUnit[0], origin[1] + unit[1] * offsetUnit[1]];
14
+ }
15
+ }
16
+ //# sourceMappingURL=grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.js","sourceRoot":"","sources":["../../../../src/lib/layeredCanvas/tools/grid.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEzE,MAAM,OAAO,IAAI;IAGiC;IAFhD,IAAI,CAAO;IAEX,YAAY,IAAU,EAAE,MAAc,EAAU,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;QAC9D,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,YAAY,CAAC,iBAAyB,EAAE,UAAkB;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ export declare function getHaiku(): string;
@@ -0,0 +1,17 @@
1
+ const haiku = [
2
+ "古池や\n蛙飛び込む\n水の音",
3
+ "夏草や\n兵どもが\n夢の跡",
4
+ "柿食えば\n鐘が鳴るなり\n法隆寺",
5
+ "秋深き\n隣は何を\nする人ぞ",
6
+ "朝顔に\nつるべとられて\nもらい水",
7
+ "五月雨を\n集めてはやし\n最上川",
8
+ "すずめの子\nそこのけそこのけ\nお馬が通る",
9
+ "菜の花や\n月は東に\n日は西に",
10
+ "目には青葉\nやまほととぎす\n初がつお",
11
+ "やせ蛙\n負けるな一茶\nこれにあり",
12
+ "閑さや\n岩にしみ入る\n蝉の声",
13
+ ];
14
+ export function getHaiku() {
15
+ return haiku[Math.floor(Math.random() * haiku.length)];
16
+ }
17
+ //# sourceMappingURL=haiku.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"haiku.js","sourceRoot":"","sources":["../../../../src/lib/layeredCanvas/tools/haiku.ts"],"names":[],"mappings":"AAAA,MAAM,KAAK,GAAG;IACZ,iBAAiB;IACjB,gBAAgB;IAChB,mBAAmB;IACnB,iBAAiB;IACjB,oBAAoB;IACpB,mBAAmB;IACnB,wBAAwB;IACxB,kBAAkB;IAClB,sBAAsB;IACtB,oBAAoB;IACpB,kBAAkB;CACnB,CAAC;AAEF,MAAM,UAAU,QAAQ;IACtB,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare function makePlainImage(w: number, h: number, color: string): HTMLCanvasElement;
2
+ export declare function createImageFromBlob(blob: Blob): Promise<HTMLImageElement>;
3
+ export declare function createCanvasFromImage(image: HTMLImageElement): HTMLCanvasElement;
4
+ export declare function createImageFromCanvas(canvas: HTMLCanvasElement): Promise<HTMLImageElement>;
5
+ export declare function createCanvasFromBlob(blob: Blob): Promise<HTMLCanvasElement>;
6
+ export declare function copyCanvas(canvas: HTMLCanvasElement): HTMLCanvasElement;
7
+ export declare function canvasToBase64(canvas: HTMLCanvasElement): string;
8
+ export declare function imageToBase64(imgElement: HTMLImageElement): string;
@@ -0,0 +1,58 @@
1
+ export function makePlainImage(w, h, color) {
2
+ console.log("makeWhiteImage", w, h);
3
+ const canvas = document.createElement("canvas");
4
+ canvas.width = w;
5
+ canvas.height = h;
6
+ const ctx = canvas.getContext("2d");
7
+ if (color) {
8
+ ctx.fillStyle = color;
9
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
10
+ }
11
+ return canvas;
12
+ }
13
+ export async function createImageFromBlob(blob) {
14
+ const url = URL.createObjectURL(blob);
15
+ const image = new Image();
16
+ image.src = url;
17
+ await image.decode();
18
+ URL.revokeObjectURL(url);
19
+ return image;
20
+ }
21
+ export function createCanvasFromImage(image) {
22
+ const canvas = document.createElement("canvas");
23
+ canvas.width = image.width;
24
+ canvas.height = image.height;
25
+ const ctx = canvas.getContext("2d");
26
+ ctx.drawImage(image, 0, 0);
27
+ return canvas;
28
+ }
29
+ export async function createImageFromCanvas(canvas) {
30
+ const image = new Image();
31
+ image.src = canvas.toDataURL();
32
+ await image.decode();
33
+ return image;
34
+ }
35
+ export async function createCanvasFromBlob(blob) {
36
+ const image = await createImageFromBlob(blob);
37
+ return createCanvasFromImage(image);
38
+ }
39
+ export function copyCanvas(canvas) {
40
+ const newCanvas = document.createElement("canvas");
41
+ newCanvas.width = canvas.width;
42
+ newCanvas.height = canvas.height;
43
+ const ctx = newCanvas.getContext("2d");
44
+ ctx.drawImage(canvas, 0, 0);
45
+ return newCanvas;
46
+ }
47
+ export function canvasToBase64(canvas) {
48
+ return canvas.toDataURL();
49
+ }
50
+ export function imageToBase64(imgElement) {
51
+ let canvas = document.createElement("canvas");
52
+ canvas.width = imgElement.naturalWidth;
53
+ canvas.height = imgElement.naturalHeight;
54
+ canvas.getContext("2d").drawImage(imgElement, 0, 0);
55
+ let base64Image = canvas.toDataURL("image/png");
56
+ return base64Image;
57
+ }
58
+ //# sourceMappingURL=imageUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageUtil.js","sourceRoot":"","sources":["../../../../src/lib/layeredCanvas/tools/imageUtil.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ type WrapDetectorResult = {
2
+ size: number;
3
+ wrap: boolean;
4
+ };
5
+ type WrapDetector = (chars: string[]) => WrapDetectorResult;
6
+ type KinsokuResult<T> = {
7
+ index: number;
8
+ buffer: T[];
9
+ size: number;
10
+ wrap: boolean;
11
+ };
12
+ export declare const leaderChars: Set<string>;
13
+ export declare const trailerChars: Set<string>;
14
+ export declare function kinsokuGenerator<T>(wrapDetector: (buffer: T[]) => {
15
+ size: number;
16
+ wrap: boolean;
17
+ }, wrapSize: number | null, iterator: Iterator<T>, startIndex: number, isLeader: (char: T) => boolean, isTrailer: (char: T) => boolean): Generator<KinsokuResult<T>>;
18
+ export declare function kinsoku(wrapDetector: WrapDetector, wrapSize: number, ss: string): {
19
+ index: number;
20
+ text: string;
21
+ size: number | null;
22
+ wrap: boolean;
23
+ }[];
24
+ export declare function isEmojiAt(str: string, index: number): boolean;
25
+ export declare function getEmojiAt(str: string, index: number): string;
26
+ export {};
@@ -0,0 +1,124 @@
1
+ function makeTable(chars) {
2
+ return new Set(chars.trim().replace(/\n/g, "").split(''));
3
+ }
4
+ export const leaderChars = makeTable(`
5
+ '"(〔[{〈《「『【
6
+ ([{
7
+ `);
8
+ export const trailerChars = makeTable(`
9
+ 、。,.・:;?!ー")〕]}〉》」』】
10
+ ヽヾゝゞ々
11
+ ぁぃぅぇぉっゃゅょゎ
12
+ ァィゥェォッャュョヮ
13
+ ,.:;?!-\" ')]}
14
+ `);
15
+ const maxBurasageDepth = 2;
16
+ const maxOidashiDepth = 2;
17
+ export function* kinsokuGenerator(wrapDetector, wrapSize, iterator, startIndex, isLeader, isTrailer) {
18
+ let index = startIndex;
19
+ const buffer = [];
20
+ let cursor = 0;
21
+ function peek() {
22
+ if (cursor < buffer.length) {
23
+ return buffer[cursor];
24
+ }
25
+ const next = iterator.next();
26
+ if (!next.done) {
27
+ buffer.push(next.value);
28
+ }
29
+ return next.done ? null : next.value;
30
+ }
31
+ function countOidashi() {
32
+ for (let back = 0; back < maxOidashiDepth; back++) {
33
+ if (!isLeader(buffer[cursor - 1 - back])) {
34
+ return back;
35
+ }
36
+ }
37
+ return maxOidashiDepth;
38
+ }
39
+ let lineSize = null;
40
+ while (true) {
41
+ const c = peek();
42
+ if (c == null) {
43
+ break;
44
+ }
45
+ if (cursor === 0) {
46
+ cursor = 1;
47
+ lineSize = 1;
48
+ continue;
49
+ }
50
+ else {
51
+ const { size, wrap } = wrapDetector(buffer.slice(0, cursor + 1));
52
+ if (!wrap) {
53
+ lineSize = size;
54
+ cursor++;
55
+ continue;
56
+ }
57
+ }
58
+ if (wrapSize != null) {
59
+ lineSize = wrapSize;
60
+ }
61
+ let back = countOidashi();
62
+ if (back === 0) {
63
+ for (let depth = 0; depth < maxBurasageDepth; depth++) {
64
+ const c = peek();
65
+ if (c === null || !isTrailer(c)) {
66
+ break;
67
+ }
68
+ cursor++;
69
+ }
70
+ }
71
+ else {
72
+ cursor -= back;
73
+ }
74
+ const buffer2 = buffer.splice(0, cursor);
75
+ yield { index, buffer: buffer2, size: lineSize, wrap: true };
76
+ index += buffer2.length;
77
+ cursor = 0;
78
+ }
79
+ if (0 < buffer.length) {
80
+ yield { index, buffer, size: lineSize, wrap: false };
81
+ }
82
+ }
83
+ export function kinsoku(wrapDetector, wrapSize, ss) {
84
+ let a = [];
85
+ let startIndex = 0;
86
+ for (let s of ss.split('\n')) {
87
+ function* createIterator() {
88
+ let i = 0;
89
+ while (i < s.length) {
90
+ if (isEmojiAt(s, i)) {
91
+ const c = getEmojiAt(s, i);
92
+ i += c.length;
93
+ yield c;
94
+ }
95
+ else {
96
+ yield s.charAt(i);
97
+ i++;
98
+ }
99
+ }
100
+ }
101
+ a.push(...kinsokuGenerator(wrapDetector, wrapSize, createIterator(), startIndex, leaderChars.has.bind(leaderChars), trailerChars.has.bind(trailerChars)));
102
+ startIndex += s.length + 1;
103
+ }
104
+ const aa = a.map(({ index, buffer, size, wrap }) => ({ index, text: buffer.join(''), size, wrap }));
105
+ return aa;
106
+ }
107
+ export function isEmojiAt(str, index) {
108
+ const codePoint = String.fromCodePoint(str.codePointAt(index) || 0);
109
+ const regex = /\p{Emoji}/u;
110
+ return regex.test(codePoint);
111
+ }
112
+ export function getEmojiAt(str, index) {
113
+ let endIndex = index + 1;
114
+ if (str.codePointAt(index) && str.codePointAt(index) > 0xFFFF) {
115
+ endIndex++;
116
+ }
117
+ return str.slice(index, endIndex);
118
+ }
119
+ /*
120
+ const a = kinsoku((s: string[]) => {
121
+ return { size: s.length, wrap: 5 < s.length };
122
+ }, 5, "♫⏯😥♫⏯");
123
+ */
124
+ //# sourceMappingURL=kinsoku.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kinsoku.js","sourceRoot":"","sources":["../../../../src/lib/layeredCanvas/tools/kinsoku.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export declare function arrayVectorToObjectVector(v: [number, number]): {
2
+ x: number;
3
+ y: number;
4
+ };
5
+ export declare function objectVectorToArrayVector(v: {
6
+ x: number;
7
+ y: number;
8
+ }): number[];
9
+ export declare function documentCoordToElementCoord(e: HTMLElement, p: {
10
+ x: number;
11
+ y: number;
12
+ }): {
13
+ x: number;
14
+ y: number;
15
+ };
16
+ export declare function elementCoordToDocumentCoord(e: HTMLElement, p: {
17
+ x: number;
18
+ y: number;
19
+ }): {
20
+ x: number;
21
+ y: number;
22
+ };
23
+ export declare function deepCopyProperties(target: any, source: any): any;
24
+ export declare function sha1(message: string): Promise<string>;
25
+ export declare function blobToSha1(blob: Blob): Promise<string>;
@@ -0,0 +1,46 @@
1
+ export function arrayVectorToObjectVector(v) {
2
+ return { x: v[0], y: v[1] };
3
+ }
4
+ export function objectVectorToArrayVector(v) {
5
+ return [v.x, v.y];
6
+ }
7
+ export function documentCoordToElementCoord(e, p) {
8
+ let rect = e.getBoundingClientRect();
9
+ return { x: p.x - rect.left, y: p.y - rect.top };
10
+ }
11
+ export function elementCoordToDocumentCoord(e, p) {
12
+ let rect = e.getBoundingClientRect();
13
+ return { x: p.x + rect.left, y: p.y + rect.top };
14
+ }
15
+ function isObject(item) {
16
+ return (item && typeof item === 'object' && !Array.isArray(item));
17
+ }
18
+ export function deepCopyProperties(target, source) {
19
+ Object.keys(source).forEach(key => {
20
+ if (isObject(source[key])) {
21
+ if (!target[key])
22
+ target[key] = {};
23
+ deepCopyProperties(target[key], source[key]);
24
+ }
25
+ else {
26
+ target[key] = source[key];
27
+ }
28
+ });
29
+ return target;
30
+ }
31
+ export async function sha1(message) {
32
+ const encoder = new TextEncoder();
33
+ const data = encoder.encode(message);
34
+ const hashBuffer = await crypto.subtle.digest('SHA-1', data);
35
+ const hashArray = Array.from(new Uint8Array(hashBuffer));
36
+ const hashHex = hashArray.map(byte => byte.toString(16).padStart(2, '0')).join('');
37
+ return hashHex;
38
+ }
39
+ export async function blobToSha1(blob) {
40
+ const buffer = await blob.arrayBuffer();
41
+ const hashBuffer = await crypto.subtle.digest('SHA-1', buffer);
42
+ const hashArray = Array.from(new Uint8Array(hashBuffer));
43
+ const hashHex = hashArray.map(byte => byte.toString(16).padStart(2, '0')).join('');
44
+ return hashHex;
45
+ }
46
+ //# sourceMappingURL=misc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.js","sourceRoot":"","sources":["../../../../src/lib/layeredCanvas/tools/misc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { type Vector } from './geometry/geometry';
2
+ export declare function getSvgPathFromStroke(points: Vector[], closed?: boolean): string;
@@ -0,0 +1,21 @@
1
+ const average = (a, b) => (a + b) / 2;
2
+ export function getSvgPathFromStroke(points, closed = true) {
3
+ const len = points.length;
4
+ if (len < 4) {
5
+ return ``;
6
+ }
7
+ let a = points[0];
8
+ let b = points[1];
9
+ const c = points[2];
10
+ let result = `M${a[0].toFixed(2)},${a[1].toFixed(2)} Q${b[0].toFixed(2)},${b[1].toFixed(2)} ${average(b[0], c[0]).toFixed(2)},${average(b[1], c[1]).toFixed(2)} T`;
11
+ for (let i = 2, max = len - 1; i < max; i++) {
12
+ a = points[i];
13
+ b = points[i + 1];
14
+ result += `${average(a[0], b[0]).toFixed(2)},${average(a[1], b[1]).toFixed(2)} `;
15
+ }
16
+ if (closed) {
17
+ result += 'Z';
18
+ }
19
+ return result;
20
+ }
21
+ //# sourceMappingURL=perfectFreehandUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perfectFreehandUtil.js","sourceRoot":"","sources":["../../../../src/lib/layeredCanvas/tools/perfectFreehandUtil.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;AAErD,MAAM,UAAU,oBAAoB,CAAC,MAAgB,EAAE,MAAM,GAAG,IAAI;IAClE,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAA;IAEzB,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACZ,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IACjB,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IACjB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IAEnB,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAClE,CAAC,CACF,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAC/D,CAAC,CAAC,CAAC,CAAC,EACJ,CAAC,CAAC,CAAC,CAAC,CACL,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACb,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACjB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CACxE,CAAC,CACF,GAAG,CAAA;IACN,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,IAAI,GAAG,CAAA;IACf,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Vector } from './geometry/geometry';
2
+ export declare function translate(p: Vector, f: (t: Vector) => void): Generator<undefined, void, Vector>;
3
+ export declare function scale([w, h]: Vector, p: Vector, f: (s: Vector) => void): Generator<undefined, void, Vector>;
4
+ export declare function rotate(p: Vector, f: (r: number) => void): Generator<undefined, void, Vector>;
@@ -0,0 +1,24 @@
1
+ export function* translate(p, f) {
2
+ let dragStart = p;
3
+ while (p = yield) {
4
+ const dragOffset = [p[0] - dragStart[0], p[1] - dragStart[1]];
5
+ f(dragOffset);
6
+ }
7
+ }
8
+ export function* scale([w, h], p, f) {
9
+ let dragStart = p;
10
+ while (p = yield) {
11
+ const dragOffset = [p[0] - dragStart[0], p[1] - dragStart[1]];
12
+ let xScale = 1 + dragOffset[0] / w;
13
+ let yScale = 1 + dragOffset[0] / h;
14
+ f([xScale, yScale]);
15
+ }
16
+ }
17
+ export function* rotate(p, f) {
18
+ let dragStart = p;
19
+ while (p = yield) {
20
+ const dragOffset = p[0] - dragStart[0];
21
+ f(dragOffset);
22
+ }
23
+ }
24
+ //# sourceMappingURL=pictureControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pictureControl.js","sourceRoot":"","sources":["../../../../src/lib/layeredCanvas/tools/pictureControl.ts"],"names":[],"mappings":"AAEA,MAAM,SAAU,CAAC,CAAA,SAAS,CAAC,CAAS,EAAE,CAAsB;IAC1D,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,OAAO,CAAC,GAAG,KAAK,EAAE,CAAC;QACjB,MAAM,UAAU,GAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,UAAU,CAAC,CAAC;IAChB,CAAC;AACH,CAAC;AAED,MAAM,SAAU,CAAC,CAAA,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,CAAsB;IACtE,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,OAAO,CAAC,GAAG,KAAK,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAI,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,SAAU,CAAC,CAAA,MAAM,CAAC,CAAS,EAAE,CAAsB;IACvD,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,OAAO,CAAC,GAAG,KAAK,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,UAAU,CAAC,CAAC;IAChB,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export type RectCornerHandle = "topLeft" | "topRight" | "bottomLeft" | "bottomRight";
2
+ export type RectSideHandle = "top" | "bottom" | "left" | "right";
3
+ export type RectHandle = RectCornerHandle | RectSideHandle;
4
+ export declare const rectCornerHandles: RectCornerHandle[];
5
+ export declare const rectSideHandles: RectSideHandle[];
6
+ export declare const rectHandles: RectHandle[];
@@ -0,0 +1,17 @@
1
+ export const rectCornerHandles = [
2
+ "topLeft",
3
+ "topRight",
4
+ "bottomLeft",
5
+ "bottomRight"
6
+ ];
7
+ export const rectSideHandles = [
8
+ "top",
9
+ "bottom",
10
+ "left",
11
+ "right"
12
+ ];
13
+ export const rectHandles = [
14
+ ...rectCornerHandles,
15
+ ...rectSideHandles
16
+ ];
17
+ //# sourceMappingURL=rectHandle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rectHandle.js","sourceRoot":"","sources":["../../../../src/lib/layeredCanvas/tools/rectHandle.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,iBAAiB,GAAuB;IACnD,SAAS;IACT,UAAU;IACV,YAAY;IACZ,aAAa;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C,KAAK;IACL,QAAQ;IACR,MAAM;IACN,OAAO;CACR,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,GAAG,iBAAiB;IACpB,GAAG,eAAe;CACnB,CAAC"}