summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/java/awt/peer/gtk/GdkFontMetrics.java10
-rw-r--r--gnu/java/awt/peer/gtk/GdkGraphics2D.java13
-rw-r--r--gnu/java/awt/peer/gtk/GdkPixbufDecoder.java27
-rw-r--r--gnu/java/awt/peer/gtk/GtkComponentPeer.java5
-rw-r--r--gnu/java/awt/peer/gtk/GtkContainerPeer.java5
-rw-r--r--gnu/java/awt/peer/gtk/GtkImagePainter.java4
-rw-r--r--gnu/java/awt/peer/gtk/GtkTextAreaPeer.java37
-rw-r--r--gnu/java/awt/peer/gtk/GtkTextComponentPeer.java1
-rw-r--r--gnu/java/awt/peer/gtk/GtkTextFieldPeer.java2
-rw-r--r--gnu/java/awt/peer/gtk/GtkToolkit.java56
10 files changed, 120 insertions, 40 deletions
diff --git a/gnu/java/awt/peer/gtk/GdkFontMetrics.java b/gnu/java/awt/peer/gtk/GdkFontMetrics.java
index ebca7ed0c..c7a73a3f3 100644
--- a/gnu/java/awt/peer/gtk/GdkFontMetrics.java
+++ b/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/gnu/java/awt/peer/gtk/GdkGraphics2D.java b/gnu/java/awt/peer/gtk/GdkGraphics2D.java
index 3e77047f7..ebff68ef9 100644
--- a/gnu/java/awt/peer/gtk/GdkGraphics2D.java
+++ b/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/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java b/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
index 766ceb8fc..32c698717 100644
--- a/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
+++ b/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/gnu/java/awt/peer/gtk/GtkComponentPeer.java b/gnu/java/awt/peer/gtk/GtkComponentPeer.java
index 7d80e3626..48e63f3d1 100644
--- a/gnu/java/awt/peer/gtk/GtkComponentPeer.java
+++ b/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/gnu/java/awt/peer/gtk/GtkContainerPeer.java b/gnu/java/awt/peer/gtk/GtkContainerPeer.java
index 32ac02f5a..8ac927cba 100644
--- a/gnu/java/awt/peer/gtk/GtkContainerPeer.java
+++ b/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/gnu/java/awt/peer/gtk/GtkImagePainter.java b/gnu/java/awt/peer/gtk/GtkImagePainter.java
index 0476c8cf0..16f36d303 100644
--- a/gnu/java/awt/peer/gtk/GtkImagePainter.java
+++ b/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/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java b/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java
index 18e4d2048..b08728b2b 100644
--- a/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java
+++ b/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/gnu/java/awt/peer/gtk/GtkTextComponentPeer.java b/gnu/java/awt/peer/gtk/GtkTextComponentPeer.java
index 8bc4bdf3e..8893e36e8 100644
--- a/gnu/java/awt/peer/gtk/GtkTextComponentPeer.java
+++ b/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/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java b/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java
index 5662336b1..111c1f969 100644
--- a/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java
+++ b/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/gnu/java/awt/peer/gtk/GtkToolkit.java b/gnu/java/awt/peer/gtk/GtkToolkit.java
index c9739c359..c55001591 100644
--- a/gnu/java/awt/peer/gtk/GtkToolkit.java
+++ b/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)