00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef MLN_FUN_META_SAT_HH
00027 # define MLN_FUN_META_SAT_HH
00028
00032
00033 # include <mln/value/hsl.hh>
00034 # include <mln/value/hsi.hh>
00035 # include <mln/fun/meta/impl.hh>
00036
00037 namespace mln
00038 {
00039
00040 namespace meta
00041 {
00042
00043 template <class H>
00044 struct sat : impl< sat<H> >
00045 {
00046 typedef H value;
00047 };
00048
00049 }
00050
00051
00052 template <class H, class S, class I>
00053 struct function< meta::sat< value::hsi_<H, S, I> > >
00054 : public Function_v2v<function< meta::sat < value::hsi_<H, S, I> > > >
00055 {
00056 typedef value::hsi_<H, S, I> value;
00057
00058 typedef H result;
00059 H read(const value& h);
00060
00061 typedef H& lresult;
00062 H& write(value& h);
00063 };
00064
00065
00066 template <class H, class S, class L>
00067 struct function< meta::sat< value::hsl_<H, S, L> > >
00068 : public Function_v2v<function< meta::sat < value::hsl_<H, S, L> > > >
00069 {
00070 typedef value::hsl_<H, S, L> value;
00071
00072 typedef H result;
00073 H read(const value& h);
00074
00075 typedef H& lresult;
00076 H& write(value& h);
00077 };
00078
00079
00080 # ifndef MLN_INCLUDE_ONLY
00081
00082 template <class H, class S, class I>
00083 inline
00084 H
00085 function< meta::sat< value::hsi_<H, S, I> > >::read(const value& h)
00086 {
00087 return h.sat();
00088 }
00089
00090 template <class H, class S, class I>
00091 inline
00092 H&
00093 function< meta::sat< value::hsi_<H, S, I> > >::write(value& h)
00094 {
00095 return h.sat();
00096 }
00097
00098
00099
00100 template <class H, class S, class L>
00101 inline
00102 H
00103 function< meta::sat< value::hsl_<H, S, L> > >::read(const value& h)
00104 {
00105 return h.sat();
00106 }
00107
00108 template <class H, class S, class L>
00109 inline
00110 H&
00111 function< meta::sat< value::hsl_<H, S, L> > >::write(value& h)
00112 {
00113 return h.sat();
00114 }
00115
00116
00117 # endif // ! MLN_INCLUDE_ONLY
00118
00119
00120 }
00121
00122 #endif // ! MLN_FUN_META_SAT_HH