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 FXDCPRINT_H
00025 #define FXDCPRINT_H
00026
00027 #ifndef FXDC_H
00028 #include "FXDC.h"
00029 #endif
00030
00032
00033 namespace FX {
00034
00035 class FXApp;
00036 class FXDrawable;
00037 class FXImage;
00038 class FXBitmap;
00039 class FXIcon;
00040 class FXFont;
00041
00042
00044 enum FXPrintFlags {
00045 PRINT_DEST_PAPER = 0,
00046 PRINT_DEST_FILE = 1,
00047 PRINT_PAGES_ALL = 0,
00048 PRINT_PAGES_EVEN = 2,
00049 PRINT_PAGES_ODD = 4,
00050 PRINT_PAGES_RANGE = 8,
00051 PRINT_COLLATE_NORMAL = 0,
00052 PRINT_COLLATE_REVERSED = 16,
00053 PRINT_PORTRAIT = 0,
00054 PRINT_LANDSCAPE = 32,
00055 PRINT_BLACKANDWHITE = 0,
00056 PRINT_COLOR = 64,
00057 PRINT_NOBOUNDS = 128
00058 };
00059
00060
00062 enum FXMediaSize {
00063 MEDIA_CUSTOM = 0,
00064 MEDIA_USLETTER = 1,
00065 MEDIA_LEGAL = 2,
00066 MEDIA_A4 = 3,
00067 MEDIA_ENVELOPE = 4
00068 };
00069
00070
00072 struct FXPSBounds {
00073 FXdouble xmin;
00074 FXdouble xmax;
00075 FXdouble ymin;
00076 FXdouble ymax;
00077 };
00078
00079
00081 struct FXAPI FXPrinter {
00082 FXString name;
00083 FXuint firstpage;
00084 FXuint lastpage;
00085 FXuint currentpage;
00086 FXuint frompage;
00087 FXuint topage;
00088 FXuint mediasize;
00089 FXdouble mediawidth;
00090 FXdouble mediaheight;
00091 FXdouble leftmargin;
00092 FXdouble rightmargin;
00093 FXdouble topmargin;
00094 FXdouble bottommargin;
00095 FXuint numcopies;
00096 FXuint flags;
00097 };
00098
00099
00101 class FXAPI FXDCPrint : public FXDC {
00102
00103 protected:
00104 void *psout;
00105 FXFont *font;
00106 FXuint flags;
00107 FXint Xr,Yr;
00108 FXdouble mediawidth;
00109 FXdouble mediaheight;
00110 FXPSBounds mediabb;
00111 FXPSBounds docbb;
00112 FXPSBounds pagebb;
00113 FXint pagecount;
00114 FXint nchars;
00115 FXint pxmin;
00116 FXint pymin;
00117 FXint pxmax;
00118 FXint pymax;
00119 protected:
00120 void bbox(FXfloat x,FXfloat y);
00121 void tfm(FXfloat& xo,FXfloat& yo,FXfloat xi,FXfloat yi);
00122 private:
00123 FXDCPrint();
00124 FXDCPrint(const FXDCPrint&);
00125 FXDCPrint &operator=(const FXDCPrint&);
00126 public:
00127
00129 FXDCPrint(FXApp* a);
00130
00132 FXbool beginPrint(FXPrinter& job);
00133
00135 FXbool endPrint();
00136
00138 FXbool beginPage(FXuint page=1);
00139
00141 FXbool endPage();
00142
00143 FXbool setContentRange(FXint pxmin, FXint pymin, FXint pxmax, FXint pymax);
00144
00146 virtual void drawPoint(FXint x,FXint y);
00147 virtual void drawPoints(const FXPoint* points,FXuint npoints);
00148 virtual void drawPointsRel(const FXPoint* points,FXuint npoints);
00149
00151 virtual void drawLine(FXint x1,FXint y1,FXint x2,FXint y2);
00152 virtual void drawLines(const FXPoint* points,FXuint npoints);
00153 virtual void drawLinesRel(const FXPoint* points,FXuint npoints);
00154 virtual void drawLineSegments(const FXSegment* segments,FXuint nsegments);
00155
00157 virtual void drawRectangle(FXint x,FXint y,FXint w,FXint h);
00158 virtual void drawRectangles(const FXRectangle* rectangles,FXuint nrectangles);
00159
00161 virtual void drawRoundRectangle(FXint x,FXint y,FXint w,FXint h,FXint ew,FXint eh);
00162
00164 virtual void drawArc(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2);
00165 virtual void drawArcs(const FXArc* arcs,FXuint narcs);
00166
00168 virtual void drawEllipse(FXint x,FXint y,FXint w,FXint h);
00169
00171 virtual void fillRectangle(FXint x,FXint y,FXint w,FXint h);
00172 virtual void fillRectangles(const FXRectangle* rectangles,FXuint nrectangles);
00173
00175 virtual void fillRoundRectangle(FXint x,FXint y,FXint w,FXint h,FXint ew,FXint eh);
00176
00178 virtual void fillChord(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2);
00179 virtual void fillChords(const FXArc* chords,FXuint nchords);
00180
00182 virtual void fillArc(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2);
00183 virtual void fillArcs(const FXArc* arcs,FXuint narcs);
00184
00186 virtual void fillEllipse(FXint x,FXint y,FXint w,FXint h);
00187
00189 virtual void fillPolygon(const FXPoint* points,FXuint npoints);
00190 virtual void fillConcavePolygon(const FXPoint* points,FXuint npoints);
00191 virtual void fillComplexPolygon(const FXPoint* points,FXuint npoints);
00192
00194 virtual void fillPolygonRel(const FXPoint* points,FXuint npoints);
00195 virtual void fillConcavePolygonRel(const FXPoint* points,FXuint npoints);
00196 virtual void fillComplexPolygonRel(const FXPoint* points,FXuint npoints);
00197
00199 virtual void drawHashBox(FXint x,FXint y,FXint w,FXint h,FXint b=1);
00200
00202 virtual void drawArea(const FXDrawable* source,FXint sx,FXint sy,FXint sw,FXint sh,FXint dx,FXint dy);
00203
00205 virtual void drawArea(const FXDrawable* source,FXint sx,FXint sy,FXint sw,FXint sh,FXint dx,FXint dy,FXint dw,FXint dh);
00206
00208 virtual void drawImage(const FXImage* image,FXint dx,FXint dy);
00209
00211 virtual void drawBitmap(const FXBitmap* bitmap,FXint dx,FXint dy);
00212
00214 virtual void drawIcon(const FXIcon* icon,FXint dx,FXint dy);
00215 virtual void drawIconShaded(const FXIcon* icon,FXint dx,FXint dy);
00216 virtual void drawIconSunken(const FXIcon* icon,FXint dx,FXint dy);
00217
00219 virtual void drawText(FXint x,FXint y,const FXString& string);
00220 virtual void drawText(FXint x,FXint y,const FXchar* string,FXuint length);
00221
00223 virtual void drawImageText(FXint x,FXint y,const FXString& string);
00224 virtual void drawImageText(FXint x,FXint y,const FXchar* string,FXuint length);
00225
00227 virtual void setForeground(FXColor clr);
00228 virtual void setBackground(FXColor clr);
00229
00231 virtual void setDashes(FXuint dashoffset,const FXchar *dashlist,FXuint n);
00232
00234 virtual void setLineWidth(FXuint linewidth=0);
00235
00237 virtual void setLineCap(FXCapStyle capstyle=CAP_BUTT);
00238
00240 virtual void setLineJoin(FXJoinStyle joinstyle=JOIN_MITER);
00241
00243 virtual void setLineStyle(FXLineStyle linestyle=LINE_SOLID);
00244
00246 virtual void setFillStyle(FXFillStyle fillstyle=FILL_SOLID);
00247
00249 virtual void setFillRule(FXFillRule fillrule=RULE_EVEN_ODD);
00250
00252 virtual void setFunction(FXFunction func=BLT_SRC);
00253
00255 virtual void setTile(FXImage* tile,FXint dx=0,FXint dy=0);
00256
00258 virtual void setStipple(FXBitmap *stipple,FXint dx=0,FXint dy=0);
00259
00261 virtual void setStipple(FXStipplePattern stipple,FXint dx=0,FXint dy=0);
00262
00264 virtual void setClipRectangle(FXint x,FXint y,FXint w,FXint h);
00265
00267 virtual void setClipRectangle(const FXRectangle& rectangle);
00268
00270 virtual void clearClipRectangle();
00271
00273 virtual void setClipMask(FXBitmap* mask,FXint dx=0,FXint dy=0);
00274
00276 virtual void clearClipMask();
00277
00279 virtual void setFont(FXFont *fnt);
00280
00282 virtual void clipChildren(FXbool yes);
00283
00285 void outhex(FXuint hex);
00286 void outf(const char* format,...);
00287
00289 virtual ~FXDCPrint();
00290 };
00291
00292 }
00293
00294 #endif