From fae20619a47497056073e51720a3517d387cc7de Mon Sep 17 00:00:00 2001 From: dirk Date: Mon, 14 Sep 2015 21:58:35 +0200 Subject: [PATCH] Added new constructor to the Image class of Magick++ to copy part of the image. --- Magick++/lib/Image.cpp | 24 ++++++++++++++++++++++++ Magick++/lib/Magick++/Image.h | 9 ++++++--- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/Magick++/lib/Image.cpp b/Magick++/lib/Image.cpp index b7fc60670..98030a9a1 100644 --- a/Magick++/lib/Image.cpp +++ b/Magick++/lib/Image.cpp @@ -203,6 +203,30 @@ Magick::Image::Image(const Image &image_) _imgRef->increase(); } +Magick::Image::Image(const Image &image_,const Geometry &geometry_) + : _imgRef(new ImageRef) +{ + const RectangleInfo + geometry=geometry_; + + OffsetInfo + offset; + + MagickCore::Image + *image; + + GetPPException; + image=CloneImage(image_.constImage(),geometry_.width(),geometry_.height(), + MagickTrue,exceptionInfo); + replaceImage(image); + _imgRef->options(new Options(*image_.constOptions())); + offset.x=0; + offset.y=0; + (void) CopyImagePixels(image,image_.constImage(),&geometry,&offset, + exceptionInfo); + ThrowImageException; +} + Magick::Image::Image(const size_t width_,const size_t height_, const std::string &map_,const StorageType type_,const void *pixels_) : _imgRef(new ImageRef) diff --git a/Magick++/lib/Magick++/Image.h b/Magick++/lib/Magick++/Image.h index b397ff8f6..6314d02e8 100644 --- a/Magick++/lib/Magick++/Image.h +++ b/Magick++/lib/Magick++/Image.h @@ -64,15 +64,15 @@ namespace Magick Image(const Blob &blob_,const Geometry &size_); // Construct Image of specified size and depth from in-memory BLOB - Image(const Blob &blob_,const Geometry &size,const size_t depth); + Image(const Blob &blob_,const Geometry &size_,const size_t depth_); // Construct Image of specified size, depth, and format from // in-memory BLOB - Image(const Blob &blob_,const Geometry &size,const size_t depth_, + Image(const Blob &blob_,const Geometry &size_,const size_t depth_, const std::string &magick_); // Construct Image of specified size, and format from in-memory BLOB - Image(const Blob &blob_,const Geometry &size,const std::string &magick_); + Image(const Blob &blob_,const Geometry &size_,const std::string &magick_); // Construct a blank image canvas of specified size and color Image(const Geometry &size_,const Color &color_); @@ -80,6 +80,9 @@ namespace Magick // Copy constructor Image(const Image &image_); + // Copy constructor to copy part of the image + Image(const Image &image_,const Geometry &geometry_); + // Construct an image based on an array of raw pixels, of // specified type and mapping, in memory Image(const size_t width_,const size_t height_,const std::string &map_, -- 2.40.0