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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +57 -0
  3. package/buildNode.bat +2 -0
  4. package/buildWeb.bat +2 -0
  5. package/dist/C5Ren.d.ts +6970 -0
  6. package/dist/C5Ren.js +2 -0
  7. package/dist/C5Ren.js.map +1 -0
  8. package/dist/LICENSE +201 -0
  9. package/dist/README.md +57 -0
  10. package/dist/armyc2.c5isr.renderer-mil-sym-ts-web-2.2.0.tgz +0 -0
  11. package/dist/manifest.json +4 -0
  12. package/dist/package.json +16 -0
  13. package/index.ts +169 -0
  14. package/package.bak +50 -0
  15. package/package.json +40 -0
  16. package/package.node.json +43 -0
  17. package/package.pack.json +19 -0
  18. package/package.packWeb.json +16 -0
  19. package/package.web.json +40 -0
  20. package/src/main/ts/android/graphics/Bitmap.ts +7 -0
  21. package/src/main/ts/android/graphics/Paint.ts +26 -0
  22. package/src/main/ts/android/graphics/Path.ts +78 -0
  23. package/src/main/ts/android/graphics/PointF.ts +14 -0
  24. package/src/main/ts/android/graphics/Rect.ts +18 -0
  25. package/src/main/ts/android/graphics/RectF.ts +50 -0
  26. package/src/main/ts/android/graphics/Region.ts +36 -0
  27. package/src/main/ts/android/graphics/Typeface.ts +11 -0
  28. package/src/main/ts/armyc2/c5isr/JavaLineArray/BasicShapes.ts +99 -0
  29. package/src/main/ts/armyc2/c5isr/JavaLineArray/CChannelPoints2.ts +34 -0
  30. package/src/main/ts/armyc2/c5isr/JavaLineArray/CELineArray.ts +193 -0
  31. package/src/main/ts/armyc2/c5isr/JavaLineArray/Channels.ts +2971 -0
  32. package/src/main/ts/armyc2/c5isr/JavaLineArray/DISMSupport.ts +4008 -0
  33. package/src/main/ts/armyc2/c5isr/JavaLineArray/POINT2.ts +93 -0
  34. package/src/main/ts/armyc2/c5isr/JavaLineArray/Shape2.ts +89 -0
  35. package/src/main/ts/armyc2/c5isr/JavaLineArray/TacticalLines.ts +515 -0
  36. package/src/main/ts/armyc2/c5isr/JavaLineArray/arraysupport.ts +5403 -0
  37. package/src/main/ts/armyc2/c5isr/JavaLineArray/countsupport.ts +1084 -0
  38. package/src/main/ts/armyc2/c5isr/JavaLineArray/flot.ts +2173 -0
  39. package/src/main/ts/armyc2/c5isr/JavaLineArray/lineutility.ts +4934 -0
  40. package/src/main/ts/armyc2/c5isr/JavaLineArray/ref.ts +7 -0
  41. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/Modifier2.ts +5601 -0
  42. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/P1.ts +14 -0
  43. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/TGLight.ts +648 -0
  44. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/clsChannelUtility.ts +647 -0
  45. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/clsMETOC.ts +2994 -0
  46. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/clsUtility.ts +2663 -0
  47. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/mdlGeodesic.ts +669 -0
  48. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsClipPolygon2.ts +971 -0
  49. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsClipQuad.ts +871 -0
  50. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsRenderer.ts +3507 -0
  51. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsRenderer2.ts +500 -0
  52. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsUtility.ts +1089 -0
  53. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsUtilityCPOF.ts +2656 -0
  54. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsUtilityGE.ts +1419 -0
  55. package/src/main/ts/armyc2/c5isr/data/genc.json +1407 -0
  56. package/src/main/ts/armyc2/c5isr/data/msd.json +17311 -0
  57. package/src/main/ts/armyc2/c5isr/data/mse.json +18500 -0
  58. package/src/main/ts/armyc2/c5isr/data/svgd.json +31214 -0
  59. package/src/main/ts/armyc2/c5isr/data/svge.json +30558 -0
  60. package/src/main/ts/armyc2/c5isr/graphics2d/AffineTransform.ts +10 -0
  61. package/src/main/ts/armyc2/c5isr/graphics2d/Area.ts +437 -0
  62. package/src/main/ts/armyc2/c5isr/graphics2d/BasicStroke.ts +429 -0
  63. package/src/main/ts/armyc2/c5isr/graphics2d/BasicTypes.ts +7 -0
  64. package/src/main/ts/armyc2/c5isr/graphics2d/BufferedImage.ts +35 -0
  65. package/src/main/ts/armyc2/c5isr/graphics2d/Font.ts +111 -0
  66. package/src/main/ts/armyc2/c5isr/graphics2d/FontMetrics.ts +29 -0
  67. package/src/main/ts/armyc2/c5isr/graphics2d/FontRenderContext.ts +18 -0
  68. package/src/main/ts/armyc2/c5isr/graphics2d/GeneralPath.ts +211 -0
  69. package/src/main/ts/armyc2/c5isr/graphics2d/Graphics2D.ts +80 -0
  70. package/src/main/ts/armyc2/c5isr/graphics2d/IPathIterator.ts +33 -0
  71. package/src/main/ts/armyc2/c5isr/graphics2d/ImageIO.ts +16 -0
  72. package/src/main/ts/armyc2/c5isr/graphics2d/Line2D.ts +726 -0
  73. package/src/main/ts/armyc2/c5isr/graphics2d/PathIterator.ts +141 -0
  74. package/src/main/ts/armyc2/c5isr/graphics2d/Point.ts +112 -0
  75. package/src/main/ts/armyc2/c5isr/graphics2d/Point2D.ts +261 -0
  76. package/src/main/ts/armyc2/c5isr/graphics2d/Polygon.ts +391 -0
  77. package/src/main/ts/armyc2/c5isr/graphics2d/Rectangle.ts +567 -0
  78. package/src/main/ts/armyc2/c5isr/graphics2d/Rectangle2D.ts +445 -0
  79. package/src/main/ts/armyc2/c5isr/graphics2d/Shape.ts +31 -0
  80. package/src/main/ts/armyc2/c5isr/graphics2d/Stroke.ts +18 -0
  81. package/src/main/ts/armyc2/c5isr/graphics2d/TextLayout.ts +45 -0
  82. package/src/main/ts/armyc2/c5isr/graphics2d/TexturePaint.ts +25 -0
  83. package/src/main/ts/armyc2/c5isr/renderer/IIconRenderer.ts +15 -0
  84. package/src/main/ts/armyc2/c5isr/renderer/IconRenderer.ts +22 -0
  85. package/src/main/ts/armyc2/c5isr/renderer/MilStdIconRenderer.ts +269 -0
  86. package/src/main/ts/armyc2/c5isr/renderer/ModifierRenderer.ts +9882 -0
  87. package/src/main/ts/armyc2/c5isr/renderer/PatternFillRenderer.ts +146 -0
  88. package/src/main/ts/armyc2/c5isr/renderer/SinglePointSVGRenderer.ts +1265 -0
  89. package/src/main/ts/armyc2/c5isr/renderer/shapes/arc.ts +64 -0
  90. package/src/main/ts/armyc2/c5isr/renderer/shapes/bcurve.ts +95 -0
  91. package/src/main/ts/armyc2/c5isr/renderer/shapes/ellipse.ts +93 -0
  92. package/src/main/ts/armyc2/c5isr/renderer/shapes/line.ts +114 -0
  93. package/src/main/ts/armyc2/c5isr/renderer/shapes/path.ts +555 -0
  94. package/src/main/ts/armyc2/c5isr/renderer/shapes/pathiterator.ts +62 -0
  95. package/src/main/ts/armyc2/c5isr/renderer/shapes/point.ts +120 -0
  96. package/src/main/ts/armyc2/c5isr/renderer/shapes/rectangle.ts +431 -0
  97. package/src/main/ts/armyc2/c5isr/renderer/shapes/roundedrectangle.ts +99 -0
  98. package/src/main/ts/armyc2/c5isr/renderer/shapes/types.ts +25 -0
  99. package/src/main/ts/armyc2/c5isr/renderer/shapes/utilities.ts +203 -0
  100. package/src/main/ts/armyc2/c5isr/renderer/utilities/AffiliationColors.ts +104 -0
  101. package/src/main/ts/armyc2/c5isr/renderer/utilities/Color.ts +481 -0
  102. package/src/main/ts/armyc2/c5isr/renderer/utilities/DistanceUnit.ts +40 -0
  103. package/src/main/ts/armyc2/c5isr/renderer/utilities/DrawRules.ts +1323 -0
  104. package/src/main/ts/armyc2/c5isr/renderer/utilities/EntityCode.ts +51 -0
  105. package/src/main/ts/armyc2/c5isr/renderer/utilities/ErrorLogger.ts +736 -0
  106. package/src/main/ts/armyc2/c5isr/renderer/utilities/GENCLookup.ts +106 -0
  107. package/src/main/ts/armyc2/c5isr/renderer/utilities/GeoPixelConversion3D.ts +84 -0
  108. package/src/main/ts/armyc2/c5isr/renderer/utilities/IMultiPointRenderer.ts +87 -0
  109. package/src/main/ts/armyc2/c5isr/renderer/utilities/IPointConversion.ts +34 -0
  110. package/src/main/ts/armyc2/c5isr/renderer/utilities/ImageInfo.ts +324 -0
  111. package/src/main/ts/armyc2/c5isr/renderer/utilities/LRUCache.ts +127 -0
  112. package/src/main/ts/armyc2/c5isr/renderer/utilities/LRUEntry.ts +18 -0
  113. package/src/main/ts/armyc2/c5isr/renderer/utilities/LogLevel.ts +111 -0
  114. package/src/main/ts/armyc2/c5isr/renderer/utilities/MODrawRules.ts +219 -0
  115. package/src/main/ts/armyc2/c5isr/renderer/utilities/MSInfo.ts +1008 -0
  116. package/src/main/ts/armyc2/c5isr/renderer/utilities/MSLookup.ts +882 -0
  117. package/src/main/ts/armyc2/c5isr/renderer/utilities/MilStdAttributes.ts +380 -0
  118. package/src/main/ts/armyc2/c5isr/renderer/utilities/MilStdSymbol.ts +797 -0
  119. package/src/main/ts/armyc2/c5isr/renderer/utilities/Modifiers.ts +1699 -0
  120. package/src/main/ts/armyc2/c5isr/renderer/utilities/PointConversion.ts +178 -0
  121. package/src/main/ts/armyc2/c5isr/renderer/utilities/PointConversionDummy.ts +45 -0
  122. package/src/main/ts/armyc2/c5isr/renderer/utilities/PointConverter3D.ts +126 -0
  123. package/src/main/ts/armyc2/c5isr/renderer/utilities/RectUtilities.ts +118 -0
  124. package/src/main/ts/armyc2/c5isr/renderer/utilities/RendererException.ts +11 -0
  125. package/src/main/ts/armyc2/c5isr/renderer/utilities/RendererSettings.ts +1201 -0
  126. package/src/main/ts/armyc2/c5isr/renderer/utilities/RendererUtilities.ts +591 -0
  127. package/src/main/ts/armyc2/c5isr/renderer/utilities/SVGInfo.ts +29 -0
  128. package/src/main/ts/armyc2/c5isr/renderer/utilities/SVGLookup.ts +753 -0
  129. package/src/main/ts/armyc2/c5isr/renderer/utilities/SVGSymbolInfo.ts +137 -0
  130. package/src/main/ts/armyc2/c5isr/renderer/utilities/SVGTextInfo.ts +438 -0
  131. package/src/main/ts/armyc2/c5isr/renderer/utilities/SettingsChangedEvent.ts +19 -0
  132. package/src/main/ts/armyc2/c5isr/renderer/utilities/SettingsChangedEventListener.ts +10 -0
  133. package/src/main/ts/armyc2/c5isr/renderer/utilities/SettingsEventListener.ts +5 -0
  134. package/src/main/ts/armyc2/c5isr/renderer/utilities/Shape2SVG.ts +404 -0
  135. package/src/main/ts/armyc2/c5isr/renderer/utilities/ShapeInfo.ts +525 -0
  136. package/src/main/ts/armyc2/c5isr/renderer/utilities/ShapeUtilities.ts +55 -0
  137. package/src/main/ts/armyc2/c5isr/renderer/utilities/SymbolDimensionInfo.ts +36 -0
  138. package/src/main/ts/armyc2/c5isr/renderer/utilities/SymbolID.ts +1055 -0
  139. package/src/main/ts/armyc2/c5isr/renderer/utilities/SymbolUtilities.ts +2085 -0
  140. package/src/main/ts/armyc2/c5isr/renderer/utilities/TextInfo.ts +157 -0
  141. package/src/main/ts/armyc2/c5isr/web/render/GeoPixelConversion.ts +86 -0
  142. package/src/main/ts/armyc2/c5isr/web/render/MultiPointHandler.ts +3798 -0
  143. package/src/main/ts/armyc2/c5isr/web/render/MultiPointHandlerSVG.ts +412 -0
  144. package/src/main/ts/armyc2/c5isr/web/render/PointConverter.ts +124 -0
  145. package/src/main/ts/armyc2/c5isr/web/render/SymbolModifiers.ts +26 -0
  146. package/src/main/ts/armyc2/c5isr/web/render/WebRenderer.ts +677 -0
  147. package/src/main/ts/armyc2/c5isr/web/render/utilities/JavaRendererUtilities.ts +484 -0
  148. package/src/main/ts/armyc2/c5isr/web/render/utilities/LineInfo.ts +62 -0
  149. package/src/main/ts/armyc2/c5isr/web/render/utilities/SymbolInfo.ts +46 -0
  150. package/src/main/ts/armyc2/c5isr/web/render/utilities/TextInfo.ts +51 -0
  151. package/src/main/ts/org/gavaghan/geodesy/Angle.ts +31 -0
  152. package/src/main/ts/org/gavaghan/geodesy/Ellipsoid.ts +71 -0
  153. package/src/main/ts/org/gavaghan/geodesy/GeodeticCalculator.ts +200 -0
  154. package/src/main/ts/org/gavaghan/geodesy/GeodeticCurve.ts +55 -0
  155. package/src/main/ts/org/gavaghan/geodesy/GeodeticMeasurement.ts +68 -0
  156. package/src/main/ts/org/gavaghan/geodesy/GlobalCoordinates.ts +103 -0
  157. package/src/main/ts/org/gavaghan/geodesy/GlobalPosition.ts +90 -0
  158. package/test/ExportSPImages.js +692 -0
  159. package/test/MPWW.html +556 -0
  160. package/test/MPWorker.js +318 -0
  161. package/test/SPWorker.js +233 -0
  162. package/test/SVGWW.html +363 -0
  163. package/test/singlePointTester3.html +751 -0
  164. package/tsconfig.json +54 -0
  165. package/typedoc.json +30 -0
  166. package/updateVersion.js +21 -0
  167. package/webpack.config.js +34 -0
  168. package/webpackn.config.js +28 -0
  169. package/webpackr.config.js +47 -0
  170. package/webpackw.config.js +23 -0
@@ -0,0 +1,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
+