Commit 7d188b22 authored by ElenaSubbotina's avatar ElenaSubbotina

PptFormatReader - presentation slide notes

parent 79ead484
......@@ -208,9 +208,9 @@ void NSPresentationEditor::CPPTXWriter::WriteContentTypes()
<Override PartName=\"/docProps/core.xml\" ContentType=\"application/vnd.openxmlformats-package.core-properties+xml\" />\
<Override PartName=\"/docProps/app.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.extended-properties+xml\" />");
int nThemes = (int)m_pDocument->m_arThemes.size();
int nIndexLayout = 0;
for (int nT = 0; nT < nThemes; ++nT)
for (size_t nT = 0; nT < m_pDocument->m_arThemes.size(); ++nT)
{
strContentTypes += L"<Override PartName=\"/ppt/theme/theme" + std::to_wstring(nT + 1) +
L".xml\" ContentType=\"application/vnd.openxmlformats-officedocument.theme+xml\" />\
......@@ -218,30 +218,30 @@ void NSPresentationEditor::CPPTXWriter::WriteContentTypes()
L".xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml\"/>";
int nCountL = (int)m_pDocument->m_arThemes[nT].m_arLayouts.size();
for (int nL = 0; nL < nCountL; ++nL, ++nIndexLayout)
for (size_t nL = 0; nL < m_pDocument->m_arThemes[nT].m_arLayouts.size(); ++nL, ++nIndexLayout)
{
strContentTypes += L"<Override PartName=\"/ppt/slideLayouts/slideLayout" + std::to_wstring(nIndexLayout + 1) +
L".xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml\"/>";
}
}
std::wstring strNotesTheme = L"<Override PartName=\"/ppt/theme/theme" + std::to_wstring(nThemes + 1) + L".xml\" \
std::wstring strNotesTheme = L"<Override PartName=\"/ppt/theme/theme" + std::to_wstring(m_pDocument->m_arThemes.size() + 1) + L".xml\" \
ContentType=\"application/vnd.openxmlformats-officedocument.theme+xml\"/>";
strContentTypes += strNotesTheme;
strContentTypes += _T("<Override PartName=\"/ppt/notesMasters/notesMaster1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml\"/>");
int nCountS = (int)m_pDocument->m_arSlides.size();
for (int nS = 0; nS < nCountS; ++nS)
for (size_t nS = 0; nS < m_pDocument->m_arSlides.size(); ++nS)
{
strContentTypes += L"<Override PartName=\"/ppt/slides/slide" + std::to_wstring( nS + 1)
+ L".xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.slide+xml\"/>";
}
for (size_t nS = 0; nS < m_pDocument->m_arNotes.size(); ++nS)
{
strContentTypes += L"<Override PartName=\"/ppt/notesSlides/notesSlide" + std::to_wstring( nS + 1)
+ L".xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml\"/>";
}
strContentTypes += _T("</Types>");
CFile oFile;
......@@ -264,9 +264,9 @@ void NSPresentationEditor::CPPTXWriter::WriteApp(CFile& oFile)
oFile.WriteStringUTF8(str1);
oFile.WriteStringUTF8(L"<Slides>" + std::to_wstring(m_pDocument->m_arSlides.size()) + L"</Slides>");
oFile.WriteStringUTF8(L"<Notes>" + std::to_wstring(m_pDocument->m_arNotes.size()) + L"</Notes>");
oFile.WriteStringUTF8(L"<Notes>0</Notes>\
<HiddenSlides>0</HiddenSlides>\
oFile.WriteStringUTF8(L"<HiddenSlides>0</HiddenSlides>\
<MMClips>2</MMClips>\
<ScaleCrop>false</ScaleCrop>\
<HeadingPairs>\
......@@ -301,7 +301,7 @@ void NSPresentationEditor::CPPTXWriter::WriteApp(CFile& oFile)
<LinksUpToDate>false</LinksUpToDate>\
<SharedDoc>false</SharedDoc>\
<HyperlinksChanged>false</HyperlinksChanged>\
<AppVersion>1.0000</AppVersion>\
<AppVersion>4.4000</AppVersion>\
</Properties>");
strMemory += str5;
......@@ -437,7 +437,7 @@ void NSPresentationEditor::CPPTXWriter::WriteAll()
NSDirectory::CreateDirectory(strPptDirectory + _T("slideLayouts"));
NSDirectory::CreateDirectory(strPptDirectory + _T("slideLayouts") + FILE_SEPARATOR_STR + _T("_rels"));
NSDirectory::CreateDirectory(strPptDirectory + _T("slides"));
NSDirectory::CreateDirectory(strPptDirectory + _T("slides") + FILE_SEPARATOR_STR + _T("_rels"));
NSDirectory::CreateDirectory(strPptDirectory + _T("slides") + FILE_SEPARATOR_STR + _T("_rels"));
NSDirectory::CreateDirectory(strPptDirectory + _T("notesMasters"));
NSDirectory::CreateDirectory(strPptDirectory + _T("notesMasters") + FILE_SEPARATOR_STR + _T("_rels"));
NSDirectory::CreateDirectory(strPptDirectory + _T("notesSlides"));
......@@ -467,11 +467,12 @@ void NSPresentationEditor::CPPTXWriter::WriteAll()
oFileRels.CreateFile(strNotesMasterRelsFile);
oFileRels.WriteStringUTF8(strVal);
oFileRels.CloseFile();
// -----------------------------------------------------
// -----------------------------------------------------
WriteThemes();
WriteSlides();
WriteNotes();
}
void NSPresentationEditor::CPPTXWriter::WriteThemes()
......@@ -826,14 +827,14 @@ void NSPresentationEditor::CPPTXWriter::WriteSlide(int nIndexSlide)
CSlide* pSlide = m_pDocument->m_arSlides[nIndexSlide];
if (0 == pSlide->m_lThemeID)
oRels.StartSlide(pSlide->m_lLayoutID, nIndexSlide);
oRels.StartSlide(pSlide->m_lLayoutID, pSlide->m_lNotesID);
else
{
int nLayout = pSlide->m_lLayoutID;
for (int i = 0; i < pSlide->m_lThemeID; ++i)
nLayout += (int)m_pDocument->m_arThemes[i].m_arLayouts.size();
oRels.StartSlide(nLayout, nIndexSlide);
oRels.StartSlide(nLayout, pSlide->m_lNotesID);
}
oWriter.WriteString(std::wstring(L"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"));
......@@ -881,7 +882,54 @@ void NSPresentationEditor::CPPTXWriter::WriteSlide(int nIndexSlide)
strFile = L"slide" + std::to_wstring(nIndexSlide + 1) + L".xml.rels";
oRels.SaveRels(strFileSlidePath + _T("_rels") + FILE_SEPARATOR_STR + strFile);
}
void NSPresentationEditor::CPPTXWriter::WriteNotes(int nIndexNotes)
{
CStringWriter oWriter;
CRelsGenerator oRels(&m_oManager);
CSlide* pNotes = m_pDocument->m_arNotes[nIndexNotes];
oRels.StartNotes(pNotes->m_lSlideID);
oWriter.WriteString(std::wstring(L"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"));
oWriter.WriteString(std::wstring(L"<p:notes xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\""));
if (!pNotes->m_bShowMasterShapes)
oWriter.WriteString(std::wstring(L" showMasterSp=\"0\""));
oWriter.WriteString(std::wstring(L">"));
oWriter.WriteString(std::wstring(L"<p:cSld>"));
if (pNotes->m_bIsBackground)
{
WriteBackground(oWriter, oRels, pNotes->m_oBackground);
}
oWriter.WriteString(std::wstring(L"<p:spTree><p:nvGrpSpPr><p:cNvPr id=\"1\" name=\"\"/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr>\
<a:xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"0\" cy=\"0\"/><a:chOff x=\"0\" y=\"0\"/><a:chExt cx=\"0\" cy=\"0\"/></a:xfrm></p:grpSpPr>"));
for (size_t nEl = 0; nEl < pNotes->m_arElements.size(); ++nEl)
{
WriteElement(oWriter, oRels, pNotes->m_arElements[nEl], NULL);
}
oWriter.WriteString(std::wstring(L"</p:spTree></p:cSld>"));
oWriter.WriteString(std::wstring(L"<p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr>"));
oWriter.WriteString(std::wstring(L"</p:notes>"));
oRels.CloseRels();
std::wstring strXml = oWriter.GetData();
std::wstring strFile = L"notesSlide" + std::to_wstring(nIndexNotes + 1) + L".xml";
std::wstring strFileSlidePath = m_strTempDirectory + FILE_SEPARATOR_STR + _T("ppt") + FILE_SEPARATOR_STR + _T("notesSlides") + FILE_SEPARATOR_STR;
CFile oFile;
oFile.CreateFile(strFileSlidePath + strFile);
oFile.WriteStringUTF8(strXml);
oFile.CloseFile();
strFile = L"notesSlide" + std::to_wstring(nIndexNotes + 1) + L".xml.rels";
oRels.SaveRels(strFileSlidePath + _T("_rels") + FILE_SEPARATOR_STR + strFile);
}
void NSPresentationEditor::CPPTXWriter::WriteSlides()
{
......@@ -889,7 +937,15 @@ void NSPresentationEditor::CPPTXWriter::WriteSlides()
for (size_t nIndexS = 0; nIndexS < nCountSlides; ++nIndexS)
{
CRelsGenerator::StartNotes((int)nIndexS, m_strTempDirectory, m_pDocument->m_arSlides[nIndexS]->m_strComment);
WriteSlide((int)nIndexS);
}
}
void NSPresentationEditor::CPPTXWriter::WriteNotes()
{
size_t nCountSlides = m_pDocument->m_arSlides.size();
for (size_t nIndexS = 0; nIndexS < nCountSlides; ++nIndexS)
{
WriteNotes((int)nIndexS);
}
}
......@@ -54,8 +54,6 @@ namespace NSPresentationEditor
CShapeWriter* m_pShapeWriter;
public:
CPPTXWriter();
~CPPTXWriter();
......@@ -75,8 +73,10 @@ namespace NSPresentationEditor
void WriteAll ();
void WriteThemes ();
void WriteSlides ();
void WriteNotes ();
void WriteLayout (CLayout& oLayout, int nIndexLayout, int nStartLayout, int nIndexTheme);
void WriteSlide (int nIndexSlide);
void WriteNotes (int nIndexNotes);
void WriteColorScheme (CStringWriter& oWriter, const std::wstring & name, const std::vector<CColor> & colors, bool extra = false);
void WriteBackground (CStringWriter& oWriter, CRelsGenerator& oRels, CBrush& oBackground);
......
......@@ -196,59 +196,34 @@ namespace NSPresentationEditor
m_oWriter.WriteString(str);
}
inline void StartSlide(int nIndexLayout, int nIndexSlide)
inline void StartNotes(int nIndexSlide)
{
m_oWriter.WriteString(L"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>\
<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">");
m_oWriter.WriteString(L"<Relationship Id=\"rId" + std::to_wstring(m_lNextRelsID++) + L"\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout\" Target=\"../slideLayouts/slideLayout"
+ std::to_wstring(nIndexLayout + 1) + L".xml\"/>");
m_oWriter.WriteString(L"<Relationship Id=\"rId" + std::to_wstring(m_lNextRelsID++) +
L"\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide\" Target=\"../notesSlides/notesSlide"
+ std::to_wstring(nIndexSlide + 1) + L".xml\"/>");
if (nIndexSlide >= 0)
{
m_oWriter.WriteString(L"<Relationship Id=\"rId" + std::to_wstring(m_lNextRelsID++) +
L"\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide\" Target=\"../slides/slide"
+ std::to_wstring(nIndexSlide + 1) + L".xml\"/>");
}
}
static inline void StartNotes(int nIndexSlide, std::wstring strDirectory, std::wstring strComment)
inline void StartSlide(int nIndexLayout, int nIndexNotes)
{
std::wstring sNum = std::to_wstring( nIndexSlide + 1);
std::wstring strNoteSlideRels = _T("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>\
<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\
<Relationship Id=\"rId2\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide\" Target=\"../slides/slide") + sNum + _T(".xml\"/>\
<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster\" Target=\"../notesMasters/notesMaster1.xml\"/>\
</Relationships>");
std::wstring strNoteRels = strDirectory + FILE_SEPARATOR_STR + _T("ppt") +
+ FILE_SEPARATOR_STR + _T("notesSlides")
+ FILE_SEPARATOR_STR + _T("_rels")
+ FILE_SEPARATOR_STR + _T("notesSlide") + sNum + _T(".xml.rels");
CFile oFile;
oFile.CreateFile(strNoteRels);
oFile.WriteStringUTF8(strNoteSlideRels);
oFile.CloseFile();
std::wstring strNoteSlide = strDirectory + FILE_SEPARATOR_STR + _T("ppt") +
+ FILE_SEPARATOR_STR + _T("notesSlides")
+ FILE_SEPARATOR_STR + _T("notesSlide") + sNum + _T(".xml");
oFile.CreateFile(strNoteSlide);
std::wstring strW1 = _T("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\
<p:notes xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\">\
<p:cSld><p:spTree><p:nvGrpSpPr><p:cNvPr id=\"1\" name=\"\"/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr><a:xfrm><a:off x=\"0\" y=\"0\"/>\
<a:ext cx=\"0\" cy=\"0\"/><a:chOff x=\"0\" y=\"0\"/><a:chExt cx=\"0\" cy=\"0\"/></a:xfrm></p:grpSpPr><p:sp><p:nvSpPr><p:cNvPr id=\"100000\" name=\"\"/>\
<p:cNvSpPr><a:spLocks noGrp=\"1\" noChangeArrowheads=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"body\" idx=\"1\"/></p:nvPr></p:nvSpPr><p:spPr/>\
<p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:r><a:rPr smtClean=\"0\"/><a:t>");
std::wstring strW2 = _T("</a:t></a:r><a:endParaRPr/></a:p></p:txBody></p:sp></p:spTree></p:cSld><p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr></p:notes>");
CorrectXmlString(strComment);
m_oWriter.WriteString(L"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>\
<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">");
oFile.WriteStringUTF8(strW1);
oFile.WriteStringUTF8(strComment);
oFile.WriteStringUTF8(strW2);
m_oWriter.WriteString(L"<Relationship Id=\"rId" + std::to_wstring(m_lNextRelsID++) + L"\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout\" Target=\"../slideLayouts/slideLayout"
+ std::to_wstring(nIndexLayout + 1) + L".xml\"/>");
oFile.CloseFile();
if (nIndexNotes >= 0)
{
m_oWriter.WriteString(L"<Relationship Id=\"rId" + std::to_wstring(m_lNextRelsID++) +
L"\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide\" Target=\"../notesSlides/notesSlide"
+ std::to_wstring(nIndexNotes + 1) + L".xml\"/>");
}
}
inline void CloseRels()
inline void CloseRels()
{
std::wstring str = _T("</Relationships>");
m_oWriter.WriteString(str);
......
......@@ -47,8 +47,6 @@ public:
std::map<DWORD, DWORD> m_mapOffsetInPIDs;
CRecordDocument m_oDocument;
//todooo при переходе на C++11 использовать НУЖНЫЙ здесь unsorted_map - m_arr .. Order уберутся
std::map<DWORD, CRecordSlide*> m_mapSlides;
std::map<DWORD, CRecordSlide*> m_mapMasters;
std::map<DWORD, CRecordSlide*> m_mapNotes;
......@@ -66,6 +64,7 @@ public:
// это как бы ППT-шная обертка над слайдом
std::vector<CSlideInfo> m_arSlideWrapper;
std::vector<CSlideInfo> m_arMasterWrapper;
std::vector<CSlideInfo> m_arNotesWrapper;
// эти параметры - одни на весь документ.
// чтобы поддержать нашу схему (пптх) - копируем их в темы
......@@ -106,8 +105,8 @@ public:
nullable<WORD> m_wLanguage; // язык пользователя (редактора)
bool m_bRtl;
bool m_bShowComments;
public:
//-----------------------------------------------------------------------------------------------------
CPPTUserInfo();
~CPPTUserInfo();
......@@ -119,6 +118,7 @@ public:
void NormalizeCoords(long lWidth, long lHeight);
void LoadSlide(DWORD dwSlideID, CSlide* pSlide);
void LoadNotes(DWORD dwNotesID, CSlide* pSlide);
void LoadMasters(const LONG& lOriginWidth, const LONG& lOriginHeight);
......@@ -169,7 +169,6 @@ public:
oScheme = oArrayMem;
}
std::wstring ConvertLayoutType(INT nGeom, BYTE* pPlaceholders)
{
......@@ -287,6 +286,7 @@ public:
return _T("blank");
}
void AddAnimation (DWORD dwSlideID, double Width, double Height, IElement* pElement);
void AddAudioTransition (DWORD dwSlideID, CTransition* pTransition, const std::wstring& strFilePath);
......
......@@ -73,10 +73,26 @@ typedef BYTE BOOL1;
#define RECORD_TYPE_EXOBJLIST_ATOM 1034
#define RECORD_TYPE_PPDRAWING_GROUP 1035
#define RECORD_TYPE_PPDRAWING 1036
#define RT_RoundTripTheme12Atom 1038
#define RT_RoundTripColorMapping12Atom 1039
#define RECORD_TYPE_NAMEDSHOWS 1040
#define RECORD_TYPE_NAMEDSHOW 1041
#define RECORD_TYPE_NAMEDSHOW_SLIDES 1042
#define RECORD_TYPE_SHEET_PROPERTIES 1044
#define RECORD_TYPE_ORIGINALMAINMASTERID 1052
#define RECORD_TYPE_COMPOSITEMASTERID 1053
#define RECORD_TYPE_ROUNDTRIPCONTENTMASTERINFO12 1054
#define RECORD_TYPE_ROUNDTRIPSHAPEID12 1055
#define RECORD_TYPE_ROUNDTRIPHFPLACEHOLDER12 1056
#define RECORD_TYPE_ROUNDTRIPCONTENTMASTERID 1058
#define RECORD_TYPE_ROUNDTRIPOARTTEXTSTYLES12 1059
#define RECORD_TYPE_ROUNDTRIPHEADERFOOTERDEFAULTS12ATOM 1060
#define RECORD_TYPE_ROUNDTRIPDOCFLAGS12 1061
#define RECORD_TYPE_ROUNDTRIPSHAPECHECKSUMFORCUSTOMLAYOUTS12 1062
#define RECORD_TYPE_ROUNDTRIPNOTESMASTERTEXTSTYLES12 1063
#define RECORD_TYPE_ROUNDTRIPCUSTOMTABLESTYLES12 1064
#define RECORD_TYPE_LIST 2000
#define RECORD_TYPE_FONTCOLLECTION 2005
#define RECORD_TYPE_BOOKMARKCOLLECTION 2019
......@@ -182,19 +198,6 @@ typedef BYTE BOOL1;
// Records ~12050 seem to be related to Document Encryption
#define RECORD_TYPE_DOCUMENT_ENCRYPTION_ATOM 12052
#define RECORD_TYPE_ORIGINALMAINMASTERID 1052
#define RECORD_TYPE_COMPOSITEMASTERID 1053
#define RECORD_TYPE_ROUNDTRIPCONTENTMASTERINFO12 1054
#define RECORD_TYPE_ROUNDTRIPSHAPEID12 1055
#define RECORD_TYPE_ROUNDTRIPHFPLACEHOLDER12 1056
#define RECORD_TYPE_ROUNDTRIPCONTENTMASTERID 1058
#define RECORD_TYPE_ROUNDTRIPOARTTEXTSTYLES12 1059
#define RECORD_TYPE_ROUNDTRIPHEADERFOOTERDEFAULTS12ATOM 1060
#define RECORD_TYPE_ROUNDTRIPDOCFLAGS12 1061
#define RECORD_TYPE_ROUNDTRIPSHAPECHECKSUMFORCUSTOMLAYOUTS12 1062
#define RECORD_TYPE_ROUNDTRIPNOTESMASTERTEXTSTYLES12 1063
#define RECORD_TYPE_ROUNDTRIPCUSTOMTABLESTYLES12 1064
//records greater then 0xF000 belong to with Microsoft Office Drawing format also known as Escher
#define RECORD_TYPE_ESCHER_DGG_CONTAINER 0xF000
#define RECORD_TYPE_ESCHER_DGG 0xF006
......
......@@ -95,8 +95,8 @@ IRecord* CreateByType(SRecordHeader oHeader)
//CREATE_BY_TYPE(RECORD_TYPE_DOC_ROUTING_SLIP , CRecordDocRoutingSlipAtom)
//CREATE_BY_TYPE(RECORD_TYPE_EXOBJLIST_ATOM , CRecordExObjListAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordGridSpacing10Atom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordRoundTripThemeAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordRoundTripColorMappingAtom)
CREATE_BY_TYPE(RT_RoundTripTheme12Atom , CRecordRoundTripThemeAtom)
CREATE_BY_TYPE(RT_RoundTripColorMapping12Atom , CRecordRoundTripColorMappingAtom)
//CREATE_BY_TYPE(RECORD_TYPE_NAMEDSHOW_SLIDES , CRecordNamedShowSlidesAtom)
//CREATE_BY_TYPE(RECORD_TYPE_SHEET_PROPERTIES , CRecordNormalViewSetInfoAtom)
......@@ -109,10 +109,10 @@ IRecord* CreateByType(SRecordHeader oHeader)
CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPHFPLACEHOLDER12 , CRecordRoundTripHFPlaceholder12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPCONTENTMASTERID , CRecordRoundTripContentMasterId12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPOARTTEXTSTYLES12 , CRecordRoundTripOArtTextStyles12Atom)
CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPHEADERFOOTERDEFAULTS12ATOM , CRecordRoundTripHeaderFooterDefaults12Atom)
CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPHEADERFOOTERDEFAULTS12ATOM , CRecordRoundTripHeaderFooterDefaults12Atom)
CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPNOTESMASTERTEXTSTYLES12 , CRecordRoundTripNotesMasterTextStyles12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPDOCFLAGS12 , CRecordRoundTripDocFlags12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPSHAPECHECKSUMFORCUSTOMLAYOUTS12 , CRecordRoundTripShapeCheckSumForCustomLayouts12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPNOTESMASTERTEXTSTYLES12 , CRecordRoundTripNotesMasterTextStyles12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPCUSTOMTABLESTYLES12 , CRecordRoundTripCustomTableStyles12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_BOOKMARK_SEED_ATOM , CRecordBookmarkSeedAtom)
......
......@@ -182,7 +182,7 @@ public:
return;
// возвращаем указатели, их не удалять наверху!!!!
for (int nIndex = 0; nIndex < m_arRecords.size(); ++nIndex)
for (size_t nIndex = 0; nIndex < m_arRecords.size(); ++nIndex)
{
T pRec = dynamic_cast<T>(m_arRecords[nIndex]);
if (NULL != pRec)
......
......@@ -206,7 +206,7 @@ namespace Animations
std::vector<std::wstring> arMovePath;
boost::algorithm::split(arMovePath, MovePath, boost::algorithm::is_any_of(L" "), boost::algorithm::token_compress_on);
for (int i = 0 ; i < arMovePath.size(); i++)
for (size_t i = 0 ; i < arMovePath.size(); i++)
{
ActionPoint aPoint;
aPoint.TYPE = arMovePath[i++][0];
......@@ -245,7 +245,7 @@ namespace Animations
{
std::wstring MovePath;
for ( int i = 0; i < m_Points.size(); ++i )
for ( size_t i = 0; i < m_Points.size(); ++i )
{
std::wstring NextPoint;
......
......@@ -39,9 +39,7 @@ public:
std::vector<SSlidePersist> m_arNotePersists;
std::vector<SSlidePersist> m_arSlidePersists;
public:
CRecordDocument() : m_arMasterPersists(), m_arNotePersists(), m_arSlidePersists()
CRecordDocument()
{
}
......@@ -145,31 +143,26 @@ public:
std::vector<CRecordSlideListWithText*> oArraySlideWithText;
this->GetRecordsByType(&oArraySlideWithText, true, false);
for (int nIndexList = 0; nIndexList < oArraySlideWithText.size(); ++nIndexList)
for (size_t nIndexList = 0; nIndexList < oArraySlideWithText.size(); ++nIndexList)
{
CRecordSlideListWithText* pAtom = oArraySlideWithText[nIndexList];
std::vector<SSlidePersist>* pArray = NULL;
switch (pAtom->m_Type)
{
case CRecordSlideListWithText::CollectionOfMasterSlides:
case CRecordSlideListWithText::CollectionOfMasterSlides:
{
pArray = &m_arMasterPersists;
break;
}
case CRecordSlideListWithText::CollectionOfNotesSlides:
pArray = &m_arMasterPersists;
}break;
case CRecordSlideListWithText::CollectionOfNotesSlides:
{
pArray = &m_arNotePersists;
break;
}
case CRecordSlideListWithText::CollectionOfSlides:
pArray = &m_arNotePersists;
}break;
case CRecordSlideListWithText::CollectionOfSlides:
{
pArray = &m_arSlidePersists;
break;
}
default:
pArray = &m_arSlidePersists;
}break;
default:
{
// этого не может быть...
continue;
......
......@@ -53,7 +53,7 @@ public:
pArray->clear();
std::map<DWORD, int> image_map;
for (int nIndex = 0; nIndex < m_arRecords.size(); ++nIndex)
for (size_t nIndex = 0; nIndex < m_arRecords.size(); ++nIndex)
{
CRecordBlipStoreEntry* pEntry = dynamic_cast<CRecordBlipStoreEntry*>(m_arRecords[nIndex]);
if (NULL != pEntry)
......
......@@ -71,7 +71,7 @@ public:
oArrayShapes[0]->bGroupShape = true;//тут описание самой группы
int nIndexBreak = -1;
for (int nIndex = 0; nIndex < oArrayShapes.size(); ++nIndex)
for (size_t nIndex = 0; nIndex < oArrayShapes.size(); ++nIndex)
{
std::vector<CRecordGroupShape*> oArrayGroupShapes;
oArrayShapes[nIndex]->GetRecordsByType(&oArrayGroupShapes, false, true);
......@@ -120,7 +120,7 @@ public:
bool bIsRecalc = ((lW1 > 0) && (lH1 > 0) && (lW2 > 0) && (lH2 > 0));
if (bIsRecalc)
{
for (int nIndex = 0; nIndex < oArrayShapes.size(); ++nIndex)
for (size_t nIndex = 0; nIndex < oArrayShapes.size(); ++nIndex)
{
if (nIndex != nIndexBreak)
{
......
......@@ -1890,7 +1890,7 @@ protected:
if (master_levels)
{
for (int i = 0; i < pText->m_arParagraphs.size(); i++)
for (size_t i = 0; i < pText->m_arParagraphs.size(); i++)
{
if (i >= master_levels->m_arrProps.size()) break;
......
......@@ -198,7 +198,7 @@ public:
{
CRecordsContainer::ReadFromStream(oHeader, pStream);
for (int i = 0 ; i < m_arRecords.size(); i++)
for (size_t i = 0 ; i < m_arRecords.size(); i++)
{
switch(m_arRecords[i]->m_oHeader.RecType)
{
......
......@@ -34,13 +34,12 @@
class CRecordNotesAtom : public CUnknownRecord
{
public:
UINT m_nSlideIDRef;
bool m_bMasterObjects;
bool m_bMasterScheme;
bool m_bMasterBackground;
public:
CRecordNotesAtom()
{
......@@ -54,11 +53,11 @@ public:
{
m_oHeader = oHeader;
m_nSlideIDRef = (UINT)StreamUtils::ReadDWORD(pStream);
m_nSlideIDRef = (UINT)StreamUtils::ReadDWORD(pStream);
USHORT nFlag = StreamUtils::ReadWORD(pStream);
m_bMasterObjects = ((nFlag & 0x01) == 0x01);
m_bMasterScheme = ((nFlag & 0x02) == 0x02);
USHORT nFlag = StreamUtils::ReadWORD(pStream);
m_bMasterObjects = ((nFlag & 0x01) == 0x01);
m_bMasterScheme = ((nFlag & 0x02) == 0x02);
m_bMasterBackground = ((nFlag & 0x04) == 0x04);
StreamUtils::StreamSkip(2, pStream);
......
......@@ -91,6 +91,7 @@
#include "RoundTripColorMappingAtom.h"
#include "RoundTripNewPlaceholderId12Atom.h"
#include "RoundTripThemeAtom.h"
#include "RoundTripNotesMasterTextStyles12Atom.h"
#include "TextRulerAtom.h"
#include "ShapeFlags10Atom.h"
#include "ShapeFlagsAtom.h"
......
......@@ -34,9 +34,8 @@
class CRecordRoundTripColorMappingAtom : public CUnknownRecord
{
std::wstring m_pString;
public:
std::string m_strData;
CRecordRoundTripColorMappingAtom()
{
......@@ -48,6 +47,7 @@ public:
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
return CUnknownRecord::ReadFromStream(oHeader, pStream);
m_oHeader = oHeader;
m_strData = StreamUtils::ReadStringA(pStream, (long)m_oHeader.RecLen);
}
};
......@@ -34,9 +34,8 @@
class CRecordRoundTripThemeAtom : public CUnknownRecord
{
std::wstring m_strData;
public:
std::string m_strData;
CRecordRoundTripThemeAtom()
{
......@@ -48,6 +47,7 @@ public:
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
return CUnknownRecord::ReadFromStream(oHeader, pStream);
m_oHeader = oHeader;
m_strData = StreamUtils::ReadStringA(pStream, (long)m_oHeader.RecLen);
}
};
......@@ -129,7 +129,7 @@ public:
bool IsSlide()
{
for (int nIndex = 0; nIndex < m_arRecords.size(); ++nIndex)
for (size_t 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) ||
......
......@@ -59,7 +59,7 @@ public:
{
pStream->read(pUTF16_low, m_oHeader.RecLen);
for (int i = 0 ; i < m_oHeader.RecLen; i++)
for (UINT i = 0 ; i < m_oHeader.RecLen; i++)
{
pUTF16[i] = pUTF16_low[i];
}
......
......@@ -86,11 +86,12 @@ public:
int pos_text = 0, pos_si = 0;
int ind = 0;
for (int i = 0; i < pText->m_arParagraphs.size(); i++)
for (size_t 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++)
for (size_t 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 )
{
......
......@@ -41,11 +41,10 @@ namespace NSPresentationEditor
public:
std::vector<CTheme> m_arThemes;
std::vector<CSlide*> m_arSlides;
std::vector<CSlide*> m_arNotes;
CMetricInfo m_oInfo;
public:
CDocument() : m_arThemes(), m_arSlides()
{
}
......@@ -56,8 +55,9 @@ namespace NSPresentationEditor
CDocument& operator=(const CDocument& oSrc)
{
m_arThemes = oSrc.m_arThemes;
m_arSlides = oSrc.m_arSlides;
m_arThemes = oSrc.m_arThemes;
m_arSlides = oSrc.m_arSlides;
m_arNotes = oSrc.m_arNotes;
m_oInfo = oSrc.m_oInfo;
......@@ -69,19 +69,18 @@ namespace NSPresentationEditor
*this = oSrc;
}
public:
inline void Clear()
{
ClearThemes();
try
{
ClearSlides();
ClearNotes();
}catch(...)
{
}
}
// работа с темами
inline void ClearThemes()
{
m_arThemes.clear();
......@@ -97,26 +96,27 @@ namespace NSPresentationEditor
m_arThemes[nIndex] = oTheme;
}
// работа со слайдом
inline void ClearSlides()
{
for (int i = 0 ; i < m_arSlides.size(); i++)
for (size_t i = 0 ; i < m_arSlides.size(); i++)
{
RELEASEOBJECT(m_arSlides[i]);
}
m_arSlides.clear();
}
inline void AddSlide(CSlide* oSlide)
inline void ClearNotes()
{
m_arSlides.push_back(oSlide);
for (size_t i = 0 ; i < m_arNotes.size(); i++)
{
RELEASEOBJECT(m_arNotes[i]);
}
m_arNotes.clear();
}
public:
// функция производит расчет по теме и слайдам
std::wstring GetXmlSlideTransition ( CSlide& oSlide/*, CAudioOverlay& oAudioOverlay*/ )
#if defined (_DEBUG)
std::wstring GetXmlSlideTransition ( CSlide& oSlide/*, CAudioOverlay& oAudioOverlay*/ )
{
std::wstring Source = std::wstring ( _T("") );
std::wstring Source = std::wstring ( _T("") );
int EffectID = 1;
int lEffectDirection = oSlide.m_oSlideShow.m_oTransition.m_nEffectDirection;
......@@ -314,7 +314,7 @@ namespace NSPresentationEditor
break;
}
Source = L"<VideoCompose Time=\"" + std::to_wstring(oSlide.m_oSlideShow.m_oTransition.m_dSpeed) + L"\" effectid=\"" + std::to_wstring(EffectID) + L"\"/>";
Source = L"<VideoCompose Time=\"" + std::to_wstring(oSlide.m_oSlideShow.m_oTransition.m_dSpeed) + L"\" effectid=\"" + std::to_wstring(EffectID) + L"\"/>";
/*
......@@ -338,7 +338,7 @@ namespace NSPresentationEditor
return Source;
}
#endif
double CalculateTimes(CAudioOverlay& oAudioOverlay)
{
CaclulateSlideTimes();
......@@ -486,7 +486,6 @@ namespace NSPresentationEditor
}
}
public:
void ResetAutoText(IElement *pElement, vector_string const (&placeholdersReplaceString)[3])
{
CShapeElement* pShape = dynamic_cast<CShapeElement*>(pElement);
......
......@@ -41,6 +41,9 @@ namespace NSPresentationEditor
LONG m_lThemeID;
LONG m_lLayoutID;
LONG m_lSlideID; //for notes rels
LONG m_lNotesID; //for slide rels
std::vector<IElement*> m_arElements;
CSlideShowInfo m_oSlideShow;
std::multimap<int,int> m_mapPlaceholders;
......@@ -91,6 +94,8 @@ namespace NSPresentationEditor
m_lThemeID = -1;
m_lLayoutID = -1;
m_lSlideID = -1;
m_lNotesID = -1;
m_lWidth = 270;
m_lHeight = 190;
......@@ -125,6 +130,8 @@ namespace NSPresentationEditor
m_lThemeID = oSrc.m_lThemeID;
m_lLayoutID = oSrc.m_lLayoutID;
m_lNotesID = oSrc.m_lNotesID;
m_lSlideID = oSrc.m_lSlideID;
m_lWidth = oSrc.m_lWidth;
m_lHeight = oSrc.m_lHeight;
......
......@@ -32,7 +32,6 @@
#pragma once
#include "Structures.h"
#include "Layout.h"
//#include "../PPTXWriter/CSS.h"
namespace NSPresentationEditor
{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment