xtd 0.2.0
image.hpp
Go to the documentation of this file.
1
4#pragma once
5#include "../drawing_export.hpp"
14#include "graphics.hpp"
15#include "graphics_unit.hpp"
16#include "rectangle.hpp"
17#include "rotate_flip_type.hpp"
18#include "size.hpp"
19#include "size_f.hpp"
20#include <xtd/any>
21#include <xtd/iequatable>
22#include <xtd/object>
23#include <xtd/string>
24#include <cstdint>
25#include <map>
26#include <memory>
27#include <iostream>
28
30namespace xtd {
32 namespace drawing {
34 class bitmap;
35 namespace imaging::effects {
36 struct resize_effect;
37 struct scale_effect;
38 }
40
53 class drawing_export_ image : public xtd::object, public xtd::iequatable<image> {
54 struct data;
55
56 public:
58 image();
59 image(image&&) = default;
60 image(const image& image) = default;
61 image& operator =(const image& image) = default;
62 ~image();
64
66
69 static image empty;
71
73
81 const xtd::byte* alpha() const;
82
90
111 int32 flags() const noexcept;
112
118 std::vector<guid> frame_dimentions_list() const noexcept;
119
122 intptr handle() const noexcept;
123
126 int32 height() const noexcept;
127
130 float horizontal_resolution() const noexcept;
131
135 imaging::color_palette palette() const noexcept;
138 void palette(const imaging::color_palette& palette) noexcept;
139
143 const size_f& physical_dimension() const noexcept;
144
147 imaging::pixel_format pixel_format() const noexcept;
148
152 const xtd::array<int32>& property_id_list() const noexcept;
153
157 const xtd::array<imaging::property_item>& property_items() const noexcept;
158
161 const imaging::image_format& raw_format() const noexcept;
162
170 const xtd::byte* rgb() const;
171
179 xtd::byte* rgb();
180
183 const drawing::size& size() const noexcept;
184
187 const std::any& tag() const noexcept;
190 void tag(const std::any& tag) noexcept;
191
194 float vertical_resolution() const noexcept;
195
198 int32 width() const noexcept;
200
202
206 image clone() const;
207
210 graphics create_graphics();
211
215 bool equals(const object& obj) const noexcept override;
219 bool equals(const image& other) const noexcept override;
220
224 xtd::drawing::rectangle_f get_bounds(xtd::drawing::graphics_unit page_unit) const noexcept;
225
229 xtd::drawing::imaging::encoder_parameters get_encoder_parameter_list(xtd::guid encoder) const noexcept;
230
237 xtd::size get_frame_count(const xtd::drawing::imaging::frame_dimension& dimension) const;
238
241 xtd::size get_hash_code() const noexcept override;
242
249 xtd::drawing::imaging::property_item get_property_item(int32 propid);
250
257 xtd::drawing::image get_thmbnail_image(int32 thumb_width, int32 thunb_height) noexcept;
258
263 void rotate_flip(xtd::drawing::rotate_flip_type rotate_flip_type);
264
269 void save(const xtd::string& filename) const;
273 void save(const xtd::string& filename, const xtd::drawing::imaging::image_format& format) const;
279 void save(std::ostream& stream, const xtd::drawing::imaging::image_format& format) const;
281
283
288 static image from_file(const xtd::string& filename);
289
294 static bitmap from_hbitmap(intptr hbitmap);
295
301 static image from_stream(std::istream& stream);
302
310 static bitmap from_xbm_data(const unsigned char* bits, int32 width, int32 height);
311
317 static bitmap from_xpm_data(const char* const* bits);
318
322 static int32 get_pixel_format_size(xtd::drawing::imaging::pixel_format pixfmt) noexcept;
323
327 static bool is_alpha_pixel_format(xtd::drawing::imaging::pixel_format pixfmt) noexcept;
328
332 static bool is_canonical_pixel_format(xtd::drawing::imaging::pixel_format pixfmt) noexcept;
333
337 static bool is_extended_pixel_format(xtd::drawing::imaging::pixel_format pixfmt) noexcept;
339
340 protected:
342 friend xtd::drawing::imaging::effects::resize_effect;
343 friend xtd::drawing::imaging::effects::scale_effect;
344 explicit image(intptr hbitmap);
345 explicit image(const xtd::string& filename);
346 explicit image(const xtd::string& filename, bool use_icm);
347 explicit image(std::istream& stream);
348 explicit image(std::istream& stream, bool use_icm);
349 image(int32 width, int32 height);
350 image(int32 width, int32 height, float horizontal_resolution, float vertical_resolution);
351 image(int32 width, int32 height, xtd::drawing::imaging::pixel_format format);
352 image(int32 width, int32 height, int32 stride, xtd::drawing::imaging::pixel_format format, intptr scan0);
353 image(const image& image, int32 width, int32 height);
354 image(const image& image, const rectangle& rect);
355 static image from_hicon(intptr hicon);
356 drawing::color get_pixel(int32 x, int32 y) const;
357 void resize(const xtd::drawing::rectangle& rect, const xtd::drawing::color& fill_color);
358 void scale(const xtd::drawing::size& size, xtd::drawing::drawing_2d::interpolation_mode interpolation_mode);
359 void set_pixel(int32 x, int32 y, const drawing::color& color);
360 void set_pixel_format(imaging::pixel_format value);
362
363 private:
364 void update_properties();
365
366 xtd::sptr<data> data_;
367 };
368 }
369}
Provides methods for creating, manipulating, searching, and sorting arrays, thereby serving as the ba...
Definition array.hpp:59
Encapsulates a GDI+ bitmap, which consists of the pixel data for a graphics image and its attributes....
Definition bitmap.hpp:26
Represents an ARGB (alpha, red, green, blue) color.
Definition color.hpp:49
Defines an object used to draw lines and curves. This class cannot be inherited.
Definition graphics.hpp:70
An abstract base class that provides functionality for the bitmap and metafile descended classes.
Definition image.hpp:53
const xtd::byte * alpha() const
Gets the image alpha pointer, which represents the alpha data of the image.
int32 flags() const noexcept
Gets attribute flags for the pixel data of this xtd::drawing::image.
xtd::byte * alpha()
Gets the image alpha pointer, which represents the alpha data of the image.
static image empty
Represent an empty xtd::drawing::image.
Definition image.hpp:69
Represents a globally unique identifier (GUID). A GUID is a 128-bit integer (16 bytes) that can be us...
Definition guid.hpp:24
Defines a generalized method that a value type or class implements to create a type-specific method f...
Definition iequatable.hpp:22
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.hpp:44
Contains xtd::drawing::imaging::color_palette class.
Contains xtd::drawing::imaging::encoder_parameters struct.
Contains xtd::drawing::imaging::frame_dimension class.
Contains xtd::drawing::graphics class.
Contains xtd::drawing::graphics_unit enum class.
#define drawing_export_
Define shared library export.
Definition drawing_export.hpp:13
int32_t int32
Represents a 32-bit signed integer.
Definition int32.hpp:23
intmax_t intptr
Represent a pointer or a handle.
Definition intptr.hpp:23
uint8_t byte
Represents a 8-bit unsigned integer.
Definition byte.hpp:23
std::shared_ptr< type_t > sptr
The xtd::sptr object is a shared pointer.
Definition sptr.hpp:25
graphics_unit
Specifies the unit of measure for the given data. This enumeration has a flags attribute that allows ...
Definition graphics_unit.hpp:17
rotate_flip_type
Specifies how much an image is rotated and the axis used to flip the image.
Definition rotate_flip_type.hpp:19
Contains xtd::drawing::imaging::image_flags class.
Contains xtd::drawing::imaging::image_format class.
Contains xtd::drawing::drawing_2d::interpolation_mode enum class.
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition xtd_about_box.hpp:10
Contains xtd::drawing::imaging::pixel_format enum class.
Contains xtd::drawing::imaging::property_item class.
Contains xtd::drawing::rectangle class.
Contains xtd::drawing::rotate_flip_type enum class.
Contains xtd::drawing::size_f class.
Stores a set of four floating-point numbers that represent the location and size of a rectangle....
Definition rectangle_f.hpp:34
Stores a set of four integers that represent the location and size of a rectangle.
Definition rectangle.hpp:44
Stores an ordered pair of floating-point, which specify a height and width.
Definition size_f.hpp:31
Stores an ordered pair of integers, which specify a height and width.
Definition size.hpp:31
Contains xtd::drawing::size class.