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 * Read/Write from a memory buffer. 00019 * Supports vertical and horizontal flips, as well as flopping (90' rot). 00020 */ 00021 #ifndef IMG_FILE_FILTER_FLIP_H 00022 #define IMG_FILE_FILTER_FLIP_H 00023 00024 class PXL_Raster; 00025 00026 #include <UT/UT_BitArray.h> 00027 #include <UT/UT_PtrArray.h> 00028 00029 #include "IMG_FileFilter.h" 00030 00031 class IMG_API IMG_FileFilterFlip : public IMG_FileFilter 00032 { 00033 public: 00034 IMG_FileFilterFlip(IMG_File *file_to_filter); 00035 virtual ~IMG_FileFilterFlip(); 00036 00037 virtual const char *className() const { return "IMG_FileFilterFlip"; } 00038 00039 void init(bool flipx, bool flipy, bool flop); 00040 00041 virtual const void *readPlaneScanline(int y, const IMG_Plane &pi); 00042 00043 virtual int writePlaneScanline(const void *data, int y, 00044 const IMG_Plane &pi); 00045 00046 virtual int isTopFirst() const; 00047 virtual void computeCommonData(); 00048 00049 private: 00050 00051 const void *extractScanline(int y, const PXL_Raster *p); 00052 bool fillRasters(); 00053 virtual void finishedScanline(int scan); 00054 00055 void flipHorizontal(void *dest, const void *source, 00056 const IMG_Plane &pi); 00057 00058 bool myXFlip; 00059 bool myYFlip; 00060 bool myFlop; 00061 bool myUseRasters; 00062 bool myRastersFilled; 00063 00064 UT_PtrArray<PXL_Raster *> myPlaneImage; 00065 void *myRasterBuffer; 00066 }; 00067 00068 #endif
1.5.9