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_IO_PNMS_LOAD_HH
00027 # define MLN_IO_PNMS_LOAD_HH
00028
00033
00034 # include <iostream>
00035 # include <fstream>
00036 # include <string>
00037
00038 # include <mln/core/image/image2d.hh>
00039 # include <mln/core/image/image3d.hh>
00040 # include <mln/value/int_u8.hh>
00041 # include <mln/io/pnm/load.hh>
00042 # include <mln/io/pbm/load.hh>
00043 # include <mln/make/image3d.hh>
00044
00045
00046 namespace mln
00047 {
00048
00049 namespace io
00050 {
00051
00052 namespace pnms
00053 {
00054
00061
00062 template <typename V>
00063 void load(char type,
00064 image3d<V>& ima,
00065 const util::array<std::string>& filenames);
00066
00068
00069 void load(char type,
00070 image3d<bool>& ima,
00071 const util::array<std::string>& filenames);
00072
00073
00074 # ifndef MLN_INCLUDE_ONLY
00075
00076
00077 template <typename V>
00078 inline
00079 void load(char type,
00080 image3d<V>& ima,
00081 const util::array<std::string>& filenames)
00082 {
00083 trace::entering("mln::io::pnms::load");
00084 mln_precondition(!filenames.is_empty());
00085
00086 util::array<image2d<V> > slices;
00087
00088 for (unsigned i = 0; i < filenames.nelements(); ++i)
00089 {
00090 image2d<V> tmp;
00091 io::pnm::load<image2d<V> >(type, tmp, filenames[i]);
00092 slices.append(tmp);
00093 }
00094
00095 ima = make::image3d(slices);
00096
00097 trace::exiting("mln::io::pnms::load");
00098 }
00099
00100
00101 inline
00102 void load(char type,
00103 image3d<bool>& ima,
00104 const util::array<std::string>& filenames)
00105 {
00106 trace::entering("mln::io::pnms::load");
00107 mln_precondition(!filenames.is_empty());
00108 (void) type;
00109
00110 util::array< image2d<bool> > slices;
00111
00112 for (unsigned i = 0; i < filenames.nelements(); ++i)
00113 {
00114 image2d<bool> tmp;
00115 io::pbm::load(tmp, filenames[i]);
00116 slices.append(tmp);
00117 }
00118
00119 ima = make::image3d(slices);
00120
00121 trace::exiting("mln::io::pnms::load");
00122 }
00123
00124
00125 # endif // ! MLN_INCLUDE_ONLY
00126
00127 }
00128
00129 }
00130
00131 }
00132
00133
00134 #endif // ! MLN_IO_PNMS_LOAD_HH