diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/Export.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/Export.java index 4ad89915..6cc7a98a 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/Export.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/Export.java @@ -3,12 +3,13 @@ import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.io.File; +import java.util.Map; +import java.util.HashMap; import javax.swing.AbstractAction; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.KeyStroke; -import javax.swing.filechooser.FileFilter; import com.tagtraum.perf.gcviewer.exp.DataWriter; import com.tagtraum.perf.gcviewer.exp.DataWriterType; @@ -86,7 +87,9 @@ public void exportFile(final GCModel model, File file, final String extension, f LocalisationHelper.getString("fileexport_dialog_title"), JOptionPane.YES_NO_OPTION)) { - try (DataWriter writer = DataWriterFactory.getDataWriter(file, dataWriterType)) { + Map configuration = new HashMap<>(); + configuration.put(DataWriterFactory.GC_PREFERENCES, gcViewer.getSelectedGCDocument().getPreferences()); + try (DataWriter writer = DataWriterFactory.getDataWriter(file, dataWriterType, configuration)) { writer.write(model); } catch (Exception ioe) { diff --git a/src/main/java/com/tagtraum/perf/gcviewer/exp/impl/DataWriterFactory.java b/src/main/java/com/tagtraum/perf/gcviewer/exp/impl/DataWriterFactory.java index 536dca11..de0b1e9b 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/exp/impl/DataWriterFactory.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/exp/impl/DataWriterFactory.java @@ -17,6 +17,7 @@ * @author Hendrik Schreiber */ public class DataWriterFactory { + public static final String GC_PREFERENCES = "gcPreferences"; /** * Standard factory method to retrieve one of the DataWriter implementations. @@ -53,7 +54,7 @@ public static DataWriter getDataWriter(File file, DataWriterType type, Mapconfiguration parameter. + * + * @param outputStream FileOutputStream, file where the image should be written to + * @param configuration Configuration for this PNGDataWriter; expected contents of the parameter: + * + */ + public PNGDataWriter(OutputStream outputStream, Map configuration) { + super(outputStream, configuration); out = (FileOutputStream)outputStream; } @Override public void write(GCModel model) throws IOException { - new SimpleChartRenderer().render(model, out); + SimpleChartRenderer simpleChartRenderer = new SimpleChartRenderer(); + + Object gcPreferences = getConfiguration().get(DataWriterFactory.GC_PREFERENCES); + if (gcPreferences instanceof GCPreferences) { + simpleChartRenderer.render(model, out, (GCPreferences)gcPreferences); + } else { + simpleChartRenderer.render(model, out); + } } } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/view/SimpleChartRenderer.java b/src/main/java/com/tagtraum/perf/gcviewer/view/SimpleChartRenderer.java index c36ffb5c..9932076b 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/view/SimpleChartRenderer.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/view/SimpleChartRenderer.java @@ -22,6 +22,10 @@ public class SimpleChartRenderer { public void render(GCModel model, FileOutputStream outputStream) throws IOException { GCPreferences gcPreferences = new GCPreferences(); gcPreferences.load(); + render(model, outputStream, gcPreferences); + } + + public void render(GCModel model, FileOutputStream outputStream, GCPreferences gcPreferences) throws IOException { Dimension d = new Dimension(gcPreferences.getWindowWidth(), gcPreferences.getWindowHeight()); BufferedImage image = new BufferedImage(d.width, d.height, BufferedImage.TYPE_INT_RGB);