bioformats  5.1.6
MinimalTIFFWriter.h
1 /*
2  * #%L
3  * OME-BIOFORMATS 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_BIOFORMATS_OUT_MINIMALTIFFWRITER_H
39 #define OME_BIOFORMATS_OUT_MINIMALTIFFWRITER_H
40 
41 #include <ome/bioformats/detail/FormatWriter.h>
42 #include <ome/bioformats/tiff/Util.h>
43 
44 #include <ome/common/log.h>
45 
46 #include <vector>
47 
48 namespace ome
49 {
50  namespace bioformats
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::bioformats::tiff::TIFF> tiff;
77 
79  mutable ome::compat::shared_ptr<ome::bioformats::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
114 
115  // Documented in superclass.
116  void
118 
119  protected:
121  void
122  nextIFD() const;
123 
125  void
126  setupIFD() const;
127 
128  public:
130 
131  // Documented in superclass.
132  void
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_BIOFORMATS_OUT_MINIMALTIFFWRITER_H
176 
177 /*
178  * Local Variables:
179  * mode:C++
180  * End:
181  */
void setId(const boost::filesystem::path &id)
Set the current file name.
Definition: MinimalTIFFWriter.cpp:136
logging::sources::severity_logger_mt< logging::trivial::severity_level > Logger
Message logger.
Definition: log.h:98
virtual ~MinimalTIFFWriter()
Destructor.
Definition: MinimalTIFFWriter.cpp:124
tiff::SeriesIFDRange seriesIFDRange
Mapping between series index and start and end IFD as a half-open range.
Definition: MinimalTIFFWriter.h:85
void setupIFD() const
Set IFD parameters for the current series.
Definition: MinimalTIFFWriter.cpp:228
const WriterProperties & writerProperties
Writer properties specific to the derived file format.
Definition: FormatWriter.h:113
Interface for all biological file format writers (default behaviour).
Definition: FormatWriter.h:108
void close(bool fileOnly=false)
Close the currently open file.
Definition: MinimalTIFFWriter.cpp:174
dimension_size_type series
Current series.
Definition: FormatWriter.h:122
ome::compat::shared_ptr< ome::bioformats::tiff::TIFF > tiff
Underlying TIFF file.
Definition: MinimalTIFFWriter.h:76
void saveBytes(dimension_size_type plane, VariantPixelBuffer &buf, dimension_size_type x, dimension_size_type y, dimension_size_type w, dimension_size_type h)
Save an image plane.
Definition: MinimalTIFFWriter.cpp:262
boost::optional< bool > bigTIFF
Write a Big TIFF.
Definition: MinimalTIFFWriter.h:89
Open Microscopy Environment C++ implementation.
Definition: CoreMetadata.cpp:40
MinimalTIFFWriter()
Constructor.
Definition: MinimalTIFFWriter.cpp:102
virtual void saveBytes(dimension_size_type plane, VariantPixelBuffer &buf)=0
Save an image plane.
ome::common::Logger logger
Message logger.
Definition: MinimalTIFFWriter.h:73
std::vector< IFDRange > SeriesIFDRange
Mapping between series index and IFD range.
Definition: Util.h:104
void setSeries(dimension_size_type series) const
Set the active series.
Definition: MinimalTIFFWriter.cpp:194
Basic TIFF writer.
Definition: MinimalTIFFWriter.h:69
dimension_size_type plane
Current plane.
Definition: FormatWriter.h:125
boost::optional< bool > getBigTIFF() const
Query use of BigTIFF support.
Definition: MinimalTIFFWriter.cpp:293
Buffer for all pixel types.
Definition: VariantPixelBuffer.h:75
void setPlane(dimension_size_type plane) const
Set the active plane.
Definition: MinimalTIFFWriter.cpp:207
void setBigTIFF(boost::optional< bool > big=true)
Set use of BigTIFF support.
Definition: MinimalTIFFWriter.cpp:287
void nextIFD() const
Flush current IFD and create new IFD.
Definition: MinimalTIFFWriter.cpp:220
Boost.Log compatibility.
std::size_t dimension_size_type
Size type for image dimensions.
Definition: Types.h:59
Properties specific to a particular writer.
Definition: FormatWriter.h:56
ome::compat::shared_ptr< ome::bioformats::tiff::IFD > ifd
Current IFD.
Definition: MinimalTIFFWriter.h:79
dimension_size_type ifdIndex
Current plane.
Definition: MinimalTIFFWriter.h:82