// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 2001, 2002
-// Copyright Dirk Lemstra 2013-2014
+// Copyright Dirk Lemstra 2013-2015
//
// CoderInfo implementation
//
using namespace std;
Magick::CoderInfo::CoderInfo(void)
- : _name(),
- _description(),
- _mimeType(),
+ : _description(),
+ _isMultiFrame(false),
_isReadable(false),
_isWritable(false),
- _isMultiFrame(false)
+ _mimeType(),
+ _name(),
+ _threadSupport(NoThreadSupport)
{
}
Magick::CoderInfo::CoderInfo(const Magick::CoderInfo &coder_)
+ : _description(coder_._description),
+ _isMultiFrame(coder_._isMultiFrame),
+ _isReadable(coder_._isReadable),
+ _isWritable(coder_._isWritable),
+ _mimeType(coder_._mimeType),
+ _name(coder_._name),
+ _threadSupport(coder_._threadSupport)
{
- _name=coder_._name;
- _description=coder_._description;
- _mimeType=coder_._mimeType;
- _isReadable=coder_._isReadable;
- _isWritable=coder_._isWritable;
- _isMultiFrame=coder_._isMultiFrame;
}
Magick::CoderInfo::CoderInfo(const std::string &name_)
- : _name(),
- _description(),
- _mimeType(),
+ : _description(),
+ _isMultiFrame(false),
_isReadable(false),
_isWritable(false),
- _isMultiFrame(false)
+ _mimeType(),
+ _name(),
+ _threadSupport(NoThreadSupport)
{
const Magick::MagickInfo
*magickInfo;
magickInfo=GetMagickInfo(name_.c_str(),exceptionInfo);
ThrowPPException;
if (magickInfo == 0)
- {
- throwExceptionExplicit(OptionError,"Coder not found",name_.c_str());
- }
+ throwExceptionExplicit(OptionError,"Coder not found",name_.c_str());
else
{
- _name=string(magickInfo->name);
_description=string(magickInfo->description);
+ _isMultiFrame=((magickInfo->adjoin == MagickFalse) ? false : true);
+ _isReadable=((magickInfo->decoder == (MagickCore::DecodeImageHandler *)
+ NULL) ? false : true);
+ _isWritable=((magickInfo->encoder == (MagickCore::EncodeImageHandler *)
+ NULL) ? false : true);
_mimeType=string(magickInfo->mime_type ? magickInfo->mime_type : "");
- _isReadable=((magickInfo->decoder == 0) ? false : true);
- _isWritable=((magickInfo->encoder == 0) ? false : true);
- _isMultiFrame=((magickInfo->adjoin == 0) ? false : true);
+ _name=string(magickInfo->name);
+ _threadSupport=magickInfo->thread_support;
}
}
// If not being set to ourself
if (this != &coder_)
{
- _name=coder_._name;
_description=coder_._description;
- _mimeType=coder_._mimeType;
+ _isMultiFrame=coder_._isMultiFrame;
_isReadable=coder_._isReadable;
_isWritable=coder_._isWritable;
- _isMultiFrame=coder_._isMultiFrame;
+ _mimeType=coder_._mimeType;
+ _name=coder_._name;
+ _threadSupport=coder_._threadSupport;
}
return(*this);
}
+bool Magick::CoderInfo::canReadMultiThreaded(void) const
+{
+ return((_threadSupport & DecoderThreadSupport) == DecoderThreadSupport);
+}
+
+bool Magick::CoderInfo::canWriteMultiThreaded(void) const
+{
+ return((_threadSupport & EncoderThreadSupport) == EncoderThreadSupport);
+}
+
std::string Magick::CoderInfo::description(void) const
{
return(_description);
using MagickCore::Quantum;
using MagickCore::MagickRealType;
using MagickCore::MagickSizeType;
+ using MagickCore::MagickStatusType;
// Boolean types
using MagickCore::MagickBooleanType;
using MagickCore::InverseColorInterpolate;
// Statistic type
+ using MagickCore::StatisticType;
+ using MagickCore::UndefinedStatistic;
+ using MagickCore::GradientStatistic;
+ using MagickCore::MaximumStatistic;
+ using MagickCore::MeanStatistic;
using MagickCore::MedianStatistic;
+ using MagickCore::MinimumStatistic;
+ using MagickCore::ModeStatistic;
using MagickCore::NonpeakStatistic;
+ using MagickCore::RootMeanSquareStatistic;
+ using MagickCore::StandardDeviationStatistic;
// StorageType type
using MagickCore::StorageType;
using MagickCore::ObliqueStyle;
using MagickCore::AnyStyle;
+ // Thread support type
+ using MagickCore::MagickThreadSupport;
+ using MagickCore::NoThreadSupport;
+ using MagickCore::DecoderThreadSupport;
+ using MagickCore::EncoderThreadSupport;
+
// Virtual pixel methods
using MagickCore::VirtualPixelMethod;
using MagickCore::UndefinedVirtualPixelMethod;