![]() |
Main Page
Class Hierarchy
Alphabetical List
Compound List
File List
Compound Members
![]() |
00001 /* 00002 * copyright Manuel <address at teleline.es> 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 * Printing support for the local printer 00014 */ 00015 class FXAPI FXDCNativePrinter : public FXDC { 00016 protected: 00017 FXint pagecount; // Number of pages printed 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; // FXPrinterDrawable is an aux. class only defined in the .cpp file 00032 #endif 00033 00034 public: 00035 enum { 00036 TYPE_PS=0, 00037 TYPE_WIN32=1 00038 }; 00039 00040 public: 00041 /// Construct 00042 FXDCNativePrinter(FXApp* a); 00043 00044 /// Generate print job prolog 00045 virtual FXbool beginPrint(FXPrinter& job); 00046 00047 /// Generate print job epilog 00048 virtual FXbool endPrint(); 00049 00050 /// Generate begin of page 00051 virtual FXbool beginPage(FXuint page=1); 00052 00053 /// Generate end of page 00054 virtual FXbool endPage(); 00055 00056 /// setup paper dimensions 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 /// setup scaling 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 /// Draw points 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 /// Draw lines 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 /// Draw rectangles 00082 virtual void drawRectangle(FXint x,FXint y,FXint w,FXint h); 00083 virtual void drawRectangles(const FXRectangle* rectangles,FXuint nrectangles); 00084 00085 /// Draw arcs 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 /// Filled rectangles 00090 virtual void fillRectangle(FXint x,FXint y,FXint w,FXint h); 00091 virtual void fillRectangles(const FXRectangle* rectangles,FXuint nrectangles); 00092 00093 /// Draw arcs 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 /// Filled polygon 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 /// Filled polygon with relative points 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 /// Draw hashed box 00108 virtual void drawHashBox(FXint x,FXint y,FXint w,FXint h,FXint b=1); 00109 00110 /// Draw area from source 00111 virtual void drawArea(const FXDrawable* source,FXint sx,FXint sy,FXint sw,FXint sh,FXint dx,FXint dy); 00112 00113 /// Draw image 00114 virtual void drawImage(const FXImage* image,FXint dx,FXint dy); 00115 00116 /// Draw bitmap 00117 virtual void drawBitmap(const FXBitmap* bitmap,FXint dx,FXint dy); 00118 00119 /// Draw icon 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 /// Draw string 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 /// Set foreground/background drawing color 00129 virtual void setForeground(FXColor clr); 00130 virtual void setBackground(FXColor clr); 00131 00132 /// Set dash pattern 00133 virtual void setDashes(FXuint dashoffset,const FXchar *dashlist,FXuint n); 00134 00135 /// Set line width 00136 virtual void setLineWidth(FXuint linewidth=0); 00137 00138 /// Set line cap style 00139 virtual void setLineCap(FXCapStyle capstyle=CAP_BUTT); 00140 00141 /// Set line join style 00142 virtual void setLineJoin(FXJoinStyle joinstyle=JOIN_MITER); 00143 00144 /// Set line style 00145 virtual void setLineStyle(FXLineStyle linestyle=LINE_SOLID); 00146 00147 /// Set fill style 00148 virtual void setFillStyle(FXFillStyle fillstyle=FILL_SOLID); 00149 00150 /// Set fill rule 00151 virtual void setFillRule(FXFillRule fillrule=RULE_EVEN_ODD); 00152 00153 /// Set blit function 00154 virtual void setFunction(FXFunction func=BLT_SRC); 00155 00156 /// Set the tile 00157 virtual void setTile(FXImage* tile,FXint dx=0,FXint dy=0); 00158 00159 /// Set the stipple pattern 00160 virtual void setStipple(FXBitmap *stipple,FXint dx=0,FXint dy=0); 00161 00162 /// Set the stipple pattern 00163 virtual void setStipple(FXStipplePattern stipple,FXint dx=0,FXint dy=0); 00164 00165 /// Set clip rectangle 00166 virtual void setClipRectangle(FXint x,FXint y,FXint w,FXint h); 00167 00168 /// Set clip rectangle 00169 virtual void setClipRectangle(const FXRectangle& rectangle); 00170 00171 /// Clear clipping 00172 virtual void clearClipRectangle(); 00173 00174 /// Set clip mask 00175 virtual void setClipMask(FXBitmap* mask,FXint dx=0,FXint dy=0); 00176 00177 /// Clear clip mask 00178 virtual void clearClipMask(); 00179 00180 /// Set font to draw text with 00181 virtual void setTextFont(FXFont *fnt); 00182 00183 /// Clip drawing by child windows 00184 virtual void clipChildren(FXbool yes); 00185 00186 /// Cleanup 00187 virtual ~FXDCNativePrinter(); 00188 }; 00189 00190 }; // namespace FXEX 00191 #endif