@armyc2.c5isr.renderer/mil-sym-ts-web 2.2.0

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 (170) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +57 -0
  3. package/buildNode.bat +2 -0
  4. package/buildWeb.bat +2 -0
  5. package/dist/C5Ren.d.ts +6970 -0
  6. package/dist/C5Ren.js +2 -0
  7. package/dist/C5Ren.js.map +1 -0
  8. package/dist/LICENSE +201 -0
  9. package/dist/README.md +57 -0
  10. package/dist/armyc2.c5isr.renderer-mil-sym-ts-web-2.2.0.tgz +0 -0
  11. package/dist/manifest.json +4 -0
  12. package/dist/package.json +16 -0
  13. package/index.ts +169 -0
  14. package/package.bak +50 -0
  15. package/package.json +40 -0
  16. package/package.node.json +43 -0
  17. package/package.pack.json +19 -0
  18. package/package.packWeb.json +16 -0
  19. package/package.web.json +40 -0
  20. package/src/main/ts/android/graphics/Bitmap.ts +7 -0
  21. package/src/main/ts/android/graphics/Paint.ts +26 -0
  22. package/src/main/ts/android/graphics/Path.ts +78 -0
  23. package/src/main/ts/android/graphics/PointF.ts +14 -0
  24. package/src/main/ts/android/graphics/Rect.ts +18 -0
  25. package/src/main/ts/android/graphics/RectF.ts +50 -0
  26. package/src/main/ts/android/graphics/Region.ts +36 -0
  27. package/src/main/ts/android/graphics/Typeface.ts +11 -0
  28. package/src/main/ts/armyc2/c5isr/JavaLineArray/BasicShapes.ts +99 -0
  29. package/src/main/ts/armyc2/c5isr/JavaLineArray/CChannelPoints2.ts +34 -0
  30. package/src/main/ts/armyc2/c5isr/JavaLineArray/CELineArray.ts +193 -0
  31. package/src/main/ts/armyc2/c5isr/JavaLineArray/Channels.ts +2971 -0
  32. package/src/main/ts/armyc2/c5isr/JavaLineArray/DISMSupport.ts +4008 -0
  33. package/src/main/ts/armyc2/c5isr/JavaLineArray/POINT2.ts +93 -0
  34. package/src/main/ts/armyc2/c5isr/JavaLineArray/Shape2.ts +89 -0
  35. package/src/main/ts/armyc2/c5isr/JavaLineArray/TacticalLines.ts +515 -0
  36. package/src/main/ts/armyc2/c5isr/JavaLineArray/arraysupport.ts +5403 -0
  37. package/src/main/ts/armyc2/c5isr/JavaLineArray/countsupport.ts +1084 -0
  38. package/src/main/ts/armyc2/c5isr/JavaLineArray/flot.ts +2173 -0
  39. package/src/main/ts/armyc2/c5isr/JavaLineArray/lineutility.ts +4934 -0
  40. package/src/main/ts/armyc2/c5isr/JavaLineArray/ref.ts +7 -0
  41. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/Modifier2.ts +5601 -0
  42. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/P1.ts +14 -0
  43. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/TGLight.ts +648 -0
  44. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/clsChannelUtility.ts +647 -0
  45. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/clsMETOC.ts +2994 -0
  46. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/clsUtility.ts +2663 -0
  47. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/mdlGeodesic.ts +669 -0
  48. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsClipPolygon2.ts +971 -0
  49. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsClipQuad.ts +871 -0
  50. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsRenderer.ts +3507 -0
  51. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsRenderer2.ts +500 -0
  52. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsUtility.ts +1089 -0
  53. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsUtilityCPOF.ts +2656 -0
  54. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsUtilityGE.ts +1419 -0
  55. package/src/main/ts/armyc2/c5isr/data/genc.json +1407 -0
  56. package/src/main/ts/armyc2/c5isr/data/msd.json +17311 -0
  57. package/src/main/ts/armyc2/c5isr/data/mse.json +18500 -0
  58. package/src/main/ts/armyc2/c5isr/data/svgd.json +31214 -0
  59. package/src/main/ts/armyc2/c5isr/data/svge.json +30558 -0
  60. package/src/main/ts/armyc2/c5isr/graphics2d/AffineTransform.ts +10 -0
  61. package/src/main/ts/armyc2/c5isr/graphics2d/Area.ts +437 -0
  62. package/src/main/ts/armyc2/c5isr/graphics2d/BasicStroke.ts +429 -0
  63. package/src/main/ts/armyc2/c5isr/graphics2d/BasicTypes.ts +7 -0
  64. package/src/main/ts/armyc2/c5isr/graphics2d/BufferedImage.ts +35 -0
  65. package/src/main/ts/armyc2/c5isr/graphics2d/Font.ts +111 -0
  66. package/src/main/ts/armyc2/c5isr/graphics2d/FontMetrics.ts +29 -0
  67. package/src/main/ts/armyc2/c5isr/graphics2d/FontRenderContext.ts +18 -0
  68. package/src/main/ts/armyc2/c5isr/graphics2d/GeneralPath.ts +211 -0
  69. package/src/main/ts/armyc2/c5isr/graphics2d/Graphics2D.ts +80 -0
  70. package/src/main/ts/armyc2/c5isr/graphics2d/IPathIterator.ts +33 -0
  71. package/src/main/ts/armyc2/c5isr/graphics2d/ImageIO.ts +16 -0
  72. package/src/main/ts/armyc2/c5isr/graphics2d/Line2D.ts +726 -0
  73. package/src/main/ts/armyc2/c5isr/graphics2d/PathIterator.ts +141 -0
  74. package/src/main/ts/armyc2/c5isr/graphics2d/Point.ts +112 -0
  75. package/src/main/ts/armyc2/c5isr/graphics2d/Point2D.ts +261 -0
  76. package/src/main/ts/armyc2/c5isr/graphics2d/Polygon.ts +391 -0
  77. package/src/main/ts/armyc2/c5isr/graphics2d/Rectangle.ts +567 -0
  78. package/src/main/ts/armyc2/c5isr/graphics2d/Rectangle2D.ts +445 -0
  79. package/src/main/ts/armyc2/c5isr/graphics2d/Shape.ts +31 -0
  80. package/src/main/ts/armyc2/c5isr/graphics2d/Stroke.ts +18 -0
  81. package/src/main/ts/armyc2/c5isr/graphics2d/TextLayout.ts +45 -0
  82. package/src/main/ts/armyc2/c5isr/graphics2d/TexturePaint.ts +25 -0
  83. package/src/main/ts/armyc2/c5isr/renderer/IIconRenderer.ts +15 -0
  84. package/src/main/ts/armyc2/c5isr/renderer/IconRenderer.ts +22 -0
  85. package/src/main/ts/armyc2/c5isr/renderer/MilStdIconRenderer.ts +269 -0
  86. package/src/main/ts/armyc2/c5isr/renderer/ModifierRenderer.ts +9882 -0
  87. package/src/main/ts/armyc2/c5isr/renderer/PatternFillRenderer.ts +146 -0
  88. package/src/main/ts/armyc2/c5isr/renderer/SinglePointSVGRenderer.ts +1265 -0
  89. package/src/main/ts/armyc2/c5isr/renderer/shapes/arc.ts +64 -0
  90. package/src/main/ts/armyc2/c5isr/renderer/shapes/bcurve.ts +95 -0
  91. package/src/main/ts/armyc2/c5isr/renderer/shapes/ellipse.ts +93 -0
  92. package/src/main/ts/armyc2/c5isr/renderer/shapes/line.ts +114 -0
  93. package/src/main/ts/armyc2/c5isr/renderer/shapes/path.ts +555 -0
  94. package/src/main/ts/armyc2/c5isr/renderer/shapes/pathiterator.ts +62 -0
  95. package/src/main/ts/armyc2/c5isr/renderer/shapes/point.ts +120 -0
  96. package/src/main/ts/armyc2/c5isr/renderer/shapes/rectangle.ts +431 -0
  97. package/src/main/ts/armyc2/c5isr/renderer/shapes/roundedrectangle.ts +99 -0
  98. package/src/main/ts/armyc2/c5isr/renderer/shapes/types.ts +25 -0
  99. package/src/main/ts/armyc2/c5isr/renderer/shapes/utilities.ts +203 -0
  100. package/src/main/ts/armyc2/c5isr/renderer/utilities/AffiliationColors.ts +104 -0
  101. package/src/main/ts/armyc2/c5isr/renderer/utilities/Color.ts +481 -0
  102. package/src/main/ts/armyc2/c5isr/renderer/utilities/DistanceUnit.ts +40 -0
  103. package/src/main/ts/armyc2/c5isr/renderer/utilities/DrawRules.ts +1323 -0
  104. package/src/main/ts/armyc2/c5isr/renderer/utilities/EntityCode.ts +51 -0
  105. package/src/main/ts/armyc2/c5isr/renderer/utilities/ErrorLogger.ts +736 -0
  106. package/src/main/ts/armyc2/c5isr/renderer/utilities/GENCLookup.ts +106 -0
  107. package/src/main/ts/armyc2/c5isr/renderer/utilities/GeoPixelConversion3D.ts +84 -0
  108. package/src/main/ts/armyc2/c5isr/renderer/utilities/IMultiPointRenderer.ts +87 -0
  109. package/src/main/ts/armyc2/c5isr/renderer/utilities/IPointConversion.ts +34 -0
  110. package/src/main/ts/armyc2/c5isr/renderer/utilities/ImageInfo.ts +324 -0
  111. package/src/main/ts/armyc2/c5isr/renderer/utilities/LRUCache.ts +127 -0
  112. package/src/main/ts/armyc2/c5isr/renderer/utilities/LRUEntry.ts +18 -0
  113. package/src/main/ts/armyc2/c5isr/renderer/utilities/LogLevel.ts +111 -0
  114. package/src/main/ts/armyc2/c5isr/renderer/utilities/MODrawRules.ts +219 -0
  115. package/src/main/ts/armyc2/c5isr/renderer/utilities/MSInfo.ts +1008 -0
  116. package/src/main/ts/armyc2/c5isr/renderer/utilities/MSLookup.ts +882 -0
  117. package/src/main/ts/armyc2/c5isr/renderer/utilities/MilStdAttributes.ts +380 -0
  118. package/src/main/ts/armyc2/c5isr/renderer/utilities/MilStdSymbol.ts +797 -0
  119. package/src/main/ts/armyc2/c5isr/renderer/utilities/Modifiers.ts +1699 -0
  120. package/src/main/ts/armyc2/c5isr/renderer/utilities/PointConversion.ts +178 -0
  121. package/src/main/ts/armyc2/c5isr/renderer/utilities/PointConversionDummy.ts +45 -0
  122. package/src/main/ts/armyc2/c5isr/renderer/utilities/PointConverter3D.ts +126 -0
  123. package/src/main/ts/armyc2/c5isr/renderer/utilities/RectUtilities.ts +118 -0
  124. package/src/main/ts/armyc2/c5isr/renderer/utilities/RendererException.ts +11 -0
  125. package/src/main/ts/armyc2/c5isr/renderer/utilities/RendererSettings.ts +1201 -0
  126. package/src/main/ts/armyc2/c5isr/renderer/utilities/RendererUtilities.ts +591 -0
  127. package/src/main/ts/armyc2/c5isr/renderer/utilities/SVGInfo.ts +29 -0
  128. package/src/main/ts/armyc2/c5isr/renderer/utilities/SVGLookup.ts +753 -0
  129. package/src/main/ts/armyc2/c5isr/renderer/utilities/SVGSymbolInfo.ts +137 -0
  130. package/src/main/ts/armyc2/c5isr/renderer/utilities/SVGTextInfo.ts +438 -0
  131. package/src/main/ts/armyc2/c5isr/renderer/utilities/SettingsChangedEvent.ts +19 -0
  132. package/src/main/ts/armyc2/c5isr/renderer/utilities/SettingsChangedEventListener.ts +10 -0
  133. package/src/main/ts/armyc2/c5isr/renderer/utilities/SettingsEventListener.ts +5 -0
  134. package/src/main/ts/armyc2/c5isr/renderer/utilities/Shape2SVG.ts +404 -0
  135. package/src/main/ts/armyc2/c5isr/renderer/utilities/ShapeInfo.ts +525 -0
  136. package/src/main/ts/armyc2/c5isr/renderer/utilities/ShapeUtilities.ts +55 -0
  137. package/src/main/ts/armyc2/c5isr/renderer/utilities/SymbolDimensionInfo.ts +36 -0
  138. package/src/main/ts/armyc2/c5isr/renderer/utilities/SymbolID.ts +1055 -0
  139. package/src/main/ts/armyc2/c5isr/renderer/utilities/SymbolUtilities.ts +2085 -0
  140. package/src/main/ts/armyc2/c5isr/renderer/utilities/TextInfo.ts +157 -0
  141. package/src/main/ts/armyc2/c5isr/web/render/GeoPixelConversion.ts +86 -0
  142. package/src/main/ts/armyc2/c5isr/web/render/MultiPointHandler.ts +3798 -0
  143. package/src/main/ts/armyc2/c5isr/web/render/MultiPointHandlerSVG.ts +412 -0
  144. package/src/main/ts/armyc2/c5isr/web/render/PointConverter.ts +124 -0
  145. package/src/main/ts/armyc2/c5isr/web/render/SymbolModifiers.ts +26 -0
  146. package/src/main/ts/armyc2/c5isr/web/render/WebRenderer.ts +677 -0
  147. package/src/main/ts/armyc2/c5isr/web/render/utilities/JavaRendererUtilities.ts +484 -0
  148. package/src/main/ts/armyc2/c5isr/web/render/utilities/LineInfo.ts +62 -0
  149. package/src/main/ts/armyc2/c5isr/web/render/utilities/SymbolInfo.ts +46 -0
  150. package/src/main/ts/armyc2/c5isr/web/render/utilities/TextInfo.ts +51 -0
  151. package/src/main/ts/org/gavaghan/geodesy/Angle.ts +31 -0
  152. package/src/main/ts/org/gavaghan/geodesy/Ellipsoid.ts +71 -0
  153. package/src/main/ts/org/gavaghan/geodesy/GeodeticCalculator.ts +200 -0
  154. package/src/main/ts/org/gavaghan/geodesy/GeodeticCurve.ts +55 -0
  155. package/src/main/ts/org/gavaghan/geodesy/GeodeticMeasurement.ts +68 -0
  156. package/src/main/ts/org/gavaghan/geodesy/GlobalCoordinates.ts +103 -0
  157. package/src/main/ts/org/gavaghan/geodesy/GlobalPosition.ts +90 -0
  158. package/test/ExportSPImages.js +692 -0
  159. package/test/MPWW.html +556 -0
  160. package/test/MPWorker.js +318 -0
  161. package/test/SPWorker.js +233 -0
  162. package/test/SVGWW.html +363 -0
  163. package/test/singlePointTester3.html +751 -0
  164. package/tsconfig.json +54 -0
  165. package/typedoc.json +30 -0
  166. package/updateVersion.js +21 -0
  167. package/webpack.config.js +34 -0
  168. package/webpackn.config.js +28 -0
  169. package/webpackr.config.js +47 -0
  170. package/webpackw.config.js +23 -0
@@ -0,0 +1,1084 @@
1
+ /*
2
+ * To change this template, choose Tools | Templates
3
+ * and open the template in the editor.
4
+ */
5
+
6
+
7
+
8
+ import { type double, type int, type long } from "../graphics2d/BasicTypes";
9
+
10
+ import { Rectangle2D } from "../graphics2d/Rectangle2D"
11
+
12
+ import { arraysupport } from "../JavaLineArray/arraysupport"
13
+ import { flot } from "../JavaLineArray/flot"
14
+ import { lineutility } from "../JavaLineArray/lineutility"
15
+ import { POINT2 } from "../JavaLineArray/POINT2"
16
+ import { TacticalLines } from "../JavaLineArray/TacticalLines"
17
+
18
+ import { TGLight } from "../JavaTacticalRenderer/TGLight"
19
+
20
+ import { ErrorLogger } from "../renderer/utilities/ErrorLogger"
21
+ import { RendererException } from "../renderer/utilities/RendererException"
22
+ import { RendererSettings } from "../renderer/utilities/RendererSettings"
23
+
24
+ import { Channels } from "./Channels";
25
+
26
+
27
+ /**
28
+ * A class to calculate the number of pixels based points required for a line
29
+ *
30
+ */
31
+ export class countsupport {
32
+ private static readonly maxLength: double = 100; //max arrow size
33
+ private static readonly minLength: double = 2.5; //min arrow size was 5
34
+ private static readonly _className: string = "countsupport";
35
+
36
+ // protected static void setMinLength(double mLength)
37
+ // {
38
+ // minLength=mLength;
39
+ // }
40
+ /**
41
+ * The main function to return the number of points needed for a symbol
42
+ * @param vblCounter the number of client points
43
+ * @param pLinePoints the client point array
44
+ * @return the number of points required to draw the symbol
45
+ */
46
+ static GetCountersDouble(tg: TGLight,
47
+ vblCounter: int,
48
+ pLinePoints: POINT2[],
49
+ clipBounds: Rectangle2D | null): int {
50
+ let count: int = 0;
51
+ try {
52
+ let vbiDrawThis: int = tg.get_LineType();
53
+ //declaration section
54
+ let j: int = 0;
55
+ let vblSaveCounter: int = vblCounter;
56
+ let pSquarePoints: POINT2[] = new Array<POINT2>(4);
57
+ let pUpperLinePoints: POINT2[];
58
+ let
59
+ pLowerLinePoints: POINT2[]
60
+ let segments: number[];
61
+ let pNewLinePoints: POINT2[];
62
+ let dRadius: double = 0;
63
+ let pointsCorner: POINT2[] = new Array<POINT2>(2);
64
+ //double saveMaxPixels = 2000;//CELineArrayGlobals.MaxPixels2;
65
+
66
+ pUpperLinePoints = new Array<POINT2>(vblCounter);
67
+ pLowerLinePoints = new Array<POINT2>(vblCounter);
68
+
69
+ for (j = 0; j < vblCounter; j++) {
70
+ pUpperLinePoints[j] = new POINT2(pLinePoints[j]);
71
+ pLowerLinePoints[j] = new POINT2(pLinePoints[j]);
72
+ }
73
+ lineutility.InitializePOINT2Array(pointsCorner);
74
+ lineutility.InitializePOINT2Array(pSquarePoints);
75
+ //end delcarations
76
+ switch (vbiDrawThis) {
77
+ case TacticalLines.BS_ELLIPSE: {
78
+ count=37;
79
+ break;
80
+ }
81
+
82
+ case TacticalLines.BS_CROSS: {
83
+ count=4;
84
+ break;
85
+ }
86
+
87
+ case TacticalLines.OVERHEAD_WIRE: {
88
+ count = vblCounter * 15; //15 points per segment
89
+ break;
90
+ }
91
+
92
+ case TacticalLines.REEF: {
93
+ vblCounter = countsupport.GetReefCount(pLinePoints, arraysupport.getScaledSize(40, tg.get_LineThickness(), tg.get_patternScale()), vblSaveCounter);
94
+ count = vblCounter;
95
+ break;
96
+ }
97
+
98
+ case TacticalLines.RESTRICTED_AREA: {
99
+ vblCounter = countsupport.GetRestrictedAreaCount(pLinePoints, arraysupport.getScaledSize(15, tg.get_LineThickness(), tg.get_patternScale()), vblSaveCounter);
100
+ count = vblCounter;
101
+ break;
102
+ }
103
+
104
+ case TacticalLines.TRAINING_AREA: {
105
+ vblCounter += 30;
106
+ count = vblCounter;
107
+ break;
108
+ }
109
+
110
+ case TacticalLines.PIPE: {
111
+ count = countsupport.GetPipeCount(pLinePoints, arraysupport.getScaledSize(20, tg.get_LineThickness(), tg.get_patternScale()), vblSaveCounter);
112
+ break;
113
+ }
114
+
115
+ case TacticalLines.ANCHORAGE_AREA:
116
+ case TacticalLines.ANCHORAGE_LINE: {
117
+ count = flot.GetAnchorageCountDouble(pLinePoints, arraysupport.getScaledSize(20, tg.get_LineThickness(), tg.get_patternScale()), vblCounter);
118
+ break;
119
+ }
120
+
121
+ case TacticalLines.LRO: {
122
+ let xCount: int = countsupport.GetXPointsCount(pLinePoints, arraysupport.getScaledSize(30, tg.get_LineThickness(), tg.get_patternScale()), vblCounter);
123
+ let lvoCount: int = countsupport.GetLVOCount(pLinePoints, arraysupport.getScaledSize(30, tg.get_LineThickness(), tg.get_patternScale()), vblCounter);
124
+ count = xCount + lvoCount;
125
+ break;
126
+ }
127
+
128
+ case TacticalLines.LVO: {
129
+ count = countsupport.GetLVOCount(pLinePoints, arraysupport.getScaledSize(20, tg.get_LineThickness(), tg.get_patternScale()), vblCounter);
130
+ break;
131
+ }
132
+
133
+ case TacticalLines.ICING: {
134
+ vblCounter = countsupport.GetIcingCount(pLinePoints, arraysupport.getScaledSize(15, tg.get_LineThickness(), tg.get_patternScale()), vblCounter);
135
+ count = vblCounter;
136
+ break;
137
+ }
138
+
139
+ case TacticalLines.FLOT: {
140
+ vblSaveCounter = vblCounter;
141
+ vblCounter = flot.GetFlotCountDouble(pLinePoints, arraysupport.getScaledSize(20, tg.get_LineThickness(), tg.get_patternScale()), vblCounter);
142
+ count = vblCounter;
143
+ break;
144
+ }
145
+
146
+ case TacticalLines.MVFR:
147
+ case TacticalLines.UNDERCAST: {
148
+ vblSaveCounter = vblCounter;
149
+ vblCounter = flot.GetFlotCountDouble(pLinePoints, arraysupport.getScaledSize(20, tg.get_LineThickness(), tg.get_patternScale()), vblCounter);
150
+ count = vblCounter;
151
+ break;
152
+ }
153
+
154
+ case TacticalLines.ITD: {
155
+ vblCounter = countsupport.GetITDQty(pLinePoints, arraysupport.getScaledSize(15, tg.get_LineThickness(), tg.get_patternScale()), vblCounter) + vblCounter;
156
+ count = vblCounter;
157
+ break;
158
+ }
159
+
160
+ case TacticalLines.CONVERGENCE: {
161
+ vblCounter = countsupport.GetConvergenceQty(pLinePoints, arraysupport.getScaledSize(10, tg.get_LineThickness(), tg.get_patternScale()), vblCounter) + vblCounter;
162
+ count = vblCounter;
163
+ break;
164
+ }
165
+
166
+ case TacticalLines.RIDGE: {
167
+ vblCounter = countsupport.GetFORTLCountDouble(tg, pLinePoints, vblSaveCounter);
168
+ count = vblCounter;
169
+ break;
170
+ }
171
+
172
+ case TacticalLines.TROUGH:
173
+ case TacticalLines.UPPER_TROUGH:
174
+ case TacticalLines.INSTABILITY:
175
+ case TacticalLines.SHEAR: {
176
+ vblCounter = countsupport.GetSquallQty(pLinePoints, 6, arraysupport.getScaledSize(30, tg.get_LineThickness(), tg.get_patternScale()), vblSaveCounter as int);
177
+ count = vblCounter;
178
+ break;
179
+ }
180
+
181
+ case TacticalLines.CABLE: {
182
+ vblCounter = countsupport.GetSquallQty(pLinePoints, 6, arraysupport.getScaledSize(20, tg.get_LineThickness(), tg.get_patternScale()), vblSaveCounter as int);
183
+ count = vblCounter;
184
+ break;
185
+ }
186
+
187
+ case TacticalLines.SQUALL: {
188
+ vblCounter = countsupport.GetSquallQty(pLinePoints, 5, arraysupport.getScaledSize(30, tg.get_LineThickness(), tg.get_patternScale()), vblSaveCounter as int) + 2 * vblSaveCounter;
189
+ count = vblCounter;
190
+ break;
191
+ }
192
+
193
+ case TacticalLines.USF:
194
+ case TacticalLines.SFG:
195
+ case TacticalLines.SFY:
196
+ case TacticalLines.SF: {
197
+ vblCounter = flot.GetSFCountDouble(pLinePoints, vblCounter);
198
+ count = vblCounter;
199
+ break;
200
+ }
201
+
202
+ case TacticalLines.OFY: {
203
+ vblSaveCounter = vblCounter;
204
+ vblCounter = flot.GetOFYCountDouble(pLinePoints, arraysupport.getScaledSize(80, tg.get_LineThickness(), tg.get_patternScale()), vblCounter);
205
+ count = vblCounter;
206
+ break;
207
+ }
208
+
209
+ case TacticalLines.UCF:
210
+ case TacticalLines.CF:
211
+ case TacticalLines.CFG:
212
+ case TacticalLines.CFY: {
213
+ count = countsupport.GetFORTLCountDouble(tg, pLinePoints, vblSaveCounter);
214
+ count += vblSaveCounter;
215
+ break;
216
+ }
217
+
218
+ case TacticalLines.FOLLA:
219
+ case TacticalLines.FOLSP: {
220
+ count = 16;
221
+ break;
222
+ }
223
+
224
+ case TacticalLines.ROADBLK:
225
+ case TacticalLines.FERRY: {
226
+ count = 8;
227
+ break;
228
+ }
229
+
230
+ case TacticalLines.NAVIGATION:
231
+ case TacticalLines.IL:
232
+ case TacticalLines.PLANNED:
233
+ case TacticalLines.ESR1:
234
+ case TacticalLines.ESR2:
235
+ case TacticalLines.FORDSITE:
236
+ case TacticalLines.FOXHOLE: {
237
+ count = 4;
238
+ break;
239
+ }
240
+
241
+ case TacticalLines.AMBUSH: { //extra 3 for open arrow, extra 26 for the tail arc,
242
+ //and an extra 22 for the tail line segments
243
+ count = 53;//vblCounter+51;
244
+ break;
245
+ }
246
+
247
+ case TacticalLines.CLUSTER: {
248
+ count = 28;
249
+ break;
250
+ }
251
+
252
+ case TacticalLines.CONTAIN: {
253
+ count = 40;
254
+ break;
255
+ }
256
+
257
+ case TacticalLines.BYIMP: {
258
+ count = 18;
259
+ break;
260
+ }
261
+
262
+ case TacticalLines.SPTBYFIRE: {
263
+ count = 16;
264
+ break;
265
+ }
266
+
267
+ case TacticalLines.BLOCK:
268
+ case TacticalLines.MNFLDBLK: {
269
+ count = 4;
270
+ break;
271
+ }
272
+
273
+ case TacticalLines.PAA_RECTANGULAR: {
274
+ count = 5;
275
+ break;
276
+ }
277
+
278
+ case TacticalLines.RECTANGULAR_TARGET: {
279
+ count = 9;
280
+ break;
281
+ }
282
+
283
+ case TacticalLines.PENETRATE: {
284
+ count = 7;
285
+ break;
286
+ }
287
+
288
+ case TacticalLines.ASLTXING: //double for the channel type plus 4 for the hash marks
289
+ case TacticalLines.GAP:
290
+ case TacticalLines.BYPASS:
291
+ case TacticalLines.EASY:
292
+ case TacticalLines.BREACH:
293
+ case TacticalLines.CANALIZE: {
294
+ count = 12;
295
+ break;
296
+ }
297
+
298
+ case TacticalLines.MNFLDDIS: {
299
+ count = 22;
300
+ break;
301
+ }
302
+
303
+ case TacticalLines.WITHDRAW:
304
+ case TacticalLines.WDRAWUP:
305
+ case TacticalLines.DELAY: //extra four points for hash marks on last segment
306
+ case TacticalLines.RETIRE:
307
+ case TacticalLines.FPOL:
308
+ case TacticalLines.RPOL: {
309
+ count = 23;
310
+ break;
311
+ }
312
+
313
+ case TacticalLines.SEIZE: {
314
+ count = 37;
315
+ break;
316
+ }
317
+
318
+ case TacticalLines.RIP: {
319
+ count = 29;
320
+ break;
321
+ }
322
+
323
+ case TacticalLines.DIRATKSPT: {
324
+ count = vblCounter + 3;
325
+ break;
326
+ }
327
+
328
+ case TacticalLines.ABATIS: {
329
+ count = vblCounter + 3;
330
+ break;
331
+ }
332
+
333
+ case TacticalLines.FPF: //extra two points for blocks at each end
334
+ case TacticalLines.LINTGT: //extra two points for blocks at each end
335
+ case TacticalLines.LINTGTS: {
336
+ count = vblCounter + 4;
337
+ break;
338
+ }
339
+
340
+ case TacticalLines.CHANNEL:
341
+ case TacticalLines.CHANNEL_FLARED:
342
+ case TacticalLines.CHANNEL_DASHED: {
343
+ //pvblCounters[0]=2*lElements;
344
+ //pvblCounters[1]=lElements;
345
+ count = 2 * vblCounter;
346
+ break;
347
+ }
348
+
349
+ case TacticalLines.SARA: {
350
+ count = 16; //same for DISM
351
+ break;
352
+ }
353
+
354
+ case TacticalLines.COVER: //vblSaveCounter = vblCounter;
355
+ case TacticalLines.SCREEN:
356
+ case TacticalLines.GUARD:
357
+ case TacticalLines.PDF:
358
+ case TacticalLines.ATKBYFIRE: {
359
+ count = 14; //same for DISM
360
+ break;
361
+ }
362
+
363
+ case TacticalLines.RAFT:
364
+ case TacticalLines.MFLANE: { //extra eight points for hash marks at either end
365
+ count = 8;
366
+ break;
367
+ }
368
+
369
+ case TacticalLines.DIRATKGND: {
370
+ count = vblCounter + 10;
371
+ break;
372
+ }
373
+
374
+ case TacticalLines.DIRATKAIR: {
375
+ count = vblCounter + 9;
376
+ break;
377
+ }
378
+
379
+ case TacticalLines.DISRUPT:
380
+ case TacticalLines.CLEAR: {
381
+ count = 20;
382
+ break;
383
+ }
384
+
385
+ case TacticalLines.MSDZ: {
386
+ count = 300;
387
+ break;
388
+ }
389
+
390
+ case TacticalLines.CONVOY:
391
+ case TacticalLines.HCONVOY: {
392
+ count = 10;
393
+ break;
394
+ }
395
+
396
+ case TacticalLines.ISOLATE:
397
+ case TacticalLines.CORDONKNOCK:
398
+ case TacticalLines.CORDONSEARCH: {
399
+ count = 50;
400
+ break;
401
+ }
402
+
403
+ case TacticalLines.OCCUPY: {
404
+ count = 32;
405
+ break;
406
+ }
407
+
408
+ case TacticalLines.SECURE: {
409
+ count = 29;
410
+ break;
411
+ }
412
+
413
+ case TacticalLines.RETAIN: {
414
+ count = 75;
415
+ break;
416
+ }
417
+
418
+ case TacticalLines.TURN: {
419
+ count = 29;
420
+ break;
421
+ }
422
+
423
+ case TacticalLines.AIRFIELD: {
424
+ count = vblCounter + 5;
425
+ break;
426
+ }
427
+
428
+ case TacticalLines.FENCED: {
429
+ count = vblCounter;
430
+ break;
431
+ }
432
+
433
+ case TacticalLines.MSR_ALT:
434
+ case TacticalLines.ASR_ALT:
435
+ case TacticalLines.ROUTE_ALT: {
436
+ count = vblCounter * 9;
437
+ break;
438
+ }
439
+
440
+ case TacticalLines.MSR_TWOWAY:
441
+ case TacticalLines.ASR_TWOWAY: {
442
+ count = vblCounter * 11;
443
+ break;
444
+ }
445
+
446
+ case TacticalLines.MSR_ONEWAY:
447
+ case TacticalLines.ASR_ONEWAY:
448
+ case TacticalLines.ROUTE_ONEWAY: {
449
+ count = vblCounter * 6;
450
+ break;
451
+ }
452
+
453
+ case TacticalLines.WF:
454
+ case TacticalLines.UWF: {
455
+ vblCounter = flot.GetFlotCount2Double(tg, pLinePoints, vblCounter);
456
+ vblCounter += vblSaveCounter;
457
+ count = vblCounter;
458
+ break;
459
+ }
460
+
461
+ case TacticalLines.WFG:
462
+ case TacticalLines.WFY: {
463
+ vblCounter = flot.GetFlotCount2Double(tg, pLinePoints, vblCounter);
464
+ count = vblCounter;
465
+ break;
466
+ }
467
+
468
+ case TacticalLines.FORDIF: {
469
+ dRadius = lineutility.CalcDistanceToLineDouble(pLinePoints[0], pLinePoints[1], pLinePoints[2]);
470
+ let spikeLength: double = arraysupport.getScaledSize(10, tg.get_LineThickness(), tg.get_patternScale());
471
+ count = Math.trunc((dRadius / (spikeLength / 2)) * 3) + 6;
472
+ if (clipBounds != null) {
473
+ let width: double = clipBounds.getWidth();
474
+ let height: double = clipBounds.getHeight();
475
+ dRadius = Math.sqrt(width * width + height * height);
476
+ count = Math.trunc(dRadius / (spikeLength / 2)) + 6;
477
+ }
478
+
479
+
480
+ break;
481
+ }
482
+
483
+ case TacticalLines.ATDITCH: //call function to determine the array size
484
+ case TacticalLines.ATDITCHC: //call function to determine the array size
485
+ case TacticalLines.ATDITCHM: {
486
+ count = countsupport.GetDitchCountDouble(pLinePoints, vblSaveCounter, vbiDrawThis);
487
+ break;
488
+ }
489
+
490
+ case TacticalLines.CATK:
491
+ case TacticalLines.MAIN:
492
+ case TacticalLines.MAIN_STRAIGHT:
493
+ case TacticalLines.AIRAOA:
494
+ case TacticalLines.SPT:
495
+ case TacticalLines.SPT_STRAIGHT: {
496
+ //points for these need not be bounded
497
+ //they have an extra 8 points for the arrowhead
498
+ count = 2 * vblCounter + 8;
499
+ break;
500
+ }
501
+
502
+ case TacticalLines.CATKBYFIRE: {
503
+ count = 2 * vblCounter + 17;
504
+ break;
505
+ }
506
+
507
+ case TacticalLines.AAAAA: {
508
+ count = 2 * vblCounter + 19;
509
+ break;
510
+ }
511
+
512
+ case TacticalLines.LLTR: //added 5-4-07
513
+ case TacticalLines.SAAFR:
514
+ case TacticalLines.AC:
515
+ case TacticalLines.SC:
516
+ case TacticalLines.MRR:
517
+ case TacticalLines.SL:
518
+ case TacticalLines.TC: {
519
+ vblCounter = 6 * (vblSaveCounter - 1); //6 per segment
520
+ count = vblCounter + 26 * vblSaveCounter * 2; //26 for each circle and potentially two circles at each endpoint
521
+ break;
522
+ }
523
+
524
+ case TacticalLines.ATWALL:
525
+ case TacticalLines.LINE:
526
+ case TacticalLines.OBSAREA:
527
+ case TacticalLines.OBSFAREA:
528
+ case TacticalLines.STRONG:
529
+ case TacticalLines.ZONE:
530
+ case TacticalLines.ENCIRCLE:
531
+ case TacticalLines.FORT_REVD:
532
+ case TacticalLines.FORT:
533
+ case TacticalLines.FORTL: {
534
+ count = countsupport.GetFORTLCountDouble(tg, pLinePoints, vblSaveCounter);
535
+ break;
536
+ }
537
+
538
+ case TacticalLines.TRIPLE:
539
+ case TacticalLines.DOUBLEC:
540
+ case TacticalLines.SINGLEC:
541
+ case TacticalLines.HWFENCE:
542
+ case TacticalLines.LWFENCE:
543
+ case TacticalLines.UNSP:
544
+ case TacticalLines.DOUBLEA:
545
+ case TacticalLines.SFENCE:
546
+ case TacticalLines.DFENCE: {
547
+ count = Channels.GetTripleCountDouble(pLinePoints, vblCounter, vbiDrawThis);
548
+ break;
549
+ }
550
+
551
+ case TacticalLines.BBS_LINE: {
552
+ count = 2 * vblCounter;
553
+ break;
554
+ }
555
+
556
+ case TacticalLines.LC: {
557
+ pUpperLinePoints = Channels.GetChannelArray2Double(1, pUpperLinePoints, 1, vblCounter, vbiDrawThis, Math.trunc(arraysupport.getScaledSize(20, tg.get_LineThickness(), tg.get_patternScale())));
558
+ pLowerLinePoints = Channels.GetChannelArray2Double(1, pLowerLinePoints, 0, vblCounter, vbiDrawThis, Math.trunc(arraysupport.getScaledSize(20, tg.get_LineThickness(), tg.get_patternScale())));
559
+ let lUpperFlotCount: int = flot.GetFlotCountDouble(pUpperLinePoints, arraysupport.getScaledSize(20, tg.get_LineThickness(), tg.get_patternScale()), vblCounter);
560
+ let lLowerFlotCount: int = flot.GetFlotCountDouble(pLowerLinePoints, arraysupport.getScaledSize(20, tg.get_LineThickness(), tg.get_patternScale()), vblCounter);
561
+ count = lUpperFlotCount + lLowerFlotCount;
562
+ break;
563
+ }
564
+
565
+ case TacticalLines.OCCLUDED:
566
+ case TacticalLines.UOF: {
567
+ vblSaveCounter = vblCounter;
568
+ vblCounter = flot.GetOccludedCountDouble(pLinePoints, vblCounter);
569
+ vblCounter += vblSaveCounter;
570
+ count = vblCounter;
571
+ break;
572
+ }
573
+
574
+ case TacticalLines.FIX:
575
+ case TacticalLines.MNFLDFIX: {
576
+ if (pLinePoints.length > 1) {
577
+
578
+ count = countsupport.GetDISMFixCountDouble(pLinePoints[0], pLinePoints[1], clipBounds);
579
+ }
580
+
581
+ else {
582
+ count = 0;
583
+ }
584
+
585
+ break;
586
+ }
587
+
588
+ case TacticalLines.BYDIF: {
589
+ if (clipBounds != null) {
590
+ countsupport.GetByDifSegment(pLinePoints, pointsCorner);
591
+ let ul: POINT2 = new POINT2(clipBounds.getMinX(), clipBounds.getMinY()); //-100,1000
592
+ let lr: POINT2 = new POINT2(clipBounds.getMaxX(), clipBounds.getMaxY()); //-100,1000
593
+ let ptsCorner: POINT2[] = lineutility.BoundOneSegment(pointsCorner[0], pointsCorner[1], ul, lr);
594
+
595
+ if (ptsCorner != null) {
596
+
597
+ count = countsupport.GetDISMFixCountDouble(ptsCorner[0], ptsCorner[1], clipBounds);
598
+ }
599
+
600
+ else {
601
+
602
+ count = 20;
603
+ }
604
+
605
+ }
606
+ else {
607
+
608
+ count = countsupport.GetDISMFixCountDouble(pLinePoints[0], pLinePoints[1], clipBounds);
609
+ }
610
+
611
+
612
+ break;
613
+ }
614
+
615
+ default: {
616
+ count = vblCounter;
617
+ break;
618
+ }
619
+
620
+ }
621
+ } catch (exc) {
622
+ if (exc instanceof Error) {
623
+ ErrorLogger.LogException(countsupport._className, "GetCountersDouble",
624
+ new RendererException("Failed inside GetCountersDouble " + tg.get_LineType().toString(), exc));
625
+ } else {
626
+ throw exc;
627
+ }
628
+ }
629
+ return Math.trunc(count);
630
+ }
631
+ private static GetReefCount(pLinePoints: POINT2[],
632
+ length: double,
633
+ vblCounter: int): int {
634
+ let count: int = 0;
635
+ try {
636
+ let d: double = 0;
637
+ for (let j: int = 0; j < vblCounter - 1; j++) {
638
+ d = lineutility.CalcDistanceDouble(pLinePoints[j], pLinePoints[j + 1]);
639
+ count += 5 * Math.trunc(d / length);
640
+ }
641
+ count += 2 * vblCounter as int;
642
+ } catch (exc) {
643
+ if (exc instanceof Error) {
644
+ ErrorLogger.LogException(countsupport._className, "GetReefCount",
645
+ new RendererException("Failed inside GetReefCount", exc));
646
+ } else {
647
+ throw exc;
648
+ }
649
+ }
650
+ return count;
651
+ }
652
+ private static GetRestrictedAreaCount(pLinePoints: POINT2[],
653
+ length: double,
654
+ vblCounter: int): int {
655
+ let count: int = 0;
656
+ try {
657
+ let d: double = 0;
658
+ for (let j: int = 0; j < vblCounter - 1; j++) {
659
+ d = lineutility.CalcDistanceDouble(pLinePoints[j], pLinePoints[j + 1]);
660
+ count += 4 * Math.trunc(d / length);
661
+ }
662
+ count += 2 * vblCounter as int;
663
+ } catch (exc) {
664
+ if (exc instanceof Error) {
665
+ ErrorLogger.LogException(countsupport._className, "GetRestrictedAreaCount",
666
+ new RendererException("Failed inside GetRestrictedAreaCount", exc));
667
+ } else {
668
+ throw exc;
669
+ }
670
+ }
671
+ return count;
672
+ }
673
+
674
+ private static GetPipeCount(pLinePoints: POINT2[],
675
+ length: double,
676
+ vblCounter: int): int {
677
+ let count: int = 0;
678
+ try {
679
+ let d: double = 0;
680
+ for (let j: int = 0; j < vblCounter - 1; j++) {
681
+ d = lineutility.CalcDistanceDouble(pLinePoints[j], pLinePoints[j + 1]);
682
+ count += 3 * Math.trunc(d / length);
683
+ }
684
+ count += 2 * vblCounter as int;
685
+ } catch (exc) {
686
+ if (exc instanceof Error) {
687
+ ErrorLogger.LogException(countsupport._className, "GetPipeCount",
688
+ new RendererException("Failed inside GetPipeCount", exc));
689
+ } else {
690
+ throw exc;
691
+ }
692
+ }
693
+ return count;
694
+ }
695
+
696
+ static GetXPointsCount(pOriginalLinePoints: POINT2[], segmentLength: double, vblCounter: int): int {
697
+ let xCounter: int = 0;
698
+ try {
699
+ let j: int = 0;
700
+ let d: double = 0;
701
+ //POINT2 pt0,pt1,pt2,pt3=new POINT2(),pt4=new POINT2(),pt5=new POINT2(),pt6=new POINT2();
702
+ let numThisSegment: int = 0;
703
+ for (j = 0; j < vblCounter - 1; j++) {
704
+ d = lineutility.CalcDistanceDouble(pOriginalLinePoints[j], pOriginalLinePoints[j + 1]);
705
+ numThisSegment = Math.trunc((d - segmentLength / 2) / segmentLength);
706
+ xCounter += 4 * numThisSegment;
707
+ }
708
+ } catch (exc) {
709
+ if (exc instanceof Error) {
710
+ ErrorLogger.LogException(countsupport._className, "GetXPointsCount",
711
+ new RendererException("Failed inside GetXPointsCount", exc));
712
+ } else {
713
+ throw exc;
714
+ }
715
+ }
716
+ return xCounter;
717
+ }
718
+
719
+ static GetLVOCount(pOriginalLinePoints: POINT2[], segmentLength: double, vblCounter: int): int {
720
+ let lEllipseCounter: int = 0;
721
+ try {
722
+ let d: double = 0;
723
+ let lHowManyThisSegment: int = 0;
724
+ let j: int = 0;
725
+ //end declarations
726
+ for (j = 0; j < vblCounter - 1; j++) {
727
+ d = lineutility.CalcDistanceDouble(pOriginalLinePoints[j], pOriginalLinePoints[j + 1]);
728
+ //lHowManyThisSegment = (int) ((d - 20) / 20);
729
+ lHowManyThisSegment = Math.trunc((d - segmentLength) / segmentLength) + 1;
730
+ lEllipseCounter += lHowManyThisSegment * 37;
731
+ }
732
+ } catch (exc) {
733
+ if (exc instanceof Error) {
734
+ ErrorLogger.LogException(countsupport._className, "GetLVOCount",
735
+ new RendererException("Failed inside GetLVOCount", exc));
736
+ } else {
737
+ throw exc;
738
+ }
739
+ }
740
+ return lEllipseCounter;
741
+ }
742
+
743
+ private static GetIcingCount(points: POINT2[], length: double, vblCounter: int): int {
744
+ let total: int = 2 * vblCounter;
745
+ try {
746
+ let d: double = 0;
747
+ for (let j: int = 0; j < vblCounter - 1; j++) {
748
+ d = lineutility.CalcDistanceDouble(points[j], points[j + 1]);
749
+ d = (d / length) * 4;
750
+ total += d;
751
+ }
752
+ } catch (exc) {
753
+ if (exc instanceof Error) {
754
+ ErrorLogger.LogException(countsupport._className, "GetIcingCount",
755
+ new RendererException("Failed inside GetIcingCount", exc));
756
+ } else {
757
+ throw exc;
758
+ }
759
+ }
760
+ return total;
761
+ }
762
+
763
+ protected static GetITDQty(pLinePoints: POINT2[], length: double, vblCounter: int): int {
764
+ let total: int = 0;
765
+ try {
766
+ let j: int = 0;
767
+ let d: double = 0;
768
+ let n: int = 0;
769
+ for (j = 0; j < vblCounter - 1; j++) {
770
+ d = lineutility.CalcDistanceDouble(pLinePoints[j], pLinePoints[j + 1]);
771
+ n = 2 * Math.trunc(d / length);
772
+ if (n < 2) {
773
+
774
+ n = 2;
775
+ }
776
+
777
+ total += n;
778
+ }
779
+ } catch (exc) {
780
+ if (exc instanceof Error) {
781
+ ErrorLogger.LogException(countsupport._className, "GetITDQty",
782
+ new RendererException("Failed inside GetITDQty", exc));
783
+ } else {
784
+ throw exc;
785
+ }
786
+ }
787
+ return total;
788
+ }
789
+
790
+ protected static GetConvergenceQty(pLinePoints: POINT2[], length: double, vblCounter: int): int {
791
+ let total: int = vblCounter;
792
+ try {
793
+ let j: int = 0;
794
+ let d: double = 0;
795
+ for (j = 0; j < vblCounter - 1; j++) {
796
+ d = lineutility.CalcDistanceDouble(pLinePoints[j], pLinePoints[j + 1]);
797
+ total += 4 * Math.trunc(d / length);
798
+ }
799
+ } catch (exc) {
800
+ if (exc instanceof Error) {
801
+ ErrorLogger.LogException(countsupport._className, "GetConvergenceQty",
802
+ new RendererException("Failed inside GetConvergenceQty", exc));
803
+ } else {
804
+ throw exc;
805
+ }
806
+ }
807
+ return total;
808
+ }
809
+
810
+ /**
811
+ * Calculates the points for ATDITCH, ATDITCHC, ATDITCHM
812
+ * @param pLinePoints the client point array
813
+ * @param vblCounter the number of client points
814
+ * @param vbiDrawThis the line type
815
+ * @return
816
+ */
817
+ private static GetDitchCountDouble(pLinePoints: POINT2[],
818
+ vblCounter: int,
819
+ vbiDrawThis: int): int {
820
+ let vblXCounter: int = 0;
821
+ try {
822
+ //declarations
823
+ let j: int = 0;
824
+ let nHowManyThisSegment: int = 0;
825
+ let dHowFar: double = 0;
826
+ //dPrinter = (double) nPrinter;
827
+
828
+ vblXCounter = vblCounter;
829
+
830
+ for (j = 0; j < vblCounter - 1; j++) {
831
+ dHowFar = lineutility.CalcDistanceDouble(pLinePoints[j], pLinePoints[j + 1]);
832
+ nHowManyThisSegment = Math.trunc((dHowFar - 1) / 12);
833
+ if (dHowFar > 24) {
834
+ switch (vbiDrawThis) {
835
+ //case TacticalLines.FORT:
836
+ // break;
837
+ case TacticalLines.ATDITCHM: {
838
+ vblXCounter += 5 * nHowManyThisSegment + 1;//was 4 * nHowManyThisSegment
839
+ break;
840
+ }
841
+
842
+ default: {
843
+ vblXCounter += 4 * nHowManyThisSegment;//was 3 * nHowManyThisSegment
844
+ break;
845
+ }
846
+
847
+ } //end switch
848
+ } //end if
849
+ else {
850
+ vblXCounter += 2;
851
+ }
852
+ } //end for
853
+ } catch (exc) {
854
+ if (exc instanceof Error) {
855
+ ErrorLogger.LogException(countsupport._className, "GetDitchcountDouble",
856
+ new RendererException("Failed inside GetDitchCountDouble " + vbiDrawThis.toString(), exc));
857
+ } else {
858
+ throw exc;
859
+ }
860
+ }
861
+ return vblXCounter;
862
+ }
863
+ static GetSquallQty(pLinePoints: POINT2[],
864
+ quantity: int,
865
+ length: double,
866
+ numPoints: int): int {
867
+ let counter: int = 0;
868
+ try {
869
+ let j: int = 0;
870
+ let dist: double = 0;
871
+ let numCurves: int = 0;
872
+ //end declarations
873
+
874
+ for (j = 0; j < numPoints - 1; j++) {
875
+ dist = lineutility.CalcDistanceDouble(pLinePoints[j], pLinePoints[j + 1]);
876
+ numCurves = Math.trunc(dist / length as double);
877
+ counter += numCurves * quantity;
878
+ if (numCurves === 0) {
879
+ counter += 2;
880
+ }
881
+ }
882
+
883
+ if (counter < numPoints) {
884
+ counter = numPoints;
885
+ }
886
+
887
+ } catch (exc) {
888
+ if (exc instanceof Error) {
889
+ ErrorLogger.LogException(countsupport._className, "GetSquallQty",
890
+ new RendererException("Failed inside GetSquallQty", exc));
891
+ } else {
892
+ throw exc;
893
+ }
894
+ }
895
+ return counter;
896
+ }
897
+
898
+ static GetSquallSegQty(StartPt: POINT2,
899
+ EndPt: POINT2,
900
+ quantity: int,
901
+ length: double): int {
902
+ let qty: int = 0;
903
+ try {
904
+ let dist: double = lineutility.CalcDistanceDouble(StartPt, EndPt);
905
+ let numCurves: int = Math.trunc(dist / length as double);
906
+ qty = numCurves * quantity;
907
+ } catch (exc) {
908
+ if (exc instanceof Error) {
909
+ ErrorLogger.LogException(countsupport._className, "GetSquallSegQty",
910
+ new RendererException("Failed inside GetSquallSegQty", exc));
911
+ } else {
912
+ throw exc;
913
+ }
914
+ }
915
+ return qty;
916
+ }
917
+
918
+ /**
919
+ * returns number of points required for ATWALL, FORT and other symbols
920
+ * @param pLinePoints the client points
921
+ * @param vblCounter the number of client points
922
+ * @return
923
+ */
924
+ static GetFORTLCountDouble(tg: TGLight, pLinePoints: POINT2[], vblCounter: int): int {
925
+ let lCounter: int = 0;
926
+ try {
927
+ //declarations
928
+ let j: int = 0;
929
+ let dCounter: double = 0;
930
+ let dIncrement: double = 0;
931
+ //end declarations
932
+
933
+ switch (tg.get_LineType()) {
934
+ case TacticalLines.UCF:
935
+ case TacticalLines.CF:
936
+ case TacticalLines.CFG:
937
+ case TacticalLines.CFY: {
938
+ dIncrement = arraysupport.getScaledSize(60, tg.get_LineThickness(), tg.get_patternScale());
939
+ break;
940
+ }
941
+
942
+ case TacticalLines.RIDGE: {
943
+ dIncrement = arraysupport.getScaledSize(20, tg.get_LineThickness(), tg.get_patternScale());
944
+ break;
945
+ }
946
+
947
+ default: {
948
+ dIncrement = arraysupport.getScaledSize(20, tg.get_LineThickness(), tg.get_patternScale());
949
+ break;
950
+ }
951
+
952
+ }
953
+
954
+ for (j = 0; j < vblCounter - 1; j++) {
955
+ dCounter = lineutility.CalcDistanceDouble(pLinePoints[j], pLinePoints[j + 1]);
956
+
957
+ switch (tg.get_LineType()) {
958
+ case TacticalLines.CFG: {
959
+ dCounter = (dCounter / dIncrement) * 13;
960
+ break;
961
+ }
962
+
963
+ case TacticalLines.CFY: {
964
+ dCounter = (dCounter / dIncrement) * 17;
965
+ break;
966
+ }
967
+
968
+ default: {
969
+ dCounter = (dCounter / dIncrement) * 10;
970
+ break;
971
+ }
972
+
973
+ }
974
+
975
+ if (dCounter < 4) {
976
+ dCounter = 4;
977
+ }
978
+ lCounter += Math.trunc(dCounter);
979
+ }
980
+ lCounter += 10 + vblCounter;
981
+
982
+ } catch (exc) {
983
+ if (exc instanceof Error) {
984
+ ErrorLogger.LogException(countsupport._className, "GetFORTLCountDouble",
985
+ new RendererException("Failed inside GetFORTLCountDouble", exc));
986
+ } else {
987
+ throw exc;
988
+ }
989
+ }
990
+ return lCounter;
991
+ }
992
+
993
+ private static GetByDifSegment(points: POINT2[], pointsCorner: POINT2[]): void {
994
+ try {
995
+ // draw open-ended rectangle
996
+ let point_mid: POINT2 = new POINT2();
997
+ //int j=0;
998
+ // POINT1 pts[4];
999
+ if (pointsCorner == null) {
1000
+ pointsCorner = new Array<POINT2>(2);
1001
+ lineutility.InitializePOINT2Array(pointsCorner);
1002
+ }
1003
+ point_mid.x = (points[0].x + points[1].x) / 2;
1004
+ point_mid.y = (points[0].y + points[1].y) / 2;
1005
+ pointsCorner[0].x = points[0].x - point_mid.x + points[2].x;
1006
+ pointsCorner[0].y = points[0].y - point_mid.y + points[2].y;
1007
+ pointsCorner[1].x = points[1].x - point_mid.x + points[2].x;
1008
+ pointsCorner[1].y = points[1].y - point_mid.y + points[2].y;
1009
+ } catch (exc) {
1010
+ if (exc instanceof Error) {
1011
+ ErrorLogger.LogException(countsupport._className, "GetByDifSegment",
1012
+ new RendererException("Failed inside GetByDifSegment", exc));
1013
+ } else {
1014
+ throw exc;
1015
+ }
1016
+ }
1017
+ }
1018
+ /**
1019
+ * clipBounds is used because of the glyphs on one segment
1020
+ * @param FirstLinePoint
1021
+ * @param LastLinePoint
1022
+ * @param clipBounds
1023
+ * @return
1024
+ */
1025
+ protected static GetDISMFixCountDouble(FirstLinePoint: POINT2,
1026
+ LastLinePoint: POINT2,
1027
+ clipBounds: Rectangle2D): int {
1028
+ let counter: int = 0;
1029
+ try {
1030
+ let savepoints: POINT2[] = new Array<POINT2>(2);
1031
+ //double dAngle1 = 0;
1032
+ let dLength: double = 0;
1033
+ let dJaggyHalfAmp: double = 0;
1034
+ let dJaggyHalfPeriod: double = 0;
1035
+ let iNumJaggies: int = 0;
1036
+
1037
+ savepoints[0] = new POINT2(FirstLinePoint);
1038
+ savepoints[1] = new POINT2(LastLinePoint);
1039
+
1040
+ //Boolean drawJaggies=true;
1041
+ if (clipBounds != null) {
1042
+ let ul: POINT2 = new POINT2(clipBounds.getMinX(), clipBounds.getMinY());
1043
+ let lr: POINT2 = new POINT2(clipBounds.getMaxX(), clipBounds.getMaxY());
1044
+ savepoints = lineutility.BoundOneSegment(FirstLinePoint, LastLinePoint, ul, lr);
1045
+ }
1046
+
1047
+ if (savepoints == null) {
1048
+
1049
+ return 0;
1050
+ }
1051
+
1052
+
1053
+ dLength = Math.sqrt((savepoints[1].x - savepoints[0].x) * (savepoints[1].x - savepoints[0].x) +
1054
+ (savepoints[1].y - savepoints[0].y) * (savepoints[1].y - savepoints[0].y));
1055
+ dJaggyHalfAmp = dLength / 15; // half the amplitude of the "jaggy function"
1056
+
1057
+ let DPIScaleFactor: double = RendererSettings.getInstance().getDeviceDPI() / 96.0;
1058
+ if (dJaggyHalfAmp > countsupport.maxLength * DPIScaleFactor) {
1059
+ dJaggyHalfAmp = countsupport.maxLength * DPIScaleFactor;
1060
+ }
1061
+ if (dJaggyHalfAmp < countsupport.minLength * DPIScaleFactor) {
1062
+ dJaggyHalfAmp = countsupport.minLength * DPIScaleFactor;
1063
+ }
1064
+
1065
+ dJaggyHalfPeriod = dJaggyHalfAmp / 1.5; // half the period of the "jaggy function"
1066
+ iNumJaggies = Math.trunc(dLength / dJaggyHalfPeriod) - 3;
1067
+ if (iNumJaggies < 0) {
1068
+ iNumJaggies = 0;
1069
+ }
1070
+
1071
+ savepoints = null;
1072
+ counter = 20 + iNumJaggies * 3;
1073
+ } catch (exc) {
1074
+ if (exc instanceof Error) {
1075
+ ErrorLogger.LogException(countsupport._className, "GetDISMFixCount",
1076
+ new RendererException("Failed inside GetDISMFixCount", exc));
1077
+ } else {
1078
+ throw exc;
1079
+ }
1080
+ }
1081
+ return counter;
1082
+ }
1083
+
1084
+ }