1 // This may look like C code, but it is really -*- C++ -*-
3 // Copyright Bob Friesenhahn, 2001, 2002
5 // CoderInfo implementation
8 #define MAGICKCORE_IMPLEMENTATION 1
9 #define MAGICK_PLUSPLUS_IMPLEMENTATION 1
11 #include "Magick++/Include.h"
12 #include "Magick++/CoderInfo.h"
13 #include "Magick++/Exception.h"
17 // Default constructor
18 Magick::CoderInfo::CoderInfo ( void )
28 Magick::CoderInfo::CoderInfo ( const Magick::CoderInfo &coder_ )
31 _description = coder_._description;
32 _isReadable = coder_._isReadable;
33 _isWritable = coder_._isWritable;
34 _isMultiFrame = coder_._isMultiFrame;
37 Magick::CoderInfo::CoderInfo ( const std::string &name_ )
44 ExceptionInfo exceptionInfo;
45 GetExceptionInfo( &exceptionInfo );
46 const Magick::MagickInfo *magickInfo = GetMagickInfo( name_.c_str(), &exceptionInfo );
47 throwException( exceptionInfo );
48 (void) DestroyExceptionInfo( &exceptionInfo );
51 throwExceptionExplicit(OptionError, "Coder not found", name_.c_str() );
55 _name = string(magickInfo->name);
56 _description = string(magickInfo->description);
57 _isReadable = ((magickInfo->decoder == 0) ? false : true);
58 _isWritable = ((magickInfo->encoder == 0) ? false : true);
59 _isMultiFrame = ((magickInfo->adjoin == 0) ? false : true);
63 Magick::CoderInfo::~CoderInfo ( void )
69 std::string Magick::CoderInfo::name( void ) const
75 std::string Magick::CoderInfo::description( void ) const
81 bool Magick::CoderInfo::isReadable( void ) const
86 // Format is writeable
87 bool Magick::CoderInfo::isWritable( void ) const
92 // Format supports multiple frames
93 bool Magick::CoderInfo::isMultiFrame( void ) const
98 // Assignment operator
99 Magick::CoderInfo& Magick::CoderInfo::operator= (const CoderInfo &coder_ )
101 // If not being set to ourself
104 _name = coder_._name;
105 _description = coder_._description;
106 _isReadable = coder_._isReadable;
107 _isWritable = coder_._isWritable;
108 _isMultiFrame = coder_._isMultiFrame;
113 // Construct from MagickCore::MagickInfo*
114 Magick::CoderInfo::CoderInfo ( const MagickCore::MagickInfo *magickInfo_ )
115 : _name(string(magickInfo_->name ? magickInfo_->name : "")),
116 _description(string(magickInfo_->description ? magickInfo_->description : "")),
117 _isReadable(magickInfo_->decoder ? true : false),
118 _isWritable(magickInfo_->encoder ? true : false),
119 _isMultiFrame(magickInfo_->adjoin ? true : false)
121 // Nothing more to do