summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Kennke <roman@kennke.org>2006-11-23 08:45:08 +0000
committerRoman Kennke <roman@kennke.org>2006-11-23 08:45:08 +0000
commitc873301e6d4ca6d3e804ba750eed4ec37149cba0 (patch)
treefc6ddd265b137a963330254821f30044514be1d0
parent1d167e16248e0000809fed3b3b2ad13225110625 (diff)
downloadclasspath-c873301e6d4ca6d3e804ba750eed4ec37149cba0.tar.gz
2006-11-23 Roman Kennke <kennke@aicas.com>
* gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java (createGraphics): Try to use Cairo graphics if available.
-rw-r--r--ChangeLog5
-rw-r--r--gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java31
2 files changed, 35 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index f1bbfdab0..cdf550a98 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-11-23 Roman Kennke <kennke@aicas.com>
+
+ * gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java
+ (createGraphics): Try to use Cairo graphics if available.
+
2006-11-22 David Gilbert <david.gilbert@object-refinery.com>
* java/beans/beancontext/BeanContextSupport.java
diff --git a/gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java b/gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java
index 77ec4bf00..6ae2bf141 100644
--- a/gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java
+++ b/gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java
@@ -46,6 +46,9 @@ import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.HeadlessException;
import java.awt.image.BufferedImage;
+import java.awt.image.Raster;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
import java.util.Locale;
public class HeadlessGraphicsEnvironment
@@ -54,7 +57,33 @@ public class HeadlessGraphicsEnvironment
public Graphics2D createGraphics(BufferedImage image)
{
- return new RasterGraphics(image.getRaster(), image.getColorModel());
+ Graphics2D g2d;
+ try
+ {
+ // Try to get a CairoGraphics (accellerated) when available. Do this
+ // via reflection to avoid having a hard compile time dependency.
+ Class cairoSurfaceCl = Class.forName("gnu.java.awt.peer.gtk.CairoSurface");
+ Raster raster = image.getRaster();
+ if (cairoSurfaceCl.isInstance(raster))
+ {
+ Method getGraphicsM = cairoSurfaceCl.getMethod("getGraphics",
+ new Class[0]);
+ g2d = (Graphics2D) getGraphicsM.invoke(raster, new Object[0]);
+ }
+ else
+ {
+ Class bigCl =
+ Class.forName("gnu.java.awt.peer.gtk.BufferedImageGraphics");
+ Constructor bigC =
+ bigCl.getConstructor(new Class[]{BufferedImage.class });
+ g2d = (Graphics2D) bigCl.newInstance();
+ }
+ }
+ catch (Exception ex)
+ {
+ g2d = new RasterGraphics(image.getRaster(), image.getColorModel());
+ }
+ return g2d;
}
public Font[] getAllFonts()