Changeset 26684 in osm


Ignore:
Timestamp:
2011-09-19T22:23:38+02:00 (13 years ago)
Author:
upliner
Message:

importvec: use internal JOSM svgsalamander and fix bug with group transform

Location:
applications/editors/josm/plugins/importvec
Files:
33 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/importvec/README

    r23707 r26684  
    77
    88    * 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  
    3232    <property name="commit.message" value="Commit message"/>
    3333    <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
    34     <property name="plugin.main.version" value="4394"/>
     34    <property name="plugin.main.version" value="4453"/>
    3535    <!--
    3636      ************************************************
  • applications/editors/josm/plugins/importvec/src/org/openstreetmap/josm/plugins/importvec/ImportVectorAction.java

    r26509 r26684  
    33import static org.openstreetmap.josm.tools.I18n.tr;
    44
     5import java.awt.Shape;
    56import java.awt.event.ActionEvent;
    67import java.awt.event.KeyEvent;
     8import java.awt.geom.AffineTransform;
    79import java.awt.geom.PathIterator;
    810import java.awt.geom.Point2D;
    911import java.awt.geom.Rectangle2D;
    10 import java.io.ByteArrayInputStream;
    1112import java.io.File;
    12 import java.io.FileInputStream;
    1313import java.io.IOException;
    14 import java.net.URI;
    1514import java.util.ArrayList;
    1615import java.util.Arrays;
     
    3534import org.openstreetmap.josm.io.OsmTransferException;
    3635import 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;
    4236
    4337import com.kitfox.svg.Group;
    4438import com.kitfox.svg.SVGDiagram;
    4539import com.kitfox.svg.SVGElement;
    46 import com.kitfox.svg.SVGLoader;
     40import com.kitfox.svg.SVGUniverse;
    4741import com.kitfox.svg.ShapeElement;
    4842
     
    197191                    cube(1-t)*ay+3*sqr(1-t)*t*by+3*(1-t)*t*t*cy+t*t*t*dy);
    198192        }
    199 
    200         private void processElement(SVGElement el) throws IOException {
     193        private void processElement(SVGElement el, AffineTransform transform) throws IOException {
    201194            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;
    205208            } 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);
    207212                while (!it.isDone()) {
    208213                    double[] coords = new double[6];
     
    244249        }
    245250        @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());
    248253            scale = Settings.getScaleNumerator() / Settings.getScaleDivisor() / Math.cos(Math.toRadians(center.lat()));
    249254            this.center = projection.latlon2eastNorth(center);
    250255            try {
     256                SVGUniverse universe = new SVGUniverse();
    251257                for (File f : files) {
    252258                    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());
    271260                    ShapeElement root = diagram.getRoot();
    272261                    if (root == null) throw new IOException("Can't find root SVG element");
     
    274263                    this.center = this.center.add(-bbox.getCenterX()*scale, bbox.getCenterY()*scale);
    275264
    276                     processElement(root);
    277                 }
    278             } catch(SAXException e) {
    279                 throw e;
     265                    processElement(root, null);
     266                }
    280267            } catch(IOException e) {
    281268                throw e;
Note: See TracChangeset for help on using the changeset viewer.