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