ome-files  0.1.1
MinimalTIFFWriter.h
1 /*
2  * #%L
3  * OME-FILES C++ library for image IO.
4  * Copyright © 2006 - 2014 Open Microscopy Environment:
5  * - Massachusetts Institute of Technology
6  * - National Institutes of Health
7  * - University of Dundee
8  * - Board of Regents of the University of Wisconsin-Madison
9  * - Glencoe Software, Inc.
10  * %%
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions are met:
13  *
14  * 1. Redistributions of source code must retain the above copyright notice,
15  * this list of conditions and the following disclaimer.
16  * 2. Redistributions in binary form must reproduce the above copyright notice,
17  * this list of conditions and the following disclaimer in the documentation
18  * and/or other materials provided with the distribution.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
24  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30  * POSSIBILITY OF SUCH DAMAGE.
31  *
32  * The views and conclusions contained in the software and documentation are
33  * those of the authors and should not be interpreted as representing official
34  * policies, either expressed or implied, of any organization.
35  * #L%
36  */
37 
38 #ifndef OME_FILES_OUT_MINIMALTIFFWRITER_H
39 #define OME_FILES_OUT_MINIMALTIFFWRITER_H
40 
41 #include <ome/files/detail/FormatWriter.h>
42 #include <ome/files/tiff/Util.h>
43 
44 #include <ome/common/log.h>
45 
46 #include <vector>
47 
48 namespace ome
49 {
50  namespace files
51  {
52  namespace tiff
53  {
54 
55  class TIFF;
56  class IFD;
57 
58  }
59 
60  namespace out
61  {
62 
70  {
71  protected:
74 
76  mutable ome::compat::shared_ptr<ome::files::tiff::TIFF> tiff;
77 
79  mutable ome::compat::shared_ptr<ome::files::tiff::IFD> ifd;
80 
83 
86 
87  private:
89  boost::optional<bool> bigTIFF;
90 
91  public:
94 
97 
99  virtual
101 
102  // Documented in superclass.
103  void
104  setId(const boost::filesystem::path& id);
105 
106  // Documented in superclass.
107  void
108  close(bool fileOnly = false);
109 
110  public:
111  // Documented in superclass.
112  void
113  setSeries(dimension_size_type series) const;
114 
115  // Documented in superclass.
116  void
117  setPlane(dimension_size_type plane) const;
118 
119  protected:
121  void
122  nextIFD() const;
123 
125  void
126  setupIFD() const;
127 
128  public:
130 
131  // Documented in superclass.
132  void
133  saveBytes(dimension_size_type plane,
134  VariantPixelBuffer& buf,
139 
152  void
153  setBigTIFF(boost::optional<bool> big = true);
154 
167  boost::optional<bool>
168  getBigTIFF() const;
169  };
170 
171  }
172  }
173 }
174 
175 #endif // OME_FILES_OUT_MINIMALTIFFWRITER_H
176 
177 /*
178  * Local Variables:
179  * mode:C++
180  * End:
181  */
logging::sources::severity_logger_mt< logging::trivial::severity_level > Logger
std::vector< IFDRange > SeriesIFDRange
Mapping between series index and IFD range.
Definition: Util.h:104
tiff::SeriesIFDRange seriesIFDRange
Mapping between series index and start and end IFD as a half-open range.
Definition: MinimalTIFFWriter.h:85
std::size_t dimension_size_type
Size type for image dimensions.
Definition: Types.h:59
ome::compat::shared_ptr< ome::files::tiff::IFD > ifd
Current IFD.
Definition: MinimalTIFFWriter.h:79
ome::common::Logger logger
Message logger.
Definition: MinimalTIFFWriter.h:73
boost::optional< bool > bigTIFF
Write a Big TIFF.
Definition: MinimalTIFFWriter.h:89
virtual void saveBytes(dimension_size_type plane, VariantPixelBuffer &buf)=0
Save an image plane.
dimension_size_type ifdIndex
Current plane.
Definition: MinimalTIFFWriter.h:82
Interface for all biological file format writers (default behaviour).
Definition: FormatWriter.h:108
Properties specific to a particular writer.
Definition: FormatWriter.h:56
Basic TIFF writer.
Definition: MinimalTIFFWriter.h:69
ome::compat::shared_ptr< ome::files::tiff::TIFF > tiff
Underlying TIFF file.
Definition: MinimalTIFFWriter.h:76
Buffer for all pixel types.
Definition: VariantPixelBuffer.h:75