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 drawArc(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2);
00162
virtual void drawArcs(
const FXArc* arcs,FXuint narcs);
00163
00164
00165
virtual void fillRectangle(FXint x,FXint y,FXint w,FXint h);
00166
virtual void fillRectangles(
const FXRectangle* rectangles,FXuint nrectangles);
00167
00168
00169
virtual void fillChord(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2);
00170
virtual void fillChords(
const FXArc* chords,FXuint nchords);
00171
00172
00173
virtual void fillArc(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2);
00174
virtual void fillArcs(
const FXArc* arcs,FXuint narcs);
00175
00176
00177
virtual void fillPolygon(
const FXPoint* points,FXuint npoints);
00178
virtual void fillConcavePolygon(
const FXPoint* points,FXuint npoints);
00179
virtual void fillComplexPolygon(
const FXPoint* points,FXuint npoints);
00180
00181
00182
virtual void fillPolygonRel(
const FXPoint* points,FXuint npoints);
00183
virtual void fillConcavePolygonRel(
const FXPoint* points,FXuint npoints);
00184
virtual void fillComplexPolygonRel(
const FXPoint* points,FXuint npoints);
00185
00186
00187
virtual void drawHashBox(FXint x,FXint y,FXint w,FXint h,FXint b=1);
00188
00189
00190
virtual void drawArea(
const FXDrawable* source,FXint sx,FXint sy,FXint sw,FXint sh,FXint dx,FXint dy);
00191
00192
00193
virtual void drawImage(
const FXImage* image,FXint dx,FXint dy);
00194
00195
00196
virtual void drawBitmap(
const FXBitmap* bitmap,FXint dx,FXint dy);
00197
00198
00199
virtual void drawIcon(
const FXIcon* icon,FXint dx,FXint dy);
00200
virtual void drawIconShaded(
const FXIcon* icon,FXint dx,FXint dy);
00201
virtual void drawIconSunken(
const FXIcon* icon,FXint dx,FXint dy);
00202
00203
00204
virtual void drawText(FXint x,FXint y,
const FXchar* string,FXuint length);
00205
virtual void drawImageText(FXint x,FXint y,
const FXchar* string,FXuint length);
00206
00207
00208
virtual void setForeground(FXColor clr);
00209
virtual void setBackground(FXColor clr);
00210
00211
00212
virtual void setDashes(FXuint dashoffset,
const FXchar *dashlist,FXuint n);
00213
00214
00215
virtual void setLineWidth(FXuint linewidth=0);
00216
00217
00218
virtual void setLineCap(FXCapStyle capstyle=CAP_BUTT);
00219
00220
00221
virtual void setLineJoin(FXJoinStyle joinstyle=JOIN_MITER);
00222
00223
00224
virtual void setLineStyle(FXLineStyle linestyle=LINE_SOLID);
00225
00226
00227
virtual void setFillStyle(FXFillStyle fillstyle=FILL_SOLID);
00228
00229
00230
virtual void setFillRule(FXFillRule fillrule=RULE_EVEN_ODD);
00231
00232
00233
virtual void setFunction(FXFunction func=BLT_SRC);
00234
00235
00236
virtual void setTile(
FXImage* tile,FXint dx=0,FXint dy=0);
00237
00238
00239
virtual void setStipple(
FXBitmap *stipple,FXint dx=0,FXint dy=0);
00240
00241
00242
virtual void setStipple(FXStipplePattern stipple,FXint dx=0,FXint dy=0);
00243
00244
00245
virtual void setClipRectangle(FXint x,FXint y,FXint w,FXint h);
00246
00247
00248
virtual void setClipRectangle(
const FXRectangle& rectangle);
00249
00250
00251
virtual void clearClipRectangle();
00252
00253
00254
virtual void setClipMask(
FXBitmap* mask,FXint dx=0,FXint dy=0);
00255
00256
00257
virtual void clearClipMask();
00258
00259
00260
virtual void setFont(
FXFont *fnt);
00261
00262
00263
virtual void clipChildren(FXbool yes);
00264
00265
00266
void outhex(FXuint hex);
00267
void outf(
const char* format,...);
00268
00269
00270
virtual ~FXDCPrint();
00271 };
00272
00273 }
00274
00275
#endif