Main Page Class Hierarchy Compound List File List Compound Members File Members

ColourSystem.h

Go to the documentation of this file.
00001 /*
00002 File: ColourSystem.h
00003 
00004 Function: Provides a class to help with colour space conversions to
00005 and from three-primary display devices.
00006 
00007 Author: Andrew Willmott
00008 
00009 Copyright: (c) 1999-2000, Andrew Willmott
00010 */
00011 
00012 #ifndef __ColourSystem__
00013 #define __ColourSystem__
00014 
00015 #include "Colour.h"
00016 #include "Geometry.h"
00017 #include "VecUtil.h"
00018 
00019  typedef Vec2f Chroma;
00020 
00021  class ColourSystem
00022 {
00023 public:
00024 ColourSystem(
00025 Chroma primary1,
00026 Chroma primary2,
00027 Chroma primary3,
00028 Chroma whitePoint,
00029 ClrReal whiteLum = 1.0
00030 );
00031 
00032 // transforming to and from CIE XYZ colour space.
00033 
00034  Colour GamutToXYZ(const Colour &csClr)
00036 { return(toXYZ * csClr); };
00037 Bool XYZIsOutOfGamut(const Colour &cieXYZ);
00041 Colour XYZToGamut(const Colour &cieXYZ);
00044 Colour XYZToGamutClip(const Colour &cieXYZ);
00046 
00047 Bool ChromaIsOutOfGamut(const Chroma &cieChroma);
00050 Colour ChromaToGamut(const Chroma &cieChroma);
00055  ClrReal Luminance(const Colour &csClr)
00057 { return(dot(toXYZ[1], csClr)); };
00058 
00059 
00060 // colour conversion matrices
00061  ClrMat toXYZ;
00062  ClrMat fromXYZ;
00063 
00064 // chromaticities of the three primaries & the chroma/luminance of the
00065 // white point
00066  Chroma prim0; 
00067  Chroma prim1; 
00068  Chroma prim2; 
00069  Chroma white;
00070  ClrReal whiteLum;;
00071 };
00072 
00073 // current colour system for display output. defaults to csEBU, but
00074 // might be necessary to set it to something more appropriate.
00075 
00076  extern ColourSystem &csDisplay;
00077 
00078 // chromaticities of standard illuminants
00079  extern const Chroma csIllumA; // Incandescent light
00080  extern const Chroma csIllumB; // Solar light
00081  extern const Chroma csIllumC; // For NTSC television
00082  extern const Chroma csIllumD55; // Photography
00083  extern const Chroma csIllumD65; // Overcast Daylight
00084  extern const Chroma csIllumD75;
00085  extern const Chroma csIllumE; // Uniform illuminant
00086 
00087 // luminances of standard illuminants, in candela/watt
00088 
00089  extern const ClrReal csMaxLum;
00090  extern const ClrReal csWhiteLum;
00091  extern const ClrReal csD65Lum;
00092  extern const ClrReal csALum;
00093  extern const ClrReal csBLum;
00094 
00095 
00096 // Colour systems!
00097  extern ColourSystem csNTSC;
00098  extern ColourSystem csPAL_SECAM;
00099  extern ColourSystem csEBU; // same as CCIR709
00100  extern ColourSystem csSMPTE;
00101  extern ColourSystem csShortPersistencePhosphors;
00102  extern ColourSystem csLongPersistencePhosphors;
00103  extern ColourSystem csDellPhosphors;
00104 
00105 #endif

Generated at Sat Aug 5 00:16:58 2000 for Graphics Class Library by doxygen 1.1.0 written by Dimitri van Heesch, © 1997-2000

AltStyle によって変換されたページ (->オリジナル) /