lib Library API Documentation

kowmfreadprivate.h

00001 /* This file is part of the KDE libraries 00002 * Copyright (c) 1998 Stefan Taferner 00003 * 2001/2003 thierry lorthiois (lorthioist@wanadoo.fr) 00004 * With the help of WMF documentation by Caolan Mc Namara 00005 00006 This library is free software; you can redistribute it and/or 00007 modify it under the terms of the GNU Library General Public 00008 License version 2 as published by the Free Software Foundation. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Library General Public License for more details. 00014 00015 You should have received a copy of the GNU Library General Public License 00016 along with this library; see the file COPYING.LIB. If not, write to 00017 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00018 Boston, MA 02111-1307, USA. 00019 */ 00020 #ifndef _KOWMFREADPRIVATE_H_ 00021 #define _KOWMFREADPRIVATE_H_ 00022 00023 #include <qpen.h> 00024 #include <qcolor.h> 00025 #include <qfont.h> 00026 #include <qrect.h> 00027 #include <qregion.h> 00028 #include <qbuffer.h> 00029 #include <qstring.h> 00030 00031 #include "kowmfstruct.h" 00032 #include "kowmfstack.h" 00033 00034 class KoWmfRead; 00035 00041 class KoWmfReadPrivate 00042 { 00043 public: 00044 KoWmfReadPrivate(); 00045 virtual ~KoWmfReadPrivate(); 00046 00050 bool load( const QByteArray& array ); 00051 00056 bool play( KoWmfRead* readKwmf ); 00057 00058 00059 /* Metafile painter methods */ 00060 00062 void setWindowOrg( Q_UINT32 size, QDataStream& stream ); 00064 void setWindowExt( Q_UINT32 size, QDataStream& stream ); 00066 void ScaleWindowExt( Q_UINT32, QDataStream& stream ); 00068 void OffsetWindowOrg( Q_UINT32, QDataStream& stream ); 00069 00070 /****************** Drawing *******************/ 00072 void lineTo( Q_UINT32 size, QDataStream& stream ); 00074 void moveTo( Q_UINT32 size, QDataStream& stream ); 00076 void ellipse( Q_UINT32 size, QDataStream& stream ); 00078 void polygon( Q_UINT32 size, QDataStream& stream ); 00080 void polyPolygon( Q_UINT32 size, QDataStream& stream ); 00082 void polyline( Q_UINT32 size, QDataStream& stream ); 00084 void rectangle( Q_UINT32 size, QDataStream& stream ); 00086 void roundRect( Q_UINT32 size, QDataStream& stream ); 00088 void arc( Q_UINT32 size, QDataStream& stream ); 00090 void chord( Q_UINT32 size, QDataStream& stream ); 00092 void pie( Q_UINT32 size, QDataStream& stream ); 00094 void setPolyFillMode( Q_UINT32 size, QDataStream& stream ); 00096 void setBkColor( Q_UINT32 size, QDataStream& stream ); 00098 void setBkMode( Q_UINT32 size, QDataStream& stream ); 00100 void setPixel( Q_UINT32 size, QDataStream& stream ); 00102 void setRop( Q_UINT32 size, QDataStream& stream ); 00104 void saveDC( Q_UINT32 size, QDataStream& stream ); 00106 void restoreDC( Q_UINT32 size, QDataStream& stream ); 00108 void intersectClipRect( Q_UINT32 size, QDataStream& stream ); 00110 void excludeClipRect( Q_UINT32 size, QDataStream& stream ); 00111 00112 /****************** Text *******************/ 00114 void setTextColor( Q_UINT32 size, QDataStream& stream ); 00116 void setTextAlign( Q_UINT32 size, QDataStream& stream ); 00118 void textOut( Q_UINT32 size, QDataStream& stream ); 00119 void extTextOut( Q_UINT32 size, QDataStream& stream ); 00120 00121 /****************** Bitmap *******************/ 00122 void SetStretchBltMode( Q_UINT32, QDataStream& stream ); 00124 void dibBitBlt( Q_UINT32 size, QDataStream& stream ); 00126 void dibStretchBlt( Q_UINT32 size, QDataStream& stream ); 00127 void stretchDib( Q_UINT32 size, QDataStream& stream ); 00129 void dibCreatePatternBrush( Q_UINT32 size, QDataStream& stream ); 00130 00131 /****************** Object handle *******************/ 00133 void selectObject( Q_UINT32 size, QDataStream& stream ); 00135 void deleteObject( Q_UINT32 size, QDataStream& stream ); 00137 void createEmptyObject(); 00139 void createBrushIndirect( Q_UINT32 size, QDataStream& stream ); 00141 void createPenIndirect( Q_UINT32 size, QDataStream& stream ); 00143 void createFontIndirect( Q_UINT32 size, QDataStream& stream ); 00144 00145 /****************** misc *******************/ 00147 void end( Q_UINT32, QDataStream& stream ); 00148 00150 static Q_UINT16 calcCheckSum( WmfPlaceableHeader* ); 00151 00152 // function unimplemented 00153 void notyet( Q_UINT32, QDataStream& stream ); 00154 void region( Q_UINT32, QDataStream& stream ); 00155 void palette( Q_UINT32, QDataStream& stream ); 00156 void escape( Q_UINT32, QDataStream& stream ); 00157 void setRelAbs( Q_UINT32, QDataStream& stream ); 00158 void setMapMode( Q_UINT32, QDataStream& stream ); 00159 void extFloodFill( Q_UINT32, QDataStream& stream ); 00160 void startDoc( Q_UINT32, QDataStream& stream ); 00161 void startPage( Q_UINT32, QDataStream& stream ); 00162 void endDoc( Q_UINT32, QDataStream& stream ); 00163 void endPage( Q_UINT32, QDataStream& stream ); 00164 void resetDC( Q_UINT32, QDataStream& stream ); 00165 void bitBlt( Q_UINT32, QDataStream& stream ); 00166 void setDibToDev( Q_UINT32, QDataStream& stream ); 00167 void createBrush( Q_UINT32, QDataStream& stream ); 00168 void createPatternBrush( Q_UINT32, QDataStream& stream ); 00169 void createBitmap( Q_UINT32, QDataStream& stream ); 00170 void createBitmapIndirect( Q_UINT32, QDataStream& stream ); 00171 void createPalette( Q_UINT32, QDataStream& stream ); 00172 void createRegion( Q_UINT32, QDataStream& stream ); 00173 00174 private: 00175 //----------------------------------------------------------------------------- 00176 // Utilities and conversion Wmf -> Qt 00177 00179 bool addHandle( KoWmfHandle* ); 00180 void deleteHandle( int ); 00181 00183 void pointArray( QDataStream& stream, QPointArray& pa ); 00184 00186 QColor qtColor( Q_UINT32 color ) const 00187 { return QColor( color & 0xFF, (color>>8) & 0xFF, (color>>16) & 0xFF ); } 00188 00190 void xyToAngle( int xStart, int yStart, int xEnd, int yEnd, int& angle, int& aLength ); 00191 00193 Qt::RasterOp winToQtRaster( Q_UINT16 param ) const; 00194 Qt::RasterOp winToQtRaster( Q_UINT32 param ) const; 00195 00197 bool dibToBmp( QImage& bmp, QDataStream& stream, Q_UINT32 size); 00198 00199 00200 public: 00201 // state of the WMF 00202 bool mValid; 00203 bool mStandard; 00204 bool mPlaceable; 00205 bool mEnhanced; 00206 00208 QRect mBBox; // placeable file : this is the header 00209 // standard file : this is the value in setWindowOrg and setWindowExt 00211 int mDpi; 00212 00214 int mNbrFunc; 00215 00216 private: 00217 // the output 00218 KoWmfRead *mReadWmf; 00219 00220 // current coordinate != mBBox 00221 QRect mWindow; 00222 // current state of the drawing 00223 QColor mTextColor; 00224 Q_UINT16 mTextAlign; 00225 int mTextRotation; 00226 bool mWinding; 00227 00228 // memory allocation for WMF file 00229 QBuffer* mBuffer; 00230 int mOffsetFirstRecord; 00231 00232 // stack of object handle 00233 KoWmfHandle** mObjHandleTab; 00234 // number of object on the stack 00235 int mNbrObject; 00236 bool mStackOverflow; 00237 }; 00238 00242 static const struct KoWmfFunc { 00243 void ( KoWmfReadPrivate::*method )( Q_UINT32, QDataStream& ); 00244 } koWmfFunc[] = { 00245 { &KoWmfReadPrivate::end }, // 0 00246 { &KoWmfReadPrivate::setBkColor }, // 1 00247 { &KoWmfReadPrivate::setBkMode }, // 2 00248 { &KoWmfReadPrivate::setMapMode }, // 3 00249 { &KoWmfReadPrivate::setRop }, // 4 00250 { &KoWmfReadPrivate::setRelAbs }, // 5 00251 { &KoWmfReadPrivate::setPolyFillMode }, // 6 00252 { &KoWmfReadPrivate::SetStretchBltMode }, // 7 00253 { &KoWmfReadPrivate::notyet }, // 8 00254 { &KoWmfReadPrivate::setTextColor }, // 9 00255 { &KoWmfReadPrivate::ScaleWindowExt }, // 10 00256 { &KoWmfReadPrivate::setWindowOrg }, // 11 00257 { &KoWmfReadPrivate::setWindowExt }, // 12 00258 { &KoWmfReadPrivate::notyet }, // 13 00259 { &KoWmfReadPrivate::notyet }, // 14 00260 { &KoWmfReadPrivate::OffsetWindowOrg }, // 15 00261 { &KoWmfReadPrivate::notyet }, // 16 00262 { &KoWmfReadPrivate::notyet }, // 17 00263 { &KoWmfReadPrivate::notyet }, // 18 00264 { &KoWmfReadPrivate::lineTo }, // 19 00265 { &KoWmfReadPrivate::moveTo }, // 20 00266 { &KoWmfReadPrivate::excludeClipRect }, // 21 00267 { &KoWmfReadPrivate::intersectClipRect }, // 22 00268 { &KoWmfReadPrivate::arc }, // 23 00269 { &KoWmfReadPrivate::ellipse }, // 24 00270 { &KoWmfReadPrivate::notyet }, // 25 00271 { &KoWmfReadPrivate::pie }, // 26 00272 { &KoWmfReadPrivate::rectangle }, // 27 00273 { &KoWmfReadPrivate::roundRect }, // 28 00274 { &KoWmfReadPrivate::notyet }, // 29 00275 { &KoWmfReadPrivate::saveDC }, // 30 00276 { &KoWmfReadPrivate::setPixel }, // 31 00277 { &KoWmfReadPrivate::notyet }, // 32 00278 { &KoWmfReadPrivate::textOut }, // 33 00279 { &KoWmfReadPrivate::bitBlt }, // 34 00280 { &KoWmfReadPrivate::notyet }, // 35 00281 { &KoWmfReadPrivate::polygon }, // 36 00282 { &KoWmfReadPrivate::polyline }, // 37 00283 { &KoWmfReadPrivate::escape }, // 38 00284 { &KoWmfReadPrivate::restoreDC }, // 39 00285 { &KoWmfReadPrivate::region }, // 40 00286 { &KoWmfReadPrivate::region }, // 41 00287 { &KoWmfReadPrivate::region }, // 42 00288 { &KoWmfReadPrivate::region }, // 43 00289 { &KoWmfReadPrivate::region }, // 44 00290 { &KoWmfReadPrivate::selectObject }, // 45 00291 { &KoWmfReadPrivate::setTextAlign }, // 46 00292 { 0 }, // 47 00293 { &KoWmfReadPrivate::chord }, // 48 00294 { &KoWmfReadPrivate::notyet }, // 49 00295 { &KoWmfReadPrivate::extTextOut }, // 50 00296 { &KoWmfReadPrivate::setDibToDev }, // 51 00297 { &KoWmfReadPrivate::palette }, // 52 00298 { &KoWmfReadPrivate::palette }, // 53 00299 { &KoWmfReadPrivate::palette }, // 54 00300 { &KoWmfReadPrivate::palette }, // 55 00301 { &KoWmfReadPrivate::polyPolygon }, // 56 00302 { &KoWmfReadPrivate::palette }, // 57 00303 { 0 }, // 58 00304 { 0 }, // 59 00305 { 0 }, // 60 00306 { 0 }, // 61 00307 { 0 }, // 62 00308 { 0 }, // 63 00309 { &KoWmfReadPrivate::dibBitBlt }, // 64 00310 { &KoWmfReadPrivate::dibStretchBlt }, // 65 00311 { &KoWmfReadPrivate::dibCreatePatternBrush }, // 66 00312 { &KoWmfReadPrivate::stretchDib }, // 67 00313 { 0 }, // 68 00314 { 0 }, // 69 00315 { 0 }, // 70 00316 { 0 }, // 71 00317 { &KoWmfReadPrivate::extFloodFill }, // 72 00318 { 0 }, // 73 00319 { 0 }, // 74 00320 { 0 }, // 75 00321 { &KoWmfReadPrivate::resetDC }, // 76 00322 { &KoWmfReadPrivate::startDoc }, // 77 00323 { 0 }, // 78 00324 { &KoWmfReadPrivate::startPage }, // 79 00325 { &KoWmfReadPrivate::endPage }, // 80 00326 { 0 }, // 81 00327 { 0 }, // 82 00328 { 0 }, // 83 00329 { 0 }, // 84 00330 { 0 }, // 85 00331 { 0 }, // 86 00332 { 0 }, // 87 00333 { 0 }, // 88 00334 { 0 }, // 89 00335 { 0 }, // 90 00336 { 0 }, // 91 00337 { 0 }, // 92 00338 { 0 }, // 93 00339 { &KoWmfReadPrivate::endDoc }, // 94 00340 { 0 }, // 95 00341 // 0x5F last function until 0xF0 00342 { &KoWmfReadPrivate::deleteObject }, // 96 00343 { 0 }, // 97 00344 { 0 }, // 98 00345 { 0 }, // 99 00346 { 0 }, // 100 00347 { 0 }, // 101 00348 { 0 }, // 102 00349 { &KoWmfReadPrivate::createPalette }, // 103 00350 { &KoWmfReadPrivate::createBrush }, // 104 00351 { &KoWmfReadPrivate::createPatternBrush }, // 105 00352 { &KoWmfReadPrivate::createPenIndirect }, // 106 00353 { &KoWmfReadPrivate::createFontIndirect }, // 107 00354 { &KoWmfReadPrivate::createBrushIndirect }, //108 00355 { &KoWmfReadPrivate::createBitmapIndirect }, //109 00356 { &KoWmfReadPrivate::createBitmap }, // 110 00357 { &KoWmfReadPrivate::createRegion } // 111 00358 }; 00359 00360 00361 #endif 00362
KDE Logo
This file is part of the documentation for lib Library Version 1.3.3.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Sep 28 04:04:03 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003