blob: 4083e82a9f518c26fd988c185e50af2e7b9c319c [file] [log] [blame]
cristy3ed852e2009-09-05 21:47:34 +00001// 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
15using namespace std;
16
17Magick::CoderInfo::CoderInfo ( const std::string &name_ )
18 : _name(),
19 _description(),
20 _isReadable(false),
21 _isWritable(false),
22 _isMultiFrame(false)
23{
24 ExceptionInfo exceptionInfo;
25 GetExceptionInfo( &exceptionInfo );
26 const Magick::MagickInfo *magickInfo = GetMagickInfo( name_.c_str(), &exceptionInfo );
27 throwException( exceptionInfo );
28 (void) DestroyExceptionInfo( &exceptionInfo );
29 if( magickInfo == 0 )
30 {
31 throwExceptionExplicit(OptionError, "Coder not found", name_.c_str() );
32 }
33 else
34 {
35 _name = string(magickInfo->name);
36 _description = string(magickInfo->description);
37 _isReadable = ((magickInfo->decoder == 0) ? false : true);
38 _isWritable = ((magickInfo->encoder == 0) ? false : true);
39 _isMultiFrame = ((magickInfo->adjoin == 0) ? false : true);
40 }
41}
42
43Magick::CoderInfo::~CoderInfo ( void )
44{
45 // Nothing to do
46}
47
48// Format name
49std::string Magick::CoderInfo::name( void ) const
50{
51 return _name;
52}
53
54// Format description
55std::string Magick::CoderInfo::description( void ) const
56{
57 return _description;
58}
59
60// Format is readable
61bool Magick::CoderInfo::isReadable( void ) const
62{
63 return _isReadable;
64}
65
66// Format is writeable
67bool Magick::CoderInfo::isWritable( void ) const
68{
69 return _isWritable;
70}
71
72// Format supports multiple frames
73bool Magick::CoderInfo::isMultiFrame( void ) const
74{
75 return _isMultiFrame;
76}
77
78// Construct from MagickCore::MagickInfo*
79Magick::CoderInfo::CoderInfo ( const MagickCore::MagickInfo *magickInfo_ )
80 : _name(string(magickInfo_->name ? magickInfo_->name : "")),
81 _description(string(magickInfo_->description ? magickInfo_->description : "")),
82 _isReadable(magickInfo_->decoder ? true : false),
83 _isWritable(magickInfo_->encoder ? true : false),
84 _isMultiFrame(magickInfo_->adjoin ? true : false)
85{
86 // Nothing more to do
87}
88