@pirireis/webglobeplugins 0.9.11 → 0.9.12

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.
Files changed (166) hide show
  1. package/Math/angle-calculation.js +8 -8
  2. package/Math/arc.js +18 -18
  3. package/Math/bounds/line-bbox.js +78 -80
  4. package/Math/constants.js +3 -3
  5. package/Math/juction/arc-plane.js +23 -23
  6. package/Math/juction/line-sphere.js +11 -11
  7. package/Math/juction/plane-plane.js +11 -11
  8. package/Math/line.js +14 -16
  9. package/Math/methods.js +65 -70
  10. package/Math/plane.js +16 -18
  11. package/Math/quaternion.js +45 -49
  12. package/Math/utils.js +2 -2
  13. package/Math/vec3.js +42 -45
  14. package/algorithms/search-binary.js +4 -4
  15. package/altitude-locator/draw-subset-obj.js +7 -8
  16. package/altitude-locator/plugin.js +98 -114
  17. package/arrowfield/adaptor.js +3 -4
  18. package/arrowfield/index.js +2 -2
  19. package/arrowfield/plugin.js +62 -65
  20. package/bearing-line/index.js +1 -1
  21. package/bearing-line/plugin.js +200 -226
  22. package/circle-line-chain/chain-list-map.js +82 -88
  23. package/circle-line-chain/plugin.js +134 -165
  24. package/circle-line-chain/util.js +1 -1
  25. package/compass-rose/compass-rose-padding-flat.js +108 -133
  26. package/compass-rose/compass-text-writer.js +62 -70
  27. package/compass-rose/index.js +2 -2
  28. package/compassrose/compassrose.js +46 -50
  29. package/compassrose/index.js +1 -1
  30. package/heatwave/index.js +2 -2
  31. package/heatwave/isobar/objectarraylabels.js +44 -48
  32. package/heatwave/isobar/plugin.js +104 -123
  33. package/heatwave/isobar/quadtreecontours.js +76 -92
  34. package/heatwave/plugins/heatwaveglobeshell.js +69 -87
  35. package/index.js +11 -11
  36. package/package.json +1 -1
  37. package/partialrings/buffer-manager.js +32 -64
  38. package/partialrings/index.js +1 -1
  39. package/partialrings/plugin.js +48 -84
  40. package/partialrings/program.js +136 -47
  41. package/pin/pin-object-array.js +83 -86
  42. package/pin/pin-point-totem.js +21 -22
  43. package/point-heat-map/adaptors/timetracksplugin-format-to-this.js +10 -10
  44. package/point-heat-map/plugin-webworker.js +40 -45
  45. package/point-heat-map/point-to-heat-map-flow.js +40 -42
  46. package/point-tracks/key-methods.js +1 -1
  47. package/point-tracks/plugin.js +137 -162
  48. package/programs/arrowfield/index.js +1 -1
  49. package/programs/arrowfield/logic.js +170 -62
  50. package/programs/arrowfield/object.js +33 -35
  51. package/programs/data2legend/density-to-legend.js +45 -21
  52. package/programs/data2legend/point-to-density-texture.js +52 -27
  53. package/programs/float2legendwithratio/index.js +1 -1
  54. package/programs/float2legendwithratio/logic.js +88 -42
  55. package/programs/float2legendwithratio/object.js +43 -46
  56. package/programs/globe-util/is-globe-moved.js +10 -11
  57. package/programs/globeshell/index.js +1 -1
  58. package/programs/globeshell/wiggle/index.js +1 -1
  59. package/programs/globeshell/wiggle/logic.js +191 -98
  60. package/programs/globeshell/wiggle/object.js +33 -35
  61. package/programs/helpers/blender/program.js +36 -19
  62. package/programs/helpers/fadeaway/index.js +1 -1
  63. package/programs/helpers/fadeaway/logic.js +35 -13
  64. package/programs/helpers/fadeaway/object.js +9 -10
  65. package/programs/helpers/index.js +1 -1
  66. package/programs/index.js +8 -8
  67. package/programs/line-on-globe/angled-line.js +91 -32
  68. package/programs/line-on-globe/circle-accurate-3d.js +82 -32
  69. package/programs/line-on-globe/circle-accurate-flat.js +108 -50
  70. package/programs/line-on-globe/circle-accurate.js +103 -33
  71. package/programs/line-on-globe/circle.js +97 -32
  72. package/programs/line-on-globe/degree-padding-around-circle-3d.js +83 -33
  73. package/programs/line-on-globe/lines-color-instanced-flat.js +79 -34
  74. package/programs/line-on-globe/linestrip.js +111 -45
  75. package/programs/line-on-globe/naive-accurate-flexible.js +120 -50
  76. package/programs/line-on-globe/to-the-surface.js +58 -29
  77. package/programs/line-on-globe/util.js +1 -1
  78. package/programs/picking/pickable-renderer.js +117 -33
  79. package/programs/point-on-globe/element-globe-surface-glow.js +78 -38
  80. package/programs/point-on-globe/element-point-glow.js +103 -35
  81. package/programs/point-on-globe/square-pixel-point.js +76 -27
  82. package/programs/programcache.js +13 -13
  83. package/programs/rings/distancering/circleflatprogram.js +63 -21
  84. package/programs/rings/distancering/circlepaddingfreeangleprogram.js +156 -145
  85. package/programs/rings/distancering/circlepaddysharedbuffer.js +121 -197
  86. package/programs/rings/distancering/index.js +4 -4
  87. package/programs/rings/distancering/paddyflatprogram.js +73 -20
  88. package/programs/rings/distancering/paddyflatprogram2d.js +75 -22
  89. package/programs/rings/distancering/paddyflatprogram3d.js +73 -20
  90. package/programs/rings/partial-ring/piece-of-pie.js +137 -35
  91. package/programs/totems/camerauniformblock.js +64 -51
  92. package/programs/totems/canvas-webglobe-info.js +48 -40
  93. package/programs/totems/gpu-selection-uniform-block.js +44 -40
  94. package/programs/totems/index.js +1 -1
  95. package/programs/two-d/pixel-padding-for-compass.js +90 -29
  96. package/programs/util.js +6 -7
  97. package/programs/vectorfields/index.js +1 -1
  98. package/programs/vectorfields/logics/drawrectangleparticles.js +70 -29
  99. package/programs/vectorfields/logics/index.js +3 -3
  100. package/programs/vectorfields/logics/pixelbased.js +91 -35
  101. package/programs/vectorfields/logics/ubo.js +31 -25
  102. package/programs/vectorfields/pingpongbuffermanager.js +30 -34
  103. package/rangerings/index.js +4 -4
  104. package/rangerings/plugin.js +202 -258
  105. package/rangerings/rangeringangletext.js +108 -120
  106. package/rangerings/ring-account.js +52 -69
  107. package/shaders/fragment-toy/firework.js +55 -1
  108. package/shaders/fragment-toy/singularity.js +55 -1
  109. package/timetracks/adaptors-line-strip.js +26 -37
  110. package/timetracks/adaptors.js +47 -61
  111. package/timetracks/index.js +4 -4
  112. package/timetracks/plugin-line-strip.js +63 -71
  113. package/timetracks/plugin.js +69 -77
  114. package/timetracks/program-line-strip.js +296 -103
  115. package/timetracks/program.js +419 -113
  116. package/timetracks/programpoint-line-strip.js +97 -44
  117. package/timetracks/programpoint.js +90 -44
  118. package/util/account/bufferoffsetmanager.js +72 -95
  119. package/util/account/index.js +1 -1
  120. package/util/account/single-attribute-buffer-management/buffer-manager.js +44 -44
  121. package/util/account/single-attribute-buffer-management/buffer-orchestrator.js +68 -94
  122. package/util/account/single-attribute-buffer-management/index.js +3 -3
  123. package/util/account/single-attribute-buffer-management/object-store.js +29 -30
  124. package/util/account/util.js +2 -4
  125. package/util/algorithms/search-binary.js +4 -4
  126. package/util/check/get.js +5 -5
  127. package/util/check/typecheck.js +13 -15
  128. package/util/geometry/index.js +9 -11
  129. package/util/gl-util/buffer/attribute-loader.js +8 -20
  130. package/util/gl-util/buffer/index.js +1 -1
  131. package/util/gl-util/draw-options/methods.js +8 -9
  132. package/util/gl-util/uniform-block/manager.js +67 -67
  133. package/util/heatwavedatamanager/datamanager.js +56 -116
  134. package/util/heatwavedatamanager/index.js +2 -2
  135. package/util/heatwavedatamanager/pointcoordinatesdatacalculator.js +37 -40
  136. package/util/heatwavedatamanager/pointcoordsmeta.js +9 -10
  137. package/util/index.js +6 -6
  138. package/util/interpolation/timetrack/index.js +1 -1
  139. package/util/interpolation/timetrack/timetrack-interpolator.js +27 -29
  140. package/util/interpolation/timetrack/web-worker-str.js +179 -1
  141. package/util/interpolation/timetrack/web-worker.js +4 -4
  142. package/util/jshelpers/data-filler.js +7 -7
  143. package/util/jshelpers/timefilters.js +7 -7
  144. package/util/picking/fence.js +7 -7
  145. package/util/picking/picker-displayer.js +46 -52
  146. package/util/programs/draw-texture-on-canvas.js +39 -21
  147. package/util/programs/shapesonglobe.js +104 -64
  148. package/util/programs/supersampletotextures.js +45 -39
  149. package/util/programs/texturetoglobe.js +98 -48
  150. package/util/shaderfunctions/geometrytransformations.js +322 -27
  151. package/util/shaderfunctions/nodata.js +7 -1
  152. package/util/shaderfunctions/noisefunctions.js +39 -9
  153. package/util/surface-line-data/arcs-to-cuts.js +20 -23
  154. package/util/webglobe/rasteroverlay.js +35 -37
  155. package/util/webglobjectbuilders.js +55 -60
  156. package/util/webglobjectbuilders1.js +48 -49
  157. package/waveparticles/adaptor.js +6 -7
  158. package/waveparticles/index.js +2 -2
  159. package/waveparticles/plugin.js +79 -84
  160. package/wind/imagetovectorfieldandmagnitude.js +15 -15
  161. package/wind/index.js +4 -4
  162. package/wind/plugin.js +453 -251
  163. package/wind/vectorfieldimage.js +5 -5
  164. package/write-text/attached-text-writer.js +46 -48
  165. package/write-text/context-text.js +51 -58
  166. package/write-text/context-text3.js +69 -74
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  function getVectorField(u, v, width, height, vMin, vMax, uMin, uMax, flip) {
4
- var data = new Uint8ClampedArray(width * height * 4);
5
- for (var row = 0; row < height; row++) {
6
- for (var col = 0; col < width; col++) {
7
- var k = flip ? ((height - row - 1) * width + col) : row * width + col;
8
- var idx = (width * row + col) << 2; // Multiply by 4 for RGBA
4
+ const data = new Uint8ClampedArray(width * height * 4);
5
+ for (let row = 0; row < height; row++) {
6
+ for (let col = 0; col < width; col++) {
7
+ let k = flip ? ((height - row - 1) * width + col) : row * width + col;
8
+ let idx = (width * row + col) << 2; // Multiply by 4 for RGBA
9
9
  if (u[k] === null || v[k] === null || isNaN(u[k]) || !isFinite(u[k]) || isNaN(v[k]) || !isFinite(v[k])) {
10
10
  data[idx] = 0; // R
11
11
  data[idx + 1] = 0; // G
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AttachedTextWriter = void 0;
4
- var webglobe_1 = require("@pirireis/webglobe");
5
- var typecheck_1 = require("../util/check/typecheck");
4
+ const webglobe_1 = require("@pirireis/webglobe");
5
+ const typecheck_1 = require("../util/check/typecheck");
6
6
  /**
7
7
  * Light wight version of context text writer.
8
8
  * The parameters by text are calculated on user side and inserted as items. (ContextTextWriter3 constructs text data from items)
@@ -14,26 +14,25 @@ var typecheck_1 = require("../util/check/typecheck");
14
14
  * With AttachedTextWriter the glue is created by user.
15
15
  * I observed that the users generally uses a wrapper around the plugin logic anyway. This wrapper can be used as the glue for plugin and attacked writer.
16
16
  */
17
- var AttachedTextWriter = /** @class */ (function () {
18
- function AttachedTextWriter(globe, _a) {
19
- var _b = _a === void 0 ? {} : _a, _c = _b.style, style = _c === void 0 ? {
20
- textFont: {
21
- name: 'Arial',
22
- textColor: '#FFFFFF', // beyaz
23
- hollowColor: '#000000', // siyah
24
- size: 12, // piksel
25
- hollow: true,
26
- bold: true,
27
- italic: false,
28
- },
29
- opacity: 1.0,
30
- zMode: webglobe_1.CSZMode.Z_GROUND_PERVERTEX,
31
- } : _c, _d = _b.doDraw, doDraw = _d === void 0 ? true : _d, _e = _b.angleOnSphere, angleOnSphere = _e === void 0 ? false : _e, _f = _b.zoomLevelAdaptor, zoomLevelAdaptor = _f === void 0 ? function (zoomLevel) { return function (item) {
32
- return {
33
- opacityMultiplier: 1,
34
- sizeMultiplier: 1
35
- };
36
- }; } : _f;
17
+ class AttachedTextWriter {
18
+ constructor(globe, { style = {
19
+ textFont: {
20
+ name: 'Arial',
21
+ textColor: '#FFFFFF', // beyaz
22
+ hollowColor: '#000000', // siyah
23
+ size: 12, // piksel
24
+ hollow: true,
25
+ bold: true,
26
+ italic: false,
27
+ },
28
+ opacity: 1.0,
29
+ zMode: webglobe_1.CSZMode.Z_GROUND_PERVERTEX,
30
+ }, doDraw = true, angleOnSphere = false, zoomLevelAdaptor = (zoomLevel) => (item) => {
31
+ return {
32
+ opacityMultiplier: 1,
33
+ sizeMultiplier: 1
34
+ };
35
+ }, } = {}) {
37
36
  this.globe = globe;
38
37
  this._itemMap = new Map();
39
38
  this.doDraw = doDraw;
@@ -41,53 +40,52 @@ var AttachedTextWriter = /** @class */ (function () {
41
40
  this.zoomLevelAdaptor = zoomLevelAdaptor;
42
41
  this.setStyle(style);
43
42
  }
44
- AttachedTextWriter.prototype.setOpacity = function (opacity) {
43
+ setOpacity(opacity) {
45
44
  (0, typecheck_1.opacityCheck)(opacity);
46
45
  this._style.opacity = opacity;
47
46
  this.globe.DrawRender();
48
- };
49
- AttachedTextWriter.prototype.setStyle = function (style) {
47
+ }
48
+ setStyle(style) {
50
49
  (0, typecheck_1.isTextFont)(style.textFont);
51
50
  this._style = style;
52
51
  this.globe.DrawRender();
53
- };
52
+ }
54
53
  /**
55
54
  *
56
55
  * @param {{text, long, lat, z = 0, xOffset = 0, yOffset = 0, isAngleOn = false, Angle = 0 }} item
57
56
  * @returns
58
57
  */
59
- AttachedTextWriter.prototype.insertItem = function (item) {
60
- var key = this.keyAdaptor ? this.keyAdaptor(item) : item;
58
+ insertItem(item) {
59
+ const key = this.keyAdaptor ? this.keyAdaptor(item) : item;
61
60
  this._itemMap.set(key, item);
62
61
  this.globe.DrawRender();
63
- };
62
+ }
64
63
  // TODO: use item style
65
- AttachedTextWriter.prototype.draw = function () {
64
+ draw() {
66
65
  if (!this.doDraw) {
67
66
  return;
68
67
  }
69
- var _a = this, globe = _a.globe, _itemMap = _a._itemMap, _style = _a._style;
70
- var zMode = _style.zMode, textFont = _style.textFont, opacity = _style.opacity;
71
- var is3D = globe.api_GetCurrentGeometry() === 0;
72
- var angleIsOn = is3D ? true : this.angleOnSphere;
73
- var zoomLevel = globe.api_GetCurrentLODWithDecimal();
74
- var zoomAdaptor = this.zoomLevelAdaptor(zoomLevel);
75
- var theSize = textFont.size;
76
- _itemMap.forEach(function (item, key) {
77
- var text = item.text, long = item.long, lat = item.lat, _a = item.z, z = _a === void 0 ? 0 : _a, _b = item.xOffset, xOffset = _b === void 0 ? 0 : _b, _c = item.yOffset, yOffset = _c === void 0 ? 0 : _c, _d = item.isAngleOn, isAngleOn = _d === void 0 ? false : _d, _e = item.angle, angle = _e === void 0 ? 0 : _e;
78
- var _f = globe.api_GetScreenPointFromGeo({
79
- long: long,
80
- lat: lat,
81
- z: z
82
- }, zMode), x = _f.x, y = _f.y;
83
- var _g = zoomAdaptor(item), opacityMultiplier = _g.opacityMultiplier, sizeMultiplier = _g.sizeMultiplier;
68
+ const { globe, _itemMap, _style } = this;
69
+ const { zMode, textFont, opacity } = _style;
70
+ const is3D = globe.api_GetCurrentGeometry() === 0;
71
+ const angleIsOn = is3D ? true : this.angleOnSphere;
72
+ const zoomLevel = globe.api_GetCurrentLODWithDecimal();
73
+ const zoomAdaptor = this.zoomLevelAdaptor(zoomLevel);
74
+ const theSize = textFont.size;
75
+ _itemMap.forEach((item, key) => {
76
+ const { text, long, lat, z = 0, xOffset = 0, yOffset = 0, isAngleOn = false, angle = 0 } = item;
77
+ const { x, y } = globe.api_GetScreenPointFromGeo({
78
+ long,
79
+ lat,
80
+ z
81
+ }, zMode);
82
+ const { opacityMultiplier, sizeMultiplier } = zoomAdaptor(item);
84
83
  textFont.size = sizeMultiplier * theSize;
85
84
  if (x !== null && y !== null) {
86
85
  globe.api_DrawContextText(text, textFont, opacityMultiplier * opacity, { x: x + xOffset, y: y - yOffset }, (isAngleOn && angleIsOn), angle);
87
86
  }
88
87
  });
89
88
  textFont.size = theSize;
90
- };
91
- return AttachedTextWriter;
92
- }());
89
+ }
90
+ }
93
91
  exports.AttachedTextWriter = AttachedTextWriter;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ContextTextWriter = void 0;
4
- var webglobe_1 = require("@pirireis/webglobe");
5
- var defaultStyle = {
4
+ const webglobe_1 = require("@pirireis/webglobe");
5
+ const defaultStyle = {
6
6
  textFont: {
7
7
  name: 'Arial',
8
8
  textColor: '#FFFFFF', // beyaz
@@ -15,91 +15,84 @@ var defaultStyle = {
15
15
  opacity: 1.0,
16
16
  zMode: webglobe_1.CSZMode.Z_GROUND_PERVERTEX,
17
17
  };
18
- var ContextTextWriter = /** @class */ (function () {
19
- function ContextTextWriter(globe, _a) {
20
- var _b = _a === void 0 ? {} : _a, _c = _b.style, style = _c === void 0 ? null : _c, _d = _b.doDraw, doDraw = _d === void 0 ? true : _d;
18
+ class ContextTextWriter {
19
+ constructor(globe, { style = null, doDraw = true } = {}) {
21
20
  this.globe = globe;
22
21
  this.itemMap = new Map();
23
22
  this.style = style || defaultStyle;
24
23
  this.doDraw = doDraw;
25
24
  }
26
- ContextTextWriter.prototype.setDoDraw = function (bool) {
25
+ setDoDraw(bool) {
27
26
  this.doDraw = bool;
28
- };
29
- ContextTextWriter.prototype.setStyle = function (style) {
27
+ }
28
+ setStyle(style) {
30
29
  this.style = style;
31
- };
32
- ContextTextWriter.prototype.setOpacity = function (opacity) {
30
+ }
31
+ setOpacity(opacity) {
33
32
  this.style.opacity = opacity;
34
- };
33
+ }
35
34
  // Clean this ask Front dev
36
- ContextTextWriter.prototype.doDraw = function (boolean) {
35
+ doDraw(boolean) {
37
36
  this.doDraw = boolean;
38
- };
39
- ContextTextWriter.prototype.draw = function () {
37
+ }
38
+ draw() {
40
39
  if (!this.doDraw)
41
40
  return;
42
- var _a = this, globe = _a.globe, style = _a.style, itemMap = _a.itemMap;
43
- var textFont = style.textFont, opacity_ = style.opacity;
44
- for (var _i = 0, itemMap_1 = itemMap; _i < itemMap_1.length; _i++) {
45
- var _b = itemMap_1[_i], key = _b[0], _c = _b[1], lat = _c.lat, long = _c.long, text = _c.text, _d = _c.opacity, opacity = _d === void 0 ? null : _d;
46
- var _e = globe.api_GetScreenPointFromGeo({
41
+ const { globe, style, itemMap } = this;
42
+ const { textFont, opacity: opacity_ } = style;
43
+ for (const [key, { lat, long, text, opacity = null }] of itemMap) {
44
+ const { x, y } = globe.api_GetScreenPointFromGeo({
47
45
  long: long,
48
46
  lat: lat,
49
47
  z: 0,
50
- }, style.zMode === webglobe_1.CSZMode.Z_MSL), x = _e.x, y = _e.y;
51
- var o = opacity === null ? opacity_ : opacity * opacity_;
48
+ }, style.zMode === webglobe_1.CSZMode.Z_MSL);
49
+ const o = opacity === null ? opacity_ : opacity * opacity_;
52
50
  if (x !== null && y !== null)
53
- globe.api_DrawContextTextMultiLine(text, textFont, o, { x: x, y: y });
51
+ globe.api_DrawContextTextMultiLine(text, textFont, o, { x, y });
54
52
  }
55
- };
56
- ContextTextWriter.prototype.insertText = function (key, lat, long, text) {
57
- this.itemMap.set(key, { lat: lat, long: long, text: text });
58
- };
59
- ContextTextWriter.prototype.updateOpacityOfItem = function (key, opacity) {
53
+ }
54
+ insertText(key, lat, long, text) {
55
+ this.itemMap.set(key, { lat, long, text });
56
+ }
57
+ updateOpacityOfItem(key, opacity) {
60
58
  this.itemMap.get(key).opacity = opacity;
61
- };
62
- ContextTextWriter.prototype.updateOpacityBulk = function (items, keyAdaptor, valueAdaptor) {
63
- for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {
64
- var item = items_1[_i];
65
- var key = keyAdaptor(item);
66
- var opacity = valueAdaptor(item);
67
- var data = this.itemMap.get(key);
59
+ }
60
+ updateOpacityBulk(items, keyAdaptor, valueAdaptor) {
61
+ for (const item of items) {
62
+ const key = keyAdaptor(item);
63
+ const opacity = valueAdaptor(item);
64
+ const data = this.itemMap.get(key);
68
65
  data.opacity = opacity;
69
66
  }
70
- };
71
- ContextTextWriter.prototype.updateText = function (key, text) {
72
- var item = this.itemMap.get(key);
67
+ }
68
+ updateText(key, text) {
69
+ const item = this.itemMap.get(key);
73
70
  item.text = text;
74
- };
75
- ContextTextWriter.prototype.updateCoords = function (key, lat, long) {
76
- var item = this.itemMap.get(key);
71
+ }
72
+ updateCoords(key, lat, long) {
73
+ const item = this.itemMap.get(key);
77
74
  item.lat = lat;
78
75
  item.long = long;
79
- };
80
- ContextTextWriter.prototype.insertTextBulk = function (items) {
81
- for (var _i = 0, items_2 = items; _i < items_2.length; _i++) {
82
- var item = items_2[_i];
76
+ }
77
+ insertTextBulk(items) {
78
+ for (const item of items) {
83
79
  this.itemMap.set(item.key, item);
84
80
  }
85
- };
86
- ContextTextWriter.prototype.updateTextCoordsBulk = function (items) {
87
- for (var _i = 0, items_3 = items; _i < items_3.length; _i++) {
88
- var _a = items_3[_i], key = _a.key, lat = _a.lat, long = _a.long;
89
- var item = this.itemMap.get(key);
81
+ }
82
+ updateTextCoordsBulk(items) {
83
+ for (const { key, lat, long } of items) {
84
+ const item = this.itemMap.get(key);
90
85
  item.lat = lat;
91
86
  item.long = long;
92
87
  }
93
- };
94
- ContextTextWriter.prototype.deleteTextBulk = function (keys) {
95
- for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
96
- var key = keys_1[_i];
88
+ }
89
+ deleteTextBulk(keys) {
90
+ for (const key of keys) {
97
91
  this.itemMap.delete(key);
98
92
  }
99
- };
100
- ContextTextWriter.prototype.clear = function () {
93
+ }
94
+ clear() {
101
95
  this.itemMap.clear();
102
- };
103
- return ContextTextWriter;
104
- }());
96
+ }
97
+ }
105
98
  exports.ContextTextWriter = ContextTextWriter;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ContextTextWriter3 = void 0;
4
- var webglobe_1 = require("@pirireis/webglobe");
5
- var typecheck_1 = require("../util/check/typecheck");
4
+ const webglobe_1 = require("@pirireis/webglobe");
5
+ const typecheck_1 = require("../util/check/typecheck");
6
6
  /**
7
7
  * TODOs:
8
8
  * 1) update all if initials change (propably need a context and a callback to iterate over zPayload)
@@ -11,26 +11,25 @@ var typecheck_1 = require("../util/check/typecheck");
11
11
  *
12
12
  * TODO: key check and raise error if doesnt exist
13
13
  */
14
- var ContextTextWriter3 = /** @class */ (function () {
15
- function ContextTextWriter3(globe, _a) {
16
- var _b = _a === void 0 ? {} : _a, _c = _b.style, style = _c === void 0 ? {
17
- textFont: {
18
- name: 'Arial',
19
- textColor: '#FFFFFF', // beyaz
20
- hollowColor: '#000000', // siyah
21
- size: 12, // piksel
22
- hollow: true,
23
- bold: true,
24
- italic: false,
25
- },
26
- opacity: 1.0,
27
- zMode: webglobe_1.CSZMode.Z_GROUND_PERVERTEX,
28
- } : _c, _d = _b.xOffset, xOffset = _d === void 0 ? 0 : _d, _e = _b.yOffset, yOffset = _e === void 0 ? 0 : _e, _f = _b.doDraw, doDraw = _f === void 0 ? true : _f, _g = _b.textAdaptor, textAdaptor = _g === void 0 ? null : _g, _h = _b.coordinatesAdaptor, coordinatesAdaptor = _h === void 0 ? null : _h, _j = _b.keyAdaptor, keyAdaptor = _j === void 0 ? null : _j, _k = _b.opacityAdaptor, opacityAdaptor = _k === void 0 ? null : _k, _l = _b.angleAdaptor, angleAdaptor = _l === void 0 ? null : _l, _m = _b.angleOnSphere, angleOnSphere = _m === void 0 ? false : _m, _o = _b.positionAdaptor, positionAdaptor = _o === void 0 ? function (item, i, container, properties) { return "left"; } : _o, _p = _b.zoomLevelAdaptor, zoomLevelAdaptor = _p === void 0 ? function (zoomLevel) { return function (item) {
29
- return {
30
- opacityMultiplier: 1,
31
- sizeMultiplier: 1
32
- };
33
- }; } : _p;
14
+ class ContextTextWriter3 {
15
+ constructor(globe, { style = {
16
+ textFont: {
17
+ name: 'Arial',
18
+ textColor: '#FFFFFF', // beyaz
19
+ hollowColor: '#000000', // siyah
20
+ size: 12, // piksel
21
+ hollow: true,
22
+ bold: true,
23
+ italic: false,
24
+ },
25
+ opacity: 1.0,
26
+ zMode: webglobe_1.CSZMode.Z_GROUND_PERVERTEX,
27
+ }, xOffset = 0, yOffset = 0, doDraw = true, textAdaptor = null, coordinatesAdaptor = null, keyAdaptor = null, opacityAdaptor = null, angleAdaptor = null, angleOnSphere = false, positionAdaptor = (item, i, container, properties) => "left", zoomLevelAdaptor = (zoomLevel) => (item) => {
28
+ return {
29
+ opacityMultiplier: 1,
30
+ sizeMultiplier: 1
31
+ };
32
+ } } = {}) {
34
33
  this.globe = globe;
35
34
  this.itemMap = new Map();
36
35
  this.setStyle(style);
@@ -41,20 +40,20 @@ var ContextTextWriter3 = /** @class */ (function () {
41
40
  this.keyAdaptor = keyAdaptor;
42
41
  this.zoomLevelAdaptor = zoomLevelAdaptor;
43
42
  this.positionAdaptor = positionAdaptor;
44
- this.opacityAdaptor = opacityAdaptor ? opacityAdaptor : function () { return 1; };
43
+ this.opacityAdaptor = opacityAdaptor ? opacityAdaptor : () => 1;
45
44
  this.angleOnSphere = angleOnSphere;
46
45
  if (angleAdaptor) {
47
46
  this.angleAdaptor = angleAdaptor;
48
47
  this.angleAdaptorIsOn = true;
49
48
  }
50
49
  else {
51
- this.angleAdaptor = function () { return null; };
50
+ this.angleAdaptor = () => null;
52
51
  this.angleAdaptorIsOn = false;
53
52
  }
54
53
  this.xOffset = xOffset;
55
54
  this.yOffset = yOffset;
56
55
  }
57
- ContextTextWriter3.prototype._checkParameterTypes = function (textAdaptor, coordinatesAdaptor, keyAdaptor, opacityAdaptor, angleAdaptor, xOffset, yOffset) {
56
+ _checkParameterTypes(textAdaptor, coordinatesAdaptor, keyAdaptor, opacityAdaptor, angleAdaptor, xOffset, yOffset) {
58
57
  if (textAdaptor !== null)
59
58
  if (!(textAdaptor instanceof Function))
60
59
  throw new Error("textAdaptor is not an instance of a Function");
@@ -74,87 +73,83 @@ var ContextTextWriter3 = /** @class */ (function () {
74
73
  throw new Error("xOffset type is not a number");
75
74
  if (typeof yOffset !== "number")
76
75
  throw new Error("yOffset type is not a number");
77
- };
78
- ContextTextWriter3.prototype.setKeyAdaptor = function (adaptor) {
76
+ }
77
+ setKeyAdaptor(adaptor) {
79
78
  this.keyAdaptor = adaptor;
80
- };
81
- ContextTextWriter3.prototype.setDoDraw = function (bool) {
79
+ }
80
+ setDoDraw(bool) {
82
81
  this.doDraw = bool;
83
82
  this.globe.DrawRender();
84
- };
85
- ContextTextWriter3.prototype.setStyle = function (style) {
83
+ }
84
+ setStyle(style) {
86
85
  (0, typecheck_1.isTextFont)(style.textFont);
87
86
  (0, typecheck_1.opacityCheck)(style.opacity); //TODO: use shallow copy
88
87
  this.style = style;
89
88
  this.globe.DrawRender();
90
- };
91
- ContextTextWriter3.prototype.setOpacity = function (opacity) {
89
+ }
90
+ setOpacity(opacity) {
92
91
  this.style.opacity = opacity;
93
92
  this.globe.DrawRender();
94
- };
95
- ContextTextWriter3.prototype.draw = function () {
93
+ }
94
+ draw() {
96
95
  if (!this.doDraw)
97
96
  return;
98
- var _a = this, globe = _a.globe, style = _a.style, itemMap = _a.itemMap, xOffset = _a.xOffset, yOffset = _a.yOffset;
99
- var textFont = style.textFont, opacity_ = style.opacity;
100
- var textSize = textFont.size;
101
- var is3D = globe.api_GetCurrentGeometry() === 0;
102
- var angleIsOn = is3D ? (this.angleAdaptorIsOn && this.angleOnSphere) : (this.angleAdaptorIsOn);
103
- var zoomLevel = globe.api_GetCurrentLODWithDecimal();
104
- var zoomAdaptor = this.zoomLevelAdaptor(zoomLevel);
105
- for (var _i = 0, _b = itemMap.values(); _i < _b.length; _i++) {
106
- var item = _b[_i];
107
- var lat = item.lat, long = item.long, text = item.text, _c = item.opacity, opacity = _c === void 0 ? null : _c, _d = item.angle, angle = _d === void 0 ? null : _d, zPayload = item.zPayload, position = item.position;
108
- var _e = globe.api_GetScreenPointFromGeo({
97
+ const { globe, style, itemMap, xOffset, yOffset } = this;
98
+ const { textFont, opacity: opacity_ } = style;
99
+ const textSize = textFont.size;
100
+ const is3D = globe.api_GetCurrentGeometry() === 0;
101
+ const angleIsOn = is3D ? (this.angleAdaptorIsOn && this.angleOnSphere) : (this.angleAdaptorIsOn);
102
+ const zoomLevel = globe.api_GetCurrentLODWithDecimal();
103
+ const zoomAdaptor = this.zoomLevelAdaptor(zoomLevel);
104
+ for (const item of itemMap.values()) {
105
+ const { lat, long, text, opacity = null, angle = null, zPayload, position } = item;
106
+ const { x, y } = globe.api_GetScreenPointFromGeo({
109
107
  long: long,
110
108
  lat: lat,
111
109
  z: 0,
112
- }, style.zMode === webglobe_1.CSZMode.Z_MSL), x = _e.x, y = _e.y;
113
- var _f = zoomAdaptor(zPayload), opacityMultiplier = _f.opacityMultiplier, sizeMultiplier = _f.sizeMultiplier;
114
- var o = (opacity === null ? opacity_ : opacity * opacity_) * opacityMultiplier;
110
+ }, style.zMode === webglobe_1.CSZMode.Z_MSL);
111
+ const { opacityMultiplier, sizeMultiplier } = zoomAdaptor(zPayload);
112
+ const o = (opacity === null ? opacity_ : opacity * opacity_) * opacityMultiplier;
115
113
  textFont.size = sizeMultiplier * textSize;
116
114
  textFont.position = position;
117
115
  if (x !== null && y !== null)
118
116
  globe.api_DrawContextTextMultiLine(text, textFont, o, { x: x + xOffset, y: y - yOffset }, angleIsOn, angle);
119
117
  }
120
118
  textFont.size = textSize;
121
- };
122
- ContextTextWriter3.prototype.insertTextBulk = function (container, properties) {
123
- var _this = this;
124
- container.forEach(function (v, i, c) {
125
- _this.insertText(v, i, c, properties);
119
+ }
120
+ insertTextBulk(container, properties) {
121
+ container.forEach((v, i, c) => {
122
+ this.insertText(v, i, c, properties);
126
123
  });
127
- };
128
- ContextTextWriter3.prototype.deleteTextBulk = function (keys) {
129
- for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
130
- var key = keys_1[_i];
124
+ }
125
+ deleteTextBulk(keys) {
126
+ for (const key of keys) {
131
127
  this.itemMap.delete(key);
132
128
  }
133
- };
134
- ContextTextWriter3.prototype.insertText = function (item, id, container, properties) {
135
- var key = this.keyAdaptor(item, id, container, properties);
136
- var coords = this.coordinatesAdaptor(item, id, container, properties);
129
+ }
130
+ insertText(item, id, container, properties) {
131
+ const key = this.keyAdaptor(item, id, container, properties);
132
+ const coords = this.coordinatesAdaptor(item, id, container, properties);
137
133
  if (coords == null) {
138
134
  this.itemMap.delete(key);
139
135
  return;
140
136
  }
141
- var text = this.textAdaptor(item, id, container, properties);
137
+ const text = this.textAdaptor(item, id, container, properties);
142
138
  if (text == null) {
143
139
  this.itemMap.delete(key);
144
140
  return;
145
141
  }
146
142
  ;
147
- var opacity = this.opacityAdaptor(item, id, container, properties);
148
- var angle = this.angleAdaptor(item, id, container, properties);
149
- var position = this.positionAdaptor(item, id, container, properties);
150
- this.itemMap.set(key, { long: coords.long, lat: coords.lat, text: text, opacity: opacity, angle: angle, zPayload: item, position: position });
151
- };
152
- ContextTextWriter3.prototype.clear = function () {
143
+ const opacity = this.opacityAdaptor(item, id, container, properties);
144
+ const angle = this.angleAdaptor(item, id, container, properties);
145
+ const position = this.positionAdaptor(item, id, container, properties);
146
+ this.itemMap.set(key, { long: coords.long, lat: coords.lat, text, opacity, angle, zPayload: item, position });
147
+ }
148
+ clear() {
153
149
  this.itemMap.clear();
154
- };
155
- ContextTextWriter3.prototype.free = function () {
150
+ }
151
+ free() {
156
152
  this.itemMap = null;
157
- };
158
- return ContextTextWriter3;
159
- }());
153
+ }
154
+ }
160
155
  exports.ContextTextWriter3 = ContextTextWriter3;