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_IMAGE3D_SIZE_HH
00029 # define OLENA_CORE_IMAGE3D_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 image3d_size;
00038
00043 template<>
00044 struct image_size_traits<image3d_size>
00045 {
00046 enum { dim = 3 };
00047 };
00048
00054 struct image3d_size : public abstract::image_size<image3d_size >
00055 {
00056
00057 public:
00058
00075 image3d_size(coord nslices, coord nrows, coord ncols, coord border)
00076 {
00077 nth(0) = nslices;
00078 nth(1) = nrows;
00079 nth(2) = ncols;
00080 border_ = border;
00081 }
00082
00083 image3d_size()
00084 {}
00085
00087
00088 coord
00089 nslices() const
00090 {
00091 invariant(nth(0) > 0);
00092 return nth(0);
00093 }
00094
00096
00097 coord&
00098 nslices()
00099 {
00100 invariant(nth(0) > 0);
00101 return nth(0);
00102 }
00103
00105
00106 coord
00107 nrows() const
00108 {
00109 invariant(nth(1) > 0);
00110 return nth(1);
00111 }
00112
00114
00115 coord&
00116 nrows()
00117 {
00118 invariant(nth(1) > 0);
00119 return nth(1);
00120 }
00121
00123
00124 coord
00125 ncols() const
00126 {
00127 invariant(nth(2) > 0);
00128 return nth(2);
00129 }
00130
00132
00133 coord&
00134 ncols()
00135 {
00136 invariant(nth(2) > 0);
00137 return nth(2);
00138 }
00139
00140 static std::string
00141 name()
00142 {
00143 return "image3d_size";
00144 }
00145
00146 };
00147
00148 }
00149
00150 #endif // ! OLENA_CORE_IMAGE3D_SIZE_HH