@field/cascade 0.11.0 → 0.12.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/AGENTS.md +7 -4
- package/ARCHITECTURE.md +5 -4
- package/CHANGELOG.md +195 -0
- package/README.md +1 -1
- package/dist/assets/AgentPanel-1JugFjE4.css +1 -0
- package/dist/assets/AgentPanel-BDL5MddA.js +5 -0
- package/dist/assets/{CodeEditor-4O7FQ__R.js → CodeEditor-C-xYG-Wn.js} +120 -120
- package/dist/assets/CodePanel-CtXd50m6.js +2 -0
- package/dist/assets/CookInfoPanel-B3NMhKJF.css +1 -0
- package/dist/assets/CookInfoPanel-DG4_TRsX.js +2 -0
- package/dist/assets/CustomNodeDialog-CHfZUs-r.js +1 -0
- package/dist/assets/DefinitionNode-CaRTXQ_b.js +1 -0
- package/dist/assets/DefinitionPanel-C3CxZY9r.js +1 -0
- package/dist/assets/DefinitionPanel-VNLnAiQD.css +1 -0
- package/dist/assets/OpenGraphDialog-BLdr6k_q.js +1 -0
- package/dist/assets/ProjectSettings-ZnvmIAir.js +2 -0
- package/dist/assets/{SettingsDialog-Bz8JxISH.js → SettingsDialog-CBX3Wa87.js} +1 -1
- package/dist/assets/TimelinePanel-CDeR0arY.css +1 -0
- package/dist/assets/TimelinePanel-CWgnFH1e.js +1 -0
- package/dist/assets/{VersionHistoryDialog-D5Z0nJ5-.js → VersionHistoryDialog-BOSoW1R-.js} +1 -1
- package/dist/assets/assert-BO2_erPD.js +1 -0
- package/dist/assets/assert-hvykGCnP.js +1 -0
- package/dist/assets/builder-BmBKcDix.js +1 -0
- package/dist/assets/camera-DFF7YA3F.js +1 -0
- package/dist/assets/checks-DAvyO9Gf.js +1 -0
- package/dist/assets/contactSheet-N1NcaWxw.js +2 -0
- package/dist/assets/{core-Yqi0Ni61.js → core-DB-MkGjj.js} +3 -4
- package/dist/assets/coreTypes-DtnDATZ7.js +1 -0
- package/dist/assets/{cssMode-CxUzc4vp.js → cssMode-DPVckSOc.js} +1 -1
- package/dist/assets/definitions-B227e7f_.js +1 -0
- package/dist/assets/definitions-D0WOUJd7.js +1 -0
- package/dist/assets/{editor.api-BNFb25CX.js → editor.api-Dkutg_Z1.js} +1 -1
- package/dist/assets/expressions-X-Z-GrgW.js +5 -0
- package/dist/assets/file-DAL6IfjV.js +1 -0
- package/dist/assets/filters-D3k1LRMa.js +1 -0
- package/dist/assets/{freemarker2-0ZDnWxeM.js → freemarker2-CLiLKk3B.js} +1 -1
- package/dist/assets/generators-BhDxRAFC.js +1 -0
- package/dist/assets/geo-BsMImJIJ.js +1 -0
- package/dist/assets/geo-C4YngDob.js +2 -0
- package/dist/assets/{handlebars-Cy18MoaD.js → handlebars-CcD3aMeL.js} +1 -1
- package/dist/assets/{html-B-2Dx7nq.js → html-DvZWGfqb.js} +1 -1
- package/dist/assets/{htmlMode-DUAc9B_d.js → htmlMode-DUD3VaoN.js} +1 -1
- package/dist/assets/image-0SfH-snh.js +1 -0
- package/dist/assets/image-Ck-RdGU4.js +2 -0
- package/dist/assets/index-BWnrmIB9.js +137 -0
- package/dist/assets/index-DIaxEONI.css +1 -0
- package/dist/assets/io-BGmt2g0D.js +1 -0
- package/dist/assets/{javascript-DeQsDqP5.js → javascript-Cap2ahgh.js} +1 -1
- package/dist/assets/{jsonMode-BiFwJVSk.js → jsonMode-B0uLjp9C.js} +1 -1
- package/dist/assets/{liquid-BLoHH68a.js → liquid-CnxwhfLn.js} +1 -1
- package/dist/assets/{lspLanguageFeatures-CNFgm1Kv.js → lspLanguageFeatures-Dn9hlKX6.js} +1 -1
- package/dist/assets/math-GeULS-sk.js +1 -0
- package/dist/assets/{mdx-CFXQVNfs.js → mdx-BV3jbrVa.js} +1 -1
- package/dist/assets/pop-KMF_qloi.js +1 -0
- package/dist/assets/preload-helper-Czpn1I53.js +1 -0
- package/dist/assets/{python-Cf7S7p2E.js → python-CGyFk4XK.js} +1 -1
- package/dist/assets/{razor-CMHBcG-g.js → razor-CQfzX3-N.js} +1 -1
- package/dist/assets/remap-5SjXQU-q.js +1 -0
- package/dist/assets/renderMarkdown-ork0Oir7.js +67 -0
- package/dist/assets/studioImages-CAyH-0Pl.js +1 -0
- package/dist/assets/text-ZpX7qNkx.js +2 -0
- package/dist/assets/time-P_OiBhcf.js +1 -0
- package/dist/assets/{tsMode-BEih0GDj.js → tsMode-BOeXzO9H.js} +1 -1
- package/dist/assets/{typescript-COEKYD_a.js → typescript-J1SnE_Tu.js} +1 -1
- package/dist/assets/{workers-BNhAhMNn.js → workers-CYwwTiVF.js} +1 -1
- package/dist/assets/{xml-CPiMpnPl.js → xml-DnPRNzK9.js} +1 -1
- package/dist/assets/{yaml-Bgp1ITLR.js → yaml-BmmYBNa9.js} +1 -1
- package/dist/cli/DefinitionNode-P7AA4TAU.js +15 -0
- package/dist/cli/{Graph-ZJJTRQTM.js → Graph-OB6EWSGL.js} +12 -12
- package/dist/cli/assert-GROGQNCQ.js +25 -0
- package/dist/cli/checks-3WB44XBL.js +189 -0
- package/dist/cli/{chunk-RQZ4SX5R.js → chunk-2JEU3MGB.js} +2 -2
- package/dist/cli/{chunk-WKURDVYP.js → chunk-3RXL5GHB.js} +28 -331
- package/dist/cli/chunk-53LGFPWX.js +138 -0
- package/dist/cli/chunk-5ORUQ6ES.js +267 -0
- package/dist/cli/chunk-73S4JZXK.js +336 -0
- package/dist/cli/{chunk-YAT5Y25U.js → chunk-7QE2ZNSN.js} +3 -3
- package/dist/cli/{chunk-SGJAET2L.js → chunk-BPODRH52.js} +8 -4
- package/dist/cli/{chunk-XWDSKG7N.js → chunk-BZ63XQ3I.js} +2 -2
- package/dist/cli/{chunk-FCDXJ6EK.js → chunk-CTPLRSWF.js} +2 -13
- package/dist/cli/chunk-EU4ZFZ7Y.js +122 -0
- package/dist/cli/{chunk-WIH4TEIS.js → chunk-EZRWJ4G2.js} +1 -1
- package/dist/cli/{chunk-BIJO5OFS.js → chunk-FWMSGKEH.js} +1 -1
- package/dist/cli/{chunk-POMMNKZZ.js → chunk-G23A2BZZ.js} +38 -5
- package/dist/cli/{chunk-35D343DC.js → chunk-GRIN2DDP.js} +19 -1
- package/dist/cli/chunk-JVOCK5W4.js +83 -0
- package/dist/cli/chunk-KBGUO27Q.js +15 -0
- package/dist/cli/{chunk-GFS6W3C5.js → chunk-L6B6FUQP.js} +54 -32
- package/dist/cli/chunk-LTXWBXOM.js +438 -0
- package/dist/cli/chunk-MI5JLQYA.js +220 -0
- package/dist/cli/{chunk-EUIAC3U3.js → chunk-MP653A5O.js} +884 -124
- package/dist/cli/{chunk-A4OAMOZH.js → chunk-NJFMDXHR.js} +13 -3
- package/dist/cli/{chunk-3JTJHF7V.js → chunk-OM6BEME6.js} +4 -4
- package/dist/cli/{chunk-DUIUFVU2.js → chunk-ST6LROUG.js} +49 -23
- package/dist/cli/{chunk-RLCAJBVR.js → chunk-TJW67QSI.js} +8 -7
- package/dist/cli/chunk-WGKPJZDY.js +364 -0
- package/dist/cli/{chunk-D6BUOHUG.js → chunk-X4WKAOQP.js} +4 -4
- package/dist/cli/{chunk-VVGSLVSF.js → chunk-X566FWBV.js} +6 -1
- package/dist/cli/chunk-YH637PDL.js +317 -0
- package/dist/cli/chunk-ZSCUZE6I.js +112 -0
- package/dist/cli/{cliCommands-UQSFGEHF.js → cliCommands-JJN5Z3ZC.js} +23 -17
- package/dist/cli/{commands-Q23M26QM.js → commands-PHYFYA3F.js} +129 -47
- package/dist/cli/contactSheet-2PQVRUFW.js +11 -0
- package/dist/cli/{definitions-HF2FTHYU.js → definitions-BPOPW52L.js} +7 -7
- package/dist/cli/{doctorCommand-B7BPQMN6.js → doctorCommand-ORWQRNYP.js} +36 -6
- package/dist/cli/{edit-JHCPTQFT.js → edit-S5KEQ5RA.js} +3 -3
- package/dist/cli/editorCommands-NFR32JOY.js +41 -0
- package/dist/cli/{encode-HAUZTYPT.js → encode-ICPEPMH5.js} +2 -2
- package/dist/cli/file-3HTQHPYQ.js +41 -0
- package/dist/cli/filters-6ODFWYK4.js +379 -0
- package/dist/cli/generators-YU7GB4MD.js +210 -0
- package/dist/cli/{geo-4RNK3QVN.js → geo-6ZPGKZRU.js} +7 -7
- package/dist/cli/{graphCommands-6BMAKGQE.js → graphCommands-EOUOBOIJ.js} +4 -4
- package/dist/cli/{graphFile-VPSQ6OF7.js → graphFile-YTGJB5F5.js} +25 -19
- package/dist/cli/{headlessCanvas-5XLDZT7M.js → headlessCanvas-ENRHC7GS.js} +3 -2
- package/dist/cli/{helpCommand-3VRE3KVO.js → helpCommand-PULH6ZYB.js} +9 -7
- package/dist/cli/image-TXELZZK5.js +55 -0
- package/dist/cli/index.js +14 -14
- package/dist/cli/{math-ZRMLKU2D.js → math-RSYRQ3C6.js} +5 -5
- package/dist/cli/{mcp-ZLEEMYGF.js → mcp-JVZFQOEX.js} +4 -4
- package/dist/cli/{parity-KINARCP2.js → parity-X6DEH2DV.js} +42 -36
- package/dist/cli/{pop-USDFXB7H.js → pop-B7SIIYKN.js} +5 -5
- package/dist/cli/project-VYGIA7JX.js +12 -0
- package/dist/cli/{projectDefinition-DMTZN2NE.js → projectDefinition-F3D7UIHJ.js} +8 -8
- package/dist/cli/{projectRuntime-Z5PJOH47.js → projectRuntime-2Q4JKEH3.js} +19 -12
- package/dist/cli/registerStandardNodes-BXJCB6E4.js +744 -0
- package/dist/cli/{render-YURAPPUI.js → render-PT4MWI6U.js} +24 -22
- package/dist/cli/{runCommand-PI764LEG.js → runCommand-HNPQVZMS.js} +3 -3
- package/dist/cli/runner-5XPXVW7J.js +43 -0
- package/dist/cli/runtime/image.ts +27 -2
- package/dist/cli/runtime/io.ts +78 -0
- package/dist/cli/share-MHF6TNRK.js +166 -0
- package/dist/cli/stageCache-TY2BFZJR.js +15 -0
- package/dist/cli/{stageRunner-KUNIMQKJ.js → stageRunner-KY2EJP7X.js} +2 -2
- package/dist/cli/text-MB3EKR4H.js +126 -0
- package/dist/cli/{verbs-RCE3K4VQ.js → verbs-PI2JH5FI.js} +2 -2
- package/dist/cli/webBuild-WPPMGGW7.js +44 -0
- package/dist/contracts/capabilities.d.ts +18 -1
- package/dist/contracts/color.d.ts +8 -0
- package/dist/contracts/color.js +23 -0
- package/dist/contracts/definition.d.ts +10 -0
- package/dist/contracts/schema.d.ts +1 -1
- package/dist/contracts/schema.js +1 -0
- package/dist/contracts/validate.js +11 -1
- package/dist/contracts/values.d.ts +24 -0
- package/dist/image.d.ts +15 -0
- package/dist/image.js +36 -2
- package/dist/index.html +8 -2
- package/dist/io.d.ts +29 -0
- package/dist/io.js +40 -0
- package/dist/player/app.js +3 -2
- package/dist/player/editor.js +3 -2
- package/dist/player/editorEngine.js +3 -2
- package/dist/runtime/builtins/assert/checks.d.ts +18 -0
- package/dist/runtime/builtins/assert/checks.js +207 -0
- package/dist/runtime/builtins/assert/definitions.d.ts +130 -0
- package/dist/runtime/builtins/assert/definitions.js +54 -0
- package/dist/runtime/builtins/assert/index.d.ts +152 -0
- package/dist/runtime/builtins/assert/index.js +36 -0
- package/dist/runtime/builtins/image/contactSheet.d.ts +3 -165
- package/dist/runtime/builtins/image/contactSheet.js +0 -49
- package/dist/runtime/builtins/image/definitions.d.ts +950 -0
- package/dist/runtime/builtins/image/definitions.js +343 -0
- package/dist/runtime/builtins/image/file.d.ts +8 -0
- package/dist/runtime/builtins/image/file.js +37 -0
- package/dist/runtime/builtins/image/filters.d.ts +8 -0
- package/dist/runtime/builtins/image/filters.js +394 -0
- package/dist/runtime/builtins/image/generators.d.ts +7 -0
- package/dist/runtime/builtins/image/generators.js +144 -0
- package/dist/runtime/builtins/image/index.d.ts +947 -4
- package/dist/runtime/builtins/image/index.js +41 -6
- package/dist/runtime/builtins/image/io.d.ts +100 -0
- package/dist/runtime/builtins/image/io.js +142 -0
- package/dist/runtime/builtins/image/planar.d.ts +55 -0
- package/dist/runtime/builtins/image/planar.js +274 -0
- package/dist/runtime/builtins/image/simplex.d.ts +22 -0
- package/dist/runtime/builtins/image/simplex.js +92 -0
- package/dist/runtime/builtins/image/text.d.ts +4 -0
- package/dist/runtime/builtins/image/text.js +141 -0
- package/dist/runtime/builtins/index.d.ts +3 -0
- package/dist/runtime/builtins/index.js +7 -0
- package/dist/runtime/gpu.d.ts +25 -0
- package/dist/runtime/gpu.js +40 -0
- package/dist/runtime/runtime.d.ts +2 -0
- package/dist/runtime/runtime.js +268 -44
- package/dist/runtime/types.d.ts +30 -0
- package/doc/CLI_REFERENCE.md +21 -3
- package/doc/EDITOR_EXPORT.md +26 -0
- package/doc/MCP.md +2 -1
- package/doc/NODE_REFERENCE.md +286 -14
- package/doc/PROJECT_AUTHORING.md +98 -3
- package/package.json +4 -1
- package/dist/assets/CodePanel-BU-autmq.js +0 -2
- package/dist/assets/CustomNodeDialog-BRpDfOV5.js +0 -1
- package/dist/assets/OpenGraphDialog-BwbRlC0X.js +0 -1
- package/dist/assets/ProjectSettings-DLOXLxcA.js +0 -2
- package/dist/assets/definitions-GreEMXLV.js +0 -1
- package/dist/assets/geo-u0n_jOsD.js +0 -1
- package/dist/assets/image-cAa-Nu9O.js +0 -2062
- package/dist/assets/index-5ZtDAuy2.js +0 -220
- package/dist/assets/index-7vae6YFC.css +0 -1
- package/dist/assets/math-DioIQOPJ.js +0 -1
- package/dist/assets/pop-DC_TQG9t.js +0 -1
- package/dist/cli/chunk-36P5K3SD.js +0 -631
- package/dist/cli/chunk-4UDFYF5G.js +0 -132
- package/dist/cli/chunk-53NMBJAO.js +0 -35
- package/dist/cli/chunk-MIIEFUGG.js +0 -623
- package/dist/cli/chunk-QBBKRNGY.js +0 -90
- package/dist/cli/chunk-WPUDGEFY.js +0 -20
- package/dist/cli/editorCommands-UIF5YLUZ.js +0 -33
- package/dist/cli/project-K3QIPGBB.js +0 -12
- package/dist/cli/registerStandardNodes-S2VLMF6J.js +0 -3081
- package/dist/cli/runner-RA6UKEPD.js +0 -37
- package/dist/cli/webBuild-GT4PZT5D.js +0 -37
- package/dist/runtime/builtins/headless.d.ts +0 -19
- package/dist/runtime/builtins/headless.js +0 -25
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { NodeExecutionContext } from "@field/cascade/contracts";
|
|
2
|
+
import type { contactSheetDefinition } from "./definitions.js";
|
|
2
3
|
/**
|
|
3
4
|
* `cascade.image.ContactSheet` — several images as one labelled grid.
|
|
4
5
|
*
|
|
@@ -10,89 +11,9 @@ import type { NodeExecutionContext } from "@field/cascade/contracts";
|
|
|
10
11
|
* `portable` with `assets`, like `cascade.geo.Render`: it reads each image
|
|
11
12
|
* through the asset capability, decodes it with `createImageBitmap` and draws
|
|
12
13
|
* on an `OffscreenCanvas`, which both hosts supply (the headless one through
|
|
13
|
-
* @napi-rs/canvas).
|
|
14
|
-
* library,
|
|
15
|
-
* yet, so today it runs headless and is listed in `../headless.ts` rather
|
|
16
|
-
* than in the built-ins Studio bundles.
|
|
14
|
+
* @napi-rs/canvas). Its declaration is in `definitions.ts` with the rest of
|
|
15
|
+
* the library, so Studio's first paint carries the literal and not this body.
|
|
17
16
|
*/
|
|
18
|
-
export declare const contactSheetDefinition: {
|
|
19
|
-
readonly apiVersion: 1;
|
|
20
|
-
readonly label: "Contact Sheet";
|
|
21
|
-
readonly description: "Lay images out as one labelled grid.";
|
|
22
|
-
readonly icon: "LayoutGrid";
|
|
23
|
-
readonly runsOn: "portable";
|
|
24
|
-
readonly capabilities: readonly ["assets"];
|
|
25
|
-
readonly inputs: {
|
|
26
|
-
readonly images: {
|
|
27
|
-
readonly kind: "data";
|
|
28
|
-
readonly type: "image";
|
|
29
|
-
readonly variadic: true;
|
|
30
|
-
};
|
|
31
|
-
/** More images after the wired ones: image values or project-relative paths. */
|
|
32
|
-
readonly list: {
|
|
33
|
-
readonly kind: "data";
|
|
34
|
-
readonly type: "array";
|
|
35
|
-
};
|
|
36
|
-
};
|
|
37
|
-
readonly outputs: {
|
|
38
|
-
readonly image: {
|
|
39
|
-
readonly kind: "data";
|
|
40
|
-
readonly type: "image";
|
|
41
|
-
};
|
|
42
|
-
readonly asset: {
|
|
43
|
-
readonly kind: "data";
|
|
44
|
-
readonly type: "asset";
|
|
45
|
-
};
|
|
46
|
-
};
|
|
47
|
-
readonly props: {
|
|
48
|
-
readonly columns: {
|
|
49
|
-
readonly type: "int";
|
|
50
|
-
readonly default: 0;
|
|
51
|
-
readonly min: 0;
|
|
52
|
-
readonly max: 64;
|
|
53
|
-
readonly description: "0: as square as the count allows.";
|
|
54
|
-
};
|
|
55
|
-
readonly gap: {
|
|
56
|
-
readonly type: "int";
|
|
57
|
-
readonly default: 16;
|
|
58
|
-
readonly min: 0;
|
|
59
|
-
readonly max: 512;
|
|
60
|
-
};
|
|
61
|
-
readonly background: {
|
|
62
|
-
readonly type: "color";
|
|
63
|
-
readonly default: readonly [1, 1, 1, 1];
|
|
64
|
-
readonly label: "Background";
|
|
65
|
-
};
|
|
66
|
-
readonly cellWidth: {
|
|
67
|
-
readonly type: "int";
|
|
68
|
-
readonly default: 0;
|
|
69
|
-
readonly min: 0;
|
|
70
|
-
readonly max: 8192;
|
|
71
|
-
readonly description: "0: images at their own size. Otherwise each is scaled to fit this width.";
|
|
72
|
-
};
|
|
73
|
-
readonly labels: {
|
|
74
|
-
readonly type: "string";
|
|
75
|
-
readonly default: "";
|
|
76
|
-
readonly description: "One label per line, in image order.";
|
|
77
|
-
};
|
|
78
|
-
readonly labelSize: {
|
|
79
|
-
readonly type: "int";
|
|
80
|
-
readonly default: 14;
|
|
81
|
-
readonly min: 6;
|
|
82
|
-
readonly max: 128;
|
|
83
|
-
};
|
|
84
|
-
readonly labelColor: {
|
|
85
|
-
readonly type: "color";
|
|
86
|
-
readonly default: readonly [0.1, 0.1, 0.1, 1];
|
|
87
|
-
readonly label: "Label Colour";
|
|
88
|
-
};
|
|
89
|
-
readonly filename: {
|
|
90
|
-
readonly type: "string";
|
|
91
|
-
readonly default: "contact-sheet.png";
|
|
92
|
-
readonly label: "Filename";
|
|
93
|
-
};
|
|
94
|
-
};
|
|
95
|
-
};
|
|
96
17
|
export interface ContactSheetOptions {
|
|
97
18
|
readonly columns?: number;
|
|
98
19
|
readonly gap?: number;
|
|
@@ -140,87 +61,4 @@ export declare function composeContactSheet(images: readonly Uint8Array[], optio
|
|
|
140
61
|
layout: SheetLayout;
|
|
141
62
|
}>;
|
|
142
63
|
export declare function executeContactSheet(context: NodeExecutionContext<typeof contactSheetDefinition>): Promise<void>;
|
|
143
|
-
export declare const contactSheetRegistration: {
|
|
144
|
-
kind: "definition-v1";
|
|
145
|
-
moduleId: string;
|
|
146
|
-
definition: {
|
|
147
|
-
readonly apiVersion: 1;
|
|
148
|
-
readonly label: "Contact Sheet";
|
|
149
|
-
readonly description: "Lay images out as one labelled grid.";
|
|
150
|
-
readonly icon: "LayoutGrid";
|
|
151
|
-
readonly runsOn: "portable";
|
|
152
|
-
readonly capabilities: readonly ["assets"];
|
|
153
|
-
readonly inputs: {
|
|
154
|
-
readonly images: {
|
|
155
|
-
readonly kind: "data";
|
|
156
|
-
readonly type: "image";
|
|
157
|
-
readonly variadic: true;
|
|
158
|
-
};
|
|
159
|
-
/** More images after the wired ones: image values or project-relative paths. */
|
|
160
|
-
readonly list: {
|
|
161
|
-
readonly kind: "data";
|
|
162
|
-
readonly type: "array";
|
|
163
|
-
};
|
|
164
|
-
};
|
|
165
|
-
readonly outputs: {
|
|
166
|
-
readonly image: {
|
|
167
|
-
readonly kind: "data";
|
|
168
|
-
readonly type: "image";
|
|
169
|
-
};
|
|
170
|
-
readonly asset: {
|
|
171
|
-
readonly kind: "data";
|
|
172
|
-
readonly type: "asset";
|
|
173
|
-
};
|
|
174
|
-
};
|
|
175
|
-
readonly props: {
|
|
176
|
-
readonly columns: {
|
|
177
|
-
readonly type: "int";
|
|
178
|
-
readonly default: 0;
|
|
179
|
-
readonly min: 0;
|
|
180
|
-
readonly max: 64;
|
|
181
|
-
readonly description: "0: as square as the count allows.";
|
|
182
|
-
};
|
|
183
|
-
readonly gap: {
|
|
184
|
-
readonly type: "int";
|
|
185
|
-
readonly default: 16;
|
|
186
|
-
readonly min: 0;
|
|
187
|
-
readonly max: 512;
|
|
188
|
-
};
|
|
189
|
-
readonly background: {
|
|
190
|
-
readonly type: "color";
|
|
191
|
-
readonly default: readonly [1, 1, 1, 1];
|
|
192
|
-
readonly label: "Background";
|
|
193
|
-
};
|
|
194
|
-
readonly cellWidth: {
|
|
195
|
-
readonly type: "int";
|
|
196
|
-
readonly default: 0;
|
|
197
|
-
readonly min: 0;
|
|
198
|
-
readonly max: 8192;
|
|
199
|
-
readonly description: "0: images at their own size. Otherwise each is scaled to fit this width.";
|
|
200
|
-
};
|
|
201
|
-
readonly labels: {
|
|
202
|
-
readonly type: "string";
|
|
203
|
-
readonly default: "";
|
|
204
|
-
readonly description: "One label per line, in image order.";
|
|
205
|
-
};
|
|
206
|
-
readonly labelSize: {
|
|
207
|
-
readonly type: "int";
|
|
208
|
-
readonly default: 14;
|
|
209
|
-
readonly min: 6;
|
|
210
|
-
readonly max: 128;
|
|
211
|
-
};
|
|
212
|
-
readonly labelColor: {
|
|
213
|
-
readonly type: "color";
|
|
214
|
-
readonly default: readonly [0.1, 0.1, 0.1, 1];
|
|
215
|
-
readonly label: "Label Colour";
|
|
216
|
-
};
|
|
217
|
-
readonly filename: {
|
|
218
|
-
readonly type: "string";
|
|
219
|
-
readonly default: "contact-sheet.png";
|
|
220
|
-
readonly label: "Filename";
|
|
221
|
-
};
|
|
222
|
-
};
|
|
223
|
-
};
|
|
224
|
-
loadExecute: () => Promise<typeof executeContactSheet>;
|
|
225
|
-
};
|
|
226
64
|
//# sourceMappingURL=contactSheet.d.ts.map
|
|
@@ -1,46 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `cascade.image.ContactSheet` — several images as one labelled grid.
|
|
3
|
-
*
|
|
4
|
-
* The selection loop is a ladder of three to five options and a pick, and the
|
|
5
|
-
* pick is made by looking at them side by side. So the sheet is a node rather
|
|
6
|
-
* than a script beside the graph: a graph can end in one, and `cascade ladder`
|
|
7
|
-
* lays out its variants with the same layout and drawing code below.
|
|
8
|
-
*
|
|
9
|
-
* `portable` with `assets`, like `cascade.geo.Render`: it reads each image
|
|
10
|
-
* through the asset capability, decodes it with `createImageBitmap` and draws
|
|
11
|
-
* on an `OffscreenCanvas`, which both hosts supply (the headless one through
|
|
12
|
-
* @napi-rs/canvas). It lives in `cascade.image.*` beside Studio's image
|
|
13
|
-
* library, as the first definition-v1 node there; Studio does not register it
|
|
14
|
-
* yet, so today it runs headless and is listed in `../headless.ts` rather
|
|
15
|
-
* than in the built-ins Studio bundles.
|
|
16
|
-
*/
|
|
17
|
-
export const contactSheetDefinition = {
|
|
18
|
-
apiVersion: 1,
|
|
19
|
-
label: "Contact Sheet",
|
|
20
|
-
description: "Lay images out as one labelled grid.",
|
|
21
|
-
icon: "LayoutGrid",
|
|
22
|
-
runsOn: "portable",
|
|
23
|
-
capabilities: ["assets"],
|
|
24
|
-
inputs: {
|
|
25
|
-
images: { kind: "data", type: "image", variadic: true },
|
|
26
|
-
/** More images after the wired ones: image values or project-relative paths. */
|
|
27
|
-
list: { kind: "data", type: "array" },
|
|
28
|
-
},
|
|
29
|
-
outputs: {
|
|
30
|
-
image: { kind: "data", type: "image" },
|
|
31
|
-
asset: { kind: "data", type: "asset" },
|
|
32
|
-
},
|
|
33
|
-
props: {
|
|
34
|
-
columns: { type: "int", default: 0, min: 0, max: 64, description: "0: as square as the count allows." },
|
|
35
|
-
gap: { type: "int", default: 16, min: 0, max: 512 },
|
|
36
|
-
background: { type: "color", default: [1, 1, 1, 1], label: "Background" },
|
|
37
|
-
cellWidth: { type: "int", default: 0, min: 0, max: 8192, description: "0: images at their own size. Otherwise each is scaled to fit this width." },
|
|
38
|
-
labels: { type: "string", default: "", description: "One label per line, in image order." },
|
|
39
|
-
labelSize: { type: "int", default: 14, min: 6, max: 128 },
|
|
40
|
-
labelColor: { type: "color", default: [0.1, 0.1, 0.1, 1], label: "Label Colour" },
|
|
41
|
-
filename: { type: "string", default: "contact-sheet.png", label: "Filename" },
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
1
|
/**
|
|
45
2
|
* Where each image goes. By default every cell is as wide as the widest image
|
|
46
3
|
* and as tall as the tallest, and images keep their size. With `cellWidth`,
|
|
@@ -190,10 +147,4 @@ export async function executeContactSheet(context) {
|
|
|
190
147
|
space: "srgb",
|
|
191
148
|
});
|
|
192
149
|
}
|
|
193
|
-
export const contactSheetRegistration = {
|
|
194
|
-
kind: "definition-v1",
|
|
195
|
-
moduleId: "cascade.image.ContactSheet",
|
|
196
|
-
definition: contactSheetDefinition,
|
|
197
|
-
loadExecute: async () => executeContactSheet,
|
|
198
|
-
};
|
|
199
150
|
//# sourceMappingURL=contactSheet.js.map
|