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 drawArc(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2);
00118 virtual void drawArcs(const FXArc* arcs,FXuint narcs);
00119
00120
00121 virtual void fillRectangle(FXint x,FXint y,FXint w,FXint h);
00122 virtual void fillRectangles(const FXRectangle* rectangles,FXuint nrectangles);
00123
00124
00125 virtual void fillChord(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2);
00126 virtual void fillChords(const FXArc* chords,FXuint nchords);
00127
00128
00129 virtual void fillArc(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2);
00130 virtual void fillArcs(const FXArc* arcs,FXuint narcs);
00131
00132
00133 virtual void fillPolygon(const FXPoint* points,FXuint npoints);
00134 virtual void fillConcavePolygon(const FXPoint* points,FXuint npoints);
00135 virtual void fillComplexPolygon(const FXPoint* points,FXuint npoints);
00136
00137
00138 virtual void fillPolygonRel(const FXPoint* points,FXuint npoints);
00139 virtual void fillConcavePolygonRel(const FXPoint* points,FXuint npoints);
00140 virtual void fillComplexPolygonRel(const FXPoint* points,FXuint npoints);
00141
00142
00143 virtual void drawHashBox(FXint x,FXint y,FXint w,FXint h,FXint b=1);
00144
00145
00146 virtual void drawFocusRectangle(FXint x,FXint y,FXint w,FXint h);
00147
00148
00149 virtual void drawArea(const FXDrawable* source,FXint sx,FXint sy,FXint sw,FXint sh,FXint dx,FXint dy);
00150
00151
00152 virtual void drawImage(const FXImage* image,FXint dx,FXint dy);
00153
00154
00155 virtual void drawBitmap(const FXBitmap* bitmap,FXint dx,FXint dy);
00156
00157
00158 virtual void drawIcon(const FXIcon* icon,FXint dx,FXint dy);
00159 virtual void drawIconShaded(const FXIcon* icon,FXint dx,FXint dy);
00160 virtual void drawIconSunken(const FXIcon* icon,FXint dx,FXint dy);
00161
00162
00163 virtual void drawText(FXint x,FXint y,const FXchar* string,FXuint length);
00164 virtual void drawImageText(FXint x,FXint y,const FXchar* string,FXuint length);
00165
00166
00167 virtual void setForeground(FXColor clr);
00168 virtual void setBackground(FXColor clr);
00169
00170
00171 virtual void setDashes(FXuint dashoffset,const FXchar *dashpattern,FXuint dashlength);
00172
00173
00174 virtual void setLineWidth(FXuint linewidth=0);
00175
00176
00177 virtual void setLineCap(FXCapStyle capstyle=CAP_BUTT);
00178
00179
00180 virtual void setLineJoin(FXJoinStyle joinstyle=JOIN_MITER);
00181
00182
00183 virtual void setLineStyle(FXLineStyle linestyle=LINE_SOLID);
00184
00185
00186 virtual void setFillStyle(FXFillStyle fillstyle=FILL_SOLID);
00187
00188
00189 virtual void setFillRule(FXFillRule fillrule=RULE_EVEN_ODD);
00190
00191
00192 virtual void setFunction(FXFunction func=BLT_SRC);
00193
00194
00195 virtual void setTile(FXImage* tile,FXint dx=0,FXint dy=0);
00196
00197
00198 virtual void setStipple(FXBitmap *stipple,FXint dx=0,FXint dy=0);
00199
00200
00201 virtual void setStipple(FXStipplePattern stipple,FXint dx=0,FXint dy=0);
00202
00203
00204 virtual void setClipRegion(const FXRegion& region);
00205
00206
00207 virtual void setClipRectangle(FXint x,FXint y,FXint w,FXint h);
00208
00209
00210 virtual void setClipRectangle(const FXRectangle& rectangle);
00211
00212
00213 virtual void clearClipRectangle();
00214
00215
00216 virtual void setClipMask(FXBitmap* mask,FXint dx=0,FXint dy=0);
00217
00218
00219 virtual void clearClipMask();
00220
00221
00222 virtual void setFont(FXFont *fnt);
00223
00224
00225 virtual void clipChildren(FXbool yes);
00226
00227
00228 virtual ~FXDCWindow();
00229 };
00230
00231 }
00232
00233 #endif