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 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
00085
00086
00087 FXDCWindow(FXDrawable* drawable,FXEvent* event);
00088
00089
00090
00091 FXDCWindow(FXDrawable* drawable);
00092
00093
00094 void begin(FXDrawable *drawable);
00095
00096
00097 void end();
00098
00099
00100 virtual FXColor readPixel(FXint x,FXint y);
00101
00102
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
00107
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
00113
00114 virtual void drawRectangle(FXint x,FXint y,FXint w,FXint h);
00115 virtual void drawRectangles(const FXRectangle* rectangles,FXuint nrectangles);
00116
00117
00118 virtual void drawRoundRectangle(FXint x,FXint y,FXint w,FXint h,FXint ew,FXint eh);
00119
00120
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
00124
00125 virtual void drawEllipse(FXint x,FXint y,FXint w,FXint h);
00126
00127
00128 virtual void fillRectangle(FXint x,FXint y,FXint w,FXint h);
00129 virtual void fillRectangles(const FXRectangle* rectangles,FXuint nrectangles);
00130
00131
00132 virtual void fillRoundRectangle(FXint x,FXint y,FXint w,FXint h,FXint ew,FXint eh);
00133
00134
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
00138
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
00142
00143 virtual void fillEllipse(FXint x,FXint y,FXint w,FXint h);
00144
00145
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
00150
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
00155
00156 virtual void drawHashBox(FXint x,FXint y,FXint w,FXint h,FXint b=1);
00157
00158
00159 virtual void drawFocusRectangle(FXint x,FXint y,FXint w,FXint h);
00160
00161
00162 virtual void drawArea(const FXDrawable* source,FXint sx,FXint sy,FXint sw,FXint sh,FXint dx,FXint dy);
00163
00164
00165 virtual void drawArea(const FXDrawable* source,FXint sx,FXint sy,FXint sw,FXint sh,FXint dx,FXint dy,FXint dw,FXint dh);
00166
00167
00168 virtual void drawImage(const FXImage* image,FXint dx,FXint dy);
00169
00170
00171 virtual void drawBitmap(const FXBitmap* bitmap,FXint dx,FXint dy);
00172
00173
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
00178
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
00182
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
00186
00187 virtual void setForeground(FXColor clr);
00188 virtual void setBackground(FXColor clr);
00189
00190
00191 virtual void setDashes(FXuint dashoffset,const FXchar *dashpattern,FXuint dashlength);
00192
00193
00194 virtual void setLineWidth(FXuint linewidth=0);
00195
00196
00197 virtual void setLineCap(FXCapStyle capstyle=CAP_BUTT);
00198
00199
00200 virtual void setLineJoin(FXJoinStyle joinstyle=JOIN_MITER);
00201
00202
00203 virtual void setLineStyle(FXLineStyle linestyle=LINE_SOLID);
00204
00205
00206 virtual void setFillStyle(FXFillStyle fillstyle=FILL_SOLID);
00207
00208
00209 virtual void setFillRule(FXFillRule fillrule=RULE_EVEN_ODD);
00210
00211
00212 virtual void setFunction(FXFunction func=BLT_SRC);
00213
00214
00215 virtual void setTile(FXImage* tile,FXint dx=0,FXint dy=0);
00216
00217
00218 virtual void setStipple(FXBitmap *stipple,FXint dx=0,FXint dy=0);
00219
00220
00221 virtual void setStipple(FXStipplePattern stipple,FXint dx=0,FXint dy=0);
00222
00223
00224 virtual void setClipRegion(const FXRegion& region);
00225
00226
00227 virtual void setClipRectangle(FXint x,FXint y,FXint w,FXint h);
00228
00229
00230 virtual void setClipRectangle(const FXRectangle& rectangle);
00231
00232
00233 virtual void clearClipRectangle();
00234
00235
00236 virtual void setClipMask(FXBitmap* mask,FXint dx=0,FXint dy=0);
00237
00238
00239 virtual void clearClipMask();
00240
00241
00242 virtual void setFont(FXFont *fnt);
00243
00244
00245 virtual void clipChildren(FXbool yes);
00246
00247
00248 virtual ~FXDCWindow();
00249 };
00250
00251 }
00252
00253 #endif