1
|
=== modified file 'src/com/goldencode/p2j/ui/client/driver/web/index.html'
|
2
|
--- src/com/goldencode/p2j/ui/client/driver/web/index.html 2015-09-08 16:51:50 +0000
|
3
|
+++ src/com/goldencode/p2j/ui/client/driver/web/index.html 2015-11-27 21:17:18 +0000
|
4
|
@@ -4,6 +4,9 @@
|
5
|
<title>P2J ${client_title} Web Client</title>
|
6
|
|
7
|
<link rel="stylesheet" type="text/css" href="/dojo-toolkit/dijit/themes/claro/claro.css">
|
8
|
+ <style type="text/css">
|
9
|
+ .wait, .wait * { cursor: wait !important; }
|
10
|
+ </style>
|
11
|
<!-- load dojo -->
|
12
|
<script src="/dojo-toolkit/dojo/dojo.js" data-dojo-config="async: true"></script>
|
13
|
|
14
|
|
15
|
=== modified file 'src/com/goldencode/p2j/ui/client/driver/web/res/p2j.js'
|
16
|
--- src/com/goldencode/p2j/ui/client/driver/web/res/p2j.js 2015-10-22 23:14:19 +0000
|
17
|
+++ src/com/goldencode/p2j/ui/client/driver/web/res/p2j.js 2015-11-27 23:25:13 +0000
|
18
|
@@ -96,9 +96,13 @@
|
19
|
|
20
|
// save off our client mode type
|
21
|
p2j.isGui = cfg.isGui;
|
22
|
+ // the body html css class name to display wait cursor
|
23
|
+ p2j.waitCursorClass = "wait";
|
24
|
+ // the body html css class name to display default cursor
|
25
|
+ p2j.defaultBodyHtmlClass = "claro";
|
26
|
|
27
|
// init modules (don't change the order here!)
|
28
|
- p2j.logger.init(4096);
|
29
|
+ p2j.logger.init(4096, true);
|
30
|
p2j.sound.init(cfg);
|
31
|
p2j.fonts.init();
|
32
|
p2j.screen.init(cfg);
|
33
|
|
34
|
=== modified file 'src/com/goldencode/p2j/ui/client/driver/web/res/p2j.logger.js'
|
35
|
--- src/com/goldencode/p2j/ui/client/driver/web/res/p2j.logger.js 2015-09-05 16:09:44 +0000
|
36
|
+++ src/com/goldencode/p2j/ui/client/driver/web/res/p2j.logger.js 2015-11-27 15:52:16 +0000
|
37
|
@@ -24,15 +24,21 @@
|
38
|
|
39
|
/** The stack capacity, the last visible history.*/
|
40
|
var maxStackSize;
|
41
|
+
|
42
|
+ /** The stack capacity, the last visible history.*/
|
43
|
+ var isOn;
|
44
|
/**
|
45
|
* Initialize the logger with the storage capacity.
|
46
|
*
|
47
|
* @param {Number}
|
48
|
* The log stack capacity.
|
49
|
+ * @param {boolean}
|
50
|
+ * The boolean value that indicates the log is on/off.
|
51
|
*/
|
52
|
- me.init = function(capacity)
|
53
|
+ me.init = function(capacity, on)
|
54
|
{
|
55
|
maxStackSize = capacity;
|
56
|
+ isOn = on;
|
57
|
};
|
58
|
|
59
|
/**
|
60
|
@@ -43,7 +49,10 @@
|
61
|
*/
|
62
|
me.log = function(msg)
|
63
|
{
|
64
|
- save(msg);
|
65
|
+ if (isOn)
|
66
|
+ {
|
67
|
+ save(msg);
|
68
|
+ }
|
69
|
};
|
70
|
|
71
|
/*
|
72
|
@@ -56,19 +65,22 @@
|
73
|
*/
|
74
|
me.logFormatted = function(format, parameters)
|
75
|
{
|
76
|
- save(format.split("%d").map(
|
77
|
- function(currValue, index, arr)
|
78
|
- {
|
79
|
- if (this[index] === undefined)
|
80
|
+ if (isOn)
|
81
|
+ {
|
82
|
+ save(format.split("%d").map(
|
83
|
+ function(currValue, index, arr)
|
84
|
{
|
85
|
- return currValue;
|
86
|
- }
|
87
|
- return currValue + this[index];
|
88
|
- }, parameters).reduce(
|
89
|
- function(prevValue, currValue)
|
90
|
+ if (this[index] === undefined)
|
91
|
{
|
92
|
- return prevValue + currValue;
|
93
|
- }, ""));
|
94
|
+ return currValue;
|
95
|
+ }
|
96
|
+ return currValue + this[index];
|
97
|
+ }, parameters).reduce(
|
98
|
+ function(prevValue, currValue)
|
99
|
+ {
|
100
|
+ return prevValue + currValue;
|
101
|
+ }, ""));
|
102
|
+ }
|
103
|
};
|
104
|
|
105
|
/**
|
106
|
|
107
|
=== modified file 'src/com/goldencode/p2j/ui/client/driver/web/res/p2j.socket.js'
|
108
|
--- src/com/goldencode/p2j/ui/client/driver/web/res/p2j.socket.js 2015-11-26 10:46:59 +0000
|
109
|
+++ src/com/goldencode/p2j/ui/client/driver/web/res/p2j.socket.js 2015-11-27 23:55:23 +0000
|
110
|
@@ -417,501 +417,658 @@
|
111
|
{
|
112
|
case 0x80:
|
113
|
// clear screen
|
114
|
- p2j.screen.clear();
|
115
|
+ setTimeout(
|
116
|
+ function()
|
117
|
+ {
|
118
|
+ p2j.screen.clear();
|
119
|
+ }, 1);
|
120
|
break;
|
121
|
case 0x81:
|
122
|
// draw screen
|
123
|
- var t1 = (new Date()).getTime();
|
124
|
- p2j.screen.drawRectangles(message);
|
125
|
- var t2 = (new Date()).getTime();
|
126
|
- // console.log("message: " + message.length + " done in " + (t2 - t1));
|
127
|
+ document.body.className = p2j.waitCursorClass;
|
128
|
+ var mobj = {message : message};
|
129
|
+ setTimeout(
|
130
|
+ function()
|
131
|
+ {
|
132
|
+ var t1 = (new Date()).getTime();
|
133
|
+ p2j.screen.drawRectangles(mobj.message);
|
134
|
+ var t2 = (new Date()).getTime();
|
135
|
+ // console.log("message: " + message.length + " done in " + (t2 - t1));
|
136
|
+ }, 1);
|
137
|
+ setTimeout(
|
138
|
+ function()
|
139
|
+ {
|
140
|
+ document.body.className = p2j.defaultBodyHtmlClass;
|
141
|
+ }, 1);
|
142
|
break;
|
143
|
case 0x82:
|
144
|
// set cursor position
|
145
|
- p2j.screen.setCursorPosition(message[1], message[2]);
|
146
|
+ var mobj = {message : message};
|
147
|
+ setTimeout(
|
148
|
+ function()
|
149
|
+ {
|
150
|
+ p2j.screen.setCursorPosition(mobj.message[1], mobj.message[2]);
|
151
|
+ }, 1);
|
152
|
break;
|
153
|
case 0x83:
|
154
|
// show cursor
|
155
|
- p2j.screen.setCursorStatus(message[1]);
|
156
|
+ var mobj = {message : message};
|
157
|
+ setTimeout(
|
158
|
+ function()
|
159
|
+ {
|
160
|
+ p2j.screen.setCursorStatus(mobj.message[1]);
|
161
|
+ }, 1);
|
162
|
break;
|
163
|
case 0x84:
|
164
|
- // message beep
|
165
|
- p2j.sound.beep();
|
166
|
+ var mobj = {message : message};
|
167
|
+ setTimeout(
|
168
|
+ function()
|
169
|
+ {
|
170
|
+ // message beep
|
171
|
+ p2j.sound.beep();
|
172
|
+ }, 1);
|
173
|
break;
|
174
|
case 0x85:
|
175
|
// quit
|
176
|
- window.location.replace(referrer);
|
177
|
+ var mobj = {message : message};
|
178
|
+ setTimeout(
|
179
|
+ function()
|
180
|
+ {
|
181
|
+ window.location.replace(referrer);
|
182
|
+ }, 1);
|
183
|
break;
|
184
|
case 0x86:
|
185
|
- // switch mode p2j/vt100
|
186
|
- p2j.keyboard.vt100 = (message[1] == 0) ? false : true;
|
187
|
+ var mobj = {message : message};
|
188
|
+ setTimeout(
|
189
|
+ function()
|
190
|
+ {
|
191
|
+ // switch mode p2j/vt100
|
192
|
+ p2j.keyboard.vt100 = (mobj.message[1] == 0) ? false : true;
|
193
|
+ }, 1);
|
194
|
break;
|
195
|
case 0x87:
|
196
|
- // server-driven request for clipboard contents
|
197
|
- p2j.clipboard.sendClipboardContents();
|
198
|
+ var mobj = {message : message};
|
199
|
+ setTimeout(
|
200
|
+ function()
|
201
|
+ {
|
202
|
+ // server-driven request for clipboard contents
|
203
|
+ p2j.clipboard.sendClipboardContents();
|
204
|
+ }, 1);
|
205
|
break;
|
206
|
case 0x88:
|
207
|
- // The clipboard is changed.
|
208
|
- var text = me.readStringBinaryMessage(message, 1);
|
209
|
- p2j.clipboard.writeClipboard(text);
|
210
|
+ var mobj = {message : message};
|
211
|
+ setTimeout(
|
212
|
+ function()
|
213
|
+ {
|
214
|
+ // The clipboard is changed.
|
215
|
+ var text = me.readStringBinaryMessage(mobj.message, 1);
|
216
|
+ p2j.clipboard.writeClipboard(text);
|
217
|
+ }, 1);
|
218
|
break;
|
219
|
case 0x89:
|
220
|
// create a top-level window with the given id
|
221
|
- var id = me.readInt32BinaryMessage(message, 1);
|
222
|
- p2j.screen.createWindow(id);
|
223
|
+ var mobj = {message : message};
|
224
|
+ setTimeout(
|
225
|
+ function()
|
226
|
+ {
|
227
|
+ var id = me.readInt32BinaryMessage(mobj.message, 1);
|
228
|
+ p2j.screen.createWindow(id);
|
229
|
+ }, 1);
|
230
|
break;
|
231
|
case 0x8A:
|
232
|
// create a child window with the given id, owner and title
|
233
|
- var id = me.readInt32BinaryMessage(message, 1);
|
234
|
- var owner = me.readInt32BinaryMessage(message, 5);
|
235
|
- var title = me.readStringBinaryMessage(message, 9);
|
236
|
- p2j.screen.createChildWindow(id, owner);
|
237
|
+ var mobj = {message : message};
|
238
|
+ setTimeout(
|
239
|
+ function()
|
240
|
+ {
|
241
|
+ var id = me.readInt32BinaryMessage(mobj.message, 1);
|
242
|
+ var owner = me.readInt32BinaryMessage(mobj.message, 5);
|
243
|
+ var title = me.readStringBinaryMessage(mobj.message, 9);
|
244
|
+ p2j.screen.createChildWindow(id, owner);
|
245
|
+ }, 1);
|
246
|
break;
|
247
|
case 0x8B:
|
248
|
// destroy top-level or child window
|
249
|
- var id = me.readInt32BinaryMessage(message, 1);
|
250
|
- var numberImages = me.readInt32BinaryMessage(message, 5);
|
251
|
- var images = [];
|
252
|
- for (var i = 0; i < numberImages; i++)
|
253
|
- {
|
254
|
- images[i] = me.readInt32BinaryMessage(message, 9 + (i * 4));
|
255
|
- }
|
256
|
- p2j.screen.destroyWindow(id, images);
|
257
|
+ var mobj = {message : message};
|
258
|
+ setTimeout(
|
259
|
+ function()
|
260
|
+ {
|
261
|
+ var id = me.readInt32BinaryMessage(mobj.message, 1);
|
262
|
+ var numberImages = me.readInt32BinaryMessage(mobj.message, 5);
|
263
|
+ var images = [];
|
264
|
+ for (var i = 0; i < numberImages; i++)
|
265
|
+ {
|
266
|
+ images[i] = me.readInt32BinaryMessage(mobj.message, 9 + (i * 4));
|
267
|
+ }
|
268
|
+ p2j.screen.destroyWindow(id, images);
|
269
|
+ }, 1);
|
270
|
break;
|
271
|
case 0x8C:
|
272
|
- // change visibility for top-level or child window
|
273
|
- var id = me.readInt32BinaryMessage(message, 1);
|
274
|
- var visible = message[5] === 0 ? false : true;
|
275
|
- p2j.screen.setWindowVisible(id, visible);
|
276
|
+ var mobj = {message : message};
|
277
|
+ setTimeout(
|
278
|
+ function()
|
279
|
+ {
|
280
|
+ // change visibility for top-level or child window
|
281
|
+ var id = me.readInt32BinaryMessage(mobj.message, 1);
|
282
|
+ var visible = message[5] === 0 ? false : true;
|
283
|
+ p2j.screen.setWindowVisible(id, visible);
|
284
|
+ }, 1);
|
285
|
break;
|
286
|
|
287
|
// font and metrics related requests
|
288
|
case 0x8D:
|
289
|
- // paragraph height
|
290
|
-
|
291
|
- var offset = 1;
|
292
|
-
|
293
|
- var msgId = me.readInt32BinaryMessage(message, offset);
|
294
|
- offset = offset + 4;
|
295
|
-
|
296
|
- var textLength = me.readInt32BinaryMessage(message, offset);
|
297
|
- offset = offset + 4;
|
298
|
-
|
299
|
- var text = me.readStringBinaryMessageByLength(message, offset, textLength);
|
300
|
- offset = offset + textLength * 2;
|
301
|
-
|
302
|
- var font = me.readInt32BinaryMessage(message, offset);
|
303
|
- offset = offset + 4;
|
304
|
-
|
305
|
- var maxWidth = me.readInt16BinaryMessage(message, offset);
|
306
|
- offset = offset + 2;
|
307
|
-
|
308
|
- var pheight = p2j.screen.layoutParagraphWorker(null,
|
309
|
- text,
|
310
|
- font,
|
311
|
- 0,
|
312
|
- 0,
|
313
|
- maxWidth);
|
314
|
-
|
315
|
- me.sendInt16BinaryMessage(0x06, msgId, pheight);
|
316
|
+ var mobj = {message : message};
|
317
|
+ setTimeout(
|
318
|
+ function()
|
319
|
+ {
|
320
|
+ // paragraph height
|
321
|
+
|
322
|
+ var offset = 1;
|
323
|
+
|
324
|
+ var msgId = me.readInt32BinaryMessage(mobj.message, offset);
|
325
|
+ offset = offset + 4;
|
326
|
+
|
327
|
+ var textLength = me.readInt32BinaryMessage(mobj.message, offset);
|
328
|
+ offset = offset + 4;
|
329
|
+
|
330
|
+ var text = me.readStringBinaryMessageByLength(mobj.message, offset, textLength);
|
331
|
+ offset = offset + textLength * 2;
|
332
|
+
|
333
|
+ var font = me.readInt32BinaryMessage(mobj.message, offset);
|
334
|
+ offset = offset + 4;
|
335
|
+
|
336
|
+ var maxWidth = me.readInt16BinaryMessage(mobj.message, offset);
|
337
|
+ offset = offset + 2;
|
338
|
+
|
339
|
+ var pheight = p2j.screen.layoutParagraphWorker(null,
|
340
|
+ text,
|
341
|
+ font,
|
342
|
+ 0,
|
343
|
+ 0,
|
344
|
+ maxWidth);
|
345
|
+
|
346
|
+ me.sendInt16BinaryMessage(0x06, msgId, pheight);
|
347
|
+ }, 1);
|
348
|
break;
|
349
|
case 0x8E:
|
350
|
- // text height
|
351
|
-
|
352
|
- var offset = 1;
|
353
|
-
|
354
|
- var msgId = me.readInt32BinaryMessage(message, offset);
|
355
|
- offset = offset + 4;
|
356
|
-
|
357
|
- var textLength = me.readInt32BinaryMessage(message, offset);
|
358
|
- offset = offset + 4;
|
359
|
-
|
360
|
- var text = me.readStringBinaryMessageByLength(message, offset, textLength);
|
361
|
- offset = offset + textLength * 2;
|
362
|
-
|
363
|
- var font = me.readInt32BinaryMessage(message, offset);
|
364
|
-
|
365
|
- var theight = p2j.fonts.getTextHeight(font, text);
|
366
|
-
|
367
|
- me.sendInt8BinaryMessage(0x07, msgId, theight);
|
368
|
+ var mobj = {message : message};
|
369
|
+ setTimeout(
|
370
|
+ function()
|
371
|
+ {
|
372
|
+ // text height
|
373
|
+
|
374
|
+ var offset = 1;
|
375
|
+
|
376
|
+ var msgId = me.readInt32BinaryMessage(mobj.message, offset);
|
377
|
+ offset = offset + 4;
|
378
|
+
|
379
|
+ var textLength = me.readInt32BinaryMessage(mobj.message, offset);
|
380
|
+ offset = offset + 4;
|
381
|
+
|
382
|
+ var text = me.readStringBinaryMessageByLength(mobj.message, offset, textLength);
|
383
|
+ offset = offset + textLength * 2;
|
384
|
+
|
385
|
+ var font = me.readInt32BinaryMessage(mobj.message, offset);
|
386
|
+
|
387
|
+ var theight = p2j.fonts.getTextHeight(font, text);
|
388
|
+
|
389
|
+ me.sendInt8BinaryMessage(0x07, msgId, theight);
|
390
|
+ }, 1);
|
391
|
break;
|
392
|
case 0x8F:
|
393
|
- // text width
|
394
|
-
|
395
|
- var offset = 1;
|
396
|
-
|
397
|
- var msgId = me.readInt32BinaryMessage(message, offset);
|
398
|
- offset = offset + 4;
|
399
|
-
|
400
|
- var textLength = me.readInt32BinaryMessage(message, offset);
|
401
|
- offset = offset + 4;
|
402
|
-
|
403
|
- var text = me.readStringBinaryMessageByLength(message, offset, textLength);
|
404
|
- offset = offset + textLength * 2;
|
405
|
-
|
406
|
- var font = me.readInt32BinaryMessage(message, offset);
|
407
|
- offset = offset + 4;
|
408
|
-
|
409
|
- var twidth = p2j.fonts.getTextWidth(font, text);
|
410
|
-
|
411
|
- me.sendInt16BinaryMessage(0x08, msgId, twidth);
|
412
|
+ var mobj = {message : message};
|
413
|
+ setTimeout(
|
414
|
+ function()
|
415
|
+ {
|
416
|
+ // text width
|
417
|
+
|
418
|
+ var offset = 1;
|
419
|
+
|
420
|
+ var msgId = me.readInt32BinaryMessage(mobj.message, offset);
|
421
|
+ offset = offset + 4;
|
422
|
+
|
423
|
+ var textLength = me.readInt32BinaryMessage(mobj.message, offset);
|
424
|
+ offset = offset + 4;
|
425
|
+
|
426
|
+ var text = me.readStringBinaryMessageByLength(mobj.message, offset, textLength);
|
427
|
+ offset = offset + textLength * 2;
|
428
|
+
|
429
|
+ var font = me.readInt32BinaryMessage(mobj.message, offset);
|
430
|
+ offset = offset + 4;
|
431
|
+
|
432
|
+ var twidth = p2j.fonts.getTextWidth(font, text);
|
433
|
+
|
434
|
+ me.sendInt16BinaryMessage(0x08, msgId, twidth);
|
435
|
+ }, 1);
|
436
|
break;
|
437
|
case 0x90:
|
438
|
- // font height
|
439
|
-
|
440
|
- var offset = 1;
|
441
|
-
|
442
|
- var msgId = me.readInt32BinaryMessage(message, offset);
|
443
|
- offset = offset + 4;
|
444
|
-
|
445
|
- var font = me.readInt32BinaryMessage(message, offset);
|
446
|
- offset = offset + 4;
|
447
|
-
|
448
|
- var fheight = p2j.fonts.getFontHeight(font);
|
449
|
-
|
450
|
- me.sendInt8BinaryMessage(0x09, msgId, fheight);
|
451
|
+ var mobj = {message : message};
|
452
|
+ setTimeout(
|
453
|
+ function()
|
454
|
+ {
|
455
|
+ // font height
|
456
|
+
|
457
|
+ var offset = 1;
|
458
|
+
|
459
|
+ var msgId = me.readInt32BinaryMessage(mobj.message, offset);
|
460
|
+ offset = offset + 4;
|
461
|
+
|
462
|
+ var font = me.readInt32BinaryMessage(mobj.message, offset);
|
463
|
+ offset = offset + 4;
|
464
|
+
|
465
|
+ var fheight = p2j.fonts.getFontHeight(font);
|
466
|
+
|
467
|
+ me.sendInt8BinaryMessage(0x09, msgId, fheight);
|
468
|
+ }, 1);
|
469
|
break;
|
470
|
case 0x91:
|
471
|
- // font widths
|
472
|
-
|
473
|
- var offset = 1;
|
474
|
-
|
475
|
- var msgId = me.readInt32BinaryMessage(message, offset);
|
476
|
- offset = offset + 4;
|
477
|
-
|
478
|
- var font = me.readInt32BinaryMessage(message, offset);
|
479
|
- offset = offset + 4;
|
480
|
-
|
481
|
- var fwidths = p2j.fonts.getFontWidths(font);
|
482
|
-
|
483
|
- me.sendByteArrayBinaryMessage(0x0A, msgId, fwidths);
|
484
|
+ var mobj = {message : message};
|
485
|
+ setTimeout(
|
486
|
+ function()
|
487
|
+ {
|
488
|
+ // font widths
|
489
|
+
|
490
|
+ var offset = 1;
|
491
|
+
|
492
|
+ var msgId = me.readInt32BinaryMessage(mobj.message, offset);
|
493
|
+ offset = offset + 4;
|
494
|
+
|
495
|
+ var font = me.readInt32BinaryMessage(mobj.message, offset);
|
496
|
+ offset = offset + 4;
|
497
|
+
|
498
|
+ var fwidths = p2j.fonts.getFontWidths(font);
|
499
|
+
|
500
|
+ me.sendByteArrayBinaryMessage(0x0A, msgId, fwidths);
|
501
|
+ }, 1);
|
502
|
break;
|
503
|
case 0x92:
|
504
|
- // create font
|
505
|
-
|
506
|
- var offset = 1;
|
507
|
-
|
508
|
- var msgId = me.readInt32BinaryMessage(message, offset);
|
509
|
- offset = offset + 4;
|
510
|
-
|
511
|
- var font = me.readInt32BinaryMessage(message, offset);
|
512
|
- offset = offset + 4;
|
513
|
-
|
514
|
- var nameLength = me.readInt16BinaryMessage(message, offset);
|
515
|
- offset = offset + 2;
|
516
|
-
|
517
|
- var name = me.readStringBinaryMessageByLength(message, offset, nameLength);
|
518
|
- offset = offset + nameLength * 2;
|
519
|
-
|
520
|
- var size = message[offset];
|
521
|
- offset = offset + 1;
|
522
|
-
|
523
|
- var style = message[offset];
|
524
|
- offset = offset + 1;
|
525
|
-
|
526
|
- var defLength = me.readInt32BinaryMessage(message, offset);
|
527
|
- offset = offset + 4;
|
528
|
-
|
529
|
- var b64font = "";
|
530
|
- if (defLength > 0)
|
531
|
- {
|
532
|
- var binFont = '';
|
533
|
- for (var i = 0; i < defLength; i++)
|
534
|
- {
|
535
|
- binFont += String.fromCharCode(message[offset]);
|
536
|
- offset = offset + 1;
|
537
|
- }
|
538
|
- b64font = window.btoa(binFont);
|
539
|
- }
|
540
|
-
|
541
|
- var fontId = p2j.fonts.createFont(font, name, size, style, b64font);
|
542
|
-
|
543
|
- me.sendInt32BinaryMessage(0x0B, msgId, fontId);
|
544
|
+ var mobj = {message : message};
|
545
|
+ setTimeout(
|
546
|
+ function()
|
547
|
+ {
|
548
|
+ // create font
|
549
|
+
|
550
|
+ var offset = 1;
|
551
|
+
|
552
|
+ var msgId = me.readInt32BinaryMessage(mobj.message, offset);
|
553
|
+ offset = offset + 4;
|
554
|
+
|
555
|
+ var font = me.readInt32BinaryMessage(mobj.message, offset);
|
556
|
+ offset = offset + 4;
|
557
|
+
|
558
|
+ var nameLength = me.readInt16BinaryMessage(mobj.message, offset);
|
559
|
+ offset = offset + 2;
|
560
|
+
|
561
|
+ var name = me.readStringBinaryMessageByLength(mobj.message, offset, nameLength);
|
562
|
+ offset = offset + nameLength * 2;
|
563
|
+
|
564
|
+ var size = mobj.message[offset];
|
565
|
+ offset = offset + 1;
|
566
|
+
|
567
|
+ var style = mobj.message[offset];
|
568
|
+ offset = offset + 1;
|
569
|
+
|
570
|
+ var defLength = me.readInt32BinaryMessage(mobj.message, offset);
|
571
|
+ offset = offset + 4;
|
572
|
+
|
573
|
+ var b64font = "";
|
574
|
+ if (defLength > 0)
|
575
|
+ {
|
576
|
+ var binFont = '';
|
577
|
+ for (var i = 0; i < defLength; i++)
|
578
|
+ {
|
579
|
+ binFont += String.fromCharCode(mobj.message[offset]);
|
580
|
+ offset = offset + 1;
|
581
|
+ }
|
582
|
+ b64font = window.btoa(binFont);
|
583
|
+ }
|
584
|
+
|
585
|
+ var fontId = p2j.fonts.createFont(font, name, size, style, b64font);
|
586
|
+
|
587
|
+ me.sendInt32BinaryMessage(0x0B, msgId, fontId);
|
588
|
+ }, 1);
|
589
|
break;
|
590
|
case 0x93:
|
591
|
- // derive font
|
592
|
-
|
593
|
- var offset = 1;
|
594
|
-
|
595
|
- var msgId = me.readInt32BinaryMessage(message, offset);
|
596
|
- offset = offset + 4;
|
597
|
-
|
598
|
- var font = me.readInt32BinaryMessage(message, offset);
|
599
|
- offset = offset + 4;
|
600
|
-
|
601
|
- p2j.fonts.deriveFont(font);
|
602
|
-
|
603
|
- me.sendInt8BinaryMessage(0x0C, msgId, 1);
|
604
|
+ var mobj = {message : message};
|
605
|
+ setTimeout(
|
606
|
+ function()
|
607
|
+ {
|
608
|
+ // derive font
|
609
|
+
|
610
|
+ var offset = 1;
|
611
|
+
|
612
|
+ var msgId = me.readInt32BinaryMessage(mobj.message, offset);
|
613
|
+ offset = offset + 4;
|
614
|
+
|
615
|
+ var font = me.readInt32BinaryMessage(mobj.message, offset);
|
616
|
+ offset = offset + 4;
|
617
|
+
|
618
|
+ p2j.fonts.deriveFont(font);
|
619
|
+
|
620
|
+ me.sendInt8BinaryMessage(0x0C, msgId, 1);
|
621
|
+ }, 1);
|
622
|
break;
|
623
|
case 0x94:
|
624
|
- // set cursor style
|
625
|
- var styleId = me.readInt32BinaryMessage(message, 1);
|
626
|
- var wid = me.readInt32BinaryMessage(message, 5);
|
627
|
- p2j.screen.setCursorStyle(styleId, wid);
|
628
|
+ var mobj = {message : message};
|
629
|
+ setTimeout(
|
630
|
+ function()
|
631
|
+ {
|
632
|
+ // set cursor style
|
633
|
+ var styleId = me.readInt32BinaryMessage(mobj.message, 1);
|
634
|
+ var wid = me.readInt32BinaryMessage(mobj.message, 5);
|
635
|
+ p2j.screen.setCursorStyle(styleId, wid);
|
636
|
+ }, 1);
|
637
|
break;
|
638
|
case 0x95:
|
639
|
- // restack windows
|
640
|
- var num = me.readInt32BinaryMessage(message, 1);
|
641
|
- var winids = [];
|
642
|
- for (var i = 0; i < num; i++)
|
643
|
- {
|
644
|
- winids.push(me.readInt32BinaryMessage(message, 5 + (i * 4)));
|
645
|
- }
|
646
|
- p2j.screen.restackZOrderEntries(winids);
|
647
|
+ var mobj = {message : message};
|
648
|
+ setTimeout(
|
649
|
+ function()
|
650
|
+ {
|
651
|
+ // restack windows
|
652
|
+ var num = me.readInt32BinaryMessage(mobj.message, 1);
|
653
|
+ var winids = [];
|
654
|
+ for (var i = 0; i < num; i++)
|
655
|
+ {
|
656
|
+ winids.push(me.readInt32BinaryMessage(mobj.message, 5 + (i * 4)));
|
657
|
+ }
|
658
|
+ p2j.screen.restackZOrderEntries(winids);
|
659
|
+ }, 1);
|
660
|
break;
|
661
|
case 0x96:
|
662
|
- // register/deregister widgets for mouse actions
|
663
|
-
|
664
|
- var offset = 1;
|
665
|
-
|
666
|
- // the number of windows with new widgets
|
667
|
- var windowNo = me.readInt16BinaryMessage(message, offset);
|
668
|
- offset = offset + 2;
|
669
|
-
|
670
|
- for (var j = 0; j < windowNo; j++)
|
671
|
- {
|
672
|
- // the window ID
|
673
|
- var windowID = me.readInt32BinaryMessage(message, offset);
|
674
|
- offset = offset + 4;
|
675
|
-
|
676
|
- if (!p2j.screen.isExistingWindowId(windowID))
|
677
|
- {
|
678
|
- console.log("undefined window " + windowID);
|
679
|
- continue;
|
680
|
- }
|
681
|
-
|
682
|
- var theWindow = p2j.screen.getWindow(windowID);
|
683
|
-
|
684
|
- // the number of new widgets in this window
|
685
|
- var widgetNo = me.readInt16BinaryMessage(message, offset);
|
686
|
- offset = offset + 2;
|
687
|
-
|
688
|
- for (var k = 0; k < widgetNo; k++)
|
689
|
- {
|
690
|
- // the widget ID
|
691
|
- var wid = me.readInt32BinaryMessage(message, offset);
|
692
|
- offset = offset + 4;
|
693
|
-
|
694
|
- // the coordinates
|
695
|
- var x = me.readInt16BinaryMessage(message, offset);
|
696
|
- offset = offset + 2;
|
697
|
-
|
698
|
- var y = me.readInt16BinaryMessage(message, offset);
|
699
|
- offset = offset + 2;
|
700
|
-
|
701
|
- // the size
|
702
|
- var width = me.readInt16BinaryMessage(message, offset);
|
703
|
- offset = offset + 2;
|
704
|
-
|
705
|
- var height = me.readInt16BinaryMessage(message, offset);
|
706
|
- offset = offset + 2;
|
707
|
-
|
708
|
- // bit-encoded mouse ops: each bit from 1 to 11, if set, represents a mouse
|
709
|
- // operation as defined in p2j.screen.mouseOps
|
710
|
- var actions = me.readInt32BinaryMessage(message, offset);
|
711
|
- offset = offset + 4;
|
712
|
- theWindow.deregisterMouseWidget(wid);
|
713
|
- theWindow.registerMouseWidget(wid, x, y, width, height, actions);
|
714
|
- }
|
715
|
-
|
716
|
- var allWNo = me.readInt16BinaryMessage(message, offset);
|
717
|
- offset = offset + 2;
|
718
|
- var zOrder = [];
|
719
|
-
|
720
|
- for (var k = 0; k < allWNo; k++)
|
721
|
- {
|
722
|
- zOrder[k] = me.readInt32BinaryMessage(message, offset);
|
723
|
- offset = offset + 4;
|
724
|
- }
|
725
|
-
|
726
|
- theWindow.setWidgetZOrder(zOrder);
|
727
|
- }
|
728
|
-
|
729
|
- // the number of windows with dead widgets
|
730
|
- windowNo = me.readInt16BinaryMessage(message, offset);
|
731
|
- offset = offset + 2;
|
732
|
-
|
733
|
- for (var j = 0; j < windowNo; j++)
|
734
|
- {
|
735
|
- // the window ID
|
736
|
- var windowID = me.readInt32BinaryMessage(message, offset);
|
737
|
- offset = offset + 4;
|
738
|
-
|
739
|
- var theWindow = p2j.screen.getWindow(windowID);
|
740
|
-
|
741
|
- if (theWindow == undefined)
|
742
|
- {
|
743
|
- console.log("undefined window" + windowID);
|
744
|
- continue;
|
745
|
- }
|
746
|
-
|
747
|
- // the number of dead widgets in this window
|
748
|
- var widgetNo = me.readInt16BinaryMessage(message, offset);
|
749
|
- offset = offset + 2;
|
750
|
-
|
751
|
- for (var k = 0; k < widgetNo; k++)
|
752
|
- {
|
753
|
- // the widget ID
|
754
|
- var wid = me.readInt32BinaryMessage(message, offset);
|
755
|
- offset = offset + 4;
|
756
|
-
|
757
|
- theWindow.deregisterMouseWidget(wid);
|
758
|
- }
|
759
|
- }
|
760
|
-
|
761
|
- // the number of windows with new "any widgets"
|
762
|
- windowNo = me.readInt16BinaryMessage(message, offset);
|
763
|
- offset = offset + 2;
|
764
|
-
|
765
|
- for (var j = 0; j < windowNo; j++)
|
766
|
- {
|
767
|
- // the window ID
|
768
|
- var windowID = me.readInt32BinaryMessage(message, offset);
|
769
|
- offset = offset + 4;
|
770
|
-
|
771
|
- if (!p2j.screen.isExistingWindowId(windowID))
|
772
|
- {
|
773
|
- console.log("undefined window " + windowID);
|
774
|
- continue;
|
775
|
- }
|
776
|
-
|
777
|
- var theWindow = p2j.screen.getWindow(windowID);
|
778
|
-
|
779
|
- // the number of new "any widgets" in this window
|
780
|
- var widgetNo = me.readInt16BinaryMessage(message, offset);
|
781
|
- offset = offset + 2;
|
782
|
-
|
783
|
- for (var k = 0; k < widgetNo; k++)
|
784
|
- {
|
785
|
- // the widget ID
|
786
|
- var wid = me.readInt32BinaryMessage(message, offset);
|
787
|
- offset = offset + 4;
|
788
|
- theWindow.deregisterAnyMouseWidget(wid);
|
789
|
- theWindow.registerAnyMouseWidget(wid);
|
790
|
- }
|
791
|
- }
|
792
|
-
|
793
|
- // the number of windows with dead "any widgets"
|
794
|
- windowNo = me.readInt16BinaryMessage(message, offset);
|
795
|
- offset = offset + 2;
|
796
|
-
|
797
|
- for (var j = 0; j < windowNo; j++)
|
798
|
- {
|
799
|
- // the window ID
|
800
|
- var windowID = me.readInt32BinaryMessage(message, offset);
|
801
|
- offset = offset + 4;
|
802
|
-
|
803
|
- var theWindow = p2j.screen.getWindow(windowID);
|
804
|
-
|
805
|
- if (theWindow == undefined)
|
806
|
- {
|
807
|
- console.log("undefined window" + windowID);
|
808
|
- continue;
|
809
|
- }
|
810
|
-
|
811
|
- // the number of dead "any widgets" in this window
|
812
|
- var widgetNo = me.readInt16BinaryMessage(message, offset);
|
813
|
- offset = offset + 2;
|
814
|
-
|
815
|
- for (var k = 0; k < widgetNo; k++)
|
816
|
- {
|
817
|
- // the widget ID
|
818
|
- var wid = me.readInt32BinaryMessage(message, offset);
|
819
|
- offset = offset + 4;
|
820
|
-
|
821
|
- theWindow.deregisterAnyMouseWidget(wid);
|
822
|
- }
|
823
|
- }
|
824
|
-
|
825
|
+ var mobj = {message : message};
|
826
|
+ setTimeout(
|
827
|
+ function()
|
828
|
+ {
|
829
|
+ // register/deregister widgets for mouse actions
|
830
|
+
|
831
|
+ var offset = 1;
|
832
|
+
|
833
|
+ // the number of windows with new widgets
|
834
|
+ var windowNo = me.readInt16BinaryMessage(mobj.message, offset);
|
835
|
+ offset = offset + 2;
|
836
|
+
|
837
|
+ for (var j = 0; j < windowNo; j++)
|
838
|
+ {
|
839
|
+ // the window ID
|
840
|
+ var windowID = me.readInt32BinaryMessage(mobj.message, offset);
|
841
|
+ offset = offset + 4;
|
842
|
+
|
843
|
+ if (!p2j.screen.isExistingWindowId(windowID))
|
844
|
+ {
|
845
|
+ console.log("undefined window " + windowID);
|
846
|
+ continue;
|
847
|
+ }
|
848
|
+
|
849
|
+ var theWindow = p2j.screen.getWindow(windowID);
|
850
|
+
|
851
|
+ // the number of new widgets in this window
|
852
|
+ var widgetNo = me.readInt16BinaryMessage(mobj.message, offset);
|
853
|
+ offset = offset + 2;
|
854
|
+
|
855
|
+ for (var k = 0; k < widgetNo; k++)
|
856
|
+ {
|
857
|
+ // the widget ID
|
858
|
+ var wid = me.readInt32BinaryMessage(mobj.message, offset);
|
859
|
+ offset = offset + 4;
|
860
|
+
|
861
|
+ // the coordinates
|
862
|
+ var x = me.readInt16BinaryMessage(mobj.message, offset);
|
863
|
+ offset = offset + 2;
|
864
|
+
|
865
|
+ var y = me.readInt16BinaryMessage(mobj.message, offset);
|
866
|
+ offset = offset + 2;
|
867
|
+
|
868
|
+ // the size
|
869
|
+ var width = me.readInt16BinaryMessage(mobj.message, offset);
|
870
|
+ offset = offset + 2;
|
871
|
+
|
872
|
+ var height = me.readInt16BinaryMessage(mobj.message, offset);
|
873
|
+ offset = offset + 2;
|
874
|
+
|
875
|
+ // bit-encoded mouse ops: each bit from 1 to 11, if set, represents a mouse
|
876
|
+ // operation as defined in p2j.screen.mouseOps
|
877
|
+ var actions = me.readInt32BinaryMessage(mobj.message, offset);
|
878
|
+ offset = offset + 4;
|
879
|
+ theWindow.deregisterMouseWidget(wid);
|
880
|
+ theWindow.registerMouseWidget(wid, x, y, width, height, actions);
|
881
|
+ }
|
882
|
+
|
883
|
+ var allWNo = me.readInt16BinaryMessage(mobj.message, offset);
|
884
|
+ offset = offset + 2;
|
885
|
+ var zOrder = [];
|
886
|
+
|
887
|
+ for (var k = 0; k < allWNo; k++)
|
888
|
+ {
|
889
|
+ zOrder[k] = me.readInt32BinaryMessage(mobj.message, offset);
|
890
|
+ offset = offset + 4;
|
891
|
+ }
|
892
|
+
|
893
|
+ theWindow.setWidgetZOrder(zOrder);
|
894
|
+ }
|
895
|
+
|
896
|
+ // the number of windows with dead widgets
|
897
|
+ windowNo = me.readInt16BinaryMessage(mobj.message, offset);
|
898
|
+ offset = offset + 2;
|
899
|
+
|
900
|
+ for (var j = 0; j < windowNo; j++)
|
901
|
+ {
|
902
|
+ // the window ID
|
903
|
+ var windowID = me.readInt32BinaryMessage(mobj.message, offset);
|
904
|
+ offset = offset + 4;
|
905
|
+
|
906
|
+ var theWindow = p2j.screen.getWindow(windowID);
|
907
|
+
|
908
|
+ if (theWindow == undefined)
|
909
|
+ {
|
910
|
+ console.log("undefined window" + windowID);
|
911
|
+ continue;
|
912
|
+ }
|
913
|
+
|
914
|
+ // the number of dead widgets in this window
|
915
|
+ var widgetNo = me.readInt16BinaryMessage(mobj.message, offset);
|
916
|
+ offset = offset + 2;
|
917
|
+
|
918
|
+ for (var k = 0; k < widgetNo; k++)
|
919
|
+ {
|
920
|
+ // the widget ID
|
921
|
+ var wid = me.readInt32BinaryMessage(mobj.message, offset);
|
922
|
+ offset = offset + 4;
|
923
|
+
|
924
|
+ theWindow.deregisterMouseWidget(wid);
|
925
|
+ }
|
926
|
+ }
|
927
|
+
|
928
|
+ // the number of windows with new "any widgets"
|
929
|
+ windowNo = me.readInt16BinaryMessage(mobj.message, offset);
|
930
|
+ offset = offset + 2;
|
931
|
+
|
932
|
+ for (var j = 0; j < windowNo; j++)
|
933
|
+ {
|
934
|
+ // the window ID
|
935
|
+ var windowID = me.readInt32BinaryMessage(mobj.message, offset);
|
936
|
+ offset = offset + 4;
|
937
|
+
|
938
|
+ if (!p2j.screen.isExistingWindowId(windowID))
|
939
|
+ {
|
940
|
+ console.log("undefined window " + windowID);
|
941
|
+ continue;
|
942
|
+ }
|
943
|
+
|
944
|
+ var theWindow = p2j.screen.getWindow(windowID);
|
945
|
+
|
946
|
+ // the number of new "any widgets" in this window
|
947
|
+ var widgetNo = me.readInt16BinaryMessage(mobj.message, offset);
|
948
|
+ offset = offset + 2;
|
949
|
+
|
950
|
+ for (var k = 0; k < widgetNo; k++)
|
951
|
+ {
|
952
|
+ // the widget ID
|
953
|
+ var wid = me.readInt32BinaryMessage(mobj.message, offset);
|
954
|
+ offset = offset + 4;
|
955
|
+ theWindow.deregisterAnyMouseWidget(wid);
|
956
|
+ theWindow.registerAnyMouseWidget(wid);
|
957
|
+ }
|
958
|
+ }
|
959
|
+
|
960
|
+ // the number of windows with dead "any widgets"
|
961
|
+ windowNo = me.readInt16BinaryMessage(mobj.message, offset);
|
962
|
+ offset = offset + 2;
|
963
|
+
|
964
|
+ for (var j = 0; j < windowNo; j++)
|
965
|
+ {
|
966
|
+ // the window ID
|
967
|
+ var windowID = me.readInt32BinaryMessage(mobj.message, offset);
|
968
|
+ offset = offset + 4;
|
969
|
+
|
970
|
+ var theWindow = p2j.screen.getWindow(windowID);
|
971
|
+
|
972
|
+ if (theWindow == undefined)
|
973
|
+ {
|
974
|
+ console.log("undefined window" + windowID);
|
975
|
+ continue;
|
976
|
+ }
|
977
|
+
|
978
|
+ // the number of dead "any widgets" in this window
|
979
|
+ var widgetNo = me.readInt16BinaryMessage(mobj.message, offset);
|
980
|
+ offset = offset + 2;
|
981
|
+
|
982
|
+ for (var k = 0; k < widgetNo; k++)
|
983
|
+ {
|
984
|
+ // the widget ID
|
985
|
+ var wid = me.readInt32BinaryMessage(mobj.message, offset);
|
986
|
+ offset = offset + 4;
|
987
|
+
|
988
|
+ theWindow.deregisterAnyMouseWidget(wid);
|
989
|
+ }
|
990
|
+ }
|
991
|
+ }, 1);
|
992
|
break;
|
993
|
case 0x97:
|
994
|
- // enable/disable mouse events
|
995
|
- p2j.screen.captureMouseEvents(message[1] == 1);
|
996
|
+ var mobj = {message : message};
|
997
|
+ setTimeout(
|
998
|
+ function()
|
999
|
+ {
|
1000
|
+ // enable/disable mouse events
|
1001
|
+ p2j.screen.captureMouseEvents(mobj.message[1] == 1);
|
1002
|
+ }, 1);
|
1003
|
break;
|
1004
|
case 0x98:
|
1005
|
- // enable/disable OS events
|
1006
|
- var wid = me.readInt32BinaryMessage(message, 1);
|
1007
|
- p2j.screen.enableOsEvents(wid, message[5] == 1);
|
1008
|
+ var mobj = {message : message};
|
1009
|
+ setTimeout(
|
1010
|
+ function()
|
1011
|
+ {
|
1012
|
+ // enable/disable OS events
|
1013
|
+ var wid = me.readInt32BinaryMessage(mobj.message, 1);
|
1014
|
+ p2j.screen.enableOsEvents(wid, mobj.message[5] == 1);
|
1015
|
+ }, 1);
|
1016
|
break;
|
1017
|
case 0x99:
|
1018
|
- // set window iconification state
|
1019
|
- var offset = 1;
|
1020
|
-
|
1021
|
- var windowID = me.readInt32BinaryMessage(message, offset);
|
1022
|
- offset = offset + 4;
|
1023
|
-
|
1024
|
- var iconified = (message[offset] == 1);
|
1025
|
- offset = offset + 1;
|
1026
|
-
|
1027
|
- var theWindow = p2j.screen.getWindow(windowID);
|
1028
|
- //p2j.logger.log("recieved 0x99: iconified = " + iconified + " windowId=" + windowID);
|
1029
|
- if (iconified)
|
1030
|
- {
|
1031
|
- theWindow.iconify();
|
1032
|
- }
|
1033
|
- else
|
1034
|
- {
|
1035
|
- theWindow.deiconify();
|
1036
|
- }
|
1037
|
-
|
1038
|
+ var mobj = {message : message};
|
1039
|
+ setTimeout(
|
1040
|
+ function()
|
1041
|
+ {
|
1042
|
+ // set window iconification state
|
1043
|
+ var offset = 1;
|
1044
|
+
|
1045
|
+ var windowID = me.readInt32BinaryMessage(mobj.message, offset);
|
1046
|
+ offset = offset + 4;
|
1047
|
+
|
1048
|
+ var iconified = (mobj.message[offset] == 1);
|
1049
|
+ offset = offset + 1;
|
1050
|
+
|
1051
|
+ var theWindow = p2j.screen.getWindow(windowID);
|
1052
|
+ //p2j.logger.log("recieved 0x99: iconified = " + iconified + " windowId=" + windowID);
|
1053
|
+ if (iconified)
|
1054
|
+ {
|
1055
|
+ theWindow.iconify();
|
1056
|
+ }
|
1057
|
+ else
|
1058
|
+ {
|
1059
|
+ theWindow.deiconify();
|
1060
|
+ }
|
1061
|
+ }, 1);
|
1062
|
break;
|
1063
|
case 0x9A:
|
1064
|
- // resizeable window
|
1065
|
- var offset = 1;
|
1066
|
-
|
1067
|
- var windowID = me.readInt32BinaryMessage(message, offset);
|
1068
|
- offset = offset + 4;
|
1069
|
-
|
1070
|
- var theWindow = p2j.screen.getWindow(windowID);
|
1071
|
-
|
1072
|
- theWindow.resizeable = (message[offset] == 1);
|
1073
|
- offset = offset + 1;
|
1074
|
-
|
1075
|
- if (theWindow.resizeable)
|
1076
|
- {
|
1077
|
- theWindow.minWidth = me.readInt16BinaryMessage(message, offset);
|
1078
|
- offset = offset + 2;
|
1079
|
- theWindow.minHeight = me.readInt16BinaryMessage(message, offset);
|
1080
|
- offset = offset + 2;
|
1081
|
-
|
1082
|
- theWindow.maxWidth = me.readInt16BinaryMessage(message, offset);
|
1083
|
- offset = offset + 2;
|
1084
|
- theWindow.maxHeight = me.readInt16BinaryMessage(message, offset);
|
1085
|
- offset = offset + 2;
|
1086
|
- }
|
1087
|
- else
|
1088
|
- {
|
1089
|
- var rect = theWindow.canvas.getBoundingClientRect();
|
1090
|
-
|
1091
|
- var rwidth = rect.right - rect.left + 1;
|
1092
|
- var rheight = rect.bottom - rect.top + 1;
|
1093
|
-
|
1094
|
- theWindow.minWidth = rwidth;
|
1095
|
- theWindow.minHeight = rheight;
|
1096
|
-
|
1097
|
- theWindow.maxWidth = rwidth;
|
1098
|
- theWindow.maxHeight = rheight;
|
1099
|
- }
|
1100
|
-
|
1101
|
+ var mobj = {message : message};
|
1102
|
+ setTimeout(
|
1103
|
+ function()
|
1104
|
+ {
|
1105
|
+ // resizeable window
|
1106
|
+ var offset = 1;
|
1107
|
+
|
1108
|
+ var windowID = me.readInt32BinaryMessage(mobj.message, offset);
|
1109
|
+ offset = offset + 4;
|
1110
|
+
|
1111
|
+ var theWindow = p2j.screen.getWindow(windowID);
|
1112
|
+
|
1113
|
+ theWindow.resizeable = (mobj.message[offset] == 1);
|
1114
|
+ offset = offset + 1;
|
1115
|
+
|
1116
|
+ if (theWindow.resizeable)
|
1117
|
+ {
|
1118
|
+ theWindow.minWidth = me.readInt16BinaryMessage(mobj.message, offset);
|
1119
|
+ offset = offset + 2;
|
1120
|
+ theWindow.minHeight = me.readInt16BinaryMessage(mobj.message, offset);
|
1121
|
+ offset = offset + 2;
|
1122
|
+
|
1123
|
+ theWindow.maxWidth = me.readInt16BinaryMessage(mobj.message, offset);
|
1124
|
+ offset = offset + 2;
|
1125
|
+ theWindow.maxHeight = me.readInt16BinaryMessage(mobj.message, offset);
|
1126
|
+ offset = offset + 2;
|
1127
|
+ }
|
1128
|
+ else
|
1129
|
+ {
|
1130
|
+ var rect = theWindow.canvas.getBoundingClientRect();
|
1131
|
+
|
1132
|
+ var rwidth = rect.right - rect.left + 1;
|
1133
|
+ var rheight = rect.bottom - rect.top + 1;
|
1134
|
+
|
1135
|
+ theWindow.minWidth = rwidth;
|
1136
|
+ theWindow.minHeight = rheight;
|
1137
|
+
|
1138
|
+ theWindow.maxWidth = rwidth;
|
1139
|
+ theWindow.maxHeight = rheight;
|
1140
|
+ }
|
1141
|
+ }, 1);
|
1142
|
break;
|
1143
|
case 0x9B:
|
1144
|
- // current editors selection is changed
|
1145
|
- var text = me.readStringBinaryMessage(message, 1);
|
1146
|
- p2j.clipboard.setSelection(text);
|
1147
|
+ var mobj = {message : message};
|
1148
|
+ setTimeout(
|
1149
|
+ function()
|
1150
|
+ {
|
1151
|
+ // current editors selection is changed
|
1152
|
+ var text = me.readStringBinaryMessage(mobj.message, 1);
|
1153
|
+ p2j.clipboard.setSelection(text);
|
1154
|
+ }, 1);
|
1155
|
break;
|
1156
|
case 0x9C:
|
1157
|
- var id = me.readInt32BinaryMessage(message, 1);
|
1158
|
- p2j.screen.moveToTop(id);
|
1159
|
+ var mobj = {message : message};
|
1160
|
+ setTimeout(
|
1161
|
+ function()
|
1162
|
+ {
|
1163
|
+ var id = me.readInt32BinaryMessage(mobj.message, 1);
|
1164
|
+ p2j.screen.moveToTop(id);
|
1165
|
+ }, 1);
|
1166
|
break;
|
1167
|
case 0x9D:
|
1168
|
- var id = me.readInt32BinaryMessage(message, 1);
|
1169
|
- p2j.screen.moveToBottom(id);
|
1170
|
+ var mobj = {message : message};
|
1171
|
+ setTimeout(
|
1172
|
+ function()
|
1173
|
+ {
|
1174
|
+ var id = me.readInt32BinaryMessage(mobj.message, 1);
|
1175
|
+ p2j.screen.moveToBottom(id);
|
1176
|
+ }, 1);
|
1177
|
break;
|
1178
|
case 0x9E:
|
1179
|
- // change sensitivity for top-level or child window
|
1180
|
- var id = me.readInt32BinaryMessage(message, 1);
|
1181
|
- var enabled = message[5] === 0 ? false : true;
|
1182
|
- p2j.screen.setWindowEnabled(id, enabled);
|
1183
|
+ var mobj = {message : message};
|
1184
|
+ setTimeout(
|
1185
|
+ function()
|
1186
|
+ {
|
1187
|
+ // change sensitivity for top-level or child window
|
1188
|
+ var id = me.readInt32BinaryMessage(mobj.message, 1);
|
1189
|
+ var enabled = mobj.message[5] === 0 ? false : true;
|
1190
|
+ p2j.screen.setWindowEnabled(id, enabled);
|
1191
|
+ }, 1);
|
1192
|
break;
|
1193
|
};
|
1194
|
}
|
1195
|
@@ -924,7 +1081,7 @@
|
1196
|
{
|
1197
|
case 0:
|
1198
|
// color palette
|
1199
|
- p2j.screen.palette = pay.p;
|
1200
|
+ p2j.screen.palette = pay.p;
|
1201
|
break;
|
1202
|
};
|
1203
|
}
|
1204
|
@@ -945,7 +1102,7 @@
|
1205
|
{
|
1206
|
ws.close();
|
1207
|
}
|
1208
|
- };
|
1209
|
+ };
|
1210
|
}
|
1211
|
else
|
1212
|
{
|
1213
|
|
1214
|
=== modified file 'src/com/goldencode/p2j/ui/client/gui/driver/web/res/p2j.mouse.js'
|
1215
|
--- src/com/goldencode/p2j/ui/client/gui/driver/web/res/p2j.mouse.js 2015-11-12 18:54:21 +0000
|
1216
|
+++ src/com/goldencode/p2j/ui/client/gui/driver/web/res/p2j.mouse.js 2015-11-27 17:00:12 +0000
|
1217
|
@@ -534,8 +534,14 @@
|
1218
|
{
|
1219
|
return;
|
1220
|
}
|
1221
|
- // resize canvas
|
1222
|
+ // resize the offscreen canvas
|
1223
|
win.resize(mThis.resizeArea.width, mThis.resizeArea.height);
|
1224
|
+ // set dimension for the window canvas
|
1225
|
+ win.canvas.width = mThis.resizeArea.width;
|
1226
|
+ win.canvas.height = mThis.resizeArea.height;
|
1227
|
+ // blast the offscreen image to the window canvas
|
1228
|
+ win.ctx.drawImage(win.offscreenCanvas, 0, 0);
|
1229
|
+
|
1230
|
// set new location
|
1231
|
win.canvas.style.left = mThis.resizeArea.left + "px";
|
1232
|
win.canvas.style.top = mThis.resizeArea.top + "px";
|
1233
|
|
1234
|
=== modified file 'src/com/goldencode/p2j/ui/client/gui/driver/web/res/p2j.screen.js'
|
1235
|
--- src/com/goldencode/p2j/ui/client/gui/driver/web/res/p2j.screen.js 2015-11-24 19:25:52 +0000
|
1236
|
+++ src/com/goldencode/p2j/ui/client/gui/driver/web/res/p2j.screen.js 2015-11-27 20:22:54 +0000
|
1237
|
@@ -337,8 +337,14 @@
|
1238
|
|
1239
|
/** Backing canvas on which all output for this window will be rendered. */
|
1240
|
this.canvas = p2j.createCanvas(null, options);
|
1241
|
+ this.canvas.style.visibility = "hidden";
|
1242
|
+
|
1243
|
this.resizeable = false;
|
1244
|
-
|
1245
|
+
|
1246
|
+ /** The off screen canvas to be used to make batch drawing. */
|
1247
|
+ this.offscreenCanvas = document.createElement('canvas');
|
1248
|
+ this.offscreenContext = this.offscreenCanvas.getContext('2d', {alpha : true});
|
1249
|
+
|
1250
|
/** Canvas 2D graphics context. */
|
1251
|
this.ctx = this.canvas.getContext('2d', {alpha : true});
|
1252
|
|
1253
|
@@ -355,7 +361,7 @@
|
1254
|
this.iconHeight = 0;
|
1255
|
|
1256
|
/** Creates canvas renderer. */
|
1257
|
- this.canvasRenderer = new CanvasRenderer(this.canvas, this.ctx, strokesManager,
|
1258
|
+ this.canvasRenderer = new CanvasRenderer(this.offscreenCanvas, this.offscreenContext, strokesManager,
|
1259
|
p2j.fonts, p2j.logger);
|
1260
|
|
1261
|
/**
|
1262
|
@@ -849,9 +855,9 @@
|
1263
|
var numOps = p2j.socket.readInt32BinaryMessage(message, 5);
|
1264
|
|
1265
|
p2j.logger.log("START DRAWING CYCLE FOR WINDOW " + this.id);
|
1266
|
-
|
1267
|
+
|
1268
|
var idx = 9;
|
1269
|
-
|
1270
|
+
|
1271
|
drawLoop:
|
1272
|
for (var i = 0; i < numOps; i++)
|
1273
|
{
|
1274
|
@@ -904,7 +910,6 @@
|
1275
|
|
1276
|
y = p2j.socket.readInt32BinaryMessage(message, idx + offset);
|
1277
|
offset = offset + 4;
|
1278
|
-
|
1279
|
this.canvasRenderer.drawText(text, x, y, centered);
|
1280
|
extra = " text = " + text + "; x = " + x + "; y = " + y +
|
1281
|
"; centered = " + centered;
|
1282
|
@@ -932,7 +937,6 @@
|
1283
|
|
1284
|
var lheight = p2j.socket.readInt32BinaryMessage(message, idx + offset);
|
1285
|
offset = offset + 4;
|
1286
|
-
|
1287
|
this.canvasRenderer.drawScaledText(currentFont, text, x, y, centered, lwidth, lheight);
|
1288
|
extra = " text = " + text + "; x = " + x + "; y = " + y +
|
1289
|
"; centered = " + centered +
|
1290
|
@@ -960,9 +964,8 @@
|
1291
|
offset = offset + 4;
|
1292
|
|
1293
|
// TODO: this might need to be 'bottom', too
|
1294
|
- this.ctx.textBaseline = 'top';
|
1295
|
-
|
1296
|
- me.layoutParagraphWorker(this.ctx, text, fontId, x, y, width);
|
1297
|
+ this.offscreenContext.textBaseline = 'top';
|
1298
|
+ me.layoutParagraphWorker(this.offscreenContext, text, fontId, x, y, width);
|
1299
|
|
1300
|
break;
|
1301
|
case ops.DRAW_LINE:
|
1302
|
@@ -971,7 +974,8 @@
|
1303
|
var x2 = p2j.socket.readInt32BinaryMessage(message, idx + 9);
|
1304
|
var y2 = p2j.socket.readInt32BinaryMessage(message, idx + 13);
|
1305
|
extra = " x1 = " + x1 + "; y1 = " + y1 + "; x2 = " + x2 + "; y2 = " + y2;
|
1306
|
- this.canvasRenderer.strokeLineSegment(this.ctx, x1, y1, x2, y2, this.canvasRenderer.rawColor);
|
1307
|
+ this.canvasRenderer.strokeLineSegment(this.offscreenContext,
|
1308
|
+ x1, y1, x2, y2, this.canvasRenderer.rawColor);
|
1309
|
break;
|
1310
|
case ops.DRAW_RECT:
|
1311
|
case ops.FILL_RECT:
|
1312
|
@@ -979,9 +983,9 @@
|
1313
|
y = p2j.socket.readInt32BinaryMessage(message, idx + 5);
|
1314
|
width = p2j.socket.readInt32BinaryMessage(message, idx + 9);
|
1315
|
height = p2j.socket.readInt32BinaryMessage(message, idx + 13);
|
1316
|
+ filled = (type === ops.FILL_RECT);
|
1317
|
extra = " x = " + x + "; y = " + y + "; width = " + width + "; height = " + height;
|
1318
|
- filled = (type === ops.FILL_RECT);
|
1319
|
- this.canvasRenderer.strokeRect(this.ctx, x, y, width, height,
|
1320
|
+ this.canvasRenderer.strokeRect(this.offscreenContext, x, y, width, height,
|
1321
|
this.canvasRenderer.rawColor, filled);
|
1322
|
break;
|
1323
|
case ops.DRAW_ROUND_RECT:
|
1324
|
@@ -991,8 +995,9 @@
|
1325
|
height = p2j.socket.readInt32BinaryMessage(message, idx + 13);
|
1326
|
diameter = p2j.socket.readInt32BinaryMessage(message, idx + 17);
|
1327
|
extra = " x = " + x + "; y = " + y + "; width = " + width + "; height = " + height
|
1328
|
- + "; diameter = " + diameter;
|
1329
|
- this.canvasRenderer.drawRoundRect(this.ctx, x, y, width, height, diameter,
|
1330
|
+ + "; diameter = " + diameter;
|
1331
|
+ this.canvasRenderer.drawRoundRect(this.offscreenContext, x, y,
|
1332
|
+ width, height, diameter,
|
1333
|
this.canvasRenderer.rawColor, false);
|
1334
|
break;
|
1335
|
case ops.DRAW_IMAGE:
|
1336
|
@@ -1003,7 +1008,6 @@
|
1337
|
height = p2j.socket.readInt32BinaryMessage(message, idx + 13);
|
1338
|
|
1339
|
extra = " x = " + x + "; y = " + y + "; width = " + width + "; height = " + height;
|
1340
|
-
|
1341
|
var encoding = message[idx + 17];
|
1342
|
var key = p2j.socket.readInt32BinaryMessage(message, idx + 18);
|
1343
|
var pixelsInBytes = width * height * 4;
|
1344
|
@@ -1018,9 +1022,11 @@
|
1345
|
{
|
1346
|
imgData = message;
|
1347
|
imgDataOffset = idx + 22;
|
1348
|
- loadedImages.set(key, message.subarray(imgDataOffset, imgDataOffset + pixelsInBytes));
|
1349
|
+ loadedImages.set(key, message.subarray(
|
1350
|
+ imgDataOffset, imgDataOffset + pixelsInBytes));
|
1351
|
}
|
1352
|
- this.canvasRenderer.drawImage(this.ctx, x, y, width, height, imgData, imgDataOffset);
|
1353
|
+ this.canvasRenderer.drawImage(this.offscreenContext, x, y, width, height,
|
1354
|
+ imgData, imgDataOffset);
|
1355
|
break;
|
1356
|
case ops.FILL_ROUND_RECT:
|
1357
|
x = p2j.socket.readInt32BinaryMessage(message, idx + 1);
|
1358
|
@@ -1030,13 +1036,12 @@
|
1359
|
diameter = p2j.socket.readInt32BinaryMessage(message, idx + 17);
|
1360
|
extra = " x = " + x + "; y = " + y + "; width = " + width + "; height = " + height
|
1361
|
+ "; diameter = " + diameter;
|
1362
|
- this.canvasRenderer.drawRoundRect(this.ctx, x, y, width, height, diameter,
|
1363
|
- this.canvasRenderer.rawColor, true);
|
1364
|
+ this.canvasRenderer.drawRoundRect(this.offscreenContext, x, y, width, height,
|
1365
|
+ diameter, this.canvasRenderer.rawColor, true);
|
1366
|
break;
|
1367
|
case ops.FILL_POLYGON:
|
1368
|
offset = idx + 1;
|
1369
|
var numPoints = p2j.socket.readInt32BinaryMessage(message, offset);
|
1370
|
-
|
1371
|
var xPoints = [];
|
1372
|
var yPoints = [];
|
1373
|
|
1374
|
@@ -1048,8 +1053,8 @@
|
1375
|
yPoints[j] = p2j.socket.readInt32BinaryMessage(message, offset);
|
1376
|
}
|
1377
|
|
1378
|
- this.canvasRenderer.strokePolygon(this.ctx, xPoints, yPoints, numPoints,
|
1379
|
- this.canvasRenderer.rawColor, true);
|
1380
|
+ this.canvasRenderer.strokePolygon(this.offscreenContext, xPoints, yPoints,
|
1381
|
+ numPoints, this.canvasRenderer.rawColor, true);
|
1382
|
break;
|
1383
|
case ops.DRAW_3D_RECT:
|
1384
|
case ops.FILL_3D_RECT:
|
1385
|
@@ -1060,8 +1065,8 @@
|
1386
|
raised = (message[idx + 17] === 1);
|
1387
|
filled = (type == ops.FILL_3D_RECT);
|
1388
|
extra = " x = " + x +"; y = " + y + "; width = " + width + "; height = " +
|
1389
|
- height + "; raised = " + raised;
|
1390
|
- this.canvasRenderer.draw3DRect(this.ctx, x, y, width, height,
|
1391
|
+ height + "; raised = " + raised;
|
1392
|
+ this.canvasRenderer.draw3DRect(this.offscreenContext, x, y, width, height,
|
1393
|
this.canvasRenderer.rawColor, filled, raised);
|
1394
|
break;
|
1395
|
case ops.SET_COLOR:
|
1396
|
@@ -1079,22 +1084,21 @@
|
1397
|
break;
|
1398
|
case ops.SET_FONT:
|
1399
|
fontId = p2j.socket.readInt32BinaryMessage(message, idx + 1);
|
1400
|
-
|
1401
|
- setFont(this.ctx, fontId);
|
1402
|
+ setFont(this.offscreenContext, fontId);
|
1403
|
break;
|
1404
|
case ops.SET_FONT_STYLE:
|
1405
|
var style = p2j.socket.readInt32BinaryMessage(message, idx + 1);
|
1406
|
-
|
1407
|
p2j.fonts.setFontStyle(currentFont, style);
|
1408
|
fname = p2j.fonts.getFontName(currentFont);
|
1409
|
- this.ctx.font = fname;
|
1410
|
+ this.offscreenContext.font = fname;
|
1411
|
break;
|
1412
|
case ops.TRANSLATE_PUSH:
|
1413
|
x = p2j.socket.readInt32BinaryMessage(message, idx + 1);
|
1414
|
y = p2j.socket.readInt32BinaryMessage(message, idx + 5);
|
1415
|
this.trans++;
|
1416
|
- extra = " " + this.trans.toString() + "; x = " + x.toString() +"; y = " + y.toString();
|
1417
|
- this.canvasRenderer.translate(x, y);
|
1418
|
+ extra = " " + this.trans.toString() + "; x = " + x.toString()
|
1419
|
+ + "; y = " + y.toString();
|
1420
|
+ this.canvasRenderer.translate(x, y);
|
1421
|
break;
|
1422
|
case ops.TRANSLATE_POP:
|
1423
|
x = p2j.socket.readInt32BinaryMessage(message, idx + 1);
|
1424
|
@@ -1129,6 +1133,9 @@
|
1425
|
width = p2j.socket.readInt32BinaryMessage(message, idx + 9);
|
1426
|
height = p2j.socket.readInt32BinaryMessage(message, idx + 13);
|
1427
|
this.resize(width, height);
|
1428
|
+ this.canvas.width = width;
|
1429
|
+ this.canvas.height = height;
|
1430
|
+
|
1431
|
extra = " x = " + x + "; y = " + y + "; width = " + width + "; height = " + height;
|
1432
|
break;
|
1433
|
case ops.SET_LOCATION:
|
1434
|
@@ -1142,6 +1149,8 @@
|
1435
|
width = p2j.socket.readInt32BinaryMessage(message, idx + 1);
|
1436
|
height = p2j.socket.readInt32BinaryMessage(message, idx + 5);
|
1437
|
this.resize(width, height);
|
1438
|
+ this.canvas.width = width;
|
1439
|
+ this.canvas.height = height;
|
1440
|
extra = " width = " + width + "; height = " + height;
|
1441
|
break;
|
1442
|
case ops.DRAW_HIGHLIGHT:
|
1443
|
@@ -1207,7 +1216,8 @@
|
1444
|
p2j.logger.log("PaintPrimitives." + ops[type] + " " + extra);
|
1445
|
idx += sz;
|
1446
|
}
|
1447
|
-
|
1448
|
+ // to blast the offscreen image on the window canvas
|
1449
|
+ this.ctx.drawImage(this.offscreenCanvas, 0, 0);
|
1450
|
p2j.logger.log("END DRAWING CYCLE FOR WINDOW " + this.id);
|
1451
|
};
|
1452
|
|
1453
|
|