DocumentationOverviewBuilding ASL Documentation Library Wiki Docs Indices Browse Perforce More InfoRelease NotesWiki Site Search License Success Stories Contributors MediaDownloadPerforce Depots SupportASL SourceForge HomeMailing Lists Discussion Forums Report Bugs Suggest Features Contribute to ASL RSSShort-text newsFull-text news File releases Other Adobe ProjectsAdobe AirAdobe GIL Adobe Labs Adobe Media Gallery Adobe XMP Tamarin project (Mozilla Foundation) Other ResourcesBoostRIAForge SGI STL |
dng_hue_sat_map.h00001 /*****************************************************************************/ 00002 // Copyright 2007 Adobe Systems Incorporated 00003 // All Rights Reserved. 00004 // 00005 // NOTICE: Adobe permits you to use, modify, and distribute this file in 00006 // accordance with the terms of the Adobe license agreement accompanying it. 00007 /*****************************************************************************/ 00008 00009 /* $Id: //mondo/workarea/stern/camera_raw/dng_sdk/source/dng_hue_sat_map.h#5 $ */ 00010 /* $DateTime: 2007/12/19 13:02:53 $ */ 00011 /* $Change: 407440 $ */ 00012 /* $Author: stern $ */ 00013 00014 /*****************************************************************************/ 00015 00016 #ifndef __dng_hue_sat_map__ 00017 #define __dng_hue_sat_map__ 00018 00019 /*****************************************************************************/ 00020 00021 #include "dng_classes.h" 00022 #include "dng_memory.h" 00023 #include "dng_types.h" 00024 00025 /*****************************************************************************/ 00026 00027 class dng_hue_sat_map 00028 { 00029 00030 public: 00031 00032 struct HSBModify 00033 { 00034 real32 fHueShift; 00035 real32 fSatScale; 00036 real32 fValScale; 00037 }; 00038 00039 private: 00040 00041 uint32 fHueDivisions; 00042 uint32 fSatDivisions; 00043 uint32 fValDivisions; 00044 00045 uint32 fHueStep; 00046 uint32 fValStep; 00047 00048 dng_memory_data fDeltas; 00049 00050 public: 00051 00052 dng_hue_sat_map (); 00053 00054 dng_hue_sat_map (const dng_hue_sat_map &src); 00055 00056 dng_hue_sat_map & operator= (const dng_hue_sat_map &rhs); 00057 00058 virtual ~dng_hue_sat_map (); 00059 00060 bool IsNull () const 00061 { 00062 return !IsValid (); 00063 } 00064 00065 bool IsValid () const 00066 { 00067 00068 return fHueDivisions > 0 && 00069 fSatDivisions > 1 && 00070 fValDivisions > 0 && 00071 fDeltas.Buffer (); 00072 00073 } 00074 00075 void SetInvalid () 00076 { 00077 00078 fHueDivisions = 0; 00079 fSatDivisions = 0; 00080 fValDivisions = 0; 00081 00082 fHueStep = 0; 00083 fValStep = 0; 00084 00085 fDeltas.Clear (); 00086 00087 } 00088 00089 void GetDivisions (uint32 &hueDivisions, 00090 uint32 &satDivisions, 00091 uint32 &valDivisions) const 00092 { 00093 hueDivisions = fHueDivisions; 00094 satDivisions = fSatDivisions; 00095 valDivisions = fValDivisions; 00096 } 00097 00098 void SetDivisions (uint32 hueDivisions, 00099 uint32 satDivisions, 00100 uint32 valDivisions = 1); 00101 00102 void GetDelta (uint32 hueDiv, 00103 uint32 satDiv, 00104 uint32 valDiv, 00105 HSBModify &modify) const; 00106 00107 void SetDelta (uint32 hueDiv, 00108 uint32 satDiv, 00109 uint32 valDiv, 00110 const HSBModify &modify); 00111 00112 uint32 DeltasCount () const 00113 { 00114 return fValDivisions * 00115 fHueDivisions * 00116 fSatDivisions; 00117 } 00118 00119 HSBModify *GetDeltas () 00120 { 00121 return (HSBModify *) fDeltas.Buffer_real32 (); 00122 } 00123 00124 const HSBModify *GetDeltas () const 00125 { 00126 return (HSBModify *) fDeltas.Buffer_real32 (); 00127 } 00128 00129 bool dng_hue_sat_map::operator== (const dng_hue_sat_map &rhs) const; 00130 00131 static dng_hue_sat_map * Interpolate (const dng_hue_sat_map &map1, 00132 const dng_hue_sat_map &map2, 00133 real64 weight1); 00134 00135 }; 00136 00137 /*****************************************************************************/ 00138 00139 #endif 00140 00141 /*****************************************************************************/ |