00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100 #ifndef INC_EXJPEG
00101 #define INC_EXJPEG
00102
00103 #include "bitfilt.h"
00104 #include "jpglib_namespace.h"
00105
00106
00107 class CXaraFileRecord;
00108
00109 typedef UINT32 JPEG_QUALITY;
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120 class JPEGExportOptions : public BitmapExportOptions
00121 {
00122
00123 CC_DECLARE_DYNCREATE(JPEGExportOptions);
00124 public:
00125 JPEGExportOptions();
00126 JPEGExportOptions(const FilterType FilterID, const StringBase* pFilterName);
00127
00128 virtual BOOL RetrieveDefaults();
00129 virtual BOOL SetAsDefaults() const;
00130
00131
00132 virtual BOOL Write(CXaraFileRecord* pRec);
00133 virtual BOOL Read(CXaraFileRecord* pRec);
00134
00135 virtual BOOL GetSupportsImageMap() { return TRUE; }
00136
00137
00138 BOOL DoAsProgressive() const;
00139 BOOL SetMakeProgressive(BOOL bProgressive);
00140
00141 JPEG_QUALITY GetQuality() const;
00142 BOOL SetQuality(const JPEG_QUALITY& Quality);
00143
00144 libJPEG::J_DCT_METHOD GetDCTMethod() const;
00145 BOOL SetDCTMethod(const libJPEG::J_DCT_METHOD& DCTMethod);
00146
00147 libJPEG::J_COLOR_SPACE GetColourModel() const;
00148 UINT32 GetColourComponentCount() const;
00149 BOOL SetColourModel(const libJPEG::J_COLOR_SPACE& ColourModel);
00150
00151 static void SetKernelBitmap (KernelBitmap* pBitmap) { pKernelBitmap = pBitmap; }
00152 static KernelBitmap* GetKernelBitmap () { return pKernelBitmap; }
00153
00154 static void SetJPEGPresentAndSelected(BOOL Value) { m_JPEGPresentAndSelected = Value; }
00155 static BOOL GetJPEGPresentAndSelected() { return m_JPEGPresentAndSelected; }
00156
00157
00158 virtual BOOL CopyFrom(BitmapExportOptions *pOther);
00159
00160
00161 virtual BOOL FileTypeChangeCopyFrom(BitmapExportOptions *pOther);
00162
00163
00164
00165 BOOL m_bJPEGPresentAndSelected;
00166
00167 virtual UINT32 GetFilterNameStrID() { return _R(IDS_JPG_EXP_FILTERNAME);}
00168
00169 protected:
00170
00171 JPEG_QUALITY m_Quality;
00172 BOOL m_DoAsProgressive;
00173 libJPEG::J_DCT_METHOD m_DCTMethod;
00174 libJPEG::J_COLOR_SPACE m_ColourModel;
00175 UINT32 m_ColourComponents;
00176
00177 static KernelBitmap* pKernelBitmap;
00178 static BOOL m_JPEGPresentAndSelected ;
00179
00180 };
00181
00182 class JPEGErrorManager;
00183 class JPEGDataDestination;
00184 class CCLexFile;
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196 class JPEGExportFilter : public BaseBitmapFilter
00197 {
00198
00199 CC_DECLARE_DYNAMIC(JPEGExportFilter);
00200
00201 public:
00202 JPEGExportFilter();
00203 ~JPEGExportFilter();
00204
00205
00206 virtual BOOL Init();
00207
00208 INT32 HowCompatible(PathName& Filename, ADDR HeaderStart, UINT32 HeaderSize,
00209 UINT32 FileSize) {return 0;}
00210
00211 virtual BOOL IsThisBppOk(UINT32 Bpp);
00212
00213 virtual BOOL WriteBitmapToFile(KernelBitmap* pKernelBitmap, double Dpi);
00214 virtual BOOL WriteBitmapToFile(KernelBitmap* pKernelBitmap, BaseCamelotFilter *pFilter,
00215 CCLexFile *pFile, INT32 Compression);
00216
00217 BOOL WriteBitmapSource(BitmapSource *Source, UINT32 Height, BaseCamelotFilter* pThisFilter, CCLexFile* pCCFile);
00218
00219 BOOL DoExportBitmapWithOptions(Operation* pOp, CCLexFile* pFile, PathName* pPath,
00220 KernelBitmap* pBitmap, BitmapExportOptions *pOptions);
00221
00222 virtual BitmapExportOptions* CreateExportOptions() const;
00223 virtual void PostGetExportOptions(BitmapExportOptions* pOptions);
00224
00225 protected:
00226
00227 virtual BOOL SetExportHint(Document* pDoc);
00228
00229 virtual BOOL GetRenderBottomToTop();
00230
00231 virtual BOOL GetExportOptions(BitmapExportOptions* pOptions);
00232
00233
00234
00235 virtual BOOL PrepareForOperation();
00236 virtual BOOL PrepareToExport(Spread *pSpread, UINT32 Depth, double DPI,
00237 SelectionType Selection, UINT32 Dither);
00238 BOOL InternalPrepareToExport();
00239 BOOL EndWriteToFile(void);
00240
00241 virtual BOOL WriteFileHeader(void);
00242 virtual BOOL WriteFrame(void);
00243 virtual BOOL WritePostFrame(void);
00244
00245 virtual void CleanUpAfterExport();
00246
00247
00248 BOOL DoFilter(KernelBitmap* pKernelBitmap, CCLexFile *pFile);
00249
00250 BOOL WriteRawBitmap(const ADDR& pBitmapData,
00251 const BMP_SIZE& Width, const BMP_SIZE& Height,
00252 const BMP_DEPTH& Depth,
00253 DIBConvert* pConverter);
00254
00255 BOOL InitErrorHandler();
00256 BOOL InitFileHandler();
00257
00258 Filter* GetFilterForUpdate() const;
00259 BOOL SetFilterForUpdate(Filter* const pFilterForUpdate);
00260
00261 BOOL GetPostOperation() const {return m_PostOperation; }
00262 void SetPostOperation(BOOL Value) { m_PostOperation = Value; }
00263
00264
00265 protected:
00266
00267
00268 BOOL m_bOldReportErrors;
00269 BOOL m_bOldThrowExceptions;
00270 BOOL m_PostOperation;
00271
00272 Filter* m_pFilterForUpdate;
00273
00274
00275 struct libJPEG::jpeg_compress_struct m_cinfo;
00276
00277 JPEGErrorManager* m_pErrorHandler;
00278 JPEGDataDestination* m_pDestinationHandler;
00279 };
00280
00281
00282
00283 #endif // INC_EXJPEG