11#define MAGICKCORE_IMPLEMENTATION 1
12#define MAGICK_PLUSPLUS_IMPLEMENTATION 1
14#include "Magick++/Include.h"
15#include "Magick++/Thread.h"
16#include "Magick++/Exception.h"
17#include "Magick++/Pixels.h"
27 _view=AcquireVirtualCacheView(image_.image(),exceptionInfo),
28 ThrowPPException(image_.quiet());
31Magick::Pixels::~Pixels(
void)
34 _view=DestroyCacheView(_view);
37Magick::Quantum* Magick::Pixels::get(
const ssize_t x_,
const ssize_t y_,
38 const size_t columns_,
const size_t rows_)
46 Quantum* pixels=GetCacheViewAuthenticPixels(_view,x_,y_,columns_,rows_,
48 ThrowPPException(_image.quiet());
53const Magick::Quantum* Magick::Pixels::getConst(
const ssize_t x_,
54 const ssize_t y_,
const size_t columns_,
const size_t rows_)
62 const Quantum* pixels=GetCacheViewVirtualPixels(_view,x_,y_,columns_,rows_,
64 ThrowPPException(_image.quiet());
69ssize_t Magick::Pixels::offset(PixelChannel channel)
const
71 if (_image.constImage()->channel_map[channel].traits == UndefinedPixelTrait)
73 return _image.constImage()->channel_map[channel].offset;
76Magick::Quantum* Magick::Pixels::set(
const ssize_t x_,
const ssize_t y_,
77 const size_t columns_,
const size_t rows_)
85 Quantum* pixels=QueueCacheViewAuthenticPixels(_view,x_,y_,columns_,rows_,
87 ThrowPPException(_image.quiet());
92void Magick::Pixels::sync(
void)
95 (void) SyncCacheViewAuthenticPixels(_view,exceptionInfo);
96 ThrowPPException(_image.quiet());
100void* Magick::Pixels::metacontent(
void)
102 void* pixel_metacontent=GetCacheViewAuthenticMetacontent(_view);
104 return pixel_metacontent;
107Magick::PixelData::PixelData(Magick::Image &image_,std::string map_,
108 const StorageType type_)
110 init(image_,0,0,image_.columns(),image_.rows(),map_,type_);
113Magick::PixelData::PixelData(Magick::Image &image_,const ::ssize_t x_,
114 const ::ssize_t y_,
const size_t width_,
const size_t height_,std::string map_,
115 const StorageType type_)
117 init(image_,x_,y_,width_,height_,map_,type_);
120Magick::PixelData::~PixelData(
void)
125const void *Magick::PixelData::data(
void)
const
130::ssize_t Magick::PixelData::length(
void)
const
135::ssize_t Magick::PixelData::size(
void)
const
140void Magick::PixelData::init(Magick::Image &image_,const ::ssize_t x_,
141 const ::ssize_t y_,
const size_t width_,
const size_t height_,
142 std::string map_,
const StorageType type_)
150 if ((x_ < 0) || (width_ == 0) || (y_ < 0) || (height_ == 0) ||
151 (x_ > (ssize_t) image_.columns()) || (((ssize_t) width_ + x_) > (ssize_t) image_.columns())
152 || (y_ > (ssize_t) image_.rows()) || (((ssize_t) height_ + y_) > (ssize_t) image_.rows())
153 || (map_.length() == 0))
159 size=
sizeof(
unsigned char);
168 size=
sizeof(
unsigned int);
171 size=
sizeof(MagickSizeType);
174 size=
sizeof(Quantum);
177 size=
sizeof(
unsigned short);
180 throwExceptionExplicit(MagickCore::OptionError,
"Invalid type");
184 _length=(ssize_t) (width_*height_*map_.length());
185 _size=_length*(ssize_t) size;
186 _data=AcquireMagickMemory((
size_t) _size);
189 MagickCore::ExportImagePixels(image_.image(),x_,y_,width_,height_,
190 map_.c_str(),type_,_data,exceptionInfo);
191 if (exceptionInfo->severity != MagickCore::UndefinedException)
193 ThrowPPException(image_.quiet());
196void Magick::PixelData::relinquish(
void)
throw()
198 if (_data != (
void *)NULL)
199 _data=RelinquishMagickMemory(_data);