00001 /* 00002 * PROPRIETARY INFORMATION. This software is proprietary to 00003 * Side Effects Software Inc., and is not to be reproduced, 00004 * transmitted, or disclosed in any way without written permission. 00005 * 00006 * Produced by: 00007 * Mark Alexander 00008 * Side Effects Software Inc 00009 * 477 Richmond Street West 00010 * Toronto, Ontario 00011 * Canada M5V 3E7 00012 * 416-504-9876 00013 * 00014 * NAME: IMG_FileFilterFlip ( IMG Library, C++) 00015 * 00016 * COMMENTS: 00017 * 00018 * This is the base class for all filters that support IMG_File. 00019 * A filter transforms the image data in some way during the load/save 00020 * process. Some filters are read/write, while others only affect one. 00021 * 00022 */ 00023 #ifndef IMG_FILE_FILTER_H 00024 #define IMG_FILE_FILTER_H 00025 00026 #include "IMG_File.h" 00027 00028 00029 class IMG_API IMG_FileFilter : public IMG_File 00030 { 00031 public: 00032 IMG_FileFilter(IMG_File *file_to_filter); 00033 virtual ~IMG_FileFilter(); 00034 00035 // All filters are pass through. None of the image formats are. 00036 // 00037 virtual bool isPassThrough() const { return true; } 00038 virtual int isTopFirst() const { return myFileToFilter->isTopFirst(); } 00039 virtual int isLeftFirst() const { return myFileToFilter->isLeftFirst(); } 00040 00041 virtual IMG_File *getBaseFile() const { return myFileToFilter; } 00042 00043 virtual void randomReadAccessRequired(); 00044 00045 void setFileToFilter(IMG_File *file) { myFileToFilter = file; } 00046 00047 virtual void computeCommonData() 00048 { IMG_File::computeCommonData(); } 00049 00050 protected: 00051 // called when the user calls closeFile(). 00052 // 00053 virtual int finishFilter() { return 1; } 00054 00055 // Don't override these methods; override the read/writePlaneScanline() 00056 // methods instead. 00057 // 00058 virtual int readScanline(int scanline, void *data); 00059 virtual int writeScanline(int scanline, const void *data); 00060 00061 virtual void checkpoint(); 00062 virtual int closeFile(); 00063 00064 // Utility functions for filters. 00065 const IMG_Stat &getInputStat() const { return myFileToFilter->getStat(); } 00066 IMG_Stat &getInputStat() { return myFileToFilter->getStat(); } 00067 00068 const void * fetchScanline(int y, const IMG_Plane &pi); 00069 bool writeToScanline(int y, const void *data, 00070 const IMG_Plane &pi); 00071 00072 void *fetchWriteScanline(int y, const IMG_Plane &pi); 00073 00074 virtual void getAdditionalInfo(UT_String &text) 00075 { myFileToFilter->getAdditionalInfo(text); } 00076 00077 private: 00078 IMG_File *myFileToFilter; 00079 00080 }; 00081 00082 00083 00084 00085 00086 00087 00088 00089 00090 #endif
1.5.9