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
00031
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
00043
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
00061
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
00071
00072
struct FXPSBounds {
00073 FXdouble xmin;
00074 FXdouble xmax;
00075 FXdouble ymin;
00076 FXdouble ymax;
00077 };
00078
00079
00080
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
00100
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
00128
00129 FXDCPrint(
FXApp* a);
00130
00131
00132 FXbool beginPrint(FXPrinter& job);
00133
00134
00135 FXbool endPrint();
00136
00137
00138 FXbool beginPage(FXuint page=1);
00139
00140
00141 FXbool endPage();
00142
00143 FXbool setContentRange(FXint pxmin, FXint pymin, FXint pxmax, FXint pymax);
00144
00145
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
00150
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
00156
00157
virtual void drawRectangle(FXint x,FXint y,FXint w,FXint h);
00158
virtual void drawRectangles(
const FXRectangle* rectangles,FXuint nrectangles);
00159
00160
00161
virtual void drawRoundRectangle(FXint x,FXint y,FXint w,FXint h,FXint ew,FXint eh);
00162
00163
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
00167
00168
virtual void drawEllipse(FXint x,FXint y,FXint w,FXint h);
00169
00170
00171
virtual void fillRectangle(FXint x,FXint y,FXint w,FXint h);
00172
virtual void fillRectangles(
const FXRectangle* rectangles,FXuint nrectangles);
00173
00174
00175
virtual void fillRoundRectangle(FXint x,FXint y,FXint w,FXint h,FXint ew,FXint eh);
00176
00177
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
00181
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
00185
00186
virtual void fillEllipse(FXint x,FXint y,FXint w,FXint h);
00187
00188
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
00193
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
00198
00199
virtual void drawHashBox(FXint x,FXint y,FXint w,FXint h,FXint b=1);
00200
00201
00202
virtual void drawArea(
const FXDrawable* source,FXint sx,FXint sy,FXint sw,FXint sh,FXint dx,FXint dy);
00203
00204
00205
virtual void drawImage(
const FXImage* image,FXint dx,FXint dy);
00206
00207
00208
virtual void drawBitmap(
const FXBitmap* bitmap,FXint dx,FXint dy);
00209
00210
00211
virtual void drawIcon(
const FXIcon* icon,FXint dx,FXint dy);
00212
virtual void drawIconShaded(
const FXIcon* icon,FXint dx,FXint dy);
00213
virtual void drawIconSunken(
const FXIcon* icon,FXint dx,FXint dy);
00214
00215
00216
virtual void drawText(FXint x,FXint y,
const FXchar* string,FXuint length);
00217
virtual void drawImageText(FXint x,FXint y,
const FXchar* string,FXuint length);
00218
00219
00220
virtual void setForeground(FXColor clr);
00221
virtual void setBackground(FXColor clr);
00222
00223
00224
virtual void setDashes(FXuint dashoffset,
const FXchar *dashlist,FXuint n);
00225
00226
00227
virtual void setLineWidth(FXuint linewidth=0);
00228
00229
00230
virtual void setLineCap(FXCapStyle capstyle=CAP_BUTT);
00231
00232
00233
virtual void setLineJoin(FXJoinStyle joinstyle=JOIN_MITER);
00234
00235
00236
virtual void setLineStyle(FXLineStyle linestyle=LINE_SOLID);
00237
00238
00239
virtual void setFillStyle(FXFillStyle fillstyle=FILL_SOLID);
00240
00241
00242
virtual void setFillRule(FXFillRule fillrule=RULE_EVEN_ODD);
00243
00244
00245
virtual void setFunction(FXFunction func=BLT_SRC);
00246
00247
00248
virtual void setTile(
FXImage* tile,FXint dx=0,FXint dy=0);
00249
00250
00251
virtual void setStipple(
FXBitmap *stipple,FXint dx=0,FXint dy=0);
00252
00253
00254
virtual void setStipple(FXStipplePattern stipple,FXint dx=0,FXint dy=0);
00255
00256
00257
virtual void setClipRectangle(FXint x,FXint y,FXint w,FXint h);
00258
00259
00260
virtual void setClipRectangle(
const FXRectangle& rectangle);
00261
00262
00263
virtual void clearClipRectangle();
00264
00265
00266
virtual void setClipMask(
FXBitmap* mask,FXint dx=0,FXint dy=0);
00267
00268
00269
virtual void clearClipMask();
00270
00271
00272
virtual void setFont(
FXFont *fnt);
00273
00274
00275
virtual void clipChildren(FXbool yes);
00276
00277
00278
void outhex(FXuint hex);
00279
void outf(
const char* format,...);
00280
00281
00282
virtual ~FXDCPrint();
00283 };
00284
00285 }
00286
00287
#endif