@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.
- package/LICENSE +201 -0
- package/README.md +57 -0
- package/buildNode.bat +2 -0
- package/buildWeb.bat +2 -0
- package/dist/C5Ren.d.ts +6970 -0
- package/dist/C5Ren.js +2 -0
- package/dist/C5Ren.js.map +1 -0
- package/dist/LICENSE +201 -0
- package/dist/README.md +57 -0
- package/dist/armyc2.c5isr.renderer-mil-sym-ts-web-2.2.0.tgz +0 -0
- package/dist/manifest.json +4 -0
- package/dist/package.json +16 -0
- package/index.ts +169 -0
- package/package.bak +50 -0
- package/package.json +40 -0
- package/package.node.json +43 -0
- package/package.pack.json +19 -0
- package/package.packWeb.json +16 -0
- package/package.web.json +40 -0
- package/src/main/ts/android/graphics/Bitmap.ts +7 -0
- package/src/main/ts/android/graphics/Paint.ts +26 -0
- package/src/main/ts/android/graphics/Path.ts +78 -0
- package/src/main/ts/android/graphics/PointF.ts +14 -0
- package/src/main/ts/android/graphics/Rect.ts +18 -0
- package/src/main/ts/android/graphics/RectF.ts +50 -0
- package/src/main/ts/android/graphics/Region.ts +36 -0
- package/src/main/ts/android/graphics/Typeface.ts +11 -0
- package/src/main/ts/armyc2/c5isr/JavaLineArray/BasicShapes.ts +99 -0
- package/src/main/ts/armyc2/c5isr/JavaLineArray/CChannelPoints2.ts +34 -0
- package/src/main/ts/armyc2/c5isr/JavaLineArray/CELineArray.ts +193 -0
- package/src/main/ts/armyc2/c5isr/JavaLineArray/Channels.ts +2971 -0
- package/src/main/ts/armyc2/c5isr/JavaLineArray/DISMSupport.ts +4008 -0
- package/src/main/ts/armyc2/c5isr/JavaLineArray/POINT2.ts +93 -0
- package/src/main/ts/armyc2/c5isr/JavaLineArray/Shape2.ts +89 -0
- package/src/main/ts/armyc2/c5isr/JavaLineArray/TacticalLines.ts +515 -0
- package/src/main/ts/armyc2/c5isr/JavaLineArray/arraysupport.ts +5403 -0
- package/src/main/ts/armyc2/c5isr/JavaLineArray/countsupport.ts +1084 -0
- package/src/main/ts/armyc2/c5isr/JavaLineArray/flot.ts +2173 -0
- package/src/main/ts/armyc2/c5isr/JavaLineArray/lineutility.ts +4934 -0
- package/src/main/ts/armyc2/c5isr/JavaLineArray/ref.ts +7 -0
- package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/Modifier2.ts +5601 -0
- package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/P1.ts +14 -0
- package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/TGLight.ts +648 -0
- package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/clsChannelUtility.ts +647 -0
- package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/clsMETOC.ts +2994 -0
- package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/clsUtility.ts +2663 -0
- package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/mdlGeodesic.ts +669 -0
- package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsClipPolygon2.ts +971 -0
- package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsClipQuad.ts +871 -0
- package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsRenderer.ts +3507 -0
- package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsRenderer2.ts +500 -0
- package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsUtility.ts +1089 -0
- package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsUtilityCPOF.ts +2656 -0
- package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsUtilityGE.ts +1419 -0
- package/src/main/ts/armyc2/c5isr/data/genc.json +1407 -0
- package/src/main/ts/armyc2/c5isr/data/msd.json +17311 -0
- package/src/main/ts/armyc2/c5isr/data/mse.json +18500 -0
- package/src/main/ts/armyc2/c5isr/data/svgd.json +31214 -0
- package/src/main/ts/armyc2/c5isr/data/svge.json +30558 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/AffineTransform.ts +10 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/Area.ts +437 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/BasicStroke.ts +429 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/BasicTypes.ts +7 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/BufferedImage.ts +35 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/Font.ts +111 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/FontMetrics.ts +29 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/FontRenderContext.ts +18 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/GeneralPath.ts +211 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/Graphics2D.ts +80 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/IPathIterator.ts +33 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/ImageIO.ts +16 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/Line2D.ts +726 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/PathIterator.ts +141 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/Point.ts +112 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/Point2D.ts +261 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/Polygon.ts +391 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/Rectangle.ts +567 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/Rectangle2D.ts +445 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/Shape.ts +31 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/Stroke.ts +18 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/TextLayout.ts +45 -0
- package/src/main/ts/armyc2/c5isr/graphics2d/TexturePaint.ts +25 -0
- package/src/main/ts/armyc2/c5isr/renderer/IIconRenderer.ts +15 -0
- package/src/main/ts/armyc2/c5isr/renderer/IconRenderer.ts +22 -0
- package/src/main/ts/armyc2/c5isr/renderer/MilStdIconRenderer.ts +269 -0
- package/src/main/ts/armyc2/c5isr/renderer/ModifierRenderer.ts +9882 -0
- package/src/main/ts/armyc2/c5isr/renderer/PatternFillRenderer.ts +146 -0
- package/src/main/ts/armyc2/c5isr/renderer/SinglePointSVGRenderer.ts +1265 -0
- package/src/main/ts/armyc2/c5isr/renderer/shapes/arc.ts +64 -0
- package/src/main/ts/armyc2/c5isr/renderer/shapes/bcurve.ts +95 -0
- package/src/main/ts/armyc2/c5isr/renderer/shapes/ellipse.ts +93 -0
- package/src/main/ts/armyc2/c5isr/renderer/shapes/line.ts +114 -0
- package/src/main/ts/armyc2/c5isr/renderer/shapes/path.ts +555 -0
- package/src/main/ts/armyc2/c5isr/renderer/shapes/pathiterator.ts +62 -0
- package/src/main/ts/armyc2/c5isr/renderer/shapes/point.ts +120 -0
- package/src/main/ts/armyc2/c5isr/renderer/shapes/rectangle.ts +431 -0
- package/src/main/ts/armyc2/c5isr/renderer/shapes/roundedrectangle.ts +99 -0
- package/src/main/ts/armyc2/c5isr/renderer/shapes/types.ts +25 -0
- package/src/main/ts/armyc2/c5isr/renderer/shapes/utilities.ts +203 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/AffiliationColors.ts +104 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/Color.ts +481 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/DistanceUnit.ts +40 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/DrawRules.ts +1323 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/EntityCode.ts +51 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/ErrorLogger.ts +736 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/GENCLookup.ts +106 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/GeoPixelConversion3D.ts +84 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/IMultiPointRenderer.ts +87 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/IPointConversion.ts +34 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/ImageInfo.ts +324 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/LRUCache.ts +127 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/LRUEntry.ts +18 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/LogLevel.ts +111 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/MODrawRules.ts +219 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/MSInfo.ts +1008 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/MSLookup.ts +882 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/MilStdAttributes.ts +380 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/MilStdSymbol.ts +797 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/Modifiers.ts +1699 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/PointConversion.ts +178 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/PointConversionDummy.ts +45 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/PointConverter3D.ts +126 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/RectUtilities.ts +118 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/RendererException.ts +11 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/RendererSettings.ts +1201 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/RendererUtilities.ts +591 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/SVGInfo.ts +29 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/SVGLookup.ts +753 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/SVGSymbolInfo.ts +137 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/SVGTextInfo.ts +438 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/SettingsChangedEvent.ts +19 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/SettingsChangedEventListener.ts +10 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/SettingsEventListener.ts +5 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/Shape2SVG.ts +404 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/ShapeInfo.ts +525 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/ShapeUtilities.ts +55 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/SymbolDimensionInfo.ts +36 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/SymbolID.ts +1055 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/SymbolUtilities.ts +2085 -0
- package/src/main/ts/armyc2/c5isr/renderer/utilities/TextInfo.ts +157 -0
- package/src/main/ts/armyc2/c5isr/web/render/GeoPixelConversion.ts +86 -0
- package/src/main/ts/armyc2/c5isr/web/render/MultiPointHandler.ts +3798 -0
- package/src/main/ts/armyc2/c5isr/web/render/MultiPointHandlerSVG.ts +412 -0
- package/src/main/ts/armyc2/c5isr/web/render/PointConverter.ts +124 -0
- package/src/main/ts/armyc2/c5isr/web/render/SymbolModifiers.ts +26 -0
- package/src/main/ts/armyc2/c5isr/web/render/WebRenderer.ts +677 -0
- package/src/main/ts/armyc2/c5isr/web/render/utilities/JavaRendererUtilities.ts +484 -0
- package/src/main/ts/armyc2/c5isr/web/render/utilities/LineInfo.ts +62 -0
- package/src/main/ts/armyc2/c5isr/web/render/utilities/SymbolInfo.ts +46 -0
- package/src/main/ts/armyc2/c5isr/web/render/utilities/TextInfo.ts +51 -0
- package/src/main/ts/org/gavaghan/geodesy/Angle.ts +31 -0
- package/src/main/ts/org/gavaghan/geodesy/Ellipsoid.ts +71 -0
- package/src/main/ts/org/gavaghan/geodesy/GeodeticCalculator.ts +200 -0
- package/src/main/ts/org/gavaghan/geodesy/GeodeticCurve.ts +55 -0
- package/src/main/ts/org/gavaghan/geodesy/GeodeticMeasurement.ts +68 -0
- package/src/main/ts/org/gavaghan/geodesy/GlobalCoordinates.ts +103 -0
- package/src/main/ts/org/gavaghan/geodesy/GlobalPosition.ts +90 -0
- package/test/ExportSPImages.js +692 -0
- package/test/MPWW.html +556 -0
- package/test/MPWorker.js +318 -0
- package/test/SPWorker.js +233 -0
- package/test/SVGWW.html +363 -0
- package/test/singlePointTester3.html +751 -0
- package/tsconfig.json +54 -0
- package/typedoc.json +30 -0
- package/updateVersion.js +21 -0
- package/webpack.config.js +34 -0
- package/webpackn.config.js +28 -0
- package/webpackr.config.js +47 -0
- 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
|
+
}
|