2 * This program is free software: you can redistribute it and/or modify
3 * it under the terms of the GNU Lesser General Public License as
4 * published by the Free Software Foundation, either version 3 of the
5 * License, or (at your option) any later version.
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
12 * You should have received a copy of the GNU General Public License
13 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 * @author David Coeurjolly (\c david.coeurjolly@liris.cnrs.fr )
20 * Laboratoire d'InfoRmatique en Image et Systèmes d'information - LIRIS (CNRS, UMR 5205), CNRS, France
24 * Implementation of inline methods defined in RawWriter.h
26 * This file is part of the DGtal library.
30 //////////////////////////////////////////////////////////////////////////////
34 //////////////////////////////////////////////////////////////////////////////
36 ///////////////////////////////////////////////////////////////////////////////
37 // IMPLEMENTATION of inline methods.
38 ///////////////////////////////////////////////////////////////////////////////
40 template <typename I,typename C>
41 template <typename Word>
43 DGtal::RawWriter<I, C>::exportRaw(const std::string& filename, const I& aImage, const Functor& aFunctor)
45 BOOST_CONCEPT_ASSERT(( DGtal::concepts::CUnaryFunctor<Functor, Value, Word> ));
48 typename I::Domain domain = aImage.domain();
49 typename I::Value val;
51 out.open(filename.c_str(), std::ios_base::binary);
54 for (typename I::Domain::ConstIterator it=domain.begin(), itend=domain.end(); it!=itend; ++it)
57 raw_writer_write_word<Word>(out, aFunctor(val));
62 ///@todo catch IOerror exception
66 template <typename I,typename C>
68 DGtal::RawWriter<I, C>::exportRaw8(const std::string& filename, const I& aImage, const Functor& aFunctor)
70 return exportRaw<uint8_t>(filename, aImage, aFunctor);
73 template <typename I,typename C>
75 DGtal::RawWriter<I, C>::exportRaw16(const std::string& filename, const I& aImage, const Functor& aFunctor)
77 return exportRaw<uint16_t>(filename, aImage, aFunctor);
80 template <typename I,typename C>
82 DGtal::RawWriter<I, C>::exportRaw32(const std::string& filename, const I& aImage, const Functor& aFunctor)
84 return exportRaw<uint32_t>(filename, aImage, aFunctor);
93 raw_writer_write_word<uint8_t>(std::ostream& outs, uint8_t value)
101 template <typename Word>
103 DGtal::raw_writer_write_word(std::ostream& outs, Word value)
105 for ( std::size_t i = 0; i < sizeof(Word); ++i )
106 outs.put( reinterpret_cast<unsigned char*>(&value)[i] );