png++: image_info.hpp Source File

png++ 0.2.10

image_info.hpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2007,2008 Alex Shulgin
3 *
4 * This file is part of png++ the C++ wrapper for libpng. PNG++ is free
5 * software; the exact copying conditions are as follows:
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright notice,
11 * this list of conditions and the following disclaimer.
12 *
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 *
17 * 3. The name of the author may not be used to endorse or promote products
18 * derived from this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
21 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
22 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
23 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
25 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */
31#ifndef PNGPP_IMAGE_INFO_HPP_INCLUDED
32#define PNGPP_IMAGE_INFO_HPP_INCLUDED
33
34#include "types.hpp"
35#include "palette.hpp"
36#include "tRNS.hpp"
37#include "pixel_traits.hpp"
38
39namespace png
40{
41
47 class image_info
48 {
49 public:
55 image_info()
56 : m_width(0),
57 m_height(0),
58 m_bit_depth(0),
59 m_color_type(color_type_none),
60 m_interlace_type(interlace_none),
61 m_compression_type(compression_type_default),
62 m_filter_type(filter_type_default),
63 m_gamma(0.0)
64 {
65 }
66
67 uint_32 get_width() const
68 {
69 return m_width;
70 }
71
72 void set_width(uint_32 width)
73 {
74 m_width = width;
75 }
76
77 uint_32 get_height() const
78 {
79 return m_height;
80 }
81
82 void set_height(uint_32 height)
83 {
84 m_height = height;
85 }
86
87 color_type get_color_type() const
88 {
89 return m_color_type;
90 }
91
92 void set_color_type(color_type color_space)
93 {
94 m_color_type = color_space;
95 }
96
97 int get_bit_depth() const
98 {
99 return m_bit_depth;
100 }
101
102 void set_bit_depth(int bit_depth)
103 {
104 m_bit_depth = bit_depth;
105 }
106
107 interlace_type get_interlace_type() const
108 {
109 return m_interlace_type;
110 }
111
112 void set_interlace_type(interlace_type interlace)
113 {
114 m_interlace_type = interlace;
115 }
116
117 compression_type get_compression_type() const
118 {
119 return m_compression_type;
120 }
121
122 void set_compression_type(compression_type compression)
123 {
124 m_compression_type = compression;
125 }
126
127 filter_type get_filter_type() const
128 {
129 return m_filter_type;
130 }
131
132 void set_filter_type(filter_type filter)
133 {
134 m_filter_type = filter;
135 }
136
137 palette const& get_palette() const
138 {
139 return m_palette;
140 }
141
142 palette& get_palette()
143 {
144 return m_palette;
145 }
146
147 void set_palette(palette const& plte)
148 {
149 m_palette = plte;
150 }
151
155 void drop_palette()
156 {
157 m_palette.clear();
158 }
159
160 tRNS const& get_tRNS() const
161 {
162 return m_tRNS;
163 }
164
165 tRNS& get_tRNS()
166 {
167 return m_tRNS;
168 }
169
170 void set_tRNS(tRNS const& trns)
171 {
172 m_tRNS = trns;
173 }
174
175 double get_gamma() const
176 {
177 return m_gamma;
178 }
179
180 void set_gamma(double gamma)
181 {
182 m_gamma = gamma;
183 }
184
185 protected:
186 uint_32 m_width;
187 uint_32 m_height;
188 int m_bit_depth;
189 color_type m_color_type;
190 interlace_type m_interlace_type;
191 compression_type m_compression_type;
192 filter_type m_filter_type;
193 palette m_palette;
194 tRNS m_tRNS;
195 double m_gamma;
196 };
197
202 template< typename pixel >
203 image_info
204 make_image_info()
205 {
206 typedef pixel_traits< pixel > traits;
207 image_info info;
208 info.set_color_type(traits::get_color_type());
209 info.set_bit_depth(traits::get_bit_depth());
210 return info;
211 }
212
213} // namespace png
214
215#endif // PNGPP_IMAGE_INFO_HPP_INCLUDED
png::image_info
Holds information about PNG image.
Definition image_info.hpp:48
png::image_info::m_color_type
color_type m_color_type
Definition image_info.hpp:189
png::image_info::set_interlace_type
void set_interlace_type(interlace_type interlace)
Definition image_info.hpp:112
png::image_info::m_palette
palette m_palette
Definition image_info.hpp:193
png::image_info::drop_palette
void drop_palette()
Removes all entries from the palette.
Definition image_info.hpp:155
png::image_info::set_color_type
void set_color_type(color_type color_space)
Definition image_info.hpp:92
png::image_info::get_tRNS
tRNS const & get_tRNS() const
Definition image_info.hpp:160
png::image_info::set_width
void set_width(uint_32 width)
Definition image_info.hpp:72
png::image_info::get_width
uint_32 get_width() const
Definition image_info.hpp:67
png::image_info::get_palette
palette const & get_palette() const
Definition image_info.hpp:137
png::image_info::get_interlace_type
interlace_type get_interlace_type() const
Definition image_info.hpp:107
png::image_info::get_color_type
color_type get_color_type() const
Definition image_info.hpp:87
png::image_info::m_width
uint_32 m_width
Definition image_info.hpp:186
png::image_info::get_gamma
double get_gamma() const
Definition image_info.hpp:175
png::image_info::m_bit_depth
int m_bit_depth
Definition image_info.hpp:188
png::image_info::get_bit_depth
int get_bit_depth() const
Definition image_info.hpp:97
png::image_info::set_compression_type
void set_compression_type(compression_type compression)
Definition image_info.hpp:122
png::image_info::get_height
uint_32 get_height() const
Definition image_info.hpp:77
png::image_info::get_filter_type
filter_type get_filter_type() const
Definition image_info.hpp:127
png::image_info::get_compression_type
compression_type get_compression_type() const
Definition image_info.hpp:117
png::image_info::m_gamma
double m_gamma
Definition image_info.hpp:195
png::image_info::set_filter_type
void set_filter_type(filter_type filter)
Definition image_info.hpp:132
png::image_info::set_tRNS
void set_tRNS(tRNS const &trns)
Definition image_info.hpp:170
png::image_info::m_interlace_type
interlace_type m_interlace_type
Definition image_info.hpp:190
png::image_info::image_info
image_info()
Constructs the image_info object with default values for color_type, interlace_type,...
Definition image_info.hpp:55
png::image_info::m_filter_type
filter_type m_filter_type
Definition image_info.hpp:192
png::image_info::m_compression_type
compression_type m_compression_type
Definition image_info.hpp:191
png::image_info::get_palette
palette & get_palette()
Definition image_info.hpp:142
png::image_info::set_gamma
void set_gamma(double gamma)
Definition image_info.hpp:180
png::image_info::set_palette
void set_palette(palette const &plte)
Definition image_info.hpp:147
png::image_info::set_bit_depth
void set_bit_depth(int bit_depth)
Definition image_info.hpp:102
png::image_info::m_height
uint_32 m_height
Definition image_info.hpp:187
png::image_info::get_tRNS
tRNS & get_tRNS()
Definition image_info.hpp:165
png::image_info::m_tRNS
tRNS m_tRNS
Definition image_info.hpp:194
png::image_info::set_height
void set_height(uint_32 height)
Definition image_info.hpp:82
png::info
Holds information about PNG image. Adapter class for IO image operations.
Definition info.hpp:48
png
Definition color.hpp:37
png::make_image_info
image_info make_image_info()
Returns an image_info object with color_type and bit_depth fields setup appropriate for the pixel typ...
Definition image_info.hpp:204
png::interlace_type
interlace_type
Definition types.hpp:80
png::interlace_none
@ interlace_none
Definition types.hpp:81
png::color_type
color_type
Definition types.hpp:47
png::color_type_none
@ color_type_none
Definition types.hpp:48
png::palette
std::vector< color > palette
The palette type. Currently implemented as std::vector of png::color.
Definition palette.hpp:44
png::uint_32
png_uint_32 uint_32
Definition types.hpp:41
png::compression_type
compression_type
Definition types.hpp:86
png::compression_type_default
@ compression_type_default
Definition types.hpp:88
png::filter_type
filter_type
Definition types.hpp:92
png::filter_type_default
@ filter_type_default
Definition types.hpp:95
png::tRNS
std::vector< byte > tRNS
The palette transparency map type. Currently implemented as std::vector of png::byte.
Definition tRNS.hpp:44
palette.hpp
pixel_traits.hpp
png::pixel_traits
Pixel traits class template.
Definition pixel_traits.hpp:48
tRNS.hpp
types.hpp