@@ -25,10 +25,20 @@
25 25 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
'type'-dependent value.
26 26 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
27 27 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
The 'type' values expected by each side of the main/worker
28 28 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
connection vary. The types are described below but subject to
29 29 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
change at any time as this experiment evolves.
30 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
31 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Main-to-Worker message types:
32 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
33 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ - pikchr: data=pikchr-format text to render or an object:
34 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
35 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {
36 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pikchr: source code for the pikchr,
37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ darkMode: boolean true to adjust colors for a dark color scheme,
38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cssClass: CSS class name to add to the SVG
39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
30 40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
31 41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Workers-to-Main types
32 42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
33 43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- stdout, stderr: indicate stdout/stderr output from the wasm
34 44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
layer. The data property is the string of the output, noting
@@ -52,19 +62,20 @@
52 62 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
the module loading is complete, a message with a text value of
53 63 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
null is posted.
54 64 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
55 65 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pikchr:
56 66 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
57 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {type: 'pikchr', data:{
58 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- text: input text,
59 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pikchr: rendered result (SVG on success, HTML on error),
60 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- isError: bool, true if .pikchr holds an error report
61 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
62 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
63 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Main-to-Worker message types:
64 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
65 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- - pikchr: data=pikchr-format text to render.
67 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {type: 'pikchr',
68 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ data:{
69 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pikchr: input text,
70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ result: rendered result (SVG on success, HTML on error),
71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ isError: bool, true if .pikchr holds an error report,
72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flags: integer: flags used to configure the pikchr rendering,
73 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ width: if !isError, width (pixels) of the SVG,
74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ height: if !isError, height (pixels) of the SVG
75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
76 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
66 77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
67 78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
68 79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
69 80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"use strict";
70 81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(function(){
@@ -99,41 +110,61 @@
99 110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
self.onmessage = function f(ev){
100 111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ev = ev.data;
101 112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch(ev.type){
102 113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/**
103 114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Runs the given text through pikchr and emits a 'pikchr'
104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- message with the result:
105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {type:'pikchr', data:{
107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pikchr: input text,
108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- result: result text,
109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- isError: true if result holds an error
110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }}
115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ message result (output format documented above).
111 116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
112 117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fires a working/start event before it starts and
113 118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
working/end event when it finishes.
114 119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
115 120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'pikchr':
116 121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(pikchrModule.isDead){
117 122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
stderr("wasm module has exit()ed. Cannot pikchr.");
118 123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
119 124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(!f._) f._ = pikchrModule.cwrap('pikchr', 'string', ['string']);
125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(!f._){
126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f._ = pikchrModule.cwrap('pikchr', 'string', [
127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 'string'/*script*/, 'string'/*CSS class*/, 'number'/*flags*/,
128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 'number'/*output: SVG width*/, 'number'/*output: SVG height*/
129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ]);
130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
121 131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
wMsg('working','start');
132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const stack = pikchrModule.stackSave();
122 133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
try {
134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const pnWidth = pikchrModule.stackAlloc(4),
135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pnHeight = pikchrModule.stackAlloc(4);
136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ let script = '', flags = 0, cssClass = null;
137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if('string'===typeof ev.data){
138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ script = ev.data;
139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if(ev.data && 'object'===typeof ev.data){
140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ script = ev.data.pikchr;
141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flags = ev.data.darkMode ? 0x02 : 0;
142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(ev.data.cssClass) cssClass = ev.data.cssClass;
143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pikchrModule.setValue(pnWidth, 0, "i32");
145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pikchrModule.setValue(pnHeight, 0, "i32");
123 146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const msg = {
124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pikchr: ev.data,
125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- result: (f._(ev.data) || "").trim()
147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pikchr: script,
148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ result: (f._(script, cssClass, flags, pnWidth, pnHeight) || "").trim(),
149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flags: flags
126 150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
127 151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
msg.isError = !!(msg.result && msg.result.startsWith('<div'));
152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(msg.isError){
153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ msg.width = msg.height = null;
154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ msg.width = pikchrModule.getValue(pnWidth, "i32");
156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ msg.height = pikchrModule.getValue(pnHeight, "i32");
157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
128 158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
wMsg('pikchr', msg);
129 159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} finally {
160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pikchrModule.stackRestore(stack);
130 161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
wMsg('working','end');
131 162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
132 163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
133 164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- console.warn("Unknown fiddle-worker message type:",ev);
165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ console.warn("Unknown pikchr-worker message type:",ev);
135 166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
136 167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
137 168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/**
138 169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
emscripten module for use with build mode -sMODULARIZE.
139 170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -176,11 +207,10 @@
176 207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
});
177 208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
178 209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
179 210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
180 211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
importScripts('pikchr-module.js');
181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- //console.error("initPikchrModule =",initPikchrModule);
182 212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/**
183 213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
initPikchrModule() is installed via pikchr-module.js due to
184 214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
building with:
185 215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
186 216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
emcc ... -sMODULARIZE=1 -sEXPORT_NAME=initPikchrModule
187 217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!