enable antialiasing
[fanfix.git] / src / jexer / backend / ECMA48Terminal.java
index ed2715c834bc3402062690cd270b4846c4dae618..ad643f4407acab61a1bfc135869550bc5bc5b28a 100644 (file)
@@ -28,6 +28,9 @@
  */
 package jexer.backend;
 
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.RenderingHints;
 import java.awt.image.BufferedImage;
 import java.io.BufferedReader;
 import java.io.ByteArrayOutputStream;
@@ -1643,7 +1646,10 @@ public class ECMA48Terminal extends LogicalScreen
      * @return the width in pixels of a character cell
      */
     public int getTextWidth() {
-        return (widthPixels / sessionInfo.getWindowWidth());
+        if (sessionInfo.getWindowWidth() > 0) {
+            return (widthPixels / sessionInfo.getWindowWidth());
+        }
+        return 16;
     }
 
     /**
@@ -1652,7 +1658,10 @@ public class ECMA48Terminal extends LogicalScreen
      * @return the height in pixels of a character cell
      */
     public int getTextHeight() {
-        return (heightPixels / sessionInfo.getWindowHeight());
+        if (sessionInfo.getWindowHeight() > 0) {
+            return (heightPixels / sessionInfo.getWindowHeight());
+        }
+        return 20;
     }
 
     /**
@@ -3294,7 +3303,13 @@ public class ECMA48Terminal extends LogicalScreen
             newImage = new BufferedImage(cells.size() * getTextWidth(),
                 getTextHeight(), BufferedImage.TYPE_INT_ARGB);
 
-            java.awt.Graphics gr = newImage.getGraphics();
+            Graphics gr = newImage.getGraphics();
+            if (gr instanceof Graphics2D) {
+                ((Graphics2D) gr).setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+                    RenderingHints.VALUE_ANTIALIAS_ON);
+                ((Graphics2D) gr).setRenderingHint(RenderingHints.KEY_RENDERING,
+                    RenderingHints.VALUE_RENDER_QUALITY);
+            }
             gr.drawImage(image, 0, 0, newImage.getWidth(),
                 newImage.getHeight(), null, null);
             gr.dispose();
@@ -3618,7 +3633,13 @@ public class ECMA48Terminal extends LogicalScreen
             newImage = new BufferedImage(cells.size() * getTextWidth(),
                 getTextHeight(), BufferedImage.TYPE_INT_ARGB);
 
-            java.awt.Graphics gr = newImage.getGraphics();
+            Graphics gr = newImage.getGraphics();
+            if (gr instanceof Graphics2D) {
+                ((Graphics2D) gr).setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+                    RenderingHints.VALUE_ANTIALIAS_ON);
+                ((Graphics2D) gr).setRenderingHint(RenderingHints.KEY_RENDERING,
+                    RenderingHints.VALUE_RENDER_QUALITY);
+            }
             gr.drawImage(image, 0, 0, newImage.getWidth(),
                 newImage.getHeight(), null, null);
             gr.dispose();
@@ -3881,7 +3902,13 @@ public class ECMA48Terminal extends LogicalScreen
             newImage = new BufferedImage(cells.size() * getTextWidth(),
                 getTextHeight(), BufferedImage.TYPE_INT_ARGB);
 
-            java.awt.Graphics gr = newImage.getGraphics();
+            Graphics gr = newImage.getGraphics();
+            if (gr instanceof Graphics2D) {
+                ((Graphics2D) gr).setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+                    RenderingHints.VALUE_ANTIALIAS_ON);
+                ((Graphics2D) gr).setRenderingHint(RenderingHints.KEY_RENDERING,
+                    RenderingHints.VALUE_RENDER_QUALITY);
+            }
             gr.drawImage(image, 0, 0, newImage.getWidth(),
                 newImage.getHeight(), null, null);
             gr.dispose();