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
00052 class FXAPI FXDCWindow : public FXDC {
00053 friend class FXFont;
00054 protected:
00055 FXDrawable *surface;
00056 FXVisual *visual;
00057 FXRectangle rect;
00058 #ifndef WIN32
00059 FXuint flags;
00060 FXPixel devfg;
00061 FXPixel devbg;
00062 void *xftDraw;
00063 #else
00064 FXID oldpalette;
00065 FXID oldbrush;
00066 FXID oldpen;
00067 FXPixel devfg;
00068 FXPixel devbg;
00069 FXbool needsNewBrush;
00070 FXbool needsNewPen;
00071 FXbool needsPath;
00072 FXbool needsClipReset;
00073 #endif
00074 private:
00075 #ifdef WIN32
00076 void updateBrush();
00077 void updatePen();
00078 #endif
00079 private:
00080 FXDCWindow();
00081 FXDCWindow(const FXDCWindow&);
00082 FXDCWindow &operator=(const FXDCWindow&);
00083 public:
00084
00087 FXDCWindow(FXDrawable* drawable,FXEvent* event);
00088
00091 FXDCWindow(FXDrawable* drawable);
00092
00094 void begin(FXDrawable *drawable);
00095
00097 void end();
00098
00100 virtual FXColor readPixel(FXint x,FXint y);
00101
00103 virtual void drawPoint(FXint x,FXint y);
00104 virtual void drawPoints(const FXPoint* points,FXuint npoints);
00105 virtual void drawPointsRel(const FXPoint* points,FXuint npoints);
00106
00108 virtual void drawLine(FXint x1,FXint y1,FXint x2,FXint y2);
00109 virtual void drawLines(const FXPoint* points,FXuint npoints);
00110 virtual void drawLinesRel(const FXPoint* points,FXuint npoints);
00111 virtual void drawLineSegments(const FXSegment* segments,FXuint nsegments);
00112
00114 virtual void drawRectangle(FXint x,FXint y,FXint w,FXint h);
00115 virtual void drawRectangles(const FXRectangle* rectangles,FXuint nrectangles);
00116
00118 virtual void drawRoundRectangle(FXint x,FXint y,FXint w,FXint h,FXint ew,FXint eh);
00119
00121 virtual void drawArc(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2);
00122 virtual void drawArcs(const FXArc* arcs,FXuint narcs);
00123
00125 virtual void drawEllipse(FXint x,FXint y,FXint w,FXint h);
00126
00128 virtual void fillRectangle(FXint x,FXint y,FXint w,FXint h);
00129 virtual void fillRectangles(const FXRectangle* rectangles,FXuint nrectangles);
00130
00132 virtual void fillRoundRectangle(FXint x,FXint y,FXint w,FXint h,FXint ew,FXint eh);
00133
00135 virtual void fillChord(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2);
00136 virtual void fillChords(const FXArc* chords,FXuint nchords);
00137
00139 virtual void fillArc(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2);
00140 virtual void fillArcs(const FXArc* arcs,FXuint narcs);
00141
00143 virtual void fillEllipse(FXint x,FXint y,FXint w,FXint h);
00144
00146 virtual void fillPolygon(const FXPoint* points,FXuint npoints);
00147 virtual void fillConcavePolygon(const FXPoint* points,FXuint npoints);
00148 virtual void fillComplexPolygon(const FXPoint* points,FXuint npoints);
00149
00151 virtual void fillPolygonRel(const FXPoint* points,FXuint npoints);
00152 virtual void fillConcavePolygonRel(const FXPoint* points,FXuint npoints);
00153 virtual void fillComplexPolygonRel(const FXPoint* points,FXuint npoints);
00154
00156 virtual void drawHashBox(FXint x,FXint y,FXint w,FXint h,FXint b=1);
00157
00159 virtual void drawFocusRectangle(FXint x,FXint y,FXint w,FXint h);
00160
00162 virtual void drawArea(const FXDrawable* source,FXint sx,FXint sy,FXint sw,FXint sh,FXint dx,FXint dy);
00163
00165 virtual void drawArea(const FXDrawable* source,FXint sx,FXint sy,FXint sw,FXint sh,FXint dx,FXint dy,FXint dw,FXint dh);
00166
00168 virtual void drawImage(const FXImage* image,FXint dx,FXint dy);
00169
00171 virtual void drawBitmap(const FXBitmap* bitmap,FXint dx,FXint dy);
00172
00174 virtual void drawIcon(const FXIcon* icon,FXint dx,FXint dy);
00175 virtual void drawIconShaded(const FXIcon* icon,FXint dx,FXint dy);
00176 virtual void drawIconSunken(const FXIcon* icon,FXint dx,FXint dy);
00177
00179 virtual void drawText(FXint x,FXint y,const FXString& string);
00180 virtual void drawText(FXint x,FXint y,const FXchar* string,FXuint length);
00181
00183 virtual void drawImageText(FXint x,FXint y,const FXString& string);
00184 virtual void drawImageText(FXint x,FXint y,const FXchar* string,FXuint length);
00185
00187 virtual void setForeground(FXColor clr);
00188 virtual void setBackground(FXColor clr);
00189
00191 virtual void setDashes(FXuint dashoffset,const FXchar *dashpattern,FXuint dashlength);
00192
00194 virtual void setLineWidth(FXuint linewidth=0);
00195
00197 virtual void setLineCap(FXCapStyle capstyle=CAP_BUTT);
00198
00200 virtual void setLineJoin(FXJoinStyle joinstyle=JOIN_MITER);
00201
00203 virtual void setLineStyle(FXLineStyle linestyle=LINE_SOLID);
00204
00206 virtual void setFillStyle(FXFillStyle fillstyle=FILL_SOLID);
00207
00209 virtual void setFillRule(FXFillRule fillrule=RULE_EVEN_ODD);
00210
00212 virtual void setFunction(FXFunction func=BLT_SRC);
00213
00215 virtual void setTile(FXImage* tile,FXint dx=0,FXint dy=0);
00216
00218 virtual void setStipple(FXBitmap *stipple,FXint dx=0,FXint dy=0);
00219
00221 virtual void setStipple(FXStipplePattern stipple,FXint dx=0,FXint dy=0);
00222
00224 virtual void setClipRegion(const FXRegion& region);
00225
00227 virtual void setClipRectangle(FXint x,FXint y,FXint w,FXint h);
00228
00230 virtual void setClipRectangle(const FXRectangle& rectangle);
00231
00233 virtual void clearClipRectangle();
00234
00236 virtual void setClipMask(FXBitmap* mask,FXint dx=0,FXint dy=0);
00237
00239 virtual void clearClipMask();
00240
00242 virtual void setFont(FXFont *fnt);
00243
00245 virtual void clipChildren(FXbool yes);
00246
00248 virtual ~FXDCWindow();
00249 };
00250
00251 }
00252
00253 #endif