#include <iostream>
#include <list>
#include <algorithm>
#include <Magick++/Image.h>
#include <Magick++/STL.h>
static std::string getInitializer(const std::string module)
{
if ((module == "BGR") || (module == "CMYK") || (module =="RGB") || (module =="YUV"))
return "interlace";
if (module == "PNG")
return "png";
return "";
}
int main() {
std::list<Magick::CoderInfo> coderList;
coderInfoList(&coderList, Magick::CoderInfo::TrueMatch, Magick::CoderInfo::AnyMatch, Magick::CoderInfo::AnyMatch);
std::list<std::string> allowedNames;
allowedNames.push_back("BGR");
allowedNames.push_back("BMP");
allowedNames.push_back("CMYK");
allowedNames.push_back("DDS");
allowedNames.push_back("EPT");
allowedNames.push_back("FAX");
allowedNames.push_back("HTML");
allowedNames.push_back("JP2");
allowedNames.push_back("JPEG");
allowedNames.push_back("PCD");
allowedNames.push_back("PCD");
allowedNames.push_back("PDF");
allowedNames.push_back("PNG");
allowedNames.push_back("PS");
allowedNames.push_back("PS2");
allowedNames.push_back("PS3");
allowedNames.push_back("RGB");
allowedNames.push_back("SVG");
allowedNames.push_back("TIFF");
allowedNames.push_back("TXT");
allowedNames.push_back("YCBCR");
std::list<std::string> excludeList;
excludeList.push_back("GRADIENT");
excludeList.push_back("LABEL");
excludeList.push_back("NULL");
excludeList.push_back("PATTERN");
excludeList.push_back("PLASMA");
excludeList.push_back("SCREENSHOT");
excludeList.push_back("TXT");
excludeList.push_back("XC");
for (std::list<Magick::CoderInfo>::iterator it = coderList.begin(); it != coderList.end(); it++)
{
std::string module=(*it).module();
if (std::find(excludeList.begin(), excludeList.end(), module) != excludeList.end())
continue;
if ((*it).name() == module)
std::cout << ((*it).isWritable() ? "+" : "-") << module << ":" << getInitializer(module) << std::endl;
else if (std::find(allowedNames.begin(), allowedNames.end(), module) != allowedNames.end())
std::cout << ((*it).isWritable() ? "+" : "-") << (*it).name() << ":" << getInitializer(module) << std::endl;
}
}