lbrnts 0.0.1
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 +394 -0
- package/dist/index.d.ts +329 -0
- package/dist/index.js +1424 -0
- package/package.json +30 -0
package/README.md
ADDED
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
# lbrnts
|
|
2
|
+
|
|
3
|
+
A type-safe library for parsing and writing [LightBurn](https://lightburnsoftware.com/) files.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install lbrnts
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
### Parsing Existing Projects
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import { LightBurnProject } from "lbrnts"
|
|
17
|
+
|
|
18
|
+
const project = LightBurnProject.parse(fs.readFileSync("project.lbrn2", "utf8"))
|
|
19
|
+
|
|
20
|
+
console.log(project.children)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Creating Projects from Scratch
|
|
24
|
+
|
|
25
|
+
You can programmatically create LightBurn projects by constructing the project and its elements. Below is a table of all constructible classes with links to their documentation:
|
|
26
|
+
|
|
27
|
+
| Class | Description |
|
|
28
|
+
|-------|-------------|
|
|
29
|
+
| [LightBurnProject](#lightburnproject) | Root project container |
|
|
30
|
+
| [CutSetting](#cutsetting) | Cut/engrave settings (speed, power, etc.) |
|
|
31
|
+
| [ShapePath](#shapepath) | Custom paths with lines and bezier curves |
|
|
32
|
+
| [ShapeRect](#shaperect) | Rectangle shapes |
|
|
33
|
+
| [ShapeEllipse](#shapeellipse) | Ellipse/circle shapes |
|
|
34
|
+
| [ShapeText](#shapetext) | Text shapes |
|
|
35
|
+
| [ShapeBitmap](#shapebitmap) | Bitmap/image shapes |
|
|
36
|
+
| [ShapeGroup](#shapegroup) | Group container for shapes |
|
|
37
|
+
| [Notes](#notes) | Project notes |
|
|
38
|
+
| [VariableText](#variabletext) | Variable text settings |
|
|
39
|
+
|
|
40
|
+
## API Reference
|
|
41
|
+
|
|
42
|
+
### LightBurnProject
|
|
43
|
+
|
|
44
|
+
The root container for a LightBurn project.
|
|
45
|
+
|
|
46
|
+
#### Constructor
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
new LightBurnProject(init?: {
|
|
50
|
+
appVersion?: string
|
|
51
|
+
formatVersion?: string
|
|
52
|
+
materialHeight?: number
|
|
53
|
+
mirrorX?: boolean
|
|
54
|
+
mirrorY?: boolean
|
|
55
|
+
children?: LightBurnBaseElement[]
|
|
56
|
+
})
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
#### Example
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
import { LightBurnProject, CutSetting, ShapePath } from "lbrnts"
|
|
63
|
+
|
|
64
|
+
const cutSetting = new CutSetting({
|
|
65
|
+
index: 0,
|
|
66
|
+
name: "Wood Cut",
|
|
67
|
+
priority: 0,
|
|
68
|
+
type: "Cut",
|
|
69
|
+
speed: 10,
|
|
70
|
+
maxPower: 80,
|
|
71
|
+
minPower: 60,
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
const path = new ShapePath({
|
|
75
|
+
cutIndex: 0,
|
|
76
|
+
verts: [
|
|
77
|
+
{ x: -25, y: -25 },
|
|
78
|
+
{ x: 25, y: -25 },
|
|
79
|
+
{ x: 25, y: 25 },
|
|
80
|
+
{ x: -25, y: 25 },
|
|
81
|
+
],
|
|
82
|
+
prims: [
|
|
83
|
+
{ type: 0 },
|
|
84
|
+
{ type: 0 },
|
|
85
|
+
{ type: 0 },
|
|
86
|
+
{ type: 0 },
|
|
87
|
+
],
|
|
88
|
+
isClosed: true,
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
const project = new LightBurnProject({
|
|
92
|
+
appVersion: "1.7.03",
|
|
93
|
+
formatVersion: "1",
|
|
94
|
+
materialHeight: 0,
|
|
95
|
+
children: [cutSetting, path],
|
|
96
|
+
})
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
#### Methods
|
|
100
|
+
|
|
101
|
+
- `getChildren()`: Returns the children array
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
### CutSetting
|
|
106
|
+
|
|
107
|
+
Defines cutting/engraving settings for laser operations.
|
|
108
|
+
|
|
109
|
+
#### Constructor
|
|
110
|
+
|
|
111
|
+
```typescript
|
|
112
|
+
new CutSetting(init?: {
|
|
113
|
+
type?: string // "Cut", "Scan", "Image", etc.
|
|
114
|
+
index?: number // Layer index
|
|
115
|
+
name?: string // Layer name
|
|
116
|
+
priority?: number // Execution priority
|
|
117
|
+
minPower?: number // Minimum power (0-100%)
|
|
118
|
+
maxPower?: number // Maximum power (0-100%)
|
|
119
|
+
minPower2?: number // Secondary laser minimum power
|
|
120
|
+
maxPower2?: number // Secondary laser maximum power
|
|
121
|
+
speed?: number // Speed in mm/s
|
|
122
|
+
kerf?: number // Kerf offset in mm
|
|
123
|
+
zOffset?: number // Z-axis offset
|
|
124
|
+
enablePowerRamp?: boolean // Enable power ramping
|
|
125
|
+
rampLength?: number // Ramp length in mm
|
|
126
|
+
numPasses?: number // Number of passes
|
|
127
|
+
zPerPass?: number // Z increment per pass
|
|
128
|
+
perforate?: boolean // Perforate mode
|
|
129
|
+
dotMode?: boolean // Dot mode
|
|
130
|
+
scanOpt?: string // Scan optimization
|
|
131
|
+
interval?: number // Scan line interval
|
|
132
|
+
angle?: number // Scan angle
|
|
133
|
+
overScanning?: number // Over-scanning distance
|
|
134
|
+
lineAngle?: number // Line angle for fill
|
|
135
|
+
})
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
#### Example
|
|
139
|
+
|
|
140
|
+
```typescript
|
|
141
|
+
const cutSetting = new CutSetting({
|
|
142
|
+
index: 0,
|
|
143
|
+
name: "Acrylic Engrave",
|
|
144
|
+
priority: 1,
|
|
145
|
+
type: "Cut",
|
|
146
|
+
speed: 150,
|
|
147
|
+
maxPower: 50,
|
|
148
|
+
minPower: 40,
|
|
149
|
+
numPasses: 3,
|
|
150
|
+
enablePowerRamp: true,
|
|
151
|
+
rampLength: 2,
|
|
152
|
+
})
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
### ShapePath
|
|
158
|
+
|
|
159
|
+
Custom paths with vertices and primitives (lines and bezier curves).
|
|
160
|
+
|
|
161
|
+
#### Constructor
|
|
162
|
+
|
|
163
|
+
```typescript
|
|
164
|
+
new ShapePath(init?: {
|
|
165
|
+
verts?: Vert[] // Array of vertices
|
|
166
|
+
prims?: Prim[] // Array of primitives (drawing commands)
|
|
167
|
+
isClosed?: boolean // Whether the path is closed
|
|
168
|
+
cutIndex?: number // Cut setting index to use
|
|
169
|
+
locked?: boolean // Lock the shape
|
|
170
|
+
xform?: Mat // Transformation matrix [a, b, c, d, tx, ty]
|
|
171
|
+
})
|
|
172
|
+
|
|
173
|
+
interface Vert {
|
|
174
|
+
x: number
|
|
175
|
+
y: number
|
|
176
|
+
c?: number // Control point flag
|
|
177
|
+
c0x?: number // Control point 0 x
|
|
178
|
+
c0y?: number // Control point 0 y
|
|
179
|
+
c1x?: number // Control point 1 x
|
|
180
|
+
c1y?: number // Control point 1 y
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
interface Prim {
|
|
184
|
+
type: number // 0 = LineTo, 1 = BezierTo
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
type Mat = [a: number, b: number, c: number, d: number, tx: number, ty: number]
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
#### Example: Simple Square
|
|
191
|
+
|
|
192
|
+
```typescript
|
|
193
|
+
const square = new ShapePath({
|
|
194
|
+
cutIndex: 0,
|
|
195
|
+
verts: [
|
|
196
|
+
{ x: -25, y: -25 },
|
|
197
|
+
{ x: 25, y: -25 },
|
|
198
|
+
{ x: 25, y: 25 },
|
|
199
|
+
{ x: -25, y: 25 },
|
|
200
|
+
],
|
|
201
|
+
prims: [
|
|
202
|
+
{ type: 0 }, // LineTo
|
|
203
|
+
{ type: 0 }, // LineTo
|
|
204
|
+
{ type: 0 }, // LineTo
|
|
205
|
+
{ type: 0 }, // LineTo (close path)
|
|
206
|
+
],
|
|
207
|
+
isClosed: true,
|
|
208
|
+
})
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
#### Example: Curved Path with Bezier Curves
|
|
212
|
+
|
|
213
|
+
```typescript
|
|
214
|
+
const curved = new ShapePath({
|
|
215
|
+
cutIndex: 0,
|
|
216
|
+
verts: [
|
|
217
|
+
{ x: 0, y: -30 },
|
|
218
|
+
{ x: 30, y: 0, c: 1, c0x: 30, c0y: -16.5, c1x: 30, c1y: -16.5 },
|
|
219
|
+
{ x: 0, y: 30, c: 1, c0x: 30, c0y: 16.5, c1x: 30, c1y: 16.5 },
|
|
220
|
+
{ x: -30, y: 0, c: 1, c0x: -30, c0y: 16.5, c1x: -30, c1y: 16.5 },
|
|
221
|
+
{ x: 0, y: -30, c: 1, c0x: -30, c0y: -16.5, c1x: -30, c1y: -16.5 },
|
|
222
|
+
],
|
|
223
|
+
prims: [
|
|
224
|
+
{ type: 1 }, // BezierTo
|
|
225
|
+
{ type: 1 }, // BezierTo
|
|
226
|
+
{ type: 1 }, // BezierTo
|
|
227
|
+
{ type: 1 }, // BezierTo
|
|
228
|
+
],
|
|
229
|
+
isClosed: true,
|
|
230
|
+
})
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
### ShapeRect
|
|
236
|
+
|
|
237
|
+
Rectangle shape (currently read-only from parsed files).
|
|
238
|
+
|
|
239
|
+
#### Constructor
|
|
240
|
+
|
|
241
|
+
```typescript
|
|
242
|
+
new ShapeRect()
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
#### Properties
|
|
246
|
+
|
|
247
|
+
- `w`: Width
|
|
248
|
+
- `h`: Height
|
|
249
|
+
- `cr`: Corner radius
|
|
250
|
+
- `cutIndex`: Cut setting index
|
|
251
|
+
- `locked`: Lock state
|
|
252
|
+
- `xform`: Transformation matrix
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
### ShapeEllipse
|
|
257
|
+
|
|
258
|
+
Ellipse/circle shape (currently read-only from parsed files).
|
|
259
|
+
|
|
260
|
+
#### Constructor
|
|
261
|
+
|
|
262
|
+
```typescript
|
|
263
|
+
new ShapeEllipse()
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
#### Properties
|
|
267
|
+
|
|
268
|
+
- `rx`: X radius
|
|
269
|
+
- `ry`: Y radius
|
|
270
|
+
- `cutIndex`: Cut setting index
|
|
271
|
+
- `locked`: Lock state
|
|
272
|
+
- `xform`: Transformation matrix
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
### ShapeText
|
|
277
|
+
|
|
278
|
+
Text shape (currently read-only from parsed files).
|
|
279
|
+
|
|
280
|
+
#### Constructor
|
|
281
|
+
|
|
282
|
+
```typescript
|
|
283
|
+
new ShapeText()
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
#### Properties
|
|
287
|
+
|
|
288
|
+
- `text`: Text content
|
|
289
|
+
- `font`: Font name
|
|
290
|
+
- `backupPath`: Backup path representation
|
|
291
|
+
- `cutIndex`: Cut setting index
|
|
292
|
+
- `locked`: Lock state
|
|
293
|
+
- `xform`: Transformation matrix
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
### ShapeBitmap
|
|
298
|
+
|
|
299
|
+
Bitmap/image shape (currently read-only from parsed files).
|
|
300
|
+
|
|
301
|
+
#### Constructor
|
|
302
|
+
|
|
303
|
+
```typescript
|
|
304
|
+
new ShapeBitmap()
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
#### Properties
|
|
308
|
+
|
|
309
|
+
- `w`: Width
|
|
310
|
+
- `h`: Height
|
|
311
|
+
- `dataBase64`: Base64-encoded image data
|
|
312
|
+
- `grayscale`: Grayscale mode
|
|
313
|
+
- `dpi`: DPI setting
|
|
314
|
+
- `ditherMode`: Dither mode
|
|
315
|
+
- `halftone`: Halftone mode
|
|
316
|
+
- `negative`: Negative mode
|
|
317
|
+
- `brightnessAdjust`: Brightness adjustment
|
|
318
|
+
- `contrastAdjust`: Contrast adjustment
|
|
319
|
+
- `gammaAdjust`: Gamma adjustment
|
|
320
|
+
- `cutIndex`: Cut setting index
|
|
321
|
+
- `locked`: Lock state
|
|
322
|
+
- `xform`: Transformation matrix
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
### ShapeGroup
|
|
327
|
+
|
|
328
|
+
Container for grouping shapes together (currently read-only from parsed files).
|
|
329
|
+
|
|
330
|
+
#### Constructor
|
|
331
|
+
|
|
332
|
+
```typescript
|
|
333
|
+
new ShapeGroup()
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
#### Properties
|
|
337
|
+
|
|
338
|
+
- `children`: Array of child shapes
|
|
339
|
+
- `cutIndex`: Cut setting index
|
|
340
|
+
- `locked`: Lock state
|
|
341
|
+
- `xform`: Transformation matrix
|
|
342
|
+
|
|
343
|
+
#### Methods
|
|
344
|
+
|
|
345
|
+
- `getChildren()`: Returns the children array
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
### Notes
|
|
350
|
+
|
|
351
|
+
Project notes that can be displayed when loading the project.
|
|
352
|
+
|
|
353
|
+
#### Constructor
|
|
354
|
+
|
|
355
|
+
```typescript
|
|
356
|
+
new Notes()
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
#### Properties
|
|
360
|
+
|
|
361
|
+
- `showOnLoad`: Whether to show notes on load
|
|
362
|
+
- `text`: Note text content
|
|
363
|
+
|
|
364
|
+
---
|
|
365
|
+
|
|
366
|
+
### VariableText
|
|
367
|
+
|
|
368
|
+
Variable text settings for dynamic text generation.
|
|
369
|
+
|
|
370
|
+
#### Constructor
|
|
371
|
+
|
|
372
|
+
```typescript
|
|
373
|
+
new VariableText()
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
#### Properties
|
|
377
|
+
|
|
378
|
+
- `start`: Start value
|
|
379
|
+
- `end`: End value
|
|
380
|
+
- `current`: Current value
|
|
381
|
+
- `increment`: Increment value
|
|
382
|
+
- `autoAdvance`: Auto-advance setting
|
|
383
|
+
|
|
384
|
+
---
|
|
385
|
+
|
|
386
|
+
## Generating SVG
|
|
387
|
+
|
|
388
|
+
You can generate SVG representations of your projects:
|
|
389
|
+
|
|
390
|
+
```typescript
|
|
391
|
+
import { generateLightBurnSvg } from "lbrnts"
|
|
392
|
+
|
|
393
|
+
const svg = generateLightBurnSvg(project)
|
|
394
|
+
```
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type representing the JSON structure returned by xml2js
|
|
3
|
+
*/
|
|
4
|
+
type XmlJson = {
|
|
5
|
+
[key: string]: XmlJsonValue;
|
|
6
|
+
};
|
|
7
|
+
type XmlJsonValue = string | number | boolean | null | XmlJsonElement | XmlJsonValue[];
|
|
8
|
+
type XmlJsonElement = {
|
|
9
|
+
$?: Record<string, string | number | boolean>;
|
|
10
|
+
_?: string;
|
|
11
|
+
[key: string]: XmlJsonValue | Record<string, string | number | boolean> | string | undefined;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
declare class LightBurnBaseElement {
|
|
15
|
+
token: string;
|
|
16
|
+
static token: string;
|
|
17
|
+
getChildren(): LightBurnBaseElement[];
|
|
18
|
+
getStringIndented(): string;
|
|
19
|
+
getString(): string;
|
|
20
|
+
get [Symbol.toStringTag](): string;
|
|
21
|
+
private static elementRegistry;
|
|
22
|
+
private static shapeRegistry;
|
|
23
|
+
/**
|
|
24
|
+
* Should be called after class definition to register the class for parsing
|
|
25
|
+
*/
|
|
26
|
+
static register(token: string, klass: any): void;
|
|
27
|
+
/**
|
|
28
|
+
* Parse an XML string into registered LightBurnBaseElement instances
|
|
29
|
+
*/
|
|
30
|
+
static parse(xml: string): LightBurnBaseElement | LightBurnBaseElement[];
|
|
31
|
+
static fromXmlJson(node: XmlJsonElement): LightBurnBaseElement;
|
|
32
|
+
static parseXmlJson(xmlJson: XmlJsonValue): any;
|
|
33
|
+
static instantiateElement(tag: string, node: XmlJsonElement): LightBurnBaseElement;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
interface LightBurnProjectInit {
|
|
37
|
+
appVersion?: string;
|
|
38
|
+
formatVersion?: string;
|
|
39
|
+
materialHeight?: number;
|
|
40
|
+
mirrorX?: boolean;
|
|
41
|
+
mirrorY?: boolean;
|
|
42
|
+
children?: LightBurnBaseElement[];
|
|
43
|
+
}
|
|
44
|
+
declare class LightBurnProject extends LightBurnBaseElement {
|
|
45
|
+
appVersion?: string;
|
|
46
|
+
formatVersion?: string;
|
|
47
|
+
materialHeight?: number;
|
|
48
|
+
mirrorX?: boolean;
|
|
49
|
+
mirrorY?: boolean;
|
|
50
|
+
children: LightBurnBaseElement[];
|
|
51
|
+
constructor(init?: LightBurnProjectInit);
|
|
52
|
+
static fromXmlJson(node: XmlJsonElement): LightBurnProject;
|
|
53
|
+
getChildren(): LightBurnBaseElement[];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
interface CutSettingInit {
|
|
57
|
+
type?: string;
|
|
58
|
+
index?: number;
|
|
59
|
+
name?: string;
|
|
60
|
+
priority?: number;
|
|
61
|
+
minPower?: number;
|
|
62
|
+
maxPower?: number;
|
|
63
|
+
minPower2?: number;
|
|
64
|
+
maxPower2?: number;
|
|
65
|
+
speed?: number;
|
|
66
|
+
kerf?: number;
|
|
67
|
+
zOffset?: number;
|
|
68
|
+
enablePowerRamp?: boolean;
|
|
69
|
+
rampLength?: number;
|
|
70
|
+
numPasses?: number;
|
|
71
|
+
zPerPass?: number;
|
|
72
|
+
perforate?: boolean;
|
|
73
|
+
dotMode?: boolean;
|
|
74
|
+
scanOpt?: string;
|
|
75
|
+
interval?: number;
|
|
76
|
+
angle?: number;
|
|
77
|
+
overScanning?: number;
|
|
78
|
+
lineAngle?: number;
|
|
79
|
+
}
|
|
80
|
+
declare class CutSetting extends LightBurnBaseElement {
|
|
81
|
+
private _type;
|
|
82
|
+
private _index?;
|
|
83
|
+
private _name?;
|
|
84
|
+
private _priority?;
|
|
85
|
+
private _minPower?;
|
|
86
|
+
private _maxPower?;
|
|
87
|
+
private _minPower2?;
|
|
88
|
+
private _maxPower2?;
|
|
89
|
+
private _speed?;
|
|
90
|
+
private _kerf?;
|
|
91
|
+
private _zOffset?;
|
|
92
|
+
private _enablePowerRamp?;
|
|
93
|
+
private _rampLength?;
|
|
94
|
+
private _numPasses?;
|
|
95
|
+
private _zPerPass?;
|
|
96
|
+
private _perforate?;
|
|
97
|
+
private _dotMode?;
|
|
98
|
+
private _scanOpt?;
|
|
99
|
+
private _interval?;
|
|
100
|
+
private _angle?;
|
|
101
|
+
private _overScanning?;
|
|
102
|
+
private _lineAngle?;
|
|
103
|
+
constructor(init?: CutSettingInit);
|
|
104
|
+
get type(): string;
|
|
105
|
+
set type(value: string);
|
|
106
|
+
get index(): number | undefined;
|
|
107
|
+
set index(value: number | undefined);
|
|
108
|
+
get name(): string | undefined;
|
|
109
|
+
set name(value: string | undefined);
|
|
110
|
+
get priority(): number | undefined;
|
|
111
|
+
set priority(value: number | undefined);
|
|
112
|
+
get minPower(): number | undefined;
|
|
113
|
+
set minPower(value: number | undefined);
|
|
114
|
+
get maxPower(): number | undefined;
|
|
115
|
+
set maxPower(value: number | undefined);
|
|
116
|
+
get minPower2(): number | undefined;
|
|
117
|
+
set minPower2(value: number | undefined);
|
|
118
|
+
get maxPower2(): number | undefined;
|
|
119
|
+
set maxPower2(value: number | undefined);
|
|
120
|
+
get speed(): number | undefined;
|
|
121
|
+
set speed(value: number | undefined);
|
|
122
|
+
get kerf(): number | undefined;
|
|
123
|
+
set kerf(value: number | undefined);
|
|
124
|
+
get zOffset(): number | undefined;
|
|
125
|
+
set zOffset(value: number | undefined);
|
|
126
|
+
get enablePowerRamp(): boolean | undefined;
|
|
127
|
+
set enablePowerRamp(value: boolean | undefined);
|
|
128
|
+
get rampLength(): number | undefined;
|
|
129
|
+
set rampLength(value: number | undefined);
|
|
130
|
+
get numPasses(): number | undefined;
|
|
131
|
+
set numPasses(value: number | undefined);
|
|
132
|
+
get zPerPass(): number | undefined;
|
|
133
|
+
set zPerPass(value: number | undefined);
|
|
134
|
+
get perforate(): boolean | undefined;
|
|
135
|
+
set perforate(value: boolean | undefined);
|
|
136
|
+
get dotMode(): boolean | undefined;
|
|
137
|
+
set dotMode(value: boolean | undefined);
|
|
138
|
+
get scanOpt(): string | undefined;
|
|
139
|
+
set scanOpt(value: string | undefined);
|
|
140
|
+
get interval(): number | undefined;
|
|
141
|
+
set interval(value: number | undefined);
|
|
142
|
+
get angle(): number | undefined;
|
|
143
|
+
set angle(value: number | undefined);
|
|
144
|
+
get overScanning(): number | undefined;
|
|
145
|
+
set overScanning(value: number | undefined);
|
|
146
|
+
get lineAngle(): number | undefined;
|
|
147
|
+
set lineAngle(value: number | undefined);
|
|
148
|
+
static fromXmlJson(node: XmlJsonElement): CutSetting;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
declare class Notes extends LightBurnBaseElement {
|
|
152
|
+
showOnLoad?: boolean;
|
|
153
|
+
text?: string;
|
|
154
|
+
constructor();
|
|
155
|
+
static fromXmlJson(node: XmlJsonElement): Notes;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
declare class VariableText extends LightBurnBaseElement {
|
|
159
|
+
start?: number;
|
|
160
|
+
end?: number;
|
|
161
|
+
current?: number;
|
|
162
|
+
increment?: number;
|
|
163
|
+
autoAdvance?: boolean;
|
|
164
|
+
constructor();
|
|
165
|
+
static fromXmlJson(node: XmlJsonElement): VariableText;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
declare class UIPrefs extends LightBurnBaseElement {
|
|
169
|
+
prefs: Record<string, string>;
|
|
170
|
+
constructor();
|
|
171
|
+
static fromXmlJson(node: XmlJsonElement): UIPrefs;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
declare class Thumbnail extends LightBurnBaseElement {
|
|
175
|
+
pngBase64?: string;
|
|
176
|
+
constructor();
|
|
177
|
+
static fromXmlJson(node: XmlJsonElement): Thumbnail;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
type Mat = [
|
|
181
|
+
a: number,
|
|
182
|
+
b: number,
|
|
183
|
+
c: number,
|
|
184
|
+
d: number,
|
|
185
|
+
tx: number,
|
|
186
|
+
ty: number
|
|
187
|
+
];
|
|
188
|
+
declare abstract class ShapeBase extends LightBurnBaseElement {
|
|
189
|
+
cutIndex?: number;
|
|
190
|
+
locked?: boolean;
|
|
191
|
+
xform?: Mat;
|
|
192
|
+
static readCommon(node: XmlJsonElement): {
|
|
193
|
+
cutIndex?: number;
|
|
194
|
+
locked?: boolean;
|
|
195
|
+
xform?: Mat;
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
declare class ShapeEllipse extends ShapeBase {
|
|
200
|
+
rx?: number;
|
|
201
|
+
ry?: number;
|
|
202
|
+
constructor();
|
|
203
|
+
static fromXmlJson(node: XmlJsonElement): ShapeEllipse;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
declare class ShapeRect extends ShapeBase {
|
|
207
|
+
w?: number;
|
|
208
|
+
h?: number;
|
|
209
|
+
cr?: number;
|
|
210
|
+
constructor();
|
|
211
|
+
static fromXmlJson(node: XmlJsonElement): ShapeRect;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
interface Vert {
|
|
215
|
+
x: number;
|
|
216
|
+
y: number;
|
|
217
|
+
c?: number;
|
|
218
|
+
c0x?: number;
|
|
219
|
+
c0y?: number;
|
|
220
|
+
c1x?: number;
|
|
221
|
+
c1y?: number;
|
|
222
|
+
}
|
|
223
|
+
interface Prim {
|
|
224
|
+
type: number;
|
|
225
|
+
}
|
|
226
|
+
interface ShapePathInit {
|
|
227
|
+
verts?: Vert[];
|
|
228
|
+
prims?: Prim[];
|
|
229
|
+
isClosed?: boolean;
|
|
230
|
+
cutIndex?: number;
|
|
231
|
+
locked?: boolean;
|
|
232
|
+
xform?: Mat;
|
|
233
|
+
}
|
|
234
|
+
declare class ShapePath extends ShapeBase {
|
|
235
|
+
verts: Vert[];
|
|
236
|
+
prims: Prim[];
|
|
237
|
+
isClosed: boolean;
|
|
238
|
+
private static templateRegistry;
|
|
239
|
+
constructor(init?: ShapePathInit);
|
|
240
|
+
static clearTemplateRegistry(): void;
|
|
241
|
+
static fromXmlJson(node: XmlJsonElement): ShapePath;
|
|
242
|
+
/**
|
|
243
|
+
* Parse encoded VertList string format
|
|
244
|
+
* Format: V{x} {y}c{flag}x{flag}c{flag}x{c1x}c{flag}y{c1y}...
|
|
245
|
+
* Example: V2.1156745 -12.3306c0x1c1x1.5871694c1y-12.3306
|
|
246
|
+
*
|
|
247
|
+
* Control points are encoded as:
|
|
248
|
+
* - c0x{value}c0y{value} = control point 0 (when both present)
|
|
249
|
+
* - c1x{value}c1y{value} = control point 1 (when both present)
|
|
250
|
+
* - c{num}x{num} alone (like c0x1) = flag, not a coordinate
|
|
251
|
+
*/
|
|
252
|
+
static parseEncodedVertList(encoded: string): Vert[];
|
|
253
|
+
/**
|
|
254
|
+
* Parse encoded PrimPolyline string format
|
|
255
|
+
* This typically contains line-to commands, each prim is type 0 (LineTo)
|
|
256
|
+
*/
|
|
257
|
+
static parseEncodedPrimPolyline(encoded: string): Prim[];
|
|
258
|
+
/**
|
|
259
|
+
* Generate primitives from vertices based on PrimID
|
|
260
|
+
* PrimID meanings:
|
|
261
|
+
* - 0: Simple polyline (all LineTo)
|
|
262
|
+
* - 2: Rounded rectangle with bezier curves at corners
|
|
263
|
+
* - 3: Other curve type
|
|
264
|
+
*/
|
|
265
|
+
static generatePrimsFromVerts(verts: Vert[], primID?: number): Prim[];
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
declare class ShapeText extends ShapeBase {
|
|
269
|
+
text?: string;
|
|
270
|
+
font?: string;
|
|
271
|
+
backupPath?: ShapePath;
|
|
272
|
+
constructor();
|
|
273
|
+
static fromXmlJson(node: XmlJsonElement): ShapeText;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
declare class ShapeGroup extends ShapeBase {
|
|
277
|
+
children: LightBurnBaseElement[];
|
|
278
|
+
constructor();
|
|
279
|
+
static fromXmlJson(node: XmlJsonElement): ShapeGroup;
|
|
280
|
+
getChildren(): LightBurnBaseElement[];
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
declare class ShapeBitmap extends ShapeBase {
|
|
284
|
+
private _w?;
|
|
285
|
+
private _h?;
|
|
286
|
+
private _dataBase64?;
|
|
287
|
+
private _grayscale?;
|
|
288
|
+
private _dpi?;
|
|
289
|
+
private _ditherMode?;
|
|
290
|
+
private _halftone?;
|
|
291
|
+
private _negative?;
|
|
292
|
+
private _brightnessAdjust?;
|
|
293
|
+
private _contrastAdjust?;
|
|
294
|
+
private _gammaAdjust?;
|
|
295
|
+
constructor();
|
|
296
|
+
get w(): number | undefined;
|
|
297
|
+
set w(value: number | undefined);
|
|
298
|
+
get h(): number | undefined;
|
|
299
|
+
set h(value: number | undefined);
|
|
300
|
+
get dataBase64(): string | undefined;
|
|
301
|
+
set dataBase64(value: string | undefined);
|
|
302
|
+
get grayscale(): boolean | undefined;
|
|
303
|
+
set grayscale(value: boolean | undefined);
|
|
304
|
+
get dpi(): number | undefined;
|
|
305
|
+
set dpi(value: number | undefined);
|
|
306
|
+
get ditherMode(): string | undefined;
|
|
307
|
+
set ditherMode(value: string | undefined);
|
|
308
|
+
get halftone(): boolean | undefined;
|
|
309
|
+
set halftone(value: boolean | undefined);
|
|
310
|
+
get negative(): boolean | undefined;
|
|
311
|
+
set negative(value: boolean | undefined);
|
|
312
|
+
get brightnessAdjust(): number | undefined;
|
|
313
|
+
set brightnessAdjust(value: number | undefined);
|
|
314
|
+
get contrastAdjust(): number | undefined;
|
|
315
|
+
set contrastAdjust(value: number | undefined);
|
|
316
|
+
get gammaAdjust(): number | undefined;
|
|
317
|
+
set gammaAdjust(value: number | undefined);
|
|
318
|
+
static fromXmlJson(node: XmlJsonElement): ShapeBitmap;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
interface GenerateSvgOptions {
|
|
322
|
+
margin?: number;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
declare function generateLightBurnSvg(root: LightBurnBaseElement | LightBurnBaseElement[], options?: GenerateSvgOptions): string;
|
|
326
|
+
|
|
327
|
+
declare const parseXml: (xml: string) => XmlJson;
|
|
328
|
+
|
|
329
|
+
export { LightBurnBaseElement as BaseLightBurnElement, CutSetting, type CutSettingInit, type GenerateSvgOptions, LightBurnBaseElement, LightBurnProject, type LightBurnProjectInit, type Mat, Notes, type Prim, ShapeBase, ShapeBitmap, ShapeEllipse, ShapeGroup, ShapePath, type ShapePathInit, ShapeRect, ShapeText, Thumbnail, UIPrefs, VariableText, type Vert, generateLightBurnSvg, parseXml };
|