| // This may look like C code, but it is really -*- C++ -*- |
| // |
| // Copyright Bob Friesenhahn, 2001, 2002 |
| // Copyright Dirk Lemstra 2013-2015 |
| // |
| // CoderInfo implementation |
| // |
| |
| #define MAGICKCORE_IMPLEMENTATION 1 |
| #define MAGICK_PLUSPLUS_IMPLEMENTATION 1 |
| |
| #include "Magick++/Include.h" |
| #include "Magick++/CoderInfo.h" |
| #include "Magick++/Exception.h" |
| |
| using namespace std; |
| |
| Magick::CoderInfo::CoderInfo(void) |
| : _decoderThreadSupport(false), |
| _description(), |
| _encoderThreadSupport(false), |
| _isMultiFrame(false), |
| _isReadable(false), |
| _isWritable(false), |
| _mimeType(), |
| _module(), |
| _name() |
| { |
| } |
| |
| Magick::CoderInfo::CoderInfo(const Magick::CoderInfo &coder_) |
| : _decoderThreadSupport(coder_._decoderThreadSupport), |
| _description(coder_._description), |
| _encoderThreadSupport(coder_._encoderThreadSupport), |
| _isMultiFrame(coder_._isMultiFrame), |
| _isReadable(coder_._isReadable), |
| _isWritable(coder_._isWritable), |
| _mimeType(coder_._mimeType), |
| _module(coder_._module), |
| _name(coder_._name) |
| { |
| } |
| |
| Magick::CoderInfo::CoderInfo(const std::string &name_) |
| : _decoderThreadSupport(false), |
| _description(), |
| _encoderThreadSupport(false), |
| _isMultiFrame(false), |
| _isReadable(false), |
| _isWritable(false), |
| _mimeType(), |
| _module(), |
| _name() |
| { |
| const Magick::MagickInfo |
| *magickInfo; |
| |
| GetPPException; |
| magickInfo=GetMagickInfo(name_.c_str(),exceptionInfo); |
| ThrowPPException(false); |
| if (magickInfo == 0) |
| throwExceptionExplicit(MagickCore::OptionError,"Coder not found", |
| name_.c_str()); |
| else |
| { |
| _decoderThreadSupport=(GetMagickDecoderThreadSupport(magickInfo) == |
| MagickTrue) ? true : false; |
| _description=std::string(magickInfo->description); |
| _encoderThreadSupport=(GetMagickEncoderThreadSupport(magickInfo) == |
| MagickTrue) ? true : false; |
| _isMultiFrame=(GetMagickAdjoin(magickInfo) == MagickTrue) ? true : false; |
| _isReadable=((magickInfo->decoder == (MagickCore::DecodeImageHandler *) |
| NULL) ? false : true); |
| _isWritable=((magickInfo->encoder == (MagickCore::EncodeImageHandler *) |
| NULL) ? false : true); |
| _mimeType=std::string(magickInfo->mime_type != (char *) NULL ? |
| magickInfo->mime_type : ""); |
| _module=std::string(magickInfo->module); |
| _name=std::string(magickInfo->name); |
| } |
| } |
| |
| Magick::CoderInfo::~CoderInfo(void) |
| { |
| } |
| |
| Magick::CoderInfo& Magick::CoderInfo::operator=(const CoderInfo &coder_) |
| { |
| // If not being set to ourself |
| if (this != &coder_) |
| { |
| _decoderThreadSupport=coder_._decoderThreadSupport; |
| _description=coder_._description; |
| _encoderThreadSupport=coder_._encoderThreadSupport; |
| _isMultiFrame=coder_._isMultiFrame; |
| _isReadable=coder_._isReadable; |
| _isWritable=coder_._isWritable; |
| _mimeType=coder_._mimeType; |
| _module=coder_._module; |
| _name=coder_._name; |
| } |
| return(*this); |
| } |
| |
| bool Magick::CoderInfo::canReadMultithreaded(void) const |
| { |
| return(_decoderThreadSupport); |
| } |
| |
| bool Magick::CoderInfo::canWriteMultithreaded(void) const |
| { |
| return(_encoderThreadSupport); |
| } |
| |
| std::string Magick::CoderInfo::description(void) const |
| { |
| return(_description); |
| } |
| |
| bool Magick::CoderInfo::isReadable(void) const |
| { |
| return(_isReadable); |
| } |
| |
| bool Magick::CoderInfo::isWritable(void) const |
| { |
| return(_isWritable); |
| } |
| |
| bool Magick::CoderInfo::isMultiFrame(void) const |
| { |
| return(_isMultiFrame); |
| } |
| |
| std::string Magick::CoderInfo::mimeType(void) const |
| { |
| return(_mimeType); |
| } |
| |
| std::string Magick::CoderInfo::module(void) const |
| { |
| return(_module); |
| } |
| |
| std::string Magick::CoderInfo::name(void) const |
| { |
| return(_name); |
| } |
| |
| bool Magick::CoderInfo::unregister(void) const |
| { |
| return(UnregisterMagickInfo(_name.c_str()) != MagickFalse); |
| } |