00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef INCL_PLPICTDEC
00012 #define INCL_PLPICTDEC
00013
00014 #ifndef INCL_PLPICDEC
00015 #include "plpicdec.h"
00016 #endif
00017
00018 #include "qdraw.h"
00019
00020 class PLJPEGDecoder;
00021
00022
00023
00024
00025
00026
00027
00028 class PLPictDecoder : public PLPicDecoder
00029 {
00030
00031 public:
00032
00033
00034 PLPictDecoder
00035 ( PLJPEGDecoder * pJPEGDecoder
00036 );
00037
00038
00039 virtual ~PLPictDecoder
00040 ();
00041
00042
00043 virtual void Open (PLDataSource * pDataSrc);
00044
00045
00046 virtual void GetImage (PLBmp & Bmp);
00047
00048 private:
00049
00050
00051
00052 void readHeader
00053 ( PLDataSource * pDataSrc,
00054 int& Version
00055 );
00056
00057
00058
00059
00060
00061 void interpretOpcodes
00062 ( PLDataSource * pDataSrc,
00063 int& Version
00064 );
00065
00066
00067
00068 PLWORD readOpcode
00069 ( int Version,
00070 PLDataSource * pDataSrc
00071 );
00072
00073
00074
00075
00076 void clip
00077 ( PLDataSource * pDataSrc
00078 );
00079
00080
00081
00082 void pixPat
00083 ( PLDataSource * pDataSrc
00084 );
00085
00086
00087
00088 void skipPolyOrRegion
00089 ( PLDataSource * pDataSrc
00090 );
00091
00092
00093 void bitsRect
00094 ( PLDataSource * pDataSrc
00095 );
00096
00097
00098 void bitsRegion
00099 ( PLDataSource * pDataSrc
00100 );
00101
00102
00103 void opcode9a
00104 ( PLDataSource * pDataSrc
00105 );
00106
00107 void DecodeOp9a
00108 ( PLBmp * pBmp,
00109 PLDataSource * pDataSrc
00110 );
00111
00112
00113 void longComment
00114 ( PLDataSource * pDataSrc
00115 );
00116
00117
00118 void headerOp
00119 ( PLDataSource * pDataSrc
00120 );
00121
00122
00123 void jpegOp
00124 ( PLDataSource * pDataSrc
00125 );
00126
00127 void DecodeJPEG
00128 ( PLBmp * pBmp,
00129 PLDataSource * pDataSrc
00130 );
00131
00132
00133
00134
00135 void setBmpInfo
00136 ( MacpixMap PixMap
00137 );
00138
00139
00140 void doBitmap
00141 ( PLDataSource * pDataSrc
00142 );
00143
00144 void DecodeBitmap
00145 ( PLBmp * pBmp,
00146 PLDataSource * pDataSrc
00147 );
00148
00149
00150 void doPixmap
00151 ( PLDataSource * pDataSrc
00152 );
00153
00154 void DecodePixmap
00155 ( PLBmp * pBmp,
00156 PLDataSource * pDataSrc
00157 );
00158
00159
00160
00161
00162
00163
00164
00165 void unpack32bits
00166 ( MacRect* pBounds,
00167 PLWORD rowBytes,
00168 int NumBitPlanes,
00169 PLBmp * pBmp,
00170 PLDataSource * pDataSrc
00171 );
00172
00173
00174
00175
00176
00177
00178
00179 void unpack8bits
00180 ( MacRect* pBounds,
00181 PLWORD rowBytes,
00182 PLBmp * pBmp,
00183 PLDataSource * pDataSrc
00184 );
00185
00186
00187
00188
00189 void unpackbits
00190 ( MacRect* pBounds,
00191 PLWORD rowBytes,
00192 int pixelSize,
00193 PLBmp * pBmp,
00194 PLDataSource * pDataSrc
00195 );
00196
00197
00198 void skipBits
00199 ( MacRect* pBounds,
00200 PLWORD rowBytes,
00201 int pixelSize,
00202 PLDataSource * pDataSrc
00203 );
00204
00205
00206 void expandBuf
00207 ( PLBYTE * pDestBuf,
00208 PLBYTE * pSrcBuf,
00209 int Width,
00210
00211 int bpp
00212 );
00213
00214
00215
00216 void expandBuf8
00217 ( PLBYTE * pDestBuf,
00218 PLBYTE * pSrcBuf,
00219 int Width,
00220 int bpp
00221 );
00222
00223 void readPixmap
00224 ( MacpixMap * pPixMap,
00225 PLDataSource * pDataSrc
00226 );
00227
00228
00229 void readColourTable
00230 ( PLWORD * pNumColors,
00231 PLDataSource * pDataSrc,
00232 PLPixel32 * pPal
00233 );
00234
00235 void readRect
00236 ( MacRect * pr,
00237 PLDataSource * pDataSrc
00238 );
00239
00240 void dumpRect
00241 ( char * psz,
00242 MacRect * pr
00243 );
00244
00245 void tracePixMapHeader
00246 ( int Level,
00247 MacpixMap * pPixMap
00248 );
00249
00250
00251 PLJPEGDecoder * m_pJPEGDecoder;
00252
00253 enum PICTType {none, op9a, jpeg, pixmap, bitmap};
00254 PICTType m_PictType;
00255
00256
00257 MacpixMap m_PixMap;
00258
00259
00260 int m_rowBytes;
00261 MacRect m_Bounds;
00262 bool m_bIsRegion;
00263 };
00264
00265 #endif
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296