FXDCPrint.h

Go to the documentation of this file.
00001 /********************************************************************************
00002 *                                                                               *
00003 *           D e v i c e   C o n t e x t   F o r   P r i n t i n g               *
00004 *                                                                               *
00005 *********************************************************************************
00006 * Copyright (C) 1998,2006 by Jeroen van der Zijp.   All Rights Reserved.        *
00007 *********************************************************************************
00008 * This library is free software; you can redistribute it and/or                 *
00009 * modify it under the terms of the GNU Lesser General Public                    *
00010 * License as published by the Free Software Foundation; either                  *
00011 * version 2.1 of the License, or (at your option) any later version.            *
00012 *                                                                               *
00013 * This library is distributed in the hope that it will be useful,               *
00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of                *
00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU             *
00016 * Lesser General Public License for more details.                               *
00017 *                                                                               *
00018 * You should have received a copy of the GNU Lesser General Public              *
00019 * License along with this library; if not, write to the Free Software           *
00020 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.    *
00021 *********************************************************************************
00022 * $Id: FXDCPrint.h,v 1.30 2006/01/22 17:58:00 fox Exp $                         *
00023 ********************************************************************************/
00024 #ifndef FXDCPRINT_H
00025 #define FXDCPRINT_H
00026 
00027 #ifndef FXDC_H
00028 #include "FXDC.h"
00029 #endif
00030 
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 
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 
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 
00072 struct FXPSBounds {
00073   FXdouble  xmin;
00074   FXdouble  xmax;
00075   FXdouble  ymin;
00076   FXdouble  ymax;
00077   };
00078 
00079 
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 
00101 class FXAPI FXDCPrint : public FXDC {
00102 //  friend class FXGLViewer; // This is TEMPORARY!!!
00103 protected:
00104   void      *psout;                   // File Stream for PS output
00105   FXFont    *font;
00106   FXuint     flags;
00107   FXint      Xr,Yr;
00108   FXdouble   mediawidth;              // Media width
00109   FXdouble   mediaheight;             // Media height
00110   FXPSBounds mediabb;                 // Media bounding box
00111   FXPSBounds docbb;                   // Document bounding box
00112   FXPSBounds pagebb;                  // Page bounding box
00113   FXint      pagecount;               // Number of pages printed
00114   FXint      nchars;                  // Number of characters on a line
00115   FXint      pxmin;                   // min X coord in content
00116   FXint      pymin;                   // min Y coord in content
00117   FXint      pxmax;                   // max X coord in content
00118   FXint      pymax;                   // max Y coord in content
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 
00129   FXDCPrint(FXApp* a);
00130 
00132   FXbool beginPrint(FXPrinter& job);
00133 
00135   FXbool endPrint();
00136 
00138   FXbool beginPage(FXuint page=1);
00139 
00141   FXbool endPage();
00142 
00143   FXbool setContentRange(FXint pxmin, FXint pymin, FXint pxmax, FXint pymax);
00144 
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 
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 
00157   virtual void drawRectangle(FXint x,FXint y,FXint w,FXint h);
00158   virtual void drawRectangles(const FXRectangle* rectangles,FXuint nrectangles);
00159 
00161   virtual void drawRoundRectangle(FXint x,FXint y,FXint w,FXint h,FXint ew,FXint eh);
00162 
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 
00168   virtual void drawEllipse(FXint x,FXint y,FXint w,FXint h);
00169 
00171   virtual void fillRectangle(FXint x,FXint y,FXint w,FXint h);
00172   virtual void fillRectangles(const FXRectangle* rectangles,FXuint nrectangles);
00173 
00175   virtual void fillRoundRectangle(FXint x,FXint y,FXint w,FXint h,FXint ew,FXint eh);
00176 
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 
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 
00186   virtual void fillEllipse(FXint x,FXint y,FXint w,FXint h);
00187 
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 
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 
00199   virtual void drawHashBox(FXint x,FXint y,FXint w,FXint h,FXint b=1);
00200 
00202   virtual void drawArea(const FXDrawable* source,FXint sx,FXint sy,FXint sw,FXint sh,FXint dx,FXint dy);
00203 
00205   virtual void drawArea(const FXDrawable* source,FXint sx,FXint sy,FXint sw,FXint sh,FXint dx,FXint dy,FXint dw,FXint dh);
00206 
00208   virtual void drawImage(const FXImage* image,FXint dx,FXint dy);
00209 
00211   virtual void drawBitmap(const FXBitmap* bitmap,FXint dx,FXint dy);
00212 
00214   virtual void drawIcon(const FXIcon* icon,FXint dx,FXint dy);
00215   virtual void drawIconShaded(const FXIcon* icon,FXint dx,FXint dy);
00216   virtual void drawIconSunken(const FXIcon* icon,FXint dx,FXint dy);
00217 
00219   virtual void drawText(FXint x,FXint y,const FXString& string);
00220   virtual void drawText(FXint x,FXint y,const FXchar* string,FXuint length);
00221 
00223   virtual void drawImageText(FXint x,FXint y,const FXString& string);
00224   virtual void drawImageText(FXint x,FXint y,const FXchar* string,FXuint length);
00225 
00227   virtual void setForeground(FXColor clr);
00228   virtual void setBackground(FXColor clr);
00229 
00231   virtual void setDashes(FXuint dashoffset,const FXchar *dashlist,FXuint n);
00232 
00234   virtual void setLineWidth(FXuint linewidth=0);
00235 
00237   virtual void setLineCap(FXCapStyle capstyle=CAP_BUTT);
00238 
00240   virtual void setLineJoin(FXJoinStyle joinstyle=JOIN_MITER);
00241 
00243   virtual void setLineStyle(FXLineStyle linestyle=LINE_SOLID);
00244 
00246   virtual void setFillStyle(FXFillStyle fillstyle=FILL_SOLID);
00247 
00249   virtual void setFillRule(FXFillRule fillrule=RULE_EVEN_ODD);
00250 
00252   virtual void setFunction(FXFunction func=BLT_SRC);
00253 
00255   virtual void setTile(FXImage* tile,FXint dx=0,FXint dy=0);
00256 
00258   virtual void setStipple(FXBitmap *stipple,FXint dx=0,FXint dy=0);
00259 
00261   virtual void setStipple(FXStipplePattern stipple,FXint dx=0,FXint dy=0);
00262 
00264   virtual void setClipRectangle(FXint x,FXint y,FXint w,FXint h);
00265 
00267   virtual void setClipRectangle(const FXRectangle& rectangle);
00268 
00270   virtual void clearClipRectangle();
00271 
00273   virtual void setClipMask(FXBitmap* mask,FXint dx=0,FXint dy=0);
00274 
00276   virtual void clearClipMask();
00277 
00279   virtual void setFont(FXFont *fnt);
00280 
00282   virtual void clipChildren(FXbool yes);
00283 
00285   void outhex(FXuint hex);
00286   void outf(const char* format,...);
00287 
00289   virtual ~FXDCPrint();
00290   };
00291 
00292 }
00293 
00294 #endif

(C) 2002-2009 Niall Douglas. Some parts (C) to assorted authors.
Generated on Fri Nov 20 18:31:20 2009 for TnFOX by doxygen v1.4.7