Magick++  7.0.10
Pixels.h
Go to the documentation of this file.
1 // This may look like C code, but it is really -*- C++ -*-
2 //
3 // Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002
4 // Copyright Dirk Lemstra 2014
5 //
6 // Representation of a pixel view.
7 //
8 
9 #if !defined(Magick_Pixels_header)
10 #define Magick_Pixels_header
11 
12 #include "Magick++/Include.h"
13 #include "Magick++/Color.h"
14 #include "Magick++/Image.h"
15 
16 namespace Magick
17 {
19  {
20  public:
21 
22  // Construct pixel view using specified image.
23  Pixels(Magick::Image &image_);
24 
25  // Destroy pixel view
26  ~Pixels(void);
27 
28  // Transfer pixels from the image to the pixel view as defined by
29  // the specified region. Modified pixels may be subsequently
30  // transferred back to the image via sync.
31  Quantum *get(const ::ssize_t x_,const ::ssize_t y_,
32  const size_t columns_,const size_t rows_);
33 
34  // Transfer read-only pixels from the image to the pixel view as
35  // defined by the specified region.
36  const Quantum *getConst(const ::ssize_t x_,const ::ssize_t y_,
37  const size_t columns_,const size_t rows_);
38 
39  // Return pixel metacontent
40  void *metacontent(void);
41 
42  // Returns the offset for the specified channel.
43  ssize_t offset(PixelChannel channel) const;
44 
45  // Allocate a pixel view region to store image pixels as defined
46  // by the region rectangle. This area is subsequently transferred
47  // from the pixel view to the image via sync.
48  Quantum *set(const ::ssize_t x_,const ::ssize_t y_,const size_t columns_,
49  const size_t rows_ );
50 
51  // Transfers the image view pixels to the image.
52  void sync(void);
53 
54  // Left ordinate of view
55  ::ssize_t x(void) const;
56 
57  // Top ordinate of view
58  ::ssize_t y(void) const;
59 
60  // Width of view
61  size_t columns(void) const;
62 
63  // Height of view
64  size_t rows(void) const;
65 
66  private:
67 
68  // Copying and assigning Pixels is not supported.
69  Pixels(const Pixels& pixels_);
70  const Pixels& operator=(const Pixels& pixels_);
71 
72  Magick::Image _image; // Image reference
73  MagickCore::CacheView *_view; // Image view handle
74  ::ssize_t _x; // Left ordinate of view
75  ::ssize_t _y; // Top ordinate of view
76  size_t _columns; // Width of view
77  size_t _rows; // Height of view
78 
79  }; // class Pixels
80 
82  {
83  public:
84 
85  // Construct pixel data using specified image
86  PixelData(Magick::Image &image_,std::string map_,const StorageType type_);
87 
88  // Construct pixel data using specified image
89  PixelData(Magick::Image &image_,const ::ssize_t x_,const ::ssize_t y_,
90  const size_t width_,const size_t height_,std::string map_,
91  const StorageType type_);
92 
93  // Destroy pixel data
94  ~PixelData(void);
95 
96  // Pixel data buffer
97  const void *data(void) const;
98 
99  // Length of the buffer
100  ::ssize_t length(void) const;
101 
102  // Size of the buffer in bytes
103  ::ssize_t size(void) const;
104 
105  private:
106 
107  // Copying and assigning PixelData is not supported
108  PixelData(const PixelData& pixels_);
109  const PixelData& operator=(const PixelData& pixels_);
110 
111  void init(Magick::Image &image_,const ::ssize_t x_,const ::ssize_t y_,
112  const size_t width_,const size_t height_,std::string map_,
113  const StorageType type_);
114 
115  void relinquish(void) throw();
116 
117  void *_data; // The pixel data
118  ::ssize_t _length; // Length of the data
119  ::ssize_t _size; // Size of the data
120  }; // class PixelData
121 
122 } // Magick namespace
123 
124 //
125 // Inline methods
126 //
127 
128 // Left ordinate of view
129 inline ::ssize_t Magick::Pixels::x(void) const
130 {
131  return _x;
132 }
133 
134 // Top ordinate of view
135 inline ::ssize_t Magick::Pixels::y(void) const
136 {
137  return _y;
138 }
139 
140 // Width of view
141 inline size_t Magick::Pixels::columns(void) const
142 {
143  return _columns;
144 }
145 
146 // Height of view
147 inline size_t Magick::Pixels::rows(void) const
148 {
149  return _rows;
150 }
151 
152 #endif // Magick_Pixels_header
size_t columns(void) const
Definition: Pixels.h:141
::ssize_t y(void) const
Definition: Pixels.h:135
#define MagickPPExport
Definition: Include.h:281
::ssize_t x(void) const
Definition: Pixels.h:129
size_t rows(void) const
Definition: Pixels.h:147
Definition: Blob.h:15