Changeset 26684 in osm
- Timestamp:
- 2011-09-19T22:23:38+02:00 (13 years ago)
- Location:
- applications/editors/josm/plugins/importvec
- Files:
-
- 33 deleted
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/importvec/README
r23707 r26684 7 7 8 8 * The license for plugin is "GPL v2 or later". 9 10 * Plugin uses parts of SVG Salamander project https://svgsalamander.dev.java.net/ -
applications/editors/josm/plugins/importvec/build.xml
r26605 r26684 32 32 <property name="commit.message" value="Commit message"/> 33 33 <!-- enter the *lowest* JOSM version this plugin is currently compatible with --> 34 <property name="plugin.main.version" value="4 394"/>34 <property name="plugin.main.version" value="4453"/> 35 35 <!-- 36 36 ************************************************ -
applications/editors/josm/plugins/importvec/src/org/openstreetmap/josm/plugins/importvec/ImportVectorAction.java
r26509 r26684 3 3 import static org.openstreetmap.josm.tools.I18n.tr; 4 4 5 import java.awt.Shape; 5 6 import java.awt.event.ActionEvent; 6 7 import java.awt.event.KeyEvent; 8 import java.awt.geom.AffineTransform; 7 9 import java.awt.geom.PathIterator; 8 10 import java.awt.geom.Point2D; 9 11 import java.awt.geom.Rectangle2D; 10 import java.io.ByteArrayInputStream;11 12 import java.io.File; 12 import java.io.FileInputStream;13 13 import java.io.IOException; 14 import java.net.URI;15 14 import java.util.ArrayList; 16 15 import java.util.Arrays; … … 35 34 import org.openstreetmap.josm.io.OsmTransferException; 36 35 import org.openstreetmap.josm.tools.Shortcut; 37 import org.xml.sax.EntityResolver;38 import org.xml.sax.InputSource;39 import org.xml.sax.SAXException;40 import org.xml.sax.XMLReader;41 import org.xml.sax.helpers.XMLReaderFactory;42 36 43 37 import com.kitfox.svg.Group; 44 38 import com.kitfox.svg.SVGDiagram; 45 39 import com.kitfox.svg.SVGElement; 46 import com.kitfox.svg.SVG Loader;40 import com.kitfox.svg.SVGUniverse; 47 41 import com.kitfox.svg.ShapeElement; 48 42 … … 197 191 cube(1-t)*ay+3*sqr(1-t)*t*by+3*(1-t)*t*t*cy+t*t*t*dy); 198 192 } 199 200 private void processElement(SVGElement el) throws IOException { 193 private void processElement(SVGElement el, AffineTransform transform) throws IOException { 201 194 if (el instanceof Group) { 202 for (SVGElement child : ((Group)el).getChildren(null)) { 203 processElement(child); 204 } 195 AffineTransform oldTransform = transform; 196 AffineTransform xform = ((Group)el).getXForm(); 197 if (transform == null) 198 { 199 transform = xform; 200 } else if (xform != null) { 201 transform = new AffineTransform(transform); 202 transform.concatenate(xform); 203 } 204 for (Object child : ((Group)el).getChildren(null)) { 205 processElement((SVGElement)child, transform); 206 } 207 transform = oldTransform; 205 208 } else if (el instanceof ShapeElement) { 206 PathIterator it = ((ShapeElement)el).getShape().getPathIterator(null); 209 Shape shape = ((ShapeElement)el).getShape(); 210 if (transform != null) shape = transform.createTransformedShape(shape); 211 PathIterator it = shape.getPathIterator(null); 207 212 while (!it.isDone()) { 208 213 double[] coords = new double[6]; … … 244 249 } 245 250 @Override 246 protected void realRun() throws SAXException,IOException, OsmTransferException {247 LatLon center = Main. proj.eastNorth2latlon(Main.map.mapView.getCenter());251 protected void realRun() throws IOException, OsmTransferException { 252 LatLon center = Main.getProjection().eastNorth2latlon(Main.map.mapView.getCenter()); 248 253 scale = Settings.getScaleNumerator() / Settings.getScaleDivisor() / Math.cos(Math.toRadians(center.lat())); 249 254 this.center = projection.latlon2eastNorth(center); 250 255 try { 256 SVGUniverse universe = new SVGUniverse(); 251 257 for (File f : files) { 252 258 if (canceled) return; 253 SVGLoader loader = new SVGLoader(new URI("about:blank"),true); 254 XMLReader rdr = XMLReaderFactory.createXMLReader(); 255 rdr.setContentHandler(loader); 256 rdr.setEntityResolver(new EntityResolver() { 257 @Override 258 public InputSource resolveEntity(String publicId, String systemId) { 259 //Ignore all DTDs 260 return new InputSource(new ByteArrayInputStream(new byte[0])); 261 } 262 }); 263 FileInputStream in = new FileInputStream(f); 264 try { 265 rdr.parse(new InputSource(in)); 266 } finally { 267 in.close(); 268 } 269 270 SVGDiagram diagram = loader.getLoadedDiagram(); 259 SVGDiagram diagram = universe.getDiagram(f.toURI()); 271 260 ShapeElement root = diagram.getRoot(); 272 261 if (root == null) throw new IOException("Can't find root SVG element"); … … 274 263 this.center = this.center.add(-bbox.getCenterX()*scale, bbox.getCenterY()*scale); 275 264 276 processElement(root); 277 } 278 } catch(SAXException e) { 279 throw e; 265 processElement(root, null); 266 } 280 267 } catch(IOException e) { 281 268 throw e;
Note:
See TracChangeset
for help on using the changeset viewer.