ome-files 0.2.2

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
69 class MinimalTIFFWriter : public ::ome::files::detail::FormatWriter
70 {
71 protected:
73 ome::common::Logger logger;
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
82 mutable dimension_size_type ifdIndex;
83
85 tiff::SeriesIFDRange seriesIFDRange;
86
87 private:
89 boost::optional<bool> bigTIFF;
90
91 public:
93 MinimalTIFFWriter();
94
96 MinimalTIFFWriter(const ome::files::detail::WriterProperties& writerProperties);
97
99 virtual
100 ~MinimalTIFFWriter();
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:
129 using FormatWriter::saveBytes;
130
131 // Documented in superclass.
132 void
133 saveBytes(dimension_size_type plane,
134 VariantPixelBuffer& buf,
135 dimension_size_type x,
136 dimension_size_type y,
137 dimension_size_type w,
138 dimension_size_type h);
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 */
ome::common::Logger
logging::sources::severity_logger_mt< logging::trivial::severity_level > Logger
ome::files::tiff::SeriesIFDRange
std::vector< IFDRange > SeriesIFDRange
Mapping between series index and IFD range.
Definition: Util.h:104
ome::files::out::MinimalTIFFWriter::seriesIFDRange
tiff::SeriesIFDRange seriesIFDRange
Mapping between series index and start and end IFD as a half-open range.
Definition: MinimalTIFFWriter.h:85
ome::files::dimension_size_type
std::size_t dimension_size_type
Size type for image dimensions.
Definition: Types.h:59
ome::files::out::MinimalTIFFWriter::ifd
ome::compat::shared_ptr< ome::files::tiff::IFD > ifd
Current IFD.
Definition: MinimalTIFFWriter.h:79
ome::files::out::MinimalTIFFWriter::logger
ome::common::Logger logger
Message logger.
Definition: MinimalTIFFWriter.h:73
ome::files::out::MinimalTIFFWriter::bigTIFF
boost::optional< bool > bigTIFF
Write a Big TIFF.
Definition: MinimalTIFFWriter.h:89
ome::files::FormatWriter::saveBytes
virtual void saveBytes(dimension_size_type plane, VariantPixelBuffer &buf)=0
Save an image plane.
ome::files::out::MinimalTIFFWriter::ifdIndex
dimension_size_type ifdIndex
Current plane.
Definition: MinimalTIFFWriter.h:82
ome::files::detail::FormatWriter
Interface for all biological file format writers (default behaviour).
Definition: FormatWriter.h:108
ome::files::detail::WriterProperties
Properties specific to a particular writer.
Definition: FormatWriter.h:56
ome
Open Microscopy Environment C++.
ome::files::out::MinimalTIFFWriter
Basic TIFF writer.
Definition: MinimalTIFFWriter.h:69
ome::files::out::MinimalTIFFWriter::tiff
ome::compat::shared_ptr< ome::files::tiff::TIFF > tiff
Underlying TIFF file.
Definition: MinimalTIFFWriter.h:76
log.h
ome::files::VariantPixelBuffer
Buffer for all pixel types.
Definition: VariantPixelBuffer.h:75