HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
IMG_FileFilterLUT.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: IMG_FileFilterLUT ( IMG Library, C++)
7  *
8  * COMMENTS:
9  *
10  * Applies a LUT and/or gamma to the scanlines.
11  */
12 #ifndef IMG_FILE_FILTER_LUT_H
13 #define IMG_FILE_FILTER_LUT_H
14 
15 #include <SYS/SYS_Types.h>
16 #include <UT/UT_BitArray.h>
17 #include <UT/UT_StringHolder.h>
18 #include <UT/UT_ValArray.h>
19 #include <PXL/PXL_Fill.h>
20 
21 #include "IMG_FileFilter.h"
22 
23 class PXL_Raster;
24 class PXL_Lookup;
25 
27 {
28 public:
29  IMG_FileFilterLUT(IMG_File *file_to_filter);
30  virtual ~IMG_FileFilterLUT();
31 
32  virtual const char *className() const { return "IMG_FileFilterLUT"; }
33 
34  void init(const char *lutname, const char *lut_scope,
35  fpreal gamma, const char *gamma_scope,
36  bool is_ocio, const char *ocio_colorspace,
37  const char *ocio_looks);
38 
39  virtual const void *readPlaneScanline(int y, const IMG_Plane &pi);
40 
41  virtual int writePlaneScanline(const void *data, int y,
42  const IMG_Plane &pi);
43 
44  virtual void computeCommonData();
45 
46 private:
47  void applyGammaLUT(void *dest, const void *sdata,
48  const IMG_Plane &pi, bool dogamma, bool dolut);
49  void applyOCIO(void *dest, const void *sdata,
50  const IMG_Plane &pi,
51  const UT_StringHolder &src_colorspace,
52  const UT_StringHolder &dest_colorspace,
53  const UT_StringHolder &looks);
54  bool myIsOCIO;
55  PXL_Lookup *myLookup;
56  UT_StringHolder myLUTScopeString;
57  UT_StringHolder myOCIOColorspaceA; // A,B's meaning depends on read/write.
58  UT_StringHolder myOCIOColorspaceB;
59  UT_StringHolder myOCIOLooks;
60  UT_BitArray myLUTScope;
61 
62  fpreal myGamma;
63  UT_StringHolder myGammaScopeString;
64  UT_BitArray myGammaScope;
65 
66  UT_ValArray<PXL_Raster *> myScanRaster;
67 
68  // We cache this so we can share the gamma table between
69  // invocations.
70  PXL_FillParms myFill;
71 };
72 
73 
74 #endif
virtual void computeCommonData()
virtual int writePlaneScanline(const void *data, int y, const IMG_Plane &pi)
GLint y
Definition: glcorearb.h:102
Describes the format and layout of a single plane in an image The plane specifies the format and name...
Definition: IMG_Plane.h:44
#define IMG_API
Definition: IMG_API.h:10
Generic interface for reading and writing image files. This class handles the reading and writing of ...
Definition: IMG_File.h:54
GLboolean * data
Definition: glcorearb.h:130
double fpreal
Definition: SYS_Types.h:270
virtual const char * className() const
virtual const void * readPlaneScanline(int y, const IMG_Plane &pi)