118 lines
2.8 KiB
C++
118 lines
2.8 KiB
C++
#include "HwpFileHeader.h"
|
|
|
|
namespace HWP
|
|
{
|
|
CHwpFileHeader::CHwpFileHeader()
|
|
{}
|
|
|
|
bool CHwpFileHeader::Parse(CHWPStream& oBuffer)
|
|
{
|
|
if (!oBuffer.IsValid())
|
|
return false;
|
|
|
|
oBuffer.ReadString(m_sSignature, 32, EStringCharacter::ASCII);
|
|
|
|
if (L"HWP Document File" != m_sSignature)
|
|
return false;
|
|
|
|
//version
|
|
m_sVersion = std::to_wstring((int)oBuffer[3]) + std::to_wstring((int)oBuffer[2]) + std::to_wstring((int)oBuffer[1]) + std::to_wstring((int)oBuffer[0]);
|
|
oBuffer.Skip(4);
|
|
|
|
m_bCompressed = CHECK_FLAG(oBuffer[0], 0x01);
|
|
m_bPasswordEncrypted = CHECK_FLAG(oBuffer[0], 0x02);
|
|
m_bDistributable = CHECK_FLAG(oBuffer[0], 0x04);
|
|
m_bSaveScript = CHECK_FLAG(oBuffer[0], 0x08);
|
|
m_bDRMprotected = CHECK_FLAG(oBuffer[0], 0x10);
|
|
m_bHasXMLTemplateStorage =CHECK_FLAG(oBuffer[0], 0x20);
|
|
m_bHasDocumentHistory = CHECK_FLAG(oBuffer[0], 0x40);
|
|
m_bHasPkiSignature = CHECK_FLAG(oBuffer[0], 0x80);
|
|
|
|
oBuffer.Skip(1);
|
|
|
|
m_bPkiEncrypted = CHECK_FLAG(oBuffer[0], 0x01);
|
|
m_bReservePkiSignature = CHECK_FLAG(oBuffer[0], 0x02);
|
|
m_bPkiCertificateDRM = CHECK_FLAG(oBuffer[0], 0x04);
|
|
m_bCCLDocument = CHECK_FLAG(oBuffer[0], 0x08);
|
|
m_bMobileOptimized = CHECK_FLAG(oBuffer[0], 0x10);
|
|
m_bPrivateInformation = CHECK_FLAG(oBuffer[0], 0x20);
|
|
m_bModifyTracking = CHECK_FLAG(oBuffer[0], 0x40);
|
|
m_bCopyrightKOGL = CHECK_FLAG(oBuffer[0], 0x80);
|
|
|
|
oBuffer.Skip(1);
|
|
|
|
m_bHasVideoControl = CHECK_FLAG(oBuffer[0], 0x01);
|
|
m_bHasMarkFieldControl = CHECK_FLAG(oBuffer[0], 0x02);
|
|
|
|
oBuffer.Skip(2);
|
|
|
|
m_bCopyrighted = CHECK_FLAG(oBuffer[0], 0x01);
|
|
m_bCopyProhibited = CHECK_FLAG(oBuffer[0], 0x02);
|
|
m_bCopyPermitted = CHECK_FLAG(oBuffer[0], 0x04);
|
|
|
|
oBuffer.Skip(4);
|
|
|
|
//encryptVersion
|
|
oBuffer.Skip(4);
|
|
|
|
m_nCountryKOGLLicensed = (int)oBuffer[0];
|
|
|
|
return true;
|
|
}
|
|
|
|
bool CHwpFileHeader::Parse(CXMLReader& oReader)
|
|
{
|
|
HWP_STRING wsMajor, wsMinor, wsMicro, wsBuildNumber;
|
|
|
|
START_READ_ATTRIBUTES(oReader)
|
|
{
|
|
if ("major" == sAttributeName)
|
|
wsMajor = oReader.GetText();
|
|
else if ("minor" == sAttributeName)
|
|
wsMinor = oReader.GetText();
|
|
else if ("micro" == sAttributeName)
|
|
wsMicro = oReader.GetText();
|
|
else if ("buildNumber" == sAttributeName)
|
|
wsBuildNumber = oReader.GetText();
|
|
}
|
|
END_READ_ATTRIBUTES(oReader)
|
|
|
|
m_sVersion = ((!wsMajor.empty()) ? wsMajor : L"0") +
|
|
((!wsMinor.empty()) ? wsMinor : L"0") +
|
|
((!wsMicro.empty()) ? wsMicro : L"0") +
|
|
((!wsBuildNumber.empty()) ? wsBuildNumber : L"0");
|
|
|
|
return true;
|
|
}
|
|
|
|
bool CHwpFileHeader::Compressed() const
|
|
{
|
|
return m_bCompressed;
|
|
}
|
|
|
|
bool CHwpFileHeader::PasswordEncrypted() const
|
|
{
|
|
return m_bPasswordEncrypted;
|
|
}
|
|
|
|
bool CHwpFileHeader::Distributable() const
|
|
{
|
|
return m_bDistributable;
|
|
}
|
|
|
|
bool CHwpFileHeader::SignatureEmpty() const
|
|
{
|
|
return m_sSignature.empty();
|
|
}
|
|
|
|
bool CHwpFileHeader::VersionEmpty() const
|
|
{
|
|
return m_sVersion.empty();
|
|
}
|
|
|
|
HWP_STRING CHwpFileHeader::GetVersion() const
|
|
{
|
|
return m_sVersion;
|
|
}
|
|
}
|