Magick++ 7.1.1
Loading...
Searching...
No Matches
Magick::PixelData Class Reference
Collaboration diagram for Magick::PixelData:

Public Member Functions

 PixelData (Magick::Image &image_, std::string map_, const StorageType type_)
 
 PixelData (Magick::Image &image_, const ::ssize_t x_, const ::ssize_t y_, const size_t width_, const size_t height_, std::string map_, const StorageType type_)
 
const void * data (void) const
 
::ssize_t length (void) const
 
::ssize_t size (void) const
 

Private Member Functions

 PixelData (const PixelData &pixels_)
 
const PixelDataoperator= (const PixelData &pixels_)
 
void init (Magick::Image &image_, const ::ssize_t x_, const ::ssize_t y_, const size_t width_, const size_t height_, std::string map_, const StorageType type_)
 
void relinquish (void) throw ()
 

Private Attributes

void * _data
 
::ssize_t _length
 
::ssize_t _size
 

Detailed Description

Definition at line 83 of file Pixels.h.

Constructor & Destructor Documentation

◆ PixelData() [1/2]

Magick::PixelData::PixelData ( Magick::Image image_,
std::string  map_,
const StorageType  type_ 
)

Definition at line 109 of file Pixels.cpp.

111{
112 init(image_,0,0,image_.columns(),image_.rows(),map_,type_);
113}

◆ PixelData() [2/2]

Magick::PixelData::PixelData ( Magick::Image image_,
const ::ssize_t  x_,
const ::ssize_t  y_,
const size_t  width_,
const size_t  height_,
std::string  map_,
const StorageType  type_ 
)

Definition at line 115 of file Pixels.cpp.

118{
119 init(image_,x_,y_,width_,height_,map_,type_);
120}

◆ ~PixelData()

Magick::PixelData::~PixelData ( void  )

Definition at line 122 of file Pixels.cpp.

123{
124 relinquish();
125}

Member Function Documentation

◆ data()

const void * Magick::PixelData::data ( void  ) const

Definition at line 127 of file Pixels.cpp.

128{
129 return(_data);
130}

◆ init()

void Magick::PixelData::init ( Magick::Image image_,
const ::ssize_t  x_,
const ::ssize_t  y_,
const size_t  width_,
const size_t  height_,
std::string  map_,
const StorageType  type_ 
)
private

Definition at line 142 of file Pixels.cpp.

145{
146 size_t
147 size;
148
149 _data=(void *) NULL;
150 _length=0;
151 _size=0;
152 if ((x_ < 0) || (width_ == 0) || (y_ < 0) || (height_ == 0) ||
153 (x_ > (ssize_t) image_.columns()) || (((ssize_t) width_ + x_) > (ssize_t) image_.columns())
154 || (y_ > (ssize_t) image_.rows()) || (((ssize_t) height_ + y_) > (ssize_t) image_.rows())
155 || (map_.length() == 0))
156 return;
157
158 switch(type_)
159 {
160 case CharPixel:
161 size=sizeof(unsigned char);
162 break;
163 case DoublePixel:
164 size=sizeof(double);
165 break;
166 case FloatPixel:
167 size=sizeof(float);
168 break;
169 case LongPixel:
170 size=sizeof(unsigned int);
171 break;
172 case LongLongPixel:
173 size=sizeof(MagickSizeType);
174 break;
175 case QuantumPixel:
176 size=sizeof(Quantum);
177 break;
178 case ShortPixel:
179 size=sizeof(unsigned short);
180 break;
181 default:
182 throwExceptionExplicit(MagickCore::OptionError,"Invalid type");
183 return;
184 }
185
186 _length=(ssize_t) (width_*height_*map_.length());
187 _size=_length*(ssize_t) size;
188 _data=AcquireMagickMemory((size_t) _size);
189
190 GetPPException;
191 MagickCore::ExportImagePixels(image_.image(),x_,y_,width_,height_,
192 map_.c_str(),type_,_data,exceptionInfo);
193 if (exceptionInfo->severity != MagickCore::UndefinedException)
194 relinquish();
195 ThrowPPException(image_.quiet());
196}

◆ length()

ssize_t Magick::PixelData::length ( void  ) const

Definition at line 132 of file Pixels.cpp.

133{
134 return(_length);
135}

◆ relinquish()

void Magick::PixelData::relinquish ( void  )
throw (
)
private

Definition at line 198 of file Pixels.cpp.

199{
200 if (_data != (void *)NULL)
201 _data=RelinquishMagickMemory(_data);
202 _length=0;
203 _size=0;
204}

◆ size()

ssize_t Magick::PixelData::size ( void  ) const

Definition at line 137 of file Pixels.cpp.

138{
139 return(_size);
140}

Member Data Documentation

◆ _data

void* Magick::PixelData::_data
private

Definition at line 119 of file Pixels.h.

◆ _length

::ssize_t Magick::PixelData::_length
private

Definition at line 120 of file Pixels.h.

◆ _size

::ssize_t Magick::PixelData::_size
private

Definition at line 121 of file Pixels.h.


The documentation for this class was generated from the following files: