mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-07-20 03:55:47 +08:00
удален лишний код, фиксы ошибок git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@65494 954022d7-b5bf-4e40-9824-e11837661b57
79 lines
1.9 KiB
C++
79 lines
1.9 KiB
C++
#pragma once
|
|
#include "../Reader/Records.h"
|
|
|
|
class CRecordTextSpecInfoAtom : public CUnknownRecord
|
|
{
|
|
public:
|
|
// íóæíî åùå õðàíèòü ïîçèöèþ â ñòðèìå,
|
|
// óêàçàòåëü íà íà÷àëî
|
|
LONG m_lOffsetInStream;
|
|
DWORD m_lCount;
|
|
|
|
std::vector<NSPresentationEditor::CTextSIRun> m_arrSIs;
|
|
|
|
|
|
CRecordTextSpecInfoAtom()
|
|
{
|
|
m_lCount = 0;
|
|
m_lOffsetInStream = 0;
|
|
}
|
|
|
|
~CRecordTextSpecInfoAtom()
|
|
{
|
|
m_lCount = 0;
|
|
}
|
|
|
|
void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
|
|
{
|
|
m_oHeader = oHeader;
|
|
StreamUtils::StreamPosition(m_lOffsetInStream, pStream);
|
|
|
|
DWORD lMemCount = 0;
|
|
while (true)
|
|
{
|
|
NSPresentationEditor::CTextSIRun elm;
|
|
m_arrSIs.push_back(elm);
|
|
|
|
NSStreamReader::Read(pStream, m_arrSIs.back());
|
|
lMemCount += m_arrSIs.back().lCount;
|
|
|
|
int sz = pStream->tell() - m_lOffsetInStream;
|
|
|
|
if (sz >= m_oHeader.RecLen)
|
|
break;
|
|
}
|
|
|
|
// íà âñÿêèé ñëó÷àé...
|
|
// çäåñü êîãäà òåêñò ñíà÷àëà äðóãîé (ò.å. íàïðèìåð - placeholder â ìàñòåðå) -
|
|
// òî ó íàñ íåïðàâèëüíî âûñòàâèëñÿ m_lCount... íà ÷èñëî m_lCount ïèëþåì .. áåðåì ñòðóêòóð si ñêîêà ïðîïèñàíî
|
|
StreamUtils::StreamSeek(m_lOffsetInStream + m_oHeader.RecLen, pStream);
|
|
}
|
|
|
|
void ApplyProperties(CTextAttributesEx* pText)
|
|
{
|
|
if (m_arrSIs.size() < 1) return;
|
|
|
|
int pos_text = 0, pos_si = 0;
|
|
int ind = 0;
|
|
for (int i = 0; i < pText->m_arParagraphs.size(); i++)
|
|
{
|
|
if (ind >= m_arrSIs.size()) break;
|
|
|
|
for (int j = 0 ; j < pText->m_arParagraphs[i].m_arSpans.size(); j++)
|
|
{
|
|
if (pos_text + pText->m_arParagraphs[i].m_arSpans[j].m_strText.length() > pos_si + m_arrSIs[ind].lCount )
|
|
{
|
|
pos_si += m_arrSIs[ind].lCount;
|
|
ind++;
|
|
}
|
|
if (ind >= m_arrSIs.size()) break;
|
|
if (m_arrSIs[ind].bLang)
|
|
pText->m_arParagraphs[i].m_arSpans[j].m_oRun.Language = m_arrSIs[ind].Lang;
|
|
pos_text += pText->m_arParagraphs[i].m_arSpans[j].m_strText.length() ;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
};
|