Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members
|
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 00031 ////////////////////////////// UNDER DEVELOPMENT ////////////////////////////// 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 /// Printer flags 00044 enum FXPrintFlags { 00045 PRINT_DEST_PAPER = 0, /// Send print to paper 00046 PRINT_DEST_FILE = 1, /// Send print to file 00047 PRINT_PAGES_ALL = 0, /// Print all pages 00048 PRINT_PAGES_EVEN = 2, /// Print even pages only 00049 PRINT_PAGES_ODD = 4, /// Print odd pages only 00050 PRINT_PAGES_RANGE = 8, /// Print range of pages 00051 PRINT_COLLATE_NORMAL = 0, /// Normal collate order 00052 PRINT_COLLATE_REVERSED = 16, /// Reversed collate order 00053 PRINT_PORTRAIT = 0, /// Portrait orientation 00054 PRINT_LANDSCAPE = 32, /// Landscape orientation 00055 PRINT_BLACKANDWHITE = 0, /// Black and white output 00056 PRINT_COLOR = 64, /// Color output 00057 PRINT_NOBOUNDS = 128 /// Must determine bounding box 00058 }; 00059 00060 00061 /// Printer media size 00062 enum FXMediaSize { 00063 MEDIA_CUSTOM = 0, /// Custom paper size 00064 MEDIA_USLETTER = 1, /// US Letter size 00065 MEDIA_LEGAL = 2, /// US Legal size 00066 MEDIA_A4 = 3, /// A4 00067 MEDIA_ENVELOPE = 4 /// #10 Envelope 00068 }; 00069 00070 00071 /// Bounding box 00072 struct FXPSBounds { 00073 FXdouble xmin; 00074 FXdouble xmax; 00075 FXdouble ymin; 00076 FXdouble ymax; 00077 }; 00078 00079 00080 /// Describes printer 00081 struct FXAPI FXPrinter { 00082 FXString name; /// Printer name 00083 FXuint firstpage; /// First page that can be printed 00084 FXuint lastpage; /// Last page that can be printed 00085 FXuint currentpage; /// Current page to print 00086 FXuint frompage; /// On output, this is the first page to print 00087 FXuint topage; /// On output, last page to print 00088 FXuint mediasize; /// Media size index 00089 FXdouble mediawidth; /// Width of paper in points [1/72 of an inch] 00090 FXdouble mediaheight; /// Height of paper in points 00091 FXdouble leftmargin; /// Left margin 00092 FXdouble rightmargin; /// Right margin 00093 FXdouble topmargin; /// Top margin 00094 FXdouble bottommargin; /// Bottom margin 00095 FXuint numcopies; /// Number of copies 00096 FXuint flags; /// Flags 00097 }; 00098 00099 00100 /// Postscript Printer Device Context 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 00128 /// Construct 00129 FXDCPrint(FXApp* a); 00130 00131 /// Generate print job prolog 00132 FXbool beginPrint(FXPrinter& job); 00133 00134 /// Generate print job epilog 00135 FXbool endPrint(); 00136 00137 /// Generate begin of page 00138 FXbool beginPage(FXuint page=1); 00139 00140 /// Generate end of page 00141 FXbool endPage(); 00142 00143 FXbool setContentRange(FXint pxmin, FXint pymin, FXint pxmax, FXint pymax); 00144 00145 /// Draw points 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 /// Draw lines 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 /// Draw rectangles 00157 virtual void drawRectangle(FXint x,FXint y,FXint w,FXint h); 00158 virtual void drawRectangles(const FXRectangle* rectangles,FXuint nrectangles); 00159 00160 /// Draw rounded rectangle with ellipse with ew and ellips height eh 00161 virtual void drawRoundRectangle(FXint x,FXint y,FXint w,FXint h,FXint ew,FXint eh); 00162 00163 /// Draw arcs 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 00167 /// Draw ellipse 00168 virtual void drawEllipse(FXint x,FXint y,FXint w,FXint h); 00169 00170 /// Filled rectangles 00171 virtual void fillRectangle(FXint x,FXint y,FXint w,FXint h); 00172 virtual void fillRectangles(const FXRectangle* rectangles,FXuint nrectangles); 00173 00174 /// Filled rounded rectangle with ellipse with ew and ellips height eh 00175 virtual void fillRoundRectangle(FXint x,FXint y,FXint w,FXint h,FXint ew,FXint eh); 00176 00177 /// Fill chord 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 00181 /// Draw arcs 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 00185 /// Fill ellipse 00186 virtual void fillEllipse(FXint x,FXint y,FXint w,FXint h); 00187 00188 /// Filled polygon 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 00193 /// Filled polygon with relative points 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 00198 /// Draw hashed box 00199 virtual void drawHashBox(FXint x,FXint y,FXint w,FXint h,FXint b=1); 00200 00201 /// Draw area from source 00202 virtual void drawArea(const FXDrawable* source,FXint sx,FXint sy,FXint sw,FXint sh,FXint dx,FXint dy); 00203 00204 /// Draw area stretched area from source 00205 virtual void drawArea(const FXDrawable* source,FXint sx,FXint sy,FXint sw,FXint sh,FXint dx,FXint dy,FXint dw,FXint dh); 00206 00207 /// Draw image 00208 virtual void drawImage(const FXImage* image,FXint dx,FXint dy); 00209 00210 /// Draw bitmap 00211 virtual void drawBitmap(const FXBitmap* bitmap,FXint dx,FXint dy); 00212 00213 /// Draw icon 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 00218 /// Draw string with base line starting at x, y 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 00222 /// Draw text starting at x, y over filled background 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 00226 /// Set foreground/background drawing color 00227 virtual void setForeground(FXColor clr); 00228 virtual void setBackground(FXColor clr); 00229 00230 /// Set dash pattern 00231 virtual void setDashes(FXuint dashoffset,const FXchar *dashlist,FXuint n); 00232 00233 /// Set line width 00234 virtual void setLineWidth(FXuint linewidth=0); 00235 00236 /// Set line cap style 00237 virtual void setLineCap(FXCapStyle capstyle=CAP_BUTT); 00238 00239 /// Set line join style 00240 virtual void setLineJoin(FXJoinStyle joinstyle=JOIN_MITER); 00241 00242 /// Set line style 00243 virtual void setLineStyle(FXLineStyle linestyle=LINE_SOLID); 00244 00245 /// Set fill style 00246 virtual void setFillStyle(FXFillStyle fillstyle=FILL_SOLID); 00247 00248 /// Set fill rule 00249 virtual void setFillRule(FXFillRule fillrule=RULE_EVEN_ODD); 00250 00251 /// Set blit function 00252 virtual void setFunction(FXFunction func=BLT_SRC); 00253 00254 /// Set the tile 00255 virtual void setTile(FXImage* tile,FXint dx=0,FXint dy=0); 00256 00257 /// Set the stipple pattern 00258 virtual void setStipple(FXBitmap *stipple,FXint dx=0,FXint dy=0); 00259 00260 /// Set the stipple pattern 00261 virtual void setStipple(FXStipplePattern stipple,FXint dx=0,FXint dy=0); 00262 00263 /// Set clip rectangle 00264 virtual void setClipRectangle(FXint x,FXint y,FXint w,FXint h); 00265 00266 /// Set clip rectangle 00267 virtual void setClipRectangle(const FXRectangle& rectangle); 00268 00269 /// Clear clipping 00270 virtual void clearClipRectangle(); 00271 00272 /// Set clip mask 00273 virtual void setClipMask(FXBitmap* mask,FXint dx=0,FXint dy=0); 00274 00275 /// Clear clip mask 00276 virtual void clearClipMask(); 00277 00278 /// Set font to draw text with 00279 virtual void setFont(FXFont *fnt); 00280 00281 /// Clip drawing by child windows 00282 virtual void clipChildren(FXbool yes); 00283 00284 /// Temporarily public; do not rely on this!! 00285 void outhex(FXuint hex); 00286 void outf(const char* format,...); 00287 00288 /// Cleanup 00289 virtual ~FXDCPrint(); 00290 }; 00291 00292 } 00293 00294 #endif
Copyright © 1997-2005 Jeroen van der Zijp |