00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef IMG_FILE_FILTER_LUT_H
00021 #define IMG_FILE_FILTER_LUT_H
00022
00023 #include <SYS/SYS_Types.h>
00024 #include <UT/UT_BitArray.h>
00025 #include <UT/UT_PtrArray.h>
00026
00027 #include "IMG_FileFilter.h"
00028
00029 class PXL_Raster;
00030 class PXL_Lookup;
00031
00032 class IMG_API IMG_FileFilterLUT : public IMG_FileFilter
00033 {
00034 public:
00035 IMG_FileFilterLUT(IMG_File *file_to_filter);
00036 virtual ~IMG_FileFilterLUT();
00037
00038 virtual const char *className() const { return "IMG_FileFilterLUT"; }
00039
00040 void init(const char *lutname, const char *lut_scope,
00041 fpreal gamma, const char *gamma_scope);
00042
00043 virtual const void *readPlaneScanline(int y, const IMG_Plane &pi);
00044
00045 virtual int writePlaneScanline(const void *data, int y,
00046 const IMG_Plane &pi);
00047
00048 virtual void computeCommonData();
00049
00050 private:
00051 void applyGammaLUT(void *dest, const void *sdata,
00052 const IMG_Plane &pi, bool dogamma, bool dolut);
00053 PXL_Lookup *myLookup;
00054 UT_String myLUTScopeString;
00055 UT_BitArray myLUTScope;
00056
00057 fpreal myGamma;
00058 UT_String myGammaScopeString;
00059 UT_BitArray myGammaScope;
00060
00061 UT_PtrArray<PXL_Raster *> myScanRaster;
00062 };
00063
00064
00065 #endif