From c873301e6d4ca6d3e804ba750eed4ec37149cba0 Mon Sep 17 00:00:00 2001 From: Roman Kennke Date: Thu, 23 Nov 2006 08:45:08 +0000 Subject: 2006-11-23 Roman Kennke * gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java (createGraphics): Try to use Cairo graphics if available. --- ChangeLog | 5 ++++ .../peer/headless/HeadlessGraphicsEnvironment.java | 31 +++++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index f1bbfdab0..cdf550a98 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-11-23 Roman Kennke + + * gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java + (createGraphics): Try to use Cairo graphics if available. + 2006-11-22 David Gilbert * 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() -- cgit v1.2.1