@mulmoclaude/shapescript-plugin 2.3.0 → 2.4.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.
- package/README.md +7 -2
- package/dist/core/definition.d.ts.map +1 -1
- package/dist/{core-yB1Eiacr.js → core-CvNYv5VF.js} +2 -2
- package/dist/{core-BBgBeYYe.cjs → core-DmD6zaRF.cjs} +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.js +3 -3
- package/dist/index.cjs +1 -1
- package/dist/index.js +3 -3
- package/dist/render.cjs +1 -1
- package/dist/render.js +1 -1
- package/dist/{samples-D2_jOmoh.cjs → samples-BrJ4z8v-.cjs} +9 -4
- package/dist/{samples-CT-c9o1S.js → samples-y59fsGq8.js} +2 -2
- package/dist/shapescript/builders.d.ts +5 -0
- package/dist/shapescript/builders.d.ts.map +1 -1
- package/dist/shapescript/parser.d.ts +15 -0
- package/dist/shapescript/parser.d.ts.map +1 -1
- package/dist/shapescript/text.d.ts +29 -0
- package/dist/shapescript/text.d.ts.map +1 -0
- package/dist/shapescript/toThreeJS.d.ts +15 -1
- package/dist/shapescript/toThreeJS.d.ts.map +1 -1
- package/dist/shapescript/types.d.ts +16 -1
- package/dist/shapescript/types.d.ts.map +1 -1
- package/dist/toThreeJS-CaZGJjfO.cjs +24 -0
- package/dist/{toThreeJS-CKjSbEnA.js → toThreeJS-OGEAi4zV.js} +1445 -1048
- package/dist/vue/index.d.ts +1 -1
- package/dist/vue/index.d.ts.map +1 -1
- package/dist/vue.cjs +4 -2
- package/dist/vue.js +5 -3
- package/package.json +1 -1
- package/dist/toThreeJS-Cs0UJm82.cjs +0 -10
package/README.md
CHANGED
|
@@ -273,8 +273,13 @@ corners, capped at the ends of an open path); an open path extrudes to a two-sid
|
|
|
273
273
|
upstream. `minkowski { a b }` is the hull of two convex solids' vertex sums, and for a
|
|
274
274
|
non-convex operand the merged per-face hulls (overlapping shells, not a boolean union — fine to
|
|
275
275
|
draw, not to feed to another boolean); `inset(mesh d)` slides every vertex to where its faces'
|
|
276
|
-
offset planes meet. `
|
|
277
|
-
|
|
276
|
+
offset planes meet. `text "Hello"` lays glyph outlines out as upstream does — left margin at
|
|
277
|
+
x = 0, first baseline at y = 0, one world unit per line, `size` scaling it, `wrapwidth` and
|
|
278
|
+
`linespacing` as options, values interpolated (`text "Bob has " apples " apples"`) — in a bundled
|
|
279
|
+
Helvetica-like face (Helvetiker; `font` is accepted and skipped with a warning, and a character
|
|
280
|
+
the face lacks draws as `?`). Bare `text` draws outlines; `fill` and `extrude` turn it into faces
|
|
281
|
+
and solids, holes included, and it is a value with `.bounds`. `import`, `svgpath`, `object` values
|
|
282
|
+
and paths as values are refused with a message naming the feature. Textures,
|
|
278
283
|
normal maps, `camera` and `light` blocks are accepted and skipped with a warning that the
|
|
279
284
|
tool result and the View both report. Unsupported commands and failed CSG operations return
|
|
280
285
|
errors instead of silently substituting different geometry. As with other polygonal CSG
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/core/definition.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,uBAAuB,CAAC;AAE9C,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/core/definition.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,uBAAuB,CAAC;AAE9C,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;CA4R3B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { _ as e, a as t, u as n } from "./samples-
|
|
2
|
-
import { t as r } from "./toThreeJS-
|
|
1
|
+
import { _ as e, a as t, u as n } from "./samples-y59fsGq8.js";
|
|
2
|
+
import { t as r } from "./toThreeJS-OGEAi4zV.js";
|
|
3
3
|
//#region src/export/tool.ts
|
|
4
4
|
var i = "exportShapeScriptUsdz", a = r + 3e4, o = "Export a ShapeScript model to a USDZ file (Apple's AR / 3D format, openable with AR Quick Look on iPhone, iPad and Mac) and save it under artifacts/shapes/. Returns the saved path. Takes the same source as presentShapeScript: inline `script`, or `path` to a saved .shape file. USDZ units are metres, so a `size 1` cube becomes a one-metre object in AR — scale the model in the script if that is not what the user wants.", s = "Use exportShapeScriptUsdz when the user wants to take a 3D model out of the chat — to view it in AR, open it in a 3D app, or share the file. It saves a .usdz next to the model's .shape file and returns the path; tell the user where it is. The user can also press \"Download USDZ\" in the model's view themselves.", c = {
|
|
5
5
|
type: "object",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("./samples-
|
|
1
|
+
const e=require("./samples-BrJ4z8v-.cjs"),t=require("./toThreeJS-CaZGJjfO.cjs");var n=`exportShapeScriptUsdz`,r=t.t+3e4,i="Export a ShapeScript model to a USDZ file (Apple's AR / 3D format, openable with AR Quick Look on iPhone, iPad and Mac) and save it under artifacts/shapes/. Returns the saved path. Takes the same source as presentShapeScript: inline `script`, or `path` to a saved .shape file. USDZ units are metres, so a `size 1` cube becomes a one-metre object in AR — scale the model in the script if that is not what the user wants.",a=`Use exportShapeScriptUsdz when the user wants to take a 3D model out of the chat — to view it in AR, open it in a 3D app, or share the file. It saves a .usdz next to the model's .shape file and returns the path; tell the user where it is. The user can also press "Download USDZ" in the model's view themselves.`,o={type:`object`,properties:{script:{type:`string`,description:"ShapeScript source to export. Provide either this or `path`, not both."},path:{type:`string`,description:`Path to an existing .shape file to export (e.g. one presentShapeScript saved under artifacts/shapes/).`},title:{type:`string`,description:"Name for the exported file; it is slugified into the filename. Defaults to the .shape file's own name when `path` is given."}},required:[]};function s(e){return typeof e==`string`&&e.trim()!==``?e:void 0}function c(e){return(e.split(/[\\/]/).pop()??e).replace(/\.shape$/i,``)}async function l(t,n){let r=s(n.script),i=s(n.path),a=s(n.title);if(r&&i)throw Error("Provide either `script` or `path`, not both");if(r)return{script:r,title:a};if(!i)throw Error("Provide either `script` (inline source) or `path` (an existing .shape file)");let o=e.u(t,i);if(!o)throw Error("`path` must name a .shape file, without `.` / `..` segments");if(!await o.files.exists(o.rel))throw Error(`No ShapeScript exists at ${i}`);return{script:await o.files.read(o.rel),title:a??c(i)}}async function u(t,n){let{script:r,title:i}=await l(t,n),a=await e.a(r),{relPath:o,filePath:s}=e._(i);return await t.files.artifacts.write(o,a),{message:`Saved USDZ to ${s} (${a.byteLength} bytes). Open it with AR Quick Look or any USD viewer.`,filePath:s,bytes:a.byteLength}}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}});
|
package/dist/core.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./samples-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./samples-BrJ4z8v-.cjs"),t=require("./toThreeJS-CaZGJjfO.cjs"),n=require("./core-DmD6zaRF.cjs");exports.EXPORT_USDZ_DESCRIPTION=n.t,exports.EXPORT_USDZ_PROMPT=n.n,exports.EXPORT_USDZ_SCHEMA=n.r,exports.EXPORT_USDZ_TOOL_NAME=n.i,exports.EXPORT_USDZ_TOOL_TIMEOUT_MS=n.a,exports.SHAPE_EXTENSIONS=e.d,exports.TOOL_DEFINITION=e.v,exports.TOOL_NAME=e.y,exports.USDZ_EXTENSION=e.n,exports.USDZ_MIME_TYPE=e.r,exports.astToThreeJS=t.r,exports.executeExportShapeScriptUsdz=n.o,exports.executePresentShapeScript=e.o,exports.executeShapeScriptDispatch=e.l,exports.isPresentableShapePath=e.f,exports.isShapeArtifactPath=e.p,exports.isShapeScriptDispatchArgs=t.Bn,exports.locateShape=e.u,exports.parseShapeScript=t.s,exports.pluginCore=e.s,exports.presentShapeScript=e.c,exports.readLoadShapeResult=t.Vn,exports.readSaveShapeResult=t.Hn,exports.samples=e.t,exports.sceneInfoOf=t.i,exports.sceneToUsdz=e.i,exports.shapeArtifactPath=e.m,exports.shapeScriptToUsdz=e.a,exports.toArtifactsRelative=e.g,exports.usdzArtifactPath=e._;
|
package/dist/core.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as e, a as t, c as n, d as r, f as i, g as a, i as o, l as s, m as c, n as l, o as u, p as d, r as f, s as p, t as m, u as h, v as g, y as _ } from "./samples-
|
|
2
|
-
import { Bn as v, Hn as y, Vn as b, i as x, r as S, s as C } from "./toThreeJS-
|
|
3
|
-
import { a as w, i as T, n as E, o as D, r as O, t as k } from "./core-
|
|
1
|
+
import { _ as e, a as t, c as n, d as r, f as i, g as a, i as o, l as s, m as c, n as l, o as u, p as d, r as f, s as p, t as m, u as h, v as g, y as _ } from "./samples-y59fsGq8.js";
|
|
2
|
+
import { Bn as v, Hn as y, Vn as b, i as x, r as S, s as C } from "./toThreeJS-OGEAi4zV.js";
|
|
3
|
+
import { a as w, i as T, n as E, o as D, r as O, t as k } from "./core-CvNYv5VF.js";
|
|
4
4
|
export { k as EXPORT_USDZ_DESCRIPTION, E as EXPORT_USDZ_PROMPT, O as EXPORT_USDZ_SCHEMA, T as EXPORT_USDZ_TOOL_NAME, w as EXPORT_USDZ_TOOL_TIMEOUT_MS, r as SHAPE_EXTENSIONS, g as TOOL_DEFINITION, _ as TOOL_NAME, l as USDZ_EXTENSION, f as USDZ_MIME_TYPE, S as astToThreeJS, D as executeExportShapeScriptUsdz, u as executePresentShapeScript, s as executeShapeScriptDispatch, i as isPresentableShapePath, d as isShapeArtifactPath, v as isShapeScriptDispatchArgs, h as locateShape, C as parseShapeScript, p as pluginCore, n as presentShapeScript, b as readLoadShapeResult, y as readSaveShapeResult, m as samples, x as sceneInfoOf, o as sceneToUsdz, c as shapeArtifactPath, t as shapeScriptToUsdz, a as toArtifactsRelative, e as usdzArtifactPath };
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./samples-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./samples-BrJ4z8v-.cjs"),t=require("./toThreeJS-CaZGJjfO.cjs"),n=require("./core-DmD6zaRF.cjs");exports.EXPORT_USDZ_DESCRIPTION=n.t,exports.EXPORT_USDZ_PROMPT=n.n,exports.EXPORT_USDZ_SCHEMA=n.r,exports.EXPORT_USDZ_TOOL_NAME=n.i,exports.EXPORT_USDZ_TOOL_TIMEOUT_MS=n.a,exports.SHAPE_EXTENSIONS=e.d,exports.TOOL_DEFINITION=e.v,exports.TOOL_NAME=e.y,exports.USDZ_EXTENSION=e.n,exports.USDZ_MIME_TYPE=e.r,exports.astToThreeJS=t.r,exports.executeExportShapeScriptUsdz=n.o,exports.executePresentShapeScript=e.o,exports.executeShapeScriptDispatch=e.l,exports.isPresentableShapePath=e.f,exports.isShapeArtifactPath=e.p,exports.isShapeScriptDispatchArgs=t.Bn,exports.locateShape=e.u,exports.parseShapeScript=t.s,exports.pluginCore=e.s,exports.presentShapeScript=e.c,exports.readLoadShapeResult=t.Vn,exports.readSaveShapeResult=t.Hn,exports.samples=e.t,exports.sceneInfoOf=t.i,exports.sceneToUsdz=e.i,exports.shapeArtifactPath=e.m,exports.shapeScriptToUsdz=e.a,exports.toArtifactsRelative=e.g,exports.usdzArtifactPath=e._;
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as e, a as t, c as n, d as r, f as i, g as a, i as o, l as s, m as c, n as l, o as u, p as d, r as f, s as p, t as m, u as h, v as g, y as _ } from "./samples-
|
|
2
|
-
import { Bn as v, Hn as y, Vn as b, i as x, r as S, s as C } from "./toThreeJS-
|
|
3
|
-
import { a as w, i as T, n as E, o as D, r as O, t as k } from "./core-
|
|
1
|
+
import { _ as e, a as t, c as n, d as r, f as i, g as a, i as o, l as s, m as c, n as l, o as u, p as d, r as f, s as p, t as m, u as h, v as g, y as _ } from "./samples-y59fsGq8.js";
|
|
2
|
+
import { Bn as v, Hn as y, Vn as b, i as x, r as S, s as C } from "./toThreeJS-OGEAi4zV.js";
|
|
3
|
+
import { a as w, i as T, n as E, o as D, r as O, t as k } from "./core-CvNYv5VF.js";
|
|
4
4
|
export { k as EXPORT_USDZ_DESCRIPTION, E as EXPORT_USDZ_PROMPT, O as EXPORT_USDZ_SCHEMA, T as EXPORT_USDZ_TOOL_NAME, w as EXPORT_USDZ_TOOL_TIMEOUT_MS, r as SHAPE_EXTENSIONS, g as TOOL_DEFINITION, _ as TOOL_NAME, l as USDZ_EXTENSION, f as USDZ_MIME_TYPE, S as astToThreeJS, D as executeExportShapeScriptUsdz, u as executePresentShapeScript, s as executeShapeScriptDispatch, i as isPresentableShapePath, d as isShapeArtifactPath, v as isShapeScriptDispatchArgs, h as locateShape, C as parseShapeScript, p as pluginCore, n as presentShapeScript, b as readLoadShapeResult, y as readSaveShapeResult, m as samples, x as sceneInfoOf, o as sceneToUsdz, c as shapeArtifactPath, t as shapeScriptToUsdz, a as toArtifactsRelative, e as usdzArtifactPath };
|
package/dist/render.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,s)=>(s=n==null?{}:e(i(n)),o(r||!n||!n.__esModule||!a.call(n,`default`)?t(s,`default`,{value:n,enumerable:!0}):s,n));const c=require("./toThreeJS-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,s)=>(s=n==null?{}:e(i(n)),o(r||!n||!n.__esModule||!a.call(n,`default`)?t(s,`default`,{value:n,enumerable:!0}):s,n));const c=require("./toThreeJS-CaZGJjfO.cjs");let l=require("node:fs/promises"),u=require("node:module"),d=require("node:url"),f=require("node:path");f=s(f,1);function p(e){let t=Math.ceil(Math.sqrt(e));return{columns:t,rows:Math.ceil(e/t)}}function m(e,t,n){return`import { AmbientLight, Box3, Color, DirectionalLight, GridHelper, MathUtils, ObjectLoader, OrthographicCamera, PerspectiveCamera, Scene, Sphere, Vector3, WebGLRenderer } from ${JSON.stringify(e)};
|
|
2
2
|
|
|
3
3
|
const config = ${t};
|
|
4
4
|
const { columns, rows } = ${n};
|
package/dist/render.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as e, s as t, zn as n } from "./toThreeJS-
|
|
1
|
+
import { r as e, s as t, zn as n } from "./toThreeJS-OGEAi4zV.js";
|
|
2
2
|
import { readFile as r } from "node:fs/promises";
|
|
3
3
|
import { createRequire as i } from "node:module";
|
|
4
4
|
import { pathToFileURL as a } from "node:url";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e=require("./toThreeJS-
|
|
1
|
+
const e=require("./toThreeJS-CaZGJjfO.cjs");let t=require("@mulmoclaude/core/artifacts");var n=`presentShapeScript`,r={type:`function`,name:n,description:"Display interactive 3D visualizations using ShapeScript with expressions, variables, control flow, and functions. A new `script` is saved to `artifacts/shapes/` and the returned `filePath` names it; pass `path` instead to present a source that already exists.",parameters:{type:`object`,properties:{title:{type:`string`,description:`Title for the 3D visualization`},script:{type:`string`,description:`ShapeScript code defining the 3D scene. Supported features and syntax are listed below. Syntax, evaluation, geometry and resource-limit errors are returned as diagnostics; correct the script and retry.
|
|
2
2
|
|
|
3
3
|
## SYNTAX OVERVIEW:
|
|
4
4
|
|
|
@@ -166,7 +166,12 @@ Loft sections must each have one perimeter and enclose an area; extrude/fill pri
|
|
|
166
166
|
An extrude path is a solid only when it is closed (its last point repeats its first); an open path extrudes
|
|
167
167
|
to a wall, as upstream. inset(mesh distance) moves a mesh value's faces inward (outward when negative).
|
|
168
168
|
A material command inside a builder block (extrude { color red … }) colours the result; size on a builder or
|
|
169
|
-
group scales it. Not supported: extrude twist, svgpath
|
|
169
|
+
group scales it. Not supported: extrude twist, svgpath.
|
|
170
|
+
- text "Hello" / text { size 0.5 wrapwidth 3 linespacing 0.2 "Line one" "Line two" }: glyph outlines in the built-in
|
|
171
|
+
Helvetica-like font, left margin at x 0 and first baseline at y 0, one unit per line (size scales it). Bare text draws
|
|
172
|
+
outlines; fill text "Hi" makes faces and extrude { size 1 1 0.3 text "Hi" } solids. Values interpolate:
|
|
173
|
+
text "Bob has " apples " apples", text i. Centre it with its bounds: define t text "Hi" then
|
|
174
|
+
translate -t.bounds.width/2 -t.bounds.height/2 before fill t. font is accepted and ignored (one face only).
|
|
170
175
|
- mesh { polygon { point x y z … } … }: a mesh from explicit faces; polygon { color red point a point b point c }
|
|
171
176
|
takes 3D points (a tuple works: point v) and a colour per face. Faces may come from a function: mesh { for f in faces { face f } }.
|
|
172
177
|
|
|
@@ -196,8 +201,8 @@ post { height 3 }
|
|
|
196
201
|
### Compatibility:
|
|
197
202
|
This plugin implements the documented modeling subset, not all upstream ShapeScript syntax; units, scoping,
|
|
198
203
|
materials and path semantics follow upstream, so a script written against the upstream docs renders the
|
|
199
|
-
same here. Not supported (each is refused by name): import,
|
|
200
|
-
object values and paths as values. Textures, cameras and lights are accepted but not drawn.
|
|
204
|
+
same here. Not supported (each is refused by name): import, svgpath, extrude twist,
|
|
205
|
+
object values and paths as values. Textures, fonts, cameras and lights are accepted but not drawn.
|
|
201
206
|
|
|
202
207
|
### Comments:
|
|
203
208
|
// Single-line comment
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Rn as e, a as t, g as n, i as r, n as i, ot as a, r as o, s, zn as c } from "./toThreeJS-
|
|
1
|
+
import { Rn as e, a as t, g as n, i as r, n as i, ot as a, r as o, s, zn as c } from "./toThreeJS-OGEAi4zV.js";
|
|
2
2
|
import { ARTIFACTS_ROOT as l, buildArtifactRelPath as u, classifyFilePath as d, hasUnsafePathSegment as f, slugifyArtifact as p, toWorkspaceArtifactPath as m } from "@mulmoclaude/core/artifacts";
|
|
3
3
|
//#region src/core/definition.ts
|
|
4
4
|
var h = "presentShapeScript", g = {
|
|
@@ -14,7 +14,7 @@ var h = "presentShapeScript", g = {
|
|
|
14
14
|
},
|
|
15
15
|
script: {
|
|
16
16
|
type: "string",
|
|
17
|
-
description: "ShapeScript code defining the 3D scene. Supported features and syntax are listed below. Syntax, evaluation, geometry and resource-limit errors are returned as diagnostics; correct the script and retry.\n\n## SYNTAX OVERVIEW:\n\n### Expressions & Operators:\n- Arithmetic: +, -, *, /, % with proper precedence\n- Comparison: =, <>, <, <=, >, >=\n- Boolean: and, or, not\n- Parentheses for grouping: (2 + 3) * 4\n\n### Variables:\ndefine radius 2\ndefine red (1 0 0)\nsphere {\n size radius\n color red\n}\n\n### Control Flow:\n\nFor loops with variables:\nfor i in 1 to 5 {\n cube {\n position (i * 2) 0 0\n size 1\n }\n}\n\nFor loops with step:\nfor i in 0 to 10 step 2 {\n sphere { position 0 i 0 }\n}\n\nIf/else conditionals:\ndefine showSphere 1\nif showSphere {\n sphere { size 2 }\n} else {\n cube { size 2 }\n}\n\nSwitch statements:\ndefine shape 2\nswitch shape {\ncase 1\n cube\ncase 2\n sphere\nelse\n cone\n}\n\n### Built-in Functions:\n\nMath: round, floor, ceil, abs, sign, sqrt, pow, min, max\nTrig: sin, cos, tan, asin, acos, atan, atan2 (uses radians)\nVector: dot, cross, length, normalize, sum\nColour: rgb(r g b [a]), hsb(h s b [a]); strings: join, split, trim\n\nTwo call spellings, both as upstream: C-like max(0 (j - 1)) with NO space before the parenthesis, or the\nbare form max 0 (j - 1) / sqrt 9 / sin pi / 2, where the function takes every value after it. Separate\narguments with spaces; commas also work here (max(0, j - 1)) but NOT in the upstream ShapeScript app.\nInside a larger expression parenthesise a bare call: (sqrt 9) + (sqrt 16).\nCustom functions: define hyp(a b) { sqrt(a * a + b * b) } — parameters, optional defines, then the result\nexpression. A function may also build shapes: define face(data) { polygon { … } } returns what it built.\nWrite ONE statement per line. This parser accepts \"define a 1 define b 2\" on one line; the upstream app\nrejects it, and \"size 2 1 radius 0.5\" on one line reads radius as a fourth size component in both.\n\nExamples:\nfor i in 1 to 8 {\n define angle (i * 0.785) // 45 degrees in radians\n cube { position (cos(angle) * 3) 0 (sin(angle) * 3) }\n}\n\n### Primitives & Properties:\n\nShapes: cube, sphere, icosphere, cylinder, cone, torus, circle, square, roundrect (radius 0–0.5 of the smaller side), polygon (sides 3–256)\nProperties: position X Y Z, orientation ROLL YAW PITCH (alias: rotation), size X Y Z, detail N, smoothing N, name \"label\"\nMaterials (as properties or as scoped commands): color, opacity, metallicity, roughness, glow, material NAME\n- color takes 1–4 values: luminance, luminance+alpha, RGB, RGBA. Also hex #F00 / #FF0000 / #FF000080, the names\n black blue green cyan red magenta purple yellow white orange gray/grey, hsb(...), and \"color red 0.5\" to set alpha.\n- opacity multiplies through nested scopes (opacity 0.5 twice = 0.25); glow is an emissive colour; smoothing 0 = flat shading.\n- define shiny material { color blue metallicity 1 roughness 0.1 } bundles properties; apply with material shiny.\n- texture \"file.png\" and background \"file.png\" are accepted with a warning (not drawn); background R G B sets the scene colour.\n- camera { … } and light { … } blocks are accepted and skipped with a warning.\n\nUNITS (same as upstream ShapeScript — https://shapescript.info/mac/):\n- size is the DIAMETER of sphere/icosphere/cylinder/cone/circle/polygon/torus (a bare sphere fits the unit cube); for cube/square it is the edge length. size 1 2 means 1 2 1 (the third value repeats the first).\n- orientation / rotate use HALF-TURNS in roll (Z), yaw (Y), pitch (X) order: 0.5 = 90°, 1 = 180°. Positive is clockwise. A lone value is a roll: orientation 0.25 = 45° about Z. Angle-axis also works: orientation 0.5 0 1 0.\n- rotate / translate / scale as commands are relative and accumulate; orientation as a command is absolute.\n- SCOPE: a shape block, group, builder or custom block resets transforms and materials at its closing brace.\n for / if / switch bodies do NOT: a translate inside a loop carries on after it (upstream's rule). Symbols\n (define) are scoped by every block.\n- Trig FUNCTIONS (sin, cos, …) still take radians. Convert with pi: a half-turn value h is h * pi radians.\n\n### CSG Operations:\nunion, difference, intersection, xor, stencil\n\nExample:\ndifference {\n sphere {\n size 2\n color (1 0.5 0)\n }\n cube { size 1.5 }\n}\n\n### Paths:\npath { point X Y … } — coordinates are ABSOLUTE in the path's frame. Close a path by repeating the first point.\nA bare path draws as a LINE (stroke), as upstream; use fill / extrude / lathe / loft to make a surface or solid.\n- arc { angle A } inside a path: A half-turns clockwise from +Y, radius size/2 (default 0.5), with optional\n position / orientation / size — e.g. two quarter arcs and two points make a rounded slab.\n- curve X Y is a quadratic Bézier CONTROL point: the outline passes through the point commands on either side, not through it. Two curves in a row get an implicit on-curve midpoint, so eight curves in an octagon draw a circle.\n- A path may carry position / orientation / size of its own (path { position 0 0 2 orientation 0 0.5 0 point … }); that is how a loft section is placed in 3D. Give loft and extrude PATH children, not fill{} meshes — the upstream app rejects a mesh there.\n- rotate (half-turns) / translate / scale inside a path move the frame for later points:\n path {\n for 0 to 8 {\n curve 0 1\n rotate 1 / 8\n }\n } // semicircle\n\n### Builders:\n- extrude: extrude polygon { sides 3 } / extrude { … } or an inline path (size X Y scale the profile, size Z = depth, default 1):\n extrude path {\n point 0 0\n point 1 0\n point 0 1\n point 0 0\n }\n- fill: fill { square } or fill path { ... }\n- lathe (revolves the XY profile about Y):\n lathe path {\n point 0 0\n point 1 0\n curve 1.5 1\n point 1 2\n point 0 2\n }\n- loft (closed planar sections joined with caps):\n loft {\n square\n translate 0 0 2\n circle\n }\n- hull (convex envelope):\n hull {\n cube { position -1 0 0 }\n cube { position 1 0 0 }\n }\n- stencil preserves the first shape and paints its surface with later shapes' materials.\n- minkowski (the Minkowski sum; with inset it rounds edges, as upstream's Fillet example does):\n define fillet(source radius) {\n minkowski {\n inset(source radius)\n sphere { size radius * 2 }\n }\n }\n fillet(cone { color red } 0.1)\n- extrude … along (a section swept along a path, capped at the ends of an open path):\n extrude {\n circle { size 0.1 }\n along path { for i in 0 to 20 { curve 0 1 - i / 20 rotate 0.2 } }\n }\nLoft sections must each have one perimeter and enclose an area; extrude/fill primitive profiles must lie in XY.\nAn extrude path is a solid only when it is closed (its last point repeats its first); an open path extrudes\nto a wall, as upstream. inset(mesh distance) moves a mesh value's faces inward (outward when negative).\nA material command inside a builder block (extrude { color red … }) colours the result; size on a builder or\ngroup scales it. Not supported: extrude twist, svgpath, text.\n- mesh { polygon { point x y z … } … }: a mesh from explicit faces; polygon { color red point a point b point c }\n takes 3D points (a tuple works: point v) and a colour per face. Faces may come from a function: mesh { for f in faces { face f } }.\n\n### Additional Expressions:\n- Constants: pi, true, false (tau exists here but NOT in the upstream app; write 2 * pi)\n- A lone position / translate value is X alone (position 1 = 1 0 0); a lone size is uniform; a lone orientation is a roll.\n- Scientific notation and unary plus: 1e-3, +2\n- Ranges as values: define loops 1 to 5 step 2, then for i in loops { … }, for i in loops step 1, and\n \"if 3 in loops\"; the in operator also tests tuples (2 in (1 2 3)) and strings.\n- Tuple/vector members: .x .y .z, .width .height .depth, .roll .yaw .pitch, .red .green .blue .alpha, .hue .saturation .brightness\n- Tuple/string length: value.count; zero-based indexing values[0], negative from the end values[-1], by name values[\"y\"];\n ordinals: v.first v.second … v.last, v.allButFirst, v.allButLast\n- String literals, join(...), split(...), trim(...); min/max also accept tuples\n- print a b … records output that is returned with the tool result; assert condition stops the script when false\n- Custom shapes with options:\ndefine post {\n option height 2\n cylinder { size 0.2 height }\n}\npost { height 3 }\n- Random numbers: rnd (0–1) and seed N (scoped to the enclosing block, same generator as upstream)\n- Shapes as values: define ico icosphere { detail 0 } then ico (places it), ico.polygons (faces, each with\n .center .points .bounds), ico.triangles, ico.bounds (.min .max .center .size .width .height .depth), ico.volume.\n- for / if as expressions: define scales for i in 1 to 3 { i / 3 }; define c if big { red } else { white }\n- Functions may build shapes: define face(data) { polygon { … } } and are called bare as statements: face data\n\n### Compatibility:\nThis plugin implements the documented modeling subset, not all upstream ShapeScript syntax; units, scoping,\nmaterials and path semantics follow upstream, so a script written against the upstream docs renders the\nsame here. Not supported (each is refused by name): import, text/font, svgpath, extrude twist,\nobject values and paths as values. Textures, cameras and lights are accepted but not drawn.\n\n### Comments:\n// Single-line comment\n/* Multi-line\n comment */\n\n## COMPLETE EXAMPLES:\n\nLinear arrangement with expressions:\ndefine spacing 1.5\nfor i in 1 to 4 {\n cylinder {\n position ((i - 2.5) * spacing) 0 0\n size 0.4 1\n }\n}\n\nCircular pattern:\ndefine count 12\nfor i in 1 to count {\n define angle ((i / count) * 6.283) // 2 * PI\n cube {\n position (cos(angle) * 3) 0 (sin(angle) * 3)\n color (i / count) 0.5 (1 - i / count)\n size 0.5\n }\n}\n\nConditional geometry:\ndefine makeHollow 1\nif makeHollow {\n difference {\n sphere {\n size 2\n color (1 0 0)\n }\n sphere { size 1.7 }\n }\n} else {\n sphere {\n size 2\n color (1 0 0)\n }\n}\n\nMathematical visualization:\nfor x in -5 to 5 {\n for z in -5 to 5 {\n define height (sin(x * 0.5) * cos(z * 0.5) * 2)\n cube {\n position (x * 0.3) height (z * 0.3)\n size 0.25 (abs(height) + 0.1) 0.25\n color (0.5 + height * 0.25) 0.3 (0.5 - height * 0.25)\n }\n }\n}"
|
|
17
|
+
description: "ShapeScript code defining the 3D scene. Supported features and syntax are listed below. Syntax, evaluation, geometry and resource-limit errors are returned as diagnostics; correct the script and retry.\n\n## SYNTAX OVERVIEW:\n\n### Expressions & Operators:\n- Arithmetic: +, -, *, /, % with proper precedence\n- Comparison: =, <>, <, <=, >, >=\n- Boolean: and, or, not\n- Parentheses for grouping: (2 + 3) * 4\n\n### Variables:\ndefine radius 2\ndefine red (1 0 0)\nsphere {\n size radius\n color red\n}\n\n### Control Flow:\n\nFor loops with variables:\nfor i in 1 to 5 {\n cube {\n position (i * 2) 0 0\n size 1\n }\n}\n\nFor loops with step:\nfor i in 0 to 10 step 2 {\n sphere { position 0 i 0 }\n}\n\nIf/else conditionals:\ndefine showSphere 1\nif showSphere {\n sphere { size 2 }\n} else {\n cube { size 2 }\n}\n\nSwitch statements:\ndefine shape 2\nswitch shape {\ncase 1\n cube\ncase 2\n sphere\nelse\n cone\n}\n\n### Built-in Functions:\n\nMath: round, floor, ceil, abs, sign, sqrt, pow, min, max\nTrig: sin, cos, tan, asin, acos, atan, atan2 (uses radians)\nVector: dot, cross, length, normalize, sum\nColour: rgb(r g b [a]), hsb(h s b [a]); strings: join, split, trim\n\nTwo call spellings, both as upstream: C-like max(0 (j - 1)) with NO space before the parenthesis, or the\nbare form max 0 (j - 1) / sqrt 9 / sin pi / 2, where the function takes every value after it. Separate\narguments with spaces; commas also work here (max(0, j - 1)) but NOT in the upstream ShapeScript app.\nInside a larger expression parenthesise a bare call: (sqrt 9) + (sqrt 16).\nCustom functions: define hyp(a b) { sqrt(a * a + b * b) } — parameters, optional defines, then the result\nexpression. A function may also build shapes: define face(data) { polygon { … } } returns what it built.\nWrite ONE statement per line. This parser accepts \"define a 1 define b 2\" on one line; the upstream app\nrejects it, and \"size 2 1 radius 0.5\" on one line reads radius as a fourth size component in both.\n\nExamples:\nfor i in 1 to 8 {\n define angle (i * 0.785) // 45 degrees in radians\n cube { position (cos(angle) * 3) 0 (sin(angle) * 3) }\n}\n\n### Primitives & Properties:\n\nShapes: cube, sphere, icosphere, cylinder, cone, torus, circle, square, roundrect (radius 0–0.5 of the smaller side), polygon (sides 3–256)\nProperties: position X Y Z, orientation ROLL YAW PITCH (alias: rotation), size X Y Z, detail N, smoothing N, name \"label\"\nMaterials (as properties or as scoped commands): color, opacity, metallicity, roughness, glow, material NAME\n- color takes 1–4 values: luminance, luminance+alpha, RGB, RGBA. Also hex #F00 / #FF0000 / #FF000080, the names\n black blue green cyan red magenta purple yellow white orange gray/grey, hsb(...), and \"color red 0.5\" to set alpha.\n- opacity multiplies through nested scopes (opacity 0.5 twice = 0.25); glow is an emissive colour; smoothing 0 = flat shading.\n- define shiny material { color blue metallicity 1 roughness 0.1 } bundles properties; apply with material shiny.\n- texture \"file.png\" and background \"file.png\" are accepted with a warning (not drawn); background R G B sets the scene colour.\n- camera { … } and light { … } blocks are accepted and skipped with a warning.\n\nUNITS (same as upstream ShapeScript — https://shapescript.info/mac/):\n- size is the DIAMETER of sphere/icosphere/cylinder/cone/circle/polygon/torus (a bare sphere fits the unit cube); for cube/square it is the edge length. size 1 2 means 1 2 1 (the third value repeats the first).\n- orientation / rotate use HALF-TURNS in roll (Z), yaw (Y), pitch (X) order: 0.5 = 90°, 1 = 180°. Positive is clockwise. A lone value is a roll: orientation 0.25 = 45° about Z. Angle-axis also works: orientation 0.5 0 1 0.\n- rotate / translate / scale as commands are relative and accumulate; orientation as a command is absolute.\n- SCOPE: a shape block, group, builder or custom block resets transforms and materials at its closing brace.\n for / if / switch bodies do NOT: a translate inside a loop carries on after it (upstream's rule). Symbols\n (define) are scoped by every block.\n- Trig FUNCTIONS (sin, cos, …) still take radians. Convert with pi: a half-turn value h is h * pi radians.\n\n### CSG Operations:\nunion, difference, intersection, xor, stencil\n\nExample:\ndifference {\n sphere {\n size 2\n color (1 0.5 0)\n }\n cube { size 1.5 }\n}\n\n### Paths:\npath { point X Y … } — coordinates are ABSOLUTE in the path's frame. Close a path by repeating the first point.\nA bare path draws as a LINE (stroke), as upstream; use fill / extrude / lathe / loft to make a surface or solid.\n- arc { angle A } inside a path: A half-turns clockwise from +Y, radius size/2 (default 0.5), with optional\n position / orientation / size — e.g. two quarter arcs and two points make a rounded slab.\n- curve X Y is a quadratic Bézier CONTROL point: the outline passes through the point commands on either side, not through it. Two curves in a row get an implicit on-curve midpoint, so eight curves in an octagon draw a circle.\n- A path may carry position / orientation / size of its own (path { position 0 0 2 orientation 0 0.5 0 point … }); that is how a loft section is placed in 3D. Give loft and extrude PATH children, not fill{} meshes — the upstream app rejects a mesh there.\n- rotate (half-turns) / translate / scale inside a path move the frame for later points:\n path {\n for 0 to 8 {\n curve 0 1\n rotate 1 / 8\n }\n } // semicircle\n\n### Builders:\n- extrude: extrude polygon { sides 3 } / extrude { … } or an inline path (size X Y scale the profile, size Z = depth, default 1):\n extrude path {\n point 0 0\n point 1 0\n point 0 1\n point 0 0\n }\n- fill: fill { square } or fill path { ... }\n- lathe (revolves the XY profile about Y):\n lathe path {\n point 0 0\n point 1 0\n curve 1.5 1\n point 1 2\n point 0 2\n }\n- loft (closed planar sections joined with caps):\n loft {\n square\n translate 0 0 2\n circle\n }\n- hull (convex envelope):\n hull {\n cube { position -1 0 0 }\n cube { position 1 0 0 }\n }\n- stencil preserves the first shape and paints its surface with later shapes' materials.\n- minkowski (the Minkowski sum; with inset it rounds edges, as upstream's Fillet example does):\n define fillet(source radius) {\n minkowski {\n inset(source radius)\n sphere { size radius * 2 }\n }\n }\n fillet(cone { color red } 0.1)\n- extrude … along (a section swept along a path, capped at the ends of an open path):\n extrude {\n circle { size 0.1 }\n along path { for i in 0 to 20 { curve 0 1 - i / 20 rotate 0.2 } }\n }\nLoft sections must each have one perimeter and enclose an area; extrude/fill primitive profiles must lie in XY.\nAn extrude path is a solid only when it is closed (its last point repeats its first); an open path extrudes\nto a wall, as upstream. inset(mesh distance) moves a mesh value's faces inward (outward when negative).\nA material command inside a builder block (extrude { color red … }) colours the result; size on a builder or\ngroup scales it. Not supported: extrude twist, svgpath.\n- text \"Hello\" / text { size 0.5 wrapwidth 3 linespacing 0.2 \"Line one\" \"Line two\" }: glyph outlines in the built-in\n Helvetica-like font, left margin at x 0 and first baseline at y 0, one unit per line (size scales it). Bare text draws\n outlines; fill text \"Hi\" makes faces and extrude { size 1 1 0.3 text \"Hi\" } solids. Values interpolate:\n text \"Bob has \" apples \" apples\", text i. Centre it with its bounds: define t text \"Hi\" then\n translate -t.bounds.width/2 -t.bounds.height/2 before fill t. font is accepted and ignored (one face only).\n- mesh { polygon { point x y z … } … }: a mesh from explicit faces; polygon { color red point a point b point c }\n takes 3D points (a tuple works: point v) and a colour per face. Faces may come from a function: mesh { for f in faces { face f } }.\n\n### Additional Expressions:\n- Constants: pi, true, false (tau exists here but NOT in the upstream app; write 2 * pi)\n- A lone position / translate value is X alone (position 1 = 1 0 0); a lone size is uniform; a lone orientation is a roll.\n- Scientific notation and unary plus: 1e-3, +2\n- Ranges as values: define loops 1 to 5 step 2, then for i in loops { … }, for i in loops step 1, and\n \"if 3 in loops\"; the in operator also tests tuples (2 in (1 2 3)) and strings.\n- Tuple/vector members: .x .y .z, .width .height .depth, .roll .yaw .pitch, .red .green .blue .alpha, .hue .saturation .brightness\n- Tuple/string length: value.count; zero-based indexing values[0], negative from the end values[-1], by name values[\"y\"];\n ordinals: v.first v.second … v.last, v.allButFirst, v.allButLast\n- String literals, join(...), split(...), trim(...); min/max also accept tuples\n- print a b … records output that is returned with the tool result; assert condition stops the script when false\n- Custom shapes with options:\ndefine post {\n option height 2\n cylinder { size 0.2 height }\n}\npost { height 3 }\n- Random numbers: rnd (0–1) and seed N (scoped to the enclosing block, same generator as upstream)\n- Shapes as values: define ico icosphere { detail 0 } then ico (places it), ico.polygons (faces, each with\n .center .points .bounds), ico.triangles, ico.bounds (.min .max .center .size .width .height .depth), ico.volume.\n- for / if as expressions: define scales for i in 1 to 3 { i / 3 }; define c if big { red } else { white }\n- Functions may build shapes: define face(data) { polygon { … } } and are called bare as statements: face data\n\n### Compatibility:\nThis plugin implements the documented modeling subset, not all upstream ShapeScript syntax; units, scoping,\nmaterials and path semantics follow upstream, so a script written against the upstream docs renders the\nsame here. Not supported (each is refused by name): import, svgpath, extrude twist,\nobject values and paths as values. Textures, fonts, cameras and lights are accepted but not drawn.\n\n### Comments:\n// Single-line comment\n/* Multi-line\n comment */\n\n## COMPLETE EXAMPLES:\n\nLinear arrangement with expressions:\ndefine spacing 1.5\nfor i in 1 to 4 {\n cylinder {\n position ((i - 2.5) * spacing) 0 0\n size 0.4 1\n }\n}\n\nCircular pattern:\ndefine count 12\nfor i in 1 to count {\n define angle ((i / count) * 6.283) // 2 * PI\n cube {\n position (cos(angle) * 3) 0 (sin(angle) * 3)\n color (i / count) 0.5 (1 - i / count)\n size 0.5\n }\n}\n\nConditional geometry:\ndefine makeHollow 1\nif makeHollow {\n difference {\n sphere {\n size 2\n color (1 0 0)\n }\n sphere { size 1.7 }\n }\n} else {\n sphere {\n size 2\n color (1 0 0)\n }\n}\n\nMathematical visualization:\nfor x in -5 to 5 {\n for z in -5 to 5 {\n define height (sin(x * 0.5) * cos(z * 0.5) * 2)\n cube {\n position (x * 0.3) height (z * 0.3)\n size 0.25 (abs(height) + 0.1) 0.25\n color (0.5 + height * 0.25) 0.3 (0.5 - height * 0.25)\n }\n }\n}"
|
|
18
18
|
},
|
|
19
19
|
path: {
|
|
20
20
|
type: "string",
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import * as THREE from "three";
|
|
2
2
|
/** Read an ordered perimeter from a triangulated planar profile. Interior
|
|
3
3
|
* vertices (e.g. the centre of CircleGeometry) must never enter a loft ring. */
|
|
4
|
+
/** Every boundary loop of a mesh — the edges used by exactly one triangle,
|
|
5
|
+
* chained into closed rings — in world space. A flat face has one; a face
|
|
6
|
+
* with holes (a filled letter) has one per hole as well. */
|
|
7
|
+
export declare function boundaryLoops(mesh: THREE.Mesh): THREE.Vector3[][];
|
|
8
|
+
/** The single perimeter of a flat mesh, for builders that take one ring. */
|
|
4
9
|
export declare function profileOf(mesh: THREE.Mesh): THREE.Vector3[];
|
|
5
10
|
/** Straight interpolation between successive rings, with triangulated end
|
|
6
11
|
* caps — or, for a `closed` chain (a section swept around a loop), the last
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/shapescript/builders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;gFACgF;AAChF,wBAAgB,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/shapescript/builders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;gFACgF;AAChF;;6DAE6D;AAC7D,wBAAgB,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,CAuDjE;AAED,4EAA4E;AAC5E,wBAAgB,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAI3D;AA0CD;;wDAEwD;AACxD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,UAAQ,GAAG,KAAK,CAAC,cAAc,CAqE9F;AAED;;;2EAG2E;AAC3E,wBAAgB,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,CAwB9G;AAgBD;mDACmD;AACnD,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,cAAc,CA2B3F"}
|
|
@@ -59,6 +59,9 @@ export declare class Parser {
|
|
|
59
59
|
* and `wheel { … }` a custom shape invocation that belongs to no list. */
|
|
60
60
|
private parseValueList;
|
|
61
61
|
private parseProperties;
|
|
62
|
+
/** One property statement into `properties`; false when the current token
|
|
63
|
+
* does not begin one (the caller decides what it is instead). */
|
|
64
|
+
private parseProperty;
|
|
62
65
|
private parseBlockContents;
|
|
63
66
|
/** Run `parse` with the callable and block name sets scoped to it, so a
|
|
64
67
|
* `define max 5` inside a block stops shadowing the built-in at the
|
|
@@ -102,6 +105,18 @@ export declare class Parser {
|
|
|
102
105
|
private parseMaterialCommand;
|
|
103
106
|
/** `camera { … }` / `light { … }`: the block is consumed and dropped. */
|
|
104
107
|
private skipIgnoredBlock;
|
|
108
|
+
/** `font "Name"`: consumed and dropped, as the built-in face is the only one. */
|
|
109
|
+
private isFontCommand;
|
|
110
|
+
private skipFont;
|
|
111
|
+
/** `text "Hello"` / `text i " apples"`, or a block of lines with options:
|
|
112
|
+
* `text { size 0.5; wrapwidth 3; "Hello,"; "World!" }`. */
|
|
113
|
+
private parseText;
|
|
114
|
+
/** One line of a `text` block: an option, a property, or a line of text. */
|
|
115
|
+
private parseTextLine;
|
|
116
|
+
/** An option of the text block, unless a binding of that exact spelling
|
|
117
|
+
* claims it — options are lowercase, like `along`, and symbols are
|
|
118
|
+
* case-sensitive (`define WrapWidth "W"` then `text { WrapWidth }`). */
|
|
119
|
+
private textOption;
|
|
105
120
|
private parseGroup;
|
|
106
121
|
private parseBuilder;
|
|
107
122
|
private isAlongOption;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/shapescript/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EAEL,SAAS,
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/shapescript/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
/** Characters per `text`, bounding the layout work before the vertex budget applies. */
|
|
3
|
+
export declare const MAX_TEXT_LENGTH = 2000;
|
|
4
|
+
export interface TextLayoutOptions {
|
|
5
|
+
wrapWidth?: number;
|
|
6
|
+
lineSpacing: number;
|
|
7
|
+
/** Segments per outline curve. */
|
|
8
|
+
curveSegments: number;
|
|
9
|
+
}
|
|
10
|
+
export interface TextLayout {
|
|
11
|
+
/** Filled glyphs, with their holes. */
|
|
12
|
+
shapes: THREE.Shape[];
|
|
13
|
+
/** Every outline ring, for drawing the text as strokes. */
|
|
14
|
+
rings: THREE.Vector2[][];
|
|
15
|
+
/** Characters the bundled face lacks, drawn as `?`. */
|
|
16
|
+
missing: string[];
|
|
17
|
+
}
|
|
18
|
+
/** Group closed rings into shapes: a ring inside an odd number of others is a
|
|
19
|
+
* hole of the innermost ring around it, any other ring is an outline. The
|
|
20
|
+
* rings' winding does not matter; the geometry classes normalise it. */
|
|
21
|
+
export declare function shapesFromRings(rings: readonly THREE.Vector2[][]): THREE.Shape[];
|
|
22
|
+
/** Lay `text` out from the origin: left margin at x = 0, first baseline at
|
|
23
|
+
* y = 0, later lines below it. */
|
|
24
|
+
export declare function layoutText(text: string, options: TextLayoutOptions): TextLayout;
|
|
25
|
+
/** The text of a `text` line: strings concatenate as written, other values
|
|
26
|
+
* print with a space between two of them (`text 1 2` is "1 2", `text 1 "" 2`
|
|
27
|
+
* is "12"), as upstream interpolates. */
|
|
28
|
+
export declare function interpolate(values: readonly unknown[], print: (value: unknown) => string): string;
|
|
29
|
+
//# sourceMappingURL=text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/shapescript/text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA4B/B,wFAAwF;AACxF,eAAO,MAAM,eAAe,OAAO,CAAC;AAGpC,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,uCAAuC;IACvC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,2DAA2D;IAC3D,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;IACzB,uDAAuD;IACvD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AA4DD;;yEAEyE;AACzE,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAchF;AAiCD;mCACmC;AACnC,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAuB/E;AAED;;0CAE0C;AAC1C,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,GAAG,MAAM,CAcjG"}
|
|
@@ -319,7 +319,21 @@ export declare class Converter {
|
|
|
319
319
|
private buildFromChildren;
|
|
320
320
|
private convertLoft;
|
|
321
321
|
private buildLoft;
|
|
322
|
-
|
|
322
|
+
/** A flat child's faces as shapes, holes included, so a filled letter
|
|
323
|
+
* extrudes with its counter. */
|
|
324
|
+
private planarShapes;
|
|
325
|
+
/** `text`: laid out from the origin (see `layoutText`). Inside a builder or
|
|
326
|
+
* as a value it is the filled glyphs, which `fill` and `extrude` read back
|
|
327
|
+
* as shapes with holes; in the scene it draws as outlines, as upstream
|
|
328
|
+
* draws paths. `size` scales it — upstream's line height is one unit. */
|
|
329
|
+
private convertText;
|
|
330
|
+
private textWrapWidth;
|
|
331
|
+
/** The lines of a `text` block joined, each line's values interpolated. */
|
|
332
|
+
private textOf;
|
|
333
|
+
/** The glyph outlines as one set of line segments — two vertices per ring
|
|
334
|
+
* point — in the text's own material (its `color`, `opacity`, `material`),
|
|
335
|
+
* falling back to the enclosing one as a mesh would. */
|
|
336
|
+
private textOutline;
|
|
323
337
|
private convertFill;
|
|
324
338
|
/** `minkowski { a b … }`: the children summed left to right, each solid
|
|
325
339
|
* swept over every point of the next. The result keeps the first child's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toThreeJS.d.ts","sourceRoot":"","sources":["../../src/shapescript/toThreeJS.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"toThreeJS.d.ts","sourceRoot":"","sources":["../../src/shapescript/toThreeJS.ts"],"names":[],"mappings":"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"}
|
|
@@ -85,7 +85,7 @@ export interface MaterialProperties {
|
|
|
85
85
|
glow?: Color | Expression;
|
|
86
86
|
texture?: Expression;
|
|
87
87
|
}
|
|
88
|
-
export type SceneNode = ShapeNode | CSGNode | BlockNode | ForLoopNode | IfNode | SwitchNode | DefineNode | ExtrudeNode | LoftNode | LatheNode | FillNode | HullNode | MinkowskiNode | GroupNode | DetailNode | SeedNode | PathNode | BackgroundNode | MaterialNode | SmoothingNode | PrintNode | AssertNode | IgnoredNode | MeshNode | ExpressionStatementNode | ColorNode | RotateNode | OrientationNode | TranslateNode | ScaleNode | CustomShapeNode;
|
|
88
|
+
export type SceneNode = ShapeNode | CSGNode | BlockNode | ForLoopNode | IfNode | SwitchNode | DefineNode | ExtrudeNode | LoftNode | LatheNode | FillNode | HullNode | MinkowskiNode | TextNode | GroupNode | DetailNode | SeedNode | PathNode | BackgroundNode | MaterialNode | SmoothingNode | PrintNode | AssertNode | IgnoredNode | MeshNode | ExpressionStatementNode | ColorNode | RotateNode | OrientationNode | TranslateNode | ScaleNode | CustomShapeNode;
|
|
89
89
|
export interface ShapeNode {
|
|
90
90
|
type: "shape";
|
|
91
91
|
primitive: ShapePrimitive;
|
|
@@ -279,6 +279,20 @@ export interface MinkowskiNode {
|
|
|
279
279
|
properties: ShapeProperties;
|
|
280
280
|
children: SceneNode[];
|
|
281
281
|
}
|
|
282
|
+
/** `text "Hello"` / `text { size 0.5 … "Hello" }`: glyph outlines laid out
|
|
283
|
+
* from the origin — the left margin at x = 0, the first baseline at y = 0. */
|
|
284
|
+
export interface TextNode {
|
|
285
|
+
type: "text";
|
|
286
|
+
/** One expression per line of text; a tuple's values are interpolated. */
|
|
287
|
+
lines: Expression[];
|
|
288
|
+
properties: ShapeProperties;
|
|
289
|
+
/** `wrapwidth`: wrap lines to this width in world units. */
|
|
290
|
+
wrapWidth?: Expression;
|
|
291
|
+
/** `linespacing`: extra distance between lines, in world units. */
|
|
292
|
+
lineSpacing?: Expression;
|
|
293
|
+
/** `font` inside the block: accepted and skipped with a warning. */
|
|
294
|
+
font?: Expression;
|
|
295
|
+
}
|
|
282
296
|
export interface GroupNode {
|
|
283
297
|
type: "group";
|
|
284
298
|
children: SceneNode[];
|
|
@@ -367,6 +381,7 @@ export declare enum TokenType {
|
|
|
367
381
|
FILL = "FILL",
|
|
368
382
|
HULL = "HULL",
|
|
369
383
|
MINKOWSKI = "MINKOWSKI",
|
|
384
|
+
TEXT = "TEXT",
|
|
370
385
|
GROUP = "GROUP",
|
|
371
386
|
MESH = "MESH",
|
|
372
387
|
PATH = "PATH",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shapescript/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shapescript/types.ts"],"names":[],"mappings":"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"}
|