Files
Work/avifile/ICInfo.hpp
2024-08-07 09:12:07 -04:00

187 lines
3.8 KiB
C++

#ifndef _AVIFILE_ICINFO_HPP_
#define _AVIFILE_ICINFO_HPP_
#ifndef _COMMON_STRING_HPP_
#include <common/string.hpp>
#endif
#ifndef _AVIFILE_FOURCC_HPP_
#include <avifile/fourcc.hpp>
#endif
#ifndef _AVIFILE_FOURCC_HPP_
#include <avifile/fourcc.hpp>
#endif
#ifndef _COM_BSTRING_HPP_
#include <com/bstring.hpp>
#endif
class CompressorInfo : private ICINFO
{
public:
CompressorInfo();
virtual ~CompressorInfo();
DWORD size(void)const;
FOURCC fccType(void)const;
FOURCC fccHandler(void)const;
DWORD flags(void)const;
bool hasCompressFrames(void)const;
bool hasCrunch(void)const;
bool hasDraw(void)const;
bool hasFastTemporalCompression(void)const;
bool hasFastTemporalDecompression(void)const;
bool hasQuality(void)const;
bool hasTemporal(void)const;
String stringFlags(void)const;
DWORD version(void)const;
DWORD versionICM(void)const;
String name(void)const;
String description(void)const;
String driver(void)const;
String toString(void)const;
ICINFO &getICINFO(void);
private:
};
inline
CompressorInfo::CompressorInfo()
{
::memset(&(ICINFO&)*this,0,sizeof(ICINFO));
ICINFO::dwSize=sizeof(ICINFO);
}
inline
CompressorInfo::~CompressorInfo()
{
}
inline
FOURCC CompressorInfo::fccType(void)const
{
return ICINFO::fccType;
}
inline
FOURCC CompressorInfo::fccHandler(void)const
{
return ICINFO::fccHandler;
}
inline
DWORD CompressorInfo::flags(void)const
{
return ICINFO::dwFlags;
}
inline
bool CompressorInfo::hasCompressFrames(void)const
{
return flags()&VIDCF_COMPRESSFRAMES;
}
inline
bool CompressorInfo::hasCrunch(void)const
{
return flags()&VIDCF_CRUNCH;
}
inline
bool CompressorInfo::hasDraw(void)const
{
return flags()&VIDCF_DRAW;
}
inline
bool CompressorInfo::hasFastTemporalCompression(void)const
{
return flags()&VIDCF_FASTTEMPORALC;
}
inline
bool CompressorInfo::hasFastTemporalDecompression(void)const
{
return flags()&VIDCF_FASTTEMPORALD;
}
inline
bool CompressorInfo::hasQuality(void)const
{
return flags()&VIDCF_QUALITY;
}
inline
bool CompressorInfo::hasTemporal(void)const
{
return flags()&VIDCF_TEMPORAL;
}
inline
String CompressorInfo::stringFlags(void)const
{
String string;
if(hasCompressFrames())string+="COMPRESSFRAMES ";
if(hasCrunch())string+="CRUNCH ";
if(hasDraw())string+="DRAW ";
if(hasFastTemporalCompression())string+="FASTTEMPORALC ";
if(hasFastTemporalDecompression())string+="FASTTEMPORALD ";
if(hasQuality())string+="QUALITY ";
if(hasTemporal())string+="TEMPORAL ";
return string;
}
inline
DWORD CompressorInfo::version(void)const
{
return ICINFO::dwVersion;
}
inline
DWORD CompressorInfo::versionICM(void)const
{
return ICINFO::dwVersionICM;
}
inline
String CompressorInfo::name(void)const
{
return BString(ICINFO::szName).toString();
}
inline
String CompressorInfo::description(void)const
{
return BString(ICINFO::szDescription).toString();
}
inline
String CompressorInfo::driver(void)const
{
return BString(ICINFO::szDriver).toString();
}
inline
DWORD CompressorInfo::size(void)const
{
return ICINFO::dwSize;
}
inline
ICINFO &CompressorInfo::getICINFO(void)
{
return (ICINFO&)*this;
}
inline
String CompressorInfo::toString(void)const
{
String string;
string+=String("[CompressorInfo::toString]fccType=")+fccType().toString()+String("\n");
string+=String("[CompressorInfo::toString]fccHandler=")+fccHandler().toString()+String("\n");
string+=String("[CompressorInfo::toString]flags=")+stringFlags()+String("\n");
string+=String("[CompressorInfo::toString]version=")+String().fromInt(version())+String("\n");
string+=String("[CompressorInfo::toString]versionICM=")+String().fromInt(versionICM())+String("\n");
string+=String("[CompressorInfo::toString]name=")+name()+String("\n");
string+=String("[CompressorInfo::toString]description=")+description()+String("\n");
string+=String("[CompressorInfo::toString]driver=")+description()+String("\n");
return string;
}
#endif