1 // Copyright 2002 Adam Megacz, see the COPYING file for licensing [GPL] 2 package org.xwt; 3 4 /** 5 * <p> 6 * A block of pixels which can be drawn on and rapidly copied to the 7 * screen. Drawing operations are performed on this class; it is 8 * then rendered to the screen with Surface.blit(). 9 * </p> 10 * 11 * <p> 12 * Implementations of the Platform class should return objects 13 * supporting this interface from the _createDoubleBuffer() 14 * method. These implementations may choose to use off-screen video 15 * ram for this purpose (for example, a Pixmap on X11). 16 * </p> 17 * 18 * <p> 19 * A note on coordinates: all members on DoubleBuffer specify 20 * coordinates in terms of x1,y1,x2,y2 even though the Box class 21 * represents regions internally as x,y,w,h. 22 * </p> 23 */ 24 public abstract class DoubleBuffer { 25 26 /** Draw the region of source within (sx1, sy1, sx2, sy2) onto the region of this DoubleBuffer within (dx1, dy1, dx2, dy2), scaling as needed. */ 27 public abstract void drawPicture(Picture source, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2); 28 29 /** Draw source onto this DoubleBuffer at (x,y) */ 30 public abstract void drawPicture(Picture source, int x, int y); 31 32 /** Draw <tt>text</tt> in <tt>font</tt> and <tt>color</tt> on this DoubleBuffer, with the upper left corner of the text at (x, y) */ 33 public abstract void drawString(String font, String text, int x, int y, int color); 34 35 /** Fill the region (x1, y1, x2, y2) with <tt>color</tt> (AARRGGBB format); the alpha channel component is ignored */ 36 public abstract void fillRect(int x1, int y1, int x2, int y2, int color); 37 38 /** Sets the clip region for this DoubleBuffer to (x,y,x2,y2) */ 39 public abstract void setClip(int x, int y, int x2, int y2); 40 41 public abstract int getHeight(); 42 public abstract int getWidth(); 43 } 44