00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef IMG_FILE_FILTER_WINDOW_H
00022 #define IMG_FILE_FILTER_WINDOW_H
00023
00024 class PXL_FillParms;
00025
00026 #include <UT/UT_Rect.h>
00027 #include <UT/UT_IntArray.h>
00028 #include <UT/UT_PtrArray.h>
00029
00030 #include "IMG_FileFilter.h"
00031
00032 class IMG_API IMG_FileFilterWindow : public IMG_FileFilter
00033 {
00034 public:
00035 IMG_FileFilterWindow(IMG_File *file_to_filter);
00036 virtual ~IMG_FileFilterWindow();
00037
00038 virtual const char *className() const { return "IMG_FileFilterWindow"; }
00039
00040 void initWindow(const UT_DimRect &user_area);
00041
00042 virtual const void *readPlaneScanline(int y, const IMG_Plane &pi);
00043
00044 virtual int writePlaneScanline(const void *data, int y,
00045 const IMG_Plane &pi);
00046
00047 virtual void computeCommonData();
00048 private:
00049
00050 void fillBG(void *buffer, const IMG_Plane &pi,
00051 PXL_FillParms *parms);
00052 void fillScan(void *buffer, const void *input,
00053 const IMG_Plane &pi,
00054 IMG_Stat &stat, IMG_Stat &istat);
00055 void clearScan(void *buffer, const IMG_Plane &pi);
00056
00057 virtual void finishedScanline(int scan);
00058
00059 UT_DimRect myInWindow;
00060 UT_DimRect myOutWindow;
00061 bool myDisjointFlag;
00062 fpreal myBGColor[4];
00063 bool myStreakFlag;
00064
00065 UT_PtrArray<PXL_FillParms *> myPlaneFill;
00066 UT_PtrArray<PXL_FillParms *> myPlaneFillLeft;
00067 UT_PtrArray<PXL_FillParms *> myPlaneFillRight;
00068 UT_IntArray myPlaneScanline;
00069 };
00070
00071 #endif