Commit 74615c14 authored by Elen.Subbotina's avatar Elen.Subbotina Committed by Alexander Trofimov

PPTFormat

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@65642 954022d7-b5bf-4e40-9824-e11837661b57
parent ce29eae0
...@@ -303,6 +303,19 @@ void CPPTUserInfo::FromDocument() ...@@ -303,6 +303,19 @@ void CPPTUserInfo::FromDocument()
m_oDefaultTextStyle.SetLanguage(m_wLanguage); m_oDefaultTextStyle.SetLanguage(m_wLanguage);
} }
} }
std::vector<CRecordHeadersFootersContainer*> oArrayHeadersFootersInfo;
m_oDocument.GetRecordsByType(&oArrayHeadersFootersInfo, true, false);
for (int j = 0 ; j < oArrayHeadersFootersInfo.size(); j++)
{
std::vector<CRecordCString*> oHeadersFootersInfo;
oArrayHeadersFootersInfo[j]->GetRecordsByType(&oHeadersFootersInfo, true, false);
for (int i = 0 ;i < oHeadersFootersInfo.size(); i++)
{
m_oFootersHeaderString.push_back(oHeadersFootersInfo[i]->m_strText);
}
}
LONG lOriginWidth = oArrayDoc[0]->m_oSlideSize.X; LONG lOriginWidth = oArrayDoc[0]->m_oSlideSize.X;
LONG lOriginHeight = oArrayDoc[0]->m_oSlideSize.Y; LONG lOriginHeight = oArrayDoc[0]->m_oSlideSize.Y;
...@@ -465,7 +478,7 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide) ...@@ -465,7 +478,7 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide)
//????? !!! //????? !!!
pPairTheme = m_mapMasterToTheme.begin(); pPairTheme = m_mapMasterToTheme.begin();
} }
//------------------ //------------------ ( ... )
std::vector<CRecordHeadersFootersAtom*> oArrayHeadersFootersAtoms; std::vector<CRecordHeadersFootersAtom*> oArrayHeadersFootersAtoms;
pRecordSlide->GetRecordsByType(&oArrayHeadersFootersAtoms, true, true); pRecordSlide->GetRecordsByType(&oArrayHeadersFootersAtoms, true, true);
...@@ -493,7 +506,7 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide) ...@@ -493,7 +506,7 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide)
if (pPairLayoutGeom == pTheme->m_mapGeomToLayout.end()) if (pPairLayoutGeom == pTheme->m_mapGeomToLayout.end())
{ {
pSlide->m_lLayoutID = AddNewLayout(pTheme, &oArraySlideAtoms[0]->m_oLayout, pRecordSlide->m_oPersist.m_arTextAttrs, headers_footers); pSlide->m_lLayoutID = AddNewLayout(pTheme, &oArraySlideAtoms[0]->m_oLayout, pRecordSlide->m_oPersist.m_arTextAttrs, headers_footers, true, bMasterObjects);
pLayout = &pTheme->m_arLayouts[pSlide->m_lLayoutID]; pLayout = &pTheme->m_arLayouts[pSlide->m_lLayoutID];
pLayout->m_bShowMasterShapes = true; pLayout->m_bShowMasterShapes = true;
} }
...@@ -636,6 +649,20 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide) ...@@ -636,6 +649,20 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide)
} }
IElement* CPPTUserInfo::AddThemeLayoutElement (CLayout *pLayout, int placeholderType, NSPresentationEditor::CTheme* pTheme)
{
IElement* pElement = NULL;
std::map<int, int>::iterator it = pTheme->m_pPlaceholders.find(placeholderType);
if ((it != pTheme->m_pPlaceholders.end()) && (pLayout->m_pPlaceholders.find(placeholderType) == pLayout->m_pPlaceholders.end()))
{
pElement = pTheme->m_arElements[it->second]->CreateDublicate();
pLayout->m_arElements.push_back(dynamic_cast<IElement*>(pElement));
pLayout->m_pPlaceholders.insert(std::pair<int, int>(it->first, pLayout->m_arElements.size()-1));
}
return pElement;
}
IElement* CPPTUserInfo::AddNewLayoutElement (CLayout *pLayout, int placeholderType, int placeholderSizePreset) IElement* CPPTUserInfo::AddNewLayoutElement (CLayout *pLayout, int placeholderType, int placeholderSizePreset)
{ {
if (placeholderType < 1) return NULL; if (placeholderType < 1) return NULL;
...@@ -661,7 +688,7 @@ IElement* CPPTUserInfo::AddNewLayoutElement (CLayout *pLayout, int placeholderTy ...@@ -661,7 +688,7 @@ IElement* CPPTUserInfo::AddNewLayoutElement (CLayout *pLayout, int placeholderTy
} }
int CPPTUserInfo::AddNewLayout(NSPresentationEditor::CTheme* pTheme, SSlideLayoutAtom* layoutRecord, std::vector<CTextFullSettings> & text, int CPPTUserInfo::AddNewLayout(NSPresentationEditor::CTheme* pTheme, SSlideLayoutAtom* layoutRecord, std::vector<CTextFullSettings> & text,
CRecordHeadersFootersAtom* headers_footers, bool addShapes) CRecordHeadersFootersAtom* headers_footers, bool addShapes, bool bMasterObjects)
{ {
if (pTheme == NULL) return -1; if (pTheme == NULL) return -1;
...@@ -692,10 +719,10 @@ int CPPTUserInfo::AddNewLayout(NSPresentationEditor::CTheme* pTheme, SSlideLayou ...@@ -692,10 +719,10 @@ int CPPTUserInfo::AddNewLayout(NSPresentationEditor::CTheme* pTheme, SSlideLayou
switch (layoutRecord->m_nGeom) switch (layoutRecord->m_nGeom)
{ {
case 0x01: // SL_TitleBody case 0x01: // SL_TitleBody
defObjSize = 1; break; defObjSize = 0; break;
case 0x08: //SL_TwoColumns case 0x08: //SL_TwoColumns
case 0x09: //SL_TwoRows case 0x09: //SL_TwoRows
defObjSize = 2; break; defObjSize = 1; break;
case 0x0A: //SL_ColumnTwoRows case 0x0A: //SL_ColumnTwoRows
defObjSize = 3; break; defObjSize = 3; break;
case 0x0B: //SL_TwoRowsColumn case 0x0B: //SL_TwoRowsColumn
...@@ -703,11 +730,11 @@ int CPPTUserInfo::AddNewLayout(NSPresentationEditor::CTheme* pTheme, SSlideLayou ...@@ -703,11 +730,11 @@ int CPPTUserInfo::AddNewLayout(NSPresentationEditor::CTheme* pTheme, SSlideLayou
case 0x0D: //SL_TwoColumnsRow case 0x0D: //SL_TwoColumnsRow
defObjSize = 3; break; defObjSize = 3; break;
case 0x0E://SL_FourObjects case 0x0E://SL_FourObjects
defObjSize = 4; break; defObjSize = 2; break;
case 0x0F: //SL_BigObject case 0x0F: //SL_BigObject
case 0x11: //SL_VerticalTitleBody case 0x11: //SL_VerticalTitleBody
case 0x12: //SL_VerticalTwoRows case 0x12: //SL_VerticalTwoRows
defObjSize = 1; break; defObjSize = 0; break;
} }
for (int i = 0 ; i < 8; i ++) for (int i = 0 ; i < 8; i ++)
...@@ -746,81 +773,48 @@ int CPPTUserInfo::AddNewLayout(NSPresentationEditor::CTheme* pTheme, SSlideLayou ...@@ -746,81 +773,48 @@ int CPPTUserInfo::AddNewLayout(NSPresentationEditor::CTheme* pTheme, SSlideLayou
} }
} }
if (layoutRecord->m_nGeom==0x0F) return ind;
if (headers_footers) if (headers_footers)
{ {
std::map<int, int>::iterator it;
if (headers_footers->m_bHasSlideNumber) if (headers_footers->m_bHasSlideNumber)
{ {
IElement* pElement = NULL; if (!AddThemeLayoutElement(pLayout, MasterSlideNumber, pTheme))
it = pLayout->m_pPlaceholders.find(NSOfficePPT::MasterSlideNumber);
if ( it == pLayout->m_pPlaceholders.end())
{ {
it = pTheme->m_pPlaceholders.find(NSOfficePPT::MasterSlideNumber); AddNewLayoutElement(pLayout, MasterSlideNumber, 2);
if (it != pTheme->m_pPlaceholders.end())
{
pElement = pTheme->m_arElements[it->second]->CreateDublicate();
pLayout->m_arElements.push_back(dynamic_cast<IElement*>(pElement));
pLayout->m_pPlaceholders.insert(std::pair<int, int>(NSOfficePPT::MasterSlideNumber, pLayout->m_arElements.size()-1));
}
else
pElement = AddNewLayoutElement(pLayout, MasterSlideNumber, 4);
} }
} }
if (headers_footers->m_bHasTodayDate || if (headers_footers->m_bHasTodayDate ||
headers_footers->m_bHasUserDate || headers_footers->m_bHasUserDate ||
headers_footers->m_bHasDate) headers_footers->m_bHasDate)
{ {
IElement* pElement = NULL; if (!AddThemeLayoutElement(pLayout, MasterDate, pTheme))
it = pLayout->m_pPlaceholders.find(MasterDate);
if (it == pLayout->m_pPlaceholders.end())
{ {
it = pTheme->m_pPlaceholders.find(NSOfficePPT::MasterDate); AddNewLayoutElement(pLayout, MasterDate, 2);
if (it != pTheme->m_pPlaceholders.end())
{
pElement = pTheme->m_arElements[it->second]->CreateDublicate();
pLayout->m_arElements.push_back(dynamic_cast<IElement*>(pElement));
pLayout->m_pPlaceholders.insert(std::pair<int, int>(NSOfficePPT::MasterDate, pLayout->m_arElements.size()-1));
}
else
pElement = AddNewLayoutElement(pLayout, MasterDate, 2);
} }
} }
if (headers_footers->m_bHasHeader) if (headers_footers->m_bHasHeader)
{ {
IElement* pElement = NULL; if (!AddThemeLayoutElement(pLayout, MasterHeader, pTheme))
it = pLayout->m_pPlaceholders.find(MasterHeader);
if (it == pLayout->m_pPlaceholders.end())
{ {
it = pTheme->m_pPlaceholders.find(NSOfficePPT::MasterHeader); AddNewLayoutElement(pLayout, MasterHeader, 2);
if (it != pTheme->m_pPlaceholders.end())
{
pElement = pTheme->m_arElements[it->second]->CreateDublicate();
pLayout->m_arElements.push_back(dynamic_cast<IElement*>(pElement));
pLayout->m_pPlaceholders.insert(std::pair<int, int>(NSOfficePPT::MasterHeader, pLayout->m_arElements.size()-1));
}
else
pElement = AddNewLayoutElement(pLayout, MasterHeader, 2);
} }
} }
if (headers_footers->m_bHasFooter) if (headers_footers->m_bHasFooter)
{ {
IElement* pElement = NULL; if (!AddThemeLayoutElement(pLayout, MasterFooter, pTheme))
it = pLayout->m_pPlaceholders.find(MasterFooter);
if (it == pLayout->m_pPlaceholders.end())
{ {
it = pTheme->m_pPlaceholders.find(NSOfficePPT::MasterFooter); AddNewLayoutElement(pLayout, MasterFooter, 2);
if (it != pTheme->m_pPlaceholders.end())
{
pElement = pTheme->m_arElements[it->second]->CreateDublicate();
pLayout->m_arElements.push_back(dynamic_cast<IElement*>(pElement));
pLayout->m_pPlaceholders.insert(std::pair<int, int>(NSOfficePPT::MasterFooter, pLayout->m_arElements.size()-1));
}
else
pElement = AddNewLayoutElement(pLayout, MasterFooter, 4);
} }
} }
} }
else if (bMasterObjects)
{
AddThemeLayoutElement(pLayout, MasterSlideNumber ,pTheme);
AddThemeLayoutElement(pLayout, MasterDate ,pTheme);
AddThemeLayoutElement(pLayout, MasterFooter ,pTheme);
AddThemeLayoutElement(pLayout, MasterHeader ,pTheme);
}
return ind; return ind;
} }
...@@ -980,6 +974,8 @@ void CPPTUserInfo::LoadMainMaster(DWORD dwMasterID, const LONG& lOriginWidth, co ...@@ -980,6 +974,8 @@ 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);
...@@ -1165,7 +1161,7 @@ void CPPTUserInfo::LoadNoMainMaster(DWORD dwMasterID, const LONG& lOriginWidth, ...@@ -1165,7 +1161,7 @@ void CPPTUserInfo::LoadNoMainMaster(DWORD dwMasterID, const LONG& lOriginWidth,
CLayout* pLayout = NULL; CLayout* pLayout = NULL;
int lLayoutID = AddNewLayout(pTheme, &oArraySlideAtoms[0]->m_oLayout, pCurMaster->m_oPersist.m_arTextAttrs, NULL, false); int lLayoutID = AddNewLayout(pTheme, &oArraySlideAtoms[0]->m_oLayout, pCurMaster->m_oPersist.m_arTextAttrs, NULL, false, false);
pLayout = &pTheme->m_arLayouts[lLayoutID]; pLayout = &pTheme->m_arLayouts[lLayoutID];
pLayout->m_bShowMasterShapes = false; pLayout->m_bShowMasterShapes = false;
......
...@@ -42,6 +42,8 @@ public: ...@@ -42,6 +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;
// () // ()
CPPTDocumentInfo* m_pDocumentInfo; CPPTDocumentInfo* m_pDocumentInfo;
int m_lIndexThisUser; int m_lIndexThisUser;
...@@ -237,6 +239,7 @@ public: ...@@ -237,6 +239,7 @@ public:
case 0x0E://SL_FourObjects case 0x0E://SL_FourObjects
return _T("fourObj"); return _T("fourObj");
case 0x0F: //SL_BigObject case 0x0F: //SL_BigObject
//return _T("tx");
return _T("objOnly"); return _T("objOnly");
case 0x10: //SL_Blank case 0x10: //SL_Blank
return _T("blank"); return _T("blank");
...@@ -252,6 +255,8 @@ public: ...@@ -252,6 +255,8 @@ public:
void AddAudioTransition (DWORD dwSlideID, CTransition* pTransition, const std::wstring& strFilePath); void AddAudioTransition (DWORD dwSlideID, CTransition* pTransition, const std::wstring& strFilePath);
int AddNewLayout(NSPresentationEditor::CTheme* pTheme, SSlideLayoutAtom* layoutRecord, std::vector<CTextFullSettings> & text, int AddNewLayout(NSPresentationEditor::CTheme* pTheme, SSlideLayoutAtom* layoutRecord, std::vector<CTextFullSettings> & text,
CRecordHeadersFootersAtom* headers_footers = NULL, bool addShapes = true); CRecordHeadersFootersAtom* headers_footers, bool addShapes, bool bMasterObjects);
IElement* AddNewLayoutElement (CLayout *pLayout, int placeholderType, int placeholderSizePreset = -1);
IElement* AddNewLayoutElement (CLayout *pLayout, int placeholderType, int placeholderSizePreset = -1);
IElement* AddThemeLayoutElement (CLayout *pLayout, int placeholderType, NSPresentationEditor::CTheme* pTheme);
}; };
...@@ -95,7 +95,9 @@ typedef BYTE BOOL1; ...@@ -95,7 +95,9 @@ typedef BYTE BOOL1;
#define RECORD_TYPE_SRKINSOKU_ATOM 4050 #define RECORD_TYPE_SRKINSOKU_ATOM 4050
#define RECORD_TYPE_EXHYPERLINK_ATOM 4051 #define RECORD_TYPE_EXHYPERLINK_ATOM 4051
#define RECORD_TYPE_EXHYPERLINK 4055 #define RECORD_TYPE_EXHYPERLINK 4055
#define RECORD_TYPE_SLIDE_NUMBERMC_ATOM 4056
#define RECORD_TYPE_SLIDENUMBER_META_ATOM 0x0FD8
#define RECORD_TYPE_HEADERSFOOTERS 4057 #define RECORD_TYPE_HEADERSFOOTERS 4057
#define RECORD_TYPE_HEADERSFOOTERS_ATOM 4058 #define RECORD_TYPE_HEADERSFOOTERS_ATOM 4058
#define RECORD_TYPE_TXINTERACTIVEINFO_ATOM 4063 #define RECORD_TYPE_TXINTERACTIVEINFO_ATOM 4063
...@@ -111,9 +113,12 @@ typedef BYTE BOOL1; ...@@ -111,9 +113,12 @@ typedef BYTE BOOL1;
#define RECORD_TYPE_INTERACTIVEINFO_ATOM 4083 #define RECORD_TYPE_INTERACTIVEINFO_ATOM 4083
#define RECORD_TYPE_USER_EDIT_ATOM 4085 #define RECORD_TYPE_USER_EDIT_ATOM 4085
#define RECORD_TYPE_CURRENTUSER_ATOM 4086 #define RECORD_TYPE_CURRENTUSER_ATOM 4086
#define RECORD_TYPE_DATETIMEMC_ATOM 4087
#define RECORD_TYPE_GENERICDATEMC_ATOM 4088 #define RECORD_TYPE_DATETIME_META_ATOM 0x0FF7
#define RECORD_TYPE_FOOTERMC_ATOM 4090 #define RECORD_TYPE_GENERICDATE_META_ATOM 0x0FF8
#define RECORD_TYPE_HEADER_META_ATOM 0x0FF9
#define RECORD_TYPE_FOOTER_META_ATOM 0x0FFA
#define RECORD_TYPE_EXCONTROL_ATOM 4091 #define RECORD_TYPE_EXCONTROL_ATOM 4091
#define RECORD_TYPE_EX_MEDIA_ATOM 4100 #define RECORD_TYPE_EX_MEDIA_ATOM 4100
#define RECORD_TYPE_EX_VIDEOCONTAINER 4101 #define RECORD_TYPE_EX_VIDEOCONTAINER 4101
...@@ -127,7 +132,7 @@ typedef BYTE BOOL1; ...@@ -127,7 +132,7 @@ typedef BYTE BOOL1;
#define RECORD_TYPE_EX_CDAUDIO_ATOM 4114 #define RECORD_TYPE_EX_CDAUDIO_ATOM 4114
#define RECORD_TYPE_EXWAVAUDIOEMBEDDED_ATOM 4115 #define RECORD_TYPE_EXWAVAUDIOEMBEDDED_ATOM 4115
#define RECORD_TYPE_ANIMATIONINFO 4116 #define RECORD_TYPE_ANIMATIONINFO 4116
#define RECORD_TYPE_RTFDATETIMEMC_ATOM 4117 #define RECORD_TYPE_RTFDATETIME_META_ATOM 0x1015
#define RECORD_TYPE_PROGTAGS 5000 #define RECORD_TYPE_PROGTAGS 5000
#define RECORD_TYPE_PROGSTRINGTAG 5001 #define RECORD_TYPE_PROGSTRINGTAG 5001
#define RECORD_TYPE_PROGBINARYTAG 5002 #define RECORD_TYPE_PROGBINARYTAG 5002
...@@ -300,7 +305,7 @@ static CString GetRecordName(DWORD dwType) ...@@ -300,7 +305,7 @@ static CString GetRecordName(DWORD dwType)
case RECORD_TYPE_SRKINSOKU_ATOM : { strName = _T("SrKinsokuAtom"); break; } case RECORD_TYPE_SRKINSOKU_ATOM : { strName = _T("SrKinsokuAtom"); break; }
case RECORD_TYPE_EXHYPERLINK_ATOM : { strName = _T("ExHyperlinkAtom"); break; } case RECORD_TYPE_EXHYPERLINK_ATOM : { strName = _T("ExHyperlinkAtom"); break; }
case RECORD_TYPE_EXHYPERLINK : { strName = _T("ExHyperlink"); break; } case RECORD_TYPE_EXHYPERLINK : { strName = _T("ExHyperlink"); break; }
case RECORD_TYPE_SLIDE_NUMBERMC_ATOM : { strName = _T("SlideNumberMcAtom"); break; } case RECORD_TYPE_SLIDENUMBER_META_ATOM : { strName = _T("SlideNumberMcAtom"); break; }
case RECORD_TYPE_HEADERSFOOTERS : { strName = _T("HeadersFooters"); break; } case RECORD_TYPE_HEADERSFOOTERS : { strName = _T("HeadersFooters"); break; }
case RECORD_TYPE_HEADERSFOOTERS_ATOM : { strName = _T("HeadersFootersAtom"); break; } case RECORD_TYPE_HEADERSFOOTERS_ATOM : { strName = _T("HeadersFootersAtom"); break; }
case RECORD_TYPE_TXINTERACTIVEINFO_ATOM : { strName = _T("TxInteractiveInfoAtom"); break; } case RECORD_TYPE_TXINTERACTIVEINFO_ATOM : { strName = _T("TxInteractiveInfoAtom"); break; }
...@@ -315,9 +320,9 @@ static CString GetRecordName(DWORD dwType) ...@@ -315,9 +320,9 @@ static CString GetRecordName(DWORD dwType)
case RECORD_TYPE_INTERACTIVEINFO_ATOM : { strName = _T("InteractiveInfoAtom"); break; } case RECORD_TYPE_INTERACTIVEINFO_ATOM : { strName = _T("InteractiveInfoAtom"); break; }
case RECORD_TYPE_USER_EDIT_ATOM : { strName = _T("UserEditAtom"); break; } case RECORD_TYPE_USER_EDIT_ATOM : { strName = _T("UserEditAtom"); break; }
case RECORD_TYPE_CURRENTUSER_ATOM : { strName = _T("CurrentUserAtom"); break; } case RECORD_TYPE_CURRENTUSER_ATOM : { strName = _T("CurrentUserAtom"); break; }
case RECORD_TYPE_DATETIMEMC_ATOM : { strName = _T("DateTimeMCAtom"); break; } case RECORD_TYPE_DATETIME_META_ATOM : { strName = _T("DateTimeMCAtom"); break; }
case RECORD_TYPE_GENERICDATEMC_ATOM : { strName = _T("GenericDateMCAtom"); break; } case RECORD_TYPE_GENERICDATE_META_ATOM : { strName = _T("GenericDateMCAtom"); break; }
case RECORD_TYPE_FOOTERMC_ATOM : { strName = _T("FooterMCAtom"); break; } case RECORD_TYPE_FOOTER_META_ATOM : { strName = _T("FooterMCAtom"); break; }
case RECORD_TYPE_EXCONTROL_ATOM : { strName = _T("ExControlAtom"); break; } case RECORD_TYPE_EXCONTROL_ATOM : { strName = _T("ExControlAtom"); break; }
case RECORD_TYPE_EX_MEDIA_ATOM : { strName = _T("ExMediaAtom"); break; } case RECORD_TYPE_EX_MEDIA_ATOM : { strName = _T("ExMediaAtom"); break; }
case RECORD_TYPE_EX_VIDEOCONTAINER : { strName = _T("ExVideoContainer"); break; } case RECORD_TYPE_EX_VIDEOCONTAINER : { strName = _T("ExVideoContainer"); break; }
...@@ -332,7 +337,7 @@ static CString GetRecordName(DWORD dwType) ...@@ -332,7 +337,7 @@ static CString GetRecordName(DWORD dwType)
case RECORD_TYPE_EXWAVAUDIOEMBEDDED_ATOM : { strName = _T("ExWavAudioEmbeddedAtom"); break; } case RECORD_TYPE_EXWAVAUDIOEMBEDDED_ATOM : { strName = _T("ExWavAudioEmbeddedAtom"); break; }
case RECORD_TYPE_ANIMATIONINFO : { strName = _T("AnimationInfo"); break; } case RECORD_TYPE_ANIMATIONINFO : { strName = _T("AnimationInfo"); break; }
case RECORD_TYPE_ANIMATIONINFO_ATOM : { strName = _T("AnimationInfoAtom"); break; } case RECORD_TYPE_ANIMATIONINFO_ATOM : { strName = _T("AnimationInfoAtom"); break; }
case RECORD_TYPE_RTFDATETIMEMC_ATOM : { strName = _T("RtfDateTimeMCAtom"); break; } case RECORD_TYPE_RTFDATETIME_META_ATOM : { strName = _T("RtfDateTimeMCAtom"); break; }
case RECORD_TYPE_PROGTAGS : { strName = _T("ProgTags"); break; } case RECORD_TYPE_PROGTAGS : { strName = _T("ProgTags"); break; }
case RECORD_TYPE_PROGSTRINGTAG : { strName = _T("ProgStringTag"); break; } case RECORD_TYPE_PROGSTRINGTAG : { strName = _T("ProgStringTag"); break; }
case RECORD_TYPE_PROGBINARYTAG : { strName = _T("ProgBinaryTag"); break; } case RECORD_TYPE_PROGBINARYTAG : { strName = _T("ProgBinaryTag"); break; }
......
...@@ -197,34 +197,30 @@ namespace NSStreamReader ...@@ -197,34 +197,30 @@ namespace NSStreamReader
for (int i = 0; i < (int)tabStopsCount; ++i) for (int i = 0; i < (int)tabStopsCount; ++i)
{ {
oRun.tabsStops.push_back(StreamUtils::ReadDWORD(pStream) * dScaleX); WORD tabPos = StreamUtils::ReadWORD(pStream) ;
WORD tabType = StreamUtils::ReadWORD(pStream) ;
if ((tabPos & 0xff00) == 0xff00)
break;
tabType = 0x0000;
oRun.tabsStops.push_back( std::pair<int, int>(tabPos * dScaleX, tabType));
} }
} }
if (bLeftMargin1_) if (bLeftMargin1_) oRun.LeftMargin1 = StreamUtils::ReadSHORT(pStream) * dScaleX;
oRun.LeftMargin1 = StreamUtils::ReadSHORT(pStream) * dScaleX; if (bIndent1_) oRun.Indent1 = StreamUtils::ReadSHORT(pStream) * dScaleX;
if (bIndent1_)
oRun.Indent1 = StreamUtils::ReadSHORT(pStream) * dScaleX; if (bLeftMargin2_) oRun.LeftMargin2 = StreamUtils::ReadSHORT(pStream) * dScaleX;
if (bIndent2_) oRun.Indent2 = StreamUtils::ReadSHORT(pStream) * dScaleX;
if (bLeftMargin2_)
oRun.LeftMargin2 = StreamUtils::ReadSHORT(pStream) * dScaleX; if (bLeftMargin3_) oRun.LeftMargin3 = StreamUtils::ReadSHORT(pStream) * dScaleX;
if (bIndent2_) if (bIndent3_) oRun.Indent3 = StreamUtils::ReadSHORT(pStream) * dScaleX;
oRun.Indent2 = StreamUtils::ReadSHORT(pStream) * dScaleX;
if (bLeftMargin4_) oRun.LeftMargin4 = StreamUtils::ReadSHORT(pStream) * dScaleX;
if (bLeftMargin3_) if (bIndent4_) oRun.Indent4 = StreamUtils::ReadSHORT(pStream) * dScaleX;
oRun.LeftMargin3 = StreamUtils::ReadSHORT(pStream) * dScaleX;
if (bIndent3_) if (bLeftMargin5_) oRun.LeftMargin5 = StreamUtils::ReadSHORT(pStream) * dScaleX;
oRun.Indent3 = StreamUtils::ReadSHORT(pStream) * dScaleX; if (bIndent5_) oRun.Indent5 = StreamUtils::ReadSHORT(pStream) * dScaleX;
if (bLeftMargin4_)
oRun.LeftMargin4 = StreamUtils::ReadSHORT(pStream) * dScaleX;
if (bIndent4_)
oRun.Indent4 = StreamUtils::ReadSHORT(pStream) * dScaleX;
if (bLeftMargin5_)
oRun.LeftMargin5 = StreamUtils::ReadSHORT(pStream) * dScaleX;
if (bIndent5_)
oRun.Indent5 = StreamUtils::ReadSHORT(pStream) * dScaleX;
} }
} }
...@@ -363,42 +359,31 @@ void CTextPFRun_ppt::LoadFromStream(POLE::Stream* pStream, bool bIsIndentation) ...@@ -363,42 +359,31 @@ void CTextPFRun_ppt::LoadFromStream(POLE::Stream* pStream, bool bIsIndentation)
} }
} }
if (textAlignment_) if (textAlignment_) m_oRun.textAlignment = StreamUtils::ReadWORD(pStream);
m_oRun.textAlignment = StreamUtils::ReadWORD(pStream); if (lineSpacing_) m_oRun.lineSpacing = - StreamUtils::ReadSHORT(pStream);
if (spaceBefore_) m_oRun.spaceBefore = - StreamUtils::ReadSHORT(pStream);
if (lineSpacing_) if (spaceAfter_) m_oRun.spaceAfter = - StreamUtils::ReadSHORT(pStream);
m_oRun.lineSpacing = - StreamUtils::ReadSHORT(pStream); if (leftMargin_) m_oRun.leftMargin = StreamUtils::ReadSHORT(pStream) * dScaleX;
if (indent_) m_oRun.indent = StreamUtils::ReadSHORT(pStream) * dScaleX;
if (spaceBefore_) if (defaultTabSize_) m_oRun.defaultTabSize = (_INT32)StreamUtils::ReadWORD(pStream) * dScaleX;
m_oRun.spaceBefore = - (LONG)StreamUtils::ReadSHORT(pStream);
if (spaceAfter_)
m_oRun.spaceAfter = - (LONG)StreamUtils::ReadSHORT(pStream);
if (leftMargin_)
m_oRun.leftMargin = (LONG)StreamUtils::ReadSHORT(pStream) * dScaleX;
if (indent_)
m_oRun.indent = (LONG)StreamUtils::ReadSHORT(pStream) * dScaleX;
if (defaultTabSize_)
m_oRun.defaultTabSize = (LONG)StreamUtils::ReadWORD(pStream) * dScaleX;
if (tabStops_) if (tabStops_)
{ {
WORD tabStopsCount = StreamUtils::ReadWORD(pStream); WORD tabStopsCount = StreamUtils::ReadWORD(pStream);
m_oRun.tabStops.clear(); m_oRun.tabStops.clear();
if (tabStopsCount > 10)
tabStopsCount = 10;
for (int i = 0; i < (int)tabStopsCount; ++i) for (int i = 0; i < (int)tabStopsCount; ++i)
{ {
m_oRun.tabStops.push_back(StreamUtils::ReadDWORD(pStream) * dScaleX ); WORD tabPos = StreamUtils::ReadWORD(pStream);
WORD tabType = StreamUtils::ReadWORD(pStream);
if ((tabPos & 0xff00) == 0xff00)
break;
m_oRun.tabStops.push_back( std::pair<int, int> (tabPos * dScaleX, tabType) );
} }
if (0 < m_oRun.tabStops.size()) //if (0 < m_oRun.tabStops.size())
m_oRun.defaultTabSize = m_oRun.tabStops[0]; // m_oRun.defaultTabSize = m_oRun.tabStops[0];
} }
if (fontAlign_) if (fontAlign_)
......
...@@ -130,13 +130,22 @@ IRecord* CreateByType(SRecordHeader oHeader) ...@@ -130,13 +130,22 @@ IRecord* CreateByType(SRecordHeader oHeader)
//CREATE_BY_TYPE(RECORD_TYPE_SRKINSOKU_ATOM , CRecordKinsokuAtom) //CREATE_BY_TYPE(RECORD_TYPE_SRKINSOKU_ATOM , CRecordKinsokuAtom)
CREATE_BY_TYPE(RECORD_TYPE_EXHYPERLINK , CRecordExHyperlinkContainer) CREATE_BY_TYPE(RECORD_TYPE_EXHYPERLINK , CRecordExHyperlinkContainer)
CREATE_BY_TYPE(RECORD_TYPE_EXHYPERLINK_ATOM , CRecordExHyperlinkAtom) CREATE_BY_TYPE(RECORD_TYPE_EXHYPERLINK_ATOM , CRecordExHyperlinkAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordSlideNumberMCAtom)
CREATE_BY_TYPE(RECORD_TYPE_HEADERSFOOTERS , CRecordHeadersFootersContainer)
CREATE_BY_TYPE(RECORD_TYPE_HEADERSFOOTERS_ATOM , CRecordHeadersFootersAtom) CREATE_BY_TYPE(RECORD_TYPE_HEADERSFOOTERS_ATOM , CRecordHeadersFootersAtom)
CREATE_BY_TYPE(RECORD_TYPE_SLIDENUMBER_META_ATOM , CRecordSlideNumberMetaAtom)
CREATE_BY_TYPE(RECORD_TYPE_DATETIME_META_ATOM , CRecordDateTimeMetaAtom)
CREATE_BY_TYPE(RECORD_TYPE_HEADER_META_ATOM , CRecordHeaderMetaAtom)
CREATE_BY_TYPE(RECORD_TYPE_FOOTER_META_ATOM , CRecordFooterMetaAtom)
CREATE_BY_TYPE(RECORD_TYPE_GENERICDATE_META_ATOM , CRecordGenericDateMetaAtom)
CREATE_BY_TYPE(RECORD_TYPE_RTFDATETIME_META_ATOM , CRecordRTFDateTimeMetaAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordMouseTextInteractiveInfoAtom) //CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordMouseTextInteractiveInfoAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordRecolorInfoAtom) //CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordRecolorInfoAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordAnimationInfoAtom) //CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordAnimationInfoAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordDateTimeMCAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordGenericDateMCAtom)
CREATE_BY_TYPE(RECORD_TYPE_EX_VIDEOCONTAINER , CRecordExVideoContainer) CREATE_BY_TYPE(RECORD_TYPE_EX_VIDEOCONTAINER , CRecordExVideoContainer)
CREATE_BY_TYPE(RECORD_TYPE_EX_OBJREF_ATOM , CRecordExObjRefAtom) CREATE_BY_TYPE(RECORD_TYPE_EX_OBJREF_ATOM , CRecordExObjRefAtom)
CREATE_BY_TYPE(RECORD_TYPE_EX_MEDIA_ATOM , CRecordExMediaAtom) CREATE_BY_TYPE(RECORD_TYPE_EX_MEDIA_ATOM , CRecordExMediaAtom)
...@@ -178,11 +187,11 @@ IRecord* CreateByType(SRecordHeader oHeader) ...@@ -178,11 +187,11 @@ IRecord* CreateByType(SRecordHeader oHeader)
default: default:
{ {
//#ifdef _DEBUG #ifdef _DEBUG
// char str[1024]={}; char str[1024]={};
// sprintf(str, "Unknown record type: %xd\n" , oHeader.RecType); sprintf(str, "Unknown record type: %xd\n" , oHeader.RecType);
// std::cout << str; std::cout << str;
//#endif #endif
}break; }break;
}; };
......
#pragma once
#include "../Reader/Records.h"
class CRecordDateTimeMCAtom : public CUnknownRecord
{
UINT m_mPosition;
BYTE m_nIndex;
public:
CRecordDateTimeMCAtom()
{
}
~CRecordDateTimeMCAtom()
{
}
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
return CUnknownRecord::ReadFromStream(oHeader, pStream);
}
};
\ No newline at end of file
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "../InteractiveInfoAtom.h" #include "../InteractiveInfoAtom.h"
#include "../TextInteractiveInfoAtom.h" #include "../TextInteractiveInfoAtom.h"
#include "../MasterTextPropAtom.h" #include "../MasterTextPropAtom.h"
#include "../HeadersFootersAtom.h"
#include "../../Reader/ClassesAtom.h" #include "../../Reader/ClassesAtom.h"
#include "../../Reader/SlideInfo.h" #include "../../Reader/SlideInfo.h"
...@@ -1185,7 +1186,10 @@ public: ...@@ -1185,7 +1186,10 @@ public:
pParentShape->m_dTextMarginY = 2.54; pParentShape->m_dTextMarginY = 2.54;
pParentShape->m_dTextMarginBottom = 1.27; pParentShape->m_dTextMarginBottom = 1.27;
} }
} }
if (bUseFitShapeToText)
pParentShape->m_oText.m_bAutoFit = bFitShapeToText;
}break; }break;
default: default:
...@@ -1399,6 +1403,8 @@ public: ...@@ -1399,6 +1403,8 @@ public:
if (NULL == pElem) if (NULL == pElem)
return; return;
std::wstring strShapeText;
{ {
CExFilesInfo::ExFilesType exType = CExFilesInfo::eftNone; CExFilesInfo::ExFilesType exType = CExFilesInfo::eftNone;
CExFilesInfo * pTextureInfo = pMapIDs->Lock(0xFFFFFFFF, exType); CExFilesInfo * pTextureInfo = pMapIDs->Lock(0xFFFFFFFF, exType);
...@@ -1421,21 +1427,26 @@ public: ...@@ -1421,21 +1427,26 @@ public:
} }
} }
pElem->m_lID = oArrayShape[0]->m_nID; pElem->m_lID = oArrayShape[0]->m_nID;
//------------------------------------------------------------------------------------------------
// placeholder // placeholder
std::vector<CRecordPlaceHolderAtom*> oArrayPlaceHolder; std::vector<CRecordPlaceHolderAtom*> oArrayPlaceHolder;
GetRecordsByType(&oArrayPlaceHolder, true, true); GetRecordsByType(&oArrayPlaceHolder, true, true);
if (0 < oArrayPlaceHolder.size()) if (0 < oArrayPlaceHolder.size())
{ {
pElem->m_bLine = false; // pElem->m_bLine = false; //
pElem->m_lPlaceholderID = (int)(oArrayPlaceHolder[0]->m_nPosition); pElem->m_lPlaceholderID = oArrayPlaceHolder[0]->m_nPosition;
pElem->m_lPlaceholderType = (int)(oArrayPlaceHolder[0]->m_nPlacementID); pElem->m_lPlaceholderType = oArrayPlaceHolder[0]->m_nPlacementID;
pElem->m_lPlaceholderSizePreset = oArrayPlaceHolder[0]->m_nSize;
if (pElementLayout)
pElementLayout->m_lPlaceholderSizePreset = oArrayPlaceHolder[0]->m_nSize;
CorrectPlaceholderType(pElem->m_lPlaceholderType); CorrectPlaceholderType(pElem->m_lPlaceholderType);
} }
std::vector<CRecordRoundTripHFPlaceholder12Atom*> oArrayHFPlaceholder; std::vector<CRecordRoundTripHFPlaceholder12Atom*> oArrayHFPlaceholder;
this->GetRecordsByType(&oArrayHFPlaceholder, true, true); GetRecordsByType(&oArrayHFPlaceholder, true, true);
if (0 < oArrayHFPlaceholder.size()) if (0 < oArrayHFPlaceholder.size())
{ {
pElem->m_lPlaceholderType = oArrayHFPlaceholder[0]->m_nPlacementID;//PT_MasterDate, PT_MasterSlideNumber, PT_MasterFooter, or PT_MasterHeader pElem->m_lPlaceholderType = oArrayHFPlaceholder[0]->m_nPlacementID;//PT_MasterDate, PT_MasterSlideNumber, PT_MasterFooter, or PT_MasterHeader
...@@ -1443,6 +1454,32 @@ public: ...@@ -1443,6 +1454,32 @@ public:
CorrectPlaceholderType(pElem->m_lPlaceholderType); CorrectPlaceholderType(pElem->m_lPlaceholderType);
} }
if (pElem->m_lPlaceholderType > 0) // meta
{
std::vector<CRecordFooterMetaAtom*> oArrayFooterMeta;
GetRecordsByType(&oArrayFooterMeta, true, true);
if (0 < oArrayFooterMeta.size())
{
pElem->m_lPlaceholderType = PT_MasterFooter;
DWORD posText = oArrayFooterMeta[0]->m_nPosition;
if (posText < pTheme->m_oFootersHeaderString.size())
strShapeText = pTheme->m_oFootersHeaderString[posText];
}
std::vector<CRecordSlideNumberMetaAtom*> oArraySlideNumberMeta;
GetRecordsByType(&oArraySlideNumberMeta, true, true);
if (0 < oArraySlideNumberMeta.size())
{
pElem->m_lPlaceholderType = PT_MasterSlideNumber;
DWORD posText = oArraySlideNumberMeta[0]->m_nPosition;
if (posText < pTheme->m_oFootersHeaderString.size())
strShapeText = pTheme->m_oFootersHeaderString[posText];
}
}
//----------------------------------------------------------------------------------------------
std::vector<CRecordClientAnchor*> oArrayAnchor; std::vector<CRecordClientAnchor*> oArrayAnchor;
this->GetRecordsByType(&oArrayAnchor, true, true); this->GetRecordsByType(&oArrayAnchor, true, true);
...@@ -1551,21 +1588,23 @@ public: ...@@ -1551,21 +1588,23 @@ public:
oElementInfo.m_lPersistIndex = oArrayTextRefs[0]->m_nIndex; oElementInfo.m_lPersistIndex = oArrayTextRefs[0]->m_nIndex;
} }
std::wstring strText;
// ... // ...
std::vector<CRecordTextBytesAtom*> oArrayTextBytes; std::vector<CRecordTextBytesAtom*> oArrayTextBytes;
GetRecordsByType(&oArrayTextBytes, true, true); GetRecordsByType(&oArrayTextBytes, true, true);
if (0 < oArrayTextBytes.size()) if (0 < oArrayTextBytes.size() && strShapeText.empty())
{ {
strText = oArrayTextBytes[0]->m_strText; strShapeText = oArrayTextBytes[0]->m_strText;
if (pElem->m_lPlaceholderType == PT_MasterSlideNumber && strShapeText.length() > 5)
pElem->m_lPlaceholderType = PT_MasterFooter; ///???? 1-(33).ppt
} }
std::vector<CRecordTextCharsAtom*> oArrayTextChars; std::vector<CRecordTextCharsAtom*> oArrayTextChars;
GetRecordsByType(&oArrayTextChars, true, true); GetRecordsByType(&oArrayTextChars, true, true);
if (0 < oArrayTextChars.size()) if (0 < oArrayTextChars.size() && strShapeText.empty())
{ {
strText = oArrayTextChars[0]->m_strText; strShapeText = oArrayTextChars[0]->m_strText;
} }
// ... // ...
...@@ -1654,7 +1693,7 @@ public: ...@@ -1654,7 +1693,7 @@ public:
pSlideWrapper->m_mapElements.insert(std::pair<LONG, CElementInfo>(pShapeElem->m_lID, oElementInfo)); pSlideWrapper->m_mapElements.insert(std::pair<LONG, CElementInfo>(pShapeElem->m_lID, oElementInfo));
SetUpTextStyle(strText, pTheme, pLayout, pElem, pThemeWrapper, pSlideWrapper, pSlide, master_level); SetUpTextStyle(strShapeText, pTheme, pLayout, pElem, pThemeWrapper, pSlideWrapper, pSlide, master_level);
//------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------
......
#pragma once
#include "../Reader/Records.h"
class CRecordGenericDateMCAtom : public CUnknownRecord
{
UINT m_nPosition;
public:
CRecordGenericDateMCAtom()
{
}
~CRecordGenericDateMCAtom()
{
}
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
return CUnknownRecord::ReadFromStream(oHeader, pStream);
}
};
\ No newline at end of file
#pragma once #pragma once
#include "../Reader/Records.h" #include "../Reader/Records.h"
class CRecordHeadersFootersContainer : public CRecordsContainer
{
};
class CRecordHeadersFootersAtom : public CUnknownRecord class CRecordHeadersFootersAtom : public CUnknownRecord
{ {
public: public:
...@@ -69,3 +73,70 @@ public: ...@@ -69,3 +73,70 @@ public:
} }
}; };
class CRecordMetaCharacterAtom : public CUnknownRecord
{
public:
DWORD m_nPosition;
CRecordMetaCharacterAtom()
{
m_nPosition = -1;
}
~CRecordMetaCharacterAtom()
{
}
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
m_oHeader = oHeader;
m_nPosition = StreamUtils::ReadDWORD(pStream);
}
};
class CRecordRTFDateTimeMetaAtom : public CRecordMetaCharacterAtom
{
public:
std::string m_strFormat;
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
CRecordMetaCharacterAtom::ReadFromStream(oHeader, pStream);
m_strFormat = StreamUtils::ReadStringA(pStream, 128);
}
};
class CRecordDateTimeMetaAtom : public CRecordMetaCharacterAtom
{
public:
BYTE m_FormatID;
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
CRecordMetaCharacterAtom::ReadFromStream(oHeader, pStream);
m_FormatID = StreamUtils::ReadBYTE(pStream);
}
};
class CRecordGenericDateMetaAtom : public CRecordMetaCharacterAtom
{
};
class CRecordFooterMetaAtom : public CRecordMetaCharacterAtom
{
};
class CRecordHeaderMetaAtom : public CRecordMetaCharacterAtom
{
};
class CRecordSlideNumberMetaAtom : public CRecordMetaCharacterAtom
{
};
\ No newline at end of file
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
#include "BookmarkSeedAtom.h" #include "BookmarkSeedAtom.h"
#include "CString.h" #include "CString.h"
#include "ColorSchemeAtom.h" #include "ColorSchemeAtom.h"
#include "DateTimeMCAtom.h"
#include "DocRoutingSlipAtom.h" #include "DocRoutingSlipAtom.h"
#include "DocumentAtom.h" #include "DocumentAtom.h"
#include "ExControlAtom.h" #include "ExControlAtom.h"
...@@ -43,7 +42,6 @@ ...@@ -43,7 +42,6 @@
#include "ExOleLinkAtom.h" #include "ExOleLinkAtom.h"
#include "ExOleObjAtom.h" #include "ExOleObjAtom.h"
#include "FontEntityAtom.h" #include "FontEntityAtom.h"
#include "GenericDateMCAtom.h"
#include "GridSpacing10Atom.h" #include "GridSpacing10Atom.h"
#include "GuideAtom.h" #include "GuideAtom.h"
#include "HeadersFootersAtom.h" #include "HeadersFootersAtom.h"
...@@ -62,7 +60,6 @@ ...@@ -62,7 +60,6 @@
#include "RoundTripColorMappingAtom.h" #include "RoundTripColorMappingAtom.h"
#include "RoundTripNewPlaceholderId12Atom.h" #include "RoundTripNewPlaceholderId12Atom.h"
#include "RoundTripThemeAtom.h" #include "RoundTripThemeAtom.h"
#include "SlideNumberMCAtom.h"
#include "TextRulerAtom.h" #include "TextRulerAtom.h"
#include "ShapeFlags10Atom.h" #include "ShapeFlags10Atom.h"
#include "ShapeFlagsAtom.h" #include "ShapeFlagsAtom.h"
......
#pragma once
#include "../Reader/Records.h"
class CRecordSlideNumberMCAtom : public CUnknownRecord
{
UINT m_nPosition;
public:
CRecordSlideNumberMCAtom()
{
}
~CRecordSlideNumberMCAtom()
{
}
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
return CUnknownRecord::ReadFromStream(oHeader, pStream);
}
};
\ No newline at end of file
...@@ -24,6 +24,7 @@ public: ...@@ -24,6 +24,7 @@ public:
m_oPFRun.LoadFromStream(pStream, false); m_oPFRun.LoadFromStream(pStream, false);
// ... // ...
int current_pos = pStream->tell();
StreamUtils::StreamSeek(lPosition + m_oHeader.RecLen, pStream); StreamUtils::StreamSeek(lPosition + m_oHeader.RecLen, pStream);
} }
......
...@@ -254,8 +254,8 @@ namespace NSPresentationEditor ...@@ -254,8 +254,8 @@ namespace NSPresentationEditor
{ {
pPar->tabStops = m_oRuler.tabsStops; pPar->tabStops = m_oRuler.tabsStops;
if (pPar->defaultTabSize.is_init() == false) //if (pPar->defaultTabSize.is_init() == false)
pPar->defaultTabSize = m_oRuler.tabsStops[0]; // pPar->defaultTabSize = m_oRuler.tabsStops[0];
} }
if (m_oRuler.DefaultTabSize.is_init()) if (m_oRuler.DefaultTabSize.is_init())
......
...@@ -30,11 +30,12 @@ namespace NSPresentationEditor ...@@ -30,11 +30,12 @@ namespace NSPresentationEditor
CTextAttributes m_oAttributes; CTextAttributes m_oAttributes;
std::vector<CParagraph> m_arParagraphs; std::vector<CParagraph> m_arParagraphs;
// ( )
bool m_bVertical; bool m_bVertical;
bool m_bAutoFit;
int m_lWrapMode; // 0 - square, default; 1 - none wrap int m_lWrapMode; // 0 - square, default; 1 - none wrap
// . // .
CTextRuler m_oRuler; CTextRuler m_oRuler;
...@@ -68,6 +69,7 @@ namespace NSPresentationEditor ...@@ -68,6 +69,7 @@ namespace NSPresentationEditor
m_oBounds.bottom = 50; m_oBounds.bottom = 50;
m_bVertical = false; m_bVertical = false;
m_bAutoFit = false;
m_lWrapMode = 0; m_lWrapMode = 0;
m_lTextMasterType = -1; m_lTextMasterType = -1;
...@@ -86,6 +88,7 @@ namespace NSPresentationEditor ...@@ -86,6 +88,7 @@ namespace NSPresentationEditor
m_oAttributes = oSrc.m_oAttributes; m_oAttributes = oSrc.m_oAttributes;
m_bVertical = oSrc.m_bVertical; m_bVertical = oSrc.m_bVertical;
m_lWrapMode = oSrc.m_lWrapMode; m_lWrapMode = oSrc.m_lWrapMode;
m_bAutoFit = oSrc.m_bAutoFit;
m_arParagraphs.insert(m_arParagraphs.end(), oSrc.m_arParagraphs.begin(), oSrc.m_arParagraphs.end()); m_arParagraphs.insert(m_arParagraphs.end(), oSrc.m_arParagraphs.begin(), oSrc.m_arParagraphs.end());
m_oRuler = oSrc.m_oRuler; m_oRuler = oSrc.m_oRuler;
......
...@@ -259,7 +259,7 @@ namespace NSPresentationEditor ...@@ -259,7 +259,7 @@ namespace NSPresentationEditor
NSCommon::nullable_base<LONG> indent; NSCommon::nullable_base<LONG> indent;
NSCommon::nullable_base<LONG> defaultTabSize; NSCommon::nullable_base<LONG> defaultTabSize;
std::vector<DWORD> tabStops; std::vector<std::pair<int, int>> tabStops;
bool bIsOneLine; bool bIsOneLine;
...@@ -366,10 +366,7 @@ namespace NSPresentationEditor ...@@ -366,10 +366,7 @@ namespace NSPresentationEditor
if (oSrc.textDirection.is_init()) textDirection = oSrc.textDirection; if (oSrc.textDirection.is_init()) textDirection = oSrc.textDirection;
if (oSrc.wrapFlags.is_init()) wrapFlags = oSrc.wrapFlags; if (oSrc.wrapFlags.is_init()) wrapFlags = oSrc.wrapFlags;
if (0 != oSrc.tabStops.size()) if (!oSrc.tabStops.empty()) tabStops = oSrc.tabStops;
{
tabStops.insert(tabStops.begin(), oSrc.tabStops.begin(), oSrc.tabStops.end());
}
} }
CString ToString(LONG lCount) CString ToString(LONG lCount)
...@@ -384,7 +381,9 @@ namespace NSPresentationEditor ...@@ -384,7 +381,9 @@ namespace NSPresentationEditor
public: public:
NSCommon::nullable_base<LONG> DefaultTabSize; NSCommon::nullable_base<LONG> DefaultTabSize;
NSCommon::nullable_base<SHORT> CLevels; NSCommon::nullable_base<SHORT> CLevels;
NSCommon::nullable_base<SHORT> TabStops; NSCommon::nullable_base<SHORT> TabStops;
std::vector<std::pair<int,int>> tabsStops;
NSCommon::nullable_base<LONG> LeftMargin1; NSCommon::nullable_base<LONG> LeftMargin1;
NSCommon::nullable_base<LONG> LeftMargin2; NSCommon::nullable_base<LONG> LeftMargin2;
...@@ -398,7 +397,6 @@ namespace NSPresentationEditor ...@@ -398,7 +397,6 @@ namespace NSPresentationEditor
NSCommon::nullable_base<LONG> Indent4; NSCommon::nullable_base<LONG> Indent4;
NSCommon::nullable_base<LONG> Indent5; NSCommon::nullable_base<LONG> Indent5;
std::vector<DWORD> tabsStops;
public: public:
CTextRuler() : DefaultTabSize(), CLevels(), TabStops(), CTextRuler() : DefaultTabSize(), CLevels(), TabStops(),
...@@ -442,7 +440,7 @@ namespace NSPresentationEditor ...@@ -442,7 +440,7 @@ namespace NSPresentationEditor
void ApplyBefore(const CTextRuler& oSrc) void ApplyBefore(const CTextRuler& oSrc)
{ {
if (!DefaultTabSize.is_init()) DefaultTabSize = oSrc.DefaultTabSize; if (!DefaultTabSize.is_init()) DefaultTabSize = oSrc.DefaultTabSize;
if (!CLevels.is_init()) CLevels = oSrc.CLevels; if (!CLevels.is_init()) CLevels = oSrc.CLevels;
if (!LeftMargin1.is_init()) LeftMargin1 = oSrc.LeftMargin1; if (!LeftMargin1.is_init()) LeftMargin1 = oSrc.LeftMargin1;
if (!LeftMargin2.is_init()) LeftMargin2 = oSrc.LeftMargin2; if (!LeftMargin2.is_init()) LeftMargin2 = oSrc.LeftMargin2;
...@@ -456,7 +454,7 @@ namespace NSPresentationEditor ...@@ -456,7 +454,7 @@ namespace NSPresentationEditor
if (!Indent4.is_init()) Indent4 = oSrc.Indent4; if (!Indent4.is_init()) Indent4 = oSrc.Indent4;
if (!Indent5.is_init()) Indent5 = oSrc.Indent5; if (!Indent5.is_init()) Indent5 = oSrc.Indent5;
tabsStops.insert(tabsStops.end(), oSrc.tabsStops.begin(), oSrc.tabsStops.end()); if (!tabsStops.empty()) tabsStops = oSrc.tabsStops;
} }
CString ToString() CString ToString()
......
...@@ -41,6 +41,9 @@ namespace NSPresentationEditor ...@@ -41,6 +41,9 @@ namespace NSPresentationEditor
bool m_bHasSlideNumber; bool m_bHasSlideNumber;
bool m_bHasHeader; bool m_bHasHeader;
bool m_bHasFooter; bool m_bHasFooter;
std::vector<std::wstring> m_oFootersHeaderString;
//------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------
CTheme() : m_arColorScheme(), m_arFonts(), m_arBrushes(), CTheme() : m_arColorScheme(), m_arFonts(), m_arBrushes(),
m_arPens(), m_arEffects(), m_arLayouts() m_arPens(), m_arEffects(), m_arLayouts()
......
...@@ -63,9 +63,13 @@ void CStylesWriter::ConvertStyleLevel(NSPresentationEditor::CTextStyleLevel& oLe ...@@ -63,9 +63,13 @@ void CStylesWriter::ConvertStyleLevel(NSPresentationEditor::CTextStyleLevel& oLe
oWriter.WriteString(std::wstring(L"<a:tabLst>")); oWriter.WriteString(std::wstring(L"<a:tabLst>"));
for (int t = 0 ; t < pPF->tabStops.size(); t++) for (int t = 0 ; t < pPF->tabStops.size(); t++)
{ {
CString strTab; CString strTabPos; strTabPos.Format(L"%d", pPF->tabStops[t].first) ;
strTab.Format(L"<a:tab pos=\"%d\" algn=\"l\"/>", pPF->tabStops[t]) ; oWriter.WriteString(std::wstring(L"<a:tab pos=\"") + string2std_string(strTabPos) + _T("\""));
oWriter.WriteString(strTab);
if (pPF->tabStops[t].second == 1) oWriter.WriteString(std::wstring(L" algn=\"ctr\"/>"));
else if (pPF->tabStops[t].second == 2) oWriter.WriteString(std::wstring(L" algn=\"r\"/>"));
else if (pPF->tabStops[t].second == 3) oWriter.WriteString(std::wstring(L" algn=\"dec\"/>"));
else oWriter.WriteString(std::wstring(L" algn=\"l\"/>"));
} }
oWriter.WriteString(std::wstring(L"</a:tabLst>")); oWriter.WriteString(std::wstring(L"</a:tabLst>"));
} }
...@@ -612,9 +616,9 @@ void NSPresentationEditor::CShapeWriter::WriteShapeInfo() ...@@ -612,9 +616,9 @@ void NSPresentationEditor::CShapeWriter::WriteShapeInfo()
if (m_pShapeElement->m_lPlaceholderSizePreset > 1 && !isTitlePlaceholder(m_pShapeElement->m_lPlaceholderType)) if (m_pShapeElement->m_lPlaceholderSizePreset > 1 && !isTitlePlaceholder(m_pShapeElement->m_lPlaceholderType))
{ {
if (m_pShapeElement->m_lPlaceholderSizePreset == 2) if (m_pShapeElement->m_lPlaceholderSizePreset == 1)
m_oWriter.WriteString(std::wstring(L" size=\"half\"")); m_oWriter.WriteString(std::wstring(L" size=\"half\""));
if (m_pShapeElement->m_lPlaceholderSizePreset == 4) if (m_pShapeElement->m_lPlaceholderSizePreset == 2)
m_oWriter.WriteString(std::wstring(L" size=\"quarter\"")); m_oWriter.WriteString(std::wstring(L" size=\"quarter\""));
if (m_pShapeElement->m_lPlaceholderSizePreset == 3) if (m_pShapeElement->m_lPlaceholderSizePreset == 3)
{ {
...@@ -705,6 +709,10 @@ void NSPresentationEditor::CShapeWriter::WriteTextInfo() ...@@ -705,6 +709,10 @@ void NSPresentationEditor::CShapeWriter::WriteTextInfo()
m_oWriter.WriteString(std::wstring(L"</a:avLst>")); m_oWriter.WriteString(std::wstring(L"</a:avLst>"));
m_oWriter.WriteString(std::wstring(L"</a:prstTxWarp>")); m_oWriter.WriteString(std::wstring(L"</a:prstTxWarp>"));
} }
if (m_pShapeElement->m_oShape.m_oText.m_bAutoFit)
{
m_oWriter.WriteString(std::wstring(L"<a:spAutoFit/>"));
}
m_oWriter.WriteString(std::wstring(L"</a:bodyPr>")); m_oWriter.WriteString(std::wstring(L"</a:bodyPr>"));
if (0 == nCount) if (0 == nCount)
......
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