00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
#ifndef FXDCWINDOW_H
00025 
#define FXDCWINDOW_H
00026 
00027 
#ifndef FXDC_H
00028 
#include "FXDC.h"
00029 
#endif
00030 
00031 
namespace FX {
00032 
00033 
00034 
class FXApp;
00035 
class FXDrawable;
00036 
class FXImage;
00037 
class FXBitmap;
00038 
class FXIcon;
00039 
class FXFont;
00040 
class FXVisual;
00041 
00042 
00043 
00044 
00045 
00046 
00047 
00048 
00049 
00050 
00051 
00052 class FXAPI FXDCWindow : 
public FXDC {
00053 
protected:
00054   
FXDrawable *surface;        
00055   
FXVisual   *visual;         
00056   
FXRectangle rect;           
00057 
#ifndef WIN32
00058 
  FXuint      flags;          
00059   FXPixel     devfg;          
00060   FXPixel     devbg;          
00061   
void       *xftDraw;        
00062 
#else
00063 
  FXID        oldpalette;
00064   FXID        oldbrush;
00065   FXID        oldpen;
00066   FXPixel     devfg;          
00067   FXPixel     devbg;          
00068   FXbool      needsNewBrush;
00069   FXbool      needsNewPen;
00070   FXbool      needsPath;
00071   FXbool      needsClipReset;
00072 
#endif
00073 
private:
00074 
#ifdef WIN32
00075 
  void updateBrush();
00076   
void updatePen();
00077 
#endif
00078 
private:
00079   FXDCWindow();
00080   FXDCWindow(
const FXDCWindow&);
00081   FXDCWindow &operator=(
const FXDCWindow&);
00082 
public:
00083 
00084 
00085 
00086   FXDCWindow(
FXDrawable* drawable,
FXEvent* event);
00087 
00088 
00089 
00090   FXDCWindow(
FXDrawable* drawable);
00091 
00092 
00093   
void begin(
FXDrawable *drawable);
00094 
00095 
00096   
void end();
00097 
00098 
00099   
virtual FXColor readPixel(FXint x,FXint y);
00100 
00101 
00102   
virtual void drawPoint(FXint x,FXint y);
00103   
virtual void drawPoints(
const FXPoint* points,FXuint npoints);
00104   
virtual void drawPointsRel(
const FXPoint* points,FXuint npoints);
00105 
00106 
00107   
virtual void drawLine(FXint x1,FXint y1,FXint x2,FXint y2);
00108   
virtual void drawLines(
const FXPoint* points,FXuint npoints);
00109   
virtual void drawLinesRel(
const FXPoint* points,FXuint npoints);
00110   
virtual void drawLineSegments(
const FXSegment* segments,FXuint nsegments);
00111 
00112 
00113   
virtual void drawRectangle(FXint x,FXint y,FXint w,FXint h);
00114   
virtual void drawRectangles(
const FXRectangle* rectangles,FXuint nrectangles);
00115 
00116 
00117   
virtual void drawRoundRectangle(FXint x,FXint y,FXint w,FXint h,FXint ew,FXint eh);
00118 
00119 
00120   
virtual void drawArc(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2);
00121   
virtual void drawArcs(
const FXArc* arcs,FXuint narcs);
00122 
00123 
00124   
virtual void drawEllipse(FXint x,FXint y,FXint w,FXint h);
00125 
00126 
00127   
virtual void fillRectangle(FXint x,FXint y,FXint w,FXint h);
00128   
virtual void fillRectangles(
const FXRectangle* rectangles,FXuint nrectangles);
00129 
00130 
00131   
virtual void fillRoundRectangle(FXint x,FXint y,FXint w,FXint h,FXint ew,FXint eh);
00132 
00133 
00134   
virtual void fillChord(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2);
00135   
virtual void fillChords(
const FXArc* chords,FXuint nchords);
00136 
00137 
00138   
virtual void fillArc(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2);
00139   
virtual void fillArcs(
const FXArc* arcs,FXuint narcs);
00140 
00141 
00142   
virtual void fillEllipse(FXint x,FXint y,FXint w,FXint h);
00143 
00144 
00145   
virtual void fillPolygon(
const FXPoint* points,FXuint npoints);
00146   
virtual void fillConcavePolygon(
const FXPoint* points,FXuint npoints);
00147   
virtual void fillComplexPolygon(
const FXPoint* points,FXuint npoints);
00148 
00149 
00150   
virtual void fillPolygonRel(
const FXPoint* points,FXuint npoints);
00151   
virtual void fillConcavePolygonRel(
const FXPoint* points,FXuint npoints);
00152   
virtual void fillComplexPolygonRel(
const FXPoint* points,FXuint npoints);
00153 
00154 
00155   
virtual void drawHashBox(FXint x,FXint y,FXint w,FXint h,FXint b=1);
00156 
00157 
00158   
virtual void drawFocusRectangle(FXint x,FXint y,FXint w,FXint h);
00159 
00160 
00161   
virtual void drawArea(
const FXDrawable* source,FXint sx,FXint sy,FXint sw,FXint sh,FXint dx,FXint dy);
00162 
00163 
00164   
virtual void drawImage(
const FXImage* image,FXint dx,FXint dy);
00165 
00166 
00167   
virtual void drawBitmap(
const FXBitmap* bitmap,FXint dx,FXint dy);
00168 
00169 
00170   
virtual void drawIcon(
const FXIcon* icon,FXint dx,FXint dy);
00171   
virtual void drawIconShaded(
const FXIcon* icon,FXint dx,FXint dy);
00172   
virtual void drawIconSunken(
const FXIcon* icon,FXint dx,FXint dy);
00173 
00174 
00175   
virtual void drawText(FXint x,FXint y,
const FXchar* string,FXuint length);
00176   
virtual void drawImageText(FXint x,FXint y,
const FXchar* string,FXuint length);
00177 
00178 
00179   
virtual void setForeground(FXColor clr);
00180   
virtual void setBackground(FXColor clr);
00181 
00182 
00183   
virtual void setDashes(FXuint dashoffset,
const FXchar *dashpattern,FXuint dashlength);
00184 
00185 
00186   
virtual void setLineWidth(FXuint linewidth=0);
00187 
00188 
00189   
virtual void setLineCap(
FXCapStyle capstyle=
CAP_BUTT);
00190 
00191 
00192   
virtual void setLineJoin(
FXJoinStyle joinstyle=
JOIN_MITER);
00193 
00194 
00195   
virtual void setLineStyle(
FXLineStyle linestyle=
LINE_SOLID);
00196 
00197 
00198   
virtual void setFillStyle(
FXFillStyle fillstyle=
FILL_SOLID);
00199 
00200 
00201   
virtual void setFillRule(
FXFillRule fillrule=
RULE_EVEN_ODD);
00202 
00203 
00204   
virtual void setFunction(
FXFunction func=
BLT_SRC);
00205 
00206 
00207   
virtual void setTile(
FXImage* tile,FXint dx=0,FXint dy=0);
00208 
00209 
00210   
virtual void setStipple(
FXBitmap *stipple,FXint dx=0,FXint dy=0);
00211 
00212 
00213   
virtual void setStipple(
FXStipplePattern stipple,FXint dx=0,FXint dy=0);
00214 
00215 
00216   
virtual void setClipRegion(
const FXRegion& region);
00217 
00218 
00219   
virtual void setClipRectangle(FXint x,FXint y,FXint w,FXint h);
00220 
00221 
00222   
virtual void setClipRectangle(
const FXRectangle& rectangle);
00223 
00224 
00225   
virtual void clearClipRectangle();
00226 
00227 
00228   
virtual void setClipMask(
FXBitmap* mask,FXint dx=0,FXint dy=0);
00229 
00230 
00231   
virtual void clearClipMask();
00232 
00233 
00234   
virtual void setFont(
FXFont *fnt);
00235 
00236 
00237   
virtual void clipChildren(FXbool yes);
00238 
00239 
00240   
virtual ~FXDCWindow();
00241   };
00242 
00243 }
00244 
00245 
#endif