00001
00002
00003
00004 #ifndef FXDCNATIVEPRINTER_H
00005 #define FXDCNATIVEPRINTER_H
00006
00007 #ifndef FXDC_H
00008 #include <fox/FXDC.h>
00009 #endif
00010 namespace FXEX {
00011
00012
00013
00014
00015 class FXAPI FXDCNativePrinter : public FXDC {
00016 protected:
00017 FXint pagecount;
00018 FXint dctype;
00019 FXdouble scalex;
00020 FXdouble scaley;
00021 FXint logpixelsx;
00022 FXint logpixelsy;
00023 FXfloat unitsx;
00024 FXfloat unitsy;
00025 FXDC *pdc;
00026 #ifdef WIN32
00027 HDC dc;
00028 DOCINFO di;
00029 DEVMODE devmode;
00030 HANDLE devmode_handle;
00031 FXObject *opaque;
00032 #endif
00033
00034 public:
00035 enum {
00036 TYPE_PS=0,
00037 TYPE_WIN32=1
00038 };
00039
00040 public:
00041
00042 FXDCNativePrinter(FXApp* a);
00043
00044
00045 virtual FXbool beginPrint(FXPrinter& job);
00046
00047
00048 virtual FXbool endPrint();
00049
00050
00051 virtual FXbool beginPage(FXuint page=1);
00052
00053
00054 virtual FXbool endPage();
00055
00056
00057 void setHorzUnitsInch(FXfloat sx);
00058 void setVertUnitsInch(FXfloat sy);
00059 FXint ScaleX(FXint x) { return (int)(x*scalex); }
00060 FXint ScaleY(FXint y) { return (int)(y*scaley); }
00061 FXfloat getHorzUnitsInch(void) { return unitsx; }
00062 FXfloat getVertUnitsInch(void) { return unitsy; }
00063
00064
00065 void scalePoints(FXPoint *dst, FXPoint *src, FXuint npoints );
00066 void scaleRectangles(FXRectangle *dst, FXRectangle *src, FXuint nrectangles );
00067 void scaleSegments(FXSegment *dst, FXSegment *src, FXuint nsegments );
00068 void scaleArcs(FXArc *dst, FXArc *src, FXuint narcs );
00069
00070
00071 virtual void drawPoint(FXint x,FXint y);
00072 virtual void drawPoints(const FXPoint* points,FXuint npoints);
00073 virtual void drawPointsRel(const FXPoint* points,FXuint npoints);
00074
00075
00076 virtual void drawLine(FXint x1,FXint y1,FXint x2,FXint y2);
00077 virtual void drawLines(const FXPoint* points,FXuint npoints);
00078 virtual void drawLinesRel(const FXPoint* points,FXuint npoints);
00079 virtual void drawLineSegments(const FXSegment* segments,FXuint nsegments);
00080
00081
00082 virtual void drawRectangle(FXint x,FXint y,FXint w,FXint h);
00083 virtual void drawRectangles(const FXRectangle* rectangles,FXuint nrectangles);
00084
00085
00086 virtual void drawArc(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2);
00087 virtual void drawArcs(const FXArc* arcs,FXuint narcs);
00088
00089
00090 virtual void fillRectangle(FXint x,FXint y,FXint w,FXint h);
00091 virtual void fillRectangles(const FXRectangle* rectangles,FXuint nrectangles);
00092
00093
00094 virtual void fillArc(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2);
00095 virtual void fillArcs(const FXArc* arcs,FXuint narcs);
00096
00097
00098 virtual void fillPolygon(const FXPoint* points,FXuint npoints);
00099 virtual void fillConcavePolygon(const FXPoint* points,FXuint npoints);
00100 virtual void fillComplexPolygon(const FXPoint* points,FXuint npoints);
00101
00102
00103 virtual void fillPolygonRel(const FXPoint* points,FXuint npoints);
00104 virtual void fillConcavePolygonRel(const FXPoint* points,FXuint npoints);
00105 virtual void fillComplexPolygonRel(const FXPoint* points,FXuint npoints);
00106
00107
00108 virtual void drawHashBox(FXint x,FXint y,FXint w,FXint h,FXint b=1);
00109
00110
00111 virtual void drawArea(const FXDrawable* source,FXint sx,FXint sy,FXint sw,FXint sh,FXint dx,FXint dy);
00112
00113
00114 virtual void drawImage(const FXImage* image,FXint dx,FXint dy);
00115
00116
00117 virtual void drawBitmap(const FXBitmap* bitmap,FXint dx,FXint dy);
00118
00119
00120 virtual void drawIcon(const FXIcon* icon,FXint dx,FXint dy);
00121 virtual void drawIconShaded(const FXIcon* icon,FXint dx,FXint dy);
00122 virtual void drawIconSunken(const FXIcon* icon,FXint dx,FXint dy);
00123
00124
00125 virtual void drawText(FXint x,FXint y,const FXchar* string,FXuint length);
00126 virtual void drawImageText(FXint x,FXint y,const FXchar* string,FXuint length);
00127
00128
00129 virtual void setForeground(FXColor clr);
00130 virtual void setBackground(FXColor clr);
00131
00132
00133 virtual void setDashes(FXuint dashoffset,const FXchar *dashlist,FXuint n);
00134
00135
00136 virtual void setLineWidth(FXuint linewidth=0);
00137
00138
00139 virtual void setLineCap(FXCapStyle capstyle=CAP_BUTT);
00140
00141
00142 virtual void setLineJoin(FXJoinStyle joinstyle=JOIN_MITER);
00143
00144
00145 virtual void setLineStyle(FXLineStyle linestyle=LINE_SOLID);
00146
00147
00148 virtual void setFillStyle(FXFillStyle fillstyle=FILL_SOLID);
00149
00150
00151 virtual void setFillRule(FXFillRule fillrule=RULE_EVEN_ODD);
00152
00153
00154 virtual void setFunction(FXFunction func=BLT_SRC);
00155
00156
00157 virtual void setTile(FXImage* tile,FXint dx=0,FXint dy=0);
00158
00159
00160 virtual void setStipple(FXBitmap *stipple,FXint dx=0,FXint dy=0);
00161
00162
00163 virtual void setStipple(FXStipplePattern stipple,FXint dx=0,FXint dy=0);
00164
00165
00166 virtual void setClipRectangle(FXint x,FXint y,FXint w,FXint h);
00167
00168
00169 virtual void setClipRectangle(const FXRectangle& rectangle);
00170
00171
00172 virtual void clearClipRectangle();
00173
00174
00175 virtual void setClipMask(FXBitmap* mask,FXint dx=0,FXint dy=0);
00176
00177
00178 virtual void clearClipMask();
00179
00180
00181 virtual void setTextFont(FXFont *fnt);
00182
00183
00184 virtual void clipChildren(FXbool yes);
00185
00186
00187 virtual ~FXDCNativePrinter();
00188 };
00189
00190 };
00191 #endif