Ignore:
Timestamp:
2010-10-27T12:53:40+02:00 (14 years ago)
Author:
extropy
Message:

Work on integrating pdfbox.

Location:
applications/editors/josm/plugins/pdfimport
Files:
3 added
5 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/pdfimport/.classpath

    r23702 r23861  
    55        <classpathentry combineaccessrules="false" kind="src" path="/JOSM"/>
    66        <classpathentry kind="lib" path="lib/PDFClown.jar"/>
     7        <classpathentry kind="lib" path="lib/pdfbox.jar" sourcepath="D:/Projects/Community/OSM/josm/pdfimport/pdfbox-1.3.1/pdfbox/src/main/java"/>
    78        <classpathentry kind="output" path="bin"/>
    89</classpath>
  • applications/editors/josm/plugins/pdfimport/src/pdfimport/LoadPdfDialog.java

    r23746 r23861  
    4747
    4848        private String fileName;
    49         private PDFStreamProcessor data;
     49        private PathOptimizer data;
    5050        private final OsmBuilder builder;
    5151        private OsmDataLayer layer;
     
    411411        }
    412412
    413         private PDFStreamProcessor loadPDF(String fileName) {
     413        private PathOptimizer loadPDF(String fileName) {
    414414                File file;
    415415
     
    433433                Page page = document.getPages().get(0);
    434434
    435 
    436                 PDFStreamProcessor processor = new PDFStreamProcessor(document);
    437                 processor.bounds = page.getBox();
     435                PathOptimizer data = new PathOptimizer();
     436                data.bounds = page.getBox();
     437
     438                PDFStreamProcessor processor = new PDFStreamProcessor(data, document);
    438439                Contents c = page.getContents();
    439440                processor.process(new ContentScanner(c));
     
    441442                document.delete();
    442443
    443                 return processor;
     444                data.optimize();
     445
     446                return data;
    444447        }
    445448
     
    483486                }
    484487
    485                 DataSet data = builder.build(this.data, isFinal);
     488                DataSet data = builder.build(this.data.getLayers(), isFinal);
    486489                this.layer = new OsmDataLayer(data, name, null);
    487490
     
    506509
    507510        private void saveLayer(java.io.File file) {
    508                 DataSet data = builder.build(this.data, true);
     511                DataSet data = builder.build(this.data.getLayers(), true);
    509512                OsmDataLayer layer = new OsmDataLayer(data, file.getName(), file);
    510513
  • applications/editors/josm/plugins/pdfimport/src/pdfimport/OsmBuilder.java

    r23746 r23861  
    5050
    5151
    52         public Bounds getWorldBounds(PDFStreamProcessor data) {
     52        public Bounds getWorldBounds(PathOptimizer data) {
    5353                LatLon min = tranformCoords(data.bounds.getMinX(), data.bounds.getMinY());
    5454                LatLon max = tranformCoords(data.bounds.getMaxX(), data.bounds.getMaxY());
     
    5656        }
    5757
    58         public DataSet build(PDFStreamProcessor data, boolean full) {
     58        public DataSet build(List<LayerContents> data, boolean full) {
    5959
    6060                DataSet result = new DataSet();
    6161
    62                 for (LayerContents layer: data.getResult()) {
     62                for (LayerContents layer: data) {
    6363                        this.addLayer(result, layer, full);
    6464                }
  • applications/editors/josm/plugins/pdfimport/src/pdfimport/PDFStreamProcessor.java

    r23746 r23861  
    1515import it.stefanochizzolini.clown.documents.contents.objects.DrawRectangle;
    1616import it.stefanochizzolini.clown.documents.contents.objects.EndPathNoOp;
     17import it.stefanochizzolini.clown.documents.contents.objects.Fill;
    1718import it.stefanochizzolini.clown.documents.contents.objects.FillEvenOdd;
     19import it.stefanochizzolini.clown.documents.contents.objects.FillStroke;
    1820import it.stefanochizzolini.clown.documents.contents.objects.FillStrokeEvenOdd;
    1921import it.stefanochizzolini.clown.documents.contents.objects.GenericOperation;
     22import it.stefanochizzolini.clown.documents.contents.objects.ModifyClipPath;
    2023import it.stefanochizzolini.clown.documents.contents.objects.Path;
    2124import it.stefanochizzolini.clown.documents.contents.objects.Stroke;
     
    2730import java.awt.Color;
    2831import java.awt.geom.Point2D;
    29 import java.awt.geom.Rectangle2D;
    3032import java.util.ArrayList;
    3133import java.util.HashMap;
     
    3638
    3739        private final LayerInfo info;
    38         public Rectangle2D bounds;
    3940        int pathNo = 0;
    4041
    41         PathOptimizer optimizer = new PathOptimizer();
     42        PathOptimizer optimizer;
    4243        Map<LayerInfo, LayerInfo> multipathLayers = new HashMap<LayerInfo, LayerInfo>();
    4344        private GraphicsState state;
     
    4546        private DeviceGrayColorSpace graySpace;
    4647
    47         public PDFStreamProcessor(Document doc) {
    48 
     48        public PDFStreamProcessor(PathOptimizer target, Document doc) {
     49
     50                this.optimizer = target;
    4951                this.rgbSpace = new DeviceRGBColorSpace(doc);
    5052                this.graySpace = new DeviceGrayColorSpace(doc);
    51 
    5253                this.info = new LayerInfo();
    5354        }
     
    5758                this.graySpace = null;
    5859                this.state = null;
    59                 this.optimizer.optimize();
    60         }
    61 
    62         public List<LayerContents> getResult() {
    63                 return this.optimizer.getLayers();
    6460        }
    6561
     
    201197                                }
    202198                        }
    203                         else if (obj instanceof FillEvenOdd) {
     199                        else if (obj instanceof FillEvenOdd || obj instanceof Fill) {
    204200                                this.info.fill = true;
    205201                                this.info.stroke = false;
    206202                        }
    207                         else if (obj instanceof FillStrokeEvenOdd){
     203                        else if (obj instanceof FillStrokeEvenOdd || obj instanceof FillStroke){
    208204                                this.info.fill = true;
    209205                                this.info.stroke = true;
     
    229225                                points = new ArrayList<Point2D>(2);
    230226                        }
     227                        else if (obj instanceof ModifyClipPath) {
     228                                //nothign here
     229                        }
    231230                        else {
    232231                                int a = 10;
     
    273272                ColorSpace space = col.getColorSpace();
    274273
    275                 if (space instanceof DeviceRGBColorSpace) {
     274                if (space == null){
     275                        return new Color(
     276                                        (float)col.getComponents()[0],
     277                                        (float)col.getComponents()[1],
     278                                        (float)col.getComponents()[2]);
     279                }
     280                else if (space instanceof DeviceRGBColorSpace) {
    276281                        return new Color(
    277282                                        (float)col.getComponents()[0],
  • applications/editors/josm/plugins/pdfimport/src/pdfimport/PathOptimizer.java

    r23746 r23861  
    22
    33import java.awt.geom.Point2D;
     4import java.awt.geom.Rectangle2D;
    45import java.util.ArrayList;
    56import java.util.HashMap;
     
    1415        private final Map<LayerInfo, LayerContents> layerMap;
    1516        private List<LayerContents> layers;
     17        public Rectangle2D bounds;
    1618
    1719        public PathOptimizer()
     
    7072                }
    7173
     74
    7275                List<LayerContents> newLayers = new ArrayList<LayerContents>();
    7376                int nr = 0;
Note: See TracChangeset for help on using the changeset viewer.