Adobe.com
Contents Suites Classes Class Index Member Index

IAIColorSpace.hpp

Go to the documentation of this file.
00001 /*
00002  *        Name: IAIColorSpace.hpp
00003  *   $Revision: 1 $
00004  *      Author: Simon Chen
00005  *        Date:
00006  *     Purpose: C++ interface class for the ai::ColorSpace and ai::ColorSpaceList objects.
00007  *
00008  * ADOBE SYSTEMS INCORPORATED
00009  * Copyright 2005-2007 Adobe Systems Incorporated.
00010  * All rights reserved.
00011  *
00012  * NOTICE:  Adobe permits you to use, modify, and distribute this file 
00013  * in accordance with the terms of the Adobe license agreement 
00014  * accompanying it. If you have received this file from a source other 
00015  * than Adobe, then your use, modification, or distribution of it 
00016  * requires the prior written permission of Adobe.
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         /* Color Space Methods */
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: // internal core use only
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         /* Color Space List Methods */
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 } // end of namespace ai
00322 
00323 #endif  // _IAICOLORSPACE_H_


Contents Suites Classes Class Index Member Index
Adobe Solutions Network
 
Copyright © 2016 Adobe Systems Incorporated. All rights reserved.
Terms of Use Online Privacy Policy Adobe and accessibility Avoid software piracy Permissions and Trademarks