This repository was archived by the owner on Jul 5, 2021. It is now read-only.
Repository navigation
Expand file tree
/
Copy pathMagickFormatInfo.cpp
More file actions
115 lines (103 loc) · 3.91 KB
/
Copy pathMagickFormatInfo.cpp
File metadata and controls
115 lines (103 loc) · 3.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
//=================================================================================================
// Copyright 2014-2015 Dirk Lemstra <https://graphicsmagick.codeplex.com/>
//
// Licensed under the ImageMagick License (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
//
// http://www.imagemagick.org/script/license.php
//
// Unless required by applicable law or agreed to in writing, software distributed under the
// License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
// express or implied. See the License for the specific language governing permissions and
// limitations under the License.
//=================================================================================================
#include "Stdafx.h"
#include "MagickFormatInfo.h"
#include "Exceptions\Base\MagickException.h"
#include "Helpers\EnumHelper.h"
using namespace System::Globalization;
namespace GraphicsMagick
{
//==============================================================================================
void MagickFormatInfo::AddStealthCoder(std::list<Magick::CoderInfo>* coderList, std::string name)
{
try
{
Magick::CoderInfo coderInfo(name);
coderList->push_back(coderInfo);
}
catch(Magick::ErrorModule)
{
}
catch(Magick::Exception& exception)
{
MagickException::Throw(exception);
}
}
//==============================================================================================
Collection<MagickFormatInfo^>^ MagickFormatInfo::LoadFormats()
{
Collection<MagickFormatInfo^>^ result = gcnew Collection<MagickFormatInfo^>();
std::list<Magick::CoderInfo> coderList;
try
{
coderInfoList(&coderList);
}
catch(Magick::Exception& exception)
{
MagickException::Throw(exception);
}
AddStealthCoder(&coderList, "DIB");
AddStealthCoder(&coderList, "TIF");
std::list<Magick::CoderInfo>::const_iterator coder = coderList.begin();
while(coder != coderList.end())
{
MagickFormatInfo^ formatInfo = gcnew MagickFormatInfo();
String^ name = Marshaller::Marshal(coder->name());
name = name->Replace("-", "");
if (name == "3FR")
name = "ThreeFr";
if (!_CustomStealthFormats->Contains(name))
{
formatInfo->_Format = EnumHelper::Parse<MagickFormat>(name, MagickFormat::Unknown);
formatInfo->_Description = Marshaller::Marshal(coder->description());
formatInfo->_CoderInfo = new Magick::CoderInfo(*coder);
result->Add(formatInfo);
}
coder++;
}
return result;
}
//==============================================================================================
String^ MagickFormatInfo::Description::get()
{
return _Description;
}
//==============================================================================================
MagickFormat MagickFormatInfo::Format::get()
{
return _Format;
}
//==============================================================================================
bool MagickFormatInfo::IsMultiFrame::get()
{
return _CoderInfo->isMultiFrame();
}
//==============================================================================================
bool MagickFormatInfo::IsReadable::get()
{
return _CoderInfo->isReadable();
}
//==============================================================================================
bool MagickFormatInfo::IsWritable::get()
{
return _CoderInfo->isWritable();
}
//==============================================================================================
String^ MagickFormatInfo::ToString()
{
return String::Format(CultureInfo::InvariantCulture, "{0}: {1} ({2}R{3}W{4}M)", Format, Description,
IsReadable ? "+" : "-", IsWritable ? "+" : "-", IsMultiFrame ? "+" : "-");
}
//==============================================================================================
}