@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
package/test/MPWW.html
ADDED
|
@@ -0,0 +1,556 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<!-- Meta line required for IE-->
|
|
5
|
+
<!-- <meta http-equiv="X-UA-Compatible" content="IE=edge" /> -->
|
|
6
|
+
<!-- <script src="dist/C5RenDebug.js" type="text/javascript" ></script> -->
|
|
7
|
+
<script src="../dist/C5Ren.js" type="text/javascript" ></script>
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
<script type = "text/javascript">
|
|
13
|
+
|
|
14
|
+
var worker;
|
|
15
|
+
try
|
|
16
|
+
{
|
|
17
|
+
worker = new Worker('MPWorker.js');
|
|
18
|
+
//worker = new Worker('dist/MPWorker.js');
|
|
19
|
+
}
|
|
20
|
+
catch(e)
|
|
21
|
+
{
|
|
22
|
+
console.log("Error in new Worker('MPWorker.js')");
|
|
23
|
+
console.log(e);
|
|
24
|
+
console.log(e.stack);
|
|
25
|
+
}
|
|
26
|
+
var timeAmbush;
|
|
27
|
+
var startWW = null;
|
|
28
|
+
var stopWW = null;
|
|
29
|
+
|
|
30
|
+
function setup()
|
|
31
|
+
{
|
|
32
|
+
document.getElementById("testRender").disabled = true;
|
|
33
|
+
//C5Ren.initialize("/../dist/").then(function(results){document.getElementById("testRender").disabled = false;}).catch(error => {throw error;});
|
|
34
|
+
document.getElementById("testRender").disabled = false;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function formatKMLForHTML(kml)
|
|
38
|
+
{
|
|
39
|
+
var formattedKML = "";
|
|
40
|
+
var tempString = kml;
|
|
41
|
+
|
|
42
|
+
var index = 0;
|
|
43
|
+
var start = 0;
|
|
44
|
+
|
|
45
|
+
var index = tempString.indexOf("<");
|
|
46
|
+
while(index >=0)
|
|
47
|
+
{
|
|
48
|
+
tempString = tempString.replace("<","<");
|
|
49
|
+
start = index+1;
|
|
50
|
+
index = tempString.indexOf("<", start);
|
|
51
|
+
}
|
|
52
|
+
var index = tempString.indexOf(">");
|
|
53
|
+
while(index >=0)
|
|
54
|
+
{
|
|
55
|
+
tempString = tempString.replace(">",">");
|
|
56
|
+
start = index+1;
|
|
57
|
+
index = tempString.indexOf(">", start);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
formattedKML = tempString;
|
|
61
|
+
|
|
62
|
+
return formattedKML;
|
|
63
|
+
}
|
|
64
|
+
function cleartext()
|
|
65
|
+
{
|
|
66
|
+
//alert('clr');
|
|
67
|
+
document.getElementById("contentSpan").innerHTML = "";
|
|
68
|
+
var svgImage = document.getElementById("preview2");
|
|
69
|
+
svgImage.src = null;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
function testRender()
|
|
73
|
+
{
|
|
74
|
+
//var rendererMP = document.getElementById("SECRenderApplet");
|
|
75
|
+
//var rendererMP = new sec.web.renderer.SECWebRenderer();
|
|
76
|
+
var rendererMP = C5Ren.SECWebRenderer;
|
|
77
|
+
|
|
78
|
+
if (rendererMP !== null) {
|
|
79
|
+
|
|
80
|
+
var renderCount = 1000;
|
|
81
|
+
|
|
82
|
+
/*var foo = new java.lang.StringBuilder("test");
|
|
83
|
+
foo.append("ing");
|
|
84
|
+
console.log(foo);
|
|
85
|
+
console.log(foo.toString());*/
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
var modifiers = new Map();
|
|
90
|
+
var attributes = new Map();
|
|
91
|
+
//AMBUSH EXAMPLE
|
|
92
|
+
var symbolCode = "110325000014170000000000000000";//ambush
|
|
93
|
+
//var symbolCode = "110325000015020000000000000000"; //assembly area
|
|
94
|
+
//var symbolCode = "110325000014010000000000000000";//flot
|
|
95
|
+
var controlPoints = "66.26700036208742,30.62755038706961 66.27555681517738,30.64727776502703 66.25654247497746,30.64632704801704";
|
|
96
|
+
//var controlPoints = "66.26700036208742,30.62755038706961 66.27555681517738,30.64727776502703";
|
|
97
|
+
|
|
98
|
+
var bbox = "66.25,30.60,66.28,30.65";//full coverage
|
|
99
|
+
//var bbox = "66.27,30.63,66.28,30.65";//clip
|
|
100
|
+
//var bbox = "-180.0,-90.0,180.0,90.0";
|
|
101
|
+
var scale = 50000.0;
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
var pixelWidth = 800;
|
|
105
|
+
var pixelHeight = 600;
|
|
106
|
+
|
|
107
|
+
//change this to format JSON to see the different output.
|
|
108
|
+
var format = C5Ren.WebRenderer.OUTPUT_FORMAT_GEOJSON;
|
|
109
|
+
//var format = formatGeoCanvas;
|
|
110
|
+
//var format = formatKML;
|
|
111
|
+
//var format = formatGeoSVG;
|
|
112
|
+
|
|
113
|
+
var cbFormat = document.getElementById("lbFormat").value;
|
|
114
|
+
if(cbFormat == "GeoSVG")
|
|
115
|
+
format = C5Ren.WebRenderer.OUTPUT_FORMAT_GEOSVG;
|
|
116
|
+
else if(cbFormat == "GeoJSON")
|
|
117
|
+
format = C5Ren.WebRenderer.OUTPUT_FORMAT_GEOJSON;
|
|
118
|
+
else
|
|
119
|
+
format = C5Ren.WebRenderer.OUTPUT_FORMAT_KML;
|
|
120
|
+
|
|
121
|
+
//RenderSymbol2D recommended for 2D maps. KML or JSON format will work.
|
|
122
|
+
//KML is being worked on more due to google earth in bcweb. We are not actively using JSON for anything.
|
|
123
|
+
//ID, Name and Description are optional when using JSON format.
|
|
124
|
+
|
|
125
|
+
var json = null;
|
|
126
|
+
var data = null;
|
|
127
|
+
var data = {};
|
|
128
|
+
data.id = "ID";
|
|
129
|
+
data.name = "Name";
|
|
130
|
+
data.description = "description";
|
|
131
|
+
data.symbolID = symbolCode;
|
|
132
|
+
data.points = controlPoints;
|
|
133
|
+
//data.altMode = "absolute";//comment out to render as 2D
|
|
134
|
+
data.scale = scale;
|
|
135
|
+
data.bbox = bbox;
|
|
136
|
+
data.modifiers = modifiers;//{"AM":[3000,10000],"AN":[315,45],"X":[0],"LOOKAT":true};
|
|
137
|
+
data.attributes = attributes;
|
|
138
|
+
data.format = format;
|
|
139
|
+
data.pixelHeight = pixelHeight;
|
|
140
|
+
data.pixelWidth = pixelWidth;
|
|
141
|
+
data.batch = [];
|
|
142
|
+
|
|
143
|
+
for(var i = 0; i < renderCount; i++)
|
|
144
|
+
{
|
|
145
|
+
//json = rendererMP.RenderSymbol2D("ID","Name","Description", symbolCode, controlPoints, pixelWidth, pixelHeight, bbox, modifiers,format);
|
|
146
|
+
var item = {id:"ID",name:"name",description:"description",symbolID:symbolCode,points:controlPoints,modifiers:modifiers,attributes:attributes};
|
|
147
|
+
data.batch.push(item);
|
|
148
|
+
}
|
|
149
|
+
startWW = Date.now();
|
|
150
|
+
worker.onerror = function(e)
|
|
151
|
+
{
|
|
152
|
+
console.log(e);
|
|
153
|
+
}
|
|
154
|
+
worker.onmessage = function(e)
|
|
155
|
+
{
|
|
156
|
+
stopWW = Date.now();
|
|
157
|
+
timeAmbush = (stopWW-startWW) / 1000 / renderCount;
|
|
158
|
+
//console.log(timeAmbush);
|
|
159
|
+
var totalAmbush = (stopWW-startWW) / 1000;
|
|
160
|
+
document.getElementById("contentSpan").innerHTML = "";
|
|
161
|
+
document.getElementById("contentSpan").innerHTML += "<br/><br/>Ambush avg: "+ timeAmbush +" <br/>";
|
|
162
|
+
document.getElementById("contentSpan").innerHTML += "Ambush x" + renderCount + " total: "+ totalAmbush +" <br/>";
|
|
163
|
+
|
|
164
|
+
if(e.data.id)//not a batch call
|
|
165
|
+
{
|
|
166
|
+
result = e.data.result;
|
|
167
|
+
document.getElementById("contentSpan").innerHTML += "<br/><br/>Symbol via Web Worker: <br/>";
|
|
168
|
+
}
|
|
169
|
+
else//batch call
|
|
170
|
+
{
|
|
171
|
+
document.getElementById("contentSpan").innerHTML += "<br/><br/>Batch Symbol via Web Worker: <br/>";
|
|
172
|
+
result = e.data.result[0];
|
|
173
|
+
}
|
|
174
|
+
updatePageResults(result);//*/
|
|
175
|
+
}
|
|
176
|
+
worker.postMessage(data)
|
|
177
|
+
|
|
178
|
+
//can also pass parameter saying which version of MilStd to use.
|
|
179
|
+
//var json = rendererMP.RenderSymbol2D("ID","Name","Description", symbolCode, controlPoints, pixelWidth, pixelHeight, bbox, modifiers,format,symStd);
|
|
180
|
+
|
|
181
|
+
function updatePageResults(data)
|
|
182
|
+
{
|
|
183
|
+
if(format === C5Ren.WebRenderer.OUTPUT_FORMAT_GEOJSON)
|
|
184
|
+
{
|
|
185
|
+
document.getElementById("contentSpan").innerHTML += "JSON Format:<br/>";
|
|
186
|
+
if (data == null || data == "")
|
|
187
|
+
document.getElementById("contentSpan").innerHTML += "json empty";
|
|
188
|
+
else
|
|
189
|
+
document.getElementById("contentSpan").innerHTML += data.geojson;
|
|
190
|
+
}
|
|
191
|
+
else if(format === C5Ren.WebRenderer.OUTPUT_FORMAT_GEOSVG)
|
|
192
|
+
{
|
|
193
|
+
var svg = result.svg;
|
|
194
|
+
var svgImage = document.getElementById("preview2");
|
|
195
|
+
svgImage.width = result.width;
|
|
196
|
+
svgImage.height = result.height;
|
|
197
|
+
|
|
198
|
+
//svgImage.src = "data:image/svg+xml;base64,"+window.btoa(svg);//svg;
|
|
199
|
+
svgImage.src = result.b64;
|
|
200
|
+
document.getElementById("contentSpan").innerHTML += "<plaintext>" + svg;// + "</plaintext>";
|
|
201
|
+
}
|
|
202
|
+
else// if formated as KML
|
|
203
|
+
{
|
|
204
|
+
document.getElementById("contentSpan").innerHTML += "KML Format:<br/>";
|
|
205
|
+
//the following is just so you can view the KML properly on the html page.
|
|
206
|
+
//this isn't something you'd normally do.
|
|
207
|
+
if (data == null || data == "")
|
|
208
|
+
document.getElementById("contentSpan").innerHTML += "kml empty";
|
|
209
|
+
else
|
|
210
|
+
{
|
|
211
|
+
var formattedKML = "";
|
|
212
|
+
|
|
213
|
+
formattedKML = formatKMLForHTML(data);
|
|
214
|
+
|
|
215
|
+
document.getElementById("contentSpan").innerHTML += formattedKML;
|
|
216
|
+
//document.getElementById("XMLHolder").innerHTML += json;//parseXMLString(json);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
/*
|
|
221
|
+
armyc2.c2sd.renderer.utilities.ErrorLogger.LogMessage("multiPoints3.html","testRender","ASSEMBLY AREA");
|
|
222
|
+
//ASSEMBLY AREA EXAMPLE
|
|
223
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
224
|
+
//G*G*GLB---****X
|
|
225
|
+
//var symbolCode2 = "GFGPGLB-------X"; //boundary
|
|
226
|
+
//var symbolCode2 = "GHGPGAG-------X"; //general area
|
|
227
|
+
var symbolCode2 = "GHGPGAA-------X"; //assembly area
|
|
228
|
+
//var symbolCode2 = "GHMPOADC--****X"; //antitank ditch, complete
|
|
229
|
+
//var symbolCode2 = "GFTPL---------X"; //delay
|
|
230
|
+
//var symbolCode2 = "GHGPSLA-------X"; //ambush
|
|
231
|
+
var controlPoints2 = "66.26700036208742,30.62755038706961 66.27555681517738,30.64727776502703 66.25654247497746,30.64632704801704";
|
|
232
|
+
var bbox2 = "66.26,30.627,66.27,30.63"; //will show clipping at work
|
|
233
|
+
//var bbox2 = "66.25,30.627,66.27,30.63";//whole symbol will be calculated
|
|
234
|
+
//var bbox2 = "-180.0,-90.0,180.0,90.0";
|
|
235
|
+
var scale2 = 50000.0;
|
|
236
|
+
//modifiers = "{\"modifiers\":{\"uniqueDesignation1\":\"T modifier\"}}";
|
|
237
|
+
modifiers = "{\"modifiers\":{\"fillColor\":\"FFFFFF\",\"lineColor\":\"00FF00\"}}";
|
|
238
|
+
|
|
239
|
+
//format = formatJSON;
|
|
240
|
+
format = formatKML;
|
|
241
|
+
var json2;
|
|
242
|
+
var start = Date.now();
|
|
243
|
+
if(format == formatKML)
|
|
244
|
+
{
|
|
245
|
+
//RenderSymbol for 3D Google Earth. KML format recommended.
|
|
246
|
+
for(var i = 0; i < renderCount; i++){
|
|
247
|
+
json2 = rendererMP.RenderSymbol("ID","Name","Description", symbolCode2, controlPoints2, "clampToGround",scale2, bbox2, modifiers,format);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
else
|
|
251
|
+
{
|
|
252
|
+
//RenderSymbol2D for 2D maps, JSON Recommended for simpler output.
|
|
253
|
+
for(var i = 0; i < renderCount; i++){
|
|
254
|
+
json2 = rendererMP.RenderSymbol2D("ID","Name","Description", symbolCode2, controlPoints2, pixelWidth, pixelHeight, bbox2, modifiers,format);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
var stop = Date.now();
|
|
258
|
+
var timeAA = (stop-start)/1000 / renderCount;
|
|
259
|
+
|
|
260
|
+
document.getElementById("contentSpan").innerHTML += "<br/><br/>Assembly Area: <br/>";
|
|
261
|
+
|
|
262
|
+
if(format == formatJSON)
|
|
263
|
+
{
|
|
264
|
+
document.getElementById("contentSpan").innerHTML += "JSON Format:<br/>";
|
|
265
|
+
if (json2 == null || json2 == "")
|
|
266
|
+
document.getElementById("contentSpan").innerHTML += "json empty";
|
|
267
|
+
else
|
|
268
|
+
{
|
|
269
|
+
document.getElementById("contentSpan").innerHTML += json2;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
else// if formated as KML
|
|
273
|
+
{
|
|
274
|
+
document.getElementById("contentSpan").innerHTML += "KML Format:<br/>";
|
|
275
|
+
//the following is just so you can view the KML properly on the html page.
|
|
276
|
+
//this isn't something you'd normally do.
|
|
277
|
+
if (json2 == null || json2 == "")
|
|
278
|
+
document.getElementById("contentSpan").innerHTML += "kml empty";
|
|
279
|
+
else
|
|
280
|
+
{
|
|
281
|
+
var formattedKML = "";
|
|
282
|
+
formattedKML = formatKMLForHTML(json2);
|
|
283
|
+
|
|
284
|
+
document.getElementById("contentSpan").innerHTML += formattedKML;
|
|
285
|
+
//document.getElementById("XMLHolder").innerHTML += json;//parseXMLString(json);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
armyc2.c2sd.renderer.utilities.ErrorLogger.LogMessage("multiPoints3.html","testRender","SECTOR RANGE FAN");
|
|
289
|
+
//SECTOR RANGE FAN EXAMPLE
|
|
290
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
291
|
+
|
|
292
|
+
var symbolCode3 = "GFFPAXS---****X"; //sector range fan
|
|
293
|
+
|
|
294
|
+
var controlPoints3 = "66.26700036208742,30.62755038706961";
|
|
295
|
+
var bbox3 = "66.25,30.627,66.27,30.63";//whole symbol will be calculated
|
|
296
|
+
//var bbox2 = "-180.0,-90.0,180.0,90.0";
|
|
297
|
+
var scale3 = 50000.0;
|
|
298
|
+
//distance (AM), azimuth (AN), and altitudeDepth (X) can all have multiple values so they are enclosed in brackets.
|
|
299
|
+
modifiers = "{\"modifiers\":{\"distance\":[300,1000],\"azimuth\":[315,45],\"altitudeDepth\":[0]}}";
|
|
300
|
+
|
|
301
|
+
//format = formatJSON;
|
|
302
|
+
format = formatKML;
|
|
303
|
+
var json3;
|
|
304
|
+
start = Date.now();
|
|
305
|
+
if(format == formatKML)
|
|
306
|
+
{
|
|
307
|
+
//RenderSymbol for Google Earth. KML format recommended.
|
|
308
|
+
for(var i = 0; i < renderCount; i++){
|
|
309
|
+
json3 = rendererMP.RenderSymbol("ID","Name","Description", symbolCode3, controlPoints3, "clampToGround",scale3, bbox3, modifiers,format);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
else
|
|
313
|
+
{
|
|
314
|
+
//RenderSymbol2D for 2D maps, JSON Recommended for simpler output.
|
|
315
|
+
for(var i = 0; i < renderCount; i++){
|
|
316
|
+
json3 = rendererMP.RenderSymbol2D("ID","Name","Description", symbolCode3, controlPoints3, pixelWidth, pixelHeight, bbox3, modifiers,format);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
stop = Date.now();
|
|
320
|
+
var timeSRF = (stop-start)/1000 / renderCount;
|
|
321
|
+
document.getElementById("contentSpan").innerHTML += "<br/><br/>Sector Range Fan: <br/>";
|
|
322
|
+
|
|
323
|
+
if(format == formatJSON)
|
|
324
|
+
{
|
|
325
|
+
document.getElementById("contentSpan").innerHTML += "JSON Format:<br/>";
|
|
326
|
+
if (json3 == null || json3 == "")
|
|
327
|
+
document.getElementById("contentSpan").innerHTML += "json empty";
|
|
328
|
+
else
|
|
329
|
+
{
|
|
330
|
+
document.getElementById("contentSpan").innerHTML += json3;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
else// if formated as KML
|
|
334
|
+
{
|
|
335
|
+
document.getElementById("contentSpan").innerHTML += "KML Format:<br/>";
|
|
336
|
+
//the following is just so you can view the KML properly on the html page.
|
|
337
|
+
//this isn't something you'd normally do.
|
|
338
|
+
if (json3 == null || json3 == "")
|
|
339
|
+
document.getElementById("contentSpan").innerHTML += "kml empty";
|
|
340
|
+
else
|
|
341
|
+
{
|
|
342
|
+
var formattedKML = "";
|
|
343
|
+
formattedKML = formatKMLForHTML(json3);
|
|
344
|
+
|
|
345
|
+
document.getElementById("contentSpan").innerHTML += formattedKML;
|
|
346
|
+
//document.getElementById("XMLHolder").innerHTML += json;//parseXMLString(json);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
////////////////////////////////////////////////////////////////////////////////////////
|
|
351
|
+
armyc2.c2sd.renderer.utilities.ErrorLogger.LogMessage("multiPoints3.html","testRender","FLOT");
|
|
352
|
+
//FLOT EXAMPLE
|
|
353
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
354
|
+
|
|
355
|
+
var symbolCode4 = "GHGPGLF-------X"; //flot
|
|
356
|
+
|
|
357
|
+
var controlPoints4 = "8.40185525443334,38.95854638813517 15.124217101733166,36.694658205882995 18.49694847529253,40.113591379080155 8.725267851897936,42.44678226078903 8.217048055882143,40.76041657400935";
|
|
358
|
+
var bbox4 = "5.76417051405295,34.86552015439102,20.291017309471272,45.188646318100695";
|
|
359
|
+
//var bbox2 = "-180.0,-90.0,180.0,90.0";
|
|
360
|
+
var scale4 = 5869879.2;
|
|
361
|
+
//distance (AM), azimuth (AN), and altitudeDepth (X) can all have multiple values so they are enclosed in brackets.
|
|
362
|
+
modifiers = "{\"modifiers\":{\"lineColor\":\"ffff0000\"}}";
|
|
363
|
+
|
|
364
|
+
//format = formatJSON;
|
|
365
|
+
format = formatKML;
|
|
366
|
+
|
|
367
|
+
var json4;
|
|
368
|
+
var start = Date.now();
|
|
369
|
+
if(format === formatKML)
|
|
370
|
+
{
|
|
371
|
+
//RenderSymbol for Google Earth. KML format recommended.
|
|
372
|
+
for(var i = 0; i < renderCount; i++){
|
|
373
|
+
json4 = rendererMP.RenderSymbol("ID","Name","Description", symbolCode4, controlPoints4, "clampToGround",scale4, bbox4, modifiers,format);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
else
|
|
377
|
+
{
|
|
378
|
+
//RenderSymbol2D for 2D maps, JSON Recommended for simpler output.
|
|
379
|
+
for(var i = 0; i < renderCount; i++){
|
|
380
|
+
json4 = rendererMP.RenderSymbol2D("ID","Name","Description", symbolCode4, controlPoints4, pixelWidth, pixelHeight, bbox4, modifiers,format);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
var stop = Date.now();
|
|
384
|
+
var time = stop - start;
|
|
385
|
+
var timeFlot = (stop-start)/1000 / renderCount;
|
|
386
|
+
//alert('Render 1k symbols: ' + (time/1000));
|
|
387
|
+
//console.log('Render 1k symbols: ' + (time/1000));
|
|
388
|
+
document.getElementById("contentSpan").innerHTML += "<br/><br/>FLOT: <br/>";
|
|
389
|
+
|
|
390
|
+
if(format === formatJSON)
|
|
391
|
+
{
|
|
392
|
+
document.getElementById("contentSpan").innerHTML += "JSON Format:<br/>";
|
|
393
|
+
if (json4 === null || json4 === "")
|
|
394
|
+
document.getElementById("contentSpan").innerHTML += "json empty";
|
|
395
|
+
else
|
|
396
|
+
{
|
|
397
|
+
document.getElementById("contentSpan").innerHTML += json4;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
else// if formated as KML
|
|
401
|
+
{
|
|
402
|
+
document.getElementById("contentSpan").innerHTML += "KML Format:<br/>";
|
|
403
|
+
//the following is just so you can view the KML properly on the html page.
|
|
404
|
+
//this isn't something you'd normally do.
|
|
405
|
+
if (json4 == null || json4 == "")
|
|
406
|
+
document.getElementById("contentSpan").innerHTML += "kml empty";
|
|
407
|
+
else
|
|
408
|
+
{
|
|
409
|
+
var formattedKML = "";
|
|
410
|
+
formattedKML = formatKMLForHTML(json4);
|
|
411
|
+
|
|
412
|
+
document.getElementById("contentSpan").innerHTML += formattedKML;
|
|
413
|
+
//document.getElementById("XMLHolder").innerHTML += json;//parseXMLString(json);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
*/
|
|
417
|
+
//document.getElementById("contentSpan").innerHTML += "<br/><br/>Ambush: "+ timeAmbush +" <br/>";
|
|
418
|
+
/*document.getElementById("contentSpan").innerHTML += "Assembly Area: "+ timeAA +" <br/>";
|
|
419
|
+
document.getElementById("contentSpan").innerHTML += "Sector Range Fan: "+ timeSRF +" <br/>";
|
|
420
|
+
document.getElementById("contentSpan").innerHTML += "FLOT: "+ timeFlot +" <br/>";*/
|
|
421
|
+
|
|
422
|
+
//webworker
|
|
423
|
+
/*var json4;
|
|
424
|
+
var data = {};
|
|
425
|
+
data.id = "ID";
|
|
426
|
+
data.name = "Name";
|
|
427
|
+
data.description = "description";
|
|
428
|
+
data.symbolID = symbolCode4;
|
|
429
|
+
data.points = controlPoints4;
|
|
430
|
+
data.altMode = "absolute";
|
|
431
|
+
data.scale = scale4;
|
|
432
|
+
data.bbox = bbox4;
|
|
433
|
+
data.modifiers = modifiers;
|
|
434
|
+
data.format = format;
|
|
435
|
+
data.pHeight = pixelHeight;
|
|
436
|
+
data.pWidth = pixelWidth;
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
var worker = new Worker('worker.js');
|
|
440
|
+
worker.postMessage(data);
|
|
441
|
+
worker.onmessage = function(e)
|
|
442
|
+
{
|
|
443
|
+
json4 = e.data;
|
|
444
|
+
document.getElementById("contentSpan").innerHTML += "<br/><br/>Sector Range Fan: <br/>";
|
|
445
|
+
|
|
446
|
+
if(format == formatJSON)
|
|
447
|
+
{
|
|
448
|
+
document.getElementById("contentSpan").innerHTML += "JSON Format:<br/>";
|
|
449
|
+
if (json4 == null || json4 == "")
|
|
450
|
+
document.getElementById("contentSpan").innerHTML += "json empty";
|
|
451
|
+
else
|
|
452
|
+
{
|
|
453
|
+
document.getElementById("contentSpan").innerHTML += json4;
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
else// if formated as KML
|
|
457
|
+
{
|
|
458
|
+
document.getElementById("contentSpan").innerHTML += "KML Format:<br/>";
|
|
459
|
+
//the following is just so you can view the KML properly on the html page.
|
|
460
|
+
//this isn't something you'd normally do.
|
|
461
|
+
if (json4 == null || json4 == "")
|
|
462
|
+
document.getElementById("contentSpan").innerHTML += "kml empty";
|
|
463
|
+
else
|
|
464
|
+
{
|
|
465
|
+
var formattedKML = "";
|
|
466
|
+
formattedKML = formatKMLForHTML(json4);
|
|
467
|
+
|
|
468
|
+
document.getElementById("contentSpan").innerHTML += formattedKML;
|
|
469
|
+
//document.getElementById("XMLHolder").innerHTML += json;//parseXMLString(json);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
};//*/
|
|
474
|
+
|
|
475
|
+
////////////////////////////////////////////////////////////////////////////////////////
|
|
476
|
+
//point performance test
|
|
477
|
+
/*
|
|
478
|
+
//var a = new Array();
|
|
479
|
+
var a = new java.util.ArrayList();
|
|
480
|
+
//var b = new Array();
|
|
481
|
+
var b = new java.util.ArrayList();//Array();
|
|
482
|
+
var c = new Array();
|
|
483
|
+
var count = 10000;
|
|
484
|
+
var startA = Date.now();
|
|
485
|
+
for(var i =0; i<count; i++)
|
|
486
|
+
{
|
|
487
|
+
//a.push(new armyc2.c2sd.graphics2d.Point2D(300,500));
|
|
488
|
+
//a[i].getY();
|
|
489
|
+
//a[i].getY();
|
|
490
|
+
|
|
491
|
+
a.add(new armyc2.c2sd.graphics2d.Point2D(300,500));
|
|
492
|
+
a.get(i).getX();
|
|
493
|
+
a.get(i).getY();
|
|
494
|
+
}
|
|
495
|
+
var stopA = Date.now();
|
|
496
|
+
var startB = Date.now();
|
|
497
|
+
var pt2dtemp = null;
|
|
498
|
+
for(var j =0; j<count; j++)
|
|
499
|
+
{
|
|
500
|
+
|
|
501
|
+
pt2dtemp = new armyc2.c2sd.graphics2d.Point2D();
|
|
502
|
+
pt2dtemp.setLocation(300,500);
|
|
503
|
+
|
|
504
|
+
//b.push(pt2dtemp);
|
|
505
|
+
//b[j].getY();
|
|
506
|
+
//b[j].getY();
|
|
507
|
+
|
|
508
|
+
b.add(pt2dtemp);
|
|
509
|
+
b.get(j).getX();
|
|
510
|
+
b.get(j).getY();
|
|
511
|
+
}
|
|
512
|
+
var stopB = Date.now();
|
|
513
|
+
var startC = Date.now();
|
|
514
|
+
for(var k =0; k<count; k++)
|
|
515
|
+
{
|
|
516
|
+
c.push(new milstd.renderer.SO.Point(300,500));
|
|
517
|
+
c[k].getX();
|
|
518
|
+
c[k].getY();
|
|
519
|
+
}
|
|
520
|
+
var stopC = Date.now();
|
|
521
|
+
|
|
522
|
+
var timeA = "<br/><br/>Point2D(x,y): <br/>" + (stopA - startA)/1000;
|
|
523
|
+
var timeB = "<br/><br/>Point2D(): <br/>" + (stopB - startB)/1000;
|
|
524
|
+
var timeC = "<br/><br/>SO.Point <br/>" + (stopC - startC)/1000;
|
|
525
|
+
|
|
526
|
+
//alert('Render 1k symbols: ' + (time/1000));
|
|
527
|
+
//console.log('Render 1k symbols: ' + (time/1000));
|
|
528
|
+
document.getElementById("contentSpan").innerHTML += timeA;
|
|
529
|
+
document.getElementById("contentSpan").innerHTML += timeB;
|
|
530
|
+
document.getElementById("contentSpan").innerHTML += timeC;
|
|
531
|
+
//*/
|
|
532
|
+
////////////////////////////////////////////////////////////////////////////////////////
|
|
533
|
+
|
|
534
|
+
} //end if
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
|
|
538
|
+
</script>
|
|
539
|
+
</head>
|
|
540
|
+
<body onload="setup();">
|
|
541
|
+
<img id="preview2" src="" alt="" height="100%" width="100%"><br>
|
|
542
|
+
Format: <select id = lbFormat>
|
|
543
|
+
<option>GeoJSON</option>
|
|
544
|
+
<option>GeoSVG</option>
|
|
545
|
+
</select>
|
|
546
|
+
<button id="testRender" type='button' onclick='testRender()'>Test Multipoint</button>
|
|
547
|
+
<button type='button' onclick='cleartext()'>Clear</button>
|
|
548
|
+
|
|
549
|
+
<span id='contentSpan'/>
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
</body>
|
|
555
|
+
|
|
556
|
+
</html>
|