diff options
author | Roman Kennke <roman@kennke.org> | 2006-11-23 08:45:08 +0000 |
---|---|---|
committer | Roman Kennke <roman@kennke.org> | 2006-11-23 08:45:08 +0000 |
commit | c873301e6d4ca6d3e804ba750eed4ec37149cba0 (patch) | |
tree | fc6ddd265b137a963330254821f30044514be1d0 | |
parent | 1d167e16248e0000809fed3b3b2ad13225110625 (diff) | |
download | classpath-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-- | ChangeLog | 5 | ||||
-rw-r--r-- | gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java | 31 |
2 files changed, 35 insertions, 1 deletions
@@ -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() |