// container's begin() method and last_ via the container's end()
// method in order to specify the entire container.
template<class InputIterator>
- void linkImages(InputIterator first_,InputIterator last_)
+ bool linkImages(InputIterator first_,InputIterator last_)
{
MagickCore::Image
*current,
previous=current;
}
+ return(scene > 0 ? true : false);
}
// Restores the channel mask of the images.
///////////////////////////////////////////////////////////////////
template <class InputIterator>
- void animateImages( InputIterator first_,
- InputIterator last_ ) {
- linkImages( first_, last_ );
- MagickCore::AnimateImages( first_->imageInfo(), first_->image() );
- unlinkImages( first_, last_ );
+ void animateImages( InputIterator first_,InputIterator last_)
+ {
+ if (linkImages(first_,last_) == false)
+ return;
+ MagickCore::AnimateImages(first_->imageInfo(),first_->image());
+ unlinkImages(first_,last_);
}
// Append images from list into single image in either horizontal or
InputIterator first_,
InputIterator last_,
bool stack_ = false) {
+ if (linkImages(first_,last_) == false)
+ return;
GetPPException;
- linkImages( first_, last_ );
MagickCore::Image* image = MagickCore::AppendImages( first_->image(),
(MagickBooleanType) stack_,
exceptionInfo );
void averageImages( Image *averagedImage_,
InputIterator first_,
InputIterator last_ ) {
+ if (linkImages(first_,last_) == false)
+ return;
GetPPException;
- linkImages( first_, last_ );
MagickCore::Image* image = MagickCore::EvaluateImages( first_->image(),
MagickCore::MeanEvaluateOperator, exceptionInfo );
unlinkImages( first_, last_ );
void coalesceImages( Container *coalescedImages_,
InputIterator first_,
InputIterator last_ ) {
+ if (linkImages(first_,last_) == false)
+ return;
GetPPException;
-
- // Build image list
- linkImages( first_, last_ );
MagickCore::Image* images = MagickCore::CoalesceImages( first_->image(),
exceptionInfo);
// Unlink image list
std::vector<ChannelType>
channelMask;
+ if (linkImages(first_,last_) == false)
+ return;
GetPPException;
- linkImages(first_,last_);
channelMaskImages(first_,last_,&channelMask,channel_);
image=CombineImages(first_->image(),colorspace_,exceptionInfo);
restoreChannelMaskImages(first_,last_,&channelMask);
MagickCore::Image
*images;
+ if (linkImages(first_,last_) == false)
+ return;
GetPPException;
- linkImages(first_,last_);
images=CompareImagesLayers(first_->image(),CompareAnyLayer,exceptionInfo);
unlinkImages(first_,last_);
template <class InputIterator>
void displayImages( InputIterator first_,
InputIterator last_ ) {
+ if (linkImages(first_,last_) == false)
+ return;
GetPPException;
- linkImages( first_, last_ );
MagickCore::DisplayImages( first_->imageInfo(), first_->image() );
unlinkImages( first_, last_ );
ThrowPPException(first_->quiet());
InputIterator first_,
InputIterator last_,
const MagickEvaluateOperator operator_ ) {
+ if (linkImages(first_,last_) == false)
+ return;
GetPPException;
- linkImages( first_, last_ );
MagickCore::Image* image = EvaluateImages( first_->image(), operator_, exceptionInfo );
unlinkImages( first_, last_ );
evaluatedImage_->replaceImage( image );
void flattenImages( Image *flattendImage_,
InputIterator first_,
InputIterator last_ ) {
+ if (linkImages(first_,last_) == false)
+ return;
GetPPException;
- linkImages( first_, last_ );
MagickCore::Image* image = MagickCore::MergeImageLayers( first_->image(),
FlattenLayer,exceptionInfo );
unlinkImages( first_, last_ );
MagickCore::Image
*image;
+ if (linkImages(first_,last_) == false)
+ return;
GetPPException;
- linkImages(first_,last_);
image=FxImage(first_->constImage(),expression.c_str(),exceptionInfo);
unlinkImages(first_,last_);
fxImage_->replaceImage(image);
MagickCore::QuantizeInfo
quantizeInfo;
+ if (linkImages(first_,last_) == false)
+ return;
GetPPException;
MagickCore::GetQuantizeInfo(&quantizeInfo);
quantizeInfo.dither_method = dither_ ? MagickCore::RiemersmaDitherMethod :
MagickCore::NoDitherMethod;
- linkImages(first_,last_);
MagickCore::RemapImages(&quantizeInfo,first_->image(),
(mapImage_.isValid() ? mapImage_.constImage() :
(const MagickCore::Image*) NULL),exceptionInfo);
InputIterator first_,
InputIterator last_,
const LayerMethod method_ ) {
+ if (linkImages(first_,last_) == false)
+ return;
GetPPException;
- linkImages( first_, last_ );
MagickCore::Image* image = MergeImageLayers( first_->image(), method_, exceptionInfo );
unlinkImages( first_, last_ );
mergedImage_->replaceImage( image );
MagickCore::MontageInfo
*montageInfo;
+ if (linkImages(first_,last_) == false)
+ return;
+
montageInfo=static_cast<MagickCore::MontageInfo*>(
MagickCore::AcquireMagickMemory(sizeof(MagickCore::MontageInfo)));
if (options_.label().length() != 0)
first_->label(options_.label());
- // Create linked image list
- linkImages(first_,last_);
-
// Do montage
GetPPException;
images=MagickCore::MontageImages(first_->image(),montageInfo,
InputIterator first_,
InputIterator last_,
size_t frames_ ) {
+ if (linkImages(first_,last_) == false)
+ return;
GetPPException;
- // Build image list
- linkImages( first_, last_ );
MagickCore::Image* images = MagickCore::MorphImages( first_->image(), frames_,
exceptionInfo);
// Unlink image list
void mosaicImages( Image *mosaicImage_,
InputIterator first_,
InputIterator last_ ) {
+ if (linkImages(first_,last_) == false)
+ return;
GetPPException;
- linkImages( first_, last_ );
MagickCore::Image* image = MagickCore::MergeImageLayers( first_->image(),
MosaicLayer,exceptionInfo );
unlinkImages( first_, last_ );
void optimizeImageLayers( Container *optimizedImages_,
InputIterator first_,
InputIterator last_ ) {
+ if (linkImages(first_,last_) == false)
+ return;
GetPPException;
-
- linkImages( first_, last_ );
MagickCore::Image* images = OptimizeImageLayers( first_->image(), exceptionInfo );
unlinkImages( first_, last_ );
void optimizePlusImageLayers( Container *optimizedImages_,
InputIterator first_,
InputIterator last_ ) {
+ if (linkImages(first_,last_) == false)
+ return;
GetPPException;
-
- linkImages( first_, last_ );
MagickCore::Image* images = OptimizePlusImageLayers( first_->image(), exceptionInfo );
unlinkImages( first_, last_ );
template<class InputIterator>
void optimizeTransparency(InputIterator first_,InputIterator last_)
{
+ if (linkImages(first_,last_) == false)
+ return;
GetPPException;
-
- linkImages(first_,last_);
OptimizeImageTransparency(first_->image(),exceptionInfo);
unlinkImages(first_,last_ );
void quantizeImages( InputIterator first_,
InputIterator last_,
bool measureError_ = false ) {
+ if (linkImages(first_,last_) == false)
+ return;
GetPPException;
- linkImages( first_, last_ );
-
MagickCore::QuantizeImages( first_->quantizeInfo(),
first_->image() );
unlinkImages( first_, last_ );
MagickCore::Image
*newImage;
+ if (linkImages(first_,last_) == false)
+ return;
GetPPException;
- linkImages(first_,last_);
newImage=MagickCore::SmushImages(first_->constImage(),
(MagickBooleanType) stack_,offset_,exceptionInfo);
unlinkImages(first_,last_);
const std::string &imageSpec_,
bool adjoin_ = true ) {
+ if (linkImages(first_,last_) == false)
+ return;
+
first_->adjoin( adjoin_ );
GetPPException;
-
- linkImages( first_, last_ );
::ssize_t errorStat = MagickCore::WriteImages( first_->constImageInfo(),
first_->image(),
imageSpec_.c_str(),
InputIterator last_,
Blob *blob_,
bool adjoin_ = true) {
+ if (linkImages(first_,last_) == false)
+ return;
first_->adjoin( adjoin_ );
- linkImages( first_, last_ );
-
GetPPException;
size_t length = 2048; // Efficient size for small images
void* data = MagickCore::ImagesToBlob( first_->imageInfo(),