Commit 8e862127 authored by Elen.Subbotina's avatar Elen.Subbotina Committed by Alexander Trofimov

PPTFormat

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@65667 954022d7-b5bf-4e40-9824-e11837661b57
parent 27aac365
...@@ -311,25 +311,17 @@ void CPPTUserInfo::FromDocument() ...@@ -311,25 +311,17 @@ void CPPTUserInfo::FromDocument()
if (0 != oArrayHeadersFootersInfo.size()) if (0 != oArrayHeadersFootersInfo.size())
{ {
std::vector<CRecordHeadersFootersAtom*> oHeadersFootersInfo; if (oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom)
oArrayHeadersFootersInfo[0]->GetRecordsByType(&oHeadersFootersInfo, true, false);
if (!oHeadersFootersInfo.empty())
{ {
m_bHasDate = oHeadersFootersInfo[0]->m_bHasDate || oHeadersFootersInfo[0]->m_bHasTodayDate || oHeadersFootersInfo[0]->m_bHasUserDate; m_bHasDate = oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasDate ||
m_bHasFooter = oHeadersFootersInfo[0]->m_bHasFooter; oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasTodayDate ||
m_bHasSlideNumber = oHeadersFootersInfo[0]->m_bHasSlideNumber; oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasUserDate;
m_bHasFooter = oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasFooter;
m_bHasSlideNumber = oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasSlideNumber;
if (oHeadersFootersInfo[0]->m_bHasUserDate) m_nFormatDate = 2; if (oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->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);
} }
for (int i = 0 ; i < 3; i++) m_PlaceholdersReplaceString[i] = oArrayHeadersFootersInfo[0]->m_HeadersFootersString[i];
} }
LONG lOriginWidth = oArrayDoc[0]->m_oSlideSize.X; LONG lOriginWidth = oArrayDoc[0]->m_oSlideSize.X;
...@@ -568,39 +560,33 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide) ...@@ -568,39 +560,33 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide)
} }
} }
//------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------
pSlide->m_bHasDate = pLayout->m_bHasDate; std::vector<std::wstring> users_placeholders[3];
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; std::vector<CRecordHeadersFootersContainer*> oArrayHeadersFootersInfo;
pRecordSlide->GetRecordsByType(&oArrayHeadersFootersInfo, false, true); pRecordSlide->GetRecordsByType(&oArrayHeadersFootersInfo, true, false);
if (0 != oArrayHeadersFootersInfo.size()) if (0 != oArrayHeadersFootersInfo.size())
{ {
std::vector<CRecordHeadersFootersAtom*> oHeadersFootersInfo; if (oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom)
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_bHasDate = oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasDate ||
pSlide->m_bHasFooter = oHeadersFootersInfo[0]->m_bHasFooter; oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasTodayDate ||
pSlide->m_bHasSlideNumber = oHeadersFootersInfo[0]->m_bHasSlideNumber; oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasUserDate;
pSlide->m_bHasFooter = oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasFooter;
pSlide->m_bHasSlideNumber = oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasSlideNumber;
if (oHeadersFootersInfo[0]->m_bHasUserDate) pSlide->m_nFormatDate = 2; if (oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasUserDate) pSlide->m_nFormatDate = 2;
else pSlide->m_nFormatDate = 1;
} }
for (int i = 0 ; i < 3; i++) users_placeholders[i] = oArrayHeadersFootersInfo[0]->m_HeadersFootersString[i];
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);
} }
else
{
pSlide->m_bHasDate = pLayout->m_bHasDate;
pSlide->m_bHasFooter = pLayout->m_bHasFooter;
pSlide->m_bHasSlideNumber = pLayout->m_bHasSlideNumber;
pSlide->m_nFormatDate = m_nFormatDate;
for (int i = 0 ; i < 3; i++) users_placeholders[i] = m_PlaceholdersReplaceString[i];
} }
//------------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------------------
std::vector<CRecordCString*> oArrayStrings; std::vector<CRecordCString*> oArrayStrings;
...@@ -621,8 +607,6 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide) ...@@ -621,8 +607,6 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide)
pSlide->m_bShowMasterShapes = bMasterObjects; pSlide->m_bShowMasterShapes = bMasterObjects;
pSlide->m_bIsBackground = false; pSlide->m_bIsBackground = false;
std::map<int,int> slidePlaceholders;
for (int nShape = 0; nShape < oArrayShapes.size(); ++nShape) for (int nShape = 0; nShape < oArrayShapes.size(); ++nShape)
{ {
IElement* pElem = NULL; IElement* pElem = NULL;
...@@ -652,74 +636,126 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide) ...@@ -652,74 +636,126 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide)
{ {
pSlide->m_arElements.push_back(pElem); pSlide->m_arElements.push_back(pElem);
} }
if (pElem->m_lPlaceholderType > 0 ) if (pElem->m_lPlaceholderType >= 0 )
{ {
if (pElem->m_lPlaceholderUserStr >= 0 && pElem->m_lPlaceholderUserStr < users_placeholders.size()) pSlide->m_mapPlaceholders.insert(std::pair<int,int>(pElem->m_lPlaceholderType, pSlide->m_arElements.size() - 1) );
}
}
}
AddLayoutSlidePlaceholder(pSlide, MasterSlideNumber , pLayout);
AddLayoutSlidePlaceholder(pSlide, MasterDate , pLayout);
//-------------
std::multimap<int, int>::iterator it;
IElement* pElement = NULL;
if (pSlide->m_bHasSlideNumber)
{ {
CShapeElement* pShape = dynamic_cast<CShapeElement*>(pElem); AddLayoutSlidePlaceholder(pSlide, MasterSlideNumber, pLayout, true);
}
if (pSlide->m_bHasDate)
{
IElement *pElement = AddLayoutSlidePlaceholder(pSlide, MasterDate, pLayout, true);
if (pElement)
{
pElement->m_nFormatDate = pSlide->m_nFormatDate;
if ( pElement->m_lPlaceholderUserStr >= 0)
{
CShapeElement* pShape = dynamic_cast<CShapeElement*>(pElement);
if (NULL != pShape) if (NULL != pShape)
pShape->SetUpText(users_placeholders[pElem->m_lPlaceholderUserStr]); {
if (pElement->m_lPlaceholderUserStr < users_placeholders[0].size())
{
pShape->SetUpTextPlaceholder(users_placeholders[0][pElement->m_lPlaceholderUserStr]);
}
else pShape->SetUpTextPlaceholder(L"");
} }
slidePlaceholders.insert(std::pair<int,int>(pElem->m_lPlaceholderType, pSlide->m_arElements.size() - 1) );
} }
} }
} }
//-------------
std::map<int, int>::iterator it;
IElement* pElement = NULL;
if (pSlide->m_bHasSlideNumber) if (pSlide->m_bHasFooter)
{ {
it = pLayout->m_mapPlaceholders.find(NSOfficePPT::MasterSlideNumber); IElement *pElement = AddLayoutSlidePlaceholder(pSlide, MasterFooter, pLayout, true);
if ( it != pLayout->m_mapPlaceholders.end() &&
slidePlaceholders.find(NSOfficePPT::MasterSlideNumber) == slidePlaceholders.end()) if ((pElement) && (pElement->m_lPlaceholderUserStr >= 0))
{ {
pElement = pLayout->m_arElements[it->second]->CreateDublicate(); CShapeElement* pShape = dynamic_cast<CShapeElement*>(pElement);
pSlide->m_arElements.push_back(pElement); if (NULL != pShape)
{
if (pElement->m_lPlaceholderUserStr < users_placeholders[2].size())
{
pShape->SetUpTextPlaceholder(users_placeholders[2][pElement->m_lPlaceholderUserStr]);
}
else pShape->SetUpTextPlaceholder(L"");
} }
} }
}
}
if (pSlide->m_bHasDate) IElement* CPPTUserInfo::AddLayoutSlidePlaceholder (CSlide *pSlide, int placeholderType, CLayout *pLayout, bool idx_only)
{
IElement* pElement = NULL;
for (std::multimap<int, int>::iterator it = pLayout->m_mapPlaceholders.begin(); it != pLayout->m_mapPlaceholders.end(); it++)
{
if (it->first == placeholderType )
{ {
it = pLayout->m_mapPlaceholders.find(MasterDate); if (idx_only == false)
if ( it != pLayout->m_mapPlaceholders.end() &&
slidePlaceholders.find(NSOfficePPT::MasterDate) == slidePlaceholders.end())
{ {
if (pLayout->m_arElements[it->second]->m_lPlaceholderID >= 0 ) continue;
pElement = pLayout->m_arElements[it->second]->CreateDublicate(); pElement = pLayout->m_arElements[it->second]->CreateDublicate();
pSlide->m_arElements.push_back(pElement);
pSlide->m_arElements.push_back(dynamic_cast<IElement*>(pElement));
pSlide->m_mapPlaceholders.insert(std::pair<int, int>(placeholderType, pSlide->m_arElements.size()-1));
} }
else else
{ {
it = slidePlaceholders.find(NSOfficePPT::MasterDate); if (pLayout->m_arElements[it->second]->m_lPlaceholderID < 0 ) continue;
pElement = pSlide->m_arElements[it->second];
}
pElement->m_nFormatDate = pSlide->m_nFormatDate;
}
if (pSlide->m_bHasFooter) for (std::multimap<int, int>::iterator it1 = pSlide->m_mapPlaceholders.begin(); it1 != pSlide->m_mapPlaceholders.end(); it1++)
{
if (it1->first == placeholderType && pSlide->m_arElements[it1->second]->m_lPlaceholderID >= 0)
{ {
it = pLayout->m_mapPlaceholders.find(MasterFooter); pElement = pSlide->m_arElements[it1->second];
if ( it != pLayout->m_mapPlaceholders.end() && break;
slidePlaceholders.find(NSOfficePPT::MasterFooter) == slidePlaceholders.end()) }
}
if (pElement == NULL)
{ {
pElement = pLayout->m_arElements[it->second]->CreateDublicate(); pElement = pLayout->m_arElements[it->second]->CreateDublicate();
pSlide->m_arElements.push_back(pElement);
pSlide->m_arElements.push_back(dynamic_cast<IElement*>(pElement));
pSlide->m_mapPlaceholders.insert(std::pair<int, int>(placeholderType, pSlide->m_arElements.size()-1));
}
} }
} }
}
return pElement;
} }
IElement* CPPTUserInfo::AddThemeLayoutPlaceholder (CLayout *pLayout, int placeholderType, NSPresentationEditor::CTheme* pTheme) IElement* CPPTUserInfo::AddThemeLayoutPlaceholder (CLayout *pLayout, int placeholderType, CTheme* pTheme)
{ {
IElement* pElement = NULL; IElement* pElement = NULL;
std::map<int, int>::iterator it = pTheme->m_mapPlaceholders.find(placeholderType);
if ((it != pTheme->m_mapPlaceholders.end()) && (pLayout->m_mapPlaceholders.find(placeholderType) == pLayout->m_mapPlaceholders.end())) for (std::multimap<int, int>::iterator it = pTheme->m_mapPlaceholders.begin(); it != pTheme->m_mapPlaceholders.end(); it++)
{
if (it->first == placeholderType )
{ {
pElement = pTheme->m_arElements[it->second]->CreateDublicate(); pElement = pTheme->m_arElements[it->second]->CreateDublicate();
pLayout->m_arElements.push_back(dynamic_cast<IElement*>(pElement)); pLayout->m_arElements.push_back(dynamic_cast<IElement*>(pElement));
pLayout->m_mapPlaceholders.insert(std::pair<int, int>(it->first, pLayout->m_arElements.size()-1)); pLayout->m_mapPlaceholders.insert(std::pair<int, int>(placeholderType, pLayout->m_arElements.size()-1));
} }
return pElement; }
return pElement; //last added
} }
IElement* CPPTUserInfo::AddNewLayoutPlaceholder (CLayout *pLayout, int placeholderType, int placeholderSizePreset) IElement* CPPTUserInfo::AddNewLayoutPlaceholder (CLayout *pLayout, int placeholderType, int placeholderSizePreset)
...@@ -841,19 +877,9 @@ int CPPTUserInfo::AddNewLayout(CTheme* pTheme, CRecordSlide* pRecordSlide, bool ...@@ -841,19 +877,9 @@ int CPPTUserInfo::AddNewLayout(CTheme* pTheme, CRecordSlide* pRecordSlide, bool
pLayout->m_bHasSlideNumber = pTheme->m_bHasSlideNumber; pLayout->m_bHasSlideNumber = pTheme->m_bHasSlideNumber;
pLayout->m_nFormatDate = pTheme->m_nFormatDate; pLayout->m_nFormatDate = pTheme->m_nFormatDate;
if (pLayout->m_bHasSlideNumber)
{
AddThemeLayoutPlaceholder(pLayout, MasterSlideNumber, pTheme); AddThemeLayoutPlaceholder(pLayout, MasterSlideNumber, pTheme);
}
if (pLayout->m_bHasDate)
{
AddThemeLayoutPlaceholder(pLayout, MasterDate, pTheme); AddThemeLayoutPlaceholder(pLayout, MasterDate, pTheme);
}
if (pLayout->m_bHasFooter)
{
AddThemeLayoutPlaceholder(pLayout, MasterFooter, pTheme); AddThemeLayoutPlaceholder(pLayout, MasterFooter, pTheme);
}
return ind; return ind;
} }
...@@ -946,40 +972,22 @@ void CPPTUserInfo::LoadMainMaster(DWORD dwMasterID, const LONG& lOriginWidth, co ...@@ -946,40 +972,22 @@ void CPPTUserInfo::LoadMainMaster(DWORD dwMasterID, const LONG& lOriginWidth, co
pTheme->m_lOriginalWidth = lOriginWidth; pTheme->m_lOriginalWidth = lOriginWidth;
pTheme->m_lOriginalHeight = lOriginHeight; 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; std::vector<CRecordHeadersFootersContainer*> oArrayHeadersFootersInfo;
pMaster->GetRecordsByType(&oArrayHeadersFootersInfo, false, true); pMaster->GetRecordsByType(&oArrayHeadersFootersInfo, true, false);
if (0 != oArrayHeadersFootersInfo.size()) if (0 != oArrayHeadersFootersInfo.size())
{ {
std::vector<CRecordHeadersFootersAtom*> oHeadersFootersInfo; if (oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom)
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_bHasDate = oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasDate ||
pTheme->m_bHasFooter = oHeadersFootersInfo[0]->m_bHasFooter; oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasTodayDate ||
pTheme->m_bHasSlideNumber = oHeadersFootersInfo[0]->m_bHasSlideNumber; oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasUserDate;
pTheme->m_bHasFooter = oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasFooter;
pTheme->m_bHasSlideNumber = oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasSlideNumber;
if (oHeadersFootersInfo[0]->m_bHasUserDate ) if (oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasUserDate ) pTheme->m_nFormatDate = 2;
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);
} }
for(int i = 0 ; i< 3; i++) pTheme->m_PlaceholdersReplaceString[i] = oArrayHeadersFootersInfo[0]->m_HeadersFootersString[i];
} }
std::vector<CRecordCString*> oArrayStrings; std::vector<CRecordCString*> oArrayStrings;
pMaster->GetRecordsByType(&oArrayStrings, false, false); pMaster->GetRecordsByType(&oArrayStrings, false, false);
...@@ -1070,8 +1078,6 @@ void CPPTUserInfo::LoadMainMaster(DWORD dwMasterID, const LONG& lOriginWidth, co ...@@ -1070,8 +1078,6 @@ void CPPTUserInfo::LoadMainMaster(DWORD dwMasterID, const LONG& lOriginWidth, co
else else
pMasterWrapper->m_pStyles[3] = m_oDefaultTextStyle; pMasterWrapper->m_pStyles[3] = m_oDefaultTextStyle;
pTheme->m_oFootersHeaderString = m_oFootersHeaderString;
CTextStyles oPPTDefaultStyle; CTextStyles oPPTDefaultStyle;
CreateDefaultStyle(oPPTDefaultStyle, pTheme); CreateDefaultStyle(oPPTDefaultStyle, pTheme);
oPPTDefaultStyle.ApplyAfter(m_oDefaultTextStyle); oPPTDefaultStyle.ApplyAfter(m_oDefaultTextStyle);
...@@ -1125,11 +1131,11 @@ void CPPTUserInfo::LoadMainMaster(DWORD dwMasterID, const LONG& lOriginWidth, co ...@@ -1125,11 +1131,11 @@ void CPPTUserInfo::LoadMainMaster(DWORD dwMasterID, const LONG& lOriginWidth, co
if ( pElem->m_lPlaceholderType >0) if ( pElem->m_lPlaceholderType >0)
{ {
if (pElem->m_lPlaceholderUserStr >= 0 && pElem->m_lPlaceholderUserStr < users_placeholders.size()) if (pElem->m_lPlaceholderID >=0)
{ {
CShapeElement* pShape = dynamic_cast<CShapeElement*>(pElem); if (pElem->m_lPlaceholderType == MasterSlideNumber) pTheme->m_bHasSlideNumber = true;
if (NULL != pShape) if (pElem->m_lPlaceholderType == MasterDate) pTheme->m_bHasDate = true;
pShape->SetUpText(users_placeholders[pElem->m_lPlaceholderUserStr]); if (pElem->m_lPlaceholderType == MasterFooter) pTheme->m_bHasFooter = true;
} }
pTheme->m_mapPlaceholders.insert(std::pair<int, int>(pElem->m_lPlaceholderType, pTheme->m_arElements.size()-1)); pTheme->m_mapPlaceholders.insert(std::pair<int, int>(pElem->m_lPlaceholderType, pTheme->m_arElements.size()-1));
} }
...@@ -1138,24 +1144,30 @@ void CPPTUserInfo::LoadMainMaster(DWORD dwMasterID, const LONG& lOriginWidth, co ...@@ -1138,24 +1144,30 @@ void CPPTUserInfo::LoadMainMaster(DWORD dwMasterID, const LONG& lOriginWidth, co
if (pTheme->m_bHasSlideNumber) if (pTheme->m_bHasSlideNumber)
{ {
IElement *pElem = NULL;
if (pTheme->m_mapPlaceholders.find(MasterSlideNumber) == pTheme->m_mapPlaceholders.end()) if (pTheme->m_mapPlaceholders.find(MasterSlideNumber) == pTheme->m_mapPlaceholders.end())
{ {
AddNewThemePlaceholder(pTheme, MasterSlideNumber, 2); pElem = AddNewThemePlaceholder(pTheme, MasterSlideNumber, 2);
} }
} }
if (pTheme->m_bHasDate && pTheme->m_nFormatDate == 1) if (pTheme->m_bHasDate)
{ {
if (pTheme->m_mapPlaceholders.find(MasterDate) == pTheme->m_mapPlaceholders.end()) IElement *pElem = NULL;
if (pTheme->m_mapPlaceholders.find(MasterDate) == pTheme->m_mapPlaceholders.end() && pTheme->m_nFormatDate == 1)
{ {
AddNewThemePlaceholder(pTheme, MasterDate, 2); pElem = AddNewThemePlaceholder(pTheme, MasterDate, 2);
} }
} }
if (pTheme->m_bHasFooter) if (pTheme->m_bHasFooter)
{ {
IElement *pElem = NULL;
if (pTheme->m_mapPlaceholders.find(MasterFooter) == pTheme->m_mapPlaceholders.end()) if (pTheme->m_mapPlaceholders.find(MasterFooter) == pTheme->m_mapPlaceholders.end())
{ {
AddNewThemePlaceholder(pTheme, MasterFooter, 1); pElem = AddNewThemePlaceholder(pTheme, MasterFooter, 1);
} }
} }
} }
...@@ -1296,28 +1308,19 @@ void CPPTUserInfo::LoadNoMainMaster(DWORD dwMasterID, const LONG& lOriginWidth, ...@@ -1296,28 +1308,19 @@ void CPPTUserInfo::LoadNoMainMaster(DWORD dwMasterID, const LONG& lOriginWidth,
} }
} }
std::vector<CRecordHeadersFootersContainer*> oArrayHeadersFootersInfo; std::vector<CRecordHeadersFootersContainer*> oArrayHeadersFootersInfo;
pCurMaster->GetRecordsByType(&oArrayHeadersFootersInfo, false, true); pCurMaster->GetRecordsByType(&oArrayHeadersFootersInfo, true, false);
if (0 != oArrayHeadersFootersInfo.size()) if (0 != oArrayHeadersFootersInfo.size())
{ {
std::vector<CRecordHeadersFootersAtom*> oHeadersFootersInfo; if (oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom)
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_bHasDate = oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasDate ||
pLayout->m_bHasFooter = oHeadersFootersInfo[0]->m_bHasFooter; oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasTodayDate ||
pLayout->m_bHasSlideNumber = oHeadersFootersInfo[0]->m_bHasSlideNumber; oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasUserDate;
pLayout->m_bHasFooter = oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasFooter;
pLayout->m_bHasSlideNumber = oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->m_bHasSlideNumber;
if (oHeadersFootersInfo[0]->m_bHasUserDate) pLayout->m_nFormatDate = 2; if (oArrayHeadersFootersInfo[0]->m_oHeadersFootersAtom->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);
} }
} }
...@@ -1363,7 +1366,15 @@ void CPPTUserInfo::LoadNoMainMaster(DWORD dwMasterID, const LONG& lOriginWidth, ...@@ -1363,7 +1366,15 @@ void CPPTUserInfo::LoadNoMainMaster(DWORD dwMasterID, const LONG& lOriginWidth,
pLayout->m_arElements.push_back(pElem); pLayout->m_arElements.push_back(pElem);
if ( pElem->m_lPlaceholderType >0) if ( pElem->m_lPlaceholderType >0)
{
if (pElem->m_lPlaceholderID >=0)
{
if (pElem->m_lPlaceholderType == MasterSlideNumber) pLayout->m_bHasSlideNumber = true;
if (pElem->m_lPlaceholderType == MasterDate) pLayout->m_bHasDate = true;
if (pElem->m_lPlaceholderType == MasterFooter) pLayout->m_bHasFooter = true;
}
pLayout->m_mapPlaceholders.insert(std::pair<int, int>(pElem->m_lPlaceholderType, pLayout->m_arElements.size()-1)); pLayout->m_mapPlaceholders.insert(std::pair<int, int>(pElem->m_lPlaceholderType, pLayout->m_arElements.size()-1));
}
} }
} }
......
...@@ -42,7 +42,8 @@ public: ...@@ -42,7 +42,8 @@ public:
std::vector<CFont> m_arrFonts; std::vector<CFont> m_arrFonts;
NSPresentationEditor::CTextStyles m_oDefaultTextStyle; NSPresentationEditor::CTextStyles m_oDefaultTextStyle;
std::vector<std::wstring> m_oFootersHeaderString; std::vector<std::wstring> m_PlaceholdersReplaceString[3]; //0-dates, 1 - headers, 2 - footers
bool m_bHasDate; bool m_bHasDate;
bool m_bHasSlideNumber; bool m_bHasSlideNumber;
bool m_bHasFooter; bool m_bHasFooter;
...@@ -261,7 +262,9 @@ public: ...@@ -261,7 +262,9 @@ public:
int AddNewLayout(NSPresentationEditor::CTheme* pTheme, CRecordSlide* pRecordSlide, bool addShapes, bool bMasterObjects); int AddNewLayout(NSPresentationEditor::CTheme* pTheme, CRecordSlide* pRecordSlide, bool addShapes, bool bMasterObjects);
IElement* AddNewLayoutPlaceholder (CLayout *pLayout, int placeholderType, int placeholderSizePreset = -1); IElement* AddNewLayoutPlaceholder (CLayout *pLayout, int placeholderType, int placeholderSizePreset = -1);
IElement* AddThemeLayoutPlaceholder (CLayout *pLayout, int placeholderType, CTheme* pTheme);
IElement* AddNewThemePlaceholder (CTheme* pTheme, int placeholderType, int placeholderSizePreset = -1); IElement* AddNewThemePlaceholder (CTheme* pTheme, int placeholderType, int placeholderSizePreset = -1);
IElement* AddThemeLayoutPlaceholder (CLayout *pLayout, int placeholderType, CTheme* pTheme);
IElement* AddLayoutSlidePlaceholder (CSlide *pSlide, int placeholderType, CLayout *pLayout, bool idx_only = false);
}; };
...@@ -1474,7 +1474,18 @@ public: ...@@ -1474,7 +1474,18 @@ public:
if (0 < oArrayDateMeta.size()) if (0 < oArrayDateMeta.size())
{ {
pElem->m_lPlaceholderType = PT_MasterDate; pElem->m_lPlaceholderType = PT_MasterDate;
CRecordDateTimeMetaAtom* format_data = dynamic_cast<CRecordDateTimeMetaAtom*>(oArrayDateMeta[0]);
if (format_data)
{
pElem->m_nFormatDate = 1;
//todooo
}
else
{
pElem->m_lPlaceholderUserStr = oArrayDateMeta[0]->m_nPosition; pElem->m_lPlaceholderUserStr = oArrayDateMeta[0]->m_nPosition;
pElem->m_nFormatDate = 2;
}
} }
//------------- --------------------------------------------------------------------------------- //------------- ---------------------------------------------------------------------------------
std::vector<CRecordClientAnchor*> oArrayAnchor; std::vector<CRecordClientAnchor*> oArrayAnchor;
...@@ -1601,7 +1612,10 @@ public: ...@@ -1601,7 +1612,10 @@ public:
} }
if (pElem->m_lPlaceholderType == PT_MasterSlideNumber && strShapeText.length() > 5) if (pElem->m_lPlaceholderType == PT_MasterSlideNumber && strShapeText.length() > 5)
pElem->m_lPlaceholderType = PT_MasterFooter; ///???? 1-(33).ppt {
int pos = strShapeText.find(L"*");
if (pos < 0) pElem->m_lPlaceholderType = PT_MasterFooter; ///???? 1-(33).ppt
}
//------ shape properties ---------------------------------------------------------------------------------------- //------ shape properties ----------------------------------------------------------------------------------------
for (int nIndexProp = 0; nIndexProp < oArrayOptions.size(); ++nIndexProp) for (int nIndexProp = 0; nIndexProp < oArrayOptions.size(); ++nIndexProp)
......
#pragma once #pragma once
#include "../Reader/Records.h" #include "../Reader/Records.h"
#include "CString.h"
class CRecordHeadersFootersContainer : public CRecordsContainer
{
};
class CRecordHeadersFootersAtom : public CUnknownRecord class CRecordHeadersFootersAtom : public CUnknownRecord
{ {
...@@ -31,13 +28,15 @@ public: ...@@ -31,13 +28,15 @@ public:
m_nFormatID = StreamUtils::ReadWORD(pStream); m_nFormatID = StreamUtils::ReadWORD(pStream);
USHORT nFlag = StreamUtils::ReadWORD(pStream); BYTE nFlag = StreamUtils::ReadBYTE(pStream);
m_bHasDate = ((nFlag & 0x01) == 0x01); m_bHasDate = ((nFlag & 0x01) == 0x01);
m_bHasTodayDate = ((nFlag & 0x02) == 0x02); m_bHasTodayDate = ((nFlag & 0x02) == 0x02);
m_bHasUserDate = ((nFlag & 0x04) == 0x04); m_bHasUserDate = ((nFlag & 0x04) == 0x04);
m_bHasSlideNumber = ((nFlag & 0x08) == 0x08); m_bHasSlideNumber = ((nFlag & 0x08) == 0x08);
m_bHasHeader = ((nFlag & 0x10) == 0x10); m_bHasHeader = ((nFlag & 0x10) == 0x10);
m_bHasFooter = ((nFlag & 0x20) == 0x20); m_bHasFooter = ((nFlag & 0x20) == 0x20);
StreamUtils::ReadBYTE(pStream);//reserved
} }
}; };
...@@ -92,8 +91,11 @@ public: ...@@ -92,8 +91,11 @@ public:
{ {
m_oHeader = oHeader; m_oHeader = oHeader;
if (oHeader.RecLen >=4)
{
m_nPosition = StreamUtils::ReadDWORD(pStream); m_nPosition = StreamUtils::ReadDWORD(pStream);
} }
}
}; };
class CRecordGenericDateMetaAtom : public CRecordMetaCharacterAtom class CRecordGenericDateMetaAtom : public CRecordMetaCharacterAtom
...@@ -116,13 +118,23 @@ public: ...@@ -116,13 +118,23 @@ public:
class CRecordDateTimeMetaAtom : public CRecordGenericDateMetaAtom class CRecordDateTimeMetaAtom : public CRecordGenericDateMetaAtom
{ {
public: public:
BYTE m_FormatID; DWORD m_FormatID;
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream) virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{ {
int lPosition = pStream->tell();
CRecordGenericDateMetaAtom::ReadFromStream(oHeader, pStream); CRecordGenericDateMetaAtom::ReadFromStream(oHeader, pStream);
if (oHeader.RecLen == 8)
{
m_FormatID = StreamUtils::ReadDWORD(pStream);
}
else if (oHeader.RecLen >4)
{
m_FormatID = StreamUtils::ReadBYTE(pStream); m_FormatID = StreamUtils::ReadBYTE(pStream);
StreamUtils::StreamSeek(lPosition + m_oHeader.RecLen, pStream);
}
} }
}; };
...@@ -138,3 +150,43 @@ class CRecordHeaderMetaAtom : public CRecordMetaCharacterAtom ...@@ -138,3 +150,43 @@ class CRecordHeaderMetaAtom : public CRecordMetaCharacterAtom
class CRecordSlideNumberMetaAtom : public CRecordMetaCharacterAtom class CRecordSlideNumberMetaAtom : public CRecordMetaCharacterAtom
{ {
}; };
class CRecordHeadersFootersContainer : public CRecordsContainer
{
public:
std::vector<std::wstring> m_HeadersFootersString[3]; //0-dates, 1 - headers, 2 - footers
CRecordHeadersFootersAtom *m_oHeadersFootersAtom;
CRecordHeadersFootersContainer()
{
m_oHeadersFootersAtom = NULL;
}
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
CRecordsContainer::ReadFromStream(oHeader, pStream);
for (int i = 0 ; i < m_arRecords.size(); i++)
{
switch(m_arRecords[i]->m_oHeader.RecType)
{
case 0x0FDA:
m_oHeadersFootersAtom = dynamic_cast<CRecordHeadersFootersAtom *>(m_arRecords[i]);
break;
case 0xFBA:
{
CRecordCString *str = dynamic_cast<CRecordCString *>(m_arRecords[i]);
switch(m_arRecords[i]->m_oHeader.RecInstance)
{
case 0x000: m_HeadersFootersString[0].push_back(str->m_strText); break;
case 0x001: m_HeadersFootersString[1].push_back(str->m_strText); break;
case 0x002: m_HeadersFootersString[2].push_back(str->m_strText); break;
}
}break;
}
}
}
};
...@@ -530,10 +530,6 @@ ...@@ -530,10 +530,6 @@
RelativePath="..\Records\CurrentUserAtom.h" RelativePath="..\Records\CurrentUserAtom.h"
> >
</File> </File>
<File
RelativePath="..\Records\DateTimeMCAtom.h"
>
</File>
<File <File
RelativePath="..\Records\DocRoutingSlipAtom.h" RelativePath="..\Records\DocRoutingSlipAtom.h"
> >
......
...@@ -89,20 +89,23 @@ void NSPresentationEditor::CShapeElement::SetupTextProperties(CSlide* pSlide, CT ...@@ -89,20 +89,23 @@ void NSPresentationEditor::CShapeElement::SetupTextProperties(CSlide* pSlide, CT
} }
} }
void NSPresentationEditor::CShapeElement::SetUpText(std::wstring newText) bool NSPresentationEditor::CShapeElement::SetUpTextPlaceholder(std::wstring newText)
{ {
bool result = false;
NSPresentationEditor::CTextAttributesEx* pText = &m_oShape.m_oText; NSPresentationEditor::CTextAttributesEx* pText = &m_oShape.m_oText;
if (pText->m_arParagraphs.size() > 0) if (pText->m_arParagraphs.size() > 0)
{ {
if (pText->m_arParagraphs[0].m_arSpans.size() >0) if (pText->m_arParagraphs[0].m_arSpans.size() >0)
{
int pos = pText->m_arParagraphs[0].m_arSpans[0].m_strText.find(L"*");
if (pos >= 0)
{ {
ReplaceAll(pText->m_arParagraphs[0].m_arSpans[0].m_strText, L"*", newText); ReplaceAll(pText->m_arParagraphs[0].m_arSpans[0].m_strText, L"*", newText);
pText->m_arParagraphs[0].m_arSpans.erase(pText->m_arParagraphs[0].m_arSpans.begin()+1,pText->m_arParagraphs[0].m_arSpans.end()); result = true;
} }
pText->m_arParagraphs.erase(pText->m_arParagraphs.begin()+1,pText->m_arParagraphs.end());
} }
}
return result;
} }
\ No newline at end of file
...@@ -509,7 +509,7 @@ namespace NSPresentationEditor ...@@ -509,7 +509,7 @@ namespace NSPresentationEditor
m_oShape.SetToDublicate(&pShapeElement->m_oShape); m_oShape.SetToDublicate(&pShapeElement->m_oShape);
return (IElement*)pShapeElement; return (IElement*)pShapeElement;
} }
void SetUpText(std::wstring newText); bool SetUpTextPlaceholder(std::wstring newText);
virtual void SetupProperties(CSlide* pSlide, CTheme* pTheme, CLayout* pLayout) virtual void SetupProperties(CSlide* pSlide, CTheme* pTheme, CLayout* pLayout)
{ {
......
...@@ -8,8 +8,7 @@ namespace NSPresentationEditor ...@@ -8,8 +8,7 @@ namespace NSPresentationEditor
public: public:
std::vector<IElement*> m_arElements; std::vector<IElement*> m_arElements;
std::vector<CColor> m_arColorScheme; std::vector<CColor> m_arColorScheme;
std::multimap<int,int> m_mapPlaceholders;
std::map<int,int> m_mapPlaceholders;
bool m_bUseThemeColorScheme; bool m_bUseThemeColorScheme;
......
...@@ -12,6 +12,7 @@ namespace NSPresentationEditor ...@@ -12,6 +12,7 @@ namespace NSPresentationEditor
std::vector<IElement*> m_arElements; std::vector<IElement*> m_arElements;
CSlideShowInfo m_oSlideShow; CSlideShowInfo m_oSlideShow;
std::multimap<int,int> m_mapPlaceholders;
// //
long m_lWidth; long m_lWidth;
......
...@@ -13,7 +13,7 @@ namespace NSPresentationEditor ...@@ -13,7 +13,7 @@ namespace NSPresentationEditor
std::map<_UINT64, LONG> m_mapGeomToLayout;// std::map<_UINT64, LONG> m_mapGeomToLayout;//
std::map<DWORD, LONG> m_mapTitleLayout; // std::map<DWORD, LONG> m_mapTitleLayout; //
std::map<int,int> m_mapPlaceholders; std::multimap<int,int> m_mapPlaceholders;
std::vector<CColor> m_arColorScheme; std::vector<CColor> m_arColorScheme;
std::vector<CFont> m_arFonts; std::vector<CFont> m_arFonts;
...@@ -44,7 +44,7 @@ namespace NSPresentationEditor ...@@ -44,7 +44,7 @@ namespace NSPresentationEditor
int m_nFormatDate;//1- current, 2 - user int m_nFormatDate;//1- current, 2 - user
std::vector<std::wstring> m_oFootersHeaderString; std::vector<std::wstring> m_PlaceholdersReplaceString[3]; //0-dates, 1 - headers, 2 - footers
//------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------
CTheme() : m_arColorScheme(), m_arFonts(), m_arBrushes(), CTheme() : m_arColorScheme(), m_arFonts(), m_arBrushes(),
......
...@@ -541,7 +541,7 @@ void NSPresentationEditor::CShapeWriter::WriteImageInfo() ...@@ -541,7 +541,7 @@ void NSPresentationEditor::CShapeWriter::WriteImageInfo()
if (-1 != m_pImageElement->m_lPlaceholderID) if (-1 != m_pImageElement->m_lPlaceholderID)
{ {
CString strIdx; strIdx.Format(_T("%d"), m_pImageElement->m_lPlaceholderID); CString strIdx; strIdx.Format(_T("%d"), m_pImageElement->m_lPlaceholderID );
m_oWriter.WriteString(std::wstring(L" idx=\"") + string2std_string(strIdx) + _T("\"")); m_oWriter.WriteString(std::wstring(L" idx=\"") + string2std_string(strIdx) + _T("\""));
} }
...@@ -610,7 +610,7 @@ void NSPresentationEditor::CShapeWriter::WriteShapeInfo() ...@@ -610,7 +610,7 @@ void NSPresentationEditor::CShapeWriter::WriteShapeInfo()
if ( m_pShapeElement->m_lPlaceholderID != -1) if ( m_pShapeElement->m_lPlaceholderID != -1)
{ {
CString strIdx; strIdx.Format(_T("%d"), m_pShapeElement->m_lPlaceholderID); CString strIdx; strIdx.Format(_T("%d"), m_pShapeElement->m_lPlaceholderID );
m_oWriter.WriteString(std::wstring(L" idx=\"") + string2std_string(strIdx) + _T("\"")); m_oWriter.WriteString(std::wstring(L" idx=\"") + string2std_string(strIdx) + _T("\""));
} }
......
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