enable antialiasing
authorKevin Lamonte <kevin.lamonte@gmail.com>
Mon, 11 Nov 2019 01:48:52 +0000 (19:48 -0600)
committerKevin Lamonte <kevin.lamonte@gmail.com>
Mon, 11 Nov 2019 01:48:52 +0000 (19:48 -0600)
src/jexer/backend/ECMA48Terminal.java
src/jexer/backend/SwingTerminal.java

index 0389f3d388e3146c64aeab299c5f2ec357110a70..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;
@@ -3300,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();
@@ -3624,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();
@@ -3887,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();
index eb1616bf741c5271afc226fe16d6f4a98e4732dd..37f99d56c2371f489afebea9bb98e68d70237739 100644 (file)
@@ -36,6 +36,7 @@ import java.awt.Graphics2D;
 import java.awt.Graphics;
 import java.awt.Insets;
 import java.awt.Rectangle;
+import java.awt.RenderingHints;
 import java.awt.Toolkit;
 import java.awt.event.ComponentEvent;
 import java.awt.event.ComponentListener;
@@ -1238,6 +1239,15 @@ public class SwingTerminal extends LogicalScreen
 
         // Draw the background rectangle, then the foreground character.
         assert (cell.isImage());
+
+        // Enable anti-aliasing
+        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.setColor(cell.getBackground());
         gr.fillRect(xPixel, yPixel, textWidth, textHeight);
 
@@ -1310,10 +1320,19 @@ public class SwingTerminal extends LogicalScreen
             cellColor.setBackColor(cell.getForeColor());
         }
 
+        // Enable anti-aliasing
+        if (gr instanceof Graphics2D) {
+            ((Graphics2D) gr).setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+                RenderingHints.VALUE_ANTIALIAS_ON);
+            ((Graphics2D) gr).setRenderingHint(RenderingHints.KEY_RENDERING,
+                RenderingHints.VALUE_RENDER_QUALITY);
+        }
+
         // Draw the background rectangle, then the foreground character.
         gr2.setColor(attrToBackgroundColor(cellColor));
         gr2.fillRect(gr2x, gr2y, textWidth, textHeight);
 
+
         // Handle blink and underline
         if (!cell.isBlink()
             || (cell.isBlink() && cursorBlinkVisible)