]> granicus.if.org Git - imagemagick/blob - Magick++/lib/CoderInfo.cpp
Changed order of private members.
[imagemagick] / Magick++ / lib / CoderInfo.cpp
1 // This may look like C code, but it is really -*- C++ -*-
2 //
3 // Copyright Bob Friesenhahn, 2001, 2002
4 //
5 // CoderInfo implementation
6 //
7
8 #define MAGICKCORE_IMPLEMENTATION  1
9 #define MAGICK_PLUSPLUS_IMPLEMENTATION  1
10
11 #include "Magick++/Include.h"
12 #include "Magick++/CoderInfo.h"
13 #include "Magick++/Exception.h"
14
15 using namespace std;
16
17 // Default constructor
18 Magick::CoderInfo::CoderInfo ( void )
19   : _name(),
20     _description(),
21     _mimeType(),
22     _isReadable(false),
23     _isWritable(false),
24     _isMultiFrame(false)
25 {
26 }
27
28 // Copy constructor
29 Magick::CoderInfo::CoderInfo ( const Magick::CoderInfo &coder_ )
30 {
31   _name         = coder_._name;
32   _description  = coder_._description;
33   _mimeType     = coder_._mimeType;
34   _isReadable   = coder_._isReadable;
35   _isWritable   = coder_._isWritable;
36   _isMultiFrame = coder_._isMultiFrame;
37 }
38
39 Magick::CoderInfo::CoderInfo ( const std::string &name_ )
40   : _name(),
41     _description(),
42     _mimeType(),
43     _isReadable(false),
44     _isWritable(false),
45     _isMultiFrame(false)
46 {
47   ExceptionInfo exceptionInfo;
48   GetExceptionInfo( &exceptionInfo );
49   const Magick::MagickInfo *magickInfo = GetMagickInfo( name_.c_str(),
50     &exceptionInfo );
51   throwException( exceptionInfo );
52   (void) DestroyExceptionInfo( &exceptionInfo );
53   if( magickInfo == 0 )
54     {
55       throwExceptionExplicit(OptionError, "Coder not found", name_.c_str() );
56     }
57   else
58     {
59       _name         = string(magickInfo->name);
60       _description  = string(magickInfo->description);
61       _mimeType     = string(magickInfo->mime_type ? magickInfo->mime_type : "");
62       _isReadable   = ((magickInfo->decoder == 0) ? false : true);
63       _isWritable   = ((magickInfo->encoder == 0) ? false : true);
64       _isMultiFrame = ((magickInfo->adjoin == 0) ? false : true);
65     }
66 }
67
68 Magick::CoderInfo::~CoderInfo ( void )
69 {
70   // Nothing to do
71 }
72
73 // Format description
74 std::string Magick::CoderInfo::description( void ) const
75 {
76   return _description;
77 }
78
79 // Format is readable
80 bool Magick::CoderInfo::isReadable( void ) const
81 {
82   return _isReadable;
83 }
84
85 // Format is writeable
86 bool Magick::CoderInfo::isWritable( void ) const
87 {
88   return _isWritable;
89 }
90
91 // Format supports multiple frames
92 bool Magick::CoderInfo::isMultiFrame( void ) const
93 {
94   return _isMultiFrame;
95 }
96
97 // Format mime type
98 std::string Magick::CoderInfo::mimeType( void ) const
99 {
100   return _mimeType;
101 }
102
103 // Format name
104 std::string Magick::CoderInfo::name( void ) const
105 {
106   return _name;
107 }
108
109 // Assignment operator
110 Magick::CoderInfo& Magick::CoderInfo::operator= ( const CoderInfo &coder_ )
111 {
112   // If not being set to ourself
113   if (this != &coder_)
114     {
115       _name         = coder_._name;
116       _description  = coder_._description;
117       _mimeType     = coder_._mimeType;
118       _isReadable   = coder_._isReadable;
119       _isWritable   = coder_._isWritable;
120       _isMultiFrame = coder_._isMultiFrame;
121     }
122   return *this;
123 }
124
125 // Construct from MagickCore::MagickInfo*
126 Magick::CoderInfo::CoderInfo ( const MagickCore::MagickInfo *magickInfo_ )
127   : _name(string(magickInfo_->name ? magickInfo_->name : "")),
128     _description(string(magickInfo_->description ? magickInfo_->description : "")),
129     _mimeType(string(magickInfo_->mime_type ? magickInfo_->mime_type : "")),
130     _isReadable(magickInfo_->decoder ? true : false),
131     _isWritable(magickInfo_->encoder ? true : false),
132     _isMultiFrame(magickInfo_->adjoin ? true : false)
133 {
134   // Nothing more to do
135 }