@pirireis/webglobeplugins 0.9.8 → 0.9.9

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 (213) hide show
  1. package/index.js +58 -15
  2. package/package.json +1 -1
  3. package/dist/Math/angle-calculation.js +0 -15
  4. package/dist/Math/arc.js +0 -65
  5. package/dist/Math/bounds/line-bbox.js +0 -188
  6. package/dist/Math/constants.js +0 -9
  7. package/dist/Math/frustum/camera.js +0 -24
  8. package/dist/Math/frustum/from-globeinfo.js +0 -48
  9. package/dist/Math/frustum/types.js +0 -2
  10. package/dist/Math/globe-util/horizon-plane.js +0 -112
  11. package/dist/Math/index.js +0 -1
  12. package/dist/Math/juction/arc-plane.js +0 -83
  13. package/dist/Math/juction/line-sphere.js +0 -25
  14. package/dist/Math/juction/plane-plane.js +0 -58
  15. package/dist/Math/line.js +0 -56
  16. package/dist/Math/matrix4.js +0 -1
  17. package/dist/Math/methods.js +0 -201
  18. package/dist/Math/plane.js +0 -60
  19. package/dist/Math/quaternion.js +0 -104
  20. package/dist/Math/types.js +0 -2
  21. package/dist/Math/utils.js +0 -4
  22. package/dist/Math/vec3.js +0 -126
  23. package/dist/algorithms/search-binary.js +0 -19
  24. package/dist/altitude-locator/adaptors.js +0 -1
  25. package/dist/altitude-locator/draw-subset-obj.js +0 -18
  26. package/dist/altitude-locator/keymethod.js +0 -1
  27. package/dist/altitude-locator/plugin.js +0 -341
  28. package/dist/altitude-locator/types.js +0 -23
  29. package/dist/arrowfield/adaptor.js +0 -14
  30. package/dist/arrowfield/index.js +0 -10
  31. package/dist/arrowfield/plugin.js +0 -86
  32. package/dist/bearing-line/index.js +0 -8
  33. package/dist/bearing-line/plugin.js +0 -449
  34. package/dist/circle-line-chain/chain-list-map.js +0 -205
  35. package/dist/circle-line-chain/init.js +0 -1
  36. package/dist/circle-line-chain/plugin.js +0 -424
  37. package/dist/circle-line-chain/util.js +0 -5
  38. package/dist/compass-rose/compass-rose-padding-flat.js +0 -225
  39. package/dist/compass-rose/compass-text-writer.js +0 -153
  40. package/dist/compass-rose/index.js +0 -7
  41. package/dist/compassrose/compassrose.js +0 -296
  42. package/dist/compassrose/index.js +0 -8
  43. package/dist/globe-types.js +0 -1
  44. package/dist/heatwave/index.js +0 -10
  45. package/dist/heatwave/isobar/objectarraylabels.js +0 -202
  46. package/dist/heatwave/isobar/plugin.js +0 -343
  47. package/dist/heatwave/isobar/quadtreecontours.js +0 -300
  48. package/dist/heatwave/plugins/heatwaveglobeshell.js +0 -206
  49. package/dist/index.js +0 -58
  50. package/dist/jest.config.js +0 -7
  51. package/dist/partialrings/buffer-manager.js +0 -81
  52. package/dist/partialrings/index.js +0 -41
  53. package/dist/partialrings/plugin.js +0 -135
  54. package/dist/partialrings/program.js +0 -286
  55. package/dist/pin/pin-object-array.js +0 -305
  56. package/dist/pin/pin-point-totem.js +0 -60
  57. package/dist/point-heat-map/adaptors/timetracksplugin-format-to-this.js +0 -66
  58. package/dist/point-heat-map/index.js +0 -1
  59. package/dist/point-heat-map/plugin-webworker.js +0 -126
  60. package/dist/point-heat-map/point-to-heat-map-flow.js +0 -127
  61. package/dist/point-tracks/key-methods.js +0 -5
  62. package/dist/point-tracks/plugin.js +0 -338
  63. package/dist/programs/arrowfield/index.js +0 -7
  64. package/dist/programs/arrowfield/logic.js +0 -257
  65. package/dist/programs/arrowfield/object.js +0 -66
  66. package/dist/programs/data2legend/density-to-legend.js +0 -101
  67. package/dist/programs/data2legend/point-to-density-texture.js +0 -100
  68. package/dist/programs/float2legendwithratio/index.js +0 -8
  69. package/dist/programs/float2legendwithratio/logic.js +0 -171
  70. package/dist/programs/float2legendwithratio/object.js +0 -110
  71. package/dist/programs/globe-util/is-globe-moved.js +0 -21
  72. package/dist/programs/globeshell/index.js +0 -8
  73. package/dist/programs/globeshell/noise/noises.js +0 -1
  74. package/dist/programs/globeshell/wiggle/index.js +0 -8
  75. package/dist/programs/globeshell/wiggle/logic.js +0 -345
  76. package/dist/programs/globeshell/wiggle/object.js +0 -72
  77. package/dist/programs/helpers/blender/index.js +0 -1
  78. package/dist/programs/helpers/blender/program.js +0 -79
  79. package/dist/programs/helpers/fadeaway/index.js +0 -7
  80. package/dist/programs/helpers/fadeaway/logic.js +0 -72
  81. package/dist/programs/helpers/fadeaway/object.js +0 -20
  82. package/dist/programs/helpers/index.js +0 -8
  83. package/dist/programs/index.js +0 -58
  84. package/dist/programs/interface.js +0 -1
  85. package/dist/programs/line-on-globe/angled-line.js +0 -176
  86. package/dist/programs/line-on-globe/circle-accurate-3d.js +0 -141
  87. package/dist/programs/line-on-globe/circle-accurate-flat.js +0 -216
  88. package/dist/programs/line-on-globe/circle-accurate.js +0 -178
  89. package/dist/programs/line-on-globe/circle.js +0 -167
  90. package/dist/programs/line-on-globe/degree-padding-around-circle-3d.js +0 -159
  91. package/dist/programs/line-on-globe/index.js +0 -1
  92. package/dist/programs/line-on-globe/lines-color-instanced-flat.js +0 -136
  93. package/dist/programs/line-on-globe/linestrip.js +0 -171
  94. package/dist/programs/line-on-globe/naive-accurate-flexible.js +0 -195
  95. package/dist/programs/line-on-globe/to-the-surface.js +0 -111
  96. package/dist/programs/line-on-globe/util.js +0 -8
  97. package/dist/programs/picking/pickable-renderer.js +0 -188
  98. package/dist/programs/point-on-globe/element-globe-surface-glow.js +0 -142
  99. package/dist/programs/point-on-globe/element-point-glow.js +0 -153
  100. package/dist/programs/point-on-globe/square-pixel-point.js +0 -174
  101. package/dist/programs/programcache.js +0 -131
  102. package/dist/programs/rings/distancering/circleflatprogram.js +0 -156
  103. package/dist/programs/rings/distancering/circlepaddingfreeangleprogram.js +0 -369
  104. package/dist/programs/rings/distancering/circlepaddysharedbuffer.js +0 -357
  105. package/dist/programs/rings/distancering/index.js +0 -14
  106. package/dist/programs/rings/distancering/paddyflatprogram.js +0 -172
  107. package/dist/programs/rings/distancering/paddyflatprogram2d.js +0 -174
  108. package/dist/programs/rings/distancering/paddyflatprogram3d.js +0 -172
  109. package/dist/programs/rings/distancering/shader.js +0 -1
  110. package/dist/programs/rings/index.js +0 -17
  111. package/dist/programs/rings/partial-ring/piece-of-pie.js +0 -275
  112. package/dist/programs/totems/camerauniformblock.js +0 -160
  113. package/dist/programs/totems/canvas-webglobe-info.js +0 -110
  114. package/dist/programs/totems/gpu-selection-uniform-block.js +0 -108
  115. package/dist/programs/totems/index.js +0 -40
  116. package/dist/programs/two-d/pixel-circle.js +0 -1
  117. package/dist/programs/two-d/pixel-padding-for-compass.js +0 -162
  118. package/dist/programs/util.js +0 -17
  119. package/dist/programs/vectorfields/index.js +0 -23
  120. package/dist/programs/vectorfields/logics/drawrectangleparticles.js +0 -107
  121. package/dist/programs/vectorfields/logics/index.js +0 -12
  122. package/dist/programs/vectorfields/logics/pixelbased.js +0 -142
  123. package/dist/programs/vectorfields/logics/ubo.js +0 -63
  124. package/dist/programs/vectorfields/pingpongbuffermanager.js +0 -76
  125. package/dist/rangerings/enum.js +0 -5
  126. package/dist/rangerings/index.js +0 -15
  127. package/dist/rangerings/plugin.js +0 -560
  128. package/dist/rangerings/rangeringangletext.js +0 -329
  129. package/dist/rangerings/ring-account.js +0 -117
  130. package/dist/shaders/fragment-toy/firework.js +0 -58
  131. package/dist/shaders/fragment-toy/singularity.js +0 -59
  132. package/dist/shape-on-terrain/arc/naive/plugin.js +0 -252
  133. package/dist/timetracks/adaptors-line-strip.js +0 -71
  134. package/dist/timetracks/adaptors.js +0 -122
  135. package/dist/timetracks/index.js +0 -19
  136. package/dist/timetracks/plugin-line-strip.js +0 -250
  137. package/dist/timetracks/plugin.js +0 -258
  138. package/dist/timetracks/program-line-strip.js +0 -611
  139. package/dist/timetracks/program.js +0 -772
  140. package/dist/timetracks/programpoint-line-strip.js +0 -154
  141. package/dist/timetracks/programpoint.js +0 -147
  142. package/dist/types.js +0 -15
  143. package/dist/util/account/bufferoffsetmanager.js +0 -179
  144. package/dist/util/account/index.js +0 -23
  145. package/dist/util/account/single-attribute-buffer-management/buffer-manager.js +0 -108
  146. package/dist/util/account/single-attribute-buffer-management/buffer-orchestrator.js +0 -150
  147. package/dist/util/account/single-attribute-buffer-management/index.js +0 -9
  148. package/dist/util/account/single-attribute-buffer-management/object-store.js +0 -51
  149. package/dist/util/account/single-attribute-buffer-management/types.js +0 -2
  150. package/dist/util/account/util.js +0 -22
  151. package/dist/util/algorithms/index.js +0 -1
  152. package/dist/util/algorithms/search-binary.js +0 -28
  153. package/dist/util/check/get.js +0 -18
  154. package/dist/util/check/index.js +0 -1
  155. package/dist/util/check/typecheck.js +0 -49
  156. package/dist/util/geometry/index.js +0 -51
  157. package/dist/util/gl-util/buffer/attribute-loader.js +0 -69
  158. package/dist/util/gl-util/buffer/index.js +0 -6
  159. package/dist/util/gl-util/buffer/types.js +0 -1
  160. package/dist/util/gl-util/draw-options/methods.js +0 -38
  161. package/dist/util/gl-util/draw-options/types.js +0 -15
  162. package/dist/util/gl-util/uniform-block/manager.js +0 -156
  163. package/dist/util/gl-util/uniform-block/shader.js +0 -1
  164. package/dist/util/gl-util/uniform-block/types.js +0 -8
  165. package/dist/util/heatwavedatamanager/datamanager.js +0 -152
  166. package/dist/util/heatwavedatamanager/index.js +0 -10
  167. package/dist/util/heatwavedatamanager/pointcoordinatesdatacalculator.js +0 -122
  168. package/dist/util/heatwavedatamanager/pointcoordsmeta.js +0 -20
  169. package/dist/util/index.js +0 -57
  170. package/dist/util/interpolation/index.js +0 -1
  171. package/dist/util/interpolation/timetrack/index.js +0 -5
  172. package/dist/util/interpolation/timetrack/timetrack-interpolator.js +0 -79
  173. package/dist/util/interpolation/timetrack/web-worker-str.js +0 -183
  174. package/dist/util/interpolation/timetrack/web-worker.js +0 -48
  175. package/dist/util/jshelpers/data-filler.js +0 -20
  176. package/dist/util/jshelpers/equality.js +0 -20
  177. package/dist/util/jshelpers/index.js +0 -37
  178. package/dist/util/jshelpers/timefilters.js +0 -32
  179. package/dist/util/picking/fence.js +0 -46
  180. package/dist/util/picking/picker-displayer.js +0 -139
  181. package/dist/util/programs/draw-texture-on-canvas.js +0 -89
  182. package/dist/util/programs/index.js +0 -17
  183. package/dist/util/programs/shapesonglobe.js +0 -214
  184. package/dist/util/programs/supersampletotextures.js +0 -113
  185. package/dist/util/programs/texturetoglobe.js +0 -182
  186. package/dist/util/shaderfunctions/geometrytransformations.js +0 -340
  187. package/dist/util/shaderfunctions/index.js +0 -18
  188. package/dist/util/shaderfunctions/nodata.js +0 -11
  189. package/dist/util/shaderfunctions/noisefunctions.js +0 -43
  190. package/dist/util/surface-line-data/arc-bboxes.js +0 -25
  191. package/dist/util/surface-line-data/arcs-to-cuts.js +0 -50
  192. package/dist/util/surface-line-data/cut-arc.js +0 -1
  193. package/dist/util/surface-line-data/flow.js +0 -28
  194. package/dist/util/surface-line-data/rbush-manager.js +0 -1
  195. package/dist/util/surface-line-data/types.js +0 -1
  196. package/dist/util/surface-line-data/web-worker.js +0 -1
  197. package/dist/util/webglobe/gldefaultstates.js +0 -7
  198. package/dist/util/webglobe/index.js +0 -18
  199. package/dist/util/webglobe/rasteroverlay.js +0 -78
  200. package/dist/util/webglobjectbuilders.js +0 -388
  201. package/dist/util/webglobjectbuilders1.js +0 -237
  202. package/dist/waveparticles/adaptor.js +0 -17
  203. package/dist/waveparticles/index.js +0 -10
  204. package/dist/waveparticles/plugin.js +0 -266
  205. package/dist/wind/imagetovectorfieldandmagnitude.js +0 -35
  206. package/dist/wind/index.js +0 -14
  207. package/dist/wind/plugin.js +0 -926
  208. package/dist/wind/vectorfieldimage.js +0 -25
  209. package/dist/write-text/attached-text-writer.js +0 -91
  210. package/dist/write-text/context-text.js +0 -98
  211. package/dist/write-text/context-text3.js +0 -155
  212. package/dist/write-text/index.js +0 -5
  213. package/dist/write-text/writer-plugin.js +0 -8
@@ -1,424 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CircleLineChainPlugin = void 0;
4
- const naive_accurate_flexible_1 = require("../programs/line-on-globe/naive-accurate-flexible");
5
- const circle_accurate_flat_1 = require("../programs/line-on-globe/circle-accurate-flat");
6
- const circle_accurate_3d_1 = require("../programs/line-on-globe/circle-accurate-3d");
7
- const account_1 = require("../util/account");
8
- const chain_list_map_1 = require("./chain-list-map");
9
- const get_1 = require("../util/check/get");
10
- const util_1 = require("./util");
11
- const data_filler_1 = require("../util/jshelpers/data-filler");
12
- const context_text3_1 = require("../write-text/context-text3");
13
- const typecheck_1 = require("../util/check/typecheck");
14
- const attribute_loader_1 = require("../util/gl-util/buffer/attribute-loader");
15
- const index_1 = require("../util/geometry/index");
16
- /**
17
- * Insert info to chain list map (nodes and properties)
18
- *
19
- * ask chain list map for text data
20
- * ask chain list map for buffer data
21
- *
22
- *
23
- * addNode
24
- * insertBulk
25
- * deleteChain
26
- * deleteNodes
27
- * updateCoordinates()
28
- * updateChainProperties
29
- */
30
- /**
31
- *
32
- *
33
- * @typedef chain
34
- * @property {string} chainKey
35
- * @property {StyleProperties} chainProperties
36
- *
37
- * @typedef {Object} Node
38
- * @property {string} key
39
- * @property {number} long
40
- * @property {number} lat
41
- * @property {number} altitude
42
- * @property {StyleProperties} circleProperties
43
- *
44
- * @typedef {Object} Node
45
- * @property {string} key
46
- * @property {number} long
47
- * @property {number} lat
48
- *
49
- * @typedef StyleProperties
50
- * @property {Array<number>} rgba 0-1
51
- * @property { number} dashOpacity 0-1
52
- * @property { number} dashRatio 0-1
53
- * @property { number } circleDashAngle 0-360
54
- * @property { number} altitude
55
- *
56
- * //property {Array<Node>} nodes
57
- */
58
- const textWriterGetOrThrow = (0, get_1.mapGetOrThrow)("textWriterIDs is invalid");
59
- class CircleLineChainPlugin {
60
- /**
61
- *
62
- * @param {*} id
63
- * @param {Map<[key, ContextTextWriter3]} textWritersMap //import { ContextTextWriter3 } from "@pirireis/webglobeplugins/write-text/context-text3";
64
- */
65
- constructor(id, { drawCircleOn = true, textWritersMap = new Map(), textDataPreAdaptor = null, circleFlatEdgeCount = circle_accurate_flat_1.EDGE_COUNT - 2 } = {}) {
66
- this.id = id;
67
- this._checktextWritersMap(textWritersMap);
68
- this._textWritersMap = textWritersMap;
69
- this._textWritersMap.forEach((writer) => writer.setKeyAdaptor((v, i, c, properties) => v.__identity__));
70
- this._opacity = 1;
71
- this._chainListMap = new chain_list_map_1.ChainListMap(util_1.keyMethod);
72
- this.bufferOrchestrator = new account_1.BufferOrchestrator({ capacity: 10 });
73
- this._drawCircleOn = drawCircleOn;
74
- this._textDataPreAdaptor = textDataPreAdaptor;
75
- this._circleFlatEdgeCount = circleFlatEdgeCount + 2;
76
- }
77
- // init
78
- // API
79
- setDrawCircleOn(bool) {
80
- if (typeof bool !== 'boolean')
81
- throw new Error("setDrawCircleOn parameter must be a boolean");
82
- this._drawCircleOn = bool;
83
- this.globe.DrawRender();
84
- }
85
- // ---- updateBulk
86
- /**
87
- * @param {Array<chain>} data
88
- * @typedef chain
89
- * @property {string} chainKey
90
- * @property {Array<Node>} nodes
91
-
92
- */
93
- updateCoordinatesBulk(data, { textWriterIDs = [] } = {}) {
94
- // update implicit data structure
95
- // find keys to update.. (inserted data and the radius of "from")
96
- // updateBuffers
97
- // update text
98
- const chainKeys = [];
99
- for (const chain of data) {
100
- chainKeys.push(chain.chainKey);
101
- chain.nodes.forEach((node) => {
102
- this._chainListMap.updateCoordsinatesOfNode(node, chain.chainKey);
103
- });
104
- }
105
- this._reconstructChains(chainKeys);
106
- this._updateTexts(chainKeys, textWriterIDs);
107
- }
108
- /**
109
- * @param {*} chainKey
110
- * @param {Array<{nodeKey, circleProperties:Map[propertyName ,value], lineProperties:Map[propertyName ,value] }} propertyMap
111
- */
112
- updateNodesProperties(chainKey, nodesAndPropertyMap, { textWriterIDs = [] } = {}) {
113
- this._chainListMap.updateNodesProperties(chainKey, nodesAndPropertyMap);
114
- this._reconstructChains([chainKey]);
115
- this._updateTexts([chainKey], textWriterIDs);
116
- this.globe.DrawRender();
117
- }
118
- /**
119
- * @param {*} chainKey
120
- * @param {Map<propertyName ,value} propertyMap
121
- */
122
- updateChainProperties(chainKey, propertyMap, { textWriterIDs = [] } = {}) {
123
- this._chainListMap.updateChainProperties(chainKey, propertyMap);
124
- this._reconstructChains([chainKey]);
125
- if (textWriterIDs)
126
- this._updateTexts([chainKey], textWriterIDs);
127
- }
128
- updateNodeCoordinates(node, chainKey, { textWriterIDs = [] } = {}) {
129
- this._chainListMap.updateCoordsinatesOfNode(node, chainKey);
130
- if (textWriterIDs)
131
- this._updateTexts([chainKey], textWriterIDs);
132
- this._reconstructChains([chainKey]);
133
- this.globe.DrawRender();
134
- }
135
- /**
136
- *
137
-
138
- /**
139
- * @param {Array<string>} textWriterIDs | textWritersMap keys to be used for writing text.
140
- * @param {Array<string>} chainKeys | if empty, all texts will be updated
141
- */
142
- updateText(textWriterIDs = [], chainKeys = null) {
143
- if (chainKeys === null)
144
- chainKeys = this._chainListMap.getAllChainKeysIterator();
145
- this._updateTexts(chainKeys, textWriterIDs);
146
- this.globe.DrawRender();
147
- }
148
- // ---- insertBulk
149
- /**
150
- *
151
- * @param {Array<chain>} data
152
- */
153
- insertBulk(data, { textWriterIDs = [] } = {}) {
154
- // first insert everything to implicit structure,
155
- // then iterate over data again to update text
156
- // let _reconstractChainBufferData method interact with data and bufferOrchestrator.
157
- const chainKeysToConstruct = [];
158
- for (const { chainKey, chainProperties, nodes } of data) {
159
- this._chainListMap.setChain(chainKey, nodes);
160
- this._chainListMap.setChainProperties(chainKey, chainProperties);
161
- chainKeysToConstruct.push(chainKey);
162
- }
163
- this._reconstructChains(chainKeysToConstruct);
164
- if (textWriterIDs)
165
- this._updateTexts(chainKeysToConstruct, textWriterIDs);
166
- this.globe.DrawRender();
167
- }
168
- /**
169
- * @param {Node} node
170
- * @param {*} chainKey
171
- * @param {*} theNodeKeyFront | node key of the next node, null places to the last
172
- */
173
- addNode(node, chainKey, { theNodeKeyFront = null, textWriterIDs = [] } = {}) {
174
- this._chainListMap.addNode(node, chainKey, theNodeKeyFront);
175
- if (textWriterIDs)
176
- this._updateTexts([chainKey], textWriterIDs);
177
- this._reconstructChains([chainKey]);
178
- this.globe.DrawRender();
179
- }
180
- setOpacity(opacity) {
181
- (0, typecheck_1.opacityCheck)(opacity);
182
- this._textWritersMap.forEach((writer) => writer.setOpacity(opacity));
183
- this._opacity = opacity;
184
- this.globe.DrawRender();
185
- }
186
- getChain(chainKey) {
187
- this._chainListMap.getChain(chainKey);
188
- }
189
- /**
190
- *
191
- * @param {*} chainKeys
192
- */
193
- deleteChains(chainKeys) {
194
- const bufferKeys = [];
195
- for (const chainKey of chainKeys) {
196
- bufferKeys.push(...this._chainListMap.deleteChainAndReturnChainKeys(chainKey));
197
- }
198
- this._textWritersMap.forEach((writer) => writer.deleteTextBulk(bufferKeys));
199
- this._updateTexts(chainKeys, this._textWritersMap.keys());
200
- this.bufferOrchestrator.deleteBulk(bufferKeys, this.bufferManagersCompMap);
201
- this.globe.DrawRender();
202
- }
203
- /**
204
- *
205
- * @param {Array<{chainKey, nodeKeys:[]} keysAndNodes
206
- */
207
- deleteNodes(keysAndNodes, { textWriterIDs = [] } = {}) {
208
- const bufferKeys = [];
209
- const chainKeysToReconstuct = [];
210
- keysAndNodes.forEach(({ chainKey, nodeKeys }) => {
211
- bufferKeys.push(...this._chainListMap.deleteNodesBelongToAChain(chainKey, nodeKeys));
212
- chainKeysToReconstuct.push(chainKey);
213
- });
214
- this._textWritersMap.forEach((writer) => writer.deleteTextBulk(bufferKeys));
215
- this.bufferOrchestrator.deleteBulk(bufferKeys, this.bufferManagersCompMap);
216
- this._reconstructChains(chainKeysToReconstuct);
217
- this._updateTexts(chainKeysToReconstuct, textWriterIDs);
218
- this.globe.DrawRender();
219
- }
220
- init(globe, gl) {
221
- this.gl = gl;
222
- this.globe = globe;
223
- this._initOrchestrations();
224
- }
225
- // implicit
226
- _checktextWritersMap(textWritersMap) {
227
- if (!(textWritersMap instanceof Map))
228
- throw new Error("textWritersMap is not an instance of Map");
229
- textWritersMap.forEach((v) => {
230
- if (!(v instanceof context_text3_1.ContextTextWriter3))
231
- throw new Error("textWritersMap element is not an instance of ContextTextWriter3");
232
- });
233
- }
234
- _initOrchestrations() {
235
- const { gl, globe } = this;
236
- this.lineProgram = naive_accurate_flexible_1.LineOnGlobeCache.get(globe);
237
- this.circleProgram2d = circle_accurate_flat_1.CircleCache.get(globe);
238
- this.circle3DProgram = circle_accurate_3d_1.CircleCache.get(globe);
239
- const _circleFlatEdgeCount = this._circleFlatEdgeCount;
240
- {
241
- // createBuffers
242
- const bufferType = "DYNAMIC_DRAW";
243
- const initialCapacity = this.bufferOrchestrator.capacity;
244
- this.bufferManagersCompMap = new Map([
245
- ["centerCoords2d", {
246
- 'bufferManager': new account_1.BufferManager(gl, 2, { bufferType, initialCapacity }),
247
- 'adaptor': (item) => new Float32Array(globe.api_GetMercator2DPoint(item.long, item.lat)),
248
- }],
249
- ["centerCoords3d", {
250
- 'bufferManager': new account_1.BufferManager(gl, 3, { bufferType, initialCapacity }),
251
- 'adaptor': (item) => (0, index_1.sphereCoord)(item.long, item.lat, globe, item.altitude),
252
- }],
253
- ["targetCoords2d", {
254
- 'bufferManager': new account_1.BufferManager(gl, 2, { bufferType, initialCapacity }),
255
- 'adaptor': (item) => new Float32Array(globe.api_GetMercator2DPoint(item.targetLong, item.targetLat)),
256
- }],
257
- ["targetCoords3d", {
258
- 'bufferManager': new account_1.BufferManager(gl, 3, { bufferType, initialCapacity }),
259
- 'adaptor': (item) => (0, index_1.sphereCoord)(item.targetLong, item.targetLat, globe, item.altitude),
260
- }],
261
- ["rgba", {
262
- 'bufferManager': new account_1.BufferManager(gl, 4, { bufferType, initialCapacity }),
263
- 'adaptor': (item) => {
264
- var _a;
265
- if ((_a = item.lineProperties) === null || _a === void 0 ? void 0 : _a.rgba)
266
- return new Float32Array(item.lineProperties.rgba);
267
- return new Float32Array(item.chainProperties.rgba);
268
- }
269
- }],
270
- // ["bigRadius", {
271
- // 'bufferManager': new BufferManager(gl, 1, { bufferType, initialCapacity }),
272
- // 'adaptor': (item) => new Float32Array([item.bigRadius])
273
- // }],
274
- ["dashRatio", {
275
- 'bufferManager': new account_1.BufferManager(gl, 1, { bufferType, initialCapacity }),
276
- 'adaptor': (item) => new Float32Array([item.chainProperties.dashRatio])
277
- }],
278
- ["dashOpacity", {
279
- 'bufferManager': new account_1.BufferManager(gl, 1, { bufferType, initialCapacity }),
280
- 'adaptor': (item) => new Float32Array([item.chainProperties.dashOpacity])
281
- }],
282
- ["circleDashAngle", {
283
- 'bufferManager': new account_1.BufferManager(gl, 1, { bufferType, initialCapacity }),
284
- 'adaptor': (item) => {
285
- var _a;
286
- if ((_a = item.circleProperties) === null || _a === void 0 ? void 0 : _a.circleDashAngle)
287
- return new Float32Array([item.circleProperties.circleDashAngle / 360]);
288
- return new Float32Array([item.chainProperties.circleDashAngle / 360]);
289
- }
290
- }],
291
- ["rgbaCircle", {
292
- "bufferManager": new account_1.BufferManager(gl, 4, { bufferType, initialCapacity }),
293
- "adaptor": (item) => {
294
- var _a;
295
- if ((_a = item.circleProperties) === null || _a === void 0 ? void 0 : _a.rgba)
296
- return new Float32Array(item.circleProperties.rgba);
297
- return new Float32Array(item.chainProperties.rgba);
298
- }
299
- }],
300
- // Mercator buffers
301
- ["circleDashAngleMercator", {
302
- 'bufferManager': new account_1.BufferManager(gl, 1 * _circleFlatEdgeCount, { bufferType, initialCapacity }),
303
- 'adaptor': (item) => {
304
- var _a;
305
- if ((_a = item.circleProperties) === null || _a === void 0 ? void 0 : _a.circleDashAngle)
306
- return new Float32Array([item.circleProperties.circleDashAngle / 360]);
307
- return data_filler_1.populateFloat32Array.fillFloat32Array(_circleFlatEdgeCount, item.chainProperties.circleDashAngle / 360);
308
- }
309
- }],
310
- ["rgbaCircleMercator", {
311
- "bufferManager": new account_1.BufferManager(gl, 4 * _circleFlatEdgeCount, { bufferType, initialCapacity }),
312
- "adaptor": (item) => {
313
- var _a;
314
- if ((_a = item.circleProperties) === null || _a === void 0 ? void 0 : _a.rgba)
315
- return data_filler_1.populateFloat32Array.fillWithListData(_circleFlatEdgeCount, item.circleProperties.rgba);
316
- return data_filler_1.populateFloat32Array.fillWithListData(_circleFlatEdgeCount, item.chainProperties.rgba);
317
- }
318
- }],
319
- ["dashOpacityMercator", {
320
- 'bufferManager': new account_1.BufferManager(gl, 1 * _circleFlatEdgeCount, { bufferType, initialCapacity }),
321
- 'adaptor': (item) => data_filler_1.populateFloat32Array.fillFloat32Array(_circleFlatEdgeCount, item.chainProperties.dashOpacity)
322
- }],
323
- ["centerCoords2dMercator", {
324
- 'bufferManager': new account_1.BufferManager(gl, 2 * _circleFlatEdgeCount, { bufferType, initialCapacity }),
325
- 'adaptor': (item) => item.centerCoords2dflat,
326
- }],
327
- ]);
328
- const obj = (key) => (0, attribute_loader_1.createBufferAndReadInfo)(this.bufferManagersCompMap.get(key).bufferManager.buffer);
329
- this.lineVao = this.lineProgram.createVAO(...['centerCoords2d', 'centerCoords3d', 'targetCoords2d', 'targetCoords3d', 'dashRatio', 'dashOpacity', 'rgba'
330
- ].map(key => obj(key)));
331
- this.circleVao2d = this.circleProgram2d.createVAO(...["centerCoords2dMercator", "rgbaCircleMercator", "circleDashAngleMercator", "dashOpacityMercator"
332
- ].map(key => obj(key)));
333
- this.circle3DVao = this.circle3DProgram.createVAO(...["centerCoords3d", "targetCoords3d", "rgbaCircle", "circleDashAngle", "dashOpacity"
334
- ].map(key => obj(key)));
335
- }
336
- }
337
- _updateTexts(chainKeys, textWriterIDs) {
338
- if (textWriterIDs.length === 0)
339
- return;
340
- const textWriters = textWriterGetOrThrow(this._textWritersMap, textWriterIDs);
341
- chainKeys.forEach((chainKey) => {
342
- this._chainListMap.textUpdate(chainKey, textWriters, this._textDataPreAdaptor);
343
- });
344
- }
345
- _reconstructChains(chainKeys) {
346
- const { globe } = this;
347
- // const radiusM = radiusMethod(globe);
348
- const callback = (v, i, array, chainProperties) => {
349
- var _a, _b;
350
- if (i === array.length - 1)
351
- return null;
352
- const centerCoords2dflat = (0, circle_accurate_flat_1.centerCoords2dflatDataCreator)(globe, v.long, v.lat, array[i + 1].long, array[i + 1].lat, { edgeCount: this._circleFlatEdgeCount });
353
- const altitude = ((_b = (_a = v.altitude) !== null && _a !== void 0 ? _a : chainProperties.altitude) !== null && _b !== void 0 ? _b : 0) / 1000;
354
- return {
355
- chainProperties: chainProperties,
356
- // bigRadius: radiusM(v, i, array),
357
- targetLong: array[i + 1].long,
358
- targetLat: array[i + 1].lat,
359
- altitude: altitude,
360
- long: v.long,
361
- lat: v.lat,
362
- lineProperties: v.lineProperties,
363
- circleProperties: v.circleProperties,
364
- centerCoords2dflat,
365
- key: v.__identity__
366
- };
367
- };
368
- const bulkData = [];
369
- chainKeys.forEach((k) => {
370
- this._chainListMap.calculateBufferPropertiesChain(k, callback, bulkData);
371
- });
372
- this._insertBulk(bulkData);
373
- }
374
- _insertBulk(bulkData) {
375
- this.bufferOrchestrator.insertBulk(bulkData, this.bufferManagersCompMap);
376
- this.globe.DrawRender();
377
- }
378
- // GLOBE API
379
- free() {
380
- if (this.isFreed)
381
- return;
382
- this.bufferManagersCompMap.forEach(({ bufferManager }) => {
383
- bufferManager.free();
384
- });
385
- naive_accurate_flexible_1.LineOnGlobeCache.release(this.globe);
386
- circle_accurate_flat_1.CircleCache.release(this.globe);
387
- circle_accurate_3d_1.CircleCache.release(this.globe);
388
- // LineToTheOriginCache.release(this.globe);
389
- this._textWritersMap.forEach((writer) => writer.free());
390
- const { gl } = this;
391
- gl.deleteVertexArray(this.lineVao);
392
- gl.deleteVertexArray(this.circleVao2d);
393
- gl.deleteVertexArray(this.circle3DVao);
394
- this.lineProgram = null;
395
- this.circleProgram2d = null;
396
- this.isFreed = true;
397
- }
398
- draw3D() {
399
- const { gl, globe } = this;
400
- gl.disable(gl.DEPTH_TEST);
401
- const drawOptions = {
402
- drawRange: {
403
- first: 0,
404
- count: this.bufferOrchestrator.length
405
- }
406
- };
407
- this.lineProgram.draw(this.lineVao, drawOptions, this._opacity);
408
- this._textWritersMap.forEach((writer) => writer.draw());
409
- const is3D = globe.api_GetCurrentGeometry() === 0;
410
- if (this._drawCircleOn) {
411
- if (is3D) {
412
- this.circle3DProgram.draw(this.circle3DVao, this.bufferOrchestrator.length, this._opacity);
413
- }
414
- else {
415
- this.circleProgram2d.draw(this.circleVao2d, this.bufferOrchestrator.length, this._circleFlatEdgeCount, this._opacity);
416
- }
417
- }
418
- gl.enable(gl.DEPTH_TEST);
419
- }
420
- }
421
- exports.CircleLineChainPlugin = CircleLineChainPlugin;
422
- // const radiusMethod = (globe) => (v, i, array) => {
423
- // return globe.Math.GetDist3D(v.long, v.lat, array[i + 1].long, array[i + 1].lat)
424
- // }
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.keyMethod = void 0;
4
- const keyMethod = (chainKey, nodeKey) => `${chainKey}_${nodeKey}`;
5
- exports.keyMethod = keyMethod;
@@ -1,225 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PixelPaddingCompassPlugin = void 0;
4
- const pixel_padding_for_compass_1 = require("../programs/two-d/pixel-padding-for-compass");
5
- const account_1 = require("../util/account");
6
- const compass_text_writer_1 = require("./compass-text-writer");
7
- const PaddingAngle = 30;
8
- const textGapFit = 10;
9
- class PixelPaddingCompassPlugin {
10
- constructor(id, { opacity = 1, textAngleOn = true, defaultProperties = {
11
- rgba: [1, 1, 1, 1],
12
- pixelRadiusRatioBig: 0.8,
13
- pixelRadiusRatioSmall: 0.6,
14
- }, font = {
15
- name: 'Arial',
16
- textColor: '#FFFFFF',
17
- hollowColor: '#000000',
18
- size: 12, // piksel
19
- hollow: true,
20
- bold: true,
21
- italic: false,
22
- }, northFont = {
23
- name: 'Arial',
24
- textColor: '#BBAA00',
25
- hollowColor: '#000000',
26
- size: 14, // piksel
27
- hollow: true,
28
- bold: true,
29
- italic: false,
30
- } } = {}) {
31
- this.id = id;
32
- this.textAngleOn = textAngleOn;
33
- this.defaultProperties = defaultProperties;
34
- this.bufferOrchestrator = new account_1.BufferOrchestrator({ capacity: 10 });
35
- this._font_hold = { font, northFont };
36
- this.compassMap = new CompassMap(this);
37
- this._opacity = opacity;
38
- }
39
- init(globe, gl) {
40
- this.globe = globe;
41
- this.resize();
42
- this.gl = gl;
43
- if (this.textAngleOn) {
44
- this._createTextWriter();
45
- }
46
- this._initOrchestrations();
47
- }
48
- /**
49
- * @param {string} key
50
- * @param {number} long
51
- * @param {number} lat
52
- * @typedef properties
53
- * @property {number} pixelRadiusRatioBig
54
- * @property {number} pixelRadiusRatioSmall
55
- * @property {[4 numbers between 0-1]} rgba
56
- */
57
- insert(key, long, lat, properties = null) {
58
- this.__insertText(key, null, null, { properties, update: true });
59
- this.compassMap.insert(key, long, lat, properties);
60
- this.globe.DrawRender();
61
- }
62
- /**
63
- *
64
- * @param {string} key
65
- */
66
- delete(key) {
67
- this.compassMap.delete(key);
68
- this.globe.DrawRender();
69
- }
70
- setFont({ textFont = null, northFont = null } = {}) {
71
- if (textFont)
72
- this.writer.setFont(textFont);
73
- if (northFont)
74
- this.writer.setNorthFont(northFont);
75
- this.globe.DrawRender();
76
- }
77
- setOpacity(opacity) {
78
- var _a;
79
- this._opacity = opacity;
80
- (_a = this.writer) === null || _a === void 0 ? void 0 : _a.setOpacity(opacity);
81
- this.globe.DrawRender();
82
- }
83
- getTextWriter() {
84
- return this.writer;
85
- }
86
- _initOrchestrations() {
87
- const { gl, globe } = this;
88
- this.paddingProgram = pixel_padding_for_compass_1.PixelPaddingForFlatCompassCache.get(globe);
89
- {
90
- // createBuffers
91
- const bufferType = "DYNAMIC_DRAW";
92
- const initialCapacity = this.bufferOrchestrator.capacity;
93
- this.bufferManagersCompMap = new Map([
94
- ["screenCoordinates", {
95
- 'bufferManager': new account_1.BufferManager(gl, 2, { bufferType, initialCapacity }),
96
- 'adaptor': (item) => new Float32Array([item.x, item.y])
97
- }],
98
- ["pixelRadiusRatioSmall", {
99
- 'bufferManager': new account_1.BufferManager(gl, 1, { bufferType, initialCapacity }),
100
- 'adaptor': (item) => new Float32Array([item.properties.pixelRadiusRatioSmall])
101
- }],
102
- ["pixelRadiusRatioBig", {
103
- 'bufferManager': new account_1.BufferManager(gl, 1, { bufferType, initialCapacity }),
104
- 'adaptor': (item) => new Float32Array([item.properties.pixelRadiusRatioBig])
105
- }],
106
- ["rgba", {
107
- 'bufferManager': new account_1.BufferManager(gl, 4, { bufferType, initialCapacity }),
108
- 'adaptor': (item) => new Float32Array(item.properties.rgba)
109
- }],
110
- ]);
111
- const obj = function (bufferManagerComp) {
112
- return { 'buffer': bufferManagerComp.bufferManager.buffer, 'stride': 0, 'offset': 0 };
113
- };
114
- this.paddingVao = this.paddingProgram.createVAO(...['screenCoordinates', 'pixelRadiusRatioSmall', 'pixelRadiusRatioBig', 'rgba'].map(key => obj(this.bufferManagersCompMap.get(key))));
115
- }
116
- }
117
- _createTextWriter() {
118
- this.writer = new compass_text_writer_1.PixelPaddingCompassTextWriter(this.globe, { angle: PaddingAngle, ...this._font_hold });
119
- }
120
- resize() {
121
- var _a;
122
- (_a = this.writer) === null || _a === void 0 ? void 0 : _a.resize();
123
- }
124
- __insertText(key, x, y, { properties, update = false } = {}) {
125
- if (!this.writer)
126
- return;
127
- if (update) {
128
- let radius;
129
- if (properties != null && properties.pixelRadiusRatioBig) {
130
- radius = properties.pixelRadiusRatioBig * this.radiusMultiplier;
131
- }
132
- else {
133
- radius = this.defaultProperties.pixelRadiusRatioBig * this.radiusMultiplier;
134
- }
135
- this.writer.insertTextItem(key, x, y, radius + textGapFit);
136
- }
137
- else {
138
- this.writer.insertTextItem(key, x, y);
139
- }
140
- }
141
- // Globe API interface methods
142
- draw2D() {
143
- var _a;
144
- const { gl, globe, paddingProgram, paddingVao, bufferOrchestrator, bufferManagersCompMap } = this;
145
- const is3D = globe.api_GetCurrentGeometry() === 0;
146
- if (is3D)
147
- return;
148
- const items = this.compassMap.query(globe, this.writer);
149
- if (items.length === 0)
150
- return;
151
- bufferOrchestrator.flush();
152
- bufferOrchestrator.insertBulk(items, bufferManagersCompMap);
153
- items.forEach((v) => {
154
- this.__insertText(v.key, v.x, v.y);
155
- });
156
- gl.disable(gl.DEPTH_TEST);
157
- paddingProgram.draw(paddingVao, bufferOrchestrator.length, this._opacity);
158
- gl.enable(gl.DEPTH_TEST);
159
- (_a = this.writer) === null || _a === void 0 ? void 0 : _a.draw();
160
- }
161
- free() {
162
- this.compassMap.free();
163
- const { globe, gl, paddingVao } = this;
164
- gl.deleteVertexArray(paddingVao);
165
- pixel_padding_for_compass_1.PixelPaddingForFlatCompassCache.release(globe);
166
- this.bufferManagersCompMap.forEach(v => {
167
- v.bufferManager.free();
168
- });
169
- }
170
- resize() {
171
- this.radiusMultiplier = this._shorterDimension() * 0.5;
172
- this._reinsertAllText();
173
- }
174
- _reinsertAllText() {
175
- this.compassMap.query(this.globe, this.writer).forEach((v) => {
176
- this.__insertText(v.key, v.x, v.y, { properties: v.properties, update: true });
177
- });
178
- }
179
- _shorterDimension() {
180
- const globe = this.globe;
181
- return Math.min(globe.api_ScrW(), globe.api_ScrH());
182
- }
183
- }
184
- exports.PixelPaddingCompassPlugin = PixelPaddingCompassPlugin;
185
- class CompassMap {
186
- constructor(parent) {
187
- this.coordsMemory = new Map();
188
- this.propertyMemory = new Map();
189
- this.parent = parent;
190
- }
191
- insert(key, long, lat, properties = null) {
192
- this.coordsMemory.set(key, [long, lat]);
193
- if (properties)
194
- this.propertyMemory.set(key, properties);
195
- }
196
- delete(key) {
197
- this.coordsMemory.delete(key);
198
- this.propertyMemory.delete(key);
199
- }
200
- free() {
201
- this.coordsMemory.clear();
202
- this.propertyMemory.clear();
203
- this.coordsMemory = null;
204
- this.propertyMemory = null;
205
- }
206
- query(globe, writer) {
207
- const { coordsMemory, propertyMemory } = this;
208
- const defaultProperties = this.parent.defaultProperties;
209
- const result = [];
210
- coordsMemory.forEach((v, k, c) => {
211
- const { x, y } = globe.api_GetScreenPointFromGeo({
212
- long: v[0],
213
- lat: v[1],
214
- z: 0,
215
- });
216
- writer === null || writer === void 0 ? void 0 : writer.insertTextItem(k, x, y);
217
- if (x !== null) {
218
- const properties = { ...defaultProperties, ...propertyMemory.get(k) };
219
- result.push({ key: k, x, y, properties });
220
- }
221
- });
222
- return result;
223
- }
224
- }
225
- function isOnTheScreen(globe, points) { }