diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 763f2b0c918..edae83ee673 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,14 @@ +2004-01-15 Olga Rodimina + + * gnu/java/awt/peer/gtk/GdkGraphics2D.java: + Implemented rendering hints related methods. + (getDefaultHints): New helper method. Returns + default rendering hints. + (walkPath): changed to normalize path if + the KEY_STROKE_CONTROL key is in "normalize" mode. + (draw3DRect): changed coordinates of rectangle by +0.5 + if in "normalize" mode. + 2004-01-15 Tom Tromey * Makefile.in: Rebuilt. diff --git a/libjava/gnu/java/awt/peer/gtk/GdkGraphics2D.java b/libjava/gnu/java/awt/peer/gtk/GdkGraphics2D.java index cb6ccba61b4..fbdf4d9bcd1 100644 --- a/libjava/gnu/java/awt/peer/gtk/GdkGraphics2D.java +++ b/libjava/gnu/java/awt/peer/gtk/GdkGraphics2D.java @@ -44,6 +44,8 @@ import java.awt.font.*; import java.awt.color.*; import java.awt.image.*; import java.awt.image.renderable.*; +import java.util.HashMap; +import java.util.Map; import java.text.AttributedCharacterIterator; import java.util.Map; @@ -81,6 +83,7 @@ public class GdkGraphics2D extends Graphics2D private AffineTransform transform; private GtkComponentPeer component; private Font font; + private RenderingHints hints; private Stack stateStack; @@ -108,6 +111,7 @@ public class GdkGraphics2D extends Graphics2D { paint = g.paint; stroke = g.stroke; + hints = g.hints; if (g.fg.getAlpha() != -1) fg = new Color (g.fg.getRed (), g.fg.getGreen (), @@ -154,6 +158,7 @@ public class GdkGraphics2D extends Graphics2D setFont (new Font("SansSerif", Font.PLAIN, 12)); setTransform (new AffineTransform ()); setStroke (new BasicStroke ()); + setRenderingHints (new HashMap ()); stateStack = new Stack(); } @@ -169,6 +174,7 @@ public class GdkGraphics2D extends Graphics2D setFont (new Font("SansSerif", Font.PLAIN, 12)); setTransform (new AffineTransform ()); setStroke (new BasicStroke ()); + setRenderingHints (new HashMap ()); stateStack = new Stack (); } @@ -335,6 +341,29 @@ public class GdkGraphics2D extends Graphics2D } + private Map getDefaultHints() + { + HashMap defaultHints = new HashMap (); + + defaultHints.put (RenderingHints.KEY_TEXT_ANTIALIASING, + RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT); + + defaultHints.put (RenderingHints.KEY_STROKE_CONTROL, + RenderingHints.VALUE_STROKE_DEFAULT); + + defaultHints.put (RenderingHints.KEY_FRACTIONALMETRICS, + RenderingHints.VALUE_FRACTIONALMETRICS_OFF); + + defaultHints.put (RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_OFF); + + defaultHints.put (RenderingHints.KEY_RENDERING, + RenderingHints.VALUE_RENDER_DEFAULT); + + return defaultHints; + + } + ////////////////////////////////////////////////// ////// Implementation of Graphics2D Methods ////// ////////////////////////////////////////////////// @@ -351,6 +380,14 @@ public class GdkGraphics2D extends Graphics2D stateSave (); cairoNewPath (); + + boolean normalize; + normalize = hints.containsValue (RenderingHints.VALUE_STROKE_NORMALIZE) + || hints.containsValue (RenderingHints.VALUE_STROKE_DEFAULT); + + if (normalize) + translate (0.5,0.5); + if (s instanceof Rectangle2D) { Rectangle2D r = (Rectangle2D)s; @@ -359,6 +396,10 @@ public class GdkGraphics2D extends Graphics2D else walkPath (s.getPathIterator (null)); cairoStroke (); + + if (normalize) + translate (-0.5,-0.5); + stateRestore (); } @@ -640,6 +681,19 @@ public class GdkGraphics2D extends Graphics2D stateSave (); cairoNewPath (); + + boolean normalize; + normalize = hints.containsValue (RenderingHints.VALUE_STROKE_NORMALIZE) + || hints.containsValue (RenderingHints.VALUE_STROKE_DEFAULT); + + if (normalize) + { + x1 += 0.5; + y1 += 0.5; + x2 += 0.5; + y2 += 0.5; + } + setColor (light); cairoMoveTo (x1, y1); cairoLineTo (x2, y1); @@ -1006,27 +1060,28 @@ public class GdkGraphics2D extends Graphics2D public void setRenderingHint(RenderingHints.Key hintKey, Object hintValue) { - throw new java.lang.UnsupportedOperationException (); + hints.put (hintKey, hintValue); } public Object getRenderingHint(RenderingHints.Key hintKey) { - throw new java.lang.UnsupportedOperationException (); + return hints.get (hintKey); } public void setRenderingHints(Map hints) { - throw new java.lang.UnsupportedOperationException (); + this.hints = new RenderingHints (getDefaultHints ()); + this.hints.add (new RenderingHints (hints)); } public void addRenderingHints(Map hints) { - throw new java.lang.UnsupportedOperationException (); + this.hints.add (new RenderingHints (hints)); } public RenderingHints getRenderingHints() { - throw new java.lang.UnsupportedOperationException (); + return hints; } public Composite getComposite()