ome-files  0.5.0
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 std::shared_ptr<ome::files::tiff::TIFF> tiff;
77 
79  mutable std::shared_ptr<ome::files::tiff::IFD> ifd;
80 
83 
86 
87  private:
89  boost::optional<bool> bigTIFF;
90 
91  public:
94 
101 
103  virtual
105 
106  // Documented in superclass.
107  void
108  setId(const boost::filesystem::path& id);
109 
110  // Documented in superclass.
111  void
112  close(bool fileOnly = false);
113 
114  public:
115  // Documented in superclass.
116  void
117  setSeries(dimension_size_type series) const;
118 
119  // Documented in superclass.
120  void
121  setPlane(dimension_size_type plane) const;
122 
123  // Documented in superclass.
125  getTileSizeX() const;
126 
127  // Documented in superclass.
129  getTileSizeY() const;
130 
131  protected:
133  void
134  nextIFD() const;
135 
137  void
138  setupIFD() const;
139 
140  public:
142 
143  // Documented in superclass.
144  void
145  saveBytes(dimension_size_type plane,
146  VariantPixelBuffer& buf,
151 
164  void
165  setBigTIFF(boost::optional<bool> big = true);
166 
179  boost::optional<bool>
180  getBigTIFF() const;
181  };
182 
183  }
184  }
185 }
186 
187 #endif // OME_FILES_OUT_MINIMALTIFFWRITER_H
188 
189 /*
190  * Local Variables:
191  * mode:C++
192  * End:
193  */
std::shared_ptr< ome::files::tiff::TIFF > tiff
Underlying TIFF file.
Definition: MinimalTIFFWriter.h:76
logging::sources::severity_logger_mt< logging::trivial::severity_level > Logger
std::vector< IFDRange > SeriesIFDRange
Mapping between series index and IFD range.
Definition: Util.h:103
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:58
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
Open Microscopy Environment C++.
std::shared_ptr< ome::files::tiff::IFD > ifd
Current IFD.
Definition: MinimalTIFFWriter.h:79
Basic TIFF writer.
Definition: MinimalTIFFWriter.h:69
Buffer for all pixel types.
Definition: VariantPixelBuffer.h:78