diff --git a/MsBinaryFile/Common/Base/XmlTools.cpp b/MsBinaryFile/Common/Base/XmlTools.cpp index 14faa5e71c..7ab549481c 100644 --- a/MsBinaryFile/Common/Base/XmlTools.cpp +++ b/MsBinaryFile/Common/Base/XmlTools.cpp @@ -135,56 +135,37 @@ namespace XMLTools } void XMLElement::RemoveChild( const XMLElement& element ) { - m_Elements.remove( element ); - } - bool XMLElement::FindChild( const XMLElement& element ) - { - bool result = false; - - for ( ElementsIterator iter = m_Elements.begin(); iter != m_Elements.end(); iter++ ) + for (ElementsIteratorConst iter = m_Elements.begin(); iter != m_Elements.end(); iter++) { - if ( *iter == element ) + if (*iter == element) { - result = true; - + m_Elements.erase(iter); break; } + break; } - - return result; - } - bool XMLElement::FindChildByName( const std::wstring & elementName ) const - { - bool result = false; - - for ( ElementsIteratorConst iter = m_Elements.begin(); iter != m_Elements.end(); iter++ ) - { - if ( iter->m_Name == std::wstring( elementName ) ) - { - result = true; - - break; - } - } - - return result; } bool XMLElement::RemoveChildByName( const std::wstring& elementName ) { bool result = false; + for (ElementsIteratorConst iter = m_Elements.begin(); iter != m_Elements.end(); iter++) + { + if (iter->m_Name == elementName) + { + result = true; + m_Elements.erase(iter); + break; + } + } for ( ElementsIterator iter = m_Elements.begin(); iter != m_Elements.end(); iter++ ) { if ( iter->m_Name == elementName ) { m_Elements.erase( iter ); - - result = true; - break; } } - return result; } bool XMLElement::operator == ( const XMLElement& element ) const diff --git a/MsBinaryFile/Common/Base/XmlTools.h b/MsBinaryFile/Common/Base/XmlTools.h index 3a9fabe0bb..a8b1c07906 100644 --- a/MsBinaryFile/Common/Base/XmlTools.h +++ b/MsBinaryFile/Common/Base/XmlTools.h @@ -32,8 +32,8 @@ #pragma once #include -#include -#include +#include +#include #include @@ -73,13 +73,7 @@ namespace XMLTools void SetValue( const std::wstring & value ); std::wstring GetName() const; - - /*========================================================================================================*/ - std::wstring GetValue() const; - - /*========================================================================================================*/ - std::wstring GetXMLString(); }; @@ -95,17 +89,19 @@ namespace XMLTools typedef std::pair< std::wstring, std::wstring> AttributeValuePair; private: - std::wstring m_Name; - std::wstring m_ElementText; - std::unordered_map m_AttributeMap; - std::unordered_map m_ChildMap; //for uniq - std::list m_Elements; + std::wstring m_Name; + std::wstring m_ElementText; - typedef std::list::iterator ElementsIterator; - typedef std::list::const_iterator ElementsIteratorConst; + std::map m_AttributeMap; + std::map m_ChildMap; //for uniq - typedef std::unordered_map::iterator AttMapIterator; - typedef std::unordered_map::const_iterator AttMapIteratorConst; + std::vector m_Elements; + + typedef std::vector::iterator ElementsIterator; + typedef std::vector::const_iterator ElementsIteratorConst; + + typedef std::map::iterator AttMapIterator; + typedef std::map::const_iterator AttMapIteratorConst; public: XMLElement(); @@ -123,28 +119,14 @@ namespace XMLTools void AppendChild( XMLElementPtr element, bool uniq = false); void RemoveChild( const XMLElement& element ); - - bool FindChild( const XMLElement& element ); - bool FindChildByName( const std::wstring & elementName ) const; - bool RemoveChildByName( const std::wstring& elementName ); bool operator == ( const XMLElement& element ) const; - /*========================================================================================================*/ std::wstring GetName() const; - - /*========================================================================================================*/ - std::wstring GetXMLString(); - - /*========================================================================================================*/ - unsigned int GetAttributeCount() const; - - /*========================================================================================================*/ - unsigned int GetChildCount() const; }; diff --git a/MsBinaryFile/DocFile/CharacterPropertiesMapping.cpp b/MsBinaryFile/DocFile/CharacterPropertiesMapping.cpp index ac74f96313..65be703535 100644 --- a/MsBinaryFile/DocFile/CharacterPropertiesMapping.cpp +++ b/MsBinaryFile/DocFile/CharacterPropertiesMapping.cpp @@ -586,9 +586,10 @@ namespace DocFileFormat /*========================================================================================================*/ - std::list CharacterPropertiesMapping::buildHierarchy( const StyleSheet* styleSheet, unsigned short istdStart ) + std::vector CharacterPropertiesMapping::buildHierarchy( const StyleSheet* styleSheet, unsigned short istdStart ) { - std::list hierarchy; + std::vector hierarchy; + unsigned int istd = (unsigned int)istdStart; bool goOn = true; @@ -637,15 +638,13 @@ namespace DocFileFormat { bool ret = false; - std::list::const_iterator end = _hierarchy.end(); - for (std::list::const_iterator iter = _hierarchy.begin(); iter != end; ++iter) + for (auto& iter : _hierarchy) { - std::vector::const_iterator end_grpprl = (*iter)->grpprl->end(); - for (std::vector::const_iterator grpprlIter = (*iter)->grpprl->begin(); grpprlIter != end_grpprl; ++grpprlIter) + for (auto& grpprlIter : *(iter->grpprl)) { - if (grpprlIter->OpCode == sprm.OpCode) + if (grpprlIter.OpCode == sprm.OpCode) { - unsigned char ancient = grpprlIter->Arguments[0]; + unsigned char ancient = grpprlIter.Arguments[0]; ret = toogleValue(ret, ancient); break; } diff --git a/MsBinaryFile/DocFile/CharacterPropertiesMapping.h b/MsBinaryFile/DocFile/CharacterPropertiesMapping.h index e8c8c611a3..5045625839 100644 --- a/MsBinaryFile/DocFile/CharacterPropertiesMapping.h +++ b/MsBinaryFile/DocFile/CharacterPropertiesMapping.h @@ -64,7 +64,7 @@ namespace DocFileFormat bool _isRTL; private: void convertSprms( std::vector* sprms, XMLTools::XMLElement* parent ); - std::list buildHierarchy( const StyleSheet* styleSheet, unsigned short istdStart ); + std::vector buildHierarchy( const StyleSheet* styleSheet, unsigned short istdStart ); bool applyToggleHierachy( const SinglePropertyModifier& sprm ); bool toogleValue( bool currentValue, unsigned char toggle ); @@ -82,8 +82,8 @@ namespace DocFileFormat RevisionData* _revisionData; bool _styleChpx; - ParagraphPropertyExceptions* _currentPapx; - std::list _hierarchy; + ParagraphPropertyExceptions* _currentPapx; + std::vector _hierarchy; bool _isRunStyleNeeded; bool _isOwnRPr; diff --git a/MsBinaryFile/DocFile/OfficeArtContent.cpp b/MsBinaryFile/DocFile/OfficeArtContent.cpp index 381ca58b2f..52daf29340 100644 --- a/MsBinaryFile/DocFile/OfficeArtContent.cpp +++ b/MsBinaryFile/DocFile/OfficeArtContent.cpp @@ -99,17 +99,17 @@ namespace DocFileFormat { RELEASEOBJECT (m_pDrawingGroupData); - for ( std::list::iterator iter = m_arrDrawings.begin(); iter != m_arrDrawings.end(); ++iter) - RELEASEOBJECT(iter->container); + for (auto& iter : m_arrDrawings) + RELEASEOBJECT(iter.container); } ShapeContainer* OfficeArtContent::GetShapeContainer (int spid) { ShapeContainer* ret = NULL; - for (std::list::iterator iter = m_arrDrawings.begin(); iter != m_arrDrawings.end(); ++iter) + for (auto& iter : m_arrDrawings) { - GroupContainer* group = iter->container->FirstChildWithType(); + GroupContainer* group = iter.container->FirstChildWithType(); if (group) { for (size_t i = 1; i < group->Children.size(); ++i) diff --git a/MsBinaryFile/DocFile/OfficeArtContent.h b/MsBinaryFile/DocFile/OfficeArtContent.h index 77b781079d..181aef2e6e 100644 --- a/MsBinaryFile/DocFile/OfficeArtContent.h +++ b/MsBinaryFile/DocFile/OfficeArtContent.h @@ -70,11 +70,11 @@ namespace DocFileFormat ShapeContainer* GetShapeContainer (int spid); const DrawingGroup* GetDrawingGroup () const; - unsigned int m_uLastShapeId; + unsigned int m_uLastShapeId; private: - ShapeContainer* m_pBackgroud; - DrawingGroup* m_pDrawingGroupData; - std::list m_arrDrawings; + ShapeContainer* m_pBackgroud; + DrawingGroup* m_pDrawingGroupData; + std::vector m_arrDrawings; }; } diff --git a/MsBinaryFile/DocFile/OfficeDrawing/DrawingGroupRecord.h b/MsBinaryFile/DocFile/OfficeDrawing/DrawingGroupRecord.h index 4e3d36eaa6..913248ce0e 100644 --- a/MsBinaryFile/DocFile/OfficeDrawing/DrawingGroupRecord.h +++ b/MsBinaryFile/DocFile/OfficeDrawing/DrawingGroupRecord.h @@ -56,7 +56,7 @@ namespace DocFileFormat unsigned int ShapesSavedCount; // Total number of shapes saved unsigned int DrawingsSavedCount; // Total number of drawings saved - std::list Clusters; + std::vector Clusters; DrawingGroupRecord (); DrawingGroupRecord (IBinaryReader* _reader, unsigned int size, unsigned int typeCode, unsigned int version, unsigned int instance); diff --git a/MsBinaryFile/DocFile/OpenXmlPackage.cpp b/MsBinaryFile/DocFile/OpenXmlPackage.cpp index 202846414c..d674c67e04 100644 --- a/MsBinaryFile/DocFile/OpenXmlPackage.cpp +++ b/MsBinaryFile/DocFile/OpenXmlPackage.cpp @@ -86,14 +86,14 @@ namespace DocFileFormat WriteRelsFile( NumberingRelationshipsFile ); - for ( std::list::const_iterator iter = HeaderRelationshipsFiles.begin(); iter != HeaderRelationshipsFiles.end(); iter++ ) + for (auto& iter : HeaderRelationshipsFiles) { - WriteRelsFile( *iter ); + WriteRelsFile( iter ); } - for ( std::list::const_iterator iter = FooterRelationshipsFiles.begin(); iter != FooterRelationshipsFiles.end(); iter++ ) + for (auto& iter : FooterRelationshipsFiles) { - WriteRelsFile( *iter ); + WriteRelsFile( iter ); } WriteContentTypesFile( DocumentContentTypesFile ); @@ -406,7 +406,7 @@ namespace DocFileFormat writer.WriteNodeEnd( L"", TRUE, FALSE ); - for ( std::list::const_iterator iter = relationshipsFile.Relationships.begin(); iter != relationshipsFile.Relationships.end(); iter++ ) + for ( std::vector::const_iterator iter = relationshipsFile.Relationships.begin(); iter != relationshipsFile.Relationships.end(); iter++ ) { writer.WriteNodeBegin( L"Relationship", TRUE ); writer.WriteAttribute( L"Id", iter->Id ); diff --git a/MsBinaryFile/DocFile/OpenXmlPackage.h b/MsBinaryFile/DocFile/OpenXmlPackage.h index 4454c42d73..6156ccccaa 100644 --- a/MsBinaryFile/DocFile/OpenXmlPackage.h +++ b/MsBinaryFile/DocFile/OpenXmlPackage.h @@ -58,7 +58,7 @@ namespace DocFileFormat struct RelationshipsFile { std::wstring FileName; - std::list Relationships; + std::vector Relationships; int RelID; RelationshipsFile(): @@ -71,7 +71,7 @@ namespace DocFileFormat { } - RelationshipsFile( int relID, const std::wstring& fileName, const std::list& relationships ): + RelationshipsFile( int relID, const std::wstring& fileName, const std::vector& relationships ): RelID(relID), FileName( fileName ), Relationships( relationships ) { } @@ -128,8 +128,8 @@ namespace DocFileFormat RelationshipsFile CommentsRelationshipsFile; RelationshipsFile NumberingRelationshipsFile; - std::list HeaderRelationshipsFiles; - std::list FooterRelationshipsFiles; + std::vector HeaderRelationshipsFiles; + std::vector FooterRelationshipsFiles; int relID; diff --git a/MsBinaryFile/DocFile/VMLShapeTypeMapping.cpp b/MsBinaryFile/DocFile/VMLShapeTypeMapping.cpp index 935df047d2..ce2f2d03d1 100644 --- a/MsBinaryFile/DocFile/VMLShapeTypeMapping.cpp +++ b/MsBinaryFile/DocFile/VMLShapeTypeMapping.cpp @@ -78,7 +78,6 @@ namespace DocFileFormat else if (_isInlineShape) m_pXmlWriter->WriteAttribute( L"path", L"m@4@5l@4@11@9@11@9@5xe"); - //Default fill / stroke if ( !pShape->Filled ) { diff --git a/OOXML/PPTXFormat/DrawingConverter/ASCOfficePPTXFileRealization.cpp b/OOXML/PPTXFormat/DrawingConverter/ASCOfficePPTXFileRealization.cpp index cb9120681b..ba599090a9 100644 --- a/OOXML/PPTXFormat/DrawingConverter/ASCOfficePPTXFileRealization.cpp +++ b/OOXML/PPTXFormat/DrawingConverter/ASCOfficePPTXFileRealization.cpp @@ -51,17 +51,6 @@ CPPTXFile::CPPTXFile() { -#if defined(_WIN32) || defined (_WIN64) - WCHAR buffer[4096]; - GetTempPathW(4096, buffer); - m_strTempDir = std::wstring(buffer); - - GetLongPathName(m_strTempDir.c_str(), buffer, 4096); - m_strTempDir = std::wstring(buffer) + std::wstring(L"_PPTX\\"); -#else - m_strTempDir = NSDirectory::GetTempPath() + L"_PPTX/"; -#endif - m_bIsUseSystemFonts = false; m_bIsNoBase64 = false; m_bIsMacro = false; @@ -85,8 +74,10 @@ _UINT32 CPPTXFile::LoadFromFile(std::wstring sSrcFileName, std::wstring sDstPath } else { - bool res = NSDirectory::CreateDirectory(m_strTempDir); - if (res == false) return AVS_FILEUTILS_ERROR_CONVERT; + if (m_strTempDir.empty()) m_strTempDir = NSDirectory::GetTempPath(); + m_strTempDir = NSDirectory::CreateDirectoryWithUniqueName(m_strTempDir); + + if (m_strTempDir.empty()) return AVS_FILEUTILS_ERROR_CONVERT; } localTempDir = m_strTempDir; @@ -187,22 +178,18 @@ void CPPTXFile::SetMacroEnabled(bool val) } _UINT32 CPPTXFile::OpenFileToPPTY(std::wstring bsInput, std::wstring bsOutput) { - if (m_strTempDir.empty()) - { - m_strTempDir = NSDirectory::GetTempPath(); - } + if (m_strTempDir.empty()) m_strTempDir = NSDirectory::GetTempPath(); + m_strTempDir = NSDirectory::CreateDirectoryWithUniqueName(m_strTempDir); - if (true == NSDirectory::CreateDirectory(m_strTempDir)) - { - _UINT32 hr = OpenDirectoryToPPTY(bsInput, bsOutput); + if (m_strTempDir.empty()) return S_FALSE; - return hr; - } - else - return S_FALSE; + return OpenDirectoryToPPTY(bsInput, bsOutput); } _UINT32 CPPTXFile::OpenDirectoryToPPTY(std::wstring bsInput, std::wstring bsOutput) { + if (m_strTempDir.empty()) m_strTempDir = NSDirectory::GetTempPath(); + m_strTempDir = NSDirectory::CreateDirectoryWithUniqueName(m_strTempDir); + OOX::CPath pathInputDirectory = bsInput; RELEASEOBJECT(m_pPptxDocument);