@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.
@@ -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.nodes[char] || fa.nodes[" "];
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] = 0.0;
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] = 0.0;
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] = 0.0;
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] = 0.0;
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] = 0.0;
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] = 0.0;
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 + 3] = offset;
468
- a[j + 7] = offset;
469
- a[j + 11] = offset;
470
- a[j + 15] = offset;
471
- a[j + 19] = offset;
472
- a[j + 23] = offset;
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 + 2] = -1.0;
489
- a[j + 6] = -1.0;
490
- a[j + 10] = -1.0;
491
- a[j + 14] = -1.0;
492
- a[j + 18] = -1.0;
493
- a[j + 17] = -1.0;
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
  }