Changeset 32191 in osm


Ignore:
Timestamp:
2016-05-25T21:19:27+02:00 (8 years ago)
Author:
donvip
Message:

[josm_print] update to JOSM 10282

Location:
applications/editors/josm/plugins/print
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/print/build.xml

    r31329 r32191  
    55    <property name="commit.message" value="Added a field to specify the map scale."/>
    66    <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
    7     <property name="plugin.main.version" value="8554"/>
     7    <property name="plugin.main.version" value="10282"/>
    88
    99    <property name="plugin.author" value="Kai Pastor"/>
  • applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintableMapView.java

    r31329 r32191  
    3434import java.awt.Graphics2D;
    3535import java.awt.Shape;
     36import java.awt.event.ComponentListener;
    3637import java.awt.font.FontRenderContext;
    3738import java.awt.font.GlyphVector;
     
    4142import java.awt.print.Printable;
    4243import java.awt.print.PrinterException;
    43 import java.util.ArrayList;
    44 import java.util.Collections;
    45 import java.util.Comparator;
    46 import java.util.List;
    4744
    4845import javax.swing.JPanel;
     
    5451import org.openstreetmap.josm.gui.MapView;
    5552import org.openstreetmap.josm.gui.layer.Layer;
    56 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    5753
    5854/**
     
    7268     * resolution
    7369     */
    74      protected double g2dFactor;
    75    
    76     /**
    77      * The real MapView which is the data source
    78      */
    79     protected MapView mapView;
     70    protected double g2dFactor;
    8071   
    8172    /**
     
    8980    public PrintableMapView() {
    9081        /* Initialize MapView with a dummy parent */
    91         super(new JPanel(), null);
     82        super(new PrintableLayerManager(), new JPanel(), null);
    9283       
    9384        /* Disable MapView's ComponentLister,
    9485         * as it will interfere with the main MapView. */
    95         java.awt.event.ComponentListener listeners[] = getComponentListeners();
     86        ComponentListener listeners[] = getComponentListeners();
    9687        for (int i=0; i<listeners.length; i++) {
    9788            removeComponentListener(listeners[i]);
    9889        }
    99        
    100         mapView = Main.map.mapView;
    10190    }
    10291
     
    155144        if (dim.width != width || dim.height != height) {
    156145            super.setSize(width, height);
    157             zoomTo(mapView.getRealBounds());
     146            zoomTo(Main.map.mapView.getRealBounds());
    158147            rezoomToFixedScale();
    159148        }
     
    168157        if (dim.width != newSize.width || dim.height != newSize.height) {
    169158            super.setSize(newSize);
    170             zoomTo(mapView.getRealBounds());
     159            zoomTo(Main.map.mapView.getRealBounds());
    171160            rezoomToFixedScale();
    172161        }
     
    230219       
    231220        Bounds box = getRealBounds();
    232         List<Layer> visibleLayers = getVisibleLayersInZOrder();
    233         for (Layer l : visibleLayers) {
     221        for (Layer l : getLayerManager().getVisibleLayersInZOrder()) {
    234222            if (l.getOpacity() < 1) {
    235223                g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,(float)l.getOpacity()));
     
    357345     * Paint a text.
    358346     *
    359      * This method will not only draw the letters but also a background
    360      * which improves redability.
     347     * This method will not only draw the letters but also a background which improves redability.
    361348     *
    362349     * @param g2d the graphics context to use for painting
     
    365352     * @param y the y coordinate
    366353     */
    367    
    368354    public void paintText(Graphics2D g2d, String text, int x, int y) {
    369             AffineTransform ax = g2d.getTransform();
    370             g2d.translate(x,y);
    371 
    372             FontRenderContext frc = g2d.getFontRenderContext();
    373             GlyphVector gv = g2d.getFont().createGlyphVector(frc, text);
    374             Shape textOutline = gv.getOutline();
    375 
    376             g2d.setStroke(new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND));
    377             g2d.setColor(Color.WHITE);
    378             g2d.draw(textOutline);
    379            
    380             g2d.setStroke(new BasicStroke());
    381             g2d.setColor(Color.BLACK);
    382             g2d.drawString(text, 0, 0);
    383 
    384             g2d.setTransform(ax);
    385     }
    386 
    387     /**
    388      * Get the active layer
    389      *
    390      * This method is implemented in MapView but we need at this instance.
    391      */
    392     @Override
    393     public Layer getActiveLayer() {
    394         return mapView.getActiveLayer();
    395     }
    396 
    397     /**
    398      * Get the position of a particular layer in the stack of layers
    399      *
    400      * This method is implemented in MapView but we need at this instance.
    401      */
    402     @Override
    403     public int getLayerPos(Layer layer) {
    404         return mapView.getLayerPos(layer);
    405     }
    406    
    407     /**
    408      * This method is implemented in MapView but protected.
    409      *
    410      * The algorithm is slightly modified.
    411      */
    412     @Override
    413     public List<Layer> getVisibleLayersInZOrder() {
    414         ArrayList<Layer> layers = new ArrayList<>();
    415         for (Layer l: mapView.getAllLayersAsList()) {
    416             if (l.isVisible()) {
    417                 layers.add(l);
    418             }
    419         }
    420         Collections.sort(
    421             layers,
    422             new Comparator<Layer>() {
    423                 @Override
    424                 public int compare(Layer l2, Layer l1) { // l1 and l2 swapped!
    425                     if (l1 instanceof OsmDataLayer && l2 instanceof OsmDataLayer) {
    426                         if (l1 == getActiveLayer()) return -1;
    427                         if (l2 == getActiveLayer()) return 1;
    428                         return Integer.valueOf(getLayerPos(l1)).
    429                                      compareTo(getLayerPos(l2));
    430                     } else
    431                         return Integer.valueOf(getLayerPos(l1)).
    432                                      compareTo(getLayerPos(l2));
    433                 }
    434             }
    435         );
    436         return layers;
     355        AffineTransform ax = g2d.getTransform();
     356        g2d.translate(x, y);
     357
     358        FontRenderContext frc = g2d.getFontRenderContext();
     359        GlyphVector gv = g2d.getFont().createGlyphVector(frc, text);
     360        Shape textOutline = gv.getOutline();
     361
     362        g2d.setStroke(new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND));
     363        g2d.setColor(Color.WHITE);
     364        g2d.draw(textOutline);
     365
     366        g2d.setStroke(new BasicStroke());
     367        g2d.setColor(Color.BLACK);
     368        g2d.drawString(text, 0, 0);
     369
     370        g2d.setTransform(ax);
    437371    }
    438372}
Note: See TracChangeset for help on using the changeset viewer.