abstract-3d 0.8.4 → 0.8.6
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.
- package/lib/renderers/svg/index.d.ts +2 -1
- package/lib/renderers/svg/index.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/shared.d.ts +1 -0
- package/lib/renderers/svg/svg-geometries/shared.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-plane.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-plane.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-plane.js +4 -16
- package/lib/renderers/svg/svg-geometries/svg-plane.js.map +1 -1
- package/lib/renderers/svg/svg.d.ts +2 -1
- package/lib/renderers/svg/svg.d.ts.map +1 -1
- package/lib/renderers/svg/svg.js +0 -1
- package/lib/renderers/svg/svg.js.map +1 -1
- package/package.json +2 -2
- package/src/renderers/svg/index.ts +2 -1
- package/src/renderers/svg/svg-geometries/shared.ts +5 -0
- package/src/renderers/svg/svg-geometries/svg-plane.ts +8 -22
- package/src/renderers/svg/svg.ts +5 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/renderers/svg/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/renderers/svg/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -9,4 +9,5 @@ export declare const gray = "rgb(85, 85, 85)";
|
|
|
9
9
|
export declare const white = "rgb(255, 255, 255)";
|
|
10
10
|
export declare const transparent = "rgba(255, 255, 255, 0)";
|
|
11
11
|
export declare const black = "rgb(15, 15, 15)";
|
|
12
|
+
export type ImageDataUri = `data:image/png;base64,${string}` | `data:image/jpeg;base64,${string}` | `data:image/svg+xml,${string}`;
|
|
12
13
|
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/shared.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAClF,eAAO,MAAM,KAAK,GAAI,SAAS,MAAM,EAAE,QAAQ,MAAM,KAAG,aAAsC,CAAC;AAE/F,eAAO,MAAM,IAAI,MAAM,CAAC;AACxB,eAAO,MAAM,GAAG,MAAM,CAAC;AAEvB,eAAO,MAAM,IAAI,oBAAoB,CAAC;AACtC,eAAO,MAAM,KAAK,uBAAuB,CAAC;AAC1C,eAAO,MAAM,WAAW,2BAA2B,CAAC;AACpD,eAAO,MAAM,KAAK,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/shared.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAClF,eAAO,MAAM,KAAK,GAAI,SAAS,MAAM,EAAE,QAAQ,MAAM,KAAG,aAAsC,CAAC;AAE/F,eAAO,MAAM,IAAI,MAAM,CAAC;AACxB,eAAO,MAAM,GAAG,MAAM,CAAC;AAEvB,eAAO,MAAM,IAAI,oBAAoB,CAAC;AACtC,eAAO,MAAM,KAAK,uBAAuB,CAAC;AAC1C,eAAO,MAAM,WAAW,2BAA2B,CAAC;AACpD,eAAO,MAAM,KAAK,oBAAoB,CAAC;AAEvC,MAAM,MAAM,YAAY,GACpB,yBAAyB,MAAM,EAAE,GACjC,0BAA0B,MAAM,EAAE,GAClC,sBAAsB,MAAM,EAAE,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Plane, Vec2, Vec3, View, Material } from "../../../abstract-3d.js";
|
|
2
|
-
import { zOrderElement } from "./shared.js";
|
|
3
|
-
export declare function plane(p: Plane, point: (x: number, y: number) => Vec2, material: Material, onlyStroke: boolean | undefined, grayScale: boolean | undefined, stroke: number, onlyStrokeFill: string, parentPos: Vec3, parentRot: Vec3, view: View, imageDataByUrl: Record<string,
|
|
2
|
+
import { zOrderElement, ImageDataUri } from "./shared.js";
|
|
3
|
+
export declare function plane(p: Plane, point: (x: number, y: number) => Vec2, material: Material, onlyStroke: boolean | undefined, grayScale: boolean | undefined, stroke: number, onlyStrokeFill: string, parentPos: Vec3, parentRot: Vec3, view: View, imageDataByUrl: Record<string, ImageDataUri> | undefined): ReadonlyArray<zOrderElement>;
|
|
4
4
|
//# sourceMappingURL=svg-plane.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-plane.d.ts","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-plane.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,EASJ,QAAQ,EACT,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAsB,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"svg-plane.d.ts","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-plane.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,EASJ,QAAQ,EACT,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAsB,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI9E,wBAAgB,KAAK,CACnB,CAAC,EAAE,KAAK,EACR,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,EACrC,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,OAAO,GAAG,SAAS,EAC/B,SAAS,EAAE,OAAO,GAAG,SAAS,EAC9B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,IAAI,EACf,SAAS,EAAE,IAAI,EACf,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,SAAS,GACvD,aAAa,CAAC,aAAa,CAAC,CAkC9B"}
|
|
@@ -12,10 +12,10 @@ export function plane(p, point, material, onlyStroke, grayScale, stroke, onlyStr
|
|
|
12
12
|
const v3 = vec3tr(half.x, half.y);
|
|
13
13
|
const v4 = vec3tr(-half.x, half.y);
|
|
14
14
|
const imageData = material.imageUrl ? imageDataByUrl?.[material.imageUrl] : undefined;
|
|
15
|
-
const image =
|
|
16
|
-
? { type: "svg", svg: imageData }
|
|
15
|
+
const image = imageData?.startsWith(rawSvgPrefix)
|
|
16
|
+
? { type: "svg", svg: imageData.slice(rawSvgPrefix.length) }
|
|
17
17
|
: material.imageUrl
|
|
18
|
-
? { type: "url", url: imageData
|
|
18
|
+
? { type: "url", url: imageData ?? material.imageUrl }
|
|
19
19
|
: undefined;
|
|
20
20
|
if (view === "front" && image) {
|
|
21
21
|
const [leftX, rightX] = v4.x > v2.x ? [v2.x, v4.x] : [v4.x, v2.x];
|
|
@@ -32,17 +32,5 @@ export function plane(p, point, material, onlyStroke, grayScale, stroke, onlyStr
|
|
|
32
32
|
: [black, grayScale ? rgbGrayScale(material.normal) : material.normal, 0];
|
|
33
33
|
return [zElem(svgPolygon(points, fill, strokeColor, strokeThickness), vec3ZMean(v1, v2, v3, v4))];
|
|
34
34
|
}
|
|
35
|
-
|
|
36
|
-
const imageFormat = u8[0] === 0xff && u8[1] === 0xd8 ? "image/jpeg" : "image/png";
|
|
37
|
-
// Node
|
|
38
|
-
if (typeof Buffer !== "undefined") {
|
|
39
|
-
return `data:${imageFormat};base64,${Buffer.from(u8).toString("base64")}`;
|
|
40
|
-
}
|
|
41
|
-
// Browser
|
|
42
|
-
let bin = "";
|
|
43
|
-
for (const e of u8) {
|
|
44
|
-
bin += String.fromCharCode(e);
|
|
45
|
-
}
|
|
46
|
-
return `data:${imageFormat};base64,${btoa(bin)}`;
|
|
47
|
-
}
|
|
35
|
+
const rawSvgPrefix = "data:image/svg+xml,";
|
|
48
36
|
//# sourceMappingURL=svg-plane.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-plane.js","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-plane.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,SAAS,EACT,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,SAAS,GAEV,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"svg-plane.js","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-plane.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,SAAS,EACT,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,SAAS,GAEV,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAA+B,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAgB,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,UAAU,KAAK,CACnB,CAAQ,EACR,KAAqC,EACrC,QAAkB,EAClB,UAA+B,EAC/B,SAA8B,EAC9B,MAAc,EACd,cAAsB,EACtB,SAAe,EACf,SAAe,EACf,IAAU,EACV,cAAwD;IAExD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,CAAS,EAAQ,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAErF,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEnC,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,MAAM,KAAK,GAA6B,SAAS,EAAE,UAAU,CAAC,YAAY,CAAC;QACzE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;QAC5D,CAAC,CAAC,QAAQ,CAAC,QAAQ;YACnB,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,IAAI,QAAQ,CAAC,QAAQ,EAAE;YACtD,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,IAAI,KAAK,OAAO,IAAI,KAAK,EAAE,CAAC;QAC9B,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAClE,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7G,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5F,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,eAAe,CAAC,GAAG,UAAU;QACrD,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC;QAC9D,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,YAAY,GAAG,qBAAqB,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Scene, View } from "../../abstract-3d.js";
|
|
2
|
+
import { ImageDataUri } from "./svg-geometries/shared.js";
|
|
2
3
|
export declare function toSvg(scene: Scene, view: View, stroke: number, scale?: {
|
|
3
4
|
readonly size: number;
|
|
4
5
|
readonly scaleByWidth: boolean;
|
|
5
|
-
}, onlyStroke?: boolean, grayScale?: boolean, onlyStrokeFill?: string, font?: string, imageDataByUrl?: Record<string,
|
|
6
|
+
}, onlyStroke?: boolean, grayScale?: boolean, onlyStrokeFill?: string, font?: string, imageDataByUrl?: Record<string, ImageDataUri>, rotation?: number): {
|
|
6
7
|
readonly image: string;
|
|
7
8
|
readonly width: number;
|
|
8
9
|
readonly height: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../../../src/renderers/svg/svg.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,EACL,IAAI,EAWL,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../../../src/renderers/svg/svg.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,EACL,IAAI,EAWL,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAiB,MAAM,4BAA4B,CAAC;AAYzE,wBAAgB,KAAK,CACnB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;CAAE,EACjE,UAAU,CAAC,EAAE,OAAO,EACpB,SAAS,CAAC,EAAE,OAAO,EACnB,cAAc,GAAE,MAA8B,EAC9C,IAAI,GAAE,MAAW,EACjB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAC7C,QAAQ,CAAC,EAAE,MAAM,GAChB;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAgE7E"}
|
package/lib/renderers/svg/svg.js
CHANGED
|
@@ -10,7 +10,6 @@ import { text } from "./svg-geometries/svg-text.js";
|
|
|
10
10
|
import { cone } from "./svg-geometries/svg-cone.js";
|
|
11
11
|
import { rotationForCameraPos, sizeCenterForCameraPos } from "../shared.js";
|
|
12
12
|
import { svg } from "./svg-encoding.js";
|
|
13
|
-
// dummy
|
|
14
13
|
export function toSvg(scene, view, stroke, scale, onlyStroke, grayScale, onlyStrokeFill = "rgba(255,255,255,0)", font = "", imageDataByUrl, rotation) {
|
|
15
14
|
const factor = scale
|
|
16
15
|
? scale.size /
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg.js","sourceRoot":"","sources":["../../../src/renderers/svg/svg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,IAAI,EACJ,SAAS,EAKT,OAAO,EACP,QAAQ,EACR,cAAc,EACd,IAAI,EAGJ,YAAY,GAEb,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,
|
|
1
|
+
{"version":3,"file":"svg.js","sourceRoot":"","sources":["../../../src/renderers/svg/svg.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "abstract-3d",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.6",
|
|
4
4
|
"description": "Abstract 3D",
|
|
5
5
|
"author": "Divid AB <info@divid.se>",
|
|
6
6
|
"repository": "https://github.com/dividab/abstract-visuals/tree/master/packages/abstract-3d",
|
|
@@ -33,5 +33,5 @@
|
|
|
33
33
|
"@types/three": "^0.174.0",
|
|
34
34
|
"react": "^19.0.0"
|
|
35
35
|
},
|
|
36
|
-
"gitHead": "
|
|
36
|
+
"gitHead": "dc840ebd0418fc2c9f80d3731304f8caa125a546"
|
|
37
37
|
}
|
|
@@ -8,3 +8,8 @@ export const gray = "rgb(85, 85, 85)";
|
|
|
8
8
|
export const white = "rgb(255, 255, 255)";
|
|
9
9
|
export const transparent = "rgba(255, 255, 255, 0)";
|
|
10
10
|
export const black = "rgb(15, 15, 15)";
|
|
11
|
+
|
|
12
|
+
export type ImageDataUri =
|
|
13
|
+
| `data:image/png;base64,${string}`
|
|
14
|
+
| `data:image/jpeg;base64,${string}`
|
|
15
|
+
| `data:image/svg+xml,${string}`;
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
vec3ZMean,
|
|
14
14
|
Material,
|
|
15
15
|
} from "../../../abstract-3d.js";
|
|
16
|
-
import { gray, black, zElem, zOrderElement } from "./shared.js";
|
|
16
|
+
import { gray, black, zElem, zOrderElement, ImageDataUri } from "./shared.js";
|
|
17
17
|
import { EmbededImage, svgImage, svgPolygon } from "../svg-encoding.js";
|
|
18
18
|
import { rgbGrayScale } from "../../shared.js";
|
|
19
19
|
|
|
@@ -28,7 +28,7 @@ export function plane(
|
|
|
28
28
|
parentPos: Vec3,
|
|
29
29
|
parentRot: Vec3,
|
|
30
30
|
view: View,
|
|
31
|
-
imageDataByUrl: Record<string,
|
|
31
|
+
imageDataByUrl: Record<string, ImageDataUri> | undefined
|
|
32
32
|
): ReadonlyArray<zOrderElement> {
|
|
33
33
|
const half = vec2Scale(p.size, 0.5);
|
|
34
34
|
const pos = vec3TransRot(p.pos, parentPos, parentRot);
|
|
@@ -41,12 +41,11 @@ export function plane(
|
|
|
41
41
|
const v4 = vec3tr(-half.x, half.y);
|
|
42
42
|
|
|
43
43
|
const imageData = material.imageUrl ? imageDataByUrl?.[material.imageUrl] : undefined;
|
|
44
|
-
const image: EmbededImage | undefined =
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
: undefined;
|
|
44
|
+
const image: EmbededImage | undefined = imageData?.startsWith(rawSvgPrefix)
|
|
45
|
+
? { type: "svg", svg: imageData.slice(rawSvgPrefix.length) }
|
|
46
|
+
: material.imageUrl
|
|
47
|
+
? { type: "url", url: imageData ?? material.imageUrl }
|
|
48
|
+
: undefined;
|
|
50
49
|
|
|
51
50
|
if (view === "front" && image) {
|
|
52
51
|
const [leftX, rightX] = v4.x > v2.x ? [v2.x, v4.x] : [v4.x, v2.x];
|
|
@@ -66,17 +65,4 @@ export function plane(
|
|
|
66
65
|
return [zElem(svgPolygon(points, fill, strokeColor, strokeThickness), vec3ZMean(v1, v2, v3, v4))];
|
|
67
66
|
}
|
|
68
67
|
|
|
69
|
-
|
|
70
|
-
const imageFormat = u8[0] === 0xff && u8[1] === 0xd8 ? "image/jpeg" : "image/png";
|
|
71
|
-
// Node
|
|
72
|
-
if (typeof Buffer !== "undefined") {
|
|
73
|
-
return `data:${imageFormat};base64,${Buffer.from(u8).toString("base64")}`;
|
|
74
|
-
}
|
|
75
|
-
// Browser
|
|
76
|
-
let bin = "";
|
|
77
|
-
for (const e of u8) {
|
|
78
|
-
bin += String.fromCharCode(e);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
return `data:${imageFormat};base64,${btoa(bin)}`;
|
|
82
|
-
}
|
|
68
|
+
const rawSvgPrefix = "data:image/svg+xml,";
|
package/src/renderers/svg/svg.ts
CHANGED
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
vec3TransRot,
|
|
16
16
|
Material,
|
|
17
17
|
} from "../../abstract-3d.js";
|
|
18
|
-
import { zOrderElement } from "./svg-geometries/shared.js";
|
|
18
|
+
import { ImageDataUri, zOrderElement } from "./svg-geometries/shared.js";
|
|
19
19
|
import { box } from "./svg-geometries/svg-box.js";
|
|
20
20
|
import { cylinder } from "./svg-geometries/svg-cylinder.js";
|
|
21
21
|
import { line } from "./svg-geometries/svg-line.js";
|
|
@@ -25,9 +25,7 @@ import { polygon } from "./svg-geometries/svg-polygon.js";
|
|
|
25
25
|
import { text } from "./svg-geometries/svg-text.js";
|
|
26
26
|
import { cone } from "./svg-geometries/svg-cone.js";
|
|
27
27
|
import { rotationForCameraPos, sizeCenterForCameraPos } from "../shared.js";
|
|
28
|
-
import {
|
|
29
|
-
|
|
30
|
-
// dummy
|
|
28
|
+
import { svg } from "./svg-encoding.js";
|
|
31
29
|
|
|
32
30
|
export function toSvg(
|
|
33
31
|
scene: Scene,
|
|
@@ -38,7 +36,7 @@ export function toSvg(
|
|
|
38
36
|
grayScale?: boolean,
|
|
39
37
|
onlyStrokeFill: string = "rgba(255,255,255,0)",
|
|
40
38
|
font: string = "",
|
|
41
|
-
imageDataByUrl?: Record<string,
|
|
39
|
+
imageDataByUrl?: Record<string, ImageDataUri>,
|
|
42
40
|
rotation?: number
|
|
43
41
|
): { readonly image: string; readonly width: number; readonly height: number } {
|
|
44
42
|
const factor = scale
|
|
@@ -118,7 +116,7 @@ function svgGroup(
|
|
|
118
116
|
onlyStrokeFill: string,
|
|
119
117
|
font: string,
|
|
120
118
|
stroke: number,
|
|
121
|
-
imageDataByUrl
|
|
119
|
+
imageDataByUrl: Record<string, ImageDataUri> | undefined
|
|
122
120
|
): ReadonlyArray<zOrderElement> {
|
|
123
121
|
const elements = Array<zOrderElement>();
|
|
124
122
|
|
|
@@ -177,7 +175,7 @@ function svgMesh(
|
|
|
177
175
|
background: string,
|
|
178
176
|
font: string,
|
|
179
177
|
stroke: number,
|
|
180
|
-
imageDataByUrl: Record<string,
|
|
178
|
+
imageDataByUrl: Record<string, ImageDataUri> | undefined
|
|
181
179
|
): ReadonlyArray<zOrderElement> {
|
|
182
180
|
const color = material.normal;
|
|
183
181
|
switch (mesh.geometry.type) {
|