Changeset 29204 in osm for applications/editors/josm/plugins/smed2/src/seamap
- Timestamp:
- 2013-01-19T15:50:02+01:00 (13 years ago)
- Location:
- applications/editors/josm/plugins/smed2/src/seamap
- Files:
-
- 2 edited
-
Renderer.java (modified) (4 diffs)
-
Rules.java (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/smed2/src/seamap/Renderer.java
r29202 r29204 16 16 import java.awt.Rectangle; 17 17 import java.awt.RenderingHints; 18 import java.awt. font.TextLayout;18 import java.awt.geom.AffineTransform; 19 19 import java.awt.geom.GeneralPath; 20 20 import java.awt.geom.Path2D; … … 29 29 import seamap.SeaMap; 30 30 import seamap.SeaMap.*; 31 import symbols.Areas;32 31 import symbols.Symbols; 33 32 import symbols.Symbols.*; … … 145 144 } 146 145 146 private static Rectangle symbolSize(Symbol symbol) { 147 Symbol ssymb = symbol; 148 while (ssymb != null) { 149 for (Instr item : symbol) { 150 if (item.type == Prim.BBOX) { 151 return (Rectangle) item.params; 152 } 153 if (item.type == Prim.SYMB) { 154 ssymb = (Symbol) item.params; 155 break; 156 } 157 } 158 if (ssymb == symbol) 159 break; 160 } 161 return null; 162 } 163 147 164 public static void lineSymbols(Feature feature, Symbol prisymb, double space, Symbol secsymb, int ratio) { 148 165 if (feature.flag != Fflag.NODE) { 149 ArrayList<Long> way = map.ways.get(feature.refs); 150 for (long node : way) { 151 Point2D point = helper.getPoint(map.nodes.get(node)); 152 153 } 154 } 155 } 156 166 Rectangle prect = symbolSize(prisymb); 167 Rectangle srect = symbolSize(secsymb); 168 if (srect == null) 169 ratio = 0; 170 if (prect != null) { 171 ArrayList<Long> ways = new ArrayList<Long>(); 172 double psize = Math.abs(prect.getY()) * sScale; 173 double ssize = (srect != null) ? Math.abs(srect.getY()) * sScale : 0; 174 if (map.outers.containsKey(feature.refs)) { 175 ways.addAll(map.mpolys.get(map.outers.get(feature.refs))); 176 } else { 177 if (map.mpolys.containsKey(feature.refs)) { 178 ways.addAll(map.mpolys.get(feature.refs)); 179 } else { 180 ways.add(feature.refs); 181 } 182 } 183 Point2D prev = new Point2D.Double(); 184 Point2D next = new Point2D.Double(); 185 Point2D curr = new Point2D.Double(); 186 Point2D succ = new Point2D.Double(); 187 boolean gap = true; 188 boolean piv = false; 189 double len = 0; 190 double angle = 0; 191 int scount = ratio; 192 Symbol symbol = prisymb; 193 for (long way : ways) { 194 boolean first = true; 195 for (long node : map.ways.get(way)) { 196 prev = next; 197 next = helper.getPoint(map.nodes.get(node)); 198 angle = Math.atan2(next.getY() - prev.getY(), next.getX() - prev.getX()); 199 piv = true; 200 if (first) { 201 curr = succ = next; 202 gap = (space > 0); 203 scount = ratio; 204 symbol = prisymb; 205 len = gap ? psize * space * 0.5 : psize; 206 first = false; 207 } else { 208 while (curr.distance(next) >= len) { 209 if (piv) { 210 succ = new Point2D.Double(prev.getX() + (len * Math.cos(angle)), prev.getY() + (len * Math.sin(angle))); 211 piv = false; 212 } else { 213 succ = new Point2D.Double(curr.getX() + (len * Math.cos(angle)), curr.getY() + (len * Math.sin(angle))); 214 } 215 if (!gap) { 216 Symbols.drawSymbol(g2, symbol, sScale, curr.getX(), curr.getY(), new Delta(Handle.BC, AffineTransform.getRotateInstance(Math.atan2(succ.getY() - curr.getY(), succ.getX() - curr.getX())+Math.toRadians(90))), null); 217 } 218 if (space > 0) gap = !gap; 219 curr = succ; 220 len = gap ? (psize * space) : (--scount == 0) ? ssize : psize; 221 if (scount == 0) { 222 symbol = secsymb; 223 scount = ratio; 224 } else { 225 symbol = prisymb; 226 } 227 } 228 } 229 } 230 } 231 } 232 } 233 } 234 157 235 public static void lineVector (Feature feature, LineStyle style) { 158 236 if (feature.flag != Fflag.NODE) { … … 202 280 } 203 281 204 public static void labelText (Feature feature, String str, Font font, Delta delta) { 282 public static void labelText (Feature feature, String str, Font font, Color colour, Delta delta) { 205 283 Symbol label = new Symbol(); 206 label.add(new Instr(Prim. FILL, Color.black));207 label.add(new Instr(Prim.TEXT, new Caption(str, font, delta)));284 label.add(new Instr(Prim.TEXT, new Caption(str, font, colour 285 , delta))); 208 286 Point2D point = helper.getPoint(findCentroid(feature)); 209 287 Symbols.drawSymbol(g2, label, tScale, point.getX(), point.getY(), delta, null); -
applications/editors/josm/plugins/smed2/src/seamap/Rules.java
r29202 r29204 148 148 AttItem name = feature.atts.get(Att.OBJNAM); 149 149 if ((zoom >= 10) && (name != null)) 150 Renderer.labelText(feature, (String) name.val, new Font("Arial", Font.BOLD, 150), null); 150 Renderer.labelText(feature, (String) name.val, new Font("Arial", Font.BOLD, 150), new Color(0x80c480ff), null); 151 151 break; 152 152 case TSELNE: … … 170 170 } 171 171 if ((zoom >= 15) && (name != null)) 172 Renderer.labelText(feature, (String) name.val, new Font("Arial", Font.BOLD, 80), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -90))); 172 Renderer.labelText(feature, (String) name.val, new Font("Arial", Font.BOLD, 80), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -90))); 173 173 break; 174 174 case MARCUL: … … 195 195 Renderer.lineVector(feature, new LineStyle(Color.black, 8, new float[] { 25, 25 }, null)); 196 196 if ((zoom >= 12) && (name != null)) 197 Renderer.labelText(feature, (String) name.val, new Font("Arial", Font.PLAIN, 100), new Delta(Handle.CC, AffineTransform.getTranslateInstance(0, 0))); 197 Renderer.labelText(feature, (String) name.val, new Font("Arial", Font.PLAIN, 100), Color.black, new Delta(Handle.CC, AffineTransform.getTranslateInstance(0, 0))); 198 198 break; 199 199 case RESARE: 200 200 if (zoom >= 12) { 201 201 Renderer.lineSymbols(feature, Areas.Restricted, 1.0, null, 0); 202 if ((CatREA)Renderer.getAttVal(feature, feature.type, 0, Att.CATREA) == CatREA.REA_NWAK) 203 Renderer.symbol(feature, Areas.NoWake, Obj.RESARE, null); 202 // if ((CatREA)Renderer.getAttVal(feature, feature.type, 0, Att.CATREA) == CatREA.REA_NWAK) 203 // Renderer.symbol(feature, Areas.NoWake, Obj.RESARE, null); 204 204 } 205 205 break; … … 209 209 Renderer.lineVector(feature, new LineStyle(Color.black, 20, new float[] { 40, 40 }, null)); 210 210 if ((zoom >= 15) && (name != null)) 211 Renderer.labelText(feature, (String) name.val, new Font("Arial", Font.BOLD, 80), new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 10))); 211 Renderer.labelText(feature, (String) name.val, new Font("Arial", Font.BOLD, 80), Color.black, new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 10))); 212 212 } 213 213 break;
Note:
See TracChangeset
for help on using the changeset viewer.
