JAL-1645 Version-Rel Version 2.9 Year-Rel 2015 Licensing glob
[jalview.git] / src / jalview / util / ImageMaker.java
index 61ef34f..3c7ac8c 100755 (executable)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9)
+ * Copyright (C) 2015 The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
@@ -20,7 +20,9 @@
  */
 package jalview.util;
 
+import jalview.bin.Jalview;
 import jalview.gui.EPSOptions;
+import jalview.gui.SVGOptions;
 import jalview.io.JalviewFileChooser;
 
 import java.awt.Component;
@@ -34,6 +36,7 @@ import java.io.FileOutputStream;
 import javax.imageio.ImageIO;
 
 import org.jfree.graphics2d.svg.SVGGraphics2D;
+import org.jfree.graphics2d.svg.SVGHints;
 import org.jibble.epsgraphics.EpsGraphics2D;
 
 public class ImageMaker
@@ -86,7 +89,6 @@ public class ImageMaker
 
   }
 
-
   public ImageMaker(Component parent, TYPE type, String title, int width,
           int height, File file, String fileTitle)
   {
@@ -126,11 +128,10 @@ public class ImageMaker
         {
           setupPNG(width, height);
         }
-      
+
       } catch (Exception ex)
       {
-        System.out.println("Error creating "
- + type.getName() + " file.");
+        System.out.println("Error creating " + type.getName() + " file.");
       }
     }
   }
@@ -140,8 +141,6 @@ public class ImageMaker
     return graphics;
   }
 
-
-
   public void writeImage()
   {
     try
@@ -219,35 +218,78 @@ public class ImageMaker
     Graphics2D ig2 = (Graphics2D) graphics;
     ig2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
             RenderingHints.VALUE_ANTIALIAS_ON);
+
   }
 
   void setupSVG(int width, int height, String title)
   {
+
     g2 = new SVGGraphics2D(width, height);
+    Graphics2D ig2 = g2;
+
+    String renderStyle = jalview.bin.Cache.getDefault("SVG_RENDERING",
+            "Prompt each time");
+
+    // If we need to prompt, and if the GUI is visible then
+    // Prompt for EPS rendering style
+    if (renderStyle.equalsIgnoreCase("Prompt each time")
+            && !(System.getProperty("java.awt.headless") != null && System
+                    .getProperty("java.awt.headless").equals("true")))
+    {
+      SVGOptions svgOption = new SVGOptions();
+      renderStyle = svgOption.getValue();
+
+      if (renderStyle == null || svgOption.cancelled)
+      {
+        return;
+      }
+    }
+
+    if (renderStyle.equalsIgnoreCase("lineart"))
+    {
+      ig2.setRenderingHint(SVGHints.KEY_DRAW_STRING_TYPE,
+              SVGHints.VALUE_DRAW_STRING_TYPE_VECTOR);
+    }
+
     graphics = g2;
   }
 
   static JalviewFileChooser getPNGChooser()
   {
+    if (Jalview.isHeadlessMode())
+    {
+      return null;
+    }
     return new jalview.io.JalviewFileChooser(
-            jalview.bin.Cache.getProperty("LAST_DIRECTORY"), new String[]
-            { "png" }, new String[]
-            { "Portable network graphics" }, "Portable network graphics");
+            jalview.bin.Cache.getProperty("LAST_DIRECTORY"),
+            new String[] { "png" },
+            new String[] { "Portable network graphics" },
+            "Portable network graphics");
   }
 
   static JalviewFileChooser getEPSChooser()
   {
+    if (Jalview.isHeadlessMode())
+    {
+      return null;
+    }
     return new jalview.io.JalviewFileChooser(
-            jalview.bin.Cache.getProperty("LAST_DIRECTORY"), new String[]
-            { "eps" }, new String[]
-            { "Encapsulated Postscript" }, "Encapsulated Postscript");
+            jalview.bin.Cache.getProperty("LAST_DIRECTORY"),
+            new String[] { "eps" },
+            new String[] { "Encapsulated Postscript" },
+            "Encapsulated Postscript");
   }
 
   static JalviewFileChooser getSVGChooser()
   {
+    if (Jalview.isHeadlessMode())
+    {
+      return null;
+    }
     return new jalview.io.JalviewFileChooser(
-            jalview.bin.Cache.getProperty("LAST_DIRECTORY"), new String[]
-            { "svg" }, new String[]
-            { "Scalable Vector Graphics" }, "Scalable Vector Graphics");
+            jalview.bin.Cache.getProperty("LAST_DIRECTORY"),
+            new String[] { "svg" },
+            new String[] { "Scalable Vector Graphics" },
+            "Scalable Vector Graphics");
   }
 }