Ignore:
Timestamp:
2011-08-08T22:20:43+02:00 (13 years ago)
Author:
bastik
Message:

add support for world file

Location:
applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/PicLayerAbstract.java

    r26489 r26493  
    2929import java.awt.Toolkit;
    3030import java.awt.event.ActionEvent;
     31import java.io.BufferedReader;
    3132import java.io.File;
    3233import java.io.FileInputStream;
     34import java.io.FileReader;
    3335import java.io.IOException;
    3436import java.util.List;
     
    135137        // Load image completely
    136138        (new ImageIcon(m_image)).getImage();
     139       
     140        lookForCalibration();
    137141    }
    138142
     
    145149    protected abstract Image createImage() throws IOException;
    146150
     151    protected abstract void lookForCalibration() throws IOException;
    147152    /**
    148153     * To be overridden by subclasses. Returns the user readable name of the layer.
     
    435440            Main.map.mapView.repaint();
    436441    }
     442   
     443    public void loadWorldfile(File file) throws IOException {
     444        FileReader reader = new FileReader(file);
     445        BufferedReader br = new BufferedReader(reader);
     446        double e[] = new double[6];
     447        for (int i=0; i<6; ++i) {
     448            String line = br.readLine();
     449            e[i] = Double.parseDouble(line);
     450        }
     451        double sx=e[0], ry=e[1], rx=e[2], sy=e[3], dx=e[4], dy=e[5];
     452        int w = m_image.getWidth(null);
     453        int h = m_image.getHeight(null);
     454        m_position.setLocation(
     455                dx + w/2*sx + h/2*rx,
     456                dy + w/2*ry + h/2*sy
     457        );
     458        m_initial_position.setLocation(m_position);
     459        m_angle = 0;
     460        m_scalex = 100*sx*getMetersPerEasting(m_position);
     461        m_scaley = -100*sy*getMetersPerNorthing(m_position);
     462        m_shearx = rx / sx;
     463        m_sheary = ry / sy;
     464        m_initial_scale = 1;
     465        Main.map.mapView.repaint();
     466    }
    437467
    438468    private class ResetSubmenuAction extends AbstractAction implements LayerAction {
  • applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/PicLayerFromClipboard.java

    r23190 r26493  
    6666    }
    6767
     68    @Override
     69    protected void lookForCalibration() throws IOException {
     70    }
     71
    6872}
  • applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/PicLayerFromFile.java

    r24300 r26493  
    2828import java.io.File;
    2929import java.io.IOException;
     30import java.util.Arrays;
    3031import javax.imageio.ImageIO;
    31 import javax.swing.JDialog;
    3232import javax.swing.JOptionPane;
    3333/**
     
    6666        Image image = null;
    6767        image = ImageIO.read( m_file );
    68        
     68        return image;
     69    }
     70   
     71    @Override
     72    protected void lookForCalibration() throws IOException {
    6973        // Manage a potential existing calibration file
    7074        File calFile = getDefaultCalPath();
     
    104108            if ( loadcal )
    105109                loadCalibration(calFile);
     110        } else {
     111           
     112            // try to find and load world file
     113            int dotIdx = m_file.getName().lastIndexOf(".");
     114            if (dotIdx == -1) return;
     115            String extension = m_file.getName().substring(dotIdx);
     116            String namepart = m_file.getName().substring(0, dotIdx);
     117            String[][] imgExtensions = new String[][] {
     118                { ".jpg", ".jpeg" },
     119                { ".png" },
     120                { ".tif", ".tiff" },
     121                { ".bmp" },
     122            };
     123            String[][] wldExtensions = new String[][] {
     124                { ".wld", ".jgw", ".jpgw" },
     125                { ".wld", ".pgw", ".pngw" },
     126                { ".wld", ".tfw", ".tifw" },
     127                { ".wld", ".bmpw", ".bpw"},
     128            };
     129            for (int i=0; i<imgExtensions.length; ++i) {
     130                if (Arrays.asList(imgExtensions[i]).contains(extension.toLowerCase())) {
     131                    for (String wldExtension : wldExtensions[i]) {
     132                        File wldFile = new File(m_file.getParentFile(), namepart+wldExtension);
     133                        if (wldFile.exists()) {
     134                            System.out.println("Loading world file: "+wldFile);
     135                            loadWorldfile(wldFile);
     136                            return;
     137                        }
     138                    }
     139                }
     140            }
    106141        }
    107                
    108         return image;
    109142    }
    110143
Note: See TracChangeset for help on using the changeset viewer.