Files
core/ASCOfficePPTFile/PPTFormatLib/Reader/PPTDocumentInfo.h
Elen.Subbotina 0443bad1ec PPTFormatReader - правильный порядок картинок в презентации в зависимости от user-a.
git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@65296 954022d7-b5bf-4e40-9824-e11837661b57
2016-05-21 00:38:04 +03:00

85 lines
1.8 KiB
C++

#pragma once
#include "PPTDocumentInfoOneUser.h"
class CPPTDocumentInfo
{
public:
CCurrentUser m_oCurrentUser;
std::vector<CPPTUserInfo*> m_arUsers;
CString m_strFileDirectory;
std::map<int, std::wstring> m_mapStoreImageFile;
public:
CPPTDocumentInfo() : m_oCurrentUser(), m_arUsers()
{
m_strFileDirectory = _T("");
}
~CPPTDocumentInfo()
{
Clear();
}
void Clear()
{
size_t nCount = m_arUsers.size();
while(0 != nCount)
{
if (NULL != m_arUsers[nCount-1])
delete m_arUsers[nCount-1];
m_arUsers.pop_back();
--nCount;
}
}
void ReadFromStream(CRecordCurrentUserAtom* pCurrentUser, POLE::Stream* pStream, CStringW strFolderMem)
{
m_oCurrentUser.FromAtom(pCurrentUser);
DWORD offsetToEdit = m_oCurrentUser.m_nOffsetToCurrentEdit;
SRecordHeader oHeader;
CRecordUserEditAtom oUserAtom;
Clear();
size_t nCountUsers = 0;
while (0 < offsetToEdit)
{
StreamUtils::StreamSeek(offsetToEdit, pStream);
oHeader.ReadFromStream(pStream);
oUserAtom.ReadFromStream(oHeader, pStream);
CPPTUserInfo* pInfo = new CPPTUserInfo();
pInfo->m_strFileDirectory = m_strFileDirectory;
bool bRes = pInfo->ReadFromStream(&oUserAtom, pStream, strFolderMem);
offsetToEdit = pInfo->m_oUser.m_nOffsetLastEdit;
if (!bRes)
{
delete pInfo;
continue;
}
m_arUsers.push_back(pInfo);
// òåïåðü íóæíî âûñòàâèòü ó íåãî ïàðàìåòðû äëÿ äðóãèõ þçåðîâ
pInfo->m_pDocumentInfo = this;
pInfo->m_lIndexThisUser = m_arUsers.size() - 1;
pInfo = NULL;
}
// òåïåðü íóæíî ó âñåõ ñäåëàòü FromDocument...èëè òîëüêî äëÿ ÏÎÑËÅÄÍÅÃÎ ïîëüçîâàòåëÿ ??? (îñòàëüíûå òî íå íóæíû)
//for (int i = 0; i < m_arUsers.size(); ++i)
if (m_arUsers.size() > 0)
{
m_arUsers[0]->FromDocument();
}
}
};