PPTFormat автоподстановки

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@65645 954022d7-b5bf-4e40-9824-e11837661b57
This commit is contained in:
Elen.Subbotina
2015-11-08 14:11:41 +00:00
committed by Alexander Trofimov
parent 63fd3bbc5a
commit b667c8a926
14 changed files with 354 additions and 356 deletions

View File

@ -29,6 +29,11 @@ CPPTUserInfo::CPPTUserInfo() : CDocument(),
m_bRtl = false;
m_bShowComments = false;
m_bHasDate = false;
m_bHasSlideNumber = false;
m_bHasFooter = false;
m_nFormatDate = 1;
}
CPPTUserInfo::~CPPTUserInfo()
@ -273,8 +278,6 @@ void CPPTUserInfo::FromDocument()
{
m_arSlides.clear();
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...
std::vector<CRecordDocumentAtom*> oArrayDoc;
m_oDocument.GetRecordsByType(&oArrayDoc, true, true);
@ -304,16 +307,28 @@ void CPPTUserInfo::FromDocument()
}
}
std::vector<CRecordHeadersFootersContainer*> oArrayHeadersFootersInfo;
m_oDocument.GetRecordsByType(&oArrayHeadersFootersInfo, true, false);
m_oDocument.GetRecordsByType(&oArrayHeadersFootersInfo, false, false);
for (int j = 0 ; j < oArrayHeadersFootersInfo.size(); j++)
if (0 != oArrayHeadersFootersInfo.size())
{
std::vector<CRecordCString*> oHeadersFootersInfo;
oArrayHeadersFootersInfo[j]->GetRecordsByType(&oHeadersFootersInfo, true, false);
std::vector<CRecordHeadersFootersAtom*> oHeadersFootersInfo;
oArrayHeadersFootersInfo[0]->GetRecordsByType(&oHeadersFootersInfo, true, false);
for (int i = 0 ;i < oHeadersFootersInfo.size(); i++)
if (!oHeadersFootersInfo.empty())
{
m_oFootersHeaderString.push_back(oHeadersFootersInfo[i]->m_strText);
m_bHasDate = oHeadersFootersInfo[0]->m_bHasDate || oHeadersFootersInfo[0]->m_bHasTodayDate || oHeadersFootersInfo[0]->m_bHasUserDate;
m_bHasFooter = oHeadersFootersInfo[0]->m_bHasFooter;
m_bHasSlideNumber = oHeadersFootersInfo[0]->m_bHasSlideNumber;
if (oHeadersFootersInfo[0]->m_bHasUserDate) m_nFormatDate = 2;
}
std::vector<CRecordCString*> oHeadersFootersStr;
oArrayHeadersFootersInfo[0]->GetRecordsByType(&oHeadersFootersStr, true, false);
for (int i = 0 ;i < oHeadersFootersStr.size(); i++)
{
m_oFootersHeaderString.push_back(oHeadersFootersStr[i]->m_strText);
}
}
@ -386,7 +401,6 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide)
CRecordSlide* pRecordSlide = pPairSlide->second;
if (NULL == pRecordSlide) return;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@ -478,12 +492,6 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide)
//????? <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> !!!
pPairTheme = m_mapMasterToTheme.begin();
}
//------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ... )
std::vector<CRecordHeadersFootersAtom*> oArrayHeadersFootersAtoms;
pRecordSlide->GetRecordsByType(&oArrayHeadersFootersAtoms, true, true);
CRecordHeadersFootersAtom* headers_footers = NULL;
if (!oArrayHeadersFootersAtoms.empty()) headers_footers = oArrayHeadersFootersAtoms[0];
//-----------------
pSlide->m_lThemeID = pPairTheme->second;
@ -506,7 +514,8 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide)
if (pPairLayoutGeom == pTheme->m_mapGeomToLayout.end())
{
pSlide->m_lLayoutID = AddNewLayout(pTheme, &oArraySlideAtoms[0]->m_oLayout, pRecordSlide->m_oPersist.m_arTextAttrs, headers_footers, true, bMasterObjects);
pSlide->m_lLayoutID = AddNewLayout(pTheme, pRecordSlide, true, bMasterObjects);
pLayout = &pTheme->m_arLayouts[pSlide->m_lLayoutID];
pLayout->m_bShowMasterShapes = true;
}
@ -558,6 +567,42 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide)
}
}
}
//------------------------------------------------------------------------------------
pSlide->m_bHasDate = pLayout->m_bHasDate;
pSlide->m_bHasFooter = pLayout->m_bHasFooter;
pSlide->m_bHasSlideNumber = pLayout->m_bHasSlideNumber;
pSlide->m_nFormatDate = m_nFormatDate;
std::vector<std::wstring> users_placeholders = m_oFootersHeaderString;
//------------------------------------------------------------------------------------
std::vector<CRecordHeadersFootersContainer*> oArrayHeadersFootersInfo;
pRecordSlide->GetRecordsByType(&oArrayHeadersFootersInfo, false, true);
if (0 != oArrayHeadersFootersInfo.size())
{
std::vector<CRecordHeadersFootersAtom*> oHeadersFootersInfo;
oArrayHeadersFootersInfo[0]->GetRecordsByType(&oHeadersFootersInfo, true, false);
if (!oHeadersFootersInfo.empty())
{
pSlide->m_bHasDate = oHeadersFootersInfo[0]->m_bHasDate || oHeadersFootersInfo[0]->m_bHasTodayDate || oHeadersFootersInfo[0]->m_bHasUserDate;
pSlide->m_bHasFooter = oHeadersFootersInfo[0]->m_bHasFooter;
pSlide->m_bHasSlideNumber = oHeadersFootersInfo[0]->m_bHasSlideNumber;
if (oHeadersFootersInfo[0]->m_bHasUserDate) pSlide->m_nFormatDate = 2;
else pSlide->m_nFormatDate = 1;
}
std::vector<CRecordCString*> oHeadersFootersStr;
oArrayHeadersFootersInfo[0]->GetRecordsByType(&oHeadersFootersStr, true, false);
if (!oHeadersFootersStr.empty()) users_placeholders.clear();
for (int i = 0 ;i < oHeadersFootersStr.size(); i++)
{
users_placeholders.push_back(oHeadersFootersStr[i]->m_strText);
}
}
//-------------------------------------------------------------------------------------------------------
std::vector<CRecordCString*> oArrayStrings;
pRecordSlide->GetRecordsByType(&oArrayStrings, false, false);
@ -568,7 +613,7 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide)
pSlide->m_sName = oArrayStrings[i]->m_strText;
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...
//------------- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ------------------------------------------------------------------------------------------
std::vector<CRecordShapeContainer*> oArrayShapes;
pRecordSlide->GetRecordsByType(&oArrayShapes, true);
@ -608,46 +653,59 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide)
pSlide->m_arElements.push_back(pElem);
}
if (pElem->m_lPlaceholderType > 0 )
{
if (pElem->m_lPlaceholderUserStr >= 0 && pElem->m_lPlaceholderUserStr < users_placeholders.size())
{
CShapeElement* pShape = dynamic_cast<CShapeElement*>(pElem);
if (NULL != pShape)
pShape->SetUpText(users_placeholders[pElem->m_lPlaceholderUserStr]);
}
slidePlaceholders.insert(std::pair<int,int>(pElem->m_lPlaceholderType, pSlide->m_arElements.size() - 1) );
}
}
}
//------------- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
//------------- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::map<int, int>::iterator it;
it = pLayout->m_mapPlaceholders.find(NSOfficePPT::MasterSlideNumber);
if ( it != pLayout->m_mapPlaceholders.end() &&
slidePlaceholders.find(NSOfficePPT::MasterSlideNumber) == slidePlaceholders.end())
IElement* pElement = NULL;
if (pSlide->m_bHasSlideNumber)
{
IElement* pElement = pLayout->m_arElements[it->second]->CreateDublicate();
pSlide->m_arElements.push_back(pElement);
it = pLayout->m_mapPlaceholders.find(NSOfficePPT::MasterSlideNumber);
if ( it != pLayout->m_mapPlaceholders.end() &&
slidePlaceholders.find(NSOfficePPT::MasterSlideNumber) == slidePlaceholders.end())
{
pElement = pLayout->m_arElements[it->second]->CreateDublicate();
pSlide->m_arElements.push_back(pElement);
}
}
it = pLayout->m_mapPlaceholders.find(MasterDate);
if ( it != pLayout->m_mapPlaceholders.end() &&
slidePlaceholders.find(NSOfficePPT::MasterDate) == slidePlaceholders.end())
if (pSlide->m_bHasDate)
{
IElement* pElement = pLayout->m_arElements[it->second]->CreateDublicate();
pSlide->m_arElements.push_back(pElement);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 97 <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> Notes
//it = pLayout->m_mapPlaceholders.find(MasterHeader);
//if ( it != pLayout->m_mapPlaceholders.end() &&
// slidePlaceholders.find(NSOfficePPT::MasterHeader) == slidePlaceholders.end())
//{
// IElement* pElement = pLayout->m_arElements[it->second]->CreateDublicate();
// pSlide->m_arElements.push_back(pElement);
//}
it = pLayout->m_mapPlaceholders.find(MasterFooter);
if ( it != pLayout->m_mapPlaceholders.end() &&
slidePlaceholders.find(NSOfficePPT::MasterFooter) == slidePlaceholders.end())
{
IElement* pElement = pLayout->m_arElements[it->second]->CreateDublicate();
pSlide->m_arElements.push_back(pElement);
it = pLayout->m_mapPlaceholders.find(MasterDate);
if ( it != pLayout->m_mapPlaceholders.end() &&
slidePlaceholders.find(NSOfficePPT::MasterDate) == slidePlaceholders.end())
{
pElement = pLayout->m_arElements[it->second]->CreateDublicate();
pSlide->m_arElements.push_back(pElement);
}
else
{
it = slidePlaceholders.find(NSOfficePPT::MasterDate);
pElement = pSlide->m_arElements[it->second];
}
pElement->m_nFormatDate = pSlide->m_nFormatDate;
}
if (pSlide->m_bHasFooter)
{
it = pLayout->m_mapPlaceholders.find(MasterFooter);
if ( it != pLayout->m_mapPlaceholders.end() &&
slidePlaceholders.find(NSOfficePPT::MasterFooter) == slidePlaceholders.end())
{
pElement = pLayout->m_arElements[it->second]->CreateDublicate();
pSlide->m_arElements.push_back(pElement);
}
}
}
IElement* CPPTUserInfo::AddThemeLayoutPlaceholder (CLayout *pLayout, int placeholderType, NSPresentationEditor::CTheme* pTheme)
@ -688,13 +746,20 @@ IElement* CPPTUserInfo::AddNewLayoutPlaceholder (CLayout *pLayout, int placehold
return pShape;
}
int CPPTUserInfo::AddNewLayout(CTheme* pTheme, SSlideLayoutAtom* layoutRecord, std::vector<CTextFullSettings> & text,
CRecordHeadersFootersAtom* headers_footers, bool addShapes, bool bMasterObjects)
int CPPTUserInfo::AddNewLayout(CTheme* pTheme, CRecordSlide* pRecordSlide, bool addShapes, bool bMasterObjects)
{
if (pTheme == NULL) return -1;
if (pTheme == NULL) return -1;
if (pRecordSlide == NULL) return -1;
int ind = pTheme->m_arLayouts.size();
std::vector<CRecordSlideAtom*> oArraySlideAtoms;
pRecordSlide->GetRecordsByType(&oArraySlideAtoms, true);
if (0 == oArraySlideAtoms.size()) return -1;
SSlideLayoutAtom & layoutRecord = oArraySlideAtoms[0]->m_oLayout;
int ind = pTheme->m_arLayouts.size();
CLayout layout;
pTheme->m_arLayouts.push_back(layout);
CLayout *pLayout = &pTheme->m_arLayouts.back();
@ -710,14 +775,14 @@ int CPPTUserInfo::AddNewLayout(CTheme* pTheme, SSlideLayoutAtom* layoutRecord, s
pLayout->m_bUseThemeColorScheme = true;
pLayout->m_bShowMasterShapes = true;
pLayout->m_strLayoutType = ConvertLayoutType(layoutRecord->m_nGeom, layoutRecord->m_pPlaceHolderID);
pLayout->m_strLayoutType = ConvertLayoutType(layoutRecord.m_nGeom, layoutRecord.m_pPlaceHolderID);
if (!addShapes) return ind;
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pTheme->m_mapGeomToLayout.insert(std::pair<_UINT64, LONG>(layoutRecord->m_hash, ind));
pTheme->m_mapGeomToLayout.insert(std::pair<_UINT64, LONG>(layoutRecord.m_hash, ind));
int defObjSize = -1;
switch (layoutRecord->m_nGeom)
switch (layoutRecord.m_nGeom)
{
case 0x01: // SL_TitleBody
defObjSize = 0; break;
@ -740,9 +805,9 @@ int CPPTUserInfo::AddNewLayout(CTheme* pTheme, SSlideLayoutAtom* layoutRecord, s
for (int i = 0 ; i < 8; i ++)
{
if (layoutRecord->m_pPlaceHolderID[i] == 0) break;
if (layoutRecord.m_pPlaceHolderID[i] == 0) break;
switch(layoutRecord->m_pPlaceHolderID[i])
switch(layoutRecord.m_pPlaceHolderID[i])
{
case NSOfficePPT::MasterTitle :
case NSOfficePPT::MasterBody :
@ -755,7 +820,7 @@ int CPPTUserInfo::AddNewLayout(CTheme* pTheme, SSlideLayoutAtom* layoutRecord, s
case NSOfficePPT::MasterHeader:
case NSOfficePPT::MasterFooter:
{
int usualType = layoutRecord->m_pPlaceHolderID[i];
int usualType = layoutRecord.m_pPlaceHolderID[i];
CorrectPlaceholderType(usualType);
if (!AddThemeLayoutPlaceholder(pLayout, usualType, pTheme))
@ -764,43 +829,31 @@ int CPPTUserInfo::AddNewLayout(CTheme* pTheme, SSlideLayoutAtom* layoutRecord, s
}
}break;
default:
AddNewLayoutPlaceholder(pLayout, layoutRecord->m_pPlaceHolderID[i], defObjSize);
AddNewLayoutPlaceholder(pLayout, layoutRecord.m_pPlaceHolderID[i], defObjSize);
break;
}
}
//if (layoutRecord->m_nGeom==0x0F) return ind; // big object only !!!
//if (layoutRecord.m_nGeom==0x0F) return ind; // big object only !!!
if (headers_footers)
pLayout->m_bHasDate = pTheme->m_bHasDate;
pLayout->m_bHasFooter = pTheme->m_bHasFooter;
pLayout->m_bHasSlideNumber = pTheme->m_bHasSlideNumber;
pLayout->m_nFormatDate = pTheme->m_nFormatDate;
if (pLayout->m_bHasSlideNumber)
{
if (headers_footers->m_bHasSlideNumber)
{
AddThemeLayoutPlaceholder(pLayout, MasterSlideNumber, pTheme);
}
if (headers_footers->m_bHasTodayDate ||
headers_footers->m_bHasUserDate ||
headers_footers->m_bHasDate)
{
AddThemeLayoutPlaceholder(pLayout, MasterDate, pTheme);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 97 <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> Notes
//if (headers_footers->m_bHasHeader)
//{
// AddThemeLayoutPlaceholder(pLayout, MasterHeader, pTheme);
//}
if (headers_footers->m_bHasFooter)
{
AddThemeLayoutPlaceholder(pLayout, MasterFooter, pTheme);
}
AddThemeLayoutPlaceholder(pLayout, MasterSlideNumber, pTheme);
}
else if (bMasterObjects)
if (pLayout->m_bHasDate)
{
AddThemeLayoutPlaceholder(pLayout, MasterSlideNumber ,pTheme);
AddThemeLayoutPlaceholder(pLayout, MasterDate ,pTheme);
AddThemeLayoutPlaceholder(pLayout, MasterFooter ,pTheme);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 97 <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> Notes
//AddThemeLayoutPlaceholder(pLayout, MasterHeader ,pTheme);
AddThemeLayoutPlaceholder(pLayout, MasterDate, pTheme);
}
if (pLayout->m_bHasFooter)
{
AddThemeLayoutPlaceholder(pLayout, MasterFooter, pTheme);
}
return ind;
}
@ -893,6 +946,41 @@ void CPPTUserInfo::LoadMainMaster(DWORD dwMasterID, const LONG& lOriginWidth, co
pTheme->m_lOriginalWidth = lOriginWidth;
pTheme->m_lOriginalHeight = lOriginHeight;
pTheme->m_bHasDate = m_bHasDate;
pTheme->m_bHasFooter = m_bHasFooter;
pTheme->m_bHasSlideNumber = m_bHasSlideNumber;
pTheme->m_nFormatDate = m_nFormatDate;
std::vector<std::wstring> users_placeholders = m_oFootersHeaderString;
std::vector<CRecordHeadersFootersContainer*> oArrayHeadersFootersInfo;
pMaster->GetRecordsByType(&oArrayHeadersFootersInfo, false, true);
if (0 != oArrayHeadersFootersInfo.size())
{
std::vector<CRecordHeadersFootersAtom*> oHeadersFootersInfo;
oArrayHeadersFootersInfo[0]->GetRecordsByType(&oHeadersFootersInfo, true, false);
if (!oHeadersFootersInfo.empty())
{
pTheme->m_bHasDate = oHeadersFootersInfo[0]->m_bHasDate || oHeadersFootersInfo[0]->m_bHasTodayDate || oHeadersFootersInfo[0]->m_bHasUserDate;
pTheme->m_bHasFooter = oHeadersFootersInfo[0]->m_bHasFooter;
pTheme->m_bHasSlideNumber = oHeadersFootersInfo[0]->m_bHasSlideNumber;
if (oHeadersFootersInfo[0]->m_bHasUserDate )
m_nFormatDate = 2;
else m_nFormatDate = 1;
}
std::vector<CRecordCString*> oHeadersFootersStr;
oArrayHeadersFootersInfo[0]->GetRecordsByType(&oHeadersFootersStr, true, false);
if (!oHeadersFootersStr.empty()) users_placeholders.clear();
for (int i = 0 ;i < oHeadersFootersStr.size(); i++)
{
users_placeholders.push_back(oHeadersFootersStr[i]->m_strText);
}
}
std::vector<CRecordCString*> oArrayStrings;
pMaster->GetRecordsByType(&oArrayStrings, false, false);
for (int i=0; i < oArrayStrings.size(); i++)
@ -1036,46 +1124,38 @@ void CPPTUserInfo::LoadMainMaster(DWORD dwMasterID, const LONG& lOriginWidth, co
pTheme->m_arElements.push_back(pElem);
if ( pElem->m_lPlaceholderType >0)
{
if (pElem->m_lPlaceholderUserStr >= 0 && pElem->m_lPlaceholderUserStr < users_placeholders.size())
{
CShapeElement* pShape = dynamic_cast<CShapeElement*>(pElem);
if (NULL != pShape)
pShape->SetUpText(users_placeholders[pElem->m_lPlaceholderUserStr]);
}
pTheme->m_mapPlaceholders.insert(std::pair<int, int>(pElem->m_lPlaceholderType, pTheme->m_arElements.size()-1));
}
}
}
std::vector<CRecordHeadersFootersAtom*> oArrayHeadersFootersAtoms;
pMaster->GetRecordsByType(&oArrayHeadersFootersAtoms, true, true);
if (!oArrayHeadersFootersAtoms.empty())
if (pTheme->m_bHasSlideNumber)
{
if (oArrayHeadersFootersAtoms[0]->m_bHasSlideNumber)
if (pTheme->m_mapPlaceholders.find(MasterSlideNumber) == pTheme->m_mapPlaceholders.end())
{
if (pTheme->m_mapPlaceholders.find(MasterSlideNumber) == pTheme->m_mapPlaceholders.end())
{
AddNewThemePlaceholder(pTheme, MasterSlideNumber, 2);
}
AddNewThemePlaceholder(pTheme, MasterSlideNumber, 2);
}
if (oArrayHeadersFootersAtoms[0]->m_bHasTodayDate ||
oArrayHeadersFootersAtoms[0]->m_bHasUserDate ||
oArrayHeadersFootersAtoms[0]->m_bHasDate)
}
if (pTheme->m_bHasDate && pTheme->m_nFormatDate == 1)
{
if (pTheme->m_mapPlaceholders.find(MasterDate) == pTheme->m_mapPlaceholders.end())
{
if (pTheme->m_mapPlaceholders.find(MasterDate) == pTheme->m_mapPlaceholders.end())
{
AddNewThemePlaceholder(pTheme, MasterDate, 2);
}
AddNewThemePlaceholder(pTheme, MasterDate, 2);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 97 <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> Notes
//if (oArrayHeadersFootersAtoms[0]->m_bHasHeader)
//{
// if (pLayout->m_mapPlaceholders.find(MasterHeader) == pLayout->m_mapPlaceholders.end())
// {
// AddNewThemePlaceholder(pTheme, MasterHeader, 1);
// }
//}
if (oArrayHeadersFootersAtoms[0]->m_bHasFooter)
}
if (pTheme->m_bHasFooter)
{
if (pTheme->m_mapPlaceholders.find(MasterFooter) == pTheme->m_mapPlaceholders.end())
{
if (pLayout->m_mapPlaceholders.find(MasterFooter) == pLayout->m_mapPlaceholders.end())
{
AddNewThemePlaceholder(pTheme, MasterFooter, 1);
}
}
AddNewThemePlaceholder(pTheme, MasterFooter, 1);
}
}
}
@ -1170,7 +1250,7 @@ void CPPTUserInfo::LoadNoMainMaster(DWORD dwMasterID, const LONG& lOriginWidth,
CLayout* pLayout = NULL;
int lLayoutID = AddNewLayout(pTheme, &oArraySlideAtoms[0]->m_oLayout, pCurMaster->m_oPersist.m_arTextAttrs, NULL, false, false);
int lLayoutID = AddNewLayout(pTheme, pCurMaster, false, false);
pLayout = &pTheme->m_arLayouts[lLayoutID];
pLayout->m_bShowMasterShapes = false;
@ -1215,6 +1295,32 @@ void CPPTUserInfo::LoadNoMainMaster(DWORD dwMasterID, const LONG& lOriginWidth,
}
}
}
std::vector<CRecordHeadersFootersContainer*> oArrayHeadersFootersInfo;
pCurMaster->GetRecordsByType(&oArrayHeadersFootersInfo, false, true);
if (0 != oArrayHeadersFootersInfo.size())
{
std::vector<CRecordHeadersFootersAtom*> oHeadersFootersInfo;
oArrayHeadersFootersInfo[0]->GetRecordsByType(&oHeadersFootersInfo, true, false);
if (!oHeadersFootersInfo.empty())
{
pLayout->m_bHasDate = oHeadersFootersInfo[0]->m_bHasDate || oHeadersFootersInfo[0]->m_bHasTodayDate || oHeadersFootersInfo[0]->m_bHasUserDate;
pLayout->m_bHasFooter = oHeadersFootersInfo[0]->m_bHasFooter;
pLayout->m_bHasSlideNumber = oHeadersFootersInfo[0]->m_bHasSlideNumber;
if (oHeadersFootersInfo[0]->m_bHasUserDate) pLayout->m_nFormatDate = 2;
}
std::vector<CRecordCString*> oHeadersFootersStr;
oArrayHeadersFootersInfo[0]->GetRecordsByType(&oHeadersFootersStr, true, false);
for (int i = 0 ;i < oHeadersFootersStr.size(); i++)
{
m_oFootersHeaderString.push_back(oHeadersFootersStr[i]->m_strText);
}
}
std::vector<CRecordCString*> oArrayStrings;
pCurMaster->GetRecordsByType(&oArrayStrings, false, false);
@ -1261,41 +1367,27 @@ void CPPTUserInfo::LoadNoMainMaster(DWORD dwMasterID, const LONG& lOriginWidth,
}
}
std::vector<CRecordHeadersFootersAtom*> oArrayHeadersFootersAtoms;
pCurMaster->GetRecordsByType(&oArrayHeadersFootersAtoms, true, true);
if (!oArrayHeadersFootersAtoms.empty())
if (pLayout->m_bHasSlideNumber)
{
if (oArrayHeadersFootersAtoms[0]->m_bHasSlideNumber)
if (pLayout->m_mapPlaceholders.find(MasterSlideNumber) == pLayout->m_mapPlaceholders.end())
{
if (pLayout->m_mapPlaceholders.find(MasterSlideNumber) == pLayout->m_mapPlaceholders.end())
{
AddNewLayoutPlaceholder(pLayout, MasterSlideNumber, 2);
}
AddNewLayoutPlaceholder(pLayout, MasterSlideNumber, 2);
}
if (oArrayHeadersFootersAtoms[0]->m_bHasTodayDate ||
oArrayHeadersFootersAtoms[0]->m_bHasUserDate ||
oArrayHeadersFootersAtoms[0]->m_bHasDate)
}
if (pLayout->m_bHasDate && pLayout->m_nFormatDate == 1)
{
if (pLayout->m_mapPlaceholders.find(MasterDate) == pLayout->m_mapPlaceholders.end())
{
if (pLayout->m_mapPlaceholders.find(MasterDate) == pLayout->m_mapPlaceholders.end())
{
AddNewLayoutPlaceholder(pLayout, MasterDate, 2);
}
AddNewLayoutPlaceholder(pLayout, MasterDate, 2);
}
if (oArrayHeadersFootersAtoms[0]->m_bHasHeader)
}
if (pLayout->m_bHasFooter)
{
if (pLayout->m_mapPlaceholders.find(MasterFooter) == pLayout->m_mapPlaceholders.end())
{
if (pLayout->m_mapPlaceholders.find(MasterHeader) == pLayout->m_mapPlaceholders.end())
{
AddNewLayoutPlaceholder(pLayout, MasterHeader, 1);
}
}
if (oArrayHeadersFootersAtoms[0]->m_bHasFooter)
{
if (pLayout->m_mapPlaceholders.find(MasterFooter) == pLayout->m_mapPlaceholders.end())
{
AddNewLayoutPlaceholder(pLayout, MasterFooter, 1);
}
}
AddNewLayoutPlaceholder(pLayout, MasterFooter, 1);
}
}
}