Files
DocumentServer-v-9.2.0/core/HwpFile/HwpDoc/HwpFileHeader.cpp
Yajbir Singh f1b860b25c
Some checks failed
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

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;
}
}