]> granicus.if.org Git - imagemagick/commitdiff
Added canReadMultiThreaded and canWriteMultiThreaded to CoderInfo.
authordirk <dirk@git.imagemagick.org>
Thu, 8 Jan 2015 21:46:22 +0000 (21:46 +0000)
committerdirk <dirk@git.imagemagick.org>
Thu, 8 Jan 2015 21:46:22 +0000 (21:46 +0000)
Magick++/lib/CoderInfo.cpp
Magick++/lib/Magick++/CoderInfo.h
Magick++/lib/Magick++/Include.h

index 070360768d4e19983c3ad9ef7703e65e3806fd49..f3511dd8f844eb6918c5314bef0386e0387ae658 100644 (file)
@@ -1,7 +1,7 @@
 // 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;
@@ -50,17 +53,18 @@ Magick::CoderInfo::CoderInfo(const std::string &name_)
   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;
     }
 }
 
@@ -73,16 +77,27 @@ Magick::CoderInfo& Magick::CoderInfo::operator=(const CoderInfo &coder_)
   // 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);
index 7b52f81c69769ec2907fd2f90b008c08f52108fd..ede59c08984fd580378caca66acbff083e143b3c 100644 (file)
@@ -41,6 +41,12 @@ namespace Magick
     // Assignment operator
     CoderInfo& operator=(const CoderInfo &coder_);
 
+    // Format can read multi-threaded
+    bool canReadMultiThreaded(void) const;
+
+    // Format can write multi-threaded
+    bool canWriteMultiThreaded(void) const;
+
     // Format description
     std::string description(void) const;
 
@@ -63,12 +69,13 @@ namespace Magick
     bool unregister(void) const;
 
   private:
-    std::string _name;
-    std::string _description;
-    std::string _mimeType;
-    bool        _isReadable;
-    bool        _isWritable;
-    bool        _isMultiFrame;
+    std::string      _description;
+    bool             _isMultiFrame;
+    bool             _isReadable;
+    bool             _isWritable;
+    std::string      _mimeType;
+    std::string      _name;
+    MagickStatusType _threadSupport;
   };
 
 } // namespace Magick
index d65feeebd64b9c49c8918f96a16d49b917f27254..3d7d841988c49f999e4882b14d82b7bbd167bead 100644 (file)
@@ -271,6 +271,7 @@ namespace Magick
   using MagickCore::Quantum;
   using MagickCore::MagickRealType;
   using MagickCore::MagickSizeType;
+  using MagickCore::MagickStatusType;
 
   // Boolean types
   using MagickCore::MagickBooleanType;
@@ -973,8 +974,17 @@ namespace Magick
   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;
@@ -1009,6 +1019,12 @@ namespace Magick
   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;