@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,64 @@
|
|
|
1
|
+
import { Rectangle } from "./rectangle";
|
|
2
|
+
import { ShapeTypes } from "./types";
|
|
3
|
+
|
|
4
|
+
export class Arc
|
|
5
|
+
{
|
|
6
|
+
|
|
7
|
+
private x:number;
|
|
8
|
+
private y:number;
|
|
9
|
+
private r:number;
|
|
10
|
+
private sa:number;
|
|
11
|
+
private ea:number;
|
|
12
|
+
private rectangle:Rectangle;
|
|
13
|
+
|
|
14
|
+
constructor(x:number,y:number,r:number,sa:number,ea:number)
|
|
15
|
+
{
|
|
16
|
+
|
|
17
|
+
this.x = x,
|
|
18
|
+
this.y = y,
|
|
19
|
+
this.r = r,
|
|
20
|
+
this.sa = sa * (Math.PI / 180),
|
|
21
|
+
this.ea = ea * (Math.PI / 180);
|
|
22
|
+
//not accurate, covers the whole circle, not just the arc.
|
|
23
|
+
this.rectangle = new Rectangle(x-r,y-r,r*2,r*2);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
getShapeType():string
|
|
27
|
+
{
|
|
28
|
+
return ShapeTypes.ARC;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
getBounds():Rectangle
|
|
32
|
+
{
|
|
33
|
+
return new Rectangle(this.rectangle.getX(),
|
|
34
|
+
this.rectangle.getY(),
|
|
35
|
+
this.rectangle.getWidth(),
|
|
36
|
+
this.rectangle.getHeight());
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
shift(x:number,y:number){
|
|
41
|
+
this.x +=x;
|
|
42
|
+
this.y +=y;
|
|
43
|
+
this.rectangle.shift(x,y);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
setPath(context:CanvasRenderingContext2D){
|
|
47
|
+
|
|
48
|
+
//context.beginPath();
|
|
49
|
+
context.arc(this.x,this.y,this.r,this.sa,this.ea,false);//counter-clockwise=false
|
|
50
|
+
|
|
51
|
+
};
|
|
52
|
+
stroke(context:CanvasRenderingContext2D){
|
|
53
|
+
context.beginPath();
|
|
54
|
+
this.setPath(context);
|
|
55
|
+
context.stroke();
|
|
56
|
+
};
|
|
57
|
+
fill(context:CanvasRenderingContext2D){
|
|
58
|
+
context.beginPath();
|
|
59
|
+
this.setPath(context);
|
|
60
|
+
context.fill();
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
}
|
|
64
|
+
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { Point } from "./point";
|
|
2
|
+
import { Rectangle } from "./rectangle";
|
|
3
|
+
|
|
4
|
+
export class BCurve
|
|
5
|
+
{
|
|
6
|
+
|
|
7
|
+
private x1 = 0;
|
|
8
|
+
private y1 = 0;
|
|
9
|
+
private x2 = 0;
|
|
10
|
+
private y2 = 0;
|
|
11
|
+
private x3 = 0;
|
|
12
|
+
private y3 = 0;
|
|
13
|
+
private x4 = 0;
|
|
14
|
+
private y4 = 0;
|
|
15
|
+
private rectangle:Rectangle;
|
|
16
|
+
|
|
17
|
+
constructor(x1,y1,x2,y2,x3,y3,x4,y4)
|
|
18
|
+
{
|
|
19
|
+
|
|
20
|
+
//will be larger than the actual curve.
|
|
21
|
+
this.rectangle = new Rectangle(x1,y1,1,1);
|
|
22
|
+
this.rectangle.unionPoint(new Point(x2,y2));
|
|
23
|
+
this.rectangle.unionPoint(new Point(x3,y3));
|
|
24
|
+
this.rectangle.unionPoint(new Point(x4,y4));
|
|
25
|
+
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
getShapeType():string
|
|
29
|
+
{
|
|
30
|
+
return "BCURVE";//armyc2.c2sd.renderer.so.ShapeTypes.BCURVE;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
getBounds():Rectangle{
|
|
34
|
+
return new Rectangle(this.rectangle.getX()-1,
|
|
35
|
+
this.rectangle.getY()-1,
|
|
36
|
+
this.rectangle.getWidth()+2,
|
|
37
|
+
this.rectangle.getHeight()+2);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
shift(x:number,y:number){
|
|
41
|
+
this.x1 += x;
|
|
42
|
+
this.y1 += y;
|
|
43
|
+
this.x2 += x;
|
|
44
|
+
this.y2 += y;
|
|
45
|
+
this.x3 += x;
|
|
46
|
+
this.y3 += y;
|
|
47
|
+
this.x4 += x;
|
|
48
|
+
this.y4 += y;
|
|
49
|
+
this.rectangle.shift(x,y);
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
setPath(context:CanvasRenderingContext2D){
|
|
53
|
+
|
|
54
|
+
//context.beginPath();
|
|
55
|
+
context.moveTo(this.x1,this.y1);
|
|
56
|
+
context.bezierCurveTo(this.x2,this.y2,this.x3,this.y3,this.x4,this.y4);//counter-clockwise=false
|
|
57
|
+
|
|
58
|
+
};
|
|
59
|
+
stroke(context:CanvasRenderingContext2D){
|
|
60
|
+
context.beginPath();
|
|
61
|
+
this.setPath(context);
|
|
62
|
+
context.stroke();
|
|
63
|
+
};
|
|
64
|
+
fill(context:CanvasRenderingContext2D){
|
|
65
|
+
context.beginPath();
|
|
66
|
+
this.setPath(context);
|
|
67
|
+
context.fill();
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
toSVGElement(stroke:string | null, strokeWidth:number, fill:string | null):string
|
|
71
|
+
{
|
|
72
|
+
// Q400,50 600,300
|
|
73
|
+
let path = '<path d="M' + this.x1 + ' ' + this.y1;
|
|
74
|
+
path += "C" + this.x2 + " " + this.y2 + " " + this.x3 + " " + this.y3 + " " + this.x4 + " " + this.y4 + '"';
|
|
75
|
+
|
|
76
|
+
if(stroke)
|
|
77
|
+
path += ' stroke="' + stroke + '"';
|
|
78
|
+
|
|
79
|
+
if(strokeWidth)
|
|
80
|
+
path += ' stroke-width="' + (strokeWidth) + '"';
|
|
81
|
+
else if(stroke)
|
|
82
|
+
path += ' stroke-width="2"';
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
if(fill)
|
|
86
|
+
path += ' fill="' + fill + '"';
|
|
87
|
+
else
|
|
88
|
+
path += ' fill="none"';
|
|
89
|
+
|
|
90
|
+
path += '/>';
|
|
91
|
+
return path;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
}
|
|
95
|
+
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Rectangle } from "./rectangle";
|
|
2
|
+
import { ShapeTypes } from "./types";
|
|
3
|
+
|
|
4
|
+
export class Ellipse
|
|
5
|
+
{
|
|
6
|
+
private rectangle:Rectangle
|
|
7
|
+
|
|
8
|
+
constructor(x:number,y:number,w:number,h:number)
|
|
9
|
+
{
|
|
10
|
+
this.rectangle = new Rectangle(x,y,w,h);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
getShapeType():string
|
|
14
|
+
{
|
|
15
|
+
return ShapeTypes.ELLIPSE;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
getBounds():Rectangle
|
|
19
|
+
{
|
|
20
|
+
return new Rectangle(this.rectangle.getX()-1,
|
|
21
|
+
this.rectangle.getY()-1,
|
|
22
|
+
this.rectangle.getWidth()+2,
|
|
23
|
+
this.rectangle.getHeight()+2);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
shift(x:number,y:number){
|
|
27
|
+
this.rectangle.shift(x,y);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
setPath(context:CanvasRenderingContext2D){
|
|
31
|
+
var x = this.rectangle.getX(),
|
|
32
|
+
y = this.rectangle.getY(),
|
|
33
|
+
w = this.rectangle.getWidth(),
|
|
34
|
+
h = this.rectangle.getHeight();
|
|
35
|
+
|
|
36
|
+
var kappa = 0.5522848,
|
|
37
|
+
ox = (w/2)*kappa,//control point offset horizontal
|
|
38
|
+
oy = (h/2)*kappa,//control point offset vertical
|
|
39
|
+
xe = x + w, //x-end
|
|
40
|
+
ye = y + h, //y-end
|
|
41
|
+
xm = x + w / 2, //x-middle
|
|
42
|
+
ym = y + h / 2; //y-middle
|
|
43
|
+
|
|
44
|
+
//context.beginPath();
|
|
45
|
+
context.moveTo(x,ym);
|
|
46
|
+
context.bezierCurveTo(x,ym-oy,xm-ox,y,xm,y);
|
|
47
|
+
context.bezierCurveTo(xm + ox,y,xe,ym - oy,xe,ym);
|
|
48
|
+
context.bezierCurveTo(xe,ym+oy,xm+ox,ye,xm,ye);
|
|
49
|
+
context.bezierCurveTo(xm-ox,ye,x,ym+oy,x,ym);
|
|
50
|
+
context.closePath();
|
|
51
|
+
}
|
|
52
|
+
stroke(context:CanvasRenderingContext2D):void
|
|
53
|
+
{
|
|
54
|
+
context.beginPath();
|
|
55
|
+
this.setPath(context);
|
|
56
|
+
context.stroke();
|
|
57
|
+
}
|
|
58
|
+
fill(context:CanvasRenderingContext2D):void
|
|
59
|
+
{
|
|
60
|
+
context.beginPath();
|
|
61
|
+
this.setPath(context);
|
|
62
|
+
context.fill();
|
|
63
|
+
}
|
|
64
|
+
toSVGElement(stroke:string | null, strokeWidth:number, fill:string | null):string
|
|
65
|
+
{
|
|
66
|
+
var cx = this.rectangle.getCenterX();
|
|
67
|
+
var cy = this.rectangle.getCenterY();
|
|
68
|
+
var rx = this.rectangle.getWidth()/2;
|
|
69
|
+
var ry = this.rectangle.getHeight()/2;
|
|
70
|
+
var line = '<ellipse cx="' + cx + '" cy="' + cy;
|
|
71
|
+
line += '" rx="' + rx + '" ry="' + ry + '"';
|
|
72
|
+
|
|
73
|
+
if(strokeWidth)
|
|
74
|
+
line += ' stroke-width="' + strokeWidth + '"';
|
|
75
|
+
else if(stroke)
|
|
76
|
+
line += ' stroke-width="2"';
|
|
77
|
+
|
|
78
|
+
if(stroke)
|
|
79
|
+
line += ' stroke="' + stroke + '"';
|
|
80
|
+
|
|
81
|
+
if(fill)
|
|
82
|
+
line += ' fill="' + fill + '"';
|
|
83
|
+
else
|
|
84
|
+
line += ' fill="none"';
|
|
85
|
+
|
|
86
|
+
line += '/>';
|
|
87
|
+
return line;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Point } from "./point";
|
|
2
|
+
import { ShapeTypes } from "./types";
|
|
3
|
+
import { Rectangle } from "./rectangle";
|
|
4
|
+
import { ShapeUtilties } from "./utilities";
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
export class Line
|
|
8
|
+
{
|
|
9
|
+
private pt1:Point;
|
|
10
|
+
private pt2:Point;
|
|
11
|
+
private rectangle:Rectangle
|
|
12
|
+
|
|
13
|
+
constructor(x1:number,y1:number,x2:number,y2:number) {
|
|
14
|
+
|
|
15
|
+
this.pt1 = new Point(x1,y1);
|
|
16
|
+
this.pt2 = new Point(x2,y2);
|
|
17
|
+
|
|
18
|
+
this.rectangle = new Rectangle(x1,y1,1,1);
|
|
19
|
+
this.rectangle.unionPoint(new Point(x2,y2));
|
|
20
|
+
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
// <editor-fold defaultstate="collapsed" desc="Public Functions">
|
|
24
|
+
getShapeType(){
|
|
25
|
+
return ShapeTypes.LINE;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
getBounds(){
|
|
29
|
+
return new Rectangle(this.rectangle.getX(),
|
|
30
|
+
this.rectangle.getY(),
|
|
31
|
+
this.rectangle.getWidth(),
|
|
32
|
+
this.rectangle.getHeight());
|
|
33
|
+
};
|
|
34
|
+
getP1()
|
|
35
|
+
{
|
|
36
|
+
return this.pt1;
|
|
37
|
+
};
|
|
38
|
+
getP2()
|
|
39
|
+
{
|
|
40
|
+
return this.pt2;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
shift(x:number,y:number){
|
|
44
|
+
|
|
45
|
+
this.rectangle.shift(x,y);
|
|
46
|
+
|
|
47
|
+
this.pt1.shift(x,y);
|
|
48
|
+
this.pt2.shift(x,y);
|
|
49
|
+
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Tests if the specified line segment intersects this line segment.
|
|
53
|
+
* @param line the specified <code>Line</code>
|
|
54
|
+
* @return <code>true</code> if this line segment and the specified line
|
|
55
|
+
* segment intersect each other;
|
|
56
|
+
* <code>false</code> otherwise.
|
|
57
|
+
*/
|
|
58
|
+
intersectsLine(line:Line)
|
|
59
|
+
{
|
|
60
|
+
return ShapeUtilties.linesIntersect(
|
|
61
|
+
this.getP1().getX(),this.getP1().getY(),
|
|
62
|
+
this.getP2().getX(),this.getP2().getY(),
|
|
63
|
+
line.getP1().getX(),line.getP1().getY(),
|
|
64
|
+
line.getP2().getX(),line.getP2().getY());
|
|
65
|
+
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
setPath(context:CanvasRenderingContext2D){
|
|
70
|
+
|
|
71
|
+
//context.beginPath();
|
|
72
|
+
context.moveTo(this.pt1.getX(),this.pt1.getY());
|
|
73
|
+
context.lineTo(this.pt2.getX(),this.pt2.getY());
|
|
74
|
+
|
|
75
|
+
};
|
|
76
|
+
stroke(context:CanvasRenderingContext2D){
|
|
77
|
+
context.beginPath();
|
|
78
|
+
context.moveTo(this.pt1.getX(),this.pt1.getY());
|
|
79
|
+
context.lineTo(this.pt2.getX(),this.pt2.getY());
|
|
80
|
+
context.stroke();
|
|
81
|
+
};
|
|
82
|
+
fill(context:CanvasRenderingContext2D){
|
|
83
|
+
context.beginPath();
|
|
84
|
+
context.moveTo(this.pt1.getX(),this.pt1.getY());
|
|
85
|
+
context.lineTo(this.pt2.getX(),this.pt2.getY());
|
|
86
|
+
context.fill();
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
toSVGElement(stroke:string | null, strokeWidth:number, fill:string | null):string
|
|
90
|
+
{
|
|
91
|
+
var line = '<line x1="' + this.pt1.getX() + '" y1="' + this.pt1.getY();
|
|
92
|
+
line += '" x2="' + this.pt2.getX() + '" y2="' + this.pt2.getY() + '"';
|
|
93
|
+
|
|
94
|
+
if(strokeWidth)
|
|
95
|
+
line += ' stroke-width="' + strokeWidth + '"';
|
|
96
|
+
else if(stroke)
|
|
97
|
+
line += ' stroke-width="2"';
|
|
98
|
+
|
|
99
|
+
if(stroke)
|
|
100
|
+
line += ' stroke="' + stroke + '"';
|
|
101
|
+
|
|
102
|
+
if(fill)
|
|
103
|
+
line += ' fill="' + fill + '"';
|
|
104
|
+
else
|
|
105
|
+
line += ' fill="none"';
|
|
106
|
+
|
|
107
|
+
line += '/>';
|
|
108
|
+
return line;
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|