Files
core/ASCOfficePPTFile/PPTFormatLib/Records/StyleTextPropAtom.h
Elen.Subbotina b667c8a926 PPTFormat автоподстановки
git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@65645 954022d7-b5bf-4e40-9824-e11837661b57
2016-05-21 00:41:47 +03:00

76 lines
1.6 KiB
C++

#pragma once
#include "../Reader/Records.h"
class CRecordStyleTextPropAtom : public CUnknownRecord
{
public:
// íóæíî åùå õðàíèòü ïîçèöèþ â ñòðèìå,
// óêàçàòåëü íà íà÷àëî
LONG m_lOffsetInStream;
// ïðîñòî äàííûå. áóäóò îáíîâëÿòüñÿ ïî ìåðå ïðèáûòèÿ
// Text.Bytes/Chars.Atom
DWORD m_lCount;
public:
std::vector<CTextPFRun_ppt> m_arrPFs;
std::vector<CTextCFRun_ppt> m_arrCFs;
public:
CRecordStyleTextPropAtom()
{
m_lCount = 0;
m_lOffsetInStream = 0;
}
~CRecordStyleTextPropAtom()
{
m_lCount = 0;
}
void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
m_oHeader = oHeader;
StreamUtils::StreamPosition(m_lOffsetInStream, pStream);
DWORD lMemCount = 0;
DWORD lCountItems = 0;
if (0 == m_lCount)
{
StreamUtils::StreamSeek(m_lOffsetInStream + m_oHeader.RecLen, pStream);
return;
}
while (lMemCount < m_lCount + 1)
{
CTextPFRun_ppt elm;
m_arrPFs.push_back(elm);
m_arrPFs[lCountItems].LoadFromStream(pStream);
lMemCount += m_arrPFs[lCountItems].m_lCount;
++lCountItems;
}
lMemCount = 0;
lCountItems = 0;
while (lMemCount < m_lCount + 1)
{
CTextCFRun_ppt elm;
m_arrCFs.push_back(elm);
m_arrCFs[lCountItems].LoadFromStream(pStream);
lMemCount += m_arrCFs[lCountItems].m_lCount;
++lCountItems;
}
// íà âñÿêèé ñëó÷àé...
// çäåñü êîãäà òåêñò ñíà÷àëà äðóãîé (ò.å. íàïðèìåð - placeholder â ìàñòåðå) -
// òî ó íàñ íåïðàâèëüíî âûñòàâèëñÿ m_lCount...
StreamUtils::StreamSeek(m_lOffsetInStream + m_oHeader.RecLen, pStream);
}
};