mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-07-20 02:48:12 +08:00
удален лишний код, фиксы ошибок git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@65494 954022d7-b5bf-4e40-9824-e11837661b57
129 lines
2.6 KiB
C++
129 lines
2.6 KiB
C++
#pragma once
|
|
#include "../Reader/Records.h"
|
|
#include "../Records/Animations/AnimationTypes.h"
|
|
|
|
#include "../Records/SSSlideInfoAtom.h"
|
|
|
|
class CRecordSlide : public CRecordsContainer
|
|
{
|
|
public:
|
|
SSlidePersist m_oPersist;
|
|
SlideProgTagsContainer* m_pSlideProgTagsContainer;
|
|
|
|
bool m_bExistsTransition;
|
|
|
|
CSlideShowSlideInfoAtom m_oSlideShowSlideInfoAtom;
|
|
|
|
int m_Index;
|
|
int m_IndexUser;
|
|
|
|
private:
|
|
DWORD m_lCountReferences;
|
|
|
|
public:
|
|
|
|
CRecordSlide()
|
|
{
|
|
m_bExistsTransition = false;
|
|
m_pSlideProgTagsContainer = NULL;
|
|
m_lCountReferences = 0;
|
|
|
|
m_Index = -1;
|
|
m_IndexUser = 0;
|
|
|
|
AddRef();
|
|
}
|
|
|
|
virtual ~CRecordSlide()
|
|
{
|
|
Clear();
|
|
RELEASEOBJECT ( m_pSlideProgTagsContainer );
|
|
}
|
|
|
|
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
|
|
{
|
|
m_oHeader = oHeader;
|
|
m_arRecords.clear();
|
|
|
|
LONG lPosition = 0;
|
|
StreamUtils::StreamPosition(lPosition, pStream);
|
|
|
|
m_oHeader = oHeader;
|
|
|
|
UINT lCurLen = 0;
|
|
SRecordHeader oRec;
|
|
|
|
while (lCurLen < m_oHeader.RecLen)
|
|
{
|
|
if (oRec.ReadFromStream(pStream) == FALSE)
|
|
{
|
|
break;
|
|
}
|
|
|
|
if ( 0x03F9 == oRec.RecType )
|
|
{
|
|
m_bExistsTransition = true;
|
|
m_oSlideShowSlideInfoAtom.ReadFromStream ( oRec, pStream );
|
|
|
|
// TODO : âðåìåííî
|
|
if ( 0 == m_oSlideShowSlideInfoAtom.m_nEffectType )
|
|
m_bExistsTransition = false;
|
|
|
|
lCurLen += (8 + oRec.RecLen);
|
|
continue;
|
|
}
|
|
|
|
IRecord* pRecord = CreateByType ( oRec );
|
|
|
|
if ( RECORD_PROG_TAGS == oRec.RecType )
|
|
{
|
|
m_pSlideProgTagsContainer = new SlideProgTagsContainer ();
|
|
m_pSlideProgTagsContainer->ReadFromStream(oRec, pStream);
|
|
}
|
|
else
|
|
{
|
|
pRecord->ReadFromStream(oRec, pStream);
|
|
m_arRecords.push_back(pRecord);
|
|
}
|
|
|
|
lCurLen += (8 + oRec.RecLen);
|
|
}
|
|
if (lCurLen != m_oHeader.RecLen)
|
|
{
|
|
// íóæíî ðàçîáðàòüñÿ, ÷òî òóò òàêîå!!!
|
|
LONG lPosition = 0;
|
|
StreamUtils::StreamSeek(lPosition + m_oHeader.RecLen, pStream);
|
|
}
|
|
}
|
|
|
|
bool IsSlide()
|
|
{
|
|
for (int nIndex = 0; nIndex < m_arRecords.size(); ++nIndex)
|
|
{
|
|
if ((RECORD_TYPE_SLIDE == m_arRecords[nIndex]->m_oHeader.RecType) ||
|
|
(RECORD_TYPE_MAINMASTER == m_arRecords[nIndex]->m_oHeader.RecType) ||
|
|
(RECORD_TYPE_NOTES == m_arRecords[nIndex]->m_oHeader.RecType))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void AddRef()
|
|
{
|
|
++m_lCountReferences;
|
|
}
|
|
void Release()
|
|
{
|
|
--m_lCountReferences;
|
|
if (0 == m_lCountReferences)
|
|
delete this;
|
|
}
|
|
CRecordSlide* QueryInterface()
|
|
{
|
|
AddRef();
|
|
return this;
|
|
}
|
|
};
|