diff options
Diffstat (limited to 'libjava/gnu')
10 files changed, 120 insertions, 40 deletions
diff --git a/libjava/gnu/java/awt/peer/gtk/GdkFontMetrics.java b/libjava/gnu/java/awt/peer/gtk/GdkFontMetrics.java index ebca7ed0cea..c7a73a3f362 100644 --- a/libjava/gnu/java/awt/peer/gtk/GdkFontMetrics.java +++ b/libjava/gnu/java/awt/peer/gtk/GdkFontMetrics.java @@ -50,19 +50,21 @@ public class GdkFontMetrics extends FontMetrics MAX_ADVANCE = 4; private int[] metrics; - private native int[] initState (String fname, int size); + private native int[] initState (String fname, int style, int size); public GdkFontMetrics (Font font) { super (font); - metrics = initState (font.getName (), font.getSize ()); + metrics = initState (font.getName (), font.getStyle (), font.getSize ()); } - native public int stringWidth (String fname, int size, String str); + native public int stringWidth (String fname, int style, int size, + String str); public int stringWidth (String str) { - return stringWidth (font.getName (), font.getSize (), str); + return stringWidth (font.getName (), font.getStyle (), font.getSize (), + str); } public int charWidth (char ch) diff --git a/libjava/gnu/java/awt/peer/gtk/GdkGraphics2D.java b/libjava/gnu/java/awt/peer/gtk/GdkGraphics2D.java index 3e77047f72f..ebff68ef987 100644 --- a/libjava/gnu/java/awt/peer/gtk/GdkGraphics2D.java +++ b/libjava/gnu/java/awt/peer/gtk/GdkGraphics2D.java @@ -1260,7 +1260,18 @@ public class GdkGraphics2D extends Graphics2D public void setComposite(Composite comp) { - throw new java.lang.UnsupportedOperationException (); + if (comp instanceof AlphaComposite) + { + AlphaComposite a = (AlphaComposite) comp; + cairoSetOperator(a.getRule()); + Color c = getColor(); + setColor(new Color(c.getRed(), + c.getGreen(), + c.getBlue(), + (int) (a.getAlpha() * ((float) c.getAlpha())))); + } + else + throw new java.lang.UnsupportedOperationException (); } public void setRenderingHint(RenderingHints.Key hintKey, diff --git a/libjava/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java b/libjava/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java index 766ceb8fc3c..32c69871711 100644 --- a/libjava/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java +++ b/libjava/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java @@ -220,4 +220,31 @@ public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder dec.startProduction (bb); return bb.getBufferedImage (); } + + public static BufferedImage createBufferedImage (URL u) + { + BufferedImageBuilder bb = new BufferedImageBuilder (); + GdkPixbufDecoder dec = new GdkPixbufDecoder (u); + dec.startProduction (bb); + return bb.getBufferedImage (); + } + + public static BufferedImage createBufferedImage (byte[] imagedata, int imageoffset, + int imagelength) + { + BufferedImageBuilder bb = new BufferedImageBuilder (); + GdkPixbufDecoder dec = new GdkPixbufDecoder (imagedata, imageoffset, imagelength); + dec.startProduction (bb); + return bb.getBufferedImage (); + } + + public static BufferedImage createBufferedImage (ImageProducer producer) + { + BufferedImageBuilder bb = new BufferedImageBuilder (); + producer.startProduction(bb); + return bb.getBufferedImage (); + } + + + } diff --git a/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java index 7d80e3626c9..48e63f3d19a 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java @@ -199,7 +199,10 @@ public class GtkComponentPeer extends GtkGenericPeer public Graphics getGraphics () { - return null; + if (GtkToolkit.useGraphics2D ()) + return new GdkGraphics2D (this); + else + return new GdkGraphics (this); } public Point getLocationOnScreen () diff --git a/libjava/gnu/java/awt/peer/gtk/GtkContainerPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkContainerPeer.java index 32ac02f5abd..8ac927cbae6 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkContainerPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkContainerPeer.java @@ -107,10 +107,7 @@ public class GtkContainerPeer extends GtkComponentPeer public Graphics getGraphics () { - if (GtkToolkit.useGraphics2D ()) - return new GdkGraphics2D (this); - else - return new GdkGraphics (this); + return super.getGraphics(); } public void beginLayout () { } diff --git a/libjava/gnu/java/awt/peer/gtk/GtkImagePainter.java b/libjava/gnu/java/awt/peer/gtk/GtkImagePainter.java index 0476c8cf00f..16f36d303f3 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkImagePainter.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkImagePainter.java @@ -104,7 +104,7 @@ public class GtkImagePainter implements Runnable, ImageConsumer s_width = Math.abs (sx2 - sx1); s_height = Math.abs (sy2 - sy1); clip = new Rectangle (sx1, sy1, s_width, s_height); - + new Thread (this).start (); } @@ -170,8 +170,6 @@ public class GtkImagePainter implements Runnable, ImageConsumer offset += r.y * scansize + r.x; - r.translate (-Math.abs (clip.x - startX), -Math.abs (clip.y - startY)); - width = r.width; height = r.height; x = r.x; diff --git a/libjava/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java index 18e4d204897..b08728b2bff 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java @@ -47,6 +47,9 @@ import java.awt.peer.TextAreaPeer; public class GtkTextAreaPeer extends GtkTextComponentPeer implements TextAreaPeer { + private static transient int DEFAULT_ROWS = 10; + private static transient int DEFAULT_COLS = 80; + native void create (int width, int height, int scrollbarVisibility); native void gtkSetFont (String name, int style, int size); @@ -61,7 +64,7 @@ public class GtkTextAreaPeer extends GtkTextComponentPeer // GtkComponent.create. if (f == null) { - f = new Font ("Fixed", Font.PLAIN, 12); + f = new Font ("Dialog", Font.PLAIN, 12); awtComponent.setFont (f); } @@ -72,13 +75,17 @@ public class GtkTextAreaPeer extends GtkTextComponentPeer fm = new GdkFontMetrics (f); TextArea ta = ((TextArea) awtComponent); - int rows = ta.getRows (); - int cols = ta.getColumns (); + int sizeRows = ta.getRows (); + int sizeCols = ta.getColumns (); + + sizeRows = sizeRows == 0 ? DEFAULT_ROWS : sizeRows; + sizeCols = sizeCols == 0 ? DEFAULT_COLS : sizeCols; - int width = cols * fm.getMaxAdvance (); - int height = rows * (fm.getMaxDescent () + fm.getMaxAscent ()); + int width = sizeCols * fm.getMaxAdvance (); + int height = sizeRows * (fm.getMaxDescent () + fm.getMaxAscent ()); create (width, height, ta.getScrollbarVisibility ()); + setEditable (ta.isEditable ()); } public GtkTextAreaPeer (TextArea ta) @@ -91,12 +98,14 @@ public class GtkTextAreaPeer extends GtkTextComponentPeer public Dimension getMinimumSize (int rows, int cols) { - return minimumSize (rows, cols); + return minimumSize (rows == 0 ? DEFAULT_ROWS : rows, + cols == 0 ? DEFAULT_COLS : cols); } public Dimension getPreferredSize (int rows, int cols) { - return preferredSize (rows, cols); + return preferredSize (rows == 0 ? DEFAULT_ROWS : rows, + cols == 0 ? DEFAULT_COLS : cols); } native int getHScrollbarHeight (); @@ -127,8 +136,11 @@ public class GtkTextAreaPeer extends GtkTextComponentPeer else fm = new GdkFontMetrics (f); - width += cols * fm.getMaxAdvance (); - height += rows * (fm.getMaxDescent () + fm.getMaxAscent ()); + int sizeRows = rows == 0 ? DEFAULT_ROWS : rows; + int sizeCols = cols == 0 ? DEFAULT_COLS : cols; + + width += sizeCols * fm.getMaxAdvance (); + height += sizeRows * (fm.getMaxDescent () + fm.getMaxAscent ()); return new Dimension (width, height); } @@ -157,8 +169,11 @@ public class GtkTextAreaPeer extends GtkTextComponentPeer else fm = new GdkFontMetrics (f); - width += cols * fm.getMaxAdvance (); - height += rows * (fm.getMaxDescent () + fm.getMaxAscent ()); + int sizeRows = rows == 0 ? DEFAULT_ROWS : rows; + int sizeCols = cols == 0 ? DEFAULT_COLS : cols; + + width += sizeCols * fm.getMaxAdvance (); + height += sizeRows * (fm.getMaxDescent () + fm.getMaxAscent ()); return new Dimension (width, height); } diff --git a/libjava/gnu/java/awt/peer/gtk/GtkTextComponentPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkTextComponentPeer.java index 8bc4bdf3eee..8893e36e838 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkTextComponentPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkTextComponentPeer.java @@ -54,6 +54,7 @@ public class GtkTextComponentPeer extends GtkComponentPeer super (tc); setText (tc.getText ()); + setCaretPosition(0); } public native void connectSignals (); diff --git a/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java index 5662336b193..111c1f96979 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java @@ -60,7 +60,7 @@ public class GtkTextFieldPeer extends GtkTextComponentPeer // GtkComponent.create. if (f == null) { - f = new Font ("Fixed", Font.PLAIN, 12); + f = new Font ("Dialog", Font.PLAIN, 12); awtComponent.setFont (f); } diff --git a/libjava/gnu/java/awt/peer/gtk/GtkToolkit.java b/libjava/gnu/java/awt/peer/gtk/GtkToolkit.java index c9739c359b1..c55001591c4 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkToolkit.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkToolkit.java @@ -129,26 +129,58 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit public Image createImage (String filename) { - return new GtkImage (new GdkPixbufDecoder (filename), null); + if (useGraphics2D()) + return GdkPixbufDecoder.createBufferedImage (filename); + else + { + GdkPixbufDecoder d = new GdkPixbufDecoder (filename); + GtkImage image = new GtkImage (d, null); + d.startProduction (image); + return image; + } } public Image createImage (URL url) { - return new GtkImage (new GdkPixbufDecoder (url), null); + if (useGraphics2D()) + return GdkPixbufDecoder.createBufferedImage (url); + else + { + GdkPixbufDecoder d = new GdkPixbufDecoder (url); + GtkImage image = new GtkImage (d, null); + d.startProduction (image); + return image; + } } public Image createImage (ImageProducer producer) { - return new GtkImage (producer, null); + if (useGraphics2D()) + return GdkPixbufDecoder.createBufferedImage (producer); + else + { + GtkImage image = new GtkImage (producer, null); + producer.startProduction (image); + return image; + } } public Image createImage (byte[] imagedata, int imageoffset, int imagelength) { - return new GtkImage (new GdkPixbufDecoder (imagedata, - imageoffset, - imagelength), - null); + if (useGraphics2D()) + return GdkPixbufDecoder.createBufferedImage (imagedata, + imageoffset, + imagelength); + else + { + GdkPixbufDecoder d = new GdkPixbufDecoder (imagedata, + imageoffset, + imagelength); + GtkImage image = new GtkImage (d, null); + d.startProduction (image); + return image; + } } public ColorModel getColorModel () @@ -175,18 +207,12 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit public Image getImage (String filename) { - GdkPixbufDecoder d = new GdkPixbufDecoder (filename); - GtkImage image = new GtkImage (d, null); - d.startProduction (image); - return image; + return createImage (filename); } public Image getImage (URL url) { - GdkPixbufDecoder d = new GdkPixbufDecoder (url); - GtkImage image = new GtkImage (d, null); - d.startProduction (image); - return image; + return createImage (url); } public PrintJob getPrintJob (Frame frame, String jobtitle, Properties props) |