00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _IAICOLORSPACE_H_
00022 #define _IAICOLORSPACE_H_
00023
00024 #include "AITypes.h"
00025 #include "AIColor.h"
00026 #include "IAIUnicodeString.h"
00027
00033 #define kColorSpaceBadIndex 'CS!I'
00034
00037 #define kColorSpaceInvalid '!VAL'
00038
00039 class CAIColorSpaceImpl;
00040 class CAIColorSpaceListImpl;
00041
00042 namespace ai {
00043
00044 class ColorSpace;
00045 class ColorSpaceList;
00046
00048 class ColorSpace {
00049 friend class ColorSpaceList;
00050
00051 public:
00052 enum Family {
00053 kAIColorSpaceFamilyUnknown,
00054 kAIColorSpaceFamilyGray,
00055 kAIColorSpaceFamilyRGB,
00056 kAIColorSpaceFamilyLab,
00057 kAIColorSpaceFamilyCMYK,
00058 kAIColorSpaceFamilySeparation,
00059 kAIColorSpaceFamilyNChannel,
00060 kAIColorSpaceFamilyIndexed
00061 };
00062
00063 public:
00064
00066
00068
00069 explicit ColorSpace (void) AINOTHROW;
00075 explicit ColorSpace (ai::ColorSpace::Family family, bool hasAlpha = false);
00085 explicit ColorSpace (int separationNum, bool hasAlpha = false);
00092 explicit ColorSpace (const AICustomColorHandle customColor, bool hasAlpha = false);
00105 explicit ColorSpace (const ai::ColorSpaceList &csList, bool hasAlpha = false, bool promoteToProcess = false);
00116 explicit ColorSpace (const ai::ColorSpace &baseCs, int numComponents, int numEntries, const ASUInt8 *lookup);
00123 explicit ColorSpace (const ai::ColorSpace &baseCs, bool hasAlpha);
00128 ColorSpace (const ai::ColorSpace &cs);
00130 ~ColorSpace ();
00132
00134 ai::ColorSpace& operator= (const ai::ColorSpace& rhs);
00135
00137 bool operator== (const ai::ColorSpace& rhs) const;
00138
00140 bool operator!= (const ai::ColorSpace& rhs) const;
00141
00142
00143
00147 bool IsValid(void) const;
00151 ai::ColorSpace::Family GetFamily(void) const;
00157 bool HasAlpha(void) const;
00163 int NumComponents(void) const;
00169 int NumColorComponents(void) const;
00176 int NumSpotComponents(void) const;
00181 int NumProcessComponents(void) const;
00187 ai::ColorSpace BaseColorSpace(void) const;
00193 int IndexedNumComponents(void) const;
00199 int IndexedNumEntries(void) const;
00204 const ASUInt8* IndexedTable(void) const;
00209 const ASUInt8* IndexedColors(ASUInt8 index) const;
00215 const AIFloat* SeparationAltColors(void) const;
00220 ai::ColorSpaceList GetColorSpaceList(void) const;
00229 ai::UnicodeString NthColorant(ai::int32 n) const;
00235 bool HasFullSetOfProcessComponents(void) const;
00236
00237 public:
00238 void deleteImpl(void);
00239 const CAIColorSpaceImpl *getImpl(void) const;
00240 explicit ColorSpace (CAIColorSpaceImpl *impl);
00241
00242 private:
00243 CAIColorSpaceImpl *fImpl;
00244 };
00245
00248 class ColorSpaceList {
00249 friend class ColorSpace;
00250
00251 public:
00252
00254
00256
00261 explicit ColorSpaceList (void) AINOTHROW;
00266 explicit ColorSpaceList (const ai::ColorSpace& cs);
00271 ColorSpaceList (const ai::ColorSpaceList &csList);
00273 ~ColorSpaceList ();
00275
00277 ai::ColorSpaceList& operator= (const ai::ColorSpaceList& rhs);
00278
00279
00280
00284 bool IsValid(void) const;
00289 void AddColorSpace(const ai::ColorSpace &cs);
00293 int NumColorSpaces(void) const;
00299 ai::ColorSpace NthColorSpace(int n) const;
00311 void Normalize(short docColorModel, bool convertGrayToFullProcess = false);
00312
00313 public:
00315 void deleteImpl(void);
00316
00317 private:
00318 CAIColorSpaceListImpl *fImpl;
00319 };
00320
00321 }
00322
00323 #endif // _IAICOLORSPACE_H_