Changeset 32394 in osm for applications/editors/josm/plugins/seachart/src/symbols/Topmarks.java
- Timestamp:
- 2016-06-24T03:48:12+02:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/seachart/src/symbols/Topmarks.java
r32393 r32394 12 12 import java.awt.BasicStroke; 13 13 import java.awt.Color; 14 import java.awt.geom.*; 14 import java.awt.geom.AffineTransform; 15 import java.awt.geom.Ellipse2D; 16 import java.awt.geom.GeneralPath; 17 import java.awt.geom.Line2D; 18 import java.awt.geom.Path2D; 19 import java.awt.geom.Rectangle2D; 15 20 import java.util.EnumMap; 16 21 17 import s57.S57val.*; 18 import symbols.Symbols.*; 22 import s57.S57val.BoySHP; 23 import s57.S57val.TopSHP; 24 import symbols.Symbols.Delta; 25 import symbols.Symbols.Form; 26 import symbols.Symbols.Handle; 27 import symbols.Symbols.Instr; 28 import symbols.Symbols.Symbol; 19 29 20 30 public class Topmarks { 21 22 public static final Symbol RadarReflector = new Symbol(); 23 static { 24 RadarReflector.add(new Instr(Form.BBOX, new Rectangle2D.Double(-50,-40,100,40))); 25 RadarReflector.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 26 RadarReflector.add(new Instr(Form.FILL, Color.black)); 27 Path2D.Double p = new Path2D.Double(); p.moveTo(-30,-3); p.quadTo(0, -40, 30, -3); p.moveTo(0,-20); p.lineTo(0,-37); 28 p.moveTo(-30, -3); p.lineTo(-43,-14); p.moveTo(30, -3); p.lineTo(44,-14); p.moveTo(-15, -14); p.lineTo(-25,-30); p.moveTo(15, -14); p.lineTo(25,-30); 29 RadarReflector.add(new Instr(Form.PLIN, p)); 30 } 31 public static final Symbol TopBesom = new Symbol(); 32 static { 33 TopBesom.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20,-80,40,80))); 34 TopBesom.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 35 TopBesom.add(new Instr(Form.FILL, Color.black)); 36 Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,0.0); p.lineTo(0.0,-30.0); p.lineTo(15.0,0.0); p.moveTo(0.0,0.0); p.lineTo(0.0,-28.0); 37 TopBesom.add(new Instr(Form.PLIN, p)); 38 } 39 public static final Symbol TopIBesom = new Symbol(); 40 static { 41 TopIBesom.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20,-80,40,80))); 42 TopIBesom.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 43 TopIBesom.add(new Instr(Form.FILL, Color.black)); 44 Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-30.0); p.lineTo(0.0,0.0); p.lineTo(15.0,-30.0); 45 TopIBesom.add(new Instr(Form.PLIN, p)); 46 } 47 public static final Symbol TopBoard = new Symbol(); 48 static { 49 TopBoard.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-60,60,60))); 50 Symbol colours = new Symbol(); 51 Path2D.Double p = new Path2D.Double(); p.moveTo(-29,-1); p.lineTo(-29,-59); p.lineTo(29,-59); p.lineTo(29,-1); p.closePath(); 52 colours.add(new Instr(Form.P1, p)); 53 p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD); 54 p.moveTo(-29,-1); p.lineTo(-29,-59); p.lineTo(29,-59); p.lineTo(29,-1); p.closePath(); 55 p.moveTo(-19,-10); p.lineTo(-19,-49); p.lineTo(19,-49); p.lineTo(19,-10); p.closePath(); 56 colours.add(new Instr(Form.B1, p)); 57 p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD); 58 p.moveTo(-29,-1); p.lineTo(-29,-30); p.lineTo(29,-30); p.lineTo(29,-59); p.lineTo(0,-59); p.lineTo(0,-1); p.closePath(); 59 colours.add(new Instr(Form.S2, p)); 60 p = new Path2D.Double(); p.moveTo(-29,-1); p.lineTo(-29,-30); p.lineTo(0,-30); p.lineTo(0,-1); p.closePath(); 61 colours.add(new Instr(Form.S3, p)); 62 p = new Path2D.Double(); p.moveTo(0,-1); p.lineTo(0,-30); p.lineTo(29,-30); p.lineTo(29,-1); p.closePath(); 63 colours.add(new Instr(Form.S4, p)); 64 TopBoard.add(new Instr(Form.COLR, colours)); 65 TopBoard.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 66 TopBoard.add(new Instr(Form.FILL, Color.black)); 67 p = new Path2D.Double(); p.moveTo(-29,-1); p.lineTo(-29,-59); p.lineTo(29,-59); p.lineTo(29.0,-1); p.closePath(); 68 TopBoard.add(new Instr(Form.PLIN, p)); 69 } 70 public static final Symbol TopCan = new Symbol(); 71 static { 72 TopCan.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20,-80,40,80))); 73 Symbol colours = new Symbol(); 74 Path2D.Double p = new Path2D.Double(); p.moveTo(-12.0,-15.0); p.lineTo(-12.0,-48.0); p.lineTo(12.0,-48.0); p.lineTo(12.0,-15.0); p.closePath(); 75 colours.add(new Instr(Form.P1, p)); 76 TopCan.add(new Instr(Form.COLR, colours)); 77 TopCan.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 78 TopCan.add(new Instr(Form.FILL, Color.black)); 79 TopCan.add(new Instr(Form.LINE, new Line2D.Double(0,0,0,-15))); 80 p = new Path2D.Double(); p.moveTo(-12.0,-15.0); p.lineTo(-12.0,-48.0); p.lineTo(12.0,-48.0); p.lineTo(12.0,-15.0); p.closePath(); 81 TopCan.add(new Instr(Form.PLIN, p)); 82 } 83 public static final Symbol TopCanSphere = new Symbol(); 84 public static final Symbol TopCircle = new Symbol(); 85 public static final Symbol TopCircleTriangle = new Symbol(); 86 public static final Symbol TopCone = new Symbol(); 87 static { 88 TopCone.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20,-80,40,80))); 89 Symbol colours = new Symbol(); 90 Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-15.0); p.lineTo(0.0,-45.0); p.lineTo(15.0,-15.0); p.closePath(); 91 colours.add(new Instr(Form.P1, p)); 92 TopCone.add(new Instr(Form.COLR, colours)); 93 TopCone.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 94 TopCone.add(new Instr(Form.FILL, Color.black)); 95 TopCone.add(new Instr(Form.LINE, new Line2D.Double(0,0,0,-15))); 96 p = new Path2D.Double(); p.moveTo(-15.0,-15.0); p.lineTo(0.0,-45.0); p.lineTo(15.0,-15.0); p.closePath(); 97 TopCone.add(new Instr(Form.PLIN, p)); 98 } 99 public static final Symbol TopConeSphere = new Symbol(); 100 static { 101 TopConeSphere.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20,-80,40,80))); 102 Symbol colours = new Symbol(); 103 Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-47.0); p.lineTo(0.0,-77.0); p.lineTo(15.0,-47.0); p.closePath(); 104 p.moveTo(-14.0,-28.0); p.curveTo(-14.0,-46.7,14.0,-46.7,14.0,-28.0); p.curveTo(14.0,-9.3,-14.0,-9.3,-14.0,-28.0); p.closePath(); 105 colours.add(new Instr(Form.P1, p)); 106 TopConeSphere.add(new Instr(Form.COLR, colours)); 107 TopConeSphere.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 108 TopConeSphere.add(new Instr(Form.FILL, Color.black)); 109 TopConeSphere.add(new Instr(Form.LINE, new Line2D.Double(0,0,0,-15))); 110 TopConeSphere.add(new Instr(Form.LINE, new Line2D.Double(0,-42,0,-47))); 111 p = new Path2D.Double(); p.moveTo(-15.0,-47.0); p.lineTo(0.0,-77.0); p.lineTo(15.0,-47.0); p.closePath(); 112 TopConeSphere.add(new Instr(Form.ELPS, new Ellipse2D.Double(-14,-42,28,28))); 113 TopConeSphere.add(new Instr(Form.PLIN, p)); 114 } 115 public static final Symbol TopCross = new Symbol(); 116 static { 117 TopCross.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-80,60,80))); 118 Symbol colours = new Symbol(); 119 Path2D.Double p = new Path2D.Double(); p.moveTo(-5.0,-15.0); p.lineTo(-5.0,-32.5); p.lineTo(-22.5,-32.5); p.lineTo(-22.5,-42.5); p.lineTo(-5.0,-42.5); 120 p.lineTo(-5.0,-60.0); p.lineTo(5.0,-60.0); p.lineTo(5.0,-42.5); p.lineTo(22.5,-42.5); p.lineTo(22.5,-32.5); p.lineTo(5.0,-32.5); p.lineTo(5.0,-15.0); p.closePath(); 121 colours.add(new Instr(Form.P1, p)); 122 TopCross.add(new Instr(Form.COLR, colours)); 123 TopCross.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 124 TopCross.add(new Instr(Form.FILL, Color.black)); 125 TopCross.add(new Instr(Form.LINE, new Line2D.Double(0,0,0,-15))); 126 TopCross.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 127 p = new Path2D.Double(); p.moveTo(-5.0,-15.0); p.lineTo(-5.0,-32.5); p.lineTo(-22.5,-32.5); p.lineTo(-22.5,-42.5); p.lineTo(-5.0,-42.5); p.lineTo(-5.0,-60.0); 128 p.lineTo(5.0,-60.0); p.lineTo(5.0,-42.5); p.lineTo(22.5,-42.5); p.lineTo(22.5,-32.5); p.lineTo(5.0,-32.5); p.lineTo(5.0,-15.0); p.closePath(); 129 TopCross.add(new Instr(Form.PLIN, p)); 130 } 131 public static final Symbol TopCrosses = new Symbol(); 132 static { 133 134 } 135 public static final Symbol TopCrossCircle = new Symbol(); 136 static { 137 138 } 139 public static final Symbol TopCube = new Symbol(); 140 static { 141 TopCube.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20,-80,40,80))); 142 Symbol colours = new Symbol(); 143 Path2D.Double p = new Path2D.Double(); p.moveTo(0,-48); p.lineTo(-15,-37); p.lineTo(-15,-20); p.lineTo(0,-9); p.lineTo(15,-20); p.lineTo(15,-37); p.closePath(); 144 colours.add(new Instr(Form.P1, p)); 145 TopCube.add(new Instr(Form.COLR, colours)); 146 TopCube.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 147 TopCube.add(new Instr(Form.FILL, Color.black)); 148 TopCube.add(new Instr(Form.LINE, new Line2D.Double(0,0,0,-15))); 149 p = new Path2D.Double(); p.moveTo(0,-48); p.lineTo(-14,-37); p.lineTo(0,-26); p.lineTo(14,-37); p.closePath(); p.moveTo(0,-26); p.lineTo(0,0); 150 p.moveTo(-15,-37); p.lineTo(-15,-20); p.lineTo(0,-9); p.lineTo(15,-20); p.lineTo(15,-37); 151 TopCube.add(new Instr(Form.PLIN, p)); 152 } 153 public static final Symbol TopEast = new Symbol(); 154 static { 155 TopEast.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-80,60,80))); 156 Symbol colours = new Symbol(); 157 Path2D.Double p = new Path2D.Double(); p.moveTo(0.0,-80.0); p.lineTo(-15.0,-47.0); p.lineTo(15.0,-47.0); p.closePath(); 158 colours.add(new Instr(Form.P1, p)); 159 p = new Path2D.Double(); p.moveTo(0.0,-10.0); p.lineTo(-15.0,-43.0); p.lineTo(15.0,-43.0); p.closePath(); 160 colours.add(new Instr(Form.P2, p)); 161 TopEast.add(new Instr(Form.COLR, colours)); 162 TopEast.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 163 TopEast.add(new Instr(Form.FILL, Color.black)); 164 TopEast.add(new Instr(Form.LINE, new Line2D.Double(0,0,0,-10))); 165 TopEast.add(new Instr(Form.LINE, new Line2D.Double(0,-43,0,-47))); 166 TopEast.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 167 p = new Path2D.Double(); p.moveTo(0.0,-10.0); p.lineTo(-15.0,-43.0); p.lineTo(15.0,-43.0); p.closePath(); 168 p.moveTo(0.0,-80.0); p.lineTo(-15.0,-47.0); p.lineTo(15.0,-47.0); p.closePath(); 169 TopEast.add(new Instr(Form.PLIN, p)); 170 } 171 public static final Symbol TopFlag = new Symbol(); 172 static { 173 TopFlag.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20,-80,40,80))); 174 Symbol colours = new Symbol(); 175 Path2D.Double p = new Path2D.Double(); p.moveTo(0,-40); p.lineTo(0,-10); p.lineTo(39,-10); p.lineTo(39,-40); p.closePath(); 176 colours.add(new Instr(Form.P1, p)); 177 p = new Path2D.Double(); p.moveTo(0,-25); p.lineTo(0,-10); p.lineTo(40,-10); p.lineTo(39,-25); p.closePath(); 178 colours.add(new Instr(Form.H2, p)); 179 p = new Path2D.Double(); p.moveTo(0,-30); p.lineTo(0,-20); p.lineTo(40,-20); p.lineTo(39,-30); p.closePath(); 180 colours.add(new Instr(Form.H3, p)); 181 p = new Path2D.Double(); p.moveTo(19.5,-40); p.lineTo(19.5,-10); p.lineTo(39,-10); p.lineTo(39,-40); p.closePath(); 182 colours.add(new Instr(Form.V2, p)); 183 p = new Path2D.Double(); p.moveTo(13,-40); p.lineTo(13,-10); p.lineTo(26,-10); p.lineTo(26,-40); p.closePath(); 184 colours.add(new Instr(Form.V3, p)); 185 p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD); 186 p.moveTo(0,-40); p.lineTo(0,-10); p.lineTo(39,-10); p.lineTo(39,-40); p.closePath(); 187 p.moveTo(8,-35); p.lineTo(8,-15); p.lineTo(33,-15); p.lineTo(33,-35); p.closePath(); 188 colours.add(new Instr(Form.B1, p)); 189 p = new Path2D.Double(); p.moveTo(0,-25); p.lineTo(0,-10); p.lineTo(20,-10); p.lineTo(20,-40); p.lineTo(39,-40); p.lineTo(39,-25); p.closePath(); 190 colours.add(new Instr(Form.S2, p)); 191 p = new Path2D.Double(); p.moveTo(0,-25); p.lineTo(0,-10); p.lineTo(20,-10); p.lineTo(20,-25); p.closePath(); 192 colours.add(new Instr(Form.S3, p)); 193 p = new Path2D.Double(); p.moveTo(20,-25); p.lineTo(20,-10); p.lineTo(39,-10); p.lineTo(39,-25); p.closePath(); 194 colours.add(new Instr(Form.S4, p)); 195 TopFlag.add(new Instr(Form.COLR, colours)); 196 TopFlag.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 197 TopFlag.add(new Instr(Form.FILL, Color.black)); 198 TopFlag.add(new Instr(Form.LINE, new Line2D.Double(0,0,0,-45))); 199 TopFlag.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 200 TopFlag.add(new Instr(Form.RECT, new Rectangle2D.Double(0,-40,39,30))); 201 } 202 public static final Symbol TopIcone = new Symbol(); 203 static { 204 TopIcone.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20,-80,40,80))); 205 Symbol colours = new Symbol(); 206 Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-45.0); p.lineTo(0.0,-15.0); p.lineTo(15.0,-45.0); p.closePath(); 207 colours.add(new Instr(Form.P1, p)); 208 TopIcone.add(new Instr(Form.COLR, colours)); 209 TopIcone.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 210 TopIcone.add(new Instr(Form.FILL, Color.black)); 211 TopIcone.add(new Instr(Form.LINE, new Line2D.Double(0,0,0,-15))); 212 p = new Path2D.Double(); p.moveTo(-15.0,-45.0); p.lineTo(0.0,-15.0); p.lineTo(15.0,-45.0); p.closePath(); 213 TopIcone.add(new Instr(Form.PLIN, p)); 214 } 215 public static final Symbol TopIsol = new Symbol(); 216 static { 217 TopIsol.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-80,60,80))); 218 Symbol colours = new Symbol(); 219 Path2D.Double p = new Path2D.Double(); p.moveTo(-13.0,-55.0); p.curveTo(-13.0, -72.3, 13.0, -72.3, 13.0,-55.0); p.curveTo(13.0, -37.7, -13.0, -37.7, -13.0,-55.0); p.closePath(); 220 colours.add(new Instr(Form.P1, p)); 221 p = new Path2D.Double(); p.moveTo(-13.0,-28.0); p.curveTo(-13.0, -45.3, 13.0, -45.3, 13.0,-28.0); p.curveTo(13.0, -10.7, -13.0, -10.7, -13.0,-28.0); p.closePath(); 222 colours.add(new Instr(Form.P2, p)); 223 TopIsol.add(new Instr(Form.COLR, colours)); 224 TopIsol.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 225 TopIsol.add(new Instr(Form.FILL, Color.black)); 226 TopIsol.add(new Instr(Form.LINE, new Line2D.Double(0,0,0,-15))); 227 TopIsol.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 228 TopIsol.add(new Instr(Form.ELPS, new Ellipse2D.Double(-13,-41,26,26))); 229 TopIsol.add(new Instr(Form.ELPS, new Ellipse2D.Double(-13,-68,26,26))); 230 } 231 public static final Symbol TopMooring = new Symbol(); 232 static { 233 TopMooring.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-80,60,80))); 234 TopMooring.add(new Instr(Form.STRK, new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 235 TopMooring.add(new Instr(Form.FILL, Color.black)); 236 TopMooring.add(new Instr(Form.ELPS, new Ellipse2D.Double(-1.5,-6,3,3))); 237 TopMooring.add(new Instr(Form.ELPS, new Ellipse2D.Double(-8.5,-25,17,17))); 238 } 239 public static final Symbol TopNorth = new Symbol(); 240 static { 241 TopNorth.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-80,60,80))); 242 Symbol colours = new Symbol(); 243 Path2D.Double p = new Path2D.Double(); p.moveTo(0.0,-78.0); p.lineTo(-15.0,-45.0); p.lineTo(15.0,-45.0); p.closePath(); 244 colours.add(new Instr(Form.P1, p)); 245 p = new Path2D.Double(); p.moveTo(-15.0,-10.0); p.lineTo(0.0,-43.0); p.lineTo(15.0,-10.0); p.closePath(); 246 colours.add(new Instr(Form.P2, p)); 247 TopNorth.add(new Instr(Form.COLR, colours)); 248 TopNorth.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 249 TopNorth.add(new Instr(Form.FILL, Color.black)); 250 TopNorth.add(new Instr(Form.LINE, new Line2D.Double(0,0,0,-10))); 251 TopNorth.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 252 p = new Path2D.Double(); p.moveTo(-15.0,-10.0); p.lineTo(0.0,-43.0); p.lineTo(15.0,-10.0); p.closePath(); 253 p.moveTo(0.0,-78.0); p.lineTo(-15.0,-45.0); p.lineTo(15.0,-45.0); p.closePath(); 254 TopNorth.add(new Instr(Form.PLIN, p)); 255 } 256 public static final Symbol TopSouth = new Symbol(); 257 static { 258 TopSouth.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-80,60,80))); 259 Symbol colours = new Symbol(); 260 Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-78.0); p.lineTo(0.0,-45.0); p.lineTo(15.0,-78.0); p.closePath(); 261 colours.add(new Instr(Form.P1, p)); 262 p = new Path2D.Double(); p.moveTo(0.0,-10.0); p.lineTo(-15.0,-43.0); p.lineTo(15.0,-43.0); p.closePath(); 263 colours.add(new Instr(Form.P2, p)); 264 TopSouth.add(new Instr(Form.COLR, colours)); 265 TopSouth.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 266 TopSouth.add(new Instr(Form.FILL, Color.black)); 267 TopSouth.add(new Instr(Form.LINE, new Line2D.Double(0,0,0,-10))); 268 TopSouth.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 269 p = new Path2D.Double(); p.moveTo(0.0,-10.0); p.lineTo(-15.0,-43.0); p.lineTo(15.0,-43.0); p.closePath(); 270 p.moveTo(-15.0,-78.0); p.lineTo(0.0,-45.0); p.lineTo(15.0,-78.0); p.closePath(); 271 TopSouth.add(new Instr(Form.PLIN, p)); 272 } 273 public static final Symbol TopSphere = new Symbol(); 274 static { 275 TopSphere.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-80,60,80))); 276 Symbol colours = new Symbol(); 277 Path2D.Double p = new Path2D.Double(); p.moveTo(-14.0,-28.0); p.curveTo(-14.0,-46.7,14.0,-46.7,14.0,-28.0); p.curveTo(14.0,-9.3,-14.0,-9.3,-14.0,-28.0); p.closePath(); 278 colours.add(new Instr(Form.P1, p)); 279 TopSphere.add(new Instr(Form.COLR, colours)); 280 TopSphere.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 281 TopSphere.add(new Instr(Form.FILL, Color.black)); 282 TopSphere.add(new Instr(Form.LINE, new Line2D.Double(0,0,0,-15))); 283 TopSphere.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 284 TopSphere.add(new Instr(Form.ELPS, new Ellipse2D.Double(-14,-42,28,28))); 285 } 286 public static final Symbol TopSquare = new Symbol(); 287 static { 288 TopSquare.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20,-80,40,80))); 289 Symbol colours = new Symbol(); 290 Path2D.Double p = new Path2D.Double(); p.moveTo(-13.0,-1.0); p.lineTo(-13.0,-27.0); p.lineTo(13.0,-27.0); p.lineTo(13.0,-1.0); p.closePath(); 291 colours.add(new Instr(Form.P1, p)); 292 p = new Path2D.Double(); p.moveTo(-13.0,-15.0); p.lineTo(-13.0,-1.0); p.lineTo(13.0,-1.0); p.lineTo(13.0,-15.0); p.closePath(); 293 colours.add(new Instr(Form.H2, p)); 294 p = new Path2D.Double(); p.moveTo(-13.0,-19.3); p.lineTo(-13.0,-10.7); p.lineTo(13.0,-10.7); p.lineTo(13.0,-19.3); p.closePath(); 295 colours.add(new Instr(Form.H3, p)); 296 p = new Path2D.Double(); p.moveTo(0.0,-1.0); p.lineTo(0.0,-27.0); p.lineTo(13.0,-27.0); p.lineTo(13.0,-1.0); p.closePath(); 297 colours.add(new Instr(Form.V2, p)); 298 p = new Path2D.Double(); p.moveTo(-4.3,-1.0); p.lineTo(-4.3,-27.0); p.lineTo(4.3,-27.0); p.lineTo(4.3,-1.0); p.closePath(); 299 colours.add(new Instr(Form.V3, p)); 300 p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD); 301 p.moveTo(-13.0,-1.0); p.lineTo(-13.0,-27.0); p.lineTo(13.0,-27.0); p.lineTo(13.0,-1.0); p.closePath(); 302 p.moveTo(-8.0,-6.0); p.lineTo(-8.0,-22.0); p.lineTo(8.0,-22.0); p.lineTo(8.0,-6.0); p.closePath(); 303 colours.add(new Instr(Form.B1, p)); 304 TopSquare.add(new Instr(Form.COLR, colours)); 305 TopSquare.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 306 TopSquare.add(new Instr(Form.FILL, Color.black)); 307 p = new Path2D.Double(); p.moveTo(-13.0,-1.0); p.lineTo(-13.0,-27.0); p.lineTo(13.0,-27.0); p.lineTo(13.0,-1.0); p.closePath(); 308 TopSquare.add(new Instr(Form.PLIN, p)); 309 } 310 public static final Symbol TopRectangleH = new Symbol(); 311 static { 312 TopRectangleH.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20,-80,40,80))); 313 Symbol colours = new Symbol(); 314 Path2D.Double p = new Path2D.Double(); p.moveTo(-20.0,-1.0); p.lineTo(-20.0,-27.0); p.lineTo(20.0,-27.0); p.lineTo(20.0,-1.0); p.closePath(); 315 colours.add(new Instr(Form.P1, p)); 316 TopRectangleH.add(new Instr(Form.COLR, colours)); 317 TopRectangleH.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 318 TopRectangleH.add(new Instr(Form.FILL, Color.black)); 319 p = new Path2D.Double(); p.moveTo(-20.0,-1.0); p.lineTo(-20.0,-27.0); p.lineTo(20.0,-27.0); p.lineTo(20.0,-1.0); p.closePath(); 320 TopRectangleH.add(new Instr(Form.PLIN, p)); 321 } 322 public static final Symbol TopRectangleV = new Symbol(); 323 static { 324 TopRectangleV.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20,-80,40,80))); 325 Symbol colours = new Symbol(); 326 Path2D.Double p = new Path2D.Double(); p.moveTo(-13.0,-1.0); p.lineTo(-13.0,-41.0); p.lineTo(13.0,-41.0); p.lineTo(13.0,-1.0); p.closePath(); 327 colours.add(new Instr(Form.P1, p)); 328 TopRectangleV.add(new Instr(Form.COLR, colours)); 329 TopRectangleV.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 330 TopRectangleV.add(new Instr(Form.FILL, Color.black)); 331 p = new Path2D.Double(); p.moveTo(-13.0,-1.0); p.lineTo(-13.0,-41.0); p.lineTo(13.0,-41.0); p.lineTo(13.0,-1.0); p.closePath(); 332 TopRectangleV.add(new Instr(Form.PLIN, p)); 333 } 334 public static final Symbol TopRhombus = new Symbol(); 335 static { 336 TopRhombus.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20,-80,40,80))); 337 Symbol colours = new Symbol(); 338 Path2D.Double p = new Path2D.Double(); p.moveTo(0.0,-29.0); p.lineTo(-15.0,-15.0); p.lineTo(0.0,-1.0); p.lineTo(15.0,-15.0); p.closePath(); 339 colours.add(new Instr(Form.P1, p)); 340 p = new Path2D.Double(); p.moveTo(-15.0,-15.0); p.lineTo(0.0,-1.0); p.lineTo(15.0,-15.0); p.closePath(); 341 colours.add(new Instr(Form.H2, p)); 342 p = new Path2D.Double(); p.moveTo(-10.0,-19.7); p.lineTo(-15.0,-15.0); p.lineTo(-10.0,-10.3); p.lineTo(10.0,-10.3); p.lineTo(15.0,-15.0); p.lineTo(10.0,-19.7); p.closePath(); 343 colours.add(new Instr(Form.H3, p)); 344 p = new Path2D.Double(); p.moveTo(0.0,-29.0); p.lineTo(0.0,-1.0); p.lineTo(15.0,-15.0); p.closePath(); 345 colours.add(new Instr(Form.V2, p)); 346 p = new Path2D.Double(); p.moveTo(0.0,-29.0); p.lineTo(-5.0,-24.3); p.lineTo(-5.0,-5.7); p.lineTo(0.0,-1.0); p.lineTo(5.0,-5.7); p.lineTo(5.0,-24.3); p.closePath(); 347 colours.add(new Instr(Form.V3, p)); 348 p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD); 349 p.moveTo(0.0,-29.0); p.lineTo(-15.0,-15.0); p.lineTo(0.0,-1.0); p.lineTo(15.0,-15.0); p.closePath(); 350 p.moveTo(0.0,-23.0); p.lineTo(-9.0,-15.0); p.lineTo(0.0,-7.0); p.lineTo(9.0,-15.0); p.closePath(); 351 colours.add(new Instr(Form.B1, p)); 352 TopRhombus.add(new Instr(Form.COLR, colours)); 353 TopRhombus.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 354 TopRhombus.add(new Instr(Form.FILL, Color.black)); 355 p = new Path2D.Double(); p.moveTo(0.0,-29.0); p.lineTo(-15.0,-15.0); p.lineTo(0.0,-1.0); p.lineTo(15.0,-15.0); p.closePath(); 356 TopRhombus.add(new Instr(Form.PLIN, p)); 357 } 358 public static final Symbol TopRhombusCircle = new Symbol(); 359 static { 360 361 } 362 public static final Symbol TopSphereRhombus = new Symbol(); 363 static { 364 TopSphereRhombus.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-80,60,80))); 365 TopSphereRhombus.add(new Instr(Form.SYMB, new Symbols.SubSymbol(TopRhombus, 1.0, 0, 0, null, null))); 366 Symbol colours = new Symbol(); 367 Path2D.Double p = new Path2D.Double(); p.moveTo(-14.0,-44.0); p.curveTo(-14.0,-62.7,14.0,-62.7,14.0,-44.0); p.curveTo(14.0,-25.3,-14.0,-25.3,-14.0,-44.0); p.closePath(); 368 colours.add(new Instr(Form.P1, p)); 369 TopSphereRhombus.add(new Instr(Form.COLR, colours)); 370 TopSphereRhombus.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 371 TopSphereRhombus.add(new Instr(Form.FILL, Color.black)); 372 TopSphereRhombus.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 373 TopSphereRhombus.add(new Instr(Form.ELPS, new Ellipse2D.Double(-14,-58,28,28))); 374 } 375 public static final Symbol TopT = new Symbol(); 376 static { 377 378 } 379 public static final Symbol TopTrapeziumU = new Symbol(); 380 static { 381 TopTrapeziumU.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20,-80,40,80))); 382 Symbol colours = new Symbol(); 383 Path2D.Double p = new Path2D.Double(); p.moveTo(-20.0,-1.0); p.lineTo(-13.0,-27.0); p.lineTo(13.0,-27.0); p.lineTo(20.0,-1.0); p.closePath(); 384 colours.add(new Instr(Form.P1, p)); 385 TopTrapeziumU.add(new Instr(Form.COLR, colours)); 386 TopTrapeziumU.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 387 TopTrapeziumU.add(new Instr(Form.FILL, Color.black)); 388 p = new Path2D.Double(); p.moveTo(-20.0,-1.0); p.lineTo(-13.0,-27.0); p.lineTo(13.0,-27.0); p.lineTo(20.0,-1.0); p.closePath(); 389 TopTrapeziumU.add(new Instr(Form.PLIN, p)); 390 } 391 public static final Symbol TopTrapeziumD = new Symbol(); 392 static { 393 TopTrapeziumD.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20,-80,40,80))); 394 Symbol colours = new Symbol(); 395 Path2D.Double p = new Path2D.Double(); p.moveTo(-13.0,-1.0); p.lineTo(-20.0,-27.0); p.lineTo(20.0,-27.0); p.lineTo(13.0,-1.0); p.closePath(); 396 colours.add(new Instr(Form.P1, p)); 397 TopTrapeziumD.add(new Instr(Form.COLR, colours)); 398 TopTrapeziumD.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 399 TopTrapeziumD.add(new Instr(Form.FILL, Color.black)); 400 p = new Path2D.Double(); p.moveTo(-13.0,-1.0); p.lineTo(-20.0,-27.0); p.lineTo(20.0,-27.0); p.lineTo(13.0,-1.0); p.closePath(); 401 TopTrapeziumD.add(new Instr(Form.PLIN, p)); 402 } 403 public static final Symbol TopTriangle = new Symbol(); 404 static { 405 TopTriangle.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20,-80,40,80))); 406 Symbol colours = new Symbol(); 407 Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-1.0); p.lineTo(0.0,-29.0); p.lineTo(15.0,-1.0); p.closePath(); 408 colours.add(new Instr(Form.P1, p)); 409 p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD); 410 p.moveTo(-15.0,-1.0); p.lineTo(0.0,-29.0); p.lineTo(15.0,-1.0); p.closePath(); 411 p.moveTo(-10.0,-6.0); p.lineTo(0.0,-24.0); p.lineTo(10.0,-6.0); p.closePath(); 412 colours.add(new Instr(Form.B1, p)); 413 TopTriangle.add(new Instr(Form.COLR, colours)); 414 TopTriangle.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 415 TopTriangle.add(new Instr(Form.FILL, Color.black)); 416 p = new Path2D.Double(); p.moveTo(-15.0,-1.0); p.lineTo(0.0,-29.0); p.lineTo(15.0,-1.0); p.closePath(); 417 TopTriangle.add(new Instr(Form.PLIN, p)); 418 } 419 public static final Symbol TopItriangle = new Symbol(); 420 static { 421 TopItriangle.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20,-80,40,80))); 422 Symbol colours = new Symbol(); 423 Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-29.0); p.lineTo(0.0,-1.0); p.lineTo(15.0,-29.0); p.closePath(); 424 colours.add(new Instr(Form.P1, p)); 425 p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD); 426 p.moveTo(-15.0,-29.0); p.lineTo(0.0,-1.0); p.lineTo(15.0,-29.0); p.closePath(); 427 p.moveTo(-10.0,-24.0); p.lineTo(0.0,-6.0); p.lineTo(10.0,-24.0); p.closePath(); 428 colours.add(new Instr(Form.B1, p)); 429 TopItriangle.add(new Instr(Form.COLR, colours)); 430 TopItriangle.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 431 TopItriangle.add(new Instr(Form.FILL, Color.black)); 432 p = new Path2D.Double(); p.moveTo(-15.0,-29.0); p.lineTo(0.0,-1.0); p.lineTo(15.0,-29.0); p.closePath(); 433 TopItriangle.add(new Instr(Form.PLIN, p)); 434 } 435 public static final Symbol TopTriangleCircle = new Symbol(); 436 static { 437 438 } 439 public static final Symbol TopWest = new Symbol(); 440 static { 441 TopWest.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-80,60,80))); 442 Symbol colours = new Symbol(); 443 Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-78.0); p.lineTo(0.0,-45.0); p.lineTo(15.0,-78.0); p.closePath(); 444 colours.add(new Instr(Form.P1, p)); 445 p = new Path2D.Double(); p.moveTo(-15.0,-10.0); p.lineTo(0.0,-43.0); p.lineTo(15.0,-10.0); p.closePath(); 446 colours.add(new Instr(Form.P2, p)); 447 TopWest.add(new Instr(Form.COLR, colours)); 448 TopWest.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 449 TopWest.add(new Instr(Form.FILL, Color.black)); 450 TopWest.add(new Instr(Form.LINE, new Line2D.Double(0,0,0,-10))); 451 TopWest.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 452 p = new Path2D.Double(); p.moveTo(-15.0,-10.0); p.lineTo(0.0,-43.0); p.lineTo(15.0,-10.0); p.closePath(); 453 p.moveTo(-15.0,-78.0); p.lineTo(0.0,-45.0); p.lineTo(15.0,-78.0); p.closePath(); 454 TopWest.add(new Instr(Form.PLIN, p)); 455 } 456 public static final Symbol TopX = new Symbol(); 457 static { 458 TopX.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-80,60,80))); 459 Symbol colours = new Symbol(); 460 Path2D.Double p = new Path2D.Double(); p.moveTo(0.0,-27.7); p.lineTo(-12.4,-15.7); p.lineTo(-19.3,-22.6); p.lineTo(-7.3,-35.0); p.lineTo(-19.3,-47.3); 461 p.lineTo(-12.4,-54.2); p.lineTo(0.0,-42.4); p.lineTo(12.4,-54.2); p.lineTo(19.3,-47.3); p.lineTo(7.3,-35.0); p.lineTo(19.3,-22.6); p.lineTo(12.4,-15.7); p.closePath(); 462 colours.add(new Instr(Form.P1, p)); 463 TopX.add(new Instr(Form.COLR, colours)); 464 TopX.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 465 TopX.add(new Instr(Form.FILL, Color.black)); 466 TopX.add(new Instr(Form.LINE, new Line2D.Double(0,0,0,-27))); 467 TopX.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 468 p = new Path2D.Double(); p.moveTo(0.0,-27.7); p.lineTo(-12.4,-15.7); p.lineTo(-19.3,-22.6); p.lineTo(-7.3,-35.0); p.lineTo(-19.3,-47.3); p.lineTo(-12.4,-54.2); p.lineTo(0.0,-42.4); 469 p.lineTo(12.4,-54.2); p.lineTo(19.3,-47.3); p.lineTo(7.3,-35.0); p.lineTo(19.3,-22.6); p.lineTo(12.4,-15.7); p.closePath(); 470 TopX.add(new Instr(Form.PLIN, p)); 471 } 472 public static final Symbol TopOther = new Symbol(); 473 static { 474 475 } 476 477 public static final EnumMap<TopSHP, Symbol> Shapes = new EnumMap<>(TopSHP.class); 478 static { 479 Shapes.put(TopSHP.TOP_BESM, TopBesom); Shapes.put(TopSHP.TOP_IBESM, TopIBesom); Shapes.put(TopSHP.TOP_BORD, TopBoard); Shapes.put(TopSHP.TOP_CAN, TopCan); 480 Shapes.put(TopSHP.TOP_CONE, TopCone); Shapes.put(TopSHP.TOP_CROS, TopCross); Shapes.put(TopSHP.TOP_EAST, TopEast); Shapes.put(TopSHP.TOP_ICONE, TopIcone); 481 Shapes.put(TopSHP.TOP_ISD, TopIsol); Shapes.put(TopSHP.TOP_NORTH, TopNorth); Shapes.put(TopSHP.TOP_SOUTH, TopSouth); Shapes.put(TopSHP.TOP_SPHR, TopSphere); 482 Shapes.put(TopSHP.TOP_SQUR, TopSquare); Shapes.put(TopSHP.TOP_TRI, TopTriangle); Shapes.put(TopSHP.TOP_ITRI, TopItriangle); Shapes.put(TopSHP.TOP_WEST, TopWest); 483 Shapes.put(TopSHP.TOP_SALT, TopX); Shapes.put(TopSHP.TOP_RHOM, TopRhombus); Shapes.put(TopSHP.TOP_FLAG, TopFlag); Shapes.put(TopSHP.TOP_CUBE, TopCube); 484 Shapes.put(TopSHP.TOP_SPRH, TopSphereRhombus); Shapes.put(TopSHP.TOP_HRECT, TopRectangleH); Shapes.put(TopSHP.TOP_VRECT, TopRectangleV); 485 Shapes.put(TopSHP.TOP_TRAP, TopTrapeziumU); Shapes.put(TopSHP.TOP_ITRAP, TopTrapeziumD); Shapes.put(TopSHP.TOP_COSP, TopConeSphere); 486 Shapes.put(TopSHP.TOP_CIRC, TopCircle); Shapes.put(TopSHP.TOP_CRSS, TopCrosses); Shapes.put(TopSHP.TOP_T, TopT); Shapes.put(TopSHP.TOP_TRCL, TopTriangleCircle); 487 Shapes.put(TopSHP.TOP_CRCL, TopCrossCircle); Shapes.put(TopSHP.TOP_RHCL, TopRhombusCircle); Shapes.put(TopSHP.TOP_CLTR, TopCircleTriangle); 488 Shapes.put(TopSHP.TOP_CYSP, TopCanSphere); Shapes.put(TopSHP.TOP_OTHR, TopOther); 489 } 490 491 public static final EnumMap<BoySHP, Delta> BuoyDeltas = new EnumMap<>(BoySHP.class); 492 static { 493 BuoyDeltas.put(BoySHP.BOY_PILR, new Delta(Handle.BC, new AffineTransform(0.948324, 0.317305, -0.3173047, 0.948324, 31.5, -95.0))); 494 BuoyDeltas.put(BoySHP.BOY_SPAR, new Delta(Handle.BC, new AffineTransform(0.948324, 0.317305, -0.3173047, 0.948324, 31.5, -95.0))); 495 BuoyDeltas.put(BoySHP.BOY_CAN, new Delta(Handle.BC, new AffineTransform(0.948324, 0.317305, -0.3173047, 0.948324, 12.7, -37.9))); 496 BuoyDeltas.put(BoySHP.BOY_CONE, new Delta(Handle.BC, new AffineTransform(0.948324, 0.317305, -0.3173047, 0.948324, 12.7, -37.9))); 497 BuoyDeltas.put(BoySHP.BOY_SPHR, new Delta(Handle.BC, new AffineTransform(0.948324, 0.317305, -0.3173047, 0.948324, 12.7, -37.9))); 498 BuoyDeltas.put(BoySHP.BOY_BARL, new Delta(Handle.BC, new AffineTransform(0.948324, 0.317305, -0.3173047, 0.948324, 12.7, -37.9))); 499 BuoyDeltas.put(BoySHP.BOY_SUPR, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -42.0))); 500 BuoyDeltas.put(BoySHP.BOY_ICE, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -25.0))); 501 } 502 public static final Delta FloatDelta = new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -42.0)); 503 public static final Delta BeaconDelta = new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -70.0)); 504 public static final Delta LightDelta = new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -20.0)); 505 31 // CHECKSTYLE.OFF: LineLength 32 public static final Symbol RadarReflector = new Symbol(); 33 static { 34 RadarReflector.add(new Instr(Form.BBOX, new Rectangle2D.Double(-50, -40, 100, 40))); 35 RadarReflector.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 36 RadarReflector.add(new Instr(Form.FILL, Color.black)); 37 Path2D.Double p = new Path2D.Double(); p.moveTo(-30, -3); p.quadTo(0, -40, 30, -3); p.moveTo(0, -20); p.lineTo(0, -37); 38 p.moveTo(-30, -3); p.lineTo(-43, -14); p.moveTo(30, -3); p.lineTo(44, -14); p.moveTo(-15, -14); p.lineTo(-25, -30); p.moveTo(15, -14); p.lineTo(25, -30); 39 RadarReflector.add(new Instr(Form.PLIN, p)); 40 } 41 42 public static final Symbol TopBesom = new Symbol(); 43 static { 44 TopBesom.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80))); 45 TopBesom.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 46 TopBesom.add(new Instr(Form.FILL, Color.black)); 47 Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0, 0.0); p.lineTo(0.0, -30.0); p.lineTo(15.0, 0.0); p.moveTo(0.0, 0.0); p.lineTo(0.0, -28.0); 48 TopBesom.add(new Instr(Form.PLIN, p)); 49 } 50 51 public static final Symbol TopIBesom = new Symbol(); 52 static { 53 TopIBesom.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80))); 54 TopIBesom.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 55 TopIBesom.add(new Instr(Form.FILL, Color.black)); 56 Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0, -30.0); p.lineTo(0.0, 0.0); p.lineTo(15.0, -30.0); 57 TopIBesom.add(new Instr(Form.PLIN, p)); 58 } 59 60 public static final Symbol TopBoard = new Symbol(); 61 static { 62 TopBoard.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -60, 60, 60))); 63 Symbol colours = new Symbol(); 64 Path2D.Double p = new Path2D.Double(); p.moveTo(-29, -1); p.lineTo(-29, -59); p.lineTo(29, -59); p.lineTo(29, -1); p.closePath(); 65 colours.add(new Instr(Form.P1, p)); 66 p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD); 67 p.moveTo(-29, -1); p.lineTo(-29, -59); p.lineTo(29, -59); p.lineTo(29, -1); p.closePath(); 68 p.moveTo(-19, -10); p.lineTo(-19, -49); p.lineTo(19, -49); p.lineTo(19, -10); p.closePath(); 69 colours.add(new Instr(Form.B1, p)); 70 p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD); 71 p.moveTo(-29, -1); p.lineTo(-29, -30); p.lineTo(29, -30); p.lineTo(29, -59); p.lineTo(0, -59); p.lineTo(0, -1); p.closePath(); 72 colours.add(new Instr(Form.S2, p)); 73 p = new Path2D.Double(); p.moveTo(-29, -1); p.lineTo(-29, -30); p.lineTo(0, -30); p.lineTo(0, -1); p.closePath(); 74 colours.add(new Instr(Form.S3, p)); 75 p = new Path2D.Double(); p.moveTo(0, -1); p.lineTo(0, -30); p.lineTo(29, -30); p.lineTo(29, -1); p.closePath(); 76 colours.add(new Instr(Form.S4, p)); 77 TopBoard.add(new Instr(Form.COLR, colours)); 78 TopBoard.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 79 TopBoard.add(new Instr(Form.FILL, Color.black)); 80 p = new Path2D.Double(); p.moveTo(-29, -1); p.lineTo(-29, -59); p.lineTo(29, -59); p.lineTo(29.0, -1); p.closePath(); 81 TopBoard.add(new Instr(Form.PLIN, p)); 82 } 83 84 public static final Symbol TopCan = new Symbol(); 85 static { 86 TopCan.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80))); 87 Symbol colours = new Symbol(); 88 Path2D.Double p = new Path2D.Double(); p.moveTo(-12.0, -15.0); p.lineTo(-12.0, -48.0); p.lineTo(12.0, -48.0); p.lineTo(12.0, -15.0); p.closePath(); 89 colours.add(new Instr(Form.P1, p)); 90 TopCan.add(new Instr(Form.COLR, colours)); 91 TopCan.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 92 TopCan.add(new Instr(Form.FILL, Color.black)); 93 TopCan.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -15))); 94 p = new Path2D.Double(); p.moveTo(-12.0, -15.0); p.lineTo(-12.0, -48.0); p.lineTo(12.0, -48.0); p.lineTo(12.0, -15.0); p.closePath(); 95 TopCan.add(new Instr(Form.PLIN, p)); 96 } 97 98 public static final Symbol TopCanSphere = new Symbol(); 99 public static final Symbol TopCircle = new Symbol(); 100 public static final Symbol TopCircleTriangle = new Symbol(); 101 public static final Symbol TopCone = new Symbol(); 102 static { 103 TopCone.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80))); 104 Symbol colours = new Symbol(); 105 Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0, -15.0); p.lineTo(0.0, -45.0); p.lineTo(15.0, -15.0); p.closePath(); 106 colours.add(new Instr(Form.P1, p)); 107 TopCone.add(new Instr(Form.COLR, colours)); 108 TopCone.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 109 TopCone.add(new Instr(Form.FILL, Color.black)); 110 TopCone.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -15))); 111 p = new Path2D.Double(); p.moveTo(-15.0, -15.0); p.lineTo(0.0, -45.0); p.lineTo(15.0, -15.0); p.closePath(); 112 TopCone.add(new Instr(Form.PLIN, p)); 113 } 114 115 public static final Symbol TopConeSphere = new Symbol(); 116 static { 117 TopConeSphere.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80))); 118 Symbol colours = new Symbol(); 119 Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0, -47.0); p.lineTo(0.0, -77.0); p.lineTo(15.0, -47.0); p.closePath(); 120 p.moveTo(-14.0, -28.0); p.curveTo(-14.0, -46.7, 14.0, -46.7, 14.0, -28.0); p.curveTo(14.0, -9.3, -14.0, -9.3, -14.0, -28.0); p.closePath(); 121 colours.add(new Instr(Form.P1, p)); 122 TopConeSphere.add(new Instr(Form.COLR, colours)); 123 TopConeSphere.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 124 TopConeSphere.add(new Instr(Form.FILL, Color.black)); 125 TopConeSphere.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -15))); 126 TopConeSphere.add(new Instr(Form.LINE, new Line2D.Double(0, -42, 0, -47))); 127 p = new Path2D.Double(); p.moveTo(-15.0, -47.0); p.lineTo(0.0, -77.0); p.lineTo(15.0, -47.0); p.closePath(); 128 TopConeSphere.add(new Instr(Form.ELPS, new Ellipse2D.Double(-14, -42, 28, 28))); 129 TopConeSphere.add(new Instr(Form.PLIN, p)); 130 } 131 132 public static final Symbol TopCross = new Symbol(); 133 static { 134 TopCross.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80))); 135 Symbol colours = new Symbol(); 136 Path2D.Double p = new Path2D.Double(); p.moveTo(-5.0, -15.0); p.lineTo(-5.0, -32.5); p.lineTo(-22.5, -32.5); p.lineTo(-22.5, -42.5); p.lineTo(-5.0, -42.5); 137 p.lineTo(-5.0, -60.0); p.lineTo(5.0, -60.0); p.lineTo(5.0, -42.5); p.lineTo(22.5, -42.5); p.lineTo(22.5, -32.5); p.lineTo(5.0, -32.5); p.lineTo(5.0, -15.0); p.closePath(); 138 colours.add(new Instr(Form.P1, p)); 139 TopCross.add(new Instr(Form.COLR, colours)); 140 TopCross.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 141 TopCross.add(new Instr(Form.FILL, Color.black)); 142 TopCross.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -15))); 143 TopCross.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 144 p = new Path2D.Double(); p.moveTo(-5.0, -15.0); p.lineTo(-5.0, -32.5); p.lineTo(-22.5, -32.5); p.lineTo(-22.5, -42.5); p.lineTo(-5.0, -42.5); p.lineTo(-5.0, -60.0); 145 p.lineTo(5.0, -60.0); p.lineTo(5.0, -42.5); p.lineTo(22.5, -42.5); p.lineTo(22.5, -32.5); p.lineTo(5.0, -32.5); p.lineTo(5.0, -15.0); p.closePath(); 146 TopCross.add(new Instr(Form.PLIN, p)); 147 } 148 149 public static final Symbol TopCrosses = new Symbol(); 150 151 public static final Symbol TopCrossCircle = new Symbol(); 152 153 public static final Symbol TopCube = new Symbol(); 154 static { 155 TopCube.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80))); 156 Symbol colours = new Symbol(); 157 Path2D.Double p = new Path2D.Double(); p.moveTo(0, -48); p.lineTo(-15, -37); p.lineTo(-15, -20); p.lineTo(0, -9); p.lineTo(15, -20); p.lineTo(15, -37); p.closePath(); 158 colours.add(new Instr(Form.P1, p)); 159 TopCube.add(new Instr(Form.COLR, colours)); 160 TopCube.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 161 TopCube.add(new Instr(Form.FILL, Color.black)); 162 TopCube.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -15))); 163 p = new Path2D.Double(); p.moveTo(0, -48); p.lineTo(-14, -37); p.lineTo(0, -26); p.lineTo(14, -37); p.closePath(); p.moveTo(0, -26); p.lineTo(0, 0); 164 p.moveTo(-15, -37); p.lineTo(-15, -20); p.lineTo(0, -9); p.lineTo(15, -20); p.lineTo(15, -37); 165 TopCube.add(new Instr(Form.PLIN, p)); 166 } 167 168 public static final Symbol TopEast = new Symbol(); 169 static { 170 TopEast.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80))); 171 Symbol colours = new Symbol(); 172 Path2D.Double p = new Path2D.Double(); p.moveTo(0.0, -80.0); p.lineTo(-15.0, -47.0); p.lineTo(15.0, -47.0); p.closePath(); 173 colours.add(new Instr(Form.P1, p)); 174 p = new Path2D.Double(); p.moveTo(0.0, -10.0); p.lineTo(-15.0, -43.0); p.lineTo(15.0, -43.0); p.closePath(); 175 colours.add(new Instr(Form.P2, p)); 176 TopEast.add(new Instr(Form.COLR, colours)); 177 TopEast.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 178 TopEast.add(new Instr(Form.FILL, Color.black)); 179 TopEast.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -10))); 180 TopEast.add(new Instr(Form.LINE, new Line2D.Double(0, -43, 0, -47))); 181 TopEast.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 182 p = new Path2D.Double(); p.moveTo(0.0, -10.0); p.lineTo(-15.0, -43.0); p.lineTo(15.0, -43.0); p.closePath(); 183 p.moveTo(0.0, -80.0); p.lineTo(-15.0, -47.0); p.lineTo(15.0, -47.0); p.closePath(); 184 TopEast.add(new Instr(Form.PLIN, p)); 185 } 186 187 public static final Symbol TopFlag = new Symbol(); 188 static { 189 TopFlag.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80))); 190 Symbol colours = new Symbol(); 191 Path2D.Double p = new Path2D.Double(); p.moveTo(0, -40); p.lineTo(0, -10); p.lineTo(39, -10); p.lineTo(39, -40); p.closePath(); 192 colours.add(new Instr(Form.P1, p)); 193 p = new Path2D.Double(); p.moveTo(0, -25); p.lineTo(0, -10); p.lineTo(40, -10); p.lineTo(39, -25); p.closePath(); 194 colours.add(new Instr(Form.H2, p)); 195 p = new Path2D.Double(); p.moveTo(0, -30); p.lineTo(0, -20); p.lineTo(40, -20); p.lineTo(39, -30); p.closePath(); 196 colours.add(new Instr(Form.H3, p)); 197 p = new Path2D.Double(); p.moveTo(19.5, -40); p.lineTo(19.5, -10); p.lineTo(39, -10); p.lineTo(39, -40); p.closePath(); 198 colours.add(new Instr(Form.V2, p)); 199 p = new Path2D.Double(); p.moveTo(13, -40); p.lineTo(13, -10); p.lineTo(26, -10); p.lineTo(26, -40); p.closePath(); 200 colours.add(new Instr(Form.V3, p)); 201 p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD); 202 p.moveTo(0, -40); p.lineTo(0, -10); p.lineTo(39, -10); p.lineTo(39, -40); p.closePath(); 203 p.moveTo(8, -35); p.lineTo(8, -15); p.lineTo(33, -15); p.lineTo(33, -35); p.closePath(); 204 colours.add(new Instr(Form.B1, p)); 205 p = new Path2D.Double(); p.moveTo(0, -25); p.lineTo(0, -10); p.lineTo(20, -10); p.lineTo(20, -40); p.lineTo(39, -40); p.lineTo(39, -25); p.closePath(); 206 colours.add(new Instr(Form.S2, p)); 207 p = new Path2D.Double(); p.moveTo(0, -25); p.lineTo(0, -10); p.lineTo(20, -10); p.lineTo(20, -25); p.closePath(); 208 colours.add(new Instr(Form.S3, p)); 209 p = new Path2D.Double(); p.moveTo(20, -25); p.lineTo(20, -10); p.lineTo(39, -10); p.lineTo(39, -25); p.closePath(); 210 colours.add(new Instr(Form.S4, p)); 211 TopFlag.add(new Instr(Form.COLR, colours)); 212 TopFlag.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 213 TopFlag.add(new Instr(Form.FILL, Color.black)); 214 TopFlag.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -45))); 215 TopFlag.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 216 TopFlag.add(new Instr(Form.RECT, new Rectangle2D.Double(0, -40, 39, 30))); 217 } 218 219 public static final Symbol TopIcone = new Symbol(); 220 static { 221 TopIcone.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80))); 222 Symbol colours = new Symbol(); 223 Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0, -45.0); p.lineTo(0.0, -15.0); p.lineTo(15.0, -45.0); p.closePath(); 224 colours.add(new Instr(Form.P1, p)); 225 TopIcone.add(new Instr(Form.COLR, colours)); 226 TopIcone.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 227 TopIcone.add(new Instr(Form.FILL, Color.black)); 228 TopIcone.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -15))); 229 p = new Path2D.Double(); p.moveTo(-15.0, -45.0); p.lineTo(0.0, -15.0); p.lineTo(15.0, -45.0); p.closePath(); 230 TopIcone.add(new Instr(Form.PLIN, p)); 231 } 232 233 public static final Symbol TopIsol = new Symbol(); 234 static { 235 TopIsol.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80))); 236 Symbol colours = new Symbol(); 237 Path2D.Double p = new Path2D.Double(); p.moveTo(-13.0, -55.0); p.curveTo(-13.0, -72.3, 13.0, -72.3, 13.0, -55.0); p.curveTo(13.0, -37.7, -13.0, -37.7, -13.0, -55.0); p.closePath(); 238 colours.add(new Instr(Form.P1, p)); 239 p = new Path2D.Double(); p.moveTo(-13.0, -28.0); p.curveTo(-13.0, -45.3, 13.0, -45.3, 13.0, -28.0); p.curveTo(13.0, -10.7, -13.0, -10.7, -13.0, -28.0); p.closePath(); 240 colours.add(new Instr(Form.P2, p)); 241 TopIsol.add(new Instr(Form.COLR, colours)); 242 TopIsol.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 243 TopIsol.add(new Instr(Form.FILL, Color.black)); 244 TopIsol.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -15))); 245 TopIsol.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 246 TopIsol.add(new Instr(Form.ELPS, new Ellipse2D.Double(-13, -41, 26, 26))); 247 TopIsol.add(new Instr(Form.ELPS, new Ellipse2D.Double(-13, -68, 26, 26))); 248 } 249 250 public static final Symbol TopMooring = new Symbol(); 251 static { 252 TopMooring.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80))); 253 TopMooring.add(new Instr(Form.STRK, new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 254 TopMooring.add(new Instr(Form.FILL, Color.black)); 255 TopMooring.add(new Instr(Form.ELPS, new Ellipse2D.Double(-1.5, -6, 3, 3))); 256 TopMooring.add(new Instr(Form.ELPS, new Ellipse2D.Double(-8.5, -25, 17, 17))); 257 } 258 259 public static final Symbol TopNorth = new Symbol(); 260 static { 261 TopNorth.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80))); 262 Symbol colours = new Symbol(); 263 Path2D.Double p = new Path2D.Double(); p.moveTo(0.0, -78.0); p.lineTo(-15.0, -45.0); p.lineTo(15.0, -45.0); p.closePath(); 264 colours.add(new Instr(Form.P1, p)); 265 p = new Path2D.Double(); p.moveTo(-15.0, -10.0); p.lineTo(0.0, -43.0); p.lineTo(15.0, -10.0); p.closePath(); 266 colours.add(new Instr(Form.P2, p)); 267 TopNorth.add(new Instr(Form.COLR, colours)); 268 TopNorth.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 269 TopNorth.add(new Instr(Form.FILL, Color.black)); 270 TopNorth.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -10))); 271 TopNorth.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 272 p = new Path2D.Double(); p.moveTo(-15.0, -10.0); p.lineTo(0.0, -43.0); p.lineTo(15.0, -10.0); p.closePath(); 273 p.moveTo(0.0, -78.0); p.lineTo(-15.0, -45.0); p.lineTo(15.0, -45.0); p.closePath(); 274 TopNorth.add(new Instr(Form.PLIN, p)); 275 } 276 277 public static final Symbol TopSouth = new Symbol(); 278 static { 279 TopSouth.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80))); 280 Symbol colours = new Symbol(); 281 Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0, -78.0); p.lineTo(0.0, -45.0); p.lineTo(15.0, -78.0); p.closePath(); 282 colours.add(new Instr(Form.P1, p)); 283 p = new Path2D.Double(); p.moveTo(0.0, -10.0); p.lineTo(-15.0, -43.0); p.lineTo(15.0, -43.0); p.closePath(); 284 colours.add(new Instr(Form.P2, p)); 285 TopSouth.add(new Instr(Form.COLR, colours)); 286 TopSouth.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 287 TopSouth.add(new Instr(Form.FILL, Color.black)); 288 TopSouth.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -10))); 289 TopSouth.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 290 p = new Path2D.Double(); p.moveTo(0.0, -10.0); p.lineTo(-15.0, -43.0); p.lineTo(15.0, -43.0); p.closePath(); 291 p.moveTo(-15.0, -78.0); p.lineTo(0.0, -45.0); p.lineTo(15.0, -78.0); p.closePath(); 292 TopSouth.add(new Instr(Form.PLIN, p)); 293 } 294 295 public static final Symbol TopSphere = new Symbol(); 296 static { 297 TopSphere.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80))); 298 Symbol colours = new Symbol(); 299 Path2D.Double p = new Path2D.Double(); p.moveTo(-14.0, -28.0); p.curveTo(-14.0, -46.7, 14.0, -46.7, 14.0, -28.0); p.curveTo(14.0, -9.3, -14.0, -9.3, -14.0, -28.0); p.closePath(); 300 colours.add(new Instr(Form.P1, p)); 301 TopSphere.add(new Instr(Form.COLR, colours)); 302 TopSphere.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 303 TopSphere.add(new Instr(Form.FILL, Color.black)); 304 TopSphere.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -15))); 305 TopSphere.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 306 TopSphere.add(new Instr(Form.ELPS, new Ellipse2D.Double(-14, -42, 28, 28))); 307 } 308 309 public static final Symbol TopSquare = new Symbol(); 310 static { 311 TopSquare.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80))); 312 Symbol colours = new Symbol(); 313 Path2D.Double p = new Path2D.Double(); p.moveTo(-13.0, -1.0); p.lineTo(-13.0, -27.0); p.lineTo(13.0, -27.0); p.lineTo(13.0, -1.0); p.closePath(); 314 colours.add(new Instr(Form.P1, p)); 315 p = new Path2D.Double(); p.moveTo(-13.0, -15.0); p.lineTo(-13.0, -1.0); p.lineTo(13.0, -1.0); p.lineTo(13.0, -15.0); p.closePath(); 316 colours.add(new Instr(Form.H2, p)); 317 p = new Path2D.Double(); p.moveTo(-13.0, -19.3); p.lineTo(-13.0, -10.7); p.lineTo(13.0, -10.7); p.lineTo(13.0, -19.3); p.closePath(); 318 colours.add(new Instr(Form.H3, p)); 319 p = new Path2D.Double(); p.moveTo(0.0, -1.0); p.lineTo(0.0, -27.0); p.lineTo(13.0, -27.0); p.lineTo(13.0, -1.0); p.closePath(); 320 colours.add(new Instr(Form.V2, p)); 321 p = new Path2D.Double(); p.moveTo(-4.3, -1.0); p.lineTo(-4.3, -27.0); p.lineTo(4.3, -27.0); p.lineTo(4.3, -1.0); p.closePath(); 322 colours.add(new Instr(Form.V3, p)); 323 p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD); 324 p.moveTo(-13.0, -1.0); p.lineTo(-13.0, -27.0); p.lineTo(13.0, -27.0); p.lineTo(13.0, -1.0); p.closePath(); 325 p.moveTo(-8.0, -6.0); p.lineTo(-8.0, -22.0); p.lineTo(8.0, -22.0); p.lineTo(8.0, -6.0); p.closePath(); 326 colours.add(new Instr(Form.B1, p)); 327 TopSquare.add(new Instr(Form.COLR, colours)); 328 TopSquare.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 329 TopSquare.add(new Instr(Form.FILL, Color.black)); 330 p = new Path2D.Double(); p.moveTo(-13.0, -1.0); p.lineTo(-13.0, -27.0); p.lineTo(13.0, -27.0); p.lineTo(13.0, -1.0); p.closePath(); 331 TopSquare.add(new Instr(Form.PLIN, p)); 332 } 333 334 public static final Symbol TopRectangleH = new Symbol(); 335 static { 336 TopRectangleH.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80))); 337 Symbol colours = new Symbol(); 338 Path2D.Double p = new Path2D.Double(); p.moveTo(-20.0, -1.0); p.lineTo(-20.0, -27.0); p.lineTo(20.0, -27.0); p.lineTo(20.0, -1.0); p.closePath(); 339 colours.add(new Instr(Form.P1, p)); 340 TopRectangleH.add(new Instr(Form.COLR, colours)); 341 TopRectangleH.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 342 TopRectangleH.add(new Instr(Form.FILL, Color.black)); 343 p = new Path2D.Double(); p.moveTo(-20.0, -1.0); p.lineTo(-20.0, -27.0); p.lineTo(20.0, -27.0); p.lineTo(20.0, -1.0); p.closePath(); 344 TopRectangleH.add(new Instr(Form.PLIN, p)); 345 } 346 347 public static final Symbol TopRectangleV = new Symbol(); 348 static { 349 TopRectangleV.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80))); 350 Symbol colours = new Symbol(); 351 Path2D.Double p = new Path2D.Double(); p.moveTo(-13.0, -1.0); p.lineTo(-13.0, -41.0); p.lineTo(13.0, -41.0); p.lineTo(13.0, -1.0); p.closePath(); 352 colours.add(new Instr(Form.P1, p)); 353 TopRectangleV.add(new Instr(Form.COLR, colours)); 354 TopRectangleV.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 355 TopRectangleV.add(new Instr(Form.FILL, Color.black)); 356 p = new Path2D.Double(); p.moveTo(-13.0, -1.0); p.lineTo(-13.0, -41.0); p.lineTo(13.0, -41.0); p.lineTo(13.0, -1.0); p.closePath(); 357 TopRectangleV.add(new Instr(Form.PLIN, p)); 358 } 359 360 public static final Symbol TopRhombus = new Symbol(); 361 static { 362 TopRhombus.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80))); 363 Symbol colours = new Symbol(); 364 Path2D.Double p = new Path2D.Double(); p.moveTo(0.0, -29.0); p.lineTo(-15.0, -15.0); p.lineTo(0.0, -1.0); p.lineTo(15.0, -15.0); p.closePath(); 365 colours.add(new Instr(Form.P1, p)); 366 p = new Path2D.Double(); p.moveTo(-15.0, -15.0); p.lineTo(0.0, -1.0); p.lineTo(15.0, -15.0); p.closePath(); 367 colours.add(new Instr(Form.H2, p)); 368 p = new Path2D.Double(); p.moveTo(-10.0, -19.7); p.lineTo(-15.0, -15.0); p.lineTo(-10.0, -10.3); p.lineTo(10.0, -10.3); p.lineTo(15.0, -15.0); p.lineTo(10.0, -19.7); p.closePath(); 369 colours.add(new Instr(Form.H3, p)); 370 p = new Path2D.Double(); p.moveTo(0.0, -29.0); p.lineTo(0.0, -1.0); p.lineTo(15.0, -15.0); p.closePath(); 371 colours.add(new Instr(Form.V2, p)); 372 p = new Path2D.Double(); p.moveTo(0.0, -29.0); p.lineTo(-5.0, -24.3); p.lineTo(-5.0, -5.7); p.lineTo(0.0, -1.0); p.lineTo(5.0, -5.7); p.lineTo(5.0, -24.3); p.closePath(); 373 colours.add(new Instr(Form.V3, p)); 374 p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD); 375 p.moveTo(0.0, -29.0); p.lineTo(-15.0, -15.0); p.lineTo(0.0, -1.0); p.lineTo(15.0, -15.0); p.closePath(); 376 p.moveTo(0.0, -23.0); p.lineTo(-9.0, -15.0); p.lineTo(0.0, -7.0); p.lineTo(9.0, -15.0); p.closePath(); 377 colours.add(new Instr(Form.B1, p)); 378 TopRhombus.add(new Instr(Form.COLR, colours)); 379 TopRhombus.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 380 TopRhombus.add(new Instr(Form.FILL, Color.black)); 381 p = new Path2D.Double(); p.moveTo(0.0, -29.0); p.lineTo(-15.0, -15.0); p.lineTo(0.0, -1.0); p.lineTo(15.0, -15.0); p.closePath(); 382 TopRhombus.add(new Instr(Form.PLIN, p)); 383 } 384 385 public static final Symbol TopRhombusCircle = new Symbol(); 386 387 public static final Symbol TopSphereRhombus = new Symbol(); 388 static { 389 TopSphereRhombus.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80))); 390 TopSphereRhombus.add(new Instr(Form.SYMB, new Symbols.SubSymbol(TopRhombus, 1.0, 0, 0, null, null))); 391 Symbol colours = new Symbol(); 392 Path2D.Double p = new Path2D.Double(); p.moveTo(-14.0, -44.0); p.curveTo(-14.0, -62.7, 14.0, -62.7, 14.0, -44.0); p.curveTo(14.0, -25.3, -14.0, -25.3, -14.0, -44.0); p.closePath(); 393 colours.add(new Instr(Form.P1, p)); 394 TopSphereRhombus.add(new Instr(Form.COLR, colours)); 395 TopSphereRhombus.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 396 TopSphereRhombus.add(new Instr(Form.FILL, Color.black)); 397 TopSphereRhombus.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 398 TopSphereRhombus.add(new Instr(Form.ELPS, new Ellipse2D.Double(-14, -58, 28, 28))); 399 } 400 401 public static final Symbol TopT = new Symbol(); 402 403 public static final Symbol TopTrapeziumU = new Symbol(); 404 static { 405 TopTrapeziumU.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80))); 406 Symbol colours = new Symbol(); 407 Path2D.Double p = new Path2D.Double(); p.moveTo(-20.0, -1.0); p.lineTo(-13.0, -27.0); p.lineTo(13.0, -27.0); p.lineTo(20.0, -1.0); p.closePath(); 408 colours.add(new Instr(Form.P1, p)); 409 TopTrapeziumU.add(new Instr(Form.COLR, colours)); 410 TopTrapeziumU.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 411 TopTrapeziumU.add(new Instr(Form.FILL, Color.black)); 412 p = new Path2D.Double(); p.moveTo(-20.0, -1.0); p.lineTo(-13.0, -27.0); p.lineTo(13.0, -27.0); p.lineTo(20.0, -1.0); p.closePath(); 413 TopTrapeziumU.add(new Instr(Form.PLIN, p)); 414 } 415 416 public static final Symbol TopTrapeziumD = new Symbol(); 417 static { 418 TopTrapeziumD.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80))); 419 Symbol colours = new Symbol(); 420 Path2D.Double p = new Path2D.Double(); p.moveTo(-13.0, -1.0); p.lineTo(-20.0, -27.0); p.lineTo(20.0, -27.0); p.lineTo(13.0, -1.0); p.closePath(); 421 colours.add(new Instr(Form.P1, p)); 422 TopTrapeziumD.add(new Instr(Form.COLR, colours)); 423 TopTrapeziumD.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 424 TopTrapeziumD.add(new Instr(Form.FILL, Color.black)); 425 p = new Path2D.Double(); p.moveTo(-13.0, -1.0); p.lineTo(-20.0, -27.0); p.lineTo(20.0, -27.0); p.lineTo(13.0, -1.0); p.closePath(); 426 TopTrapeziumD.add(new Instr(Form.PLIN, p)); 427 } 428 429 public static final Symbol TopTriangle = new Symbol(); 430 static { 431 TopTriangle.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80))); 432 Symbol colours = new Symbol(); 433 Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0, -1.0); p.lineTo(0.0, -29.0); p.lineTo(15.0, -1.0); p.closePath(); 434 colours.add(new Instr(Form.P1, p)); 435 p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD); 436 p.moveTo(-15.0, -1.0); p.lineTo(0.0, -29.0); p.lineTo(15.0, -1.0); p.closePath(); 437 p.moveTo(-10.0, -6.0); p.lineTo(0.0, -24.0); p.lineTo(10.0, -6.0); p.closePath(); 438 colours.add(new Instr(Form.B1, p)); 439 TopTriangle.add(new Instr(Form.COLR, colours)); 440 TopTriangle.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 441 TopTriangle.add(new Instr(Form.FILL, Color.black)); 442 p = new Path2D.Double(); p.moveTo(-15.0, -1.0); p.lineTo(0.0, -29.0); p.lineTo(15.0, -1.0); p.closePath(); 443 TopTriangle.add(new Instr(Form.PLIN, p)); 444 } 445 446 public static final Symbol TopItriangle = new Symbol(); 447 static { 448 TopItriangle.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80))); 449 Symbol colours = new Symbol(); 450 Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0, -29.0); p.lineTo(0.0, -1.0); p.lineTo(15.0, -29.0); p.closePath(); 451 colours.add(new Instr(Form.P1, p)); 452 p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD); 453 p.moveTo(-15.0, -29.0); p.lineTo(0.0, -1.0); p.lineTo(15.0, -29.0); p.closePath(); 454 p.moveTo(-10.0, -24.0); p.lineTo(0.0, -6.0); p.lineTo(10.0, -24.0); p.closePath(); 455 colours.add(new Instr(Form.B1, p)); 456 TopItriangle.add(new Instr(Form.COLR, colours)); 457 TopItriangle.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 458 TopItriangle.add(new Instr(Form.FILL, Color.black)); 459 p = new Path2D.Double(); p.moveTo(-15.0, -29.0); p.lineTo(0.0, -1.0); p.lineTo(15.0, -29.0); p.closePath(); 460 TopItriangle.add(new Instr(Form.PLIN, p)); 461 } 462 463 public static final Symbol TopTriangleCircle = new Symbol(); 464 465 public static final Symbol TopWest = new Symbol(); 466 static { 467 TopWest.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80))); 468 Symbol colours = new Symbol(); 469 Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0, -78.0); p.lineTo(0.0, -45.0); p.lineTo(15.0, -78.0); p.closePath(); 470 colours.add(new Instr(Form.P1, p)); 471 p = new Path2D.Double(); p.moveTo(-15.0, -10.0); p.lineTo(0.0, -43.0); p.lineTo(15.0, -10.0); p.closePath(); 472 colours.add(new Instr(Form.P2, p)); 473 TopWest.add(new Instr(Form.COLR, colours)); 474 TopWest.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 475 TopWest.add(new Instr(Form.FILL, Color.black)); 476 TopWest.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -10))); 477 TopWest.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 478 p = new Path2D.Double(); p.moveTo(-15.0, -10.0); p.lineTo(0.0, -43.0); p.lineTo(15.0, -10.0); p.closePath(); 479 p.moveTo(-15.0, -78.0); p.lineTo(0.0, -45.0); p.lineTo(15.0, -78.0); p.closePath(); 480 TopWest.add(new Instr(Form.PLIN, p)); 481 } 482 483 public static final Symbol TopX = new Symbol(); 484 static { 485 TopX.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80))); 486 Symbol colours = new Symbol(); 487 Path2D.Double p = new Path2D.Double(); p.moveTo(0.0, -27.7); p.lineTo(-12.4, -15.7); p.lineTo(-19.3, -22.6); p.lineTo(-7.3, -35.0); p.lineTo(-19.3, -47.3); 488 p.lineTo(-12.4, -54.2); p.lineTo(0.0, -42.4); p.lineTo(12.4, -54.2); p.lineTo(19.3, -47.3); p.lineTo(7.3, -35.0); p.lineTo(19.3, -22.6); p.lineTo(12.4, -15.7); p.closePath(); 489 colours.add(new Instr(Form.P1, p)); 490 TopX.add(new Instr(Form.COLR, colours)); 491 TopX.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 492 TopX.add(new Instr(Form.FILL, Color.black)); 493 TopX.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -27))); 494 TopX.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 495 p = new Path2D.Double(); p.moveTo(0.0, -27.7); p.lineTo(-12.4, -15.7); p.lineTo(-19.3, -22.6); p.lineTo(-7.3, -35.0); p.lineTo(-19.3, -47.3); p.lineTo(-12.4, -54.2); p.lineTo(0.0, -42.4); 496 p.lineTo(12.4, -54.2); p.lineTo(19.3, -47.3); p.lineTo(7.3, -35.0); p.lineTo(19.3, -22.6); p.lineTo(12.4, -15.7); p.closePath(); 497 TopX.add(new Instr(Form.PLIN, p)); 498 } 499 500 public static final Symbol TopOther = new Symbol(); 501 502 public static final EnumMap<TopSHP, Symbol> Shapes = new EnumMap<>(TopSHP.class); 503 static { 504 Shapes.put(TopSHP.TOP_BESM, TopBesom); Shapes.put(TopSHP.TOP_IBESM, TopIBesom); Shapes.put(TopSHP.TOP_BORD, TopBoard); Shapes.put(TopSHP.TOP_CAN, TopCan); 505 Shapes.put(TopSHP.TOP_CONE, TopCone); Shapes.put(TopSHP.TOP_CROS, TopCross); Shapes.put(TopSHP.TOP_EAST, TopEast); Shapes.put(TopSHP.TOP_ICONE, TopIcone); 506 Shapes.put(TopSHP.TOP_ISD, TopIsol); Shapes.put(TopSHP.TOP_NORTH, TopNorth); Shapes.put(TopSHP.TOP_SOUTH, TopSouth); Shapes.put(TopSHP.TOP_SPHR, TopSphere); 507 Shapes.put(TopSHP.TOP_SQUR, TopSquare); Shapes.put(TopSHP.TOP_TRI, TopTriangle); Shapes.put(TopSHP.TOP_ITRI, TopItriangle); Shapes.put(TopSHP.TOP_WEST, TopWest); 508 Shapes.put(TopSHP.TOP_SALT, TopX); Shapes.put(TopSHP.TOP_RHOM, TopRhombus); Shapes.put(TopSHP.TOP_FLAG, TopFlag); Shapes.put(TopSHP.TOP_CUBE, TopCube); 509 Shapes.put(TopSHP.TOP_SPRH, TopSphereRhombus); Shapes.put(TopSHP.TOP_HRECT, TopRectangleH); Shapes.put(TopSHP.TOP_VRECT, TopRectangleV); 510 Shapes.put(TopSHP.TOP_TRAP, TopTrapeziumU); Shapes.put(TopSHP.TOP_ITRAP, TopTrapeziumD); Shapes.put(TopSHP.TOP_COSP, TopConeSphere); 511 Shapes.put(TopSHP.TOP_CIRC, TopCircle); Shapes.put(TopSHP.TOP_CRSS, TopCrosses); Shapes.put(TopSHP.TOP_T, TopT); Shapes.put(TopSHP.TOP_TRCL, TopTriangleCircle); 512 Shapes.put(TopSHP.TOP_CRCL, TopCrossCircle); Shapes.put(TopSHP.TOP_RHCL, TopRhombusCircle); Shapes.put(TopSHP.TOP_CLTR, TopCircleTriangle); 513 Shapes.put(TopSHP.TOP_CYSP, TopCanSphere); Shapes.put(TopSHP.TOP_OTHR, TopOther); 514 } 515 516 // CHECKSTYLE.OFF: SingleSpaceSeparator 517 public static final EnumMap<BoySHP, Delta> BuoyDeltas = new EnumMap<>(BoySHP.class); 518 static { 519 BuoyDeltas.put(BoySHP.BOY_PILR, new Delta(Handle.BC, new AffineTransform(0.948324, 0.317305, -0.3173047, 0.948324, 31.5, -95.0))); 520 BuoyDeltas.put(BoySHP.BOY_SPAR, new Delta(Handle.BC, new AffineTransform(0.948324, 0.317305, -0.3173047, 0.948324, 31.5, -95.0))); 521 BuoyDeltas.put(BoySHP.BOY_CAN, new Delta(Handle.BC, new AffineTransform(0.948324, 0.317305, -0.3173047, 0.948324, 12.7, -37.9))); 522 BuoyDeltas.put(BoySHP.BOY_CONE, new Delta(Handle.BC, new AffineTransform(0.948324, 0.317305, -0.3173047, 0.948324, 12.7, -37.9))); 523 BuoyDeltas.put(BoySHP.BOY_SPHR, new Delta(Handle.BC, new AffineTransform(0.948324, 0.317305, -0.3173047, 0.948324, 12.7, -37.9))); 524 BuoyDeltas.put(BoySHP.BOY_BARL, new Delta(Handle.BC, new AffineTransform(0.948324, 0.317305, -0.3173047, 0.948324, 12.7, -37.9))); 525 BuoyDeltas.put(BoySHP.BOY_SUPR, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -42.0))); 526 BuoyDeltas.put(BoySHP.BOY_ICE, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -25.0))); 527 } 528 529 public static final Delta FloatDelta = new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -42.0)); 530 public static final Delta BeaconDelta = new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -70.0)); 531 public static final Delta LightDelta = new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -20.0)); 532 // CHECKSTYLE.ON: SingleSpaceSeparator 506 533 }
Note:
See TracChangeset
for help on using the changeset viewer.
