diff --git a/src/jls/Circuit.java b/src/jls/Circuit.java index 7030ed5..917a08b 100644 --- a/src/jls/Circuit.java +++ b/src/jls/Circuit.java @@ -807,7 +807,7 @@ public void addToBook(Book book, PageFormat format) { * The name of the file to write to. >>>>>>> * 6fff4f8d5651621bfd72b14010a8a3fdd3ba837a */ - public void exportImage(String file) throws Exception { + public void exportImage(String file, String formatName) throws Exception { // get bounds of actual circuit Rectangle rect = getBounds(); @@ -832,7 +832,7 @@ public void exportImage(String file) throws Exception { // write the image try { - ImageIO.write(image, "JPEG", new File(file)); + ImageIO.write(image, formatName, new File(file)); } catch (Exception ex) { System.out.println("image write exception"); } diff --git a/src/jls/JLSStart.java b/src/jls/JLSStart.java index ee67d0a..48220d5 100644 --- a/src/jls/JLSStart.java +++ b/src/jls/JLSStart.java @@ -267,7 +267,7 @@ else if (JLSInfo.imgexport) { System.exit(1); } try { - circ.exportImage(name + ".jpg"); + circ.exportImage(name + ".jpg", "JPEG"); } catch (Exception e) { TellUser.err("Failed to export image for an undetermined reason", true); e.printStackTrace(); @@ -1793,32 +1793,54 @@ public void exportImage() throws Exception { javax.swing.filechooser.FileFilter filter = new javax.swing.filechooser.FileFilter() { public boolean accept(File f) { - return f.getName().endsWith(".jpg") || f.isDirectory(); + String name = f.getName(); + return name.endsWith(".jpg") || name.endsWith(".png") || f.isDirectory(); } public String getDescription() { return "JLS Circuit Images"; } }; + javax.swing.filechooser.FileFilter jpgFilter = + new javax.swing.filechooser.FileFilter() { + public boolean accept(File f) { + return f.getName().endsWith(".jpg") || f.isDirectory(); + } + public String getDescription() { + return "JPEG Images"; + } + }; + javax.swing.filechooser.FileFilter pngFilter = + new javax.swing.filechooser.FileFilter() { + public boolean accept(File f) { + return f.getName().endsWith(".png") || f.isDirectory(); + } + public String getDescription() { + return "PNG Images"; + } + }; + chooser.addChoosableFileFilter(jpgFilter); + chooser.addChoosableFileFilter(pngFilter); chooser.setFileFilter(filter); if (chooser.showSaveDialog(this) != JFileChooser.APPROVE_OPTION) return; String fileName = chooser.getSelectedFile().getName().trim(); + javax.swing.filechooser.FileFilter selectedFilter = chooser.getFileFilter(); if (fileName == null || fileName.equals("")) return; - String tempName = fileName.replaceAll("\\.jpg$",""); + String tempName = fileName.replaceAll("\\.jpg$","").replaceAll("\\.png$", ""); if (!Util.isValidName(tempName)) { JOptionPane.showMessageDialog(JLSInfo.frame,"Invalid file name - must contain only letters, digits & _"); return; } - if (!fileName.endsWith(".jpg")) { - fileName = fileName + ".jpg"; + if (!(fileName.endsWith(".jpg") || fileName.endsWith(".png"))) { + fileName = fileName + (selectedFilter == pngFilter ? ".png" : ".jpg"); } String path = chooser.getCurrentDirectory() + "/"; fileName = path + fileName; JLSInfo.setLastSelectedDirectory(path); // export the image Circuit circ = ed.getCircuit(); - circ.exportImage(fileName); + circ.exportImage(fileName, fileName.endsWith(".png") ? "PNG" : "JPEG"); } // end of exportImage method /**