nucleation 0.10.21 → 0.10.23
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/BlockPos.mjs +1 -0
- package/Dimensions.mjs +1 -0
- package/FieldRange.mjs +1 -0
- package/ItemScale.mjs +1 -0
- package/MeshBounds.mjs +1 -0
- package/MeshProgress.mjs +1 -0
- package/README.md +12 -0
- package/RegionBounds.mjs +1 -0
- package/Schematic.d.mts +32 -0
- package/Schematic.d.ts +32 -0
- package/Schematic.mjs +100 -0
- package/SdfBounds.mjs +1 -0
- package/SdfNormal.mjs +1 -0
- package/TextureInfo.mjs +1 -0
- package/diplomat-runtime.mjs +19 -14
- package/nucleation.wasm +0 -0
- package/package.json +7 -2
- package/renderer/AnimationEffect.d.mts +44 -0
- package/renderer/AnimationEffect.d.ts +44 -0
- package/renderer/AnimationEffect.mjs +204 -0
- package/renderer/Autostack.d.mts +43 -0
- package/renderer/Autostack.d.ts +43 -0
- package/renderer/Autostack.mjs +134 -0
- package/renderer/BlockPos.d.mts +28 -0
- package/renderer/BlockPos.d.ts +28 -0
- package/renderer/BlockPos.mjs +130 -0
- package/renderer/BlockState.d.mts +39 -0
- package/renderer/BlockState.d.ts +39 -0
- package/renderer/BlockState.mjs +134 -0
- package/renderer/Blocks.d.mts +91 -0
- package/renderer/Blocks.d.ts +91 -0
- package/renderer/Blocks.mjs +308 -0
- package/renderer/Brush.d.mts +99 -0
- package/renderer/Brush.d.ts +99 -0
- package/renderer/Brush.mjs +335 -0
- package/renderer/BuildAnimation.d.mts +179 -0
- package/renderer/BuildAnimation.d.ts +179 -0
- package/renderer/BuildAnimation.mjs +1148 -0
- package/renderer/BuildingTool.d.mts +46 -0
- package/renderer/BuildingTool.d.ts +46 -0
- package/renderer/BuildingTool.mjs +121 -0
- package/renderer/CellExecutor.d.mts +51 -0
- package/renderer/CellExecutor.d.ts +51 -0
- package/renderer/CellExecutor.mjs +171 -0
- package/renderer/CellularSdfConfig.d.mts +22 -0
- package/renderer/CellularSdfConfig.d.ts +22 -0
- package/renderer/CellularSdfConfig.mjs +69 -0
- package/renderer/ChunkMeshResult.d.mts +75 -0
- package/renderer/ChunkMeshResult.d.ts +75 -0
- package/renderer/ChunkMeshResult.mjs +253 -0
- package/renderer/CircuitBuilder.d.mts +118 -0
- package/renderer/CircuitBuilder.d.ts +118 -0
- package/renderer/CircuitBuilder.mjs +516 -0
- package/renderer/Curve3D.d.mts +27 -0
- package/renderer/Curve3D.d.ts +27 -0
- package/renderer/Curve3D.mjs +101 -0
- package/renderer/DefinitionRegion.d.mts +274 -0
- package/renderer/DefinitionRegion.d.ts +274 -0
- package/renderer/DefinitionRegion.mjs +973 -0
- package/renderer/Design.d.mts +348 -0
- package/renderer/Design.d.ts +348 -0
- package/renderer/Design.mjs +1334 -0
- package/renderer/Diff.d.mts +88 -0
- package/renderer/Diff.d.ts +88 -0
- package/renderer/Diff.mjs +316 -0
- package/renderer/Dimensions.d.mts +28 -0
- package/renderer/Dimensions.d.ts +28 -0
- package/renderer/Dimensions.mjs +130 -0
- package/renderer/DistanceField.d.mts +39 -0
- package/renderer/DistanceField.d.ts +39 -0
- package/renderer/DistanceField.mjs +114 -0
- package/renderer/ExecutionMode.d.mts +42 -0
- package/renderer/ExecutionMode.d.ts +42 -0
- package/renderer/ExecutionMode.mjs +127 -0
- package/renderer/Field3.d.mts +40 -0
- package/renderer/Field3.d.ts +40 -0
- package/renderer/Field3.mjs +160 -0
- package/renderer/FieldProgram.d.mts +40 -0
- package/renderer/FieldProgram.d.ts +40 -0
- package/renderer/FieldProgram.mjs +167 -0
- package/renderer/FieldProgramBinaryOp.d.mts +42 -0
- package/renderer/FieldProgramBinaryOp.d.ts +42 -0
- package/renderer/FieldProgramBinaryOp.mjs +118 -0
- package/renderer/FieldProgramBuilder.d.mts +104 -0
- package/renderer/FieldProgramBuilder.d.ts +104 -0
- package/renderer/FieldProgramBuilder.mjs +486 -0
- package/renderer/FieldProgramDistanceKind.d.mts +26 -0
- package/renderer/FieldProgramDistanceKind.d.ts +26 -0
- package/renderer/FieldProgramDistanceKind.mjs +78 -0
- package/renderer/FieldProgramUnaryOp.d.mts +34 -0
- package/renderer/FieldProgramUnaryOp.d.ts +34 -0
- package/renderer/FieldProgramUnaryOp.mjs +102 -0
- package/renderer/FieldProgramValueType.d.mts +25 -0
- package/renderer/FieldProgramValueType.d.ts +25 -0
- package/renderer/FieldProgramValueType.mjs +75 -0
- package/renderer/FieldRange.d.mts +15 -0
- package/renderer/FieldRange.d.ts +15 -0
- package/renderer/FieldRange.mjs +109 -0
- package/renderer/Fingerprint.d.mts +44 -0
- package/renderer/Fingerprint.d.ts +44 -0
- package/renderer/Fingerprint.mjs +197 -0
- package/renderer/GeneratedChunk.d.mts +35 -0
- package/renderer/GeneratedChunk.d.ts +35 -0
- package/renderer/GeneratedChunk.mjs +178 -0
- package/renderer/GeneratedChunkCoverage.d.mts +25 -0
- package/renderer/GeneratedChunkCoverage.d.ts +25 -0
- package/renderer/GeneratedChunkCoverage.mjs +75 -0
- package/renderer/GeneratedChunkOverlayMode.d.mts +24 -0
- package/renderer/GeneratedChunkOverlayMode.d.ts +24 -0
- package/renderer/GeneratedChunkOverlayMode.mjs +72 -0
- package/renderer/GeneratedWorldStream.d.mts +28 -0
- package/renderer/GeneratedWorldStream.d.ts +28 -0
- package/renderer/GeneratedWorldStream.mjs +86 -0
- package/renderer/Geo.d.mts +41 -0
- package/renderer/Geo.d.ts +41 -0
- package/renderer/Geo.mjs +121 -0
- package/renderer/Hdl.d.mts +56 -0
- package/renderer/Hdl.d.ts +56 -0
- package/renderer/Hdl.mjs +163 -0
- package/renderer/InterpolationSpace.d.mts +25 -0
- package/renderer/InterpolationSpace.d.ts +25 -0
- package/renderer/InterpolationSpace.mjs +73 -0
- package/renderer/IoLayout.d.mts +26 -0
- package/renderer/IoLayout.d.ts +26 -0
- package/renderer/IoLayout.mjs +81 -0
- package/renderer/IoLayoutBuilder.d.mts +73 -0
- package/renderer/IoLayoutBuilder.d.ts +73 -0
- package/renderer/IoLayoutBuilder.mjs +315 -0
- package/renderer/IoType.d.mts +41 -0
- package/renderer/IoType.d.ts +41 -0
- package/renderer/IoType.mjs +125 -0
- package/renderer/ItemModelConfig.d.mts +65 -0
- package/renderer/ItemModelConfig.d.ts +65 -0
- package/renderer/ItemModelConfig.mjs +223 -0
- package/renderer/ItemModelPackBuilder.d.mts +32 -0
- package/renderer/ItemModelPackBuilder.d.ts +32 -0
- package/renderer/ItemModelPackBuilder.mjs +104 -0
- package/renderer/ItemModelResult.d.mts +72 -0
- package/renderer/ItemModelResult.d.ts +72 -0
- package/renderer/ItemModelResult.mjs +268 -0
- package/renderer/ItemScale.d.mts +31 -0
- package/renderer/ItemScale.d.ts +31 -0
- package/renderer/ItemScale.mjs +133 -0
- package/renderer/LayoutFunction.d.mts +52 -0
- package/renderer/LayoutFunction.d.ts +52 -0
- package/renderer/LayoutFunction.mjs +159 -0
- package/renderer/MchprsWorld.d.mts +131 -0
- package/renderer/MchprsWorld.d.ts +131 -0
- package/renderer/MchprsWorld.mjs +423 -0
- package/renderer/MeshBounds.d.mts +40 -0
- package/renderer/MeshBounds.d.ts +40 -0
- package/renderer/MeshBounds.mjs +181 -0
- package/renderer/MeshConfig.d.mts +101 -0
- package/renderer/MeshConfig.d.ts +101 -0
- package/renderer/MeshConfig.mjs +306 -0
- package/renderer/MeshJob.d.mts +44 -0
- package/renderer/MeshJob.d.ts +44 -0
- package/renderer/MeshJob.mjs +116 -0
- package/renderer/MeshPhase.d.mts +38 -0
- package/renderer/MeshPhase.d.ts +38 -0
- package/renderer/MeshPhase.mjs +90 -0
- package/renderer/MeshProgress.d.mts +32 -0
- package/renderer/MeshProgress.d.ts +32 -0
- package/renderer/MeshProgress.mjs +134 -0
- package/renderer/MeshResult.d.mts +76 -0
- package/renderer/MeshResult.d.ts +76 -0
- package/renderer/MeshResult.mjs +269 -0
- package/renderer/MultiMeshResult.d.mts +50 -0
- package/renderer/MultiMeshResult.d.ts +50 -0
- package/renderer/MultiMeshResult.mjs +166 -0
- package/renderer/Nbt.d.mts +50 -0
- package/renderer/Nbt.d.ts +50 -0
- package/renderer/Nbt.mjs +161 -0
- package/renderer/NucleationError.d.mts +53 -0
- package/renderer/NucleationError.d.ts +53 -0
- package/renderer/NucleationError.mjs +136 -0
- package/renderer/OutputCondition.d.mts +45 -0
- package/renderer/OutputCondition.d.ts +45 -0
- package/renderer/OutputCondition.mjs +129 -0
- package/renderer/Palette.d.mts +157 -0
- package/renderer/Palette.d.ts +157 -0
- package/renderer/Palette.mjs +487 -0
- package/renderer/PaletteBuilder.d.mts +119 -0
- package/renderer/PaletteBuilder.d.ts +119 -0
- package/renderer/PaletteBuilder.mjs +457 -0
- package/renderer/README.md +67 -0
- package/renderer/RawMeshExport.d.mts +74 -0
- package/renderer/RawMeshExport.d.ts +74 -0
- package/renderer/RawMeshExport.mjs +243 -0
- package/renderer/RedstoneGraph.d.mts +58 -0
- package/renderer/RedstoneGraph.d.ts +58 -0
- package/renderer/RedstoneGraph.mjs +242 -0
- package/renderer/RegionBounds.d.mts +41 -0
- package/renderer/RegionBounds.d.ts +41 -0
- package/renderer/RegionBounds.mjs +182 -0
- package/renderer/RenderConfig.d.mts +101 -0
- package/renderer/RenderConfig.d.ts +101 -0
- package/renderer/RenderConfig.mjs +271 -0
- package/renderer/Renderer.d.mts +51 -0
- package/renderer/Renderer.d.ts +51 -0
- package/renderer/Renderer.mjs +219 -0
- package/renderer/ResourcePack.d.mts +105 -0
- package/renderer/ResourcePack.d.ts +105 -0
- package/renderer/ResourcePack.mjs +447 -0
- package/renderer/ResourcePackList.d.mts +32 -0
- package/renderer/ResourcePackList.d.ts +32 -0
- package/renderer/ResourcePackList.mjs +96 -0
- package/renderer/Routing.d.mts +66 -0
- package/renderer/Routing.d.ts +66 -0
- package/renderer/Routing.mjs +220 -0
- package/renderer/Schematic.d.mts +977 -0
- package/renderer/Schematic.d.ts +977 -0
- package/renderer/Schematic.mjs +3820 -0
- package/renderer/SchematicBuilder.d.mts +103 -0
- package/renderer/SchematicBuilder.d.ts +103 -0
- package/renderer/SchematicBuilder.mjs +401 -0
- package/renderer/SchematicRegions.d.mts +93 -0
- package/renderer/SchematicRegions.d.ts +93 -0
- package/renderer/SchematicRegions.mjs +411 -0
- package/renderer/SchematicSplitResult.d.mts +26 -0
- package/renderer/SchematicSplitResult.d.ts +26 -0
- package/renderer/SchematicSplitResult.mjs +84 -0
- package/renderer/Scripting.d.mts +40 -0
- package/renderer/Scripting.d.ts +40 -0
- package/renderer/Scripting.mjs +138 -0
- package/renderer/Sdf.d.mts +234 -0
- package/renderer/Sdf.d.ts +234 -0
- package/renderer/Sdf.mjs +1234 -0
- package/renderer/SdfAxis.d.mts +25 -0
- package/renderer/SdfAxis.d.ts +25 -0
- package/renderer/SdfAxis.mjs +75 -0
- package/renderer/SdfBounds.d.mts +19 -0
- package/renderer/SdfBounds.d.ts +19 -0
- package/renderer/SdfBounds.mjs +161 -0
- package/renderer/SdfCellMode.d.mts +26 -0
- package/renderer/SdfCellMode.d.ts +26 -0
- package/renderer/SdfCellMode.mjs +78 -0
- package/renderer/SdfNormal.d.mts +16 -0
- package/renderer/SdfNormal.d.ts +16 -0
- package/renderer/SdfNormal.mjs +122 -0
- package/renderer/Shape.d.mts +143 -0
- package/renderer/Shape.d.ts +143 -0
- package/renderer/Shape.mjs +458 -0
- package/renderer/SortStrategy.d.mts +86 -0
- package/renderer/SortStrategy.d.ts +86 -0
- package/renderer/SortStrategy.mjs +272 -0
- package/renderer/Store.d.mts +83 -0
- package/renderer/Store.d.ts +83 -0
- package/renderer/Store.mjs +369 -0
- package/renderer/StoreIo.d.mts +71 -0
- package/renderer/StoreIo.d.ts +71 -0
- package/renderer/StoreIo.mjs +292 -0
- package/renderer/TextureAtlas.d.mts +40 -0
- package/renderer/TextureAtlas.d.ts +40 -0
- package/renderer/TextureAtlas.mjs +122 -0
- package/renderer/TextureInfo.d.mts +34 -0
- package/renderer/TextureInfo.d.ts +34 -0
- package/renderer/TextureInfo.mjs +149 -0
- package/renderer/TickSettleMode.d.mts +34 -0
- package/renderer/TickSettleMode.d.ts +34 -0
- package/renderer/TickSettleMode.mjs +84 -0
- package/renderer/TickSimulation.d.mts +572 -0
- package/renderer/TickSimulation.d.ts +572 -0
- package/renderer/TickSimulation.mjs +1299 -0
- package/renderer/TypedCircuitExecutor.d.mts +101 -0
- package/renderer/TypedCircuitExecutor.d.ts +101 -0
- package/renderer/TypedCircuitExecutor.mjs +378 -0
- package/renderer/Value.d.mts +73 -0
- package/renderer/Value.d.ts +73 -0
- package/renderer/Value.mjs +275 -0
- package/renderer/VideoConfig.d.mts +15 -0
- package/renderer/VideoConfig.d.ts +15 -0
- package/renderer/VideoConfig.mjs +44 -0
- package/renderer/VoxelModel.d.mts +34 -0
- package/renderer/VoxelModel.d.ts +34 -0
- package/renderer/VoxelModel.mjs +113 -0
- package/renderer/Voxelizer.d.mts +80 -0
- package/renderer/Voxelizer.d.ts +80 -0
- package/renderer/Voxelizer.mjs +261 -0
- package/renderer/WorldChunkView.d.mts +75 -0
- package/renderer/WorldChunkView.d.ts +75 -0
- package/renderer/WorldChunkView.mjs +224 -0
- package/renderer/WorldGenerator.d.mts +75 -0
- package/renderer/WorldGenerator.d.ts +75 -0
- package/renderer/WorldGenerator.mjs +255 -0
- package/renderer/WorldSink.d.mts +50 -0
- package/renderer/WorldSink.d.ts +50 -0
- package/renderer/WorldSink.mjs +177 -0
- package/renderer/WorldStream.d.mts +45 -0
- package/renderer/WorldStream.d.ts +45 -0
- package/renderer/WorldStream.mjs +184 -0
- package/renderer/WsPartitionHints.d.mts +29 -0
- package/renderer/WsPartitionHints.d.ts +29 -0
- package/renderer/WsPartitionHints.mjs +102 -0
- package/renderer/WsProfile.d.mts +46 -0
- package/renderer/WsProfile.d.ts +46 -0
- package/renderer/WsProfile.mjs +152 -0
- package/renderer/WsRunResult.d.mts +83 -0
- package/renderer/WsRunResult.d.ts +83 -0
- package/renderer/WsRunResult.mjs +326 -0
- package/renderer/WsSegmentJob.d.mts +28 -0
- package/renderer/WsSegmentJob.d.ts +28 -0
- package/renderer/WsSegmentJob.mjs +81 -0
- package/renderer/diplomat-runtime.d.mts +15 -0
- package/renderer/diplomat-runtime.d.ts +15 -0
- package/renderer/diplomat-runtime.mjs +779 -0
- package/renderer/diplomat-wasm.mjs +52 -0
- package/renderer/diplomat.config.mjs +5 -0
- package/renderer/index.d.mts +193 -0
- package/renderer/index.d.ts +193 -0
- package/renderer/index.mjs +196 -0
- package/renderer/nucleation.wasm +0 -0
- package/renderer/veneer/design.d.ts +167 -0
- package/renderer/veneer/design.mjs +480 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import type { Field3 } from "./Field3.mjs"
|
|
3
|
+
import type { InterpolationSpace } from "./InterpolationSpace.mjs"
|
|
4
|
+
import type { NucleationError } from "./NucleationError.mjs"
|
|
5
|
+
import type { Palette } from "./Palette.mjs"
|
|
6
|
+
import type { Sdf } from "./Sdf.mjs"
|
|
7
|
+
import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Decides which block goes at each point of a filled shape. Wraps `BrushEnum`.
|
|
13
|
+
*/
|
|
14
|
+
export class Brush {
|
|
15
|
+
/** @internal */
|
|
16
|
+
get ffiValue(): pointer;
|
|
17
|
+
/** @internal */
|
|
18
|
+
constructor();
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Every point becomes `block_name` (a block-state string).
|
|
23
|
+
*/
|
|
24
|
+
static solid(blockName: string): Brush;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Nearest-block-to-RGB-color brush.
|
|
28
|
+
*/
|
|
29
|
+
static color(r: number, g: number, b: number): Brush;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Linear color gradient between two anchored points.
|
|
33
|
+
*/
|
|
34
|
+
static linearGradient(x1: number, y1: number, z1: number, r1: number, g1: number, b1: number, x2: number, y2: number, z2: number, r2: number, g2: number, b2: number, space: InterpolationSpace): Brush;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Base color shaded by surface normal against light direction
|
|
38
|
+
* (`lx`, `ly`, `lz`).
|
|
39
|
+
*/
|
|
40
|
+
static shaded(r: number, g: number, b: number, lx: number, ly: number, lz: number): Brush;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Bilinear gradient over the patch `origin + s*u + t*v` with corner colors
|
|
44
|
+
* c00/c10/c01/c11.
|
|
45
|
+
*/
|
|
46
|
+
static bilinearGradient(ox: number, oy: number, oz: number, ux: number, uy: number, uz: number, vx: number, vy: number, vz: number, r00: number, g00: number, b00: number, r10: number, g10: number, b10: number, r01: number, g01: number, b01: number, r11: number, g11: number, b11: number, space: InterpolationSpace): Brush;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Inverse-distance-weighted gradient between colored anchor points.
|
|
50
|
+
* `positions` is flat `[x0, y0, z0, x1, …]` and `colors` is flat
|
|
51
|
+
* `[r0, g0, b0, r1, …]`; both must describe the same non-zero number of
|
|
52
|
+
* points (`positions.len() == colors.len()`, a multiple of 3).
|
|
53
|
+
*/
|
|
54
|
+
static pointGradient(positions: Array<number>, colors: Array<number>, falloff: number, space: InterpolationSpace): Brush;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Spotlight-lit base color (`r`, `g`, `b`): Lambert shading toward a
|
|
58
|
+
* cone light at (`px`, `py`, `pz`) aimed along (`dx`, `dy`, `dz`).
|
|
59
|
+
* Full intensity inside 0.7 × `cone_angle_deg`, smoothstep falloff
|
|
60
|
+
* to zero at the cone edge; surfaces facing away or outside the cone
|
|
61
|
+
* drop to a 4% ambient floor.
|
|
62
|
+
*/
|
|
63
|
+
static spotlight(px: number, py: number, pz: number, dx: number, dy: number, dz: number, coneAngleDeg: number, r: number, g: number, b: number): Brush;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Use `palette` for this brush's color→block snapping instead of the
|
|
67
|
+
* default all-blocks palette. No-op for `solid` brushes, which place
|
|
68
|
+
* a fixed block state. Set it before filling; the palette is shared,
|
|
69
|
+
* not copied.
|
|
70
|
+
*/
|
|
71
|
+
setPalette(palette: Palette): void;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Gradient along a parametric curve: `stops` holds the curve parameters in
|
|
75
|
+
* `[0, 1]` and `colors` the matching flat RGB triples
|
|
76
|
+
* (`colors.len() == stops.len() * 3`, `stops` non-empty).
|
|
77
|
+
*/
|
|
78
|
+
static curveGradient(stops: Array<number>, colors: Array<number>, space: InterpolationSpace): Brush;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Compatibility path that colors voxels by evaluating an SDF graph as
|
|
82
|
+
* a scalar field. Prefer `field3` for new code.
|
|
83
|
+
* `stops` are in `[0, 1]`; `colors` are flat RGB triples. The sampled
|
|
84
|
+
* value is remapped from `[lo, hi]` before reading the gradient.
|
|
85
|
+
*/
|
|
86
|
+
static fieldSdf(field: Sdf, stops: Array<number>, colors: Array<number>, lo: number, hi: number, space: InterpolationSpace): Brush;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Color every voxel by evaluating a geometry-neutral scalar field at
|
|
90
|
+
* its center. The field is cloned into the brush, so both wrappers
|
|
91
|
+
* may be independently destroyed after construction.
|
|
92
|
+
*/
|
|
93
|
+
static field3(field: Field3, stops: Array<number>, colors: Array<number>, lo: number, hi: number, space: InterpolationSpace): Brush;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Legacy JSON-first field brush. Prefer `field3` for new code.
|
|
97
|
+
*/
|
|
98
|
+
static field(fieldJson: string, stops: Array<number>, colors: Array<number>, lo: number, hi: number, space: InterpolationSpace): Brush;
|
|
99
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import type { Field3 } from "./Field3.mjs"
|
|
3
|
+
import type { InterpolationSpace } from "./InterpolationSpace.mjs"
|
|
4
|
+
import type { NucleationError } from "./NucleationError.mjs"
|
|
5
|
+
import type { Palette } from "./Palette.mjs"
|
|
6
|
+
import type { Sdf } from "./Sdf.mjs"
|
|
7
|
+
import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Decides which block goes at each point of a filled shape. Wraps `BrushEnum`.
|
|
13
|
+
*/
|
|
14
|
+
export class Brush {
|
|
15
|
+
/** @internal */
|
|
16
|
+
get ffiValue(): pointer;
|
|
17
|
+
/** @internal */
|
|
18
|
+
constructor();
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Every point becomes `block_name` (a block-state string).
|
|
23
|
+
*/
|
|
24
|
+
static solid(blockName: string): Brush;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Nearest-block-to-RGB-color brush.
|
|
28
|
+
*/
|
|
29
|
+
static color(r: number, g: number, b: number): Brush;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Linear color gradient between two anchored points.
|
|
33
|
+
*/
|
|
34
|
+
static linearGradient(x1: number, y1: number, z1: number, r1: number, g1: number, b1: number, x2: number, y2: number, z2: number, r2: number, g2: number, b2: number, space: InterpolationSpace): Brush;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Base color shaded by surface normal against light direction
|
|
38
|
+
* (`lx`, `ly`, `lz`).
|
|
39
|
+
*/
|
|
40
|
+
static shaded(r: number, g: number, b: number, lx: number, ly: number, lz: number): Brush;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Bilinear gradient over the patch `origin + s*u + t*v` with corner colors
|
|
44
|
+
* c00/c10/c01/c11.
|
|
45
|
+
*/
|
|
46
|
+
static bilinearGradient(ox: number, oy: number, oz: number, ux: number, uy: number, uz: number, vx: number, vy: number, vz: number, r00: number, g00: number, b00: number, r10: number, g10: number, b10: number, r01: number, g01: number, b01: number, r11: number, g11: number, b11: number, space: InterpolationSpace): Brush;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Inverse-distance-weighted gradient between colored anchor points.
|
|
50
|
+
* `positions` is flat `[x0, y0, z0, x1, …]` and `colors` is flat
|
|
51
|
+
* `[r0, g0, b0, r1, …]`; both must describe the same non-zero number of
|
|
52
|
+
* points (`positions.len() == colors.len()`, a multiple of 3).
|
|
53
|
+
*/
|
|
54
|
+
static pointGradient(positions: Array<number>, colors: Array<number>, falloff: number, space: InterpolationSpace): Brush;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Spotlight-lit base color (`r`, `g`, `b`): Lambert shading toward a
|
|
58
|
+
* cone light at (`px`, `py`, `pz`) aimed along (`dx`, `dy`, `dz`).
|
|
59
|
+
* Full intensity inside 0.7 × `cone_angle_deg`, smoothstep falloff
|
|
60
|
+
* to zero at the cone edge; surfaces facing away or outside the cone
|
|
61
|
+
* drop to a 4% ambient floor.
|
|
62
|
+
*/
|
|
63
|
+
static spotlight(px: number, py: number, pz: number, dx: number, dy: number, dz: number, coneAngleDeg: number, r: number, g: number, b: number): Brush;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Use `palette` for this brush's color→block snapping instead of the
|
|
67
|
+
* default all-blocks palette. No-op for `solid` brushes, which place
|
|
68
|
+
* a fixed block state. Set it before filling; the palette is shared,
|
|
69
|
+
* not copied.
|
|
70
|
+
*/
|
|
71
|
+
setPalette(palette: Palette): void;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Gradient along a parametric curve: `stops` holds the curve parameters in
|
|
75
|
+
* `[0, 1]` and `colors` the matching flat RGB triples
|
|
76
|
+
* (`colors.len() == stops.len() * 3`, `stops` non-empty).
|
|
77
|
+
*/
|
|
78
|
+
static curveGradient(stops: Array<number>, colors: Array<number>, space: InterpolationSpace): Brush;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Compatibility path that colors voxels by evaluating an SDF graph as
|
|
82
|
+
* a scalar field. Prefer `field3` for new code.
|
|
83
|
+
* `stops` are in `[0, 1]`; `colors` are flat RGB triples. The sampled
|
|
84
|
+
* value is remapped from `[lo, hi]` before reading the gradient.
|
|
85
|
+
*/
|
|
86
|
+
static fieldSdf(field: Sdf, stops: Array<number>, colors: Array<number>, lo: number, hi: number, space: InterpolationSpace): Brush;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Color every voxel by evaluating a geometry-neutral scalar field at
|
|
90
|
+
* its center. The field is cloned into the brush, so both wrappers
|
|
91
|
+
* may be independently destroyed after construction.
|
|
92
|
+
*/
|
|
93
|
+
static field3(field: Field3, stops: Array<number>, colors: Array<number>, lo: number, hi: number, space: InterpolationSpace): Brush;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Legacy JSON-first field brush. Prefer `field3` for new code.
|
|
97
|
+
*/
|
|
98
|
+
static field(fieldJson: string, stops: Array<number>, colors: Array<number>, lo: number, hi: number, space: InterpolationSpace): Brush;
|
|
99
|
+
}
|
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import { Field3 } from "./Field3.mjs"
|
|
3
|
+
import { InterpolationSpace } from "./InterpolationSpace.mjs"
|
|
4
|
+
import { NucleationError } from "./NucleationError.mjs"
|
|
5
|
+
import { Palette } from "./Palette.mjs"
|
|
6
|
+
import { Sdf } from "./Sdf.mjs"
|
|
7
|
+
import wasm from "./diplomat-wasm.mjs";
|
|
8
|
+
import * as diplomatRuntime from "./diplomat-runtime.mjs";
|
|
9
|
+
|
|
10
|
+
const Brush_box_destroy_registry = new FinalizationRegistry((ptr) => {
|
|
11
|
+
wasm.Brush_destroy(ptr);
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Decides which block goes at each point of a filled shape. Wraps `BrushEnum`.
|
|
16
|
+
*/
|
|
17
|
+
export class Brush {
|
|
18
|
+
// Internal ptr reference:
|
|
19
|
+
#ptr = null;
|
|
20
|
+
|
|
21
|
+
// Lifetimes are only to keep dependencies alive.
|
|
22
|
+
// Since JS won't garbage collect until there are no incoming edges.
|
|
23
|
+
#selfEdge = [];
|
|
24
|
+
|
|
25
|
+
#internalConstructor(symbol, ptr, selfEdge) {
|
|
26
|
+
if (symbol !== diplomatRuntime.internalConstructor) {
|
|
27
|
+
console.error("Brush is an Opaque type. You cannot call its constructor.");
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
this.#ptr = ptr;
|
|
31
|
+
this.#selfEdge = selfEdge;
|
|
32
|
+
|
|
33
|
+
// Are we being borrowed? If not, we can register.
|
|
34
|
+
if (this.#selfEdge.length === 0) {
|
|
35
|
+
Brush_box_destroy_registry.register(this, this.#ptr);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
/** @internal */
|
|
41
|
+
get ffiValue() {
|
|
42
|
+
return this.#ptr;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Every point becomes `block_name` (a block-state string).
|
|
48
|
+
*/
|
|
49
|
+
static solid(blockName) {
|
|
50
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
51
|
+
|
|
52
|
+
const blockNameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, blockName)));
|
|
53
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
const result = wasm.Brush_solid(diplomatReceive.buffer, blockNameSlice.ptr);
|
|
57
|
+
|
|
58
|
+
try {
|
|
59
|
+
if (!diplomatReceive.resultFlag) {
|
|
60
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
61
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
62
|
+
}
|
|
63
|
+
return new Brush(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
finally {
|
|
67
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
68
|
+
functionCleanupArena.free();
|
|
69
|
+
|
|
70
|
+
diplomatReceive.free();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Nearest-block-to-RGB-color brush.
|
|
76
|
+
*/
|
|
77
|
+
static color(r, g, b) {
|
|
78
|
+
|
|
79
|
+
const result = wasm.Brush_color(r, g, b);
|
|
80
|
+
|
|
81
|
+
try {
|
|
82
|
+
return new Brush(diplomatRuntime.internalConstructor, result, []);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
finally {
|
|
86
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Linear color gradient between two anchored points.
|
|
92
|
+
*/
|
|
93
|
+
static linearGradient(x1, y1, z1, r1, g1, b1, x2, y2, z2, r2, g2, b2, space) {
|
|
94
|
+
|
|
95
|
+
const result = wasm.Brush_linear_gradient(x1, y1, z1, r1, g1, b1, x2, y2, z2, r2, g2, b2, space.ffiValue);
|
|
96
|
+
|
|
97
|
+
try {
|
|
98
|
+
return new Brush(diplomatRuntime.internalConstructor, result, []);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
finally {
|
|
102
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Base color shaded by surface normal against light direction
|
|
108
|
+
* (`lx`, `ly`, `lz`).
|
|
109
|
+
*/
|
|
110
|
+
static shaded(r, g, b, lx, ly, lz) {
|
|
111
|
+
|
|
112
|
+
const result = wasm.Brush_shaded(r, g, b, lx, ly, lz);
|
|
113
|
+
|
|
114
|
+
try {
|
|
115
|
+
return new Brush(diplomatRuntime.internalConstructor, result, []);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
finally {
|
|
119
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Bilinear gradient over the patch `origin + s*u + t*v` with corner colors
|
|
125
|
+
* c00/c10/c01/c11.
|
|
126
|
+
*/
|
|
127
|
+
static bilinearGradient(ox, oy, oz, ux, uy, uz, vx, vy, vz, r00, g00, b00, r10, g10, b10, r01, g01, b01, r11, g11, b11, space) {
|
|
128
|
+
|
|
129
|
+
const result = wasm.Brush_bilinear_gradient(ox, oy, oz, ux, uy, uz, vx, vy, vz, r00, g00, b00, r10, g10, b10, r01, g01, b01, r11, g11, b11, space.ffiValue);
|
|
130
|
+
|
|
131
|
+
try {
|
|
132
|
+
return new Brush(diplomatRuntime.internalConstructor, result, []);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
finally {
|
|
136
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Inverse-distance-weighted gradient between colored anchor points.
|
|
142
|
+
* `positions` is flat `[x0, y0, z0, x1, …]` and `colors` is flat
|
|
143
|
+
* `[r0, g0, b0, r1, …]`; both must describe the same non-zero number of
|
|
144
|
+
* points (`positions.len() == colors.len()`, a multiple of 3).
|
|
145
|
+
*/
|
|
146
|
+
static pointGradient(positions, colors, falloff, space) {
|
|
147
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
148
|
+
|
|
149
|
+
const positionsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, positions, "i32")));
|
|
150
|
+
const colorsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, colors, "u8")));
|
|
151
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
const result = wasm.Brush_point_gradient(diplomatReceive.buffer, positionsSlice.ptr, colorsSlice.ptr, falloff, space.ffiValue);
|
|
155
|
+
|
|
156
|
+
try {
|
|
157
|
+
if (!diplomatReceive.resultFlag) {
|
|
158
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
159
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
160
|
+
}
|
|
161
|
+
return new Brush(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
finally {
|
|
165
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
166
|
+
functionCleanupArena.free();
|
|
167
|
+
|
|
168
|
+
diplomatReceive.free();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Spotlight-lit base color (`r`, `g`, `b`): Lambert shading toward a
|
|
174
|
+
* cone light at (`px`, `py`, `pz`) aimed along (`dx`, `dy`, `dz`).
|
|
175
|
+
* Full intensity inside 0.7 × `cone_angle_deg`, smoothstep falloff
|
|
176
|
+
* to zero at the cone edge; surfaces facing away or outside the cone
|
|
177
|
+
* drop to a 4% ambient floor.
|
|
178
|
+
*/
|
|
179
|
+
static spotlight(px, py, pz, dx, dy, dz, coneAngleDeg, r, g, b) {
|
|
180
|
+
|
|
181
|
+
const result = wasm.Brush_spotlight(px, py, pz, dx, dy, dz, coneAngleDeg, r, g, b);
|
|
182
|
+
|
|
183
|
+
try {
|
|
184
|
+
return new Brush(diplomatRuntime.internalConstructor, result, []);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
finally {
|
|
188
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Use `palette` for this brush's color→block snapping instead of the
|
|
194
|
+
* default all-blocks palette. No-op for `solid` brushes, which place
|
|
195
|
+
* a fixed block state. Set it before filling; the palette is shared,
|
|
196
|
+
* not copied.
|
|
197
|
+
*/
|
|
198
|
+
setPalette(palette) {
|
|
199
|
+
wasm.Brush_set_palette(this.ffiValue, palette.ffiValue);
|
|
200
|
+
|
|
201
|
+
try {}
|
|
202
|
+
|
|
203
|
+
finally {
|
|
204
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Gradient along a parametric curve: `stops` holds the curve parameters in
|
|
210
|
+
* `[0, 1]` and `colors` the matching flat RGB triples
|
|
211
|
+
* (`colors.len() == stops.len() * 3`, `stops` non-empty).
|
|
212
|
+
*/
|
|
213
|
+
static curveGradient(stops, colors, space) {
|
|
214
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
215
|
+
|
|
216
|
+
const stopsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, stops, "f32")));
|
|
217
|
+
const colorsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, colors, "u8")));
|
|
218
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
const result = wasm.Brush_curve_gradient(diplomatReceive.buffer, stopsSlice.ptr, colorsSlice.ptr, space.ffiValue);
|
|
222
|
+
|
|
223
|
+
try {
|
|
224
|
+
if (!diplomatReceive.resultFlag) {
|
|
225
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
226
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
227
|
+
}
|
|
228
|
+
return new Brush(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
finally {
|
|
232
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
233
|
+
functionCleanupArena.free();
|
|
234
|
+
|
|
235
|
+
diplomatReceive.free();
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Compatibility path that colors voxels by evaluating an SDF graph as
|
|
241
|
+
* a scalar field. Prefer `field3` for new code.
|
|
242
|
+
* `stops` are in `[0, 1]`; `colors` are flat RGB triples. The sampled
|
|
243
|
+
* value is remapped from `[lo, hi]` before reading the gradient.
|
|
244
|
+
*/
|
|
245
|
+
static fieldSdf(field, stops, colors, lo, hi, space) {
|
|
246
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
247
|
+
|
|
248
|
+
const stopsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, stops, "f32")));
|
|
249
|
+
const colorsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, colors, "u8")));
|
|
250
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
const result = wasm.Brush_field_sdf(diplomatReceive.buffer, field.ffiValue, stopsSlice.ptr, colorsSlice.ptr, lo, hi, space.ffiValue);
|
|
254
|
+
|
|
255
|
+
try {
|
|
256
|
+
if (!diplomatReceive.resultFlag) {
|
|
257
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
258
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
259
|
+
}
|
|
260
|
+
return new Brush(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
finally {
|
|
264
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
265
|
+
functionCleanupArena.free();
|
|
266
|
+
|
|
267
|
+
diplomatReceive.free();
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Color every voxel by evaluating a geometry-neutral scalar field at
|
|
273
|
+
* its center. The field is cloned into the brush, so both wrappers
|
|
274
|
+
* may be independently destroyed after construction.
|
|
275
|
+
*/
|
|
276
|
+
static field3(field, stops, colors, lo, hi, space) {
|
|
277
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
278
|
+
|
|
279
|
+
const stopsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, stops, "f32")));
|
|
280
|
+
const colorsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, colors, "u8")));
|
|
281
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
const result = wasm.Brush_field3(diplomatReceive.buffer, field.ffiValue, stopsSlice.ptr, colorsSlice.ptr, lo, hi, space.ffiValue);
|
|
285
|
+
|
|
286
|
+
try {
|
|
287
|
+
if (!diplomatReceive.resultFlag) {
|
|
288
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
289
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
290
|
+
}
|
|
291
|
+
return new Brush(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
finally {
|
|
295
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
296
|
+
functionCleanupArena.free();
|
|
297
|
+
|
|
298
|
+
diplomatReceive.free();
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Legacy JSON-first field brush. Prefer `field3` for new code.
|
|
304
|
+
*/
|
|
305
|
+
static field(fieldJson, stops, colors, lo, hi, space) {
|
|
306
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
307
|
+
|
|
308
|
+
const fieldJsonSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, fieldJson)));
|
|
309
|
+
const stopsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, stops, "f32")));
|
|
310
|
+
const colorsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, colors, "u8")));
|
|
311
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
const result = wasm.Brush_field(diplomatReceive.buffer, fieldJsonSlice.ptr, stopsSlice.ptr, colorsSlice.ptr, lo, hi, space.ffiValue);
|
|
315
|
+
|
|
316
|
+
try {
|
|
317
|
+
if (!diplomatReceive.resultFlag) {
|
|
318
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
319
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
320
|
+
}
|
|
321
|
+
return new Brush(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
finally {
|
|
325
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
326
|
+
functionCleanupArena.free();
|
|
327
|
+
|
|
328
|
+
diplomatReceive.free();
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
constructor(symbol, ptr, selfEdge) {
|
|
333
|
+
return this.#internalConstructor(...arguments)
|
|
334
|
+
}
|
|
335
|
+
}
|