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
00028 class PLPictDecoder : public PLPicDecoder
00029 {
00030
00031
00032 public:
00035 PLPictDecoder
00036 ( PLJPEGDecoder * pJPEGDecoder
00037 );
00038
00040 virtual ~PLPictDecoder
00041 ();
00042
00043 protected:
00045 virtual void DoDecode
00046 ( PLBmp * pBmp,
00047 PLDataSource * pDataSrc
00048 );
00049
00050 private:
00051
00052
00053
00054 void readHeader
00055 ( PLDataSource * pDataSrc,
00056 int& Version
00057 );
00058
00059
00060
00061
00062
00063 void interpretOpcodes
00064 ( PLBmp * pBmp,
00065 PLDataSource * pDataSrc,
00066 int& Version
00067 );
00068
00069
00070
00071 PLWORD readOpcode
00072 ( int Version,
00073 PLDataSource * pDataSrc
00074 );
00075
00076
00077
00078
00079 void clip
00080 ( PLDataSource * pDataSrc
00081 );
00082
00083
00084
00085 void pixPat
00086 ( PLDataSource * pDataSrc
00087 );
00088
00089
00090
00091 void skipPolyOrRegion
00092 ( PLDataSource * pDataSrc
00093 );
00094
00095
00096 void bitsRect
00097 ( PLDataSource * pDataSrc,
00098 PLBmp * pBmp
00099 );
00100
00101
00102 void bitsRegion
00103 ( PLDataSource * pDataSrc,
00104 PLBmp * pBmp
00105 );
00106
00107
00108 void opcode9a
00109 ( PLDataSource * pDataSrc,
00110 PLBmp * pBmp
00111 );
00112
00113
00114 void longComment
00115 ( PLDataSource * pDataSrc
00116 );
00117
00118
00119 void headerOp
00120 ( PLDataSource * pDataSrc,
00121 PLBmp * pBmp
00122 );
00123
00124
00125 void jpegOp
00126 ( PLDataSource * pDataSrc,
00127 PLBmp * pBmp
00128 );
00129
00130
00131
00132
00133 void createOutputBmp
00134 ( MacpixMap PixMap,
00135 PLBmp * pBmp
00136 );
00137
00138
00139 void doBitmap
00140 ( int rowBytes,
00141 bool bIsRegion,
00142 PLBmp * pBmp,
00143 PLDataSource * pDataSrc
00144 );
00145
00146
00147 void doPixmap
00148 ( int rowBytes,
00149 bool bIsRegion,
00150 PLBmp * pBmp,
00151 PLDataSource * pDataSrc
00152 );
00153
00154
00155
00156
00157
00158
00159 void unpack32bits
00160 ( MacRect* pBounds,
00161 PLWORD rowBytes,
00162 int NumBitPlanes,
00163 PLBmp * pBmp,
00164 PLDataSource * pDataSrc
00165 );
00166
00167
00168
00169
00170
00171
00172
00173 void unpack8bits
00174 ( MacRect* pBounds,
00175 PLWORD rowBytes,
00176 PLBmp * pBmp,
00177 PLDataSource * pDataSrc
00178 );
00179
00180
00181
00182
00183 void unpackbits
00184 ( MacRect* pBounds,
00185 PLWORD rowBytes,
00186 int pixelSize,
00187 PLBmp * pBmp,
00188 PLDataSource * pDataSrc
00189 );
00190
00191
00192 void skipBits
00193 ( MacRect* pBounds,
00194 PLWORD rowBytes,
00195 int pixelSize,
00196 PLDataSource * pDataSrc
00197 );
00198
00199
00200 void expandBuf
00201 ( PLBYTE * pDestBuf,
00202 PLBYTE * pSrcBuf,
00203 int Width,
00204
00205 int bpp
00206 );
00207
00208
00209
00210 void expandBuf8
00211 ( PLBYTE * pDestBuf,
00212 PLBYTE * pSrcBuf,
00213 int Width,
00214 int bpp
00215 );
00216
00217 void readPixmap
00218 ( MacpixMap * pPixMap,
00219 PLDataSource * pDataSrc
00220 );
00221
00222
00223 void readColourTable
00224 ( PLWORD * pNumColors,
00225 PLDataSource * pDataSrc,
00226 PLPixel32 * pPal
00227 );
00228
00229 void readRect
00230 ( MacRect * pr,
00231 PLDataSource * pDataSrc
00232 );
00233
00234 void dumpRect
00235 ( char * psz,
00236 MacRect * pr
00237 );
00238
00239 void tracePixMapHeader
00240 ( int Level,
00241 MacpixMap * pPixMap
00242 );
00243
00244
00245 PLJPEGDecoder * m_pJPEGDecoder;
00246 PLPoint m_Resolution;
00247
00248 };
00249
00250 #endif
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278