@openglobus/og 0.13.2 → 0.13.5
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/dist/@openglobus/og.esm.js +2 -2
- package/dist/@openglobus/og.esm.js.map +1 -1
- package/dist/@openglobus/og.umd.js +2 -2
- package/dist/@openglobus/og.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/og/control/TouchNavigation.js +340 -319
- package/src/og/entity/Billboard.js +165 -165
- package/src/og/entity/BillboardHandler.js +1 -1
- package/src/og/entity/GeoObject.js +4 -0
- package/src/og/entity/GeoObjectHandler.js +22 -33
- package/src/og/entity/Geometry.js +319 -319
- package/src/og/entity/Label.js +348 -346
- package/src/og/entity/LabelHandler.js +44 -37
- package/src/og/renderer/RendererEvents.js +1051 -1051
- package/src/og/shaders/billboard.js +8 -0
- package/src/og/shaders/label.js +59 -16
- package/src/og/utils/FontAtlas.js +25 -15
- package/src/og/utils/TextureAtlas.js +291 -280
- package/types/entity/GeoObject.d.ts +1 -0
- package/types/entity/Label.d.ts +1 -0
- package/types/entity/LabelHandler.d.ts +1 -1
- package/types/utils/TextureAtlas.d.ts +2 -0
|
@@ -24,6 +24,9 @@ const OUTLINECOLOR_BUFFER = 10;
|
|
|
24
24
|
|
|
25
25
|
window.LABEL_DEPTH_OFFSET = -0;
|
|
26
26
|
|
|
27
|
+
const EMPTY = -1.0;
|
|
28
|
+
const RTL = 1.0;
|
|
29
|
+
|
|
27
30
|
/*
|
|
28
31
|
* og.LabelHandler
|
|
29
32
|
*
|
|
@@ -201,6 +204,8 @@ class LabelHandler extends BillboardHandler {
|
|
|
201
204
|
var gl = h.gl,
|
|
202
205
|
ec = this._entityCollection;
|
|
203
206
|
|
|
207
|
+
gl.disable(gl.CULL_FACE);
|
|
208
|
+
|
|
204
209
|
gl.uniform1iv(shu.fontTextureArr, r.fontAtlas.samplerArr);
|
|
205
210
|
gl.uniform4fv(shu.sdfParamsArr, r.fontAtlas.sdfParamsArr);
|
|
206
211
|
gl.uniformMatrix4fv(shu.viewMatrix, false, r.activeCamera._viewMatrix._m);
|
|
@@ -264,6 +269,8 @@ class LabelHandler extends BillboardHandler {
|
|
|
264
269
|
gl.drawArrays(gl.TRIANGLES, 0, this._vertexBuffer.numItems);
|
|
265
270
|
|
|
266
271
|
gl.depthFunc(gl.LESS);
|
|
272
|
+
|
|
273
|
+
gl.enable(gl.CULL_FACE);
|
|
267
274
|
}
|
|
268
275
|
|
|
269
276
|
_pickingPASS() {
|
|
@@ -359,7 +366,10 @@ class LabelHandler extends BillboardHandler {
|
|
|
359
366
|
label._isReady = false;
|
|
360
367
|
}
|
|
361
368
|
|
|
362
|
-
setText(index, text, fontIndex, align) {
|
|
369
|
+
setText(index, text, fontIndex, align, isRTL = false) {
|
|
370
|
+
|
|
371
|
+
text = text.normalize('NFKC');
|
|
372
|
+
|
|
363
373
|
var fa = this._renderer.fontAtlas.atlasesArr[fontIndex];
|
|
364
374
|
|
|
365
375
|
if (!fa) return;
|
|
@@ -370,15 +380,19 @@ class LabelHandler extends BillboardHandler {
|
|
|
370
380
|
|
|
371
381
|
let c = 0;
|
|
372
382
|
|
|
373
|
-
let n = fa.nodes[text[c]];
|
|
374
|
-
let offset = 0.0;
|
|
375
383
|
let len = Math.min(this._maxLetters, text.length);
|
|
384
|
+
let _rtl_ = 0.0;
|
|
385
|
+
if (isRTL) {
|
|
386
|
+
_rtl_ = RTL;
|
|
387
|
+
}
|
|
388
|
+
let n = fa.get(text[c].charCodeAt());
|
|
389
|
+
let offset = 0.0;
|
|
376
390
|
let kern = fa.kernings;
|
|
377
391
|
|
|
378
392
|
for (c = 0; c < len; c++) {
|
|
379
393
|
let j = i + c * 24;
|
|
380
394
|
let char = text[c];
|
|
381
|
-
n = fa.
|
|
395
|
+
n = fa.get(char.charCodeAt()) || fa.get(" ".charCodeAt());
|
|
382
396
|
let tc = n.texCoords;
|
|
383
397
|
|
|
384
398
|
let m = n.metrics;
|
|
@@ -386,32 +400,32 @@ class LabelHandler extends BillboardHandler {
|
|
|
386
400
|
a[j] = tc[0];
|
|
387
401
|
a[j + 1] = tc[1];
|
|
388
402
|
a[j + 2] = offset;
|
|
389
|
-
a[j + 3] =
|
|
403
|
+
a[j + 3] = _rtl_;
|
|
390
404
|
|
|
391
405
|
a[j + 4] = tc[2];
|
|
392
406
|
a[j + 5] = tc[3];
|
|
393
407
|
a[j + 6] = offset;
|
|
394
|
-
a[j + 7] =
|
|
408
|
+
a[j + 7] = _rtl_;
|
|
395
409
|
|
|
396
410
|
a[j + 8] = tc[4];
|
|
397
411
|
a[j + 9] = tc[5];
|
|
398
412
|
a[j + 10] = offset;
|
|
399
|
-
a[j + 11] =
|
|
413
|
+
a[j + 11] = _rtl_;
|
|
400
414
|
|
|
401
415
|
a[j + 12] = tc[6];
|
|
402
416
|
a[j + 13] = tc[7];
|
|
403
417
|
a[j + 14] = offset;
|
|
404
|
-
a[j + 15] =
|
|
418
|
+
a[j + 15] = _rtl_;
|
|
405
419
|
|
|
406
420
|
a[j + 16] = tc[8];
|
|
407
421
|
a[j + 17] = tc[9];
|
|
408
422
|
a[j + 18] = offset;
|
|
409
|
-
a[j + 19] =
|
|
423
|
+
a[j + 19] = _rtl_;
|
|
410
424
|
|
|
411
425
|
a[j + 20] = tc[10];
|
|
412
426
|
a[j + 21] = tc[11];
|
|
413
427
|
a[j + 22] = offset;
|
|
414
|
-
a[j + 23] =
|
|
428
|
+
a[j + 23] = _rtl_;
|
|
415
429
|
|
|
416
430
|
//
|
|
417
431
|
// Gliph
|
|
@@ -446,9 +460,9 @@ class LabelHandler extends BillboardHandler {
|
|
|
446
460
|
g[j + 22] = m.nXOffset;
|
|
447
461
|
g[j + 23] = m.nYOffset;
|
|
448
462
|
|
|
449
|
-
let k = kern[char];
|
|
450
|
-
if (k) {
|
|
451
|
-
k = k[text[c + 1]];
|
|
463
|
+
let k = kern[char.charCodeAt()];
|
|
464
|
+
if (k && text[c + 1]) {
|
|
465
|
+
k = k[text[c + 1].charCodeAt()];
|
|
452
466
|
if (k) {
|
|
453
467
|
offset += m.nAdvance + k;
|
|
454
468
|
} else {
|
|
@@ -464,33 +478,23 @@ class LabelHandler extends BillboardHandler {
|
|
|
464
478
|
offset *= -0.5;
|
|
465
479
|
for (c = 0; c < len; c++) {
|
|
466
480
|
let j = i + c * 24;
|
|
467
|
-
a[j +
|
|
468
|
-
a[j +
|
|
469
|
-
a[j +
|
|
470
|
-
a[j +
|
|
471
|
-
a[j +
|
|
472
|
-
a[j +
|
|
473
|
-
}
|
|
474
|
-
} else if (align === ALIGN.LEFT) {
|
|
475
|
-
for (c = 0; c < len; c++) {
|
|
476
|
-
let j = i + c * 24;
|
|
477
|
-
a[j + 3] = 0;
|
|
478
|
-
a[j + 7] = 0;
|
|
479
|
-
a[j + 11] = 0;
|
|
480
|
-
a[j + 15] = 0;
|
|
481
|
-
a[j + 19] = 0;
|
|
482
|
-
a[j + 23] = 0;
|
|
481
|
+
a[j + 2] += offset;
|
|
482
|
+
a[j + 6] += offset;
|
|
483
|
+
a[j + 10] += offset;
|
|
484
|
+
a[j + 14] += offset;
|
|
485
|
+
a[j + 18] += offset;
|
|
486
|
+
a[j + 22] += offset;
|
|
483
487
|
}
|
|
484
488
|
}
|
|
485
489
|
|
|
486
490
|
for (; c < this._maxLetters; c++) {
|
|
487
491
|
let j = i + c * 24;
|
|
488
|
-
a[j +
|
|
489
|
-
a[j +
|
|
490
|
-
a[j +
|
|
491
|
-
a[j +
|
|
492
|
-
a[j +
|
|
493
|
-
a[j +
|
|
492
|
+
a[j + 3] = EMPTY;
|
|
493
|
+
a[j + 7] = EMPTY;
|
|
494
|
+
a[j + 11] = EMPTY;
|
|
495
|
+
a[j + 15] = EMPTY;
|
|
496
|
+
a[j + 19] = EMPTY;
|
|
497
|
+
a[j + 23] = EMPTY;
|
|
494
498
|
}
|
|
495
499
|
|
|
496
500
|
this._changedBuffers[TEXCOORD_BUFFER] = true;
|
|
@@ -793,19 +797,22 @@ class LabelHandler extends BillboardHandler {
|
|
|
793
797
|
|
|
794
798
|
for (var q = 0; q < this._maxLetters; q++) {
|
|
795
799
|
var j = i + q * 12;
|
|
800
|
+
|
|
796
801
|
a[j] = vertexArr[0];
|
|
797
802
|
a[j + 1] = vertexArr[1];
|
|
798
|
-
a[j + 2] = vertexArr[2];
|
|
799
803
|
|
|
804
|
+
a[j + 2] = vertexArr[2];
|
|
800
805
|
a[j + 3] = vertexArr[3];
|
|
806
|
+
|
|
801
807
|
a[j + 4] = vertexArr[4];
|
|
802
808
|
a[j + 5] = vertexArr[5];
|
|
803
809
|
|
|
804
810
|
a[j + 6] = vertexArr[6];
|
|
805
811
|
a[j + 7] = vertexArr[7];
|
|
806
|
-
a[j + 8] = vertexArr[8];
|
|
807
812
|
|
|
813
|
+
a[j + 8] = vertexArr[8];
|
|
808
814
|
a[j + 9] = vertexArr[9];
|
|
815
|
+
|
|
809
816
|
a[j + 10] = vertexArr[10];
|
|
810
817
|
a[j + 11] = vertexArr[11];
|
|
811
818
|
}
|