#include "CERT_filetypes.h" #include #include namespace CERT { namespace Images { filetype filetypeFromString( const std::string &str ) { std::string tmp( str ); std::transform( tmp.begin(), tmp.end(), tmp.begin(), ::tolower ); if( tmp == "tiff" || tmp == "tif" ) return tiff; if( tmp == "bmp" ) return bmp; if( tmp == "gif" ) return gif; if( tmp == "jpeg" || tmp == "jpg" ) return jpeg; if( tmp == "png" ) return png; if( tmp == "jpeg2000" ) return jpeg2000; if( tmp == "rimage" ) return rimage; throw invalidFiletype( ("Invalid filetype string: " + str) ); return bmp; } std::string stringFromFiletype( filetype type ) { switch( type ) { case tiff: return "tiff"; break; case bmp: return "bmp"; break; case gif: return "gif"; break; case jpeg: return "jpeg"; break; case png: return "png"; break; case jpeg2000: return "jpeg2000"; break; case rimage: return "rimage"; break; case end_types: break; } std::ostringstream ostr; ostr << type; throw invalidFiletype( ("Invalid filetype " + ostr.str()) ); return "bmp"; } std::string extensionFromFiletype( filetype type ) { switch( type ) { case tiff: return ".tiff"; break; case bmp: return ".bmp"; break; case gif: return ".gif"; break; case jpeg: return ".jpeg"; break; case png: return ".png"; break; case jpeg2000: return ".jp2"; break; case rimage: return ".rimage"; break; case end_types: break; } std::ostringstream ostr; ostr << type; throw invalidFiletype( ("Invalid filetype " + ostr.str()) ); return ".bmp"; } std::vector< std::string > knownFiletypes() { std::vector< std::string > types; for( int type = static_cast(begin_types); type < static_cast(end_types); ++type ) { types.push_back( stringFromFiletype( static_cast(type) ) ); } return types; } } } // end namespace CERT