diff options
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/java/awt/peer/gtk/GdkGraphics2D.java | 1146 | ||||
-rw-r--r-- | gnu/java/awt/peer/gtk/GdkPixbufDecoder.java | 217 |
2 files changed, 0 insertions, 1363 deletions
diff --git a/gnu/java/awt/peer/gtk/GdkGraphics2D.java b/gnu/java/awt/peer/gtk/GdkGraphics2D.java deleted file mode 100644 index 11c0371bd..000000000 --- a/gnu/java/awt/peer/gtk/GdkGraphics2D.java +++ /dev/null @@ -1,1146 +0,0 @@ -/* GdkGraphics2D.java - Copyright (C) 2003 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -02111-1307 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package gnu.java.awt.peer.gtk; - -import java.awt.*; -import java.awt.geom.*; -import java.awt.font.*; -import java.awt.color.*; -import java.awt.image.*; -import java.awt.image.renderable.*; - -import java.text.AttributedCharacterIterator; -import java.util.Map; -import java.lang.Integer; -import gnu.classpath.Configuration; - -public class GdkGraphics2D extends Graphics2D -{ - - ////////////////////////////////////// - ////// State Management Methods ////// - ////////////////////////////////////// - - static - { - if (Configuration.INIT_LOAD_LIBRARY) - { - System.loadLibrary("gtkpeer"); - } - initStaticState (); - } - native static void initStaticState (); - private final int native_state = GtkGenericPeer.getUniqueInteger(); - - private Paint paint; - private Stroke stroke; - private Color fg; - private Color bg; - private Shape clip; - private AffineTransform transform; - private GtkComponentPeer component; - private GdkFont font; - - native private int[] initState (GtkComponentPeer component); - native private void initState (int width, int height); - native private void copyState (GdkGraphics2D g); - native public void dispose (); - - public void finalize () - { - dispose(); - } - - public Graphics create () - { - return new GdkGraphics2D (this); - } - - public Graphics create (int x, int y, int width, int height) - { - return new GdkGraphics2D (width, height); - } - - GdkGraphics2D (GdkGraphics2D g) - { - paint = g.paint; - stroke = g.stroke; - - if (g.fg.getAlpha() != -1) - fg = new Color (g.fg.getRed (), g.fg.getGreen (), - g.fg.getBlue (), g.fg.getAlpha ()); - else - fg = new Color (g.fg.getRGB ()); - - if (g.bg.getAlpha() != -1) - bg = new Color(g.bg.getRed (), g.bg.getGreen (), - g.bg.getBlue (), g.bg.getAlpha ()); - else - bg = new Color (g.bg.getRGB ()); - - if (g.clip == null) - clip = null; - else - clip = new Rectangle (g.getClipBounds ()); - - if (g.transform == null) - transform = null; - else - transform = new AffineTransform (g.transform); - - component = g.component; - copyState (g); - - setColor (fg); - setClip (clip); - setTransform (transform); - } - - GdkGraphics2D (int width, int height) - { - initState (width, height); - bg = Color.black; - fg = Color.black; - transform = new AffineTransform (); - } - - GdkGraphics2D (GtkComponentPeer component) - { - this.component = component; - int rgb[] = initState (component); - fg = new Color (rgb[0], rgb[1], rgb[2]); - bg = new Color (rgb[3], rgb[4], rgb[5]); - transform = new AffineTransform (); - } - - - //////////////////////////////////// - ////// Native Drawing Methods ////// - //////////////////////////////////// - - // GDK drawing methods - private native void gdkDrawDrawable (GdkGraphics2D other, int x, int y); - - // drawing utility methods - private native void drawPixels (int pixels[], int w, int h, int stride); - private native void setTexturePixels (int pixels[], int w, int h, int stride); - private native void setGradient (double x1, double y1, - double x2, double y2, - int r1, int g1, int b1, int a1, - int r2, int g2, int b2, int a2, - boolean cyclic); - - // simple passthroughs to cairo - private native void cairoSave (); - private native void cairoRestore (); - private native void cairoSetMatrix (double m00, double m10, - double m01, double m11, - double m02, double m12); - private native void cairoSetOperator (int cairoOperator); - private native void cairoSetRGBColor (double red, double green, double blue); - private native void cairoSetAlpha (double alpha); - private native void cairoSetFillRule (int cairoFillRule); - private native void cairoSetLineWidth (double width); - private native void cairoSetLineCap (int cairoLineCap); - private native void cairoSetLineJoin (int cairoLineJoin); - private native void cairoSetDash (double dashes[], int ndash, double offset); - private native void cairoSetMiterLimit (double limit); - private native void cairoTranslate (double tx, double ty); - private native void cairoScale (double sx, double sy); - private native void cairoRotate (double angle); - private native void cairoNewPath (); - private native void cairoMoveTo (double x, double y); - private native void cairoLineTo (double x, double y); - private native void cairoCurveTo (double x1, double y1, - double x2, double y2, - double x3, double y3); - private native void cairoRelMoveTo (double dx, double dy); - private native void cairoRelLineTo (double dx, double dy); - private native void cairoRelCurveTo (double dx1, double dy1, - double dx2, double dy2, - double dx3, double dy3); - private native void cairoRectangle (double x, double y, - double width, double height); - private native void cairoClosePath (); - private native void cairoStroke (); - private native void cairoFill (); - private native void cairoClip (); - - - ///////////////////////////////////////////// - ////// General Drawing Support Methods ////// - ///////////////////////////////////////////// - - double x; - double y; - private void setPos (double nx, double ny) - { - x = nx; - y = ny; - } - - private void walkPath(PathIterator p) - { - double coords[] = new double[6]; - - cairoSetFillRule (p.getWindingRule ()); - for ( ; ! p.isDone (); p.next()) - { - int seg = p.currentSegment (coords); - switch(seg) - { - - case PathIterator.SEG_MOVETO: - setPos(coords[0], coords[1]); - cairoMoveTo (coords[0], coords[1]); - break; - - case PathIterator.SEG_LINETO: - setPos(coords[0], coords[1]); - cairoLineTo (coords[0], coords[1]); - break; - - case PathIterator.SEG_QUADTO: - - // splitting a quadratic bezier into a cubic: - // see: http://pfaedit.sourceforge.net/bezier.html - - double x1 = x + (2.0/3.0) * (coords[0] - x); - double y1 = y + (2.0/3.0) * (coords[1] - y); - - double x2 = x1 + (1.0/3.0) * (coords[2] - x); - double y2 = y1 + (1.0/3.0) * (coords[3] - y); - - setPos(coords[2], coords[3]); - cairoCurveTo (x1, y1, - x2, y2, - coords[2], coords[3]); - break; - - case PathIterator.SEG_CUBICTO: - setPos(coords[4], coords[5]); - cairoCurveTo (coords[0], coords[1], - coords[2], coords[3], - coords[4], coords[5]); - break; - - case PathIterator.SEG_CLOSE: - cairoClosePath (); - break; - } - } - } - - - ////////////////////////////////////////////////// - ////// Implementation of Graphics2D Methods ////// - ////////////////////////////////////////////////// - - public void draw (Shape s) - { - - if (stroke != null && - !(stroke instanceof BasicStroke)) - { - fill (stroke.createStrokedShape (s)); - return; - } - - cairoSave (); - cairoNewPath (); - if (s instanceof Rectangle2D) - { - Rectangle2D r = (Rectangle2D)s; - cairoRectangle (r.getX (), r.getY (), r.getWidth (), r.getHeight ()); - } - else - walkPath (s.getPathIterator (null)); - cairoStroke (); - cairoRestore (); - } - - public void fill(Shape s) - { - cairoSave(); - cairoNewPath (); - if (s instanceof Rectangle2D) - { - Rectangle2D r = (Rectangle2D)s; - cairoRectangle (r.getX (), r.getY (), r.getWidth (), r.getHeight ()); - } - else - walkPath (s.getPathIterator (null)); - cairoFill (); - cairoRestore (); - } - - public void clip (Shape s) - { - clip = s; - cairoNewPath (); - if (s instanceof Rectangle2D) - { - Rectangle2D r = (Rectangle2D)s; - cairoRectangle (r.getX (), r.getY (), - r.getWidth (), r.getHeight ()); - } - else - walkPath (s.getPathIterator (null)); - cairoClosePath (); - cairoClip (); - } - - public Paint getPaint () - { - return paint; - } - - public AffineTransform getTransform () - { - return transform; - } - - public void setPaint (Paint p) - { - paint = p; - if (paint instanceof Color) - { - setColor ((Color) paint); - } - else if (paint instanceof TexturePaint) - { - TexturePaint tp = (TexturePaint) paint; - BufferedImage img = tp.getImage (); - int pixels[] = img.getRGB(0, 0, img.getWidth (), - img.getHeight (), null, - 0, img.getWidth ()); - setTexturePixels (pixels, img.getWidth (), - img.getHeight (), img.getWidth ()); - } - else if (paint instanceof GradientPaint) - { - GradientPaint gp = (GradientPaint) paint; - Point2D p1 = gp.getPoint1 (); - Point2D p2 = gp.getPoint2 (); - Color c1 = gp.getColor1 (); - Color c2 = gp.getColor2 (); - setGradient (p1.getX (), p1.getY (), - p2.getX (), p2.getY (), - c1.getRed (), c1.getGreen (), - c1.getBlue (), c1.getAlpha (), - c2.getRed (), c2.getGreen (), - c2.getBlue (), c2.getAlpha (), - gp.isCyclic ()); - } - else - throw new java.lang.UnsupportedOperationException (); - } - - public void setTransform (AffineTransform tx) - { - transform = tx; - if (transform != null) - { - double m[] = new double[6]; - transform.getMatrix (m); - cairoSetMatrix (m[0], m[1], m[2], m[3], m[4], m[5]); - } - } - - public void transform (AffineTransform tx) - { - if (transform == null) - transform = new AffineTransform (tx); - else - transform.concatenate (tx); - setTransform (transform); - } - - public void rotate(double theta) - { - if (transform != null) - transform.rotate (theta); - cairoRotate (theta); - } - - public void rotate(double theta, double x, double y) - { - if (transform != null) - transform.rotate (theta, x, y); - cairoTranslate (x, y); - cairoRotate (theta); - cairoTranslate (-x, -y); - } - - public void scale(double sx, double sy) - { - if (transform != null) - transform.scale (sx, sy); - cairoScale (sx, sy); - } - - public void translate (double tx, double ty) - { - if (transform != null) - transform.translate (tx, ty); - cairoTranslate (tx, ty); - } - - public void translate (int x, int y) - { - translate ((double) x, (double) y); - } - - public Stroke getStroke() - { - return stroke; - } - - public void setStroke (Stroke st) - { - stroke = st; - if (stroke instanceof BasicStroke) - { - BasicStroke bs = (BasicStroke) stroke; - cairoSetLineCap (bs.getEndCap()); - cairoSetLineWidth (bs.getLineWidth()); - cairoSetLineJoin (bs.getLineJoin()); - cairoSetMiterLimit (bs.getMiterLimit()); - float dashes[] = bs.getDashArray(); - if (dashes != null) - { - double double_dashes[] = new double[dashes.length]; - for (int i = 0; i < dashes.length; i++) - double_dashes[i] = dashes[i]; - cairoSetDash (double_dashes, double_dashes.length, - (double) bs.getDashPhase ()); - } - } - } - - - //////////////////////////////////////////////// - ////// Implementation of Graphics Methods ////// - //////////////////////////////////////////////// - - public void setPaintMode () - { - setComposite (java.awt.AlphaComposite.Xor); - } - - public void setXORMode (Color c) - { - setComposite (new BitwiseXorComposite (c)); - } - - public void setColor (Color c) - { - fg = c; - cairoSetRGBColor (fg.getRed() / 255.0, - fg.getGreen() / 255.0, - fg.getBlue() / 255.0); - cairoSetAlpha ((fg.getAlpha() & 255) / 255.0); - } - - public Color getColor () - { - return fg; - } - - public void clipRect (int x, int y, int width, int height) - { - // this is *slightly* different than all the other clip functions: it - // intersects the clip area with the new clip rectangle. obviously. of - // course, since Shape doesn't *have* any way of intersecting with a - // rectangle, we will promote the current clipping region to its - // bounding rectangle and then intersect with that. - if (clip == null) - { - cairoNewPath (); - cairoRectangle (x, y, width, height); - cairoClosePath (); - cairoClip (); - clip = new Rectangle (x, y, width, height); - } - else - { - clip (clip.getBounds ().intersection - (new Rectangle (x, y, width, height))); - } - } - - public Shape getClip () - { - return clip; - } - - public Rectangle getClipBounds () - { - if (clip == null) - return null; - else - return clip.getBounds (); - } - - public void setClip (int x, int y, int width, int height) - { - cairoNewPath (); - cairoRectangle (x, y, width, height); - cairoClosePath (); - cairoClip (); - clip = new Rectangle (x, y, width, height); - } - - public void setClip (Shape s) - { - clip (s); - } - - public void draw3DRect(int x, int y, int width, - int height, boolean raised) - { - Color std = fg; - Color light = std.brighter(); - Color dark = std.darker(); - - if (!raised) - { - Color t = light; - light = dark; - dark = t; - } - - double x1 = (double) x; - double x2 = (double) x + width; - - double y1 = (double) y; - double y2 = (double) y + height; - - cairoSave (); - - cairoNewPath (); - setColor (light); - cairoMoveTo (x1, y1); - cairoLineTo (x2, y1); - cairoLineTo (x2, y2); - cairoStroke (); - - cairoNewPath (); - setColor (dark); - cairoMoveTo (x1, y1); - cairoLineTo (x1, y2); - cairoLineTo (x2, y2); - cairoStroke (); - - cairoRestore (); - setColor (std); - - } - - public void fill3DRect(int x, int y, int width, - int height, boolean raised) - { - double step = 1.0; - if (stroke != null && stroke instanceof BasicStroke) - { - BasicStroke bs = (BasicStroke) stroke; - step = bs.getLineWidth(); - } - - Color bright = fg.brighter (); - Color dark = fg.darker (); - - draw3DRect (x, y, width, height, raised); - - cairoSave (); - cairoTranslate (step/2.0, step/2.0); - cairoNewPath (); - cairoRectangle ((double) x, (double) y, - ((double) width) - step, - ((double) height) - step ); - cairoClosePath (); - cairoFill (); - cairoRestore (); - } - - - public void drawRect (int x, int y, int width, int height) - { - draw(new Rectangle (x, y, width, height)); - } - - public void fillRect (int x, int y, int width, int height) - { - fill(new Rectangle (x, y, width, height)); - } - - public void clearRect (int x, int y, int width, int height) - { - cairoSave (); - cairoSetRGBColor (bg.getRed() / 255.0, - bg.getGreen() / 255.0, - bg.getBlue() / 255.0); - cairoSetAlpha (1.0); - cairoNewPath (); - cairoRectangle (x, y, width, height); - cairoClosePath (); - cairoFill (); - cairoRestore (); - } - - public void setBackground(Color c) - { - bg = c; - } - - - public Color getBackground() - { - return bg; - } - - - private void doPolygon(int[] xPoints, int[] yPoints, int nPoints, - boolean close, boolean fill) - { - if (nPoints < 1) - return; - GeneralPath gp = new GeneralPath (); - gp.moveTo ((float)xPoints[0], (float)yPoints[0]); - for (int i = 1; i < nPoints; i++) - gp.lineTo ((float)xPoints[i], (float)yPoints[i]); - - if (close) - gp.closePath (); - - Shape sh = gp; - if (fill == false && - stroke != null && - !(stroke instanceof BasicStroke)) - { - sh = stroke.createStrokedShape (gp); - fill = true; - } - - if (fill) - fill (sh); - else - draw (sh); - } - - public void drawLine (int x1, int y1, int x2, int y2) - { - int xp[] = new int[2]; - int yp[] = new int[2]; - - xp[0] = x1; - xp[1] = x2; - yp[0] = y1; - yp[1] = y2; - - doPolygon (xp, yp, 2, false, false); - } - - public void fillPolygon(int[] xPoints, int[] yPoints, int nPoints) - { - doPolygon (xPoints, yPoints, nPoints, true, true); - } - - public void drawPolygon(int[] xPoints, int[] yPoints, int nPoints) - { - doPolygon (xPoints, yPoints, nPoints, true, false); - } - - public void drawPolyline(int[] xPoints, int[] yPoints, int nPoints) - { - doPolygon (xPoints, yPoints, nPoints, false, false); - } - - private boolean drawRaster (ColorModel cm, Raster r) - { - if (r == null) - return false; - - SampleModel sm = r.getSampleModel (); - DataBuffer db = r.getDataBuffer (); - - if (db == null || sm == null) - return false; - - if (cm == null) - cm = ColorModel.getRGBdefault (); - - int pixels[] = null; - - if (sm.getDataType () == DataBuffer.TYPE_INT && - db instanceof DataBufferInt && - db.getNumBanks () == 1) - { - // single bank, ARGB-ints buffer in sRGB space - DataBufferInt dbi = (DataBufferInt)db; - pixels = dbi.getData (); - } - else - pixels = r.getPixels (0, 0, r.getWidth (), r.getHeight (), pixels); - - ColorSpace cs = cm.getColorSpace (); - if (cs != null && - cs.getType () != ColorSpace.CS_sRGB) - { - int pixels2[] = new int[pixels.length]; - for (int i = 0; i < pixels2.length; i++) - pixels2[i] = cm.getRGB (pixels[i]); - pixels = pixels2; - } - - cairoSave (); - cairoTranslate (x, y); - drawPixels (pixels, r.getWidth (), r.getHeight (), r.getWidth ()); - cairoRestore (); - return true; - } - - public boolean drawImage (Image img, int x, int y, - ImageObserver observer) - { - if (img instanceof GtkOffScreenImage && - img.getGraphics () instanceof GdkGraphics2D && - (transform == null || transform.isIdentity ())) - { - // we are being asked to flush a double buffer from Gdk - GdkGraphics2D g2 = (GdkGraphics2D) img.getGraphics (); - gdkDrawDrawable (g2, x, y); - return true; - } - else - { - if (img instanceof BufferedImage) - { - // draw an image which has actually been loaded into memory fully - BufferedImage b = (BufferedImage) img; - return drawRaster (b.getColorModel (), b.getData ()); - } - else - { - // begin progressive loading in a separate thread - new PainterThread (this, img); - return false; - } - } - } - - - //////////////////////////////////////// - ////// Supporting Private Classes ////// - //////////////////////////////////////// - - private class PainterThread implements Runnable, ImageConsumer - { - - // this is a helper which is spun off when someone tries to do - // Graphics2D.drawImage on an image we cannot determine to be either - // one of our own offscreen images or a BufferedImage; that is, when - // someone wants to draw an image which is possibly still loading over - // a network or something. you run it in a separate thread and it - // writes through to the underlying Graphics2D as pixels becomg - // available. - - GdkGraphics2D gr; - Image image; - ColorModel defaultModel; - - public PainterThread (GdkGraphics2D g, Image im) - { - image = im; - this.gr = (GdkGraphics2D) g.create (); - new Thread (this).start (); - } - - public void imageComplete (int status) - { - } - - public void setColorModel (ColorModel model) - { - defaultModel = model; - } - - public void setDimensions (int width, int height) - { - } - - public void setHints (int hintflags) - { - } - - public void setPixels (int x, int y, int w, int h, ColorModel model, - byte[] pixels, int off, int scansize) - { - } - - public void setPixels (int x, int y, int w, int h, ColorModel model, - int[] pixels, int off, int scansize) - { - gr.cairoSave (); - gr.cairoTranslate (x, y); - - if (model == null) - model = defaultModel; - - int pixels2[]; - if (model != null) - { - pixels2 = new int[pixels.length]; - for (int yy = 0; yy < h; yy++) - for (int xx = 0; xx < w; xx++) - { - int i = yy * scansize + xx; - pixels2[i] = model.getRGB (pixels[i]); - } - } - else - pixels2 = pixels; - - gr.drawPixels (pixels2, w, h, scansize); - gr.cairoRestore (); - } - - public void setProperties (java.util.Hashtable props) - { - } - - public void run () - { - image.getSource ().startProduction (this); - gr.dispose (); - } - } - - - private class BitwiseXorComposite implements Composite - { - // this is a special class which does a bitwise XOR composite, for - // backwards compatibility sake. it does *not* implement the - // porter-duff XOR operator. the porter-duff XOR is unrelated to - // bitwise XOR; it just happens to have a similar name but it - // represents a desire to composite the exclusive or of overlapping - // subpixel regions. bitwise XOR is for drawing "highlights" such as - // cursors (in a cheap oldskool bitblit fashion) by inverting colors - // temporarily and then inverting them back. - - Color xorColor; - - class BitwiseXorCompositeContext implements CompositeContext - { - ColorModel srcColorModel; - ColorModel dstColorModel; - - public BitwiseXorCompositeContext (ColorModel s, - ColorModel d) - { - srcColorModel = s; - dstColorModel = d; - } - - public void dispose () - { - } - - public void compose (Raster src, - Raster dstIn, - WritableRaster dstOut) - { - Rectangle srcRect = src.getBounds (); - Rectangle dstInRect = dstIn.getBounds (); - Rectangle dstOutRect = dstOut.getBounds (); - - int xp = xorColor.getRGB (); - int x = 0, y = 0; - int w = Math.min (Math.min (srcRect.width, dstOutRect.width), dstInRect.width); - int h = Math.min (Math.min (srcRect.height, dstOutRect.height), dstInRect.height); - Object srcPix = null, dstPix = null; - - for (y = 0; y < h; y++) - for (x = 0; x < w; x++) - { - srcPix = src.getDataElements (x + srcRect.x, y + srcRect.y, srcPix); - dstPix = dstIn.getDataElements (x + dstInRect.x, y + dstInRect.y, dstPix); - int sp = srcColorModel.getRGB (srcPix); - int dp = dstColorModel.getRGB (dstPix); - int rp = sp ^ xp ^ dp; - dstOut.setDataElements (x + dstOutRect.x, y + dstOutRect.y, - dstColorModel.getDataElements (rp, null)); - } - } - } - - public BitwiseXorComposite (Color c) - { - xorColor = c; - } - - public CompositeContext createContext (ColorModel srcColorModel, - ColorModel dstColorModel, - RenderingHints hints) - { - return new BitwiseXorCompositeContext (srcColorModel, dstColorModel); - } - } - - - /////////////////////////////////////////////// - ////// Unimplemented Stubs and Overloads ////// - /////////////////////////////////////////////// - - public boolean drawImage(Image image, - AffineTransform xform, - ImageObserver obs) - { - throw new java.lang.UnsupportedOperationException (); - } - - public void drawImage(BufferedImage image, - BufferedImageOp op, - int x, - int y) - { - throw new java.lang.UnsupportedOperationException (); - } - - public void drawRenderedImage(RenderedImage image, - AffineTransform xform) - { - throw new java.lang.UnsupportedOperationException (); - } - - public void drawRenderableImage(RenderableImage image, - AffineTransform xform) - { - throw new java.lang.UnsupportedOperationException (); - } - - public void drawString(String text, float x, float y) - { - throw new java.lang.UnsupportedOperationException (); - } - - public void drawString(AttributedCharacterIterator iterator, - float x, float y) - { - throw new java.lang.UnsupportedOperationException (); - } - - public boolean hit(Rectangle rect, Shape text, - boolean onStroke) - { - throw new java.lang.UnsupportedOperationException (); - } - - public GraphicsConfiguration getDeviceConfiguration() - { - throw new java.lang.UnsupportedOperationException (); - } - - public void setComposite(Composite comp) - { - throw new java.lang.UnsupportedOperationException (); - } - - public void setRenderingHint(RenderingHints.Key hintKey, - Object hintValue) - { - throw new java.lang.UnsupportedOperationException (); - } - - public Object getRenderingHint(RenderingHints.Key hintKey) - { - throw new java.lang.UnsupportedOperationException (); - } - - public void setRenderingHints(Map hints) - { - throw new java.lang.UnsupportedOperationException (); - } - - public void addRenderingHints(Map hints) - { - throw new java.lang.UnsupportedOperationException (); - } - - public RenderingHints getRenderingHints() - { - throw new java.lang.UnsupportedOperationException (); - } - - public void shear(double shearX, double shearY) - { - throw new java.lang.UnsupportedOperationException (); - } - - public Composite getComposite() - { - throw new java.lang.UnsupportedOperationException (); - } - - public FontRenderContext getFontRenderContext () - { - throw new java.lang.UnsupportedOperationException (); - } - - public void drawGlyphVector (GlyphVector g, float x, float y) - { - throw new java.lang.UnsupportedOperationException (); - } - - public void copyArea (int x, int y, int width, int height, int dx, int dy) - { - throw new java.lang.UnsupportedOperationException (); - } - - public void drawArc (int x, int y, int width, int height, - int startAngle, int arcAngle) - { - throw new java.lang.UnsupportedOperationException (); - } - - public boolean drawImage (Image img, int x, int y, Color bgcolor, - ImageObserver observer) - { - throw new java.lang.UnsupportedOperationException (); - } - - public boolean drawImage (Image img, int x, int y, int width, int height, - Color bgcolor, ImageObserver observer) - { - throw new java.lang.UnsupportedOperationException (); - } - - public boolean drawImage (Image img, int x, int y, int width, int height, - ImageObserver observer) - { - throw new java.lang.UnsupportedOperationException (); - } - - public boolean drawImage (Image img, int dx1, int dy1, int dx2, int dy2, - int sx1, int sy1, int sx2, int sy2, - Color bgcolor, ImageObserver observer) - { - throw new java.lang.UnsupportedOperationException (); - } - - public boolean drawImage (Image img, int dx1, int dy1, int dx2, int dy2, - int sx1, int sy1, int sx2, int sy2, - ImageObserver observer) - { - throw new java.lang.UnsupportedOperationException (); - } - - public void drawOval(int x, int y, int width, int height) - { - throw new java.lang.UnsupportedOperationException (); - } - - public void drawRoundRect(int x, int y, int width, int height, - int arcWidth, int arcHeight) - { - throw new java.lang.UnsupportedOperationException (); - } - - public void drawString (String str, int x, int y) - { - throw new java.lang.UnsupportedOperationException (); - } - - public void drawString (AttributedCharacterIterator ci, int x, int y) - { - throw new java.lang.UnsupportedOperationException (); - } - - public void fillArc (int x, int y, int width, int height, - int startAngle, int arcAngle) - { - cairoNewPath (); - walkPath (new Arc2D.Double((double)x, (double)y, - (double)width, (double)height, - (double)startAngle, (double)arcAngle, - Arc2D.PIE).getPathIterator (null)); - cairoClosePath (); - cairoFill (); - } - - public void fillOval(int x, int y, int width, int height) - { - throw new java.lang.UnsupportedOperationException (); - } - - public void fillRoundRect (int x, int y, int width, int height, - int arcWidth, int arcHeight) - { - throw new java.lang.UnsupportedOperationException (); - } - - public Font getFont () - { - throw new java.lang.UnsupportedOperationException (); - } - - public FontMetrics getFontMetrics () - { - throw new java.lang.UnsupportedOperationException (); - } - - public FontMetrics getFontMetrics (Font f) - { - throw new java.lang.UnsupportedOperationException (); - } - - public void setFont (Font f) - { - if (f instanceof GdkFont) - font = (GdkFont) f; - else - font = new GdkFont (f.getAttributes ()); - } - - public String toString() - { - throw new java.lang.UnsupportedOperationException (); - } - -} diff --git a/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java b/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java deleted file mode 100644 index 55f333800..000000000 --- a/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java +++ /dev/null @@ -1,217 +0,0 @@ -/* GdkPixbufDecoder.java -- Image data decoding object - Copyright (C) 2003 Free Software Foundation, Inc. - - This file is part of GNU Classpath. - - GNU Classpath is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GNU Classpath is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GNU Classpath; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. - - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License cover the whole - combination. - - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from - or based on this library. If you modify this library, you may extend - this exception to your version of the library, but you are not - obligated to do so. If you do not wish to do so, delete this - exception statement from your version. */ - - -package gnu.java.awt.peer.gtk; - -import java.awt.image.*; -import java.io.FileDescriptor; -import java.io.FileInputStream; -import java.io.IOException; -import java.net.URL; -import java.util.Vector; -import java.util.Hashtable; -import gnu.classpath.Configuration; - -public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder -{ - static - { - if (Configuration.INIT_LOAD_LIBRARY) - { - System.loadLibrary("gtkpeer"); - } - initStaticState (); - } - native static void initStaticState (); - private final int native_state = GtkGenericPeer.getUniqueInteger (); - - // the current set of ImageConsumers for this decoder - Vector curr; - - // interface to GdkPixbuf - native void initState (); - native void pumpBytes (byte bytes[], int len); - native void finish (); - - // gdk-pixbuf provids data in RGBA format - static final ColorModel cm = new DirectColorModel (32, 0xff000000, - 0x00ff0000, - 0x0000ff00, - 0x000000ff); - public GdkPixbufDecoder (String filename) - { - super (filename); - initState (); - } - - public GdkPixbufDecoder (URL url) - { - super (url); - initState (); - } - - // called back by native side - void areaPrepared (int width, int height) - { - - if (curr == null) - return; - - for (int i = 0; i < curr.size (); i++) - { - ImageConsumer ic = (ImageConsumer) curr.elementAt (i); - ic.setDimensions (width, height); - ic.setColorModel (cm); - ic.setHints (ImageConsumer.RANDOMPIXELORDER); - } - } - - // called back by native side - void areaUpdated (int x, int y, int width, int height, - int pixels[], int scansize) - { - if (curr == null) - return; - - for (int i = 0; i < curr.size (); i++) - { - ImageConsumer ic = (ImageConsumer) curr.elementAt (i); - ic.setPixels (x, y, width, height, cm, pixels, 0, scansize); - } - } - - // called from an async image loader of one sort or another, this method - // repeatedly reads bytes from the input stream and passes them through a - // GdkPixbufLoader using the native method pumpBytes. pumpBytes in turn - // decodes the image data and calls back areaPrepared and areaUpdated on - // this object, feeding back decoded pixel blocks, which we pass to each - // of the ImageConsumers in the provided Vector. - - void produce (Vector v, FileInputStream is) throws IOException - { - curr = v; - - byte bytes[] = new byte[4096]; - int len = 0; - while ((len = is.read (bytes)) != -1) - pumpBytes (bytes, len); - - for (int i = 0; i < curr.size (); i++) - { - ImageConsumer ic = (ImageConsumer) curr.elementAt (i); - ic.imageComplete (ImageConsumer.STATICIMAGEDONE); - } - - curr = null; - } - - // remaining helper class and static method is a convenience for the Gtk - // peers, for loading a BufferedImage in off a disk file. one would think - // this ought to be fairly straightforward, but it does not appear - // anywhere else I can find. - - private class BufferedImageBuilder implements ImageConsumer - { - BufferedImage bufferedImage; - ColorModel defaultModel; - - public BufferedImage getBufferedImage() - { - return bufferedImage; - } - - public void setDimensions(int width, int height) - { - bufferedImage = new BufferedImage (width, height, BufferedImage.TYPE_INT_ARGB); - } - - public void setProperties(Hashtable props) {} - - public void setColorModel(ColorModel model) - { - defaultModel = model; - } - - public void setHints(int flags) {} - - public void setPixels(int x, int y, int w, int h, - ColorModel model, byte[] pixels, - int offset, int scansize) - { - } - - public void setPixels(int x, int y, int w, int h, - ColorModel model, int[] pixels, - int offset, int scansize) - { - if (bufferedImage != null) - { - - if (model == null) - model = defaultModel; - - int pixels2[]; - if (model != null) - { - pixels2 = new int[pixels.length]; - for (int yy = 0; yy < h; yy++) - for (int xx = 0; xx < w; xx++) - { - int i = yy * scansize + xx; - pixels2[i] = model.getRGB (pixels[i]); - } - } - else - pixels2 = pixels; - - bufferedImage.setRGB (x, y, w, h, pixels2, offset, scansize); - } - } - - public void imageComplete(int status) {} - } - - public static BufferedImage createBufferedImage (String filename) - { - BufferedImageBuilder bb = new BufferedImageBuilder (); - GdkPixbufDecoder dec = new GdkPixbufDecoder (filename); - dec.startProduction (bb); - return bb.getBufferedImage (); - } - -} |