Files
core/ASCOfficePPTFile/PPTFormatLib/Records/TextSpecInfoAtom.h
Elen.Subbotina 6cab330fca .....
git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@61935 954022d7-b5bf-4e40-9824-e11837661b57
2016-05-20 23:53:57 +03:00

87 lines
2.1 KiB
C++

#pragma once
#include "../Reader/Records.h"
class CRecordTextSpecInfoAtom : public CUnknownRecord
{
public:
// íóæíî åùå õðàíèòü ïîçèöèþ â ñòðèìå,
// óêàçàòåëü íà íà÷àëî
LONG m_lOffsetInStream;
DWORD m_lCount;
private:
std::vector<NSPresentationEditor::CTextSIRun> m_arrSIs;
public:
CRecordTextSpecInfoAtom()
{
m_lCount = 0;
m_lOffsetInStream = 0;
}
~CRecordTextSpecInfoAtom()
{
m_lCount = 0;
}
void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
//return CUnknownRecord::ReadFromStream(oHeader, pStream);
m_oHeader = oHeader;
StreamUtils::StreamPosition(m_lOffsetInStream, pStream);
if (0 == m_lCount)
{
StreamUtils::StreamSeek(m_lOffsetInStream + m_oHeader.RecLen, pStream);
return;
}
DWORD lMemCount = 0;
DWORD lCountItems = 0;
while (lMemCount < m_lCount + 1)
{
NSPresentationEditor::CTextSIRun elm;
m_arrSIs.push_back(elm);
NSStreamReader::Read(pStream, m_arrSIs[lCountItems]);
lMemCount += m_arrSIs[lCountItems].lCount;
++lCountItems;
}
// íà âñÿêèé ñëó÷àé...
// çäåñü êîãäà òåêñò ñíà÷àëà äðóãîé (ò.å. íàïðèìåð - placeholder â ìàñòåðå) -
// òî ó íàñ íåïðàâèëüíî âûñòàâèëñÿ m_lCount...
StreamUtils::StreamSeek(m_lOffsetInStream + m_oHeader.RecLen, pStream);
}
void ApplyProperties(CTextAttributesEx* pTextAttributes)
{
}
virtual CString ToString()
{
XmlUtils::CXmlWriter oWriter;
CString strName = GetRecordName((DWORD)m_oHeader.RecType);
oWriter.WriteNodeBegin(strName, TRUE);
oWriter.WriteAttribute(_T("length"), CDirectory::ToString(m_oHeader.RecLen));
oWriter.WriteAttribute(_T("type"), CDirectory::ToString(m_oHeader.RecType));
oWriter.WriteAttribute(_T("instance"), CDirectory::ToString(m_oHeader.RecInstance));
oWriter.WriteNodeEnd(strName, TRUE, FALSE);
for (size_t nIndexSI = 0; nIndexSI < m_arrSIs.size(); ++nIndexSI)
{
oWriter.WriteString(m_arrSIs[nIndexSI].ToString());
}
oWriter.WriteNodeEnd(strName);
return oWriter.GetXmlString();
}
};