Compare commits

...

8 Commits

65 changed files with 969 additions and 402 deletions

View File

@ -8806,7 +8806,6 @@ public:
case c_oSerTableTypes::App:
{
PPTX::App oApp(NULL);
m_oBufferedStream.Skip(1); // type
oApp.fromPPTY(&m_oBufferedStream);
OOX::CApp* pApp = new OOX::CApp(NULL);
pApp->FromPptxApp(&oApp);
@ -8817,7 +8816,6 @@ public:
case c_oSerTableTypes::Core:
{
PPTX::Core oCore(NULL);
m_oBufferedStream.Skip(1); // type
oCore.fromPPTY(&m_oBufferedStream);
OOX::CCore* pCore = new OOX::CCore(NULL);
pCore->FromPptxCore(&oCore);

View File

@ -132,15 +132,15 @@ void CStylesWriter::ConvertStyleLevel(NSPresentationEditor::CTextStyleLevel& oLe
}
if (pPF->bulletFontProperties.is_init())
{
oWriter.WriteString(L"<a:buFont typeface=\"" + pPF->bulletFontProperties->strFontName + L"\"");
oWriter.WriteString(L"<a:buFont typeface=\"" + pPF->bulletFontProperties->Name + L"\"");
if ( pPF->bulletFontProperties->nPitchFamily > 0)
if ( pPF->bulletFontProperties->PitchFamily > 0)
{
oWriter.WriteString(std::wstring(L" pitchFamily=\"") + std::to_wstring(pPF->bulletFontProperties->nPitchFamily) + L"\"");
oWriter.WriteString(std::wstring(L" pitchFamily=\"") + std::to_wstring(pPF->bulletFontProperties->PitchFamily) + L"\"");
}
if ( pPF->bulletFontProperties->nFontCharset > 0)
if ( pPF->bulletFontProperties->Charset > 0)
{
oWriter.WriteString(std::wstring(L" charset=\"") + std::to_wstring((char)pPF->bulletFontProperties->nFontCharset) + L"\"");
oWriter.WriteString(std::wstring(L" charset=\"") + std::to_wstring((char)pPF->bulletFontProperties->Charset) + L"\"");
}
oWriter.WriteString(std::wstring(L"/>"));
@ -249,9 +249,9 @@ void CStylesWriter::ConvertStyleLevel(NSPresentationEditor::CTextStyleLevel& oLe
oWriter.WriteString(L"<a:solidFill><a:srgbClr val=\"" + strColor + L"\"/></a:solidFill>");
}
}
if ((pCF->FontProperties.is_init()) && (!pCF->FontProperties->strFontName.empty()))
if ((pCF->font.ansi.is_init()) && (!pCF->font.ansi->Name.empty()))
{
oWriter.WriteString(L"<a:latin typeface=\"" + pCF->FontProperties->strFontName + L"\"/>");
oWriter.WriteString(L"<a:latin typeface=\"" + pCF->font.ansi->Name + L"\"/>");
}
else if (pCF->fontRef.is_init())
{
@ -271,13 +271,13 @@ void CStylesWriter::ConvertStyleLevel(NSPresentationEditor::CTextStyleLevel& oLe
}
}
}
if (pCF->FontPropertiesEA.is_init())
if (pCF->font.ea.is_init())
{
oWriter.WriteString(L"<a:cs typeface=\"" + pCF->FontPropertiesEA->strFontName + L"\"/>");
oWriter.WriteString(L"<a:ea typeface=\"" + pCF->font.ea->Name + L"\"/>");
}
if (pCF->FontPropertiesSym.is_init())
if (pCF->font.sym.is_init())
{
oWriter.WriteString(L"<a:sym typeface=\"" + pCF->FontPropertiesSym->strFontName + L"\"/>");
oWriter.WriteString(L"<a:sym typeface=\"" + pCF->font.sym->Name + L"\"/>");
}
oWriter.WriteString(L"</a:defRPr>");
@ -1319,15 +1319,15 @@ void NSPresentationEditor::CShapeWriter::WriteTextInfo()
}
if (pPF->bulletFontProperties.is_init())
{
m_oWriter.WriteString(std::wstring(L"<a:buFont typeface=\"") + pPF->bulletFontProperties->strFontName + L"\"");
m_oWriter.WriteString(std::wstring(L"<a:buFont typeface=\"") + pPF->bulletFontProperties->Name + L"\"");
if ( pPF->bulletFontProperties->nPitchFamily > 0)
if ( pPF->bulletFontProperties->PitchFamily > 0)
{
m_oWriter.WriteString(std::wstring(L" pitchFamily=\"") + std::to_wstring(pPF->bulletFontProperties->nPitchFamily) + L"\"");
m_oWriter.WriteString(std::wstring(L" pitchFamily=\"") + std::to_wstring(pPF->bulletFontProperties->PitchFamily) + L"\"");
}
if ( pPF->bulletFontProperties->nFontCharset > 0)
if ( pPF->bulletFontProperties->Charset > 0)
{
m_oWriter.WriteString(std::wstring(L" charset=\"") + std::to_wstring((char)pPF->bulletFontProperties->nFontCharset) + L"\"");
m_oWriter.WriteString(std::wstring(L" charset=\"") + std::to_wstring((char)pPF->bulletFontProperties->Charset) + L"\"");
}
m_oWriter.WriteString(std::wstring(L"/>"));
}
@ -1484,9 +1484,9 @@ void NSPresentationEditor::CShapeWriter::WriteTextInfo()
}
}
if (pCF->FontProperties.is_init())
if (pCF->font.font.is_init())
{
m_oWriter.WriteString(std::wstring(L"<a:latin typeface=\"") + pCF->FontProperties->strFontName + _T("\"/>"));
m_oWriter.WriteString(std::wstring(L"<a:latin typeface=\"") + pCF->font.font->Name + _T("\"/>"));
}
else if (pCF->fontRef.is_init())
{
@ -1507,13 +1507,13 @@ void NSPresentationEditor::CShapeWriter::WriteTextInfo()
}
}
if (pCF->FontPropertiesEA.is_init())
if (pCF->font.ea.is_init())
{
m_oWriter.WriteString(std::wstring(L"<a:cs typeface=\"") + pCF->FontPropertiesEA->strFontName + L"\"/>");
m_oWriter.WriteString(std::wstring(L"<a:ea typeface=\"") + pCF->font.ea->Name + L"\"/>");
}
if (pCF->FontPropertiesSym.is_init())
if (pCF->font.sym.is_init())
{
m_oWriter.WriteString(std::wstring(L"<a:sym typeface=\"") + pCF->FontPropertiesSym->strFontName + _T("\"/>"));
m_oWriter.WriteString(std::wstring(L"<a:sym typeface=\"") + pCF->font.sym->Name + _T("\"/>"));
}
m_oWriter.WriteString(std::wstring(L"</a:rPr>"));
@ -1869,11 +1869,11 @@ std::wstring NSPresentationEditor::CShapeWriter::ConvertImage()
m_oWriter.WriteString(std::wstring(L"<a:srcRect"));
if (pImageElement->m_bCropEnabled)
{
m_oWriter.WriteString(L" l=\"" + std::to_wstring((size_t)(pImageElement->m_lcropFromLeft *1.5)) + L"\"");
m_oWriter.WriteString(L" t=\"" + std::to_wstring((size_t)(pImageElement->m_lcropFromTop *1.5)) + L"\"");
m_oWriter.WriteString(L" r=\"" + std::to_wstring((size_t)(pImageElement->m_lcropFromRight *1.5)) + L"\"");
m_oWriter.WriteString(L" b=\"" + std::to_wstring((size_t)(pImageElement->m_lcropFromBottom*1.5)) + L"\"");
{//124-125 Q3 V2 Win File 3.ppt
m_oWriter.WriteString(L" l=\"" + std::to_wstring((_INT64)(pImageElement->m_lcropFromLeft *1.5)) + L"\"");
m_oWriter.WriteString(L" t=\"" + std::to_wstring((_INT64)(pImageElement->m_lcropFromTop *1.5)) + L"\"");
m_oWriter.WriteString(L" r=\"" + std::to_wstring((_INT64)(pImageElement->m_lcropFromRight *1.5)) + L"\"");
m_oWriter.WriteString(L" b=\"" + std::to_wstring((_INT64)(pImageElement->m_lcropFromBottom*1.5)) + L"\"");
}
m_oWriter.WriteString(std::wstring(L"/>"));

View File

@ -475,10 +475,10 @@ void CPPTUserInfo::ReadExtenalObjects(std::wstring strFolderMem)
for (size_t nIndex = 0; nIndex < oArrayFonts.size(); ++nIndex)
{
CFont oFont;
CFontProperty oFont;
oFont.Name = oArrayFonts[nIndex]->m_strFaceName;
oFont.Charset = oArrayFonts[nIndex]->m_lfCharSet;
oFont.PitchFamily = oArrayFonts[nIndex]->m_lfPitchAndFamily;
m_arrFonts.push_back(oFont);
@ -1387,7 +1387,7 @@ void CPPTUserInfo::LoadMainMaster(_UINT32 dwMasterID)
if (0 == oArraySlideAtoms.size())
return;
_UINT32 dwID = (_UINT32)oArraySlideAtoms[0]->m_nMasterIDRef;
_UINT32 dwID = (_UINT32)oArraySlideAtoms[0]->m_nMasterIDRef;
if (0 != dwID)
{
// этот мастер - не main!!!
@ -2473,8 +2473,7 @@ void CPPTUserInfo::CreateDefaultStyle(NSPresentationEditor::CTextStyles& pStyle,
pCF->Size = 18;
pCF->FontProperties = new NSPresentationEditor::CFontProperties();
pCF->FontProperties->SetFont(pTheme->m_arFonts[0]);
pCF->font.font = new NSPresentationEditor::CFontProperty(pTheme->m_arFonts[0]);
}
}

View File

@ -83,7 +83,7 @@ public:
// эти параметры - одни на весь документ.
// чтобы поддержать нашу схему (пптх) - копируем их в темы
std::vector<CRecordBlipStoreContainer*> m_arrBlipStore;
std::vector<CFont> m_arrFonts;
std::vector<CFontProperty> m_arrFonts;
NSPresentationEditor::CTextStyles m_oDefaultTextStyle;
vector_string m_PlaceholdersReplaceString[3]; //0-dates, 1 - headers, 2 - footers
@ -174,10 +174,10 @@ public:
oArrayMem.push_back(oScheme[0]);//4
oArrayMem.push_back(oScheme[4]);//5 //accent1
oArrayMem.push_back(oScheme[5]);//6 //accent2
oArrayMem.push_back(oScheme[0]);//7 //accent3
oArrayMem.push_back(oScheme[5]);//8 //accent4
oArrayMem.push_back(oScheme[4]);//9 //accent5
oArrayMem.push_back(oScheme[7]);//10 //accent6
oArrayMem.push_back(CColor(0xAAAAAA));//(oScheme[0]);//7 //accent3
oArrayMem.push_back(CColor(0xDCDCDC));//(oScheme[5]);//8 //accent4
oArrayMem.push_back(CColor(0xDBF1FA));//(oScheme[4]);//9 //accent5
oArrayMem.push_back(CColor(0x4B9DCA));//(oScheme[7]);//10 //accent6
oArrayMem.push_back(oScheme[6]);//11 //hlink
oArrayMem.push_back(oScheme[7]);//12 //folHlink
oArrayMem.push_back(oScheme[0]);//13 //lt1

View File

@ -79,6 +79,7 @@ typedef BYTE BOOL1;
#define RECORD_TYPE_NAMEDSHOW 1041
#define RECORD_TYPE_NAMEDSHOW_SLIDES 1042
#define RECORD_TYPE_SHEET_PROPERTIES 1044
#define RECORD_TYPE_NORMALVIEW_SETINFO9 1045
#define RECORD_TYPE_ORIGINALMAINMASTERID 1052
#define RECORD_TYPE_COMPOSITEMASTERID 1053
@ -95,6 +96,7 @@ typedef BYTE BOOL1;
#define RECORD_TYPE_LIST 2000
#define RECORD_TYPE_FONTCOLLECTION 2005
#define RECORD_TYPE_FONTCOLLECTION10 2006
#define RECORD_TYPE_BOOKMARKCOLLECTION 2019
#define RECORD_TYPE_SOUNDCOLLECTION 2020
#define RECORD_TYPE_SOUNDCOLL_ATOM 2021
@ -381,6 +383,7 @@ static std::string GetRecordName(_UINT32 dwType)
case RECORD_TYPE_PERSISTPTRINCREMENTALBLOCK : { strName = ("PersistPtrIncrementalBlock"); break; }
case RECORD_TYPE_GSCALING_ATOM2 : { strName = ("GScalingAtom2"); break; }
case RECORD_TYPE_GRCOLOR_ATOM2 : { strName = ("GRColorAtom2"); break; }
case RECORD_TYPE_NORMALVIEW_SETINFO9 : { strName = ("NormalViewSetInfoAtom"); break; }
// Records ~12000 seem to be related to the Comments used in PPT 2000/XP
// (Comments in PPT97 are normal Escher text boxes)

View File

@ -474,13 +474,13 @@ void CTextCFRun_ppt::LoadFromStream(POLE::Stream* pStream, bool bIsIndentation)
m_oRun.fontRef = StreamUtils::ReadWORD(pStream);
if (EAFontRef_)
m_oRun.EAFontRef = StreamUtils::ReadWORD(pStream);
m_oRun.eaFontRef = StreamUtils::ReadWORD(pStream);
if (AnsiFontRef_)
m_oRun.AnsiFontRef = StreamUtils::ReadWORD(pStream);
m_oRun.ansiFontRef = StreamUtils::ReadWORD(pStream);
if (SymbolFontRef_)
m_oRun.SymbolFontRef = StreamUtils::ReadWORD(pStream);
m_oRun.symbolFontRef = StreamUtils::ReadWORD(pStream);
if (size_)
m_oRun.Size = StreamUtils::ReadWORD(pStream);

View File

@ -167,12 +167,14 @@ IRecord* CreateByType(SRecordHeader oHeader)
{
CREATE_BY_TYPE(RECORD_TYPE_SLIDELISTWITHTEXT , CRecordSlideListWithText)
CREATE_BY_TYPE(RECORD_TYPE_DOCUMENT_ATOM , CRecordDocumentAtom)
//CREATE_BY_TYPE(RECORD_TYPE_ENDDOCUMENT , CRecordEndDocument)
CREATE_BY_TYPE(RECORD_TYPE_ENDDOCUMENT , CRecordEndDocument)
//CREATE_BY_TYPE(RECORD_TYPE_SSLIDE_LAYOUT_ATOM , CRecordSSlideLayoutAtom)
CREATE_BY_TYPE(RECORD_TYPE_SLIDE_ATOM , CRecordSlideAtom)
CREATE_BY_TYPE(RECORD_TYPE_NOTES_ATOM , CRecordNotesAtom)
CREATE_BY_TYPE(RECORD_TYPE_SLIDE_PERSIST_ATOM , CRecordSlidePersistAtom)
CREATE_BY_TYPE(RECORD_TYPE_ENVIRONMENT , CRecordDocumentTextInfo)
CREATE_BY_TYPE(RECORD_TYPE_FONTCOLLECTION , CRecordFontCollection)
CREATE_BY_TYPE(RECORD_TYPE_FONTCOLLECTION10 , CRecordFontCollection)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordMasterPersistAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordNotesPersistAtom)
CREATE_BY_TYPE(RECORD_TYPE_SSSLIDE_INFO_ATOM , CSlideShowSlideInfoAtom)
@ -182,7 +184,7 @@ IRecord* CreateByType(SRecordHeader oHeader)
CREATE_BY_TYPE(RECORD_TYPE_VIEWINFO_ATOM , CRecordViewInfoAtom)
CREATE_BY_TYPE(RECORD_TYPE_SLIDE_VIEWINFO_ATOM , CRecordSlideViewInfoAtom)
CREATE_BY_TYPE(RECORD_TYPE_VBAINFO_ATOM , CRecordVBAInfoAtom)
//CREATE_BY_TYPE(RECORD_TYPE_SSDOCINFO_ATOM , CRecordSSDocInfoAtom)
CREATE_BY_TYPE(RECORD_TYPE_SSDOCINFO_ATOM , CRecordSSDocInfoAtom)
//CREATE_BY_TYPE(RECORD_TYPE_DOC_ROUTING_SLIP , CRecordDocRoutingSlipAtom)
CREATE_BY_TYPE(RECORD_TYPE_EXOBJLIST_ATOM , CRecordExObjListAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordGridSpacing10Atom)
@ -204,11 +206,9 @@ IRecord* CreateByType(SRecordHeader oHeader)
CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPNOTESMASTERTEXTSTYLES12 , CRecordRoundTripNotesMasterTextStyles12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPDOCFLAGS12 , CRecordRoundTripDocFlags12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPSHAPECHECKSUMFORCUSTOMLAYOUTS12 , CRecordRoundTripShapeCheckSumForCustomLayouts12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPCUSTOMTABLESTYLES12 , CRecordRoundTripCustomTableStyles12Atom)
CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPCUSTOMTABLESTYLES12 , CRecordRoundTripCustomTableStyles12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_BOOKMARK_SEED_ATOM , CRecordBookmarkSeedAtom)
//CREATE_BY_TYPE(RECORD_TYPE_COLOR_SCHEME_ATOM , CRecordSlideColorSchemeAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN, CRecordSchemeListElementColorSchemeAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN, CRecordBlipEntityAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN, CRecordExObjRefAtom)
CREATE_BY_TYPE(RECORD_TYPE_OEPLACEHOLDER_ATOM , CRecordPlaceHolderAtom)
@ -236,7 +236,7 @@ IRecord* CreateByType(SRecordHeader oHeader)
CREATE_BY_TYPE(RECORD_TYPE_GUIDE_ATOM , CRecordGuideAtom)
CREATE_BY_TYPE(RECORD_TYPE_FONTENTITY_ATOM , CRecordFontEntityAtom)
//CREATE_BY_TYPE(RECORD_TYPE_FONT_EMBEDDEDDATA , CRecordFontEmbedDataBlob)
CREATE_BY_TYPE(RECORD_TYPE_FONT_EMBEDDEDDATA , CRecordFontEmbedDataBlob)
//CREATE_BY_TYPE(RECORD_TYPE_METAFILE , CRecordMetafileBlob)
CREATE_BY_TYPE(RECORD_TYPE_CSTRING , CRecordCString)
CREATE_BY_TYPE(RECORD_TYPE_SOUNDCOLL_ATOM , CRecordSoundCollAtom)
@ -245,7 +245,7 @@ IRecord* CreateByType(SRecordHeader oHeader)
//CREATE_BY_TYPE(RECORD_TYPE_BOOKMARK_ENTITY_ATOM , CRecordBookmarkEntityAtom)
//CREATE_BY_TYPE(RECORD_TYPE_EXLINK_ATOM , CRecordExOleLinkAtom)
//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_ATOM , CRecordExHyperlinkAtom)
@ -283,7 +283,9 @@ IRecord* CreateByType(SRecordHeader oHeader)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_SECONDARY_OPT , CRecordShapeProperties)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_TETRIARY_OPT , CRecordShapeProperties)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_REGROUPITEMS , CRecordRegGroupItems)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_SPLITMENUCOLORS , CRecordSplitMenuColorRecord)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_COLORMRU , CRecordMostRecentlyUserColors)
CREATE_BY_TYPE(RECORD_TYPE_EX_CDAUDIO , CRecordExCDAudioContainer)
CREATE_BY_TYPE(RECORD_TYPE_EX_WAVAUDIOLINK , CRecordWAVAudioLinkContainer)
CREATE_BY_TYPE(RECORD_TYPE_EX_WAVAUDIOEMBEDDED , CRecordWAVAudioEmbeddedContainer)
@ -318,7 +320,7 @@ IRecord* CreateByType(SRecordHeader oHeader)
pRecord = new CUnknownRecord();
#ifdef _DEBUG
char str[1024]={};
sprintf(str, "Unknown record type: %xd\t" , oHeader.RecType);
sprintf(str, "Unknown record type: %x\t" , oHeader.RecType);
std::cout << str << GetRecordName((_UINT32)oHeader.RecType) << "\n";
#endif
}

View File

@ -38,6 +38,8 @@
#include "../../../Common/3dParty/pole/pole.h"
#include "../../../OfficeCryptReader/source/CryptTransform.h"
#include <boost/smart_ptr/shared_array.hpp>
using namespace NSPresentationEditor;
using namespace XLS;
@ -249,7 +251,6 @@ public:
/*
class CRecordDocument : public CRecordsContainer {};
class CRecordEnvironment : public CRecordsContainer {};
class CRecordExAviMovie : public CRecordsContainer {};
class CRecordExCDAudio : public CRecordsContainer {};
class CRecordExControl : public CRecordsContainer {};
@ -265,7 +266,6 @@ class CRecordExQuickTimeMovie : public CRecordsContainer {};
class CRecordExVideo : public CRecordsContainer {};
class CRecordExWAVAudioEmbedded : public CRecordsContainer {};
class CRecordExWAVAudioLink : public CRecordsContainer {};
class CRecordFontCollection : public CRecordsContainer {};
class CRecordFontCollection10 : public CRecordsContainer {};
class CRecordHandout : public CRecordsContainer {};
class CRecordHeadersFooters : public CRecordsContainer {};

View File

@ -34,8 +34,6 @@
class CRecordAnimationInfoAtom : public CUnknownRecord
{
// поля...
public:
CRecordAnimationInfoAtom()

View File

@ -34,10 +34,9 @@
class CRecordBlipEntityAtom : public CUnknownRecord
{
BYTE m_nWinBlipType;
BYTE* m_pImage;
public:
BYTE m_nWinBlipType;
std::pair<boost::shared_array<unsigned char>, _INT32> data;
CRecordBlipEntityAtom()
{

View File

@ -34,10 +34,9 @@
class CRecordBookmarkEntityAtom : public CUnknownRecord
{
public:
UINT m_nID;
std::wstring m_strName;
public:
CRecordBookmarkEntityAtom()
{

View File

@ -34,9 +34,8 @@
class CRecordBookmarkSeedAtom : public CUnknownRecord
{
INT m_nBookmarkID;
public:
INT m_nBookmarkID;
CRecordBookmarkSeedAtom()
{

View File

@ -34,6 +34,7 @@
class CRecordDocRoutingSlipAtom : public CUnknownRecord
{
public:
struct SDocRoutingSlipAtom
{
USHORT m_nType;
@ -50,8 +51,6 @@ class CRecordDocRoutingSlipAtom : public CUnknownRecord
SDocRoutingSlipAtom m_oRgRecipientRoutingSlipStrings;
SDocRoutingSlipAtom m_oSubjectString;
SDocRoutingSlipAtom m_oMessageString;
public:
CRecordDocRoutingSlipAtom()
{

View File

@ -49,4 +49,23 @@ public:
CRecordsContainer::ReadFromStream(oHeader, pStream);
}
};
};
class CRecordFontCollection : public CRecordsContainer
{
public:
CRecordFontCollection()
{
}
~CRecordFontCollection()
{
}
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
CRecordsContainer::ReadFromStream(oHeader, pStream);
}
};

View File

@ -59,12 +59,11 @@ public:
class CRecordBitmapBlip : public CUnknownRecord
{
public:
BYTE m_pRgbUid[16];
BYTE m_nTag;
BYTE* m_pScan0;
public:
//BYTE* m_pScan0;
CRecordBitmapBlip()
{

View File

@ -48,4 +48,5 @@ public:
{
CRecordsContainer::ReadFromStream(oHeader, pStream);
}
};
};

View File

@ -34,8 +34,6 @@
class CRecordTextBox : public CUnknownRecord
{
BYTE* m_pData;
public:
CRecordTextBox()

View File

@ -34,12 +34,11 @@
class CRecordExOleEmbedAtom : public CUnknownRecord
{
public:
UINT m_nColorFollow;
BOOL1 m_nCantLockServer;
BOOL1 m_nNoSizeToServer;
BOOL1 m_nIsTable;
public:
CRecordExOleEmbedAtom()
{

View File

@ -34,10 +34,9 @@
class CRecordExOleLinkAtom : public CUnknownRecord
{
public:
UINT m_nSlideID;
UINT m_nOleUpdateMode;
public:
CRecordExOleLinkAtom()
{

View File

@ -47,15 +47,9 @@ public:
BYTE m_lfPitchAndFamily;
public:
CRecordFontEntityAtom()
{
}
CRecordFontEntityAtom(){}
~CRecordFontEntityAtom()
{
}
~CRecordFontEntityAtom(){}
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
@ -109,3 +103,22 @@ public:
m_lfPitchAndFamily = StreamUtils::ReadBYTE(pStream);
}
};
class CRecordFontEmbedDataBlob : public CUnknownRecord
{
public:
std::pair<boost::shared_array<unsigned char>, _INT32> data;
//font data of an embedded font
CRecordFontEmbedDataBlob(){}
~CRecordFontEmbedDataBlob(){}
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
m_oHeader = oHeader;
data = std::make_pair(boost::shared_array<unsigned char>(new unsigned char[m_oHeader.RecLen]), m_oHeader.RecLen);
pStream->read(data.first.get(), data.second);
}
};

View File

@ -34,10 +34,9 @@
class CRecordGridSpacing10Atom : public CUnknownRecord
{
public:
INT m_nX;
INT m_nY;
public:
CRecordGridSpacing10Atom()
{

View File

@ -34,9 +34,8 @@
class CRecordKinsokuAtom : public CUnknownRecord
{
UINT m_nLevel;
public:
_UINT32 m_nLevel;
CRecordKinsokuAtom()
{
@ -48,7 +47,9 @@ public:
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
return CUnknownRecord::ReadFromStream(oHeader, pStream);
m_oHeader = oHeader;
m_nLevel = StreamUtils::ReadDWORD(pStream);
}
};

View File

@ -34,10 +34,9 @@
class CRecordMasterPersistAtom : public CUnknownRecord
{
public:
UINT m_nPsrRef;
INT m_nMasterID;
public:
CRecordMasterPersistAtom()
{

View File

@ -34,12 +34,11 @@
class CRecordMetafileBlob : public CUnknownRecord
{
public:
SHORT m_nMM;
SHORT m_nExtX;
SHORT m_nExtY;
BYTE* m_pData;
public:
CRecordMetafileBlob()
{

View File

@ -34,9 +34,8 @@
class CRecordMouseTextInteractiveInfoAtom : public CUnknownRecord
{
STextRange m_oRange;
public:
STextRange m_oRange;
CRecordMouseTextInteractiveInfoAtom()
{

View File

@ -34,9 +34,8 @@
class CRecordNamedShowSlidesAtom : public CUnknownRecord
{
std::vector<UINT> m_arRgSlideIdRef;
public:
std::vector<UINT> m_arRgSlideIdRef;
CRecordNamedShowSlidesAtom()
{

View File

@ -34,12 +34,11 @@
class CRecordNoZoomViewInfoAtom : public CUnknownRecord
{
public:
SScalingAtom m_oCurScale;
SPointAtom m_nOrigin;
BOOL1 m_bDraftMode;
public:
CRecordNoZoomViewInfoAtom()
{

View File

@ -34,10 +34,9 @@
class CRecordNotesPersistAtom : public CUnknownRecord
{
public:
UINT m_nPsrRef;
INT m_nNotesID;
public:
CRecordNotesPersistAtom()
{

View File

@ -35,7 +35,7 @@
class CRecordRoundTripColorMappingAtom : public CUnknownRecord
{
public:
std::string m_strData;
std::pair<boost::shared_array<unsigned char>, _INT32> data;
CRecordRoundTripColorMappingAtom()
{
@ -48,6 +48,8 @@ public:
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
m_oHeader = oHeader;
m_strData = StreamUtils::ReadStringA(pStream, (long)m_oHeader.RecLen);
data = std::make_pair(boost::shared_array<unsigned char>(new unsigned char[m_oHeader.RecLen]), m_oHeader.RecLen);
pStream->read(data.first.get(), data.second);
}
};

View File

@ -34,9 +34,8 @@
class CRecordRoundTripNewPlaceholderId12Atom : public CUnknownRecord
{
BYTE m_nFlags;
public:
BYTE m_nFlags;
CRecordRoundTripNewPlaceholderId12Atom()
{

View File

@ -35,7 +35,7 @@
class CRecordRoundTripNotesMasterTextStyles12Atom : public CUnknownRecord
{
public:
std::string m_strData;
std::pair<boost::shared_array<unsigned char>, _INT32> data;
CRecordRoundTripNotesMasterTextStyles12Atom()
{
@ -48,6 +48,30 @@ public:
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
m_oHeader = oHeader;
m_strData = StreamUtils::ReadStringA(pStream, (long)m_oHeader.RecLen);
data = std::make_pair(boost::shared_array<unsigned char>(new unsigned char[m_oHeader.RecLen]), m_oHeader.RecLen);
pStream->read(data.first.get(), data.second);
}
};
class CRecordRoundTripCustomTableStyles12Atom : public CUnknownRecord
{
public:
std::pair<boost::shared_array<unsigned char>, _INT32> data;
CRecordRoundTripCustomTableStyles12Atom()
{
}
~CRecordRoundTripCustomTableStyles12Atom()
{
}
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
m_oHeader = oHeader;
data = std::make_pair(boost::shared_array<unsigned char>(new unsigned char[m_oHeader.RecLen]), m_oHeader.RecLen);
pStream->read(data.first.get(), data.second);
}
};

View File

@ -35,19 +35,16 @@
class CRecordRoundTripThemeAtom : public CUnknownRecord
{
public:
std::string m_strData;
std::pair<boost::shared_array<unsigned char>, _INT32> data;
CRecordRoundTripThemeAtom()
{
}
~CRecordRoundTripThemeAtom()
{
}
CRecordRoundTripThemeAtom(){}
~CRecordRoundTripThemeAtom(){}
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
m_oHeader = oHeader;
m_strData = StreamUtils::ReadStringA(pStream, (long)m_oHeader.RecLen);
data = std::make_pair(boost::shared_array<unsigned char>(new unsigned char[m_oHeader.RecLen]), m_oHeader.RecLen);
pStream->read(data.first.get(), data.second);
}
};

View File

@ -34,16 +34,23 @@
class CRecordSSDocInfoAtom : public CUnknownRecord
{
SColorAtom m_oColor;
INT m_nRestartTime;
SHORT m_nStartSlide;
SHORT m_nEndSlide;
USHORT m_pName[32];
USHORT m_nFlags;
public:
SColorAtom m_oPenColor;
_INT32 m_nRestartTime;
short m_nStartSlide;
short m_nEndSlide;
std::wstring m_pName;
bool fAutoAdvance;
bool fWillSkipBuilds;
bool fUseSlideRange;
bool fDocUseNamedShow;
bool fBrowseMode;
bool fKioskMode;
bool fWillSkipNarration;
bool fLoopContinuously;
bool fHideScrollBar;
CRecordSSDocInfoAtom()
{
}
@ -54,7 +61,32 @@ public:
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
return CUnknownRecord::ReadFromStream(oHeader, pStream);
m_oHeader = oHeader;
unsigned short flags;
unsigned char nm[64];
NSStreamReader::Read(pStream, m_oPenColor);
m_nRestartTime = StreamUtils::ReadLONG(pStream);
m_nStartSlide = StreamUtils::ReadSHORT(pStream);
m_nEndSlide = StreamUtils::ReadSHORT(pStream);
pStream->read(nm, 64);
m_pName = NSFile::CUtf8Converter::GetWStringFromUTF16((unsigned short*)nm, 32);
flags = StreamUtils::ReadWORD(pStream);
fAutoAdvance = GETBIT(flags, 15);
fWillSkipBuilds = GETBIT(flags, 14);
fUseSlideRange = GETBIT(flags, 13);
fDocUseNamedShow = GETBIT(flags, 12);
fBrowseMode = GETBIT(flags, 11);
fKioskMode = GETBIT(flags, 10);
fWillSkipNarration = GETBIT(flags, 9);
fLoopContinuously = GETBIT(flags, 8);
fHideScrollBar = GETBIT(flags, 7);
unsigned short unused = StreamUtils::ReadWORD(pStream);
}
};

View File

@ -34,10 +34,9 @@
class CRecordSSlideLayoutAtom : public CUnknownRecord
{
public:
INT m_nGeom;
BYTE m_pPlaceHolderID[8];
public:
CRecordSSlideLayoutAtom()
{

View File

@ -34,9 +34,8 @@
class CRecordShapeFlags10Atom : public CUnknownRecord
{
BYTE m_nFlags;
public:
BYTE m_nFlags;
CRecordShapeFlags10Atom()
{

View File

@ -34,9 +34,8 @@
class CRecordShapeFlagsAtom : public CUnknownRecord
{
BYTE m_nFlags;
public:
BYTE m_nFlags;
CRecordShapeFlagsAtom()
{

View File

@ -32,23 +32,56 @@
#pragma once
#include "../Reader/Records.h"
class CRecordSlideColorSchemeAtom : public CUnknownRecord
class CRecordSplitMenuColorRecord: public CUnknownRecord
{
public:
SColorAtom m_arColors[8];
SColorAtom m_oFillColor;
SColorAtom m_oLineColor;
SColorAtom m_oShadowColor;
SColorAtom m_o3DColor;
CRecordSlideColorSchemeAtom()
CRecordSplitMenuColorRecord()
{
}
~CRecordSlideColorSchemeAtom()
~CRecordSplitMenuColorRecord()
{
}
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
return CUnknownRecord::ReadFromStream(oHeader, pStream);
m_oHeader = oHeader;
NSStreamReader::Read(pStream, m_oFillColor);
NSStreamReader::Read(pStream, m_oLineColor);
NSStreamReader::Read(pStream, m_oShadowColor);
NSStreamReader::Read(pStream, m_o3DColor);
}
};
typedef CRecordSlideColorSchemeAtom CRecordSchemeListElementColorSchemeAtom;
class CRecordMostRecentlyUserColors : public CUnknownRecord
{
public:
std::vector<SColorAtom> m_oColors;
CRecordMostRecentlyUserColors()
{
}
~CRecordMostRecentlyUserColors()
{
}
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
m_oHeader = oHeader;
for (int i = 0; i < m_oHeader.RecLen / 4; i++)
{
SColorAtom color;
NSStreamReader::Read(pStream, color);
m_oColors.push_back(color);
}
}
};

View File

@ -34,13 +34,12 @@
class CRecordZoomViewInfoAtom : public CUnknownRecord
{
public:
SScalingAtom m_oCurScale;
SPointAtom m_nOrigin;
BOOL1 m_bUseVarScale;
BOOL1 m_bDraftMode;
public:
CRecordZoomViewInfoAtom()
{

View File

@ -296,7 +296,7 @@ namespace NSPresentationEditor
}
CColor(_UINT32 rgb)
{
CreateColor(rgb);
(*this) = CreateColor(rgb);
}
CColor& operator =(const CColor& oSrc)
{

View File

@ -99,21 +99,22 @@ void NSPresentationEditor::CShapeElement::SetupTextProperties(CSlide* pSlide, CT
{
if ((pRun->fontRef.is_init()) && (pRun->fontRef.get() < pTheme->m_arFonts.size()))
{
pRun->FontProperties = new CFontProperties();
pRun->FontProperties->SetFont(pTheme->m_arFonts[pRun->fontRef.get()]);
pRun->font.font = new CFontProperty(pTheme->m_arFonts[pRun->fontRef.get()]);
if (1 < pRun->fontRef.get())
pRun->fontRef.reset();
//if (1 < pRun->fontRef.get())
// pRun->fontRef.reset();
}
if ((pRun->EAFontRef.is_init()) && (pRun->EAFontRef.get() < pTheme->m_arFonts.size()))
if ((pRun->ansiFontRef.is_init()) && (pRun->ansiFontRef.get() < pTheme->m_arFonts.size()))
{
pRun->FontPropertiesEA = new CFontProperties();
pRun->FontPropertiesEA->SetFont(pTheme->m_arFonts[pRun->EAFontRef.get()]);
pRun->font.ansi = new CFontProperty(pTheme->m_arFonts[pRun->ansiFontRef.get()]);
}
if ((pRun->SymbolFontRef.is_init()) && (pRun->SymbolFontRef.get() < pTheme->m_arFonts.size()))
if ((pRun->eaFontRef.is_init()) && (pRun->eaFontRef.get() < pTheme->m_arFonts.size()))
{
pRun->FontPropertiesSym = new CFontProperties();
pRun->FontPropertiesSym->SetFont(pTheme->m_arFonts[pRun->SymbolFontRef.get()]);
pRun->font.ea = new CFontProperty(pTheme->m_arFonts[pRun->eaFontRef.get()]);
}
if ((pRun->symbolFontRef.is_init()) && (pRun->symbolFontRef.get() < pTheme->m_arFonts.size()))
{
pRun->font.sym = new CFontProperty(pTheme->m_arFonts[pRun->symbolFontRef.get()]);
}
}
}

View File

@ -246,14 +246,12 @@ namespace NSPresentationEditor
if (m_arParagraphs[nIndexP].m_oPFRun.bulletFontRef.is_init())
{
m_arParagraphs[nIndexP].m_oPFRun.bulletFontProperties.reset();
m_arParagraphs[nIndexP].m_oPFRun.bulletFontProperties = new CFontProperties();
int ref = m_arParagraphs[nIndexP].m_oPFRun.bulletFontRef.get();
if (ref < (int)pTheme->m_arFonts.size())
{
m_arParagraphs[nIndexP].m_oPFRun.bulletFontProperties->SetFont(pTheme->m_arFonts[ref]);
m_arParagraphs[nIndexP].m_oPFRun.bulletFontProperties.reset();
m_arParagraphs[nIndexP].m_oPFRun.bulletFontProperties = new CFontProperty(pTheme->m_arFonts[ref]);
}
}

View File

@ -81,71 +81,76 @@ namespace NSPresentationEditor
return _T("<") + strName + _T(">") + std::to_wstring((unsigned int)prop->GetLONG()) + _T("</") + strName + _T(">");
}
class CFontProperty
{
public:
std::wstring Name;
BYTE PitchFamily;
BYTE Charset;
CFontProperty() : PitchFamily(0), Charset(0) {}
CFontProperty(const CFontProperty& oSrc)
{
*this = oSrc;
}
CFontProperty& operator=(const CFontProperty& oSrc)
{
Name = oSrc.Name;
PitchFamily = oSrc.PitchFamily;
Charset = oSrc.Charset;
return *this;
}
};
class CFontProperties
{
public:
BYTE FontNameProp;
std::wstring strFontName;
BYTE nPitchFamily;
bool bFontFixed;
BYTE nFontCharset;
CFontProperties() : FontNameProp(0), bFontFixed(false), nPitchFamily(0), nFontCharset(0)
{
}
~CFontProperties()
{
}
CFontProperties () {}
CFontProperties(const CFontProperties& oSrc)
{
*this = oSrc;
}
CFontProperties& operator=(const CFontProperties& oSrc)
{
FontNameProp = oSrc.FontNameProp;
strFontName = oSrc.strFontName;
nPitchFamily = oSrc.nPitchFamily;
bFontFixed = oSrc.bFontFixed;
nFontCharset = oSrc.nFontCharset;
font = oSrc.font;
ansi = oSrc.ansi;
ea = oSrc.ea;
sym = oSrc.sym;
return *this;
}
AVSINLINE void SetFont(CFont& oFont)
{
strFontName = oFont.Name;
nPitchFamily = oFont.PitchFamily;
bFontFixed = oFont.Monospace;
nFontCharset = oFont.Charset;
}
NSCommon::nullable_base<CFontProperty> font;
NSCommon::nullable_base<CFontProperty> ea;
NSCommon::nullable_base<CFontProperty> sym;
NSCommon::nullable_base<CFontProperty> ansi;
};
class CTextCFRun
{
public:
NSCommon::nullable_base<bool> FontBold;
NSCommon::nullable_base<bool> FontItalic;
NSCommon::nullable_base<bool> FontUnderline;
NSCommon::nullable_base<bool> FontStrikeout;
NSCommon::nullable_base<bool> FontShadow;
NSCommon::nullable_base<bool> FontBold;
NSCommon::nullable_base<bool> FontItalic;
NSCommon::nullable_base<bool> FontUnderline;
NSCommon::nullable_base<bool> FontStrikeout;
NSCommon::nullable_base<bool> FontShadow;
NSCommon::nullable_base<WORD> fontRef; // fontRef
NSCommon::nullable_base<WORD> EAFontRef; // eaFontRef
NSCommon::nullable_base<WORD> AnsiFontRef; // ansiFontRef
NSCommon::nullable_base<WORD> SymbolFontRef; // SymbolFontRef
NSCommon::nullable_base<WORD> fontRef; // fontRef
NSCommon::nullable_base<WORD> eaFontRef; // eaFontRef
NSCommon::nullable_base<WORD> ansiFontRef; // ansiFontRef
NSCommon::nullable_base<WORD> symbolFontRef; // symFontRef
NSCommon::nullable_base<double> BaseLineOffset; // baseline offset
NSCommon::nullable_base<double> BaseLineOffset; // baseline offset
NSCommon::nullable_base<CColor> Color; // text color
NSCommon::nullable_base<WORD> Size; // font size
NSCommon::nullable_base<CColor> Color; // text color
NSCommon::nullable_base<WORD> Size; // font size
NSCommon::nullable_base<WORD> Cap; // 0 - none, 1 - TEXT, 2 - text
NSCommon::nullable_base<WORD> Language;
NSCommon::nullable_base<WORD> Cap; // 0 - none, 1 - TEXT, 2 - text
NSCommon::nullable_base<WORD> Language;
NSCommon::nullable_base<CFontProperties> FontProperties;
NSCommon::nullable_base<CFontProperties> FontPropertiesEA;
NSCommon::nullable_base<CFontProperties> FontPropertiesSym;
CFontProperties font;
CTextCFRun()
{
@ -162,17 +167,20 @@ namespace NSPresentationEditor
FontStrikeout = oSrc.FontStrikeout;
FontShadow = oSrc.FontShadow;
fontRef = oSrc.fontRef;
EAFontRef = oSrc.EAFontRef;
AnsiFontRef = oSrc.AnsiFontRef;
SymbolFontRef = oSrc.SymbolFontRef;
fontRef = oSrc.fontRef;
eaFontRef = oSrc.eaFontRef;
ansiFontRef = oSrc.ansiFontRef;
symbolFontRef = oSrc.symbolFontRef;
BaseLineOffset = oSrc.BaseLineOffset;
Color = oSrc.Color;
Size = oSrc.Size;
FontProperties = oSrc.FontProperties;
font = oSrc.font;
font.ea = oSrc.font.ea;
font.ansi = oSrc.font.ansi;
font.sym = oSrc.font.sym;
Cap = oSrc.Cap;
@ -186,28 +194,28 @@ namespace NSPresentationEditor
AVSINLINE void ApplyBefore(const CTextCFRun& oSrc)
{
if (!FontBold.is_init()) FontBold = oSrc.FontBold;
if (!FontItalic.is_init()) FontItalic = oSrc.FontItalic;
if (!FontUnderline.is_init()) FontUnderline = oSrc.FontUnderline;
if (!FontStrikeout.is_init()) FontStrikeout = oSrc.FontStrikeout;
if (!FontShadow.is_init()) FontShadow = oSrc.FontShadow;
if (!FontBold.is_init()) FontBold = oSrc.FontBold;
if (!FontItalic.is_init()) FontItalic = oSrc.FontItalic;
if (!FontUnderline.is_init()) FontUnderline = oSrc.FontUnderline;
if (!FontStrikeout.is_init()) FontStrikeout = oSrc.FontStrikeout;
if (!FontShadow.is_init()) FontShadow = oSrc.FontShadow;
if (!fontRef.is_init()) fontRef = oSrc.fontRef;
if (!eaFontRef.is_init()) eaFontRef = oSrc.eaFontRef;
if (!ansiFontRef.is_init()) ansiFontRef = oSrc.ansiFontRef;
if (!symbolFontRef.is_init()) symbolFontRef = oSrc.symbolFontRef;
if (!BaseLineOffset.is_init()) BaseLineOffset = oSrc.BaseLineOffset;
if (!Color.is_init()) Color = oSrc.Color;
if (!Size.is_init()) Size = oSrc.Size;
if (!Cap.is_init()) Cap = oSrc.Cap;
if (!fontRef.is_init()) fontRef = oSrc.fontRef;
if (!EAFontRef.is_init()) EAFontRef = oSrc.EAFontRef;
if (!AnsiFontRef.is_init()) AnsiFontRef = oSrc.AnsiFontRef;
if (!SymbolFontRef.is_init()) SymbolFontRef = oSrc.SymbolFontRef;
if (!font.font.is_init()) font.font = oSrc.font.font;
if (!font.ansi.is_init()) font.ansi = oSrc.font.ansi;
if (!font.ea.is_init()) font.ea = oSrc.font.ea;
if (!font.sym.is_init()) font.sym = oSrc.font.sym;
if (!BaseLineOffset.is_init()) BaseLineOffset = oSrc.BaseLineOffset;
if (!Color.is_init()) Color = oSrc.Color;
if (!Size.is_init()) Size = oSrc.Size;
if (!Cap.is_init()) Cap = oSrc.Cap;
if (!FontProperties.is_init()) FontProperties = oSrc.FontProperties;
if (!Language.is_init()) Language = oSrc.Language;
if (!Language.is_init()) Language = oSrc.Language;
}
AVSINLINE void ApplyAfter(const CTextCFRun& oSrc)
{
@ -223,26 +231,25 @@ namespace NSPresentationEditor
fontRef = oSrc.fontRef;
bFontRefSetUp = true;
}
if (oSrc.EAFontRef.is_init()) EAFontRef = oSrc.EAFontRef;
if (oSrc.AnsiFontRef.is_init()) AnsiFontRef = oSrc.AnsiFontRef;
if (oSrc.SymbolFontRef.is_init()) SymbolFontRef = oSrc.SymbolFontRef;
if (oSrc.eaFontRef.is_init()) eaFontRef = oSrc.eaFontRef;
if (oSrc.ansiFontRef.is_init()) ansiFontRef = oSrc.ansiFontRef;
if (oSrc.symbolFontRef.is_init()) symbolFontRef = oSrc.symbolFontRef;
if (oSrc.BaseLineOffset.is_init()) BaseLineOffset = oSrc.BaseLineOffset;
if (oSrc.Color.is_init()) Color = oSrc.Color;
if (oSrc.Size.is_init()) Size = oSrc.Size;
if (oSrc.Cap.is_init()) Cap = oSrc.Cap;
if (oSrc.Language.is_init()) Language = oSrc.Language;
if (oSrc.font.ansi.is_init()) font.ansi = oSrc.font.ansi;
if (oSrc.font.ea.is_init()) font.ea = oSrc.font.ea;
if (oSrc.font.sym.is_init()) font.sym = oSrc.font.sym;
if (oSrc.font.font.is_init()) font.font = oSrc.font.font;
//{
// FontProperties = oSrc.FontProperties;
// if (!bFontRefSetUp)
// fontRef.reset();
//}
if (oSrc.BaseLineOffset.is_init()) BaseLineOffset = oSrc.BaseLineOffset;
if (oSrc.Color.is_init()) Color = oSrc.Color;
if (oSrc.Size.is_init()) Size = oSrc.Size;
if (oSrc.Cap.is_init()) Cap = oSrc.Cap;
if (oSrc.FontProperties.is_init())
{
FontProperties = oSrc.FontProperties;
if (!bFontRefSetUp)
fontRef.reset();
}
if (oSrc.Language.is_init())
Language = oSrc.Language;
}
};
@ -251,30 +258,30 @@ namespace NSPresentationEditor
{
public:
NSCommon::nullable_base<bool> hasBullet;
NSCommon::nullable_base<bool> hasBullet;
NSCommon::nullable_base<WORD> bulletFontRef;
NSCommon::nullable_base<WORD> bulletSize;
NSCommon::nullable_base<WCHAR> bulletChar;
NSCommon::nullable_base<CColor> bulletColor;
NSCommon::nullable_base<CFontProperties> bulletFontProperties;
NSCommon::nullable_base<WORD> bulletFontRef;
NSCommon::nullable_base<WORD> bulletSize;
NSCommon::nullable_base<WCHAR> bulletChar;
NSCommon::nullable_base<CColor> bulletColor;
NSCommon::nullable_base<CFontProperty> bulletFontProperties;
NSCommon::nullable_base<WORD> textAlignment;
NSCommon::nullable_base<LONG> lineSpacing;
NSCommon::nullable_base<LONG> spaceBefore;
NSCommon::nullable_base<LONG> spaceAfter;
NSCommon::nullable_base<LONG> leftMargin;
NSCommon::nullable_base<LONG> indent;
NSCommon::nullable_base<LONG> defaultTabSize;
NSCommon::nullable_base<WORD> textAlignment;
NSCommon::nullable_base<LONG> lineSpacing;
NSCommon::nullable_base<LONG> spaceBefore;
NSCommon::nullable_base<LONG> spaceAfter;
NSCommon::nullable_base<LONG> leftMargin;
NSCommon::nullable_base<LONG> indent;
NSCommon::nullable_base<LONG> defaultTabSize;
std::vector<std::pair<int, int>> tabStops;
std::vector<std::pair<int, int>> tabStops;
bool bIsOneLine;
bool bIsOneLine;
NSCommon::nullable_base<WORD> fontAlign;
NSCommon::nullable_base<WORD> textDirection;
NSCommon::nullable_base<WORD> fontAlign;
NSCommon::nullable_base<WORD> textDirection;
NSCommon::nullable_base<WORD> wrapFlags;
NSCommon::nullable_base<WORD> wrapFlags;
CTextPFRun() : bIsOneLine(false)
{
@ -673,7 +680,6 @@ namespace NSPresentationEditor
public:
NSCommon::nullable_base<CTextStyleLevel> m_pLevels[10];
public:
CTextStyles()
{
for (int i = 0; i < 10; ++i)

View File

@ -47,10 +47,13 @@ namespace NSPresentationEditor
std::multimap<int,CElementPtr> m_mapPlaceholders;
std::vector<CColor> m_arColorScheme;
std::vector<CFont> m_arFonts;
std::vector<CFontProperty> m_arFonts;
std::vector<CBrush> m_arBrushes;
std::vector<CPen> m_arPens;
CFontProperties majorFont;
CFontProperties minorFont;
std::vector<CEffects> m_arEffects;
CTextStyles m_pStyles[g_ThemeTextStylesCount];
std::vector<CLayoutPtr> m_arLayouts;
@ -147,26 +150,49 @@ namespace NSPresentationEditor
oColor.A = m_arColorScheme[oColor.m_lSchemeIndex].A;
}
}
if (pLevel->m_oCFRun.fontRef.IsInit())
{
WORD lFontIndex = pLevel->m_oCFRun.fontRef.get();
if (lFontIndex < (WORD)m_arFonts.size())
{
if (!pLevel->m_oCFRun.FontProperties.is_init())
pLevel->m_oCFRun.FontProperties = new CFontProperties();
pLevel->m_oCFRun.FontProperties->SetFont(m_arFonts[lFontIndex]);
}
}
if (pLevel->m_oPFRun.bulletFontRef.IsInit())
{
WORD lFontIndex = pLevel->m_oPFRun.bulletFontRef.get();
if (lFontIndex < (WORD)m_arFonts.size())
{
if (!pLevel->m_oPFRun.bulletFontProperties.is_init())
pLevel->m_oPFRun.bulletFontProperties = new CFontProperties();
pLevel->m_oPFRun.bulletFontProperties->SetFont(m_arFonts[lFontIndex]);
pLevel->m_oPFRun.bulletFontProperties = new CFontProperty(m_arFonts[lFontIndex]);
}
}
if (pLevel->m_oCFRun.fontRef.IsInit())
{
WORD lFontIndex = pLevel->m_oCFRun.fontRef.get();
if (lFontIndex < (WORD)m_arFonts.size())
{
if (!pLevel->m_oCFRun.font.font.is_init())
pLevel->m_oCFRun.font.font = new CFontProperty(m_arFonts[lFontIndex]);
}
}
if (pLevel->m_oCFRun.eaFontRef.IsInit())
{
WORD lFontIndex = pLevel->m_oCFRun.eaFontRef.get();
if (lFontIndex < (WORD)m_arFonts.size())
{
if (!pLevel->m_oCFRun.font.ea.is_init())
pLevel->m_oCFRun.font.ea = new CFontProperty(m_arFonts[lFontIndex]);
}
}
if (pLevel->m_oCFRun.ansiFontRef.IsInit())
{
WORD lFontIndex = pLevel->m_oCFRun.ansiFontRef.get();
if (lFontIndex < (WORD)m_arFonts.size())
{
if (!pLevel->m_oCFRun.font.ansi.is_init())
pLevel->m_oCFRun.font.ansi = new CFontProperty(m_arFonts[lFontIndex]);
}
}
if (pLevel->m_oCFRun.symbolFontRef.IsInit())
{
WORD lFontIndex = pLevel->m_oCFRun.symbolFontRef.get();
if (lFontIndex < (WORD)m_arFonts.size())
{
if (!pLevel->m_oCFRun.font.sym.is_init())
pLevel->m_oCFRun.font.sym = new CFontProperty(m_arFonts[lFontIndex]);
}
}
}
@ -213,10 +239,35 @@ namespace NSPresentationEditor
WORD lFontIndex = pLevel->m_oCFRun.fontRef.get();
if (lFontIndex < (WORD)pTheme->m_arFonts.size())
{
if (!pLevel->m_oCFRun.FontProperties.is_init())
pLevel->m_oCFRun.FontProperties = new CFontProperties();
pLevel->m_oCFRun.FontProperties->SetFont(pTheme->m_arFonts[lFontIndex]);
if (!pLevel->m_oCFRun.font.font.is_init())
pLevel->m_oCFRun.font.font = new CFontProperty(pTheme->m_arFonts[lFontIndex]);
}
}
if (pLevel->m_oCFRun.eaFontRef.IsInit())
{
WORD lFontIndex = pLevel->m_oCFRun.eaFontRef.get();
if (lFontIndex < (WORD)pTheme->m_arFonts.size())
{
if (!pLevel->m_oCFRun.font.ea.is_init())
pLevel->m_oCFRun.font.ea = new CFontProperty(pTheme->m_arFonts[lFontIndex]);
}
}
if (pLevel->m_oCFRun.ansiFontRef.IsInit())
{
WORD lFontIndex = pLevel->m_oCFRun.ansiFontRef.get();
if (lFontIndex < (WORD)pTheme->m_arFonts.size())
{
if (!pLevel->m_oCFRun.font.ansi.is_init())
pLevel->m_oCFRun.font.ansi = new CFontProperty(pTheme->m_arFonts[lFontIndex]);
}
}
if (pLevel->m_oCFRun.symbolFontRef.IsInit())
{
WORD lFontIndex = pLevel->m_oCFRun.symbolFontRef.get();
if (lFontIndex < (WORD)pTheme->m_arFonts.size())
{
if (!pLevel->m_oCFRun.font.sym.is_init())
pLevel->m_oCFRun.font.sym = new CFontProperty(pTheme->m_arFonts[lFontIndex]);
}
}
}

View File

@ -1091,16 +1091,28 @@ namespace NSBinPptxRW
}
void SetRequiredDefaultsCore()
{
std::wstring sCreator = NSSystemUtils::GetEnvVariable(NSSystemUtils::gc_EnvCreator);
if (!sCreator.empty())
m_oCore.creator = sCreator;
if (!m_oCore.creator.IsInit())
{
std::wstring sCreator = NSSystemUtils::GetEnvVariable(NSSystemUtils::gc_EnvCreator);
if (!sCreator.empty())
m_oCore.creator = sCreator;
}
if (!m_oCore.created.IsInit())
{
std::wstring sCreated = NSSystemUtils::GetEnvVariable(NSSystemUtils::gc_EnvCreated);
if (!sCreated.empty())
m_oCore.created = sCreated;
}
std::wstring sLastModifiedBy = NSSystemUtils::GetEnvVariable(NSSystemUtils::gc_EnvLastModifiedBy);
if (!sLastModifiedBy.empty())
m_oCore.lastModifiedBy = sLastModifiedBy;
std::wstring sModified = NSSystemUtils::GetEnvVariable(NSSystemUtils::gc_EnvModified);
if (!sModified.empty())
m_oCore.modified = sModified;
}
void CreateDefaultCore()
{
m_oCore.creator = _T("");
// m_oCore.creator = _T("");
m_oCore.lastModifiedBy = _T("");
}
void CreateDefaultViewProps()

View File

@ -171,6 +171,7 @@ namespace PPTX
}
virtual void fromPPTY(NSBinPptxRW::CBinaryFileReader* pReader)
{
pReader->Skip(1); // type
LONG _end_rec = pReader->GetPos() + pReader->GetLong() + 4;
pReader->Skip(1); // start attributes

View File

@ -136,6 +136,7 @@ namespace PPTX
}
virtual void fromPPTY(NSBinPptxRW::CBinaryFileReader* pReader)
{
pReader->Skip(1); // type
LONG _end_rec = pReader->GetPos() + pReader->GetLong() + 4;
pReader->Skip(1); // start attributes
@ -224,8 +225,18 @@ namespace PPTX
pWriter->WriteNodeValue2(_T("cp:lastModifiedBy"), lastModifiedBy);
pWriter->WriteNodeValue2(_T("cp:revision"), revision);
pWriter->WriteNodeValue2(_T("cp:lastPrinted"), lastPrinted);
pWriter->WriteNodeValue2(_T("dcterms:created xsi:type=\"dcterms:W3CDTF\""), created);
pWriter->WriteNodeValue2(_T("dcterms:modified xsi:type=\"dcterms:W3CDTF\""), modified);
if (created.IsInit())
{
pWriter->WriteNodeBegin(_T("dcterms:created xsi:type=\"dcterms:W3CDTF\""));
pWriter->WriteStringXML(*created);
pWriter->WriteNodeEnd(_T("dcterms:created"));
}
if (modified.IsInit())
{
pWriter->WriteNodeBegin(_T("dcterms:modified xsi:type=\"dcterms:W3CDTF\""));
pWriter->WriteStringXML(*modified);
pWriter->WriteNodeEnd(_T("dcterms:modified"));
}
pWriter->WriteNodeValue2(_T("cp:category"), revision);
pWriter->WriteNodeValue2(_T("cp:contentStatus"), revision);
pWriter->WriteNodeValue2(_T("cp:version"), revision);

View File

@ -36,8 +36,6 @@
namespace XLS
{
// Logical representation of End record in BIFF8
class End: public BiffRecord
{
BIFF_RECORD_DEFINE_TYPE_INFO(End)
@ -48,10 +46,9 @@ public:
BaseObjectPtr clone();
void readFields(CFRecord& record);
static const ElementType type = typeEnd;
static const ElementType type = typeEnd;
};

View File

@ -39,12 +39,10 @@ Frame::Frame()
{
}
Frame::~Frame()
{
}
BaseObjectPtr Frame::clone()
{
return BaseObjectPtr(new Frame(*this));
@ -56,8 +54,8 @@ void Frame::readFields(CFRecord& record)
unsigned short flags;
record >> frt >> flags;
fAutoSize = GETBIT(flags, 0);
fAutoPosition = GETBIT(flags, 1);
fAutoSize = GETBIT(flags, 0);
fAutoPosition = GETBIT(flags, 1);
}
} // namespace XLS

View File

@ -36,8 +36,6 @@
namespace XLS
{
// Logical representation of Frame record in BIFF8
class Frame: public BiffRecord
{
BIFF_RECORD_DEFINE_TYPE_INFO(Frame)
@ -47,11 +45,10 @@ public:
~Frame();
BaseObjectPtr clone();
void readFields(CFRecord& record);
static const ElementType type = typeFrame;
static const ElementType type = typeFrame;
//-----------------------------
_UINT16 frt;

View File

@ -34,6 +34,22 @@
namespace XLS
{
std::wstring default_marker_color[] =
{
L"000080", L"FF00FF", L"FFFF00", L"00FFFF", L"800080", L"800000", L"808000", L"0000FF", L"00CCFF", L"CCFFFF",
L"CCFFCC", L"FFFF99", L"99CCFF", L"FF99CC", L"CC99FF", L"FFCC99", L"3366FF", L"33CCCC", L"99CC00", L"FFCC00",
L"FF9900", L"FF6600", L"666699", L"969696", L"336600", L"339966", L"330000", L"333300", L"993300", L"993366",
L"333399", L"000000", L"FFFFFF", L"FF0000", L"00FF00", L"0000FF", L"FFFF00", L"FF00FF", L"00FFFF", L"800000",
L"800000", L"800000", L"808000", L"800080", L"808000", L"C0C0C0", L"808080", L"9999FF", L"993366", L"FFFFCC",
L"CCFFFF", L"660066", L"FF8080", L"0066CC", L"CCCCFF",
//todoooo - подглядеть какие в мс далее
L"000080", L"FF00FF", L"FFFF00", L"00FFFF", L"800080", L"800000", L"808000", L"0000FF", L"00CCFF", L"CCFFFF",
L"CCFFCC", L"FFFF99", L"99CCFF", L"FF99CC", L"CC99FF", L"FFCC99", L"3366FF", L"33CCCC", L"99CC00", L"FFCC00",
L"FF9900", L"FF6600", L"666699", L"969696", L"336600", L"339966", L"330000", L"333300", L"993300", L"993366",
L"333399", L"000000", L"FFFFFF", L"FF0000", L"00FF00", L"0000FF", L"FFFF00", L"FF00FF", L"00FFFF", L"800000",
L"800000", L"800000", L"808000", L"800080", L"808000", L"C0C0C0", L"808080", L"9999FF", L"993366", L"FFFFCC",
L"CCFFFF", L"660066", L"FF8080", L"0066CC", L"CCCCFF"
};
MarkerFormat::MarkerFormat()
{
@ -60,8 +76,11 @@ void MarkerFormat::readFields(CFRecord& record)
fNotShowInt = GETBIT(flags, 4);
fNotShowBrd = GETBIT(flags, 5);
}
int MarkerFormat::serialize(std::wostream & _stream)
{
return serialize(_stream, -1);
}
int MarkerFormat::serialize(std::wostream & _stream, int index)
{
CP_XML_WRITER(_stream)
{
@ -87,14 +106,17 @@ int MarkerFormat::serialize(std::wostream & _stream)
}
if (imk > 0)
{
CP_XML_NODE(L"c:size") { CP_XML_ATTR(L"val", miSize / 20); }
CP_XML_NODE(L"c:size")
{
CP_XML_ATTR(L"val", (false == fAuto) ? miSize / 20 : 5);
}
CP_XML_NODE(L"c:spPr")
{
CP_XML_NODE(L"a:solidFill")
{
CP_XML_NODE(L"a:srgbClr")
{
CP_XML_ATTR(L"val", rgbBack.strRGB);
CP_XML_ATTR(L"val", (false == fAuto || index < 0) ? rgbBack.strRGB : default_marker_color[index]);
}
}
CP_XML_NODE(L"a:ln")
@ -103,7 +125,7 @@ int MarkerFormat::serialize(std::wostream & _stream)
{
CP_XML_NODE(L"a:srgbClr")
{
CP_XML_ATTR(L"val", rgbFore.strRGB);
CP_XML_ATTR(L"val", (false == fAuto || index < 0) ? rgbFore.strRGB : default_marker_color[index]);
}
}
CP_XML_NODE(L"a:prstDash") { CP_XML_ATTR(L"val", L"solid"); }

View File

@ -37,8 +37,6 @@
namespace XLS
{
// Logical representation of MarkerFormat record in BIFF8
class MarkerFormat: public BiffRecord
{
BIFF_RECORD_DEFINE_TYPE_INFO(MarkerFormat)
@ -48,10 +46,10 @@ public:
~MarkerFormat();
BaseObjectPtr clone();
void readFields(CFRecord& record);
int serialize(std::wostream & _stream, int index);
int serialize(std::wostream & _stream);
//-----------------------------
LongRGB rgbFore;

View File

@ -82,6 +82,12 @@ int Pos::serialize(std::wostream & _stream)
bAutoPosition = Frame_->fAutoPosition;
bAutoSize = Frame_->fAutoSize;
}
if (m_iLayoutTarget > 0) //cem31.xls
{
bAutoPosition = false;
bAutoSize = false;
}
double x = x1 / 4000.;
double y = y1 / 4000.;

View File

@ -289,7 +289,7 @@ int SERIESFORMAT::serialize_parent(std::wostream & _stream, CHARTFORMATS* chart_
{
if (series_ss)
{
series_ss->serialize(CP_XML_STREAM(), CHART_TYPE_Bar);
series_ss->serialize(CP_XML_STREAM(), CHART_TYPE_Bar, -1);
//тут не надо рисовать маркеры .. а вот fill можно - он просто отбрасывается - по "првильному" нужно выделить отдельный тип чисто линий
}
//CP_XML_NODE(L"c:spPr")
@ -305,11 +305,21 @@ int SERIESFORMAT::serialize_parent(std::wostream & _stream, CHARTFORMATS* chart_
case 2: CP_XML_ATTR (L"val", L"log"); break;
case 3: CP_XML_ATTR (L"val", L"power"); break;
case 4: CP_XML_ATTR (L"val", L"movingAvg"); break;
case 0: //CP_XML_ATTR (L"val", L"poly"); break;
default: CP_XML_ATTR (L"val", L"linear"); break;
case 0:
default:
{
if (trendline->ordUser >1) CP_XML_ATTR (L"val", L"poly");
else CP_XML_ATTR (L"val", L"linear");
}break;
}
}
if (trendline->ordUser >1)
{
CP_XML_NODE(L"c:order")
{
CP_XML_ATTR (L"val" , trendline->ordUser);
}
}
CP_XML_NODE(L"c:dispRSqr")
{
CP_XML_ATTR (L"val" , (bool)trendline->fRSquared);

View File

@ -31,23 +31,22 @@
*/
#include "SS.h"
#include <Logic/Biff_records/DataFormat.h>
#include <Logic/Biff_records/Begin.h>
#include <Logic/Biff_records/Chart3DBarShape.h>
#include <Logic/Biff_records/LineFormat.h>
#include <Logic/Biff_records/AreaFormat.h>
#include <Logic/Biff_records/PieFormat.h>
#include <Logic/Biff_records/SerFmt.h>
#include <Logic/Biff_records/MarkerFormat.h>
#include <Logic/Biff_records/AttachedLabel.h>
#include <Logic/Biff_records/End.h>
#include "GELFRAME.h"
#include "SHAPEPROPS.h"
#include "CRTMLFRT.h"
#include <Logic/Biff_unions/GELFRAME.h>
#include <Logic/Biff_unions/SHAPEPROPS.h>
#include <Logic/Biff_unions/CRTMLFRT.h>
#include <Logic/Biff_records/StartObject.h>
#include <Logic/Biff_records/EndObject.h>
#include"../Biff_records/DataFormat.h"
#include"../Biff_records/Begin.h"
#include"../Biff_records/Chart3DBarShape.h"
#include"../Biff_records/LineFormat.h"
#include"../Biff_records/AreaFormat.h"
#include"../Biff_records/PieFormat.h"
#include"../Biff_records/SerFmt.h"
#include"../Biff_records/MarkerFormat.h"
#include"../Biff_records/AttachedLabel.h"
#include"../Biff_records/End.h"
#include"../Biff_records/StartObject.h"
#include"../Biff_records/EndObject.h"
namespace XLS
{
@ -64,14 +63,14 @@ namespace XLS
std::wstring default_series_line_color[] =
{
L"800000", L"FF00FF", L"FFFF00", L"00FFFF", L"800080", L"800000", L"808000", L"0000FF", L"00CCFF", L"CCFFFF",
L"000080", L"FF00FF", L"FFFF00", L"00FFFF", L"800080", L"800000", L"808000", L"0000FF", L"00CCFF", L"CCFFFF",
L"CCFFCC", L"FFFF99", L"99CCFF", L"FF99CC", L"CC99FF", L"FFCC99", L"3366FF", L"33CCCC", L"99CC00", L"FFCC00",
L"FF9900", L"FF6600", L"666699", L"969696", L"336600", L"339966", L"330000", L"333300", L"993300", L"993366",
L"333399", L"000000", L"FFFFFF", L"FF0000", L"00FF00", L"0000FF", L"FFFF00", L"FF00FF", L"00FFFF", L"800000",
L"800000", L"800000", L"808000", L"800080", L"808000", L"C0C0C0", L"808080", L"9999FF", L"993366", L"FFFFCC",
L"CCFFFF", L"660066", L"FF8080", L"0066CC", L"CCCCFF",
//todoooo - подглядеть какие в мс далее
L"800000", L"FF00FF", L"FFFF00", L"00FFFF", L"800080", L"800000", L"808000", L"0000FF", L"00CCFF", L"CCFFFF",
L"000080", L"FF00FF", L"FFFF00", L"00FFFF", L"800080", L"800000", L"808000", L"0000FF", L"00CCFF", L"CCFFFF",
L"CCFFCC", L"FFFF99", L"99CCFF", L"FF99CC", L"CC99FF", L"FFCC99", L"3366FF", L"33CCCC", L"99CC00", L"FFCC00",
L"FF9900", L"FF6600", L"666699", L"969696", L"336600", L"339966", L"330000", L"333300", L"993300", L"993366",
L"333399", L"000000", L"FFFFFF", L"FF0000", L"00FF00", L"0000FF", L"FFFF00", L"FF00FF", L"00FFFF", L"800000",
@ -234,7 +233,8 @@ void SS::apply_crt_ss (BaseObjectPtr crt_ss)
SS * ss_common = dynamic_cast<SS*>(crt_ss.get());
if (ss_common == NULL) return;
if (ss_common->m_PieFormat && !m_PieFormat) m_PieFormat = ss_common->m_PieFormat;
if (ss_common->m_PieFormat && !m_PieFormat) m_PieFormat = ss_common->m_PieFormat;
if (ss_common->m_MarkerFormat && !m_MarkerFormat) m_MarkerFormat = ss_common->m_MarkerFormat;
//.... ???
}
@ -327,8 +327,9 @@ int SS::serialize_default(std::wostream & _stream, int series_type, int ind )
int SS::serialize(std::wostream & _stream, int series_type, int indPt)
{
DataFormat *series_data_format = dynamic_cast<DataFormat *>(m_DataFormat.get());
SerFmt *series_format = dynamic_cast<SerFmt *> (m_SerFmt.get());
DataFormat *series_data_format = dynamic_cast<DataFormat*> (m_DataFormat.get());
SerFmt *series_format = dynamic_cast<SerFmt*> (m_SerFmt.get());
MarkerFormat *marker_format = dynamic_cast<MarkerFormat*> (m_MarkerFormat.get());
int ind = series_data_format->iss;
@ -383,31 +384,26 @@ int SS::serialize(std::wostream & _stream, int series_type, int indPt)
else
{
//генерация (automatic)
if ( series_type != CHART_TYPE_Line || m_is3D == true ) //line & !3dLine
if (series_type == CHART_TYPE_Scatter || series_type == CHART_TYPE_Stock)
{
}
else if ( series_type != CHART_TYPE_Line || m_is3D == true ) //line & !3dLine
ind = 31; //black
CP_XML_NODE(L"a:ln")
{
CP_XML_ATTR(L"w", 12700);//single
if (series_type == CHART_TYPE_Scatter || series_type == CHART_TYPE_Stock)
//points only - todooo сделать дефолтовые точки ala 95 стиль & stork
CP_XML_NODE(L"a:solidFill")
{
m_isAutoLine = false;
//CP_XML_NODE(L"a:noFill");
CP_XML_NODE(L"a:srgbClr")
{
CP_XML_ATTR(L"val", default_series_line_color[ind]);
}
}
else
CP_XML_NODE(L"a:prstDash")
{
CP_XML_NODE(L"a:solidFill")
{
CP_XML_NODE(L"a:srgbClr")
{
CP_XML_ATTR(L"val", default_series_line_color[ind]);
}
}
CP_XML_NODE(L"a:prstDash")
{
CP_XML_ATTR(L"val", L"solid");
}
CP_XML_ATTR(L"val", L"solid");
}
}
}
@ -416,15 +412,25 @@ int SS::serialize(std::wostream & _stream, int series_type, int indPt)
if (m_PieFormat && (series_type == CHART_TYPE_Doughnut ||
series_type == CHART_TYPE_BopPop ||
series_type == CHART_TYPE_Pie))
{
m_PieFormat->serialize(_stream);
}
if (m_MarkerFormat && series_type != CHART_TYPE_Bubble &&
if (marker_format && series_type != CHART_TYPE_Bubble &&
series_type != CHART_TYPE_Bar &&
series_type != CHART_TYPE_BopPop )
m_MarkerFormat->serialize(_stream);
{
marker_format->serialize(_stream, ind);
}
else if (/*series_type == CHART_TYPE_Line ||*/ series_type == CHART_TYPE_Scatter)
{
CP_XML_NODE(L"c:marker");
CP_XML_NODE(L"c:marker")
{
CP_XML_NODE(L"c:symbol")
{
CP_XML_ATTR(L"val", L"none");
}
}
}
}

View File

@ -66,7 +66,7 @@ public:
void apply_crt_ss (BaseObjectPtr crt_ss);
int serialize (std::wostream & _stream, int series_type, int ind = -1);
int serialize (std::wostream & _stream, int series_type, int indPt);
int serialize_default (std::wostream & _stream, int series_type, int ind);
int serialize2 (std::wostream & _stream, int series_type);
@ -90,8 +90,7 @@ public:
_CP_OPT(bool) m_isVaried;
bool m_isAutoFill;
bool m_isAutoLine;
bool m_isAutoLine;
};
} // namespace XLS

View File

@ -791,7 +791,8 @@ int ChartSheetSubstream::serialize_plot_area (std::wostream & _stream)
{
CRT * crt = dynamic_cast<CRT*>(parent0->m_arCRT[0].get());
if ((crt) && ( crt->m_iChartType == CHART_TYPE_Radar ||
crt->m_iChartType == CHART_TYPE_RadarArea))//еще?
crt->m_iChartType == CHART_TYPE_RadarArea ||
crt->m_iChartType == CHART_TYPE_Scatter))//еще?
{
PlotAreaPos->m_iLayoutTarget = 2; //inner
}
@ -898,7 +899,7 @@ int ChartSheetSubstream::serialize_plot_area (std::wostream & _stream)
series->m_arAI[0]->serialize(CP_XML_STREAM());
series_ss->serialize(CP_XML_STREAM(), crt->m_iChartType);
series_ss->serialize(CP_XML_STREAM(), crt->m_iChartType, -1);
serialize_dPt(CP_XML_STREAM(), it->second[i], crt, (std::max)(ser->cValx, ser->cValy));//+bubbles

View File

@ -223,17 +223,30 @@ namespace OOX
}
void SetDefaults()
{
m_sCreator = L"";
// m_sCreator = L"";
m_sLastModifiedBy = L"";
}
void SetRequiredDefaults()
{
std::wstring sCreator = NSSystemUtils::GetEnvVariable(NSSystemUtils::gc_EnvCreator);
if (!sCreator.empty())
m_sCreator = sCreator;
if (m_sCreator.IsInit())
{
std::wstring sCreator = NSSystemUtils::GetEnvVariable(NSSystemUtils::gc_EnvCreator);
if (!sCreator.empty())
m_sCreator = sCreator;
}
if (m_sCreated.IsInit())
{
std::wstring sCreated = NSSystemUtils::GetEnvVariable(NSSystemUtils::gc_EnvCreated);
if (!sCreated.empty())
m_sCreated = sCreated;
}
std::wstring sLastModifiedBy = NSSystemUtils::GetEnvVariable(NSSystemUtils::gc_EnvLastModifiedBy);
if (!sLastModifiedBy.empty())
m_sLastModifiedBy = sLastModifiedBy;
std::wstring sModified = NSSystemUtils::GetEnvVariable(NSSystemUtils::gc_EnvModified);
if (!sModified.empty())
m_sModified = sModified;
}
void SetCreator(std::wstring sVal)
{

View File

@ -44,7 +44,9 @@ namespace NSSystemUtils
static const wchar_t* gc_EnvMethodEncrypt = L"METHOD_CRYPT";
static const wchar_t* gc_EnvMethodEncryptDefault = L"Strong";
static const wchar_t* gc_EnvCreator = L"CREATOR";
static const wchar_t* gc_EnvCreated = L"CREATED";
static const wchar_t* gc_EnvLastModifiedBy = L"LAST_MODIFIED_BY";
static const wchar_t* gc_EnvModified = L"MODIFIED";
KERNEL_DECL std::wstring GetEnvVariable(const std::wstring& strName);
}

View File

@ -481,8 +481,6 @@ namespace NSStructures
int FaceIndex;
public:
int IsEqual(CFont* pFont)
{
if (NULL == pFont)
@ -535,21 +533,18 @@ namespace NSStructures
CharSpace = 0.0;
FaceIndex = 0;
}
LONG GetTextDecorationStyle()
{
if ((0 == Underline) && (0 == Strikeout))
return 0;
if ((1 == Underline) && (0 == Strikeout))
return 1;
if ((0 == Underline) && (1 == Strikeout))
return 2;
if ((1 == Underline) && (1 == Strikeout))
return 3;
return 4;
}
public:
LONG GetTextDecorationStyle()
{
if ((0 == Underline) && (0 == Strikeout))
return 0;
if ((1 == Underline) && (0 == Strikeout))
return 1;
if ((0 == Underline) && (1 == Strikeout))
return 2;
if ((1 == Underline) && (1 == Strikeout))
return 3;
return 4;
}
CFont()
{

View File

@ -81,11 +81,19 @@
- (int)txt2doct_bin:(NSString*)nsFrom nsTo:(NSString*)nsTo nsTemp:(NSString*)nsTemp nsFontPath:(NSString*)nsFontPath;
- (int)txt2docx:(NSString*)nsFrom nsTo:(NSString*)nsTo nsTemp:(NSString*)nsTemp nsFontPath:(NSString*)nsFontPath;
- (int)txt2docx_dir:(NSString*)nsFrom nsTo:(NSString*)nsTo nsTemp:(NSString*)nsTemp nsFontPath:(NSString*)nsFontPath;
- (int)sdk_docx2odt:(NSString*)nsFrom nsTo:(NSString*)nsTo nsTemp:(NSString*)nsTemp nsFontPath:(NSString*)nsFontPath;
- (int)sdk_xlsx2ods:(NSString*)nsFrom nsTo:(NSString*)nsTo nsTemp:(NSString*)nsTemp nsFontPath:(NSString*)nsFontPath;
- (int)sdk_pptx2odp:(NSString*)nsFrom nsTo:(NSString*)nsTo nsTemp:(NSString*)nsTemp nsFontPath:(NSString*)nsFontPath;
- (int)sdk_odf2oox:(NSString*)nsFrom nsTo:(NSString*)nsTo nsTemp:(NSString*)nsTemp nsFontPath:(NSString*)nsFontPath;
- (int)sdk_odt2docx:(NSString*)nsFrom nsTo:(NSString*)nsTo nsTemp:(NSString*)nsTemp nsFontPath:(NSString*)nsFontPath;
- (int)sdk_ods2xlsx:(NSString*)nsFrom nsTo:(NSString*)nsTo nsTemp:(NSString*)nsTemp nsFontPath:(NSString*)nsFontPath;
- (int)sdk_odp2pptx:(NSString*)nsFrom nsTo:(NSString*)nsTo nsTemp:(NSString*)nsTemp nsFontPath:(NSString*)nsFontPath;
- (int)sdk_odf2oox_dir:(NSString*)nsFrom nsTo:(NSString*)nsTo nsTemp:(NSString*)nsTemp nsFontPath:(NSString*)nsFontPath;
- (int)sdk_dir2zip:(NSString*)nsFrom nsTo:(NSString*)nsTo;

View File

@ -471,6 +471,44 @@ static std::wstring nsstring_to_wstring(NSString* nsstring)
return NExtractTools::txt2doct_bin(from, to, temp, oInputParams);
}
- (int)txt2docx:(NSString*)nsFrom nsTo:(NSString*)nsTo nsTemp:(NSString*)nsTemp nsFontPath:(NSString*)nsFontPath {
std::wstring from = nsstring_to_wstring(nsFrom);
std::wstring to = nsstring_to_wstring(nsTo);
std::wstring temp = nsstring_to_wstring(nsTemp);
NExtractTools::InputParams oInputParams;
oInputParams.m_sFontDir = new std::wstring(nsstring_to_wstring(nsFontPath));
oInputParams.m_bIsNoBase64 = new bool(self.isNoBase64);
if (self.encoding != nil) {
oInputParams.m_nCsvTxtEncoding = new int(self.encoding.intValue);
}
oInputParams.m_nFormatFrom = new int(AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT);
oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX);
return NExtractTools::txt2docx(from, to, temp, oInputParams);
}
- (int)txt2docx_dir:(NSString*)nsFrom nsTo:(NSString*)nsTo nsTemp:(NSString*)nsTemp nsFontPath:(NSString*)nsFontPath {
std::wstring from = nsstring_to_wstring(nsFrom);
std::wstring to = nsstring_to_wstring(nsTo);
std::wstring temp = nsstring_to_wstring(nsTemp);
NExtractTools::InputParams oInputParams;
oInputParams.m_sFontDir = new std::wstring(nsstring_to_wstring(nsFontPath));
oInputParams.m_bIsNoBase64 = new bool(self.isNoBase64);
if (self.encoding != nil) {
oInputParams.m_nCsvTxtEncoding = new int(self.encoding.intValue);
}
oInputParams.m_nFormatFrom = new int(AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT);
oInputParams.m_nFormatTo = new int(AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX);
return NExtractTools::txt2doct_bin(from, to, temp, oInputParams);
}
- (int)sdk_docx2odt:(NSString*)nsFrom nsTo:(NSString*)nsTo nsTemp:(NSString*)nsTemp nsFontPath:(NSString*)nsFontPath {
std::wstring from = nsstring_to_wstring(nsFrom);
std::wstring to = nsstring_to_wstring(nsTo);
@ -532,6 +570,53 @@ static std::wstring nsstring_to_wstring(NSString* nsstring)
return NExtractTools::odf2oox(from, to, temp, oInputParams);
}
- (int)sdk_odt2docx:(NSString*)nsFrom nsTo:(NSString*)nsTo nsTemp:(NSString*)nsTemp nsFontPath:(NSString*)nsFontPath {
std::wstring from = nsstring_to_wstring(nsFrom);
std::wstring to = nsstring_to_wstring(nsTo);
std::wstring temp = nsstring_to_wstring(nsTemp);
NExtractTools::InputParams oInputParams;
oInputParams.m_sFontDir = new std::wstring(nsstring_to_wstring(nsFontPath));
oInputParams.m_bIsNoBase64 = new bool(self.isNoBase64);
if (self.password) {
oInputParams.m_sPassword = new std::wstring(nsstring_to_wstring(self.password));
}
return NExtractTools::odf2oox(from, to, temp, oInputParams);
}
- (int)sdk_ods2xlsx:(NSString*)nsFrom nsTo:(NSString*)nsTo nsTemp:(NSString*)nsTemp nsFontPath:(NSString*)nsFontPath {
std::wstring from = nsstring_to_wstring(nsFrom);
std::wstring to = nsstring_to_wstring(nsTo);
std::wstring temp = nsstring_to_wstring(nsTemp);
NExtractTools::InputParams oInputParams;
oInputParams.m_sFontDir = new std::wstring(nsstring_to_wstring(nsFontPath));
oInputParams.m_bIsNoBase64 = new bool(self.isNoBase64);
if (self.password) {
oInputParams.m_sPassword = new std::wstring(nsstring_to_wstring(self.password));
}
return NExtractTools::odf2oox(from, to, temp, oInputParams);
}
- (int)sdk_odp2pptx:(NSString*)nsFrom nsTo:(NSString*)nsTo nsTemp:(NSString*)nsTemp nsFontPath:(NSString*)nsFontPath {
std::wstring from = nsstring_to_wstring(nsFrom);
std::wstring to = nsstring_to_wstring(nsTo);
std::wstring temp = nsstring_to_wstring(nsTemp);
NExtractTools::InputParams oInputParams;
oInputParams.m_sFontDir = new std::wstring(nsstring_to_wstring(nsFontPath));
oInputParams.m_bIsNoBase64 = new bool(self.isNoBase64);
if (self.password) {
oInputParams.m_sPassword = new std::wstring(nsstring_to_wstring(self.password));
}
return NExtractTools::odf2oox(from, to, temp, oInputParams);
}
- (int)sdk_odf2oox_dir:(NSString*)nsFrom nsTo:(NSString*)nsTo nsTemp:(NSString*)nsTemp nsFontPath:(NSString*)nsFontPath {
std::wstring from = nsstring_to_wstring(nsFrom);
std::wstring to = nsstring_to_wstring(nsTo);

View File

@ -53,12 +53,32 @@
self.fonts = @"/System/Library/Fonts";
self.temp = NSTemporaryDirectory();
[self testTXT];
[self testCSV];
[self testDOCX];
[self testXLSX];
[self testODT];
}
- (void)testTXT {
{
NSLog(@"==================== TXT TO DOCX ====================");
NSString* from = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"txt"];
NSString* to = [NSString stringWithFormat:@"%@test_txt_to_docx.docx", self.temp];
X2tConverter* conv = [[X2tConverter alloc]init];
conv.isNoBase64 = YES;
int result = [conv txt2docx:from nsTo:to nsTemp:self.temp nsFontPath:self.fonts];
if (result != 0) {
NSLog(@"ERROR TXT TO DOCX : %d",result);
} else {
NSLog(@"odt output : %@", to);
}
}
}
- (void)testDOCX {
{
NSLog(@"==================== OPEN EMPTY DOCX ====================");
@ -66,7 +86,7 @@
NSString *path = [[NSBundle mainBundle] pathForResource:@"empty" ofType:@"docx"];
NSString* fullFileName = path;
NSString* fullFileNameTo = [NSString stringWithFormat:@"%@empty.bin", NSTemporaryDirectory()];
NSString* fullFileNameTo = [NSString stringWithFormat:@"%@empty.bin", self.temp];
X2tConverter* conv = [[X2tConverter alloc]init];
conv.isNoBase64 = YES;
@ -84,7 +104,7 @@
NSString *path = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"docx"];
NSString* fullFileName = path;
NSString* fullFileNameTo = [NSString stringWithFormat:@"%@demo.bin", NSTemporaryDirectory()];
NSString* fullFileNameTo = [NSString stringWithFormat:@"%@demo.bin", self.temp];
X2tConverter* conv = [[X2tConverter alloc]init];
conv.isNoBase64 = YES;
@ -102,7 +122,7 @@
NSString *path = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"docx"];
NSString* fullFileName = path;
NSString* fullFileNameTo = [NSString stringWithFormat:@"%@demo.bin", NSTemporaryDirectory()];
NSString* fullFileNameTo = [NSString stringWithFormat:@"%@demo.bin", self.temp];
X2tConverter* conv = [[X2tConverter alloc]init];
conv.isNoBase64 = YES;
@ -110,8 +130,8 @@
NSLog(@"%@",fullFileNameTo);
NSString* docxOut = [NSString stringWithFormat:@"%@document.docx", NSTemporaryDirectory()];
NSString* outTemp = [NSString stringWithFormat:@"%@OUT_TEMP", NSTemporaryDirectory()];
NSString* docxOut = [NSString stringWithFormat:@"%@document.docx", self.temp];
NSString* outTemp = [NSString stringWithFormat:@"%@OUT_TEMP", self.temp];
[self createDirectory:outTemp];
[self clearDirectory:outTemp];
@ -131,7 +151,7 @@
NSString *path = [[NSBundle mainBundle] pathForResource:@"empty" ofType:@"xlsx"];
NSString* fullFileName = path;
NSString* fullFileNameTo = [NSString stringWithFormat:@"%@empty.bin", NSTemporaryDirectory()];
NSString* fullFileNameTo = [NSString stringWithFormat:@"%@empty.bin", self.temp];
X2tConverter* conv = [[X2tConverter alloc]init];
conv.isNoBase64 = YES;
@ -149,7 +169,7 @@
NSString *path = [[NSBundle mainBundle] pathForResource:@"price" ofType:@"xlsx"];
NSString* fullFileName = path;
NSString* fullFileNameTo = [NSString stringWithFormat:@"%@price.bin", NSTemporaryDirectory()];
NSString* fullFileNameTo = [NSString stringWithFormat:@"%@price.bin", self.temp];
X2tConverter* conv = [[X2tConverter alloc]init];
conv.isNoBase64 = YES;
@ -167,7 +187,7 @@
NSString *path = [[NSBundle mainBundle] pathForResource:@"crypted" ofType:@"xlsx"];
NSString* fullFileName = path;
NSString* fullFileNameTo = [NSString stringWithFormat:@"%@crypted.bin", NSTemporaryDirectory()];
NSString* fullFileNameTo = [NSString stringWithFormat:@"%@crypted.bin", self.temp];
X2tConverter* conv = [[X2tConverter alloc]init];
conv.password = @"555";
@ -188,7 +208,7 @@
NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"csv"];
NSString* fullFileName = path;
NSString* fullFileNameTo = [NSString stringWithFormat:@"%@test.bin", NSTemporaryDirectory()];
NSString* fullFileNameTo = [NSString stringWithFormat:@"%@test.bin", self.temp];
X2tConverter* conv = [[X2tConverter alloc]init];
conv.isNoBase64 = YES;
@ -209,12 +229,11 @@
NSLog(@"==================== ODT TO DOCX ====================");
NSString* from = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"odt"];
NSString* to = [NSString stringWithFormat:@"%@test_odt_to_docx.docx", NSTemporaryDirectory()];
NSString* temp = NSTemporaryDirectory();
NSString* to = [NSString stringWithFormat:@"%@test_odt_to_docx.docx", self.temp];
X2tConverter* conv = [[X2tConverter alloc]init];
conv.isNoBase64 = YES;
int result = [conv sdk_odf2oox:from nsTo:to nsTemp:temp nsFontPath:self.fonts];
int result = [conv sdk_odf2oox:from nsTo:to nsTemp:self.temp nsFontPath:self.fonts];
if (result != 0) {
NSLog(@"ERROR ODT TO DOCX : %d",result);
} else {
@ -226,12 +245,11 @@
NSLog(@"==================== DOCX TO ODT ====================");
NSString* from = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"docx"];
NSString* to = [NSString stringWithFormat:@"%@docx_to_odt_test.odt", NSTemporaryDirectory()];
NSString* temp = NSTemporaryDirectory();
NSString* to = [NSString stringWithFormat:@"%@docx_to_odt_test.odt", self.temp];
X2tConverter* conv = [[X2tConverter alloc]init];
conv.isNoBase64 = YES;
int result = [conv sdk_docx2odt:from nsTo:to nsTemp:temp nsFontPath:self.fonts];
int result = [conv sdk_docx2odt:from nsTo:to nsTemp:self.temp nsFontPath:self.fonts];
if (result != 0) {
NSLog(@"ERROR DOCX TO ODT : %d",result);
} else {
@ -243,12 +261,11 @@
NSLog(@"==================== ODS TO XLSX ====================");
NSString* from = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"ods"];
NSString* to = [NSString stringWithFormat:@"%@test_ods_to_xlsx.xlsx", NSTemporaryDirectory()];
NSString* temp = NSTemporaryDirectory();
NSString* to = [NSString stringWithFormat:@"%@test_ods_to_xlsx.xlsx", self.temp];
X2tConverter* conv = [[X2tConverter alloc]init];
conv.isNoBase64 = YES;
int result = [conv sdk_odf2oox:from nsTo:to nsTemp:temp nsFontPath:self.fonts];
int result = [conv sdk_odf2oox:from nsTo:to nsTemp:self.temp nsFontPath:self.fonts];
if (result != 0) {
NSLog(@"ERROR ODS TO XLSX : %d",result);
} else {
@ -260,12 +277,11 @@
NSLog(@"==================== XLSX TO ODS ====================");
NSString* from = [[NSBundle mainBundle] pathForResource:@"price" ofType:@"xlsx"];
NSString* to = [NSString stringWithFormat:@"%@xlsx_to_ods_test.ods", NSTemporaryDirectory()];
NSString* temp = NSTemporaryDirectory();
NSString* to = [NSString stringWithFormat:@"%@xlsx_to_ods_test.ods", self.temp];
X2tConverter* conv = [[X2tConverter alloc]init];
conv.isNoBase64 = YES;
int result = [conv sdk_xlsx2ods:from nsTo:to nsTemp:temp nsFontPath:self.fonts];
int result = [conv sdk_xlsx2ods:from nsTo:to nsTemp:self.temp nsFontPath:self.fonts];
if (result != 0) {
NSLog(@"ERROR XLSX TO ODS : %d",result);
} else {
@ -277,12 +293,11 @@
NSLog(@"==================== ODP TO PPTX ====================");
NSString* from = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"odp"];
NSString* to = [NSString stringWithFormat:@"%@test_odp_to_pptx.pptx", NSTemporaryDirectory()];
NSString* temp = NSTemporaryDirectory();
NSString* to = [NSString stringWithFormat:@"%@test_odp_to_pptx.pptx", self.temp];
X2tConverter* conv = [[X2tConverter alloc]init];
conv.isNoBase64 = YES;
int result = [conv sdk_odf2oox:from nsTo:to nsTemp:temp nsFontPath:self.fonts];
int result = [conv sdk_odf2oox:from nsTo:to nsTemp:self.temp nsFontPath:self.fonts];
if (result != 0) {
NSLog(@"ERROR ODP TO PPTX : %d",result);
} else {
@ -294,12 +309,11 @@
NSLog(@"==================== PPTX TO ODP ====================");
NSString* from = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"pptx"];
NSString* to = [NSString stringWithFormat:@"%@pptx_to_odp_test.odp", NSTemporaryDirectory()];
NSString* temp = NSTemporaryDirectory();
NSString* to = [NSString stringWithFormat:@"%@pptx_to_odp_test.odp", self.temp];
X2tConverter* conv = [[X2tConverter alloc]init];
conv.isNoBase64 = YES;
int result = [conv sdk_pptx2odp:from nsTo:to nsTemp:temp nsFontPath:self.fonts];
int result = [conv sdk_pptx2odp:from nsTo:to nsTemp:self.temp nsFontPath:self.fonts];
if (result != 0) {
NSLog(@"ERROR PPTX TO ODP : %d",result);
} else {

View File

@ -0,0 +1,233 @@
1 China[a] Asia Eastern Asia 1,403,500,365 1,409,517,397 +0.4%
2 India Asia Southern Asia 1,324,171,354 1,339,180,127 +1.1%
3 United States Americas Northern America 322,179,605 324,459,463 +0.7%
4 Indonesia Asia South-eastern Asia 261,115,456 263,991,379 +1.1%
5 Brazil Americas South America 207,652,865 209,288,278 +0.8%
6 Pakistan Asia Southern Asia 193,203,476 197,015,955 +2.0%
7 Nigeria Africa Western Africa 185,989,640 190,886,311 +2.6%
8 Bangladesh Asia Southern Asia 162,951,560 164,669,751 +1.1%
9 Russia Europe Eastern Europe 146,864,513 143,989,754 2.0%
10 Mexico Americas Central America 127,540,423 129,163,276 +1.3%
11 Japan Asia Eastern Asia 127,748,513 127,484,450 0.2%
12 Ethiopia Africa Eastern Africa 102,403,196 104,957,438 +2.5%
13 Philippines Asia South-eastern Asia 103,320,222 104,918,090 +1.5%
14 Egypt Africa Northern Africa 95,688,681 97,553,151 +1.9%
15 Vietnam Asia South-eastern Asia 94,569,072 95,540,800 +1.0%
16 Germany Europe Western Europe 81,914,672 82,114,224 +0.2%
17 Democratic Republic of the Congo Africa Middle Africa 78,736,153 81,339,988 +3.3%
18 Iran Asia Southern Asia 80,277,428 81,162,788 +1.1%
19 Turkey Asia Western Asia 79,512,426 80,745,020 +1.6%
20 Thailand Asia South-eastern Asia 68,863,514 69,037,513 +0.3%
21 United Kingdom Europe Northern Europe 65,788,574 66,181,585 +0.6%
22 France[b] Europe Western Europe 64,720,690 64,979,548 +0.4%
23 Italy Europe Southern Europe 59,429,938 59,359,900 0.1%
24 Tanzania[c] Africa Eastern Africa 55,572,201 57,310,019 +3.1%
25 South Africa Africa Southern Africa 56,015,473 56,717,156 +1.3%
26 Myanmar Asia South-eastern Asia 52,885,223 53,370,609 +0.9%
27 South Korea Asia Eastern Asia 50,791,919 50,982,212 +0.4%
28 Colombia Americas South America 48,653,419 49,065,615 +0.8%
29 Kenya Africa Eastern Africa 48,461,567 49,699,862 +2.6%
30 Spain[d] Europe Southern Europe 46,347,576 46,354,321 0.0%
31 Argentina Americas South America 43,847,430 44,271,041 +1.0%
32 Ukraine[e] Europe Eastern Europe 44,438,625 44,222,947 0.5%
33 Uganda Africa Eastern Africa 41,487,965 42,862,958 +3.3%
34 Algeria Africa Northern Africa 40,606,052 41,318,142 +1.8%
35 Sudan Africa Northern Africa 39,578,828 40,533,330 +2.4%
36 Iraq Asia Western Asia 37,202,572 38,274,618 +2.9%
37 Poland Europe Eastern Europe 38,224,410 38,170,712 0.1%
38 Canada Americas Northern America 36,289,822 36,624,199 +0.9%
39 Morocco Africa Northern Africa 35,276,786 35,739,580 +1.3%
40 Afghanistan Asia Southern Asia 34,656,032 35,530,081 +2.5%
41 Saudi Arabia Asia Western Asia 32,275,687 32,938,213 +2.1%
42 Peru Americas South America 31,773,839 32,165,485 +1.2%
43 Venezuela Americas South America 31,568,179 31,977,065 +1.3%
44 Uzbekistan Asia Central Asia 31,446,795 31,910,641 +1.5%
45 Malaysia[f] Asia South-eastern Asia 31,187,265 31,624,264 +1.4%
46 Angola Africa Middle Africa 28,813,463 29,784,193 +3.4%
47 Mozambique Africa Eastern Africa 28,829,476 29,668,834 +2.9%
48 Nepal Asia Southern Asia 28,982,771 29,304,998 +1.1%
49 Ghana Africa Western Africa 28,206,728 28,833,629 +2.2%
50 Yemen Asia Western Asia 27,584,213 28,250,420 +2.4%
51 Madagascar Africa Eastern Africa 24,894,551 25,570,895 +2.7%
52 North Korea Asia Eastern Asia 25,368,620 25,490,965 +0.5%
53 Australia[g] Oceania Australia and New Zealand 24,125,848 24,450,561 +1.3%
54 Ivory Coast Africa Western Africa 23,695,919 24,294,750 +2.5%
55 Cameroon Africa Middle Africa 23,439,189 24,053,727 +2.6%
56 Taiwan[h] Asia Eastern Asia 23,556,706 23,626,456 +0.3%
57 Niger Africa Western Africa 20,672,987 21,477,348 +3.9%
58 Sri Lanka Asia Southern Asia 20,798,492 20,876,917 +0.4%
59 Romania Europe Eastern Europe 19,778,083 19,679,306 0.5%
60 Burkina Faso Africa Western Africa 18,646,433 19,193,382 +2.9%
61 Malawi Africa Eastern Africa 18,091,575 18,622,104 +2.9%
62 Mali Africa Western Africa 17,994,837 18,541,980 +3.0%
63 Syria Asia Western Asia 18,430,453 18,269,868 0.9%
64 Kazakhstan Asia Central Asia 17,987,736 18,204,499 +1.2%
65 Chile Americas South America 17,909,754 18,054,726 +0.8%
66 Zambia Africa Eastern Africa 16,591,390 17,094,130 +3.0%
67 Netherlands Europe Western Europe 16,987,330 17,035,938 +0.3%
68 Guatemala Americas Central America 16,582,469 16,913,503 +2.0%
69 Ecuador Americas South America 16,385,068 16,624,858 +1.5%
70 Zimbabwe Africa Eastern Africa 16,150,362 16,529,904 +2.4%
71 Cambodia Asia South-eastern Asia 15,762,370 16,005,373 +1.5%
72 Senegal Africa Western Africa 15,411,614 15,850,567 +2.8%
73 Chad Africa Middle Africa 14,452,543 14,899,994 +3.1%
74 Somalia Africa Eastern Africa 14,317,996 14,742,523 +3.0%
75 Guinea Africa Western Africa 12,395,924 12,717,176 +2.6%
76 South Sudan Africa Eastern Africa 12,230,730 12,575,714 +2.8%
77 Rwanda Africa Eastern Africa 11,917,508 12,208,407 +2.4%
78 Tunisia Africa Northern Africa 11,403,248 11,532,127 +1.1%
79 Cuba Americas Caribbean 11,475,982 11,484,636 +0.1%
80 Belgium Europe Western Europe 11,358,379 11,429,336 +0.6%
81 Benin Africa Western Africa 10,872,298 11,175,692 +2.8%
82 Greece Europe Southern Europe 11,183,716 11,159,773 0.2%
83 Bolivia Americas South America 10,887,882 11,051,600 +1.5%
84 Haiti Americas Caribbean 10,847,334 10,981,229 +1.2%
85 Burundi Africa Eastern Africa 10,524,117 10,864,245 +3.2%
86 Dominican Republic Americas Caribbean 10,648,791 10,766,998 +1.1%
87 Czech Republic Europe Eastern Europe 10,610,947 10,618,303 +0.1%
88 Portugal Europe Southern Europe 10,371,627 10,329,506 0.4%
89 Sweden Europe Northern Europe 9,837,533 9,910,701 +0.7%
90 Azerbaijan[i] Asia Western Asia 9,725,376 9,827,589 +1.1%
91 Hungary Europe Eastern Europe 9,753,281 9,721,559 0.3%
92 Jordan Asia Western Asia 9,455,802 9,702,353 +2.6%
93 Belarus Europe Eastern Europe 9,480,042 9,468,338 0.1%
94 United Arab Emirates Asia Western Asia 9,269,612 9,400,145 +1.4%
95 Honduras Americas Central America 9,112,867 9,265,067 +1.7%
96 Tajikistan Asia Central Asia 8,734,951 8,921,343 +2.1%
97 Serbia[j] Europe Southern Europe 8,820,083 8,790,574 0.3%
98 Austria Europe Western Europe 8,712,137 8,735,453 +0.3%
99 Switzerland Europe Western Europe 8,401,739 8,476,005 +0.9%
100 Israel Asia Western Asia 8,191,828 8,321,570 +1.6%
101 Papua New Guinea Oceania Melanesia 8,084,991 8,251,162 +2.1%
102 Togo Africa Western Africa 7,606,374 7,797,694 +2.5%
103 Sierra Leone Africa Western Africa 7,396,190 7,557,212 +2.2%
104 Hong Kong Asia Eastern Asia 7,302,843 7,364,883 +0.8%
105 Bulgaria Europe Eastern Europe 7,131,494 7,084,571 0.7%
106 Laos Asia South-eastern Asia 6,758,353 6,858,160 +1.5%
107 Paraguay Americas South America 6,725,308 6,811,297 +1.3%
108 El Salvador Americas Central America 6,344,722 6,377,853 +0.5%
109 Libya Africa Northern Africa 6,293,253 6,374,616 +1.3%
110 Nicaragua Americas Central America 6,149,928 6,217,581 +1.1%
111 Lebanon Asia Western Asia 6,006,668 6,082,357 +1.3%
112 Kyrgyzstan Asia Central Asia 5,955,734 6,045,117 +1.5%
113 Turkmenistan Asia Central Asia 5,662,544 5,758,075 +1.7%
114 Denmark Europe Northern Europe 5,711,870 5,733,551 +0.4%
115 Singapore Asia South-eastern Asia 5,622,455 5,708,844 +1.5%
116 Finland[k] Europe Northern Europe 5,503,132 5,523,231 +0.4%
117 Slovakia Europe Eastern Europe 5,444,218 5,447,662 +0.1%
118 Norway[l] Europe Northern Europe 5,254,694 5,305,383 +1.0%
119 Congo Africa Middle Africa 5,125,821 5,260,750 +2.6%
120 Eritrea Africa Eastern Africa 4,954,645 5,068,831 +2.3%
121 Palestine[m] Asia Western Asia 4,790,705 4,920,724 +2.7%
122 Costa Rica Americas Central America 4,857,274 4,905,769 +1.0%
123 Ireland Europe Northern Europe 4,726,078 4,761,657 +0.8%
124 Liberia Africa Western Africa 4,613,823 4,731,906 +2.6%
125 New Zealand Oceania Australia and New Zealand 4,660,833 4,705,818 +1.0%
126 Central African Republic Africa Middle Africa 4,594,621 4,659,080 +1.4%
127 Oman Asia Western Asia 4,424,762 4,636,262 +4.8%
128 Mauritania Africa Western Africa 4,301,018 4,420,184 +2.8%
129 Croatia Europe Southern Europe 4,213,265 4,189,353 0.6%
130 Kuwait Asia Western Asia 4,052,584 4,136,528 +2.1%
131 Panama Americas Central America 4,034,119 4,098,587 +1.6%
132 Moldova[n] Europe Eastern Europe 4,059,608 4,051,212 0.2%
133 Georgia[o] Asia Western Asia 3,925,405 3,912,061 0.3%
134 Puerto Rico Americas Caribbean 3,667,903 3,663,131 0.1%
135 Bosnia and Herzegovina Europe Southern Europe 3,516,816 3,507,017 0.3%
136 Uruguay Americas South America 3,444,006 3,456,750 +0.4%
137 Mongolia Asia Eastern Asia 3,027,398 3,075,647 +1.6%
138 Armenia Asia Western Asia 2,924,816 2,930,450 +0.2%
139 Albania Europe Southern Europe 2,926,348 2,930,187 +0.1%
140 Jamaica Americas Caribbean 2,881,355 2,890,299 +0.3%
141 Lithuania Europe Northern Europe 2,908,249 2,890,297 0.6%
142 Qatar Asia Western Asia 2,569,804 2,639,211 +2.7%
143 Namibia Africa Southern Africa 2,479,713 2,533,794 +2.2%
144 Botswana Africa Southern Africa 2,250,260 2,291,661 +1.8%
145 Lesotho Africa Southern Africa 2,203,821 2,233,339 +1.3%
146 The Gambia Africa Western Africa 2,038,501 2,100,568 +3.0%
147 Republic of Macedonia Europe Southern Europe 2,081,206 2,083,160 +0.1%
148 Slovenia Europe Southern Europe 2,077,862 2,079,976 +0.1%
149 Gabon Africa Middle Africa 1,979,786 2,025,137 +2.3%
150 Latvia Europe Northern Europe 1,970,530 1,949,670 1.1%
151 Guinea-Bissau Africa Western Africa 1,815,698 1,861,283 +2.5%
152 Bahrain Asia Western Asia 1,425,171 1,492,584 +4.7%
153 Trinidad and Tobago Americas Caribbean 1,364,962 1,369,125 +0.3%
154 Eswatini (Swaziland) Africa Southern Africa 1,343,098 1,367,254 +1.8%
155 Estonia Europe Northern Europe 1,312,442 1,309,632 0.2%
156 East Timor Asia South-eastern Asia 1,268,671 1,296,311 +2.2%
157 Equatorial Guinea Africa Middle Africa 1,221,490 1,267,689 +3.8%
158 Mauritius[p] Africa Eastern Africa 1,262,132 1,265,138 +0.2%
159 Cyprus[q] Asia Western Asia 1,170,125 1,179,551 +0.8%
160 Djibouti Africa Eastern Africa 942,333 956,985 +1.6%
161 Fiji Oceania Melanesia 898,760 905,502 +0.8%
162 Réunion Africa Eastern Africa 869,925 876,562 +0.8%
163 Comoros Africa Eastern Africa 795,601 813,912 +2.3%
164 Bhutan Asia Southern Asia 797,765 807,610 +1.2%
165 Guyana Americas South America 773,303 777,859 +0.6%
166 Montenegro Europe Southern Europe 628,615 628,960 +0.1%
167 Macau Asia Eastern Asia 612,167 622,567 +1.7%
168 Solomon Islands Oceania Melanesia 599,419 611,343 +2.0%
169 Luxembourg Europe Western Europe 575,747 583,455 +1.3%
170 Suriname Americas South America 558,368 563,402 +0.9%
171 Western Sahara Africa Northern Africa 538,755 552,628 +2.6%
172 Cape Verde Africa Western Africa 539,560 546,388 +1.3%
173 Guadeloupe[r] Americas Caribbean 449,975 449,568 0.1%
174 Maldives Asia Southern Asia 427,756 436,330 +2.0%
175 Malta Europe Southern Europe 429,362 430,835 +0.3%
176 Brunei Asia South-eastern Asia 423,196 428,697 +1.3%
177 Bahamas Americas Caribbean 391,232 395,361 +1.1%
178 Martinique Americas Caribbean 385,103 384,896 0.1%
179 Belize Americas Central America 366,954 374,681 +2.1%
180 Iceland Europe Northern Europe 332,474 335,025 +0.8%
181 Barbados Americas Caribbean 284,996 285,719 +0.3%
182 French Polynesia Oceania Polynesia 280,208 283,007 +1.0%
183 French Guiana Americas South America 275,713 282,731 +2.5%
184 New Caledonia Oceania Melanesia 272,677 276,255 +1.3%
185 Vanuatu Oceania Melanesia 270,402 276,244 +2.2%
186 Mayotte Africa Eastern Africa 246,489 253,045 +2.7%
187 Sao Tome and Principe Africa Middle Africa 199,910 204,327 +2.2%
188 Samoa Oceania Polynesia 195,125 196,440 +0.7%
189 Saint Lucia Americas Caribbean 178,015 178,844 +0.5%
190 Guernsey Guernsey and Jersey Europe Northern Europe 164,541 165,314 +0.5%
191 Guam Oceania Micronesia 162,896 164,229 +0.8%
192 Curaçao Americas Caribbean 159,371 160,539 +0.7%
193 Kiribati Oceania Micronesia 114,395 116,398 +1.8%
194 Saint Vincent and the Grenadines Americas Caribbean 109,643 109,897 +0.2%
195 Tonga Oceania Polynesia 107,122 108,020 +0.8%
196 Grenada Americas Caribbean 107,317 107,825 +0.5%
197 Federated States of Micronesia Oceania Micronesia 104,937 105,544 +0.6%
198 Aruba Americas Caribbean 104,822 105,264 +0.4%
199 United States Virgin Islands Americas Caribbean 104,913 104,901 0.0%
200 Antigua and Barbuda Americas Caribbean 100,963 102,012 +1.0%
201 Seychelles Africa Eastern Africa 94,228 94,737 +0.5%
202 Isle of Man Europe Northern Europe 83,737 84,287 +0.7%
203 Andorra Europe Southern Europe 77,281 76,965 0.4%
204 Dominica Americas Caribbean 73,543 73,925 +0.5%
205 Cayman Islands Americas Caribbean 60,765 61,559 +1.3%
206 Bermuda Americas Northern America 61,666 61,349 0.5%
207 Greenland Americas Northern America 56,412 56,480 +0.1%
208 American Samoa Oceania Polynesia 55,599 55,641 +0.1%
209 Saint Kitts and Nevis Americas Caribbean 54,821 55,345 +1.0%
210 Northern Mariana Islands Oceania Micronesia 55,023 55,144 +0.2%
211 Marshall Islands Oceania Micronesia 53,066 53,127 +0.1%
212 Faroe Islands Europe Northern Europe 49,117 49,290 +0.4%
213 Sint Maarten Americas Caribbean 39,537 40,120 +1.5%
214 Monaco Europe Western Europe 38,499 38,695 +0.5%
215 Liechtenstein Europe Western Europe 37,666 37,922 +0.7%
216 Turks and Caicos Islands Americas Caribbean 34,900 35,446 +1.6%
217 Gibraltar Europe Southern Europe 34,408 34,571 +0.5%
218 San Marino Europe Southern Europe 33,203 33,400 +0.6%
219 British Virgin Islands Americas Caribbean 30,661 31,196 +1.7%
220 Caribbean Netherlands[s] Americas Caribbean 25,019 25,398 +1.5%
221 Palau Oceania Micronesia 21,503 21,729 +1.1%
222 Cook Islands Oceania Polynesia 17,379 17,380 0.0%
223 Anguilla Americas Caribbean 14,764 14,909 +1.0%
224 Wallis and Futuna Oceania Polynesia 11,899 11,773 1.1%
225 Nauru Oceania Micronesia 11,347 11,359 +0.1%
226 Tuvalu Oceania Polynesia 11,097 11,192 +0.9%
227 Saint Pierre and Miquelon Americas Northern America 6,305 6,320 +0.2%
228 Montserrat Americas Caribbean 5,152 5,177 +0.5%
229 Saint Helena, Ascension and Tristan da Cunha Africa Western Africa 4,035 4,049 +0.3%
230 Falkland Islands Americas South America 2,910 2,910 0.0%
231 Niue Oceania Polynesia 1,624 1,618 0.4%
232 Tokelau Oceania Polynesia 1,282 1,300 +1.4%
233 Vatican City[t] Europe Southern Europe 801 792 1.1%

View File

@ -23,6 +23,7 @@
69920A431E016FAB00E7E6EE /* libX2tConverter.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 69920A401E016F9700E7E6EE /* libX2tConverter.a */; };
699690731E2F925200B620CD /* libc++abi.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 699690721E2F925200B620CD /* libc++abi.tbd */; };
69BE370C1F60129600CBA47B /* crypted.xlsx in Resources */ = {isa = PBXBuildFile; fileRef = 69BE370B1F60129600CBA47B /* crypted.xlsx */; };
8A2851F8220B29A800779A38 /* test.txt in Resources */ = {isa = PBXBuildFile; fileRef = 8A2851F6220B29A800779A38 /* test.txt */; };
8A94F3CB207CE7D600EC05D2 /* test.csv in Resources */ = {isa = PBXBuildFile; fileRef = 8A94F3C9207CE7D600EC05D2 /* test.csv */; };
8AC4E6EF22058B2A0044119A /* boost.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AC4E6EE22058B290044119A /* boost.framework */; };
8AC4E6F52205999B0044119A /* test.odt in Resources */ = {isa = PBXBuildFile; fileRef = 8AC4E6F22205999B0044119A /* test.odt */; };
@ -73,6 +74,7 @@
69BE370B1F60129600CBA47B /* crypted.xlsx */ = {isa = PBXFileReference; lastKnownFileType = file; path = crypted.xlsx; sourceTree = "<group>"; };
8A1045C420F4B55E005A0F61 /* libicudata.58.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libicudata.58.dylib; path = ../../../Common/3dParty/icu/mac_64/build/libicudata.58.dylib; sourceTree = "<group>"; };
8A1045C520F4B55F005A0F61 /* libicuuc.58.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libicuuc.58.dylib; path = ../../../Common/3dParty/icu/mac_64/build/libicuuc.58.dylib; sourceTree = "<group>"; };
8A2851F6220B29A800779A38 /* test.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = test.txt; sourceTree = "<group>"; };
8A94F3C9207CE7D600EC05D2 /* test.csv */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = test.csv; sourceTree = "<group>"; };
8A9FAD36207781C5007787F6 /* OfficeFileErrorDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OfficeFileErrorDescription.h; path = ../../../../Common/OfficeFileErrorDescription.h; sourceTree = "<group>"; };
8AC4E6EE22058B290044119A /* boost.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = boost.framework; path = ../../../Common/3dParty/boost/ios/framework/boost.framework; sourceTree = "<group>"; };
@ -170,6 +172,7 @@
8AC4E6F42205999B0044119A /* test.odp */,
8AC4E6F32205999B0044119A /* test.ods */,
8AC4E6F22205999B0044119A /* test.odt */,
8A2851F6220B29A800779A38 /* test.txt */,
);
name = Files;
sourceTree = "<group>";
@ -281,6 +284,7 @@
69BE370C1F60129600CBA47B /* crypted.xlsx in Resources */,
17DAB6871ACC371F005AF479 /* Main.storyboard in Resources */,
17DAB68C1ACC371F005AF479 /* LaunchScreen.xib in Resources */,
8A2851F8220B29A800779A38 /* test.txt in Resources */,
8AC4E7282205A4D10044119A /* demo.pptx in Resources */,
17DAB6891ACC371F005AF479 /* Images.xcassets in Resources */,
697CDFEA2049649800C2638C /* empty.docx in Resources */,

View File

@ -5070,7 +5070,6 @@ namespace BinXlsxRW
case c_oSerTableTypes::App:
{
PPTX::App oApp(NULL);
oBufferedStream.Skip(1); // type
oApp.fromPPTY(&oBufferedStream);
OOX::CApp* pApp = new OOX::CApp(NULL);
pApp->FromPptxApp(&oApp);
@ -5083,7 +5082,6 @@ namespace BinXlsxRW
case c_oSerTableTypes::Core:
{
PPTX::Core oCore(NULL);
oBufferedStream.Skip(1); // type
oCore.fromPPTY(&oBufferedStream);
OOX::CCore* pCore = new OOX::CCore(NULL);
pCore->FromPptxCore(&oCore);