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
00027
00028 #ifndef OLENA_CORE_IMAGE2D_SIZE_HH
00029 # define OLENA_CORE_IMAGE2D_SIZE_HH
00030
00031 # include <mlc/contract.hh>
00032 # include <oln/core/abstract/image_size.hh>
00033 # include <oln/core/coord.hh>
00034
00035 namespace oln {
00036
00037 struct image2d_size;
00038
00044 template<>
00045 struct image_size_traits<image2d_size>
00046 {
00047 enum { dim = 2 };
00048 };
00049
00050
00056 struct image2d_size : public abstract::image_size<image2d_size >
00057 {
00070 image2d_size(coord nrows, coord ncols, coord border)
00071 {
00072 nth(0) = nrows;
00073 nth(1) = ncols;
00074 border_ = border;
00075 }
00076
00077 image2d_size()
00078 {}
00079
00081
00082 coord
00083 nrows() const
00084 {
00085 invariant(nth(0) > 0);
00086 return nth(0);
00087 }
00088
00090
00091 coord&
00092 nrows()
00093 {
00094 invariant(nth(0) > 0);
00095 return nth(0);
00096 }
00097
00099
00100 coord
00101 ncols() const
00102 {
00103 invariant(nth(1) > 0);
00104 return nth(1);
00105 }
00106
00108
00109 coord&
00110 ncols()
00111 {
00112 invariant(nth(1) > 0);
00113 return nth(1);
00114 }
00115
00116 static std::string
00117 name()
00118 {
00119 return "image2d_size";
00120 }
00121
00122 };
00123
00124 }
00125
00126
00127
00128 #endif // ! OLENA_CORE_IMAGE2D_SIZE_HH