Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members

FXDCNativePrinter.h

Go to the documentation of this file.
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