Changeset 30025 in osm for applications/editors/josm/plugins/smed2/src/seamap/Renderer.java
- Timestamp:
- 2013-10-18T11:30:13+02:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/smed2/src/seamap/Renderer.java
r30024 r30025 65 65 public enum LabelStyle { NONE, RRCT, RECT, ELPS, CIRC } 66 66 67 static Map Helper helper;67 static MapContext context; 68 68 static SeaMap map; 69 69 static double sScale; … … 72 72 static int zoom; 73 73 74 public static void reRender(Graphics2D g, int z, double factor, SeaMap m, Map Helper h) {74 public static void reRender(Graphics2D g, int z, double factor, SeaMap m, MapContext c) { 75 75 g2 = g; 76 76 zoom = z; 77 helper = h;77 context = c; 78 78 map = m; 79 79 sScale = symbolScale[zoom] * factor; … … 107 107 108 108 public static void symbol(Feature feature, Symbol symbol, Obj obj, Delta delta, Scheme scheme) { 109 Point2D point = helper.getPoint(feature.centre);109 Point2D point = context.getPoint(feature.centre); 110 110 if (obj == null) { 111 111 Symbols.drawSymbol(g2, symbol, sScale, point.getX(), point.getY(), delta, scheme); … … 177 177 while (bit.hasNext()) { 178 178 prev = next; 179 next = helper.getPoint(bit.next());179 next = context.getPoint(bit.next()); 180 180 angle = Math.atan2(next.getY() - prev.getY(), next.getX() - prev.getX()); 181 181 piv = true; … … 233 233 case LINE: 234 234 EdgeIterator eit = map.new EdgeIterator(map.edges.get(feature.refs), true); 235 point = helper.getPoint(eit.next());235 point = context.getPoint(eit.next()); 236 236 p.moveTo(point.getX(), point.getY()); 237 237 while (eit.hasNext()) { 238 point = helper.getPoint(eit.next());238 point = context.getPoint(eit.next()); 239 239 p.lineTo(point.getX(), point.getY()); 240 240 } … … 243 243 for (Bound bound : map.areas.get(feature.refs)) { 244 244 BoundIterator bit = map.new BoundIterator(bound); 245 point = helper.getPoint(bit.next());245 point = context.getPoint(bit.next()); 246 246 p.moveTo(point.getX(), point.getY()); 247 247 while (bit.hasNext()) { 248 point = helper.getPoint(bit.next());248 point = context.getPoint(bit.next()); 249 249 p.lineTo(point.getX(), point.getY()); 250 250 } … … 292 292 break; 293 293 } 294 radius *= helper.mile(feature);294 radius *= context.mile(feature); 295 295 Symbol circle = new Symbol(); 296 296 if (style.fill != null) { … … 301 301 circle.add(new Instr(Prim.STRK, new BasicStroke(style.width, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 1, style.dash, 0))); 302 302 circle.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-radius,-radius,radius*2,radius*2))); 303 Point2D point = helper.getPoint(feature.centre);304 Symbols.drawSymbol(g2, circle, sScale, point.getX(), point.getY(), null, null);303 Point2D point = context.getPoint(feature.centre); 304 Symbols.drawSymbol(g2, circle, 1, point.getX(), point.getY(), null, null); 305 305 } 306 306 … … 312 312 switch (feature.flag) { 313 313 case POINT: 314 point = helper.getPoint(feature.centre);314 point = context.getPoint(feature.centre); 315 315 g2.drawImage(image, new AffineTransformOp(AffineTransform.getScaleInstance(sScale, sScale), AffineTransformOp.TYPE_NEAREST_NEIGHBOR), 316 316 (int)(point.getX() - (50 * sScale)), (int)(point.getY() - (50 * sScale))); … … 319 319 for (Bound bound : map.areas.get(feature.refs)) { 320 320 BoundIterator bit = map.new BoundIterator(bound); 321 point = helper.getPoint(bit.next());321 point = context.getPoint(bit.next()); 322 322 p.moveTo(point.getX(), point.getY()); 323 323 while (bit.hasNext()) { 324 point = helper.getPoint(bit.next());324 point = context.getPoint(bit.next()); 325 325 p.lineTo(point.getX(), point.getY()); 326 326 } … … 340 340 GlyphVector gv = font.deriveFont((float)(font.getSize())).createGlyphVector(frc, str.equals(" ") ? "M" : str); 341 341 Rectangle2D bounds = gv.getVisualBounds(); 342 double width = bounds.getWidth() * 1.5;343 double height = bounds.getHeight() * 1.5;344 double dx = 0; 345 double dy = 0; 342 double width = bounds.getWidth(); 343 double height = bounds.getHeight(); 344 double dx = 0.25 * width; 345 double dy = 0.25 * height; 346 346 switch (delta.h) { 347 347 case CC: 348 dx = width / 2.0; 349 dy = height / 2.0; 348 dx += width / 2.0; 349 dy += height / 2.0; 350 350 break; 351 351 case TL: 352 dx = 0; 353 dy = 0; 352 dx += 0; 353 dy += 0; 354 354 break; 355 355 case TR: 356 dx = width; 357 dy = 0; 356 dx += width; 357 dy += 0; 358 358 break; 359 359 case TC: 360 dx = width / 2.0; 361 dy = 0; 360 dx += width / 2.0; 361 dy += 0; 362 362 break; 363 363 case LC: 364 dx = 0; 365 dy = height / 2.0; 364 dx += 0; 365 dy += height / 2.0; 366 366 break; 367 367 case RC: 368 dx = width; 369 dy = height / 2.0; 368 dx += width; 369 dy += height / 2.0; 370 370 break; 371 371 case BL: 372 dx = 0; 373 dy = height; 372 dx += 0; 373 dy += height; 374 374 break; 375 375 case BR: 376 dx = width; 377 dy = height; 376 dx += width; 377 dy += height; 378 378 break; 379 379 case BC: 380 dx = width / 2.0; 381 dy = height; 380 dx += width / 2.0; 381 dy += height; 382 382 break; 383 383 } … … 386 386 case RRCT: 387 387 if (width < height) width = height; 388 width *= 1.5; 389 height *= 1.5; 388 390 label.add(new Instr(Prim.FILL, bg)); 389 label.add(new Instr(Prim.RSHP, new RoundRectangle2D.Double(-dx,-dy /1.25,width,height,height,height)));391 label.add(new Instr(Prim.RSHP, new RoundRectangle2D.Double(-dx,-dy,width,height,height,height))); 390 392 label.add(new Instr(Prim.FILL, fg)); 391 393 label.add(new Instr(Prim.STRK, new BasicStroke(1 + (int)(height/10), BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER))); 392 label.add(new Instr(Prim.RRCT, new RoundRectangle2D.Double(-dx,-dy /1.25,width,height,height,height)));394 label.add(new Instr(Prim.RRCT, new RoundRectangle2D.Double(-dx,-dy,width,height,height,height))); 393 395 break; 394 396 } 395 397 label.add(new Instr(Prim.TEXT, new Caption(str, font, fg, delta))); 396 Point2D point = helper.getPoint(feature.centre);398 Point2D point = context.getPoint(feature.centre); 397 399 Symbols.drawSymbol(g2, label, sScale, point.getX(), point.getY(), null, null); 398 400 } … … 431 433 while (bit.hasNext()) { 432 434 prev = next; 433 next = helper.getPoint(bit.next());435 next = context.getPoint(bit.next()); 434 436 angle = Math.atan2(next.getY() - prev.getY(), next.getX() - prev.getX()); 435 437 piv = true;
Note:
See TracChangeset
for help on using the changeset viewer.