| /*****************************************************************************/ |
| // Copyright 2006 Adobe Systems Incorporated |
| // All Rights Reserved. |
| // |
| // NOTICE: Adobe permits you to use, modify, and distribute this file in |
| // accordance with the terms of the Adobe license agreement accompanying it. |
| /*****************************************************************************/ |
| |
| /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_xy_coord.h#2 $ */ |
| /* $DateTime: 2012/07/31 22:04:34 $ */ |
| /* $Change: 840853 $ */ |
| /* $Author: tknoll $ */ |
| |
| /** \file |
| * Representation of colors in xy and XYZ coordinates. |
| */ |
| |
| /*****************************************************************************/ |
| |
| #ifndef __dng_xy_coord__ |
| #define __dng_xy_coord__ |
| |
| /*****************************************************************************/ |
| |
| #include "dng_classes.h" |
| #include "dng_types.h" |
| |
| /*****************************************************************************/ |
| |
| class dng_xy_coord |
| { |
| |
| public: |
| |
| real64 x; |
| real64 y; |
| |
| public: |
| |
| dng_xy_coord () |
| : x (0.0) |
| , y (0.0) |
| { |
| } |
| |
| dng_xy_coord (real64 xx, real64 yy) |
| : x (xx) |
| , y (yy) |
| { |
| } |
| |
| void Clear () |
| { |
| x = 0.0; |
| y = 0.0; |
| } |
| |
| bool IsValid () const |
| { |
| return x > 0.0 && |
| y > 0.0; |
| } |
| |
| bool NotValid () const |
| { |
| return !IsValid (); |
| } |
| |
| bool operator== (const dng_xy_coord &coord) const |
| { |
| return coord.x == x && |
| coord.y == y; |
| } |
| |
| bool operator!= (const dng_xy_coord &coord) const |
| { |
| return !(*this == coord); |
| } |
| |
| }; |
| |
| /*****************************************************************************/ |
| |
| inline dng_xy_coord operator+ (const dng_xy_coord &A, |
| const dng_xy_coord &B) |
| { |
| |
| dng_xy_coord C; |
| |
| C.x = A.x + B.x; |
| C.y = A.y + B.y; |
| |
| return C; |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline dng_xy_coord operator- (const dng_xy_coord &A, |
| const dng_xy_coord &B) |
| { |
| |
| dng_xy_coord C; |
| |
| C.x = A.x - B.x; |
| C.y = A.y - B.y; |
| |
| return C; |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| inline dng_xy_coord operator* (real64 scale, |
| const dng_xy_coord &A) |
| { |
| |
| dng_xy_coord B; |
| |
| B.x = A.x * scale; |
| B.y = A.y * scale; |
| |
| return B; |
| |
| } |
| |
| /******************************************************************************/ |
| |
| inline real64 operator* (const dng_xy_coord &A, |
| const dng_xy_coord &B) |
| { |
| |
| return A.x * B.x + |
| A.y * B.y; |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| // Standard xy coordinate constants. |
| |
| inline dng_xy_coord StdA_xy_coord () |
| { |
| return dng_xy_coord (0.4476, 0.4074); |
| } |
| |
| inline dng_xy_coord D50_xy_coord () |
| { |
| return dng_xy_coord (0.3457, 0.3585); |
| } |
| |
| inline dng_xy_coord D55_xy_coord () |
| { |
| return dng_xy_coord (0.3324, 0.3474); |
| } |
| |
| inline dng_xy_coord D65_xy_coord () |
| { |
| return dng_xy_coord (0.3127, 0.3290); |
| } |
| |
| inline dng_xy_coord D75_xy_coord () |
| { |
| return dng_xy_coord (0.2990, 0.3149); |
| } |
| |
| /*****************************************************************************/ |
| |
| // Convert between xy coordinates and XYZ coordinates. |
| |
| dng_xy_coord XYZtoXY (const dng_vector_3 &coord); |
| |
| dng_vector_3 XYtoXYZ (const dng_xy_coord &coord); |
| |
| /*****************************************************************************/ |
| |
| // Returns the ICC XYZ profile connection space white point. |
| |
| dng_xy_coord PCStoXY (); |
| |
| dng_vector_3 PCStoXYZ (); |
| |
| /*****************************************************************************/ |
| |
| #endif |
| |
| /*****************************************************************************/ |