mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-02-12 19:06:03 +08:00
Compare commits
21 Commits
core/devel
...
core/devel
| Author | SHA1 | Date | |
|---|---|---|---|
| 2dbec241f7 | |||
| f3c66cab50 | |||
| 11e6fc3e06 | |||
| cdf8c0a11b | |||
| ae29cebe35 | |||
| e933a1fb42 | |||
| 5a3f98c502 | |||
| 8677540a82 | |||
| f4ceac5b2b | |||
| 61be4ea100 | |||
| 51c6ce2ba2 | |||
| e13bc44198 | |||
| 56cefcb1be | |||
| 6f860c17e3 | |||
| fb9edc4f81 | |||
| 4eb0a73f3c | |||
| 7929d798c8 | |||
| 4c3d8ca059 | |||
| ad74a8ea6b | |||
| f50dda7c31 | |||
| f78a805fa3 |
@ -61,7 +61,7 @@ namespace Writers
|
||||
oFile.WriteStringUTF8( std::wstring(_T("<w:body>")));
|
||||
oFile.WriteStringUTF8(m_oContent.GetData());
|
||||
|
||||
oFile.WriteStringUTF8( std::wstring(_T("<w:sectPr >")));
|
||||
oFile.WriteStringUTF8( std::wstring(_T("<w:sectPr>")));
|
||||
oFile.WriteStringUTF8(WriteSectPrHdrFtr());
|
||||
oFile.WriteStringUTF8(m_oSecPr.GetData());
|
||||
oFile.WriteStringUTF8( std::wstring(_T("</w:sectPr>")));
|
||||
|
||||
@ -6615,8 +6615,10 @@ public:
|
||||
std::wstring sChartsWorksheetRelsName = L"../embeddings/" + sXlsxFilename;
|
||||
long rIdXlsx;
|
||||
std::wstring bstrChartsWorksheetRelType = OOX::FileTypes::MicrosoftOfficeExcelWorksheet.RelationType();
|
||||
m_oFileWriter.m_pDrawingConverter->WriteRels(bstrChartsWorksheetRelType, sChartsWorksheetRelsName, std::wstring(), &rIdXlsx);
|
||||
|
||||
|
||||
m_oFileWriter.m_pDrawingConverter->WriteRels(bstrChartsWorksheetRelType, sChartsWorksheetRelsName, std::wstring(), &rIdXlsx);
|
||||
m_oFileWriter.m_pDrawingConverter->m_pImageManager->m_pContentTypes->AddDefault(L"xlsx");
|
||||
|
||||
pChartSpace->m_oChartSpace.m_externalData = new OOX::Spreadsheet::CT_ExternalData();
|
||||
pChartSpace->m_oChartSpace.m_externalData->m_id = new std::wstring();
|
||||
pChartSpace->m_oChartSpace.m_externalData->m_id->append(L"rId");
|
||||
|
||||
@ -81,12 +81,14 @@ namespace BinDocxRW
|
||||
void BinaryHeaderFooterTableWriter::WriteHdrFtrItem(OOX::Logic::CSectionProperty* pSectPr, OOX::CHdrFtr* pHdrFtr, bool bHdr)
|
||||
{
|
||||
int nCurPos = 0;
|
||||
//Content
|
||||
ParamsDocumentWriter oParamsDocumentWriter(pHdrFtr, pHdrFtr->m_oReadPath.GetPath());
|
||||
//Content
|
||||
ParamsDocumentWriter oParamsDocumentWriter(pHdrFtr);
|
||||
m_oParamsWriter.m_pCurRels = oParamsDocumentWriter.m_pRels;
|
||||
m_oParamsWriter.m_sCurDocumentPath = oParamsDocumentWriter.m_sDocumentPath;
|
||||
|
||||
BinaryDocumentTableWriter oBinaryDocumentTableWriter(m_oParamsWriter, oParamsDocumentWriter, m_mapIgnoreComments, NULL);
|
||||
oBinaryDocumentTableWriter.prepareOfficeDrawingConverter(m_pOfficeDrawingConverter, oParamsDocumentWriter.m_sDocumentPath, pHdrFtr->m_arrShapeTypes);
|
||||
|
||||
oBinaryDocumentTableWriter.prepareOfficeDrawingConverter(m_pOfficeDrawingConverter, oParamsDocumentWriter.m_pRels, pHdrFtr->m_arrShapeTypes);
|
||||
|
||||
nCurPos = m_oBcw.WriteItemStart(c_oSerHdrFtrTypes::HdrFtr_Content);
|
||||
oBinaryDocumentTableWriter.WriteDocumentContent(pHdrFtr->m_arrItems);
|
||||
m_oBcw.WriteItemEnd(nCurPos);
|
||||
|
||||
@ -57,7 +57,6 @@ namespace BinDocxRW
|
||||
PPTX::Theme* m_poTheme;
|
||||
|
||||
OOX::IFileContainer* m_pCurRels;
|
||||
std::wstring m_sCurDocumentPath;
|
||||
std::map<int, bool> m_mapIgnoreComments;
|
||||
|
||||
ParamsWriter(NSBinPptxRW::CBinaryFileWriter* pCBufferedStream, DocWrapper::FontProcessor* pFontProcessor, NSBinPptxRW::CDrawingConverter* pOfficeDrawingConverter, NSFontCutter::CEmbeddedFontsManager* pEmbeddedFontsManager):
|
||||
@ -72,9 +71,8 @@ namespace BinDocxRW
|
||||
{
|
||||
public:
|
||||
OOX::IFileContainer* m_pRels;
|
||||
std::wstring m_sDocumentPath;
|
||||
|
||||
ParamsDocumentWriter(OOX::IFileContainer* pRels, const std::wstring& sDocumentPath):m_pRels(pRels), m_sDocumentPath(sDocumentPath)
|
||||
ParamsDocumentWriter(OOX::IFileContainer* pRels) : m_pRels(pRels)
|
||||
{
|
||||
}
|
||||
};
|
||||
@ -99,6 +97,8 @@ namespace BinDocxRW
|
||||
BinaryCommonWriter(ParamsWriter& oParamsWriter) : m_oStream(*oParamsWriter.m_pCBufferedStream),
|
||||
m_pEmbeddedFontsManager(oParamsWriter.m_pEmbeddedFontsManager)
|
||||
{
|
||||
*m_oStream.m_pCurrentContainer = oParamsWriter.m_pCurRels;
|
||||
m_oStream.m_pCurrentContainer->AddRef();
|
||||
}
|
||||
int WriteItemStart(BYTE type)
|
||||
{
|
||||
@ -2999,15 +2999,17 @@ namespace BinDocxRW
|
||||
RELEASEOBJECT(m_aFldChars[i]);
|
||||
}
|
||||
}
|
||||
void prepareOfficeDrawingConverter(NSBinPptxRW::CDrawingConverter* pOfficeDrawingConverter, std::wstring& sDocumentPath, std::vector<std::wstring>& aShapeTypes)
|
||||
void prepareOfficeDrawingConverter(NSBinPptxRW::CDrawingConverter* pOfficeDrawingConverter, OOX::IFileContainer *rels, std::vector<std::wstring>& aShapeTypes)
|
||||
{
|
||||
pOfficeDrawingConverter->SetRelsPath(sDocumentPath);
|
||||
smart_ptr<OOX::IFileContainer> oldRels = pOfficeDrawingConverter->GetRels();
|
||||
pOfficeDrawingConverter->SetRels(rels);
|
||||
|
||||
for(size_t i = 0, length = aShapeTypes.size(); i < length; ++i)
|
||||
{
|
||||
std::wstring& sShapeType = aShapeTypes[i];
|
||||
pOfficeDrawingConverter->AddShapeType(sShapeType);
|
||||
}
|
||||
pOfficeDrawingConverter->SetRels(oldRels);
|
||||
}
|
||||
void Write(std::vector<OOX::WritingElement*>& aElems)
|
||||
{
|
||||
@ -5480,21 +5482,14 @@ namespace BinDocxRW
|
||||
{
|
||||
if (pGraphic->chartRec.IsInit() && pGraphic->chartRec->id_data.IsInit() )
|
||||
{
|
||||
smart_ptr<OOX::File> pFile = m_oParamsDocumentWriter.m_pRels->Find( pGraphic->chartRec->id_data.get());
|
||||
if (pFile.IsInit() && OOX::FileTypes::Chart == pFile->type())
|
||||
{
|
||||
OOX::Spreadsheet::CChartSpace* pChart = static_cast<OOX::Spreadsheet::CChartSpace*>(pFile.operator ->());
|
||||
m_oBcw.m_oStream.WriteBYTE(c_oSerImageType2::Chart2);
|
||||
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Variable);
|
||||
|
||||
m_oBcw.m_oStream.WriteBYTE(c_oSerImageType2::Chart2);
|
||||
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Variable);
|
||||
int nCurPos = m_oBcw.WriteItemWithLengthStart();
|
||||
|
||||
int nCurPos = m_oBcw.WriteItemWithLengthStart();
|
||||
|
||||
BinXlsxRW::BinaryChartWriter oBinaryChartWriter(m_oBcw.m_oStream, m_pOfficeDrawingConverter);
|
||||
oBinaryChartWriter.WriteCT_ChartSpace(*pChart);
|
||||
|
||||
m_oBcw.WriteItemWithLengthEnd(nCurPos);
|
||||
}
|
||||
pGraphic->chartRec->toPPTY(&m_oBcw.m_oStream);
|
||||
|
||||
m_oBcw.WriteItemWithLengthEnd(nCurPos);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -7003,9 +6998,8 @@ namespace BinDocxRW
|
||||
}
|
||||
void WriteFootnotes(OOX::CFootnotes& oFootnotes)
|
||||
{
|
||||
ParamsDocumentWriter oParamsDocumentWriter(&oFootnotes, oFootnotes.m_oReadPath.GetPath());
|
||||
ParamsDocumentWriter oParamsDocumentWriter(&oFootnotes);
|
||||
m_oParamsWriter.m_pCurRels = oParamsDocumentWriter.m_pRels;
|
||||
m_oParamsWriter.m_sCurDocumentPath = oParamsDocumentWriter.m_sDocumentPath;
|
||||
|
||||
int nStart = m_oBcw.WriteItemWithLengthStart();
|
||||
WriteNotes(oFootnotes.m_arrFootnote, oParamsDocumentWriter, oFootnotes.m_arrShapeTypes);
|
||||
@ -7013,9 +7007,8 @@ namespace BinDocxRW
|
||||
}
|
||||
void WriteEndnotes(OOX::CEndnotes& oEndnotes)
|
||||
{
|
||||
ParamsDocumentWriter oParamsDocumentWriter(&oEndnotes, oEndnotes.m_oReadPath.GetPath());
|
||||
ParamsDocumentWriter oParamsDocumentWriter(&oEndnotes);
|
||||
m_oParamsWriter.m_pCurRels = oParamsDocumentWriter.m_pRels;
|
||||
m_oParamsWriter.m_sCurDocumentPath = oParamsDocumentWriter.m_sDocumentPath;
|
||||
|
||||
int nStart = m_oBcw.WriteItemWithLengthStart();
|
||||
WriteNotes(oEndnotes.m_arrEndnote, oParamsDocumentWriter, oEndnotes.m_arrShapeTypes);
|
||||
@ -7048,7 +7041,9 @@ namespace BinDocxRW
|
||||
}
|
||||
|
||||
BinaryDocumentTableWriter oBinaryDocumentTableWriter(m_oParamsWriter, oParamsDocumentWriter, &m_oParamsWriter.m_mapIgnoreComments, NULL);
|
||||
oBinaryDocumentTableWriter.prepareOfficeDrawingConverter(m_pOfficeDrawingConverter, oParamsDocumentWriter.m_sDocumentPath, arrShapeTypes);
|
||||
|
||||
oBinaryDocumentTableWriter.prepareOfficeDrawingConverter(m_pOfficeDrawingConverter, oParamsDocumentWriter.m_pRels, arrShapeTypes);
|
||||
|
||||
nCurPos = m_oBcw.WriteItemStart(c_oSerNotes::NoteContent);
|
||||
oBinaryDocumentTableWriter.WriteDocumentContent(oFtnEdn.m_arrItems);
|
||||
m_oBcw.WriteItemEnd(nCurPos);
|
||||
@ -7213,14 +7208,13 @@ namespace BinDocxRW
|
||||
BinDocxRW::BinaryHeaderFooterTableWriter oBinaryHeaderFooterTableWriter(m_oParamsWriter, poDocument, &m_oParamsWriter.m_mapIgnoreComments);
|
||||
|
||||
//Write DocumentTable
|
||||
ParamsDocumentWriter oParamsDocumentWriter(poDocument, poDocument->m_oReadPath.GetPath());
|
||||
ParamsDocumentWriter oParamsDocumentWriter(poDocument);
|
||||
m_oParamsWriter.m_pCurRels = oParamsDocumentWriter.m_pRels;
|
||||
m_oParamsWriter.m_sCurDocumentPath = oParamsDocumentWriter.m_sDocumentPath;
|
||||
|
||||
//DocumentTable всегда пишем последней, чтобы сначала заполнить все вспомогательные структуры, а при заполении документа, вызывать методы типа Style_Add...
|
||||
nCurPos = this->WriteTableStart(BinDocxRW::c_oSerTableTypes::Document);
|
||||
BinDocxRW::BinaryDocumentTableWriter oBinaryDocumentTableWriter(m_oParamsWriter, oParamsDocumentWriter, &m_oParamsWriter.m_mapIgnoreComments, &oBinaryHeaderFooterTableWriter);
|
||||
oBinaryDocumentTableWriter.prepareOfficeDrawingConverter(m_oParamsWriter.m_pOfficeDrawingConverter, oParamsDocumentWriter.m_sDocumentPath, poDocument->m_arrShapeTypes);
|
||||
oBinaryDocumentTableWriter.prepareOfficeDrawingConverter(m_oParamsWriter.m_pOfficeDrawingConverter, oParamsDocumentWriter.m_pRels, poDocument->m_arrShapeTypes);
|
||||
|
||||
oBinaryDocumentTableWriter.pSectPr = pFirstSectPr;
|
||||
oBinaryDocumentTableWriter.pBackground = poDocument->m_oBackground.GetPointer();
|
||||
|
||||
@ -387,7 +387,7 @@ bool BinDocxRW::CDocxSerializer::getBinaryContent(const std::wstring& bsTxConten
|
||||
|
||||
BinDocxRW::BinaryCommonWriter oBinaryCommonWriter(oParamsWriter);
|
||||
int nCurPos = oBinaryCommonWriter.WriteItemWithLengthStart();
|
||||
BinDocxRW::ParamsDocumentWriter oParams(oParamsWriter.m_pCurRels, oParamsWriter.m_sCurDocumentPath);
|
||||
BinDocxRW::ParamsDocumentWriter oParams(oParamsWriter.m_pCurRels);
|
||||
|
||||
BinDocxRW::BinaryDocumentTableWriter oBinaryDocumentTableWriter(oParamsWriter, oParams, &oParamsWriter.m_mapIgnoreComments, NULL);
|
||||
oBinaryDocumentTableWriter.WriteDocumentContent(oSdtContent.m_arrItems);
|
||||
@ -411,7 +411,7 @@ bool BinDocxRW::CDocxSerializer::getBinaryContentElem(OOX::EElementType eElemTyp
|
||||
BinDocxRW::BinaryCommonWriter oBinaryCommonWriter(oParamsWriter);
|
||||
int nCurPos = oBinaryCommonWriter.WriteItemWithLengthStart();
|
||||
|
||||
BinDocxRW::ParamsDocumentWriter oParams(oParamsWriter.m_pCurRels, oParamsWriter.m_sCurDocumentPath);
|
||||
BinDocxRW::ParamsDocumentWriter oParams(oParamsWriter.m_pCurRels);
|
||||
BinDocxRW::BinaryDocumentTableWriter oBinaryDocumentTableWriter(oParamsWriter, oParams, &oParamsWriter.m_mapIgnoreComments, NULL);
|
||||
if(OOX::et_m_oMathPara == eElemType)
|
||||
{
|
||||
|
||||
@ -139,31 +139,7 @@ namespace BinXlsxRW{
|
||||
RELEASEOBJECT(pFontPicker);
|
||||
return true;
|
||||
}
|
||||
bool CXlsxSerializer::loadChart(const std::wstring& sChartPath, NSBinPptxRW::CBinaryFileWriter* pWriter, long& lDataSize)
|
||||
{
|
||||
if (NULL == pWriter) return false;
|
||||
if (NULL == m_pExternalDrawingConverter) return false;
|
||||
|
||||
OOX::CPath oRootPath;
|
||||
OOX::Spreadsheet::CChartSpace oChart(oRootPath, sChartPath);
|
||||
|
||||
long nStartPos = pWriter->GetPosition();
|
||||
BinXlsxRW::BinaryCommonWriter oBcw(*pWriter);
|
||||
|
||||
std::wstring sOldRelsPath = m_pExternalDrawingConverter->GetRelsPath();
|
||||
m_pExternalDrawingConverter->SetRelsPath(sChartPath);
|
||||
|
||||
BinXlsxRW::BinaryChartWriter oBinaryChartWriter(*pWriter, m_pExternalDrawingConverter);
|
||||
oBinaryChartWriter.WriteCT_ChartSpace(oChart);
|
||||
|
||||
m_pExternalDrawingConverter->SetRelsPath(sOldRelsPath);
|
||||
|
||||
long nEndPos = pWriter->GetPosition();
|
||||
lDataSize = nEndPos - nStartPos;
|
||||
|
||||
return true;
|
||||
}
|
||||
bool CXlsxSerializer::saveChart(NSBinPptxRW::CBinaryFileReader* pReader, long lLength, const std::wstring& sFilepath, const long& lChartNumber)
|
||||
bool CXlsxSerializer::saveChart(NSBinPptxRW::CBinaryFileReader* pReader, long lLength, const std::wstring& sFilepath, const long& lChartNumber)
|
||||
{
|
||||
if (NULL == pReader) return false;
|
||||
if (NULL == m_pExternalDrawingConverter) return false;
|
||||
|
||||
@ -64,7 +64,6 @@ namespace BinXlsxRW {
|
||||
bool loadFromFile (const std::wstring& sSrcFileName, const std::wstring& sDstPath, const std::wstring& sXMLOptions, const std::wstring& sMediaDir, const std::wstring& sEmbedPath);
|
||||
bool saveToFile (const std::wstring& sSrcFileName, const std::wstring& sDstPath, const std::wstring& sXMLOptions);
|
||||
|
||||
bool loadChart (const std::wstring& sChartPath, NSBinPptxRW::CBinaryFileWriter* pWriter, long& lDataSize);
|
||||
bool saveChart (NSBinPptxRW::CBinaryFileReader* pReader, long lLength, const std::wstring& sFilename, const long& lChartNumber);
|
||||
|
||||
void setFontDir (const std::wstring& sFontDir);
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8,00"
|
||||
Version="8.00"
|
||||
Name="OdfFileReaderTest"
|
||||
ProjectGUID="{C2882DDD-07E6-4314-AD4B-48F43F38D722}"
|
||||
RootNamespace="ASCOfficeOdfFileTest"
|
||||
|
||||
@ -136,7 +136,8 @@ void xlsx_text_context::Impl::serialize_shared_strings(std::wostream & strm)
|
||||
xlsx_text_context::Impl::Impl(odf_reader::styles_container & styles): paragraphs_cout_(0),styles_(styles),
|
||||
in_comment(false),in_draw(false),in_paragraph(false),in_span(false),in_cell_content(false)
|
||||
{
|
||||
text_properties_cell_ = NULL;
|
||||
local_styles_ptr_ = NULL;
|
||||
text_properties_cell_ = NULL;
|
||||
}
|
||||
|
||||
void xlsx_text_context::Impl::add_text(const std::wstring & text)
|
||||
|
||||
@ -3,19 +3,19 @@ Microsoft Visual Studio Solution File, Format Version 9.00
|
||||
# Visual Studio 2005
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OdfFormatWriterLib", "..\source\win32\OdfFormat.vcproj", "{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A} = {94954A67-A853-43B1-A727-6EF2774C5A6A}
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540} = {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812} = {609ED938-3CA8-4BED-B363-25096D4C4812}
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56} = {C739151F-5384-41DF-A1A6-F089E2C1AD56}
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812} = {609ED938-3CA8-4BED-B363-25096D4C4812}
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540} = {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A} = {94954A67-A853-43B1-A727-6EF2774C5A6A}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Oox2OdfConverter", "..\source\win32\Oox2OdfConverter.vcproj", "{BEE01B53-244A-44E6-8947-ED9342D9247E}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A} = {94954A67-A853-43B1-A727-6EF2774C5A6A}
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0} = {21663823-DE45-479B-91D0-B4FEF4916EF0}
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0} = {A100103A-353E-45E8-A9B8-90B87CC5C0B0}
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302} = {36636678-AE25-4BE6-9A34-2561D1BCF302}
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD} = {E5A67556-44DA-4481-8F87-0A3AEDBD20DD}
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A} = {94954A67-A853-43B1-A727-6EF2774C5A6A}
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302} = {36636678-AE25-4BE6-9A34-2561D1BCF302}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OdfFileWriterTest", "OdfFileWTest.vcproj", "{FBA8446A-150F-4A10-B4DA-1022048D6473}"
|
||||
@ -40,9 +40,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OdfCommon", "..\..\ASCOffic
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "raster", "..\..\DesktopEditor\raster\raster_vs2005.vcproj", "{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36} = {BC52A07C-A797-423D-8C4F-8678805BBB36}
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1} = {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2} = {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1} = {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36} = {BC52A07C-A797-423D-8C4F-8678805BBB36}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jbig2", "..\..\DesktopEditor\raster\JBig2\win32\jbig2.vcproj", "{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}"
|
||||
@ -92,700 +92,204 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxml2", "..\..\DesktopEdi
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug Multithreaded|Win32 = Debug Multithreaded|Win32
|
||||
Debug Multithreaded|x64 = Debug Multithreaded|x64
|
||||
Debug Singlethreaded|Win32 = Debug Singlethreaded|Win32
|
||||
Debug Singlethreaded|x64 = Debug Singlethreaded|x64
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
Release Multithreaded|Win32 = Release Multithreaded|Win32
|
||||
Release Multithreaded|x64 = Release Multithreaded|x64
|
||||
Release Singlethreaded|Win32 = Release Singlethreaded|Win32
|
||||
Release Singlethreaded|x64 = Release Singlethreaded|x64
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
Unicode Debug|Win32 = Unicode Debug|Win32
|
||||
Unicode Debug|x64 = Unicode Debug|x64
|
||||
Unicode Release|Win32 = Unicode Release|Win32
|
||||
Unicode Release|x64 = Unicode Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Debug|x64.Build.0 = Debug|x64
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Release|Win32.Build.0 = Release|Win32
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Release|x64.ActiveCfg = Release|x64
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Release|x64.Build.0 = Release|x64
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Debug|x64.Build.0 = Debug|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Release|Win32.Build.0 = Release|Win32
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Release|x64.ActiveCfg = Release|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Release|x64.Build.0 = Release|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{BEE01B53-244A-44E6-8947-ED9342D9247E}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Debug|x64.Build.0 = Debug|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Release|Win32.Build.0 = Release|Win32
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Release|x64.ActiveCfg = Release|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Release|x64.Build.0 = Release|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{FBA8446A-150F-4A10-B4DA-1022048D6473}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Debug|x64.Build.0 = Debug|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release Multithreaded|Win32.ActiveCfg = ReleaseOpenSource|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release Multithreaded|x64.ActiveCfg = ReleaseOpenSource|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release Multithreaded|x64.Build.0 = ReleaseOpenSource|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release Singlethreaded|Win32.ActiveCfg = ReleaseOpenSource|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release Singlethreaded|x64.ActiveCfg = ReleaseOpenSource|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release Singlethreaded|x64.Build.0 = ReleaseOpenSource|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release|Win32.Build.0 = Release|Win32
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release|x64.ActiveCfg = Release|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release|x64.Build.0 = Release|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Debug|x64.Build.0 = Debug|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Release|Win32.Build.0 = Release|Win32
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Release|x64.ActiveCfg = Release|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Release|x64.Build.0 = Release|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{94954A67-A853-43B1-A727-6EF2774C5A6A}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug|x64.Build.0 = Debug|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release|Win32.Build.0 = Release|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release|x64.ActiveCfg = Release|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release|x64.Build.0 = Release|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Debug|x64.Build.0 = Debug|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Release|Win32.Build.0 = Release|Win32
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Release|x64.ActiveCfg = Release|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Release|x64.Build.0 = Release|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{609ED938-3CA8-4BED-B363-25096D4C4812}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug|x64.Build.0 = Debug|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release|Win32.Build.0 = Release|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release|x64.ActiveCfg = Release|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release|x64.Build.0 = Release|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug|x64.Build.0 = Debug|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release|Win32.Build.0 = Release|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release|x64.ActiveCfg = Release|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release|x64.Build.0 = Release|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug|x64.Build.0 = Debug|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release|Win32.Build.0 = Release|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release|x64.ActiveCfg = Release|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release|x64.Build.0 = Release|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug|x64.Build.0 = Debug|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release|Win32.Build.0 = Release|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release|x64.ActiveCfg = Release|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release|x64.Build.0 = Release|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug|x64.Build.0 = Debug|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release|Win32.Build.0 = Release|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release|x64.ActiveCfg = Release|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release|x64.Build.0 = Release|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug|x64.Build.0 = Debug|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release|Win32.Build.0 = Release|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release|x64.ActiveCfg = Release|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release|x64.Build.0 = Release|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug|x64.Build.0 = Debug|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release|Win32.Build.0 = Release|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release|x64.ActiveCfg = Release|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release|x64.Build.0 = Release|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Debug|x64.Build.0 = Debug|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Release|Win32.Build.0 = Release|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Release|x64.ActiveCfg = Release|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Release|x64.Build.0 = Release|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug|x64.Build.0 = Debug|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release|Win32.Build.0 = Release|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release|x64.ActiveCfg = Release|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release|x64.Build.0 = Release|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug|x64.Build.0 = Debug|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release|Win32.Build.0 = Release|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release|x64.ActiveCfg = Release|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release|x64.Build.0 = Release|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug|x64.Build.0 = Debug|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Release|Win32.Build.0 = Release|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Release|x64.ActiveCfg = Release|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Release|x64.Build.0 = Release|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug|x64.Build.0 = Debug|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release|Win32.Build.0 = Release|Win32
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release|x64.ActiveCfg = Release|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release|x64.Build.0 = Release|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Multithreaded|Win32.ActiveCfg = Debug Multithreaded|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Multithreaded|Win32.Build.0 = Debug Multithreaded|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Multithreaded|x64.ActiveCfg = Debug Multithreaded|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Multithreaded|x64.Build.0 = Debug Multithreaded|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Singlethreaded|Win32.ActiveCfg = Debug Singlethreaded|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Singlethreaded|Win32.Build.0 = Debug Singlethreaded|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Singlethreaded|x64.ActiveCfg = Debug Singlethreaded|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Singlethreaded|x64.Build.0 = Debug Singlethreaded|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.Build.0 = Debug|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Multithreaded|Win32.ActiveCfg = Release Multithreaded|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Multithreaded|Win32.Build.0 = Release Multithreaded|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Multithreaded|x64.ActiveCfg = Release Multithreaded|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Multithreaded|x64.Build.0 = Release Multithreaded|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Singlethreaded|Win32.ActiveCfg = Release Singlethreaded|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Singlethreaded|Win32.Build.0 = Release Singlethreaded|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Singlethreaded|x64.ActiveCfg = Release Singlethreaded|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Singlethreaded|x64.Build.0 = Release Singlethreaded|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.Build.0 = Release|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.ActiveCfg = Release|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.Build.0 = Release|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug|x64.Build.0 = Debug|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Release|Win32.Build.0 = Release|Win32
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Release|x64.ActiveCfg = Release|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Release|x64.Build.0 = Release|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug|x64.Build.0 = Debug|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release|Win32.Build.0 = Release|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release|x64.ActiveCfg = Release|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release|x64.Build.0 = Release|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Debug|x64.Build.0 = Debug|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Release|Win32.Build.0 = Release|Win32
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Release|x64.ActiveCfg = Release|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Release|x64.Build.0 = Release|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug Multithreaded|Win32.ActiveCfg = Debug|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug Multithreaded|x64.ActiveCfg = Debug|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug Multithreaded|x64.Build.0 = Debug|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug Singlethreaded|Win32.ActiveCfg = Debug|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug Singlethreaded|x64.ActiveCfg = Debug|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug Singlethreaded|x64.Build.0 = Debug|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug|x64.Build.0 = Debug|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release Multithreaded|Win32.ActiveCfg = Release|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release Multithreaded|x64.ActiveCfg = Release|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release Multithreaded|x64.Build.0 = Release|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release Singlethreaded|Win32.ActiveCfg = Release|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release Singlethreaded|x64.ActiveCfg = Release|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release Singlethreaded|x64.Build.0 = Release|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release|Win32.Build.0 = Release|Win32
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release|x64.ActiveCfg = Release|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release|x64.Build.0 = Release|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@ -403,9 +403,11 @@ int draw_enhanced_geometry::parsing(_CP_OPT(std::wstring) val)
|
||||
void draw_enhanced_geometry_attlist::serialize(CP_ATTR_NODE)
|
||||
{
|
||||
CP_XML_ATTR_OPT(L"draw:type", draw_type_);
|
||||
CP_XML_ATTR_OPT(L"draw:text-areas", draw_text_areas_);
|
||||
CP_XML_ATTR_OPT(L"drawooo:sub-view-size", draw_sub_view_size_);
|
||||
CP_XML_ATTR_OPT(L"draw:text-areas", draw_text_areas_);
|
||||
CP_XML_ATTR_OPT(L"draw:modifiers", draw_modifiers_);
|
||||
CP_XML_ATTR_OPT(L"draw:enhanced-path", draw_enhanced_path_);
|
||||
CP_XML_ATTR_OPT(L"drawooo:enhanced-path", draw_enhanced_path_);
|
||||
//CP_XML_ATTR_OPT(L"draw:enhanced-path", draw_enhanced_path_);
|
||||
CP_XML_ATTR_OPT(L"draw:glue-points", draw_glue_points_);
|
||||
CP_XML_ATTR_OPT(L"draw:mirror-vertical", draw_mirror_vertical_);
|
||||
CP_XML_ATTR_OPT(L"draw:mirror-horizontal", draw_mirror_horizontal_);
|
||||
|
||||
@ -316,19 +316,21 @@ CP_REGISTER_OFFICE_ELEMENT2(draw_handle);
|
||||
class draw_enhanced_geometry_attlist
|
||||
{
|
||||
public:
|
||||
_CP_OPT(std::wstring) draw_type_;
|
||||
_CP_OPT(std::wstring) draw_modifiers_;
|
||||
_CP_OPT(std::wstring) draw_enhanced_path_;
|
||||
_CP_OPT(std::wstring) draw_text_areas_;
|
||||
_CP_OPT(std::wstring) draw_glue_points_;
|
||||
_CP_OPT(std::wstring) draw_type_;
|
||||
_CP_OPT(std::wstring) draw_modifiers_;
|
||||
_CP_OPT(std::wstring) draw_enhanced_path_;
|
||||
_CP_OPT(std::wstring) draw_text_areas_;
|
||||
_CP_OPT(std::wstring) draw_glue_points_;
|
||||
|
||||
_CP_OPT(odf_types::Bool) draw_mirror_vertical_;
|
||||
_CP_OPT(odf_types::Bool) draw_mirror_horizontal_;
|
||||
_CP_OPT(std::wstring) draw_sub_view_size_;
|
||||
|
||||
_CP_OPT(odf_types::Bool) draw_mirror_vertical_;
|
||||
_CP_OPT(odf_types::Bool) draw_mirror_horizontal_;
|
||||
|
||||
_CP_OPT(odf_types::Bool) draw_text_path_;
|
||||
_CP_OPT(odf_types::Bool) draw_text_path_same_letter_heights_;
|
||||
_CP_OPT(std::wstring) draw_text_path_mode_;
|
||||
_CP_OPT(std::wstring) draw_text_path_scale_;
|
||||
_CP_OPT(odf_types::Bool) draw_text_path_;
|
||||
_CP_OPT(odf_types::Bool) draw_text_path_same_letter_heights_;
|
||||
_CP_OPT(std::wstring) draw_text_path_mode_;
|
||||
_CP_OPT(std::wstring) draw_text_path_scale_;
|
||||
|
||||
void serialize(CP_ATTR_NODE);
|
||||
};
|
||||
|
||||
@ -96,7 +96,7 @@ void odf_comment_context::start_comment(office_element_ptr &elm, int oox_id)
|
||||
|
||||
impl_->comments_.push_back(state);
|
||||
impl_->comments_.back().elements_.push_back(elm);//"0" - root comment eleemnt
|
||||
impl_->comments_.back().oox_id = oox_id;
|
||||
impl_->comments_.back().oox_id = oox_id < 0 ? impl_->comments_.back().elements_.size() : oox_id;
|
||||
impl_->comments_.back().odf_name = L"comment_" + boost::lexical_cast<std::wstring>(oox_id);
|
||||
|
||||
impl_->comments_.back().is_started = false;
|
||||
@ -159,14 +159,14 @@ std::wstring odf_comment_context::find_name_by_id(int oox_id)
|
||||
}
|
||||
bool odf_comment_context::is_started()
|
||||
{
|
||||
if (impl_->comments_.size()>0)
|
||||
if (!impl_->comments_.empty())
|
||||
return impl_->comments_.back().is_started;
|
||||
else return false;
|
||||
|
||||
}
|
||||
void odf_comment_context::set_author(std::wstring author)
|
||||
{
|
||||
if ((impl_->comments_.size()<1) || !is_started()) return;
|
||||
if ((impl_->comments_.empty()) || !is_started()) return;
|
||||
|
||||
office_element_ptr elm;
|
||||
create_element(L"dc", L"creator", elm, impl_->odf_context_);
|
||||
@ -178,11 +178,15 @@ void odf_comment_context::set_author(std::wstring author)
|
||||
|
||||
impl_->comments_.back().elements_[0]->add_child_element(elm);
|
||||
impl_->comments_.back().elements_.push_back(elm);
|
||||
}
|
||||
void odf_comment_context::set_initials(std::wstring initials)
|
||||
{
|
||||
if ((impl_->comments_.empty()) || !is_started()) return;
|
||||
|
||||
}
|
||||
void odf_comment_context::set_date(std::wstring _date)
|
||||
{
|
||||
if ((impl_->comments_.size()<1) || !is_started()) return;
|
||||
if ((impl_->comments_.empty()) || !is_started()) return;
|
||||
|
||||
office_element_ptr elm;
|
||||
create_element(L"dc", L"date", elm, impl_->odf_context_);
|
||||
@ -195,5 +199,18 @@ void odf_comment_context::set_date(std::wstring _date)
|
||||
impl_->comments_.back().elements_[0]->add_child_element(elm);
|
||||
impl_->comments_.back().elements_.push_back(elm);
|
||||
}
|
||||
void odf_comment_context::set_position (double x, double y)
|
||||
{
|
||||
if ((impl_->comments_.empty()) || !is_started()) return;
|
||||
|
||||
office_annotation* comm = dynamic_cast<office_annotation*>(impl_->comments_.back().elements_.back().get());
|
||||
|
||||
if (comm)
|
||||
{
|
||||
comm->office_annotation_attr_.svg_x_ = odf_types::length(x, odf_types::length::pt);
|
||||
comm->office_annotation_attr_.svg_y_ = odf_types::length(y, odf_types::length::pt);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -66,8 +66,11 @@ public:
|
||||
void start_comment_content ();
|
||||
void end_comment_content ();
|
||||
|
||||
void set_author (std::wstring author);
|
||||
void set_date (std::wstring author);
|
||||
void set_author (std::wstring author);
|
||||
void set_initials (std::wstring author);
|
||||
void set_date (std::wstring author);
|
||||
|
||||
void set_position (double x, double y);
|
||||
|
||||
private:
|
||||
std::wstring find_name_by_id(int oox_id);
|
||||
|
||||
@ -190,9 +190,9 @@ struct odf_drawing_state
|
||||
path_ = L"";
|
||||
view_box_ = L"";
|
||||
path_last_command_ = L"";
|
||||
modifiers_ = L"";
|
||||
|
||||
oox_shape_preset = -1;
|
||||
oox_shape_.reset();
|
||||
|
||||
in_group = false;
|
||||
text_box_tableframe = false;
|
||||
@ -221,11 +221,10 @@ struct odf_drawing_state
|
||||
bool flipH;
|
||||
bool flipV;
|
||||
|
||||
std::wstring path_;
|
||||
std::wstring view_box_;
|
||||
std::wstring path_last_command_;
|
||||
std::wstring modifiers_;
|
||||
|
||||
std::wstring path_;
|
||||
std::wstring view_box_;
|
||||
std::wstring path_last_command_;
|
||||
oox_shape_ptr oox_shape_;
|
||||
///////////////////////
|
||||
int oox_shape_preset;
|
||||
bool in_group;
|
||||
@ -713,7 +712,7 @@ void odf_drawing_context::Impl::create_draw_base(int type)
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
int level = current_level_.size();
|
||||
|
||||
if (current_level_.size()>0)
|
||||
if (current_level_.size() > 0)
|
||||
current_level_.back()->add_child_element(draw_elm);
|
||||
|
||||
current_level_.push_back(draw_elm);
|
||||
@ -722,6 +721,9 @@ void odf_drawing_context::Impl::create_draw_base(int type)
|
||||
|
||||
current_drawing_state_.elements_.push_back(state);
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
if (type == 7)
|
||||
current_drawing_state_.oox_shape_ = oox_shape_ptr(new oox_shape());
|
||||
}
|
||||
|
||||
void odf_drawing_context::start_shape(int type)
|
||||
@ -738,7 +740,7 @@ void odf_drawing_context::start_shape(int type)
|
||||
}
|
||||
else if (type == 1001)
|
||||
{
|
||||
impl_->create_draw_base(6);//пока кастом .. потом переделать на path, что правильнее
|
||||
impl_->create_draw_base(6); //path
|
||||
}
|
||||
else if (type == 2000)
|
||||
{
|
||||
@ -748,9 +750,9 @@ void odf_drawing_context::start_shape(int type)
|
||||
{
|
||||
start_image(L"");
|
||||
}
|
||||
else if (type > 2000 && type < 3000)
|
||||
else if (type > 2000 && type < 3000) //custom text path
|
||||
{
|
||||
impl_->create_draw_base(7);
|
||||
impl_->create_draw_base(7);
|
||||
}
|
||||
}
|
||||
|
||||
@ -812,7 +814,10 @@ void odf_drawing_context::end_shape()
|
||||
if (impl_->current_drawing_state_.oox_shape_preset == 3000) return end_image();
|
||||
//вторичные, вычисляемые свойства шейпов
|
||||
|
||||
bool line_always_present = false;
|
||||
if (isLineShape())
|
||||
{
|
||||
impl_->current_graphic_properties->common_draw_fill_attlist_.draw_fill_ = draw_fill::none;
|
||||
}
|
||||
|
||||
draw_path* path = dynamic_cast<draw_path*>(impl_->current_drawing_state_.elements_[0].elm.get());
|
||||
if (path)
|
||||
@ -821,10 +826,8 @@ void odf_drawing_context::end_shape()
|
||||
set_viewBox( impl_->current_drawing_state_.svg_width_->get_value_unit(length::cm) * 1000,
|
||||
impl_->current_drawing_state_.svg_height_->get_value_unit(length::cm) *1000);
|
||||
|
||||
if (impl_->current_drawing_state_.path_.length()>1) path->draw_path_attlist_.svg_d_ = impl_->current_drawing_state_.path_;
|
||||
if (impl_->current_drawing_state_.view_box_.length()>1) path->draw_path_attlist_.svg_viewbox_ = impl_->current_drawing_state_.view_box_;
|
||||
|
||||
line_always_present = true;
|
||||
if (!impl_->current_drawing_state_.path_.empty()) path->draw_path_attlist_.svg_d_ = impl_->current_drawing_state_.path_;
|
||||
if (!impl_->current_drawing_state_.view_box_.empty()) path->draw_path_attlist_.svg_viewbox_ = impl_->current_drawing_state_.view_box_;
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////////////////
|
||||
draw_line* line = dynamic_cast<draw_line*>(impl_->current_level_.back().get());
|
||||
@ -861,16 +864,14 @@ void odf_drawing_context::end_shape()
|
||||
line->draw_line_attlist_.svg_x1_ = line->draw_line_attlist_.svg_x2_;
|
||||
line->draw_line_attlist_.svg_x2_ = tmp;
|
||||
}
|
||||
|
||||
line_always_present = true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////
|
||||
draw_connector* connector = dynamic_cast<draw_connector*>(impl_->current_level_.back().get());
|
||||
if (connector)
|
||||
{
|
||||
if (!connector->draw_connector_attlist_.draw_type_) connector->draw_connector_attlist_.draw_type_ = L"line";
|
||||
line_always_present = true;
|
||||
if (!connector->draw_connector_attlist_.draw_type_)
|
||||
connector->draw_connector_attlist_.draw_type_ = L"line";
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@ -888,11 +889,11 @@ void odf_drawing_context::end_shape()
|
||||
{
|
||||
text_shape = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_type = L"polyline";
|
||||
line_always_present = true;
|
||||
}
|
||||
//else
|
||||
//{
|
||||
// sub_type = L"polyline";
|
||||
// line_always_present = true;
|
||||
//}
|
||||
|
||||
office_element_ptr enhanced_elm;
|
||||
create_element(L"draw", L"enhanced-geometry", enhanced_elm, impl_->odf_context_);
|
||||
@ -906,52 +907,50 @@ void odf_drawing_context::end_shape()
|
||||
{
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_text_path_same_letter_heights_ = false;
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_text_path_scale_ = L"path" ;
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_text_path_mode_ = L"shape" ;
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_text_path_ = true;
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_text_path_mode_ = L"shape" ;
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_text_path_ = true;
|
||||
}
|
||||
|
||||
if (impl_->current_drawing_state_.path_.length()>1)
|
||||
if (!impl_->current_drawing_state_.path_.empty())
|
||||
{
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_enhanced_path_ =impl_->current_drawing_state_.path_;
|
||||
}
|
||||
if (impl_->current_drawing_state_.view_box_.length()>1)
|
||||
if (!impl_->current_drawing_state_.view_box_.empty())
|
||||
{
|
||||
enhanced->svg_viewbox_ = impl_->current_drawing_state_.view_box_;
|
||||
}
|
||||
if (sub_type.length()>1)
|
||||
if (!sub_type.empty())
|
||||
{
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_type_ = sub_type;
|
||||
|
||||
int res=0;
|
||||
if ((res = sub_type.find(L"ooxml")) >= 0 && impl_->current_drawing_state_.modifiers_.length()>1)
|
||||
{
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_modifiers_ = impl_->current_drawing_state_.modifiers_;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
oox_shape_ptr shape_define = oox_shape::create(impl_->current_drawing_state_.oox_shape_preset);
|
||||
|
||||
|
||||
if (!shape_define) shape_define = impl_->current_drawing_state_.oox_shape_;
|
||||
|
||||
if (shape_define)
|
||||
{
|
||||
enhanced->svg_viewbox_ = shape_define->view_box;
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_type_ = shape_define->odf_type_name;
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_text_areas_ = shape_define->text_areas;
|
||||
if (shape_define->glue_points)
|
||||
{
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_glue_points_ = *shape_define->glue_points;
|
||||
}
|
||||
enhanced->svg_viewbox_ = shape_define->view_box;
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_type_ = shape_define->odf_type_name;
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_text_areas_ = shape_define->text_areas;
|
||||
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_glue_points_ = shape_define->glue_points;
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_sub_view_size_ = shape_define->sub_view_size;
|
||||
|
||||
if (impl_->current_drawing_state_.modifiers_.length()>1)
|
||||
if (impl_->current_drawing_state_.oox_shape_ && !impl_->current_drawing_state_.oox_shape_->modifiers.empty())
|
||||
{
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_modifiers_ = impl_->current_drawing_state_.modifiers_;
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_modifiers_ = impl_->current_drawing_state_.oox_shape_->modifiers;
|
||||
}
|
||||
else // обязательно нужны дефолтовые
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_modifiers_ = shape_define->modifiers;
|
||||
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_enhanced_path_ = shape_define->enhanced_path;
|
||||
if (!shape_define->enhanced_path.empty())
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_enhanced_path_ = shape_define->enhanced_path;
|
||||
else
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_enhanced_path_ = impl_->current_drawing_state_.path_;
|
||||
|
||||
for (size_t i = 0; i < shape_define->equations.size();i++)
|
||||
for (size_t i = 0; i < shape_define->equations.size(); i++)
|
||||
{
|
||||
office_element_ptr elm_eq;
|
||||
create_element(L"draw", L"equation", elm_eq, impl_->odf_context_);
|
||||
@ -965,7 +964,7 @@ void odf_drawing_context::end_shape()
|
||||
end_element();
|
||||
}
|
||||
//-----------------------------
|
||||
for (size_t i = 0; i < shape_define->handles.size();i++)
|
||||
for (size_t i = 0; i < shape_define->handles.size(); i++)
|
||||
{
|
||||
office_element_ptr elm_h;
|
||||
create_element(L"draw", L"handle", elm_h, impl_->odf_context_);
|
||||
@ -988,7 +987,38 @@ void odf_drawing_context::end_shape()
|
||||
}
|
||||
end_element();
|
||||
}
|
||||
void odf_drawing_context::corrected_line_fill()
|
||||
|
||||
bool odf_drawing_context::isLineShape()
|
||||
{
|
||||
if (impl_->current_level_.empty()) return false;
|
||||
|
||||
draw_line* line = dynamic_cast<draw_line*>(impl_->current_level_.back().get());
|
||||
if (line) return true;
|
||||
|
||||
draw_connector* connector = dynamic_cast<draw_connector*>(impl_->current_level_.back().get());
|
||||
if (connector) return true;
|
||||
|
||||
draw_path* path = dynamic_cast<draw_path*>(impl_->current_level_.back().get());
|
||||
if (path) return true;
|
||||
|
||||
switch(impl_->current_drawing_state_.oox_shape_preset)
|
||||
{
|
||||
case 20: //SimpleTypes::shapetypeBentConnector2:
|
||||
case 21: //SimpleTypes::shapetypeBentConnector3:
|
||||
case 22: //SimpleTypes::shapetypeBentConnector4:
|
||||
case 23: //SimpleTypes::shapetypeBentConnector5:
|
||||
case 47: //SimpleTypes::shapetypeCurvedConnector2:
|
||||
case 48: //SimpleTypes::shapetypeCurvedConnector3:
|
||||
case 49: //SimpleTypes::shapetypeCurvedConnector4:
|
||||
case 50: //SimpleTypes::shapetypeCurvedConnector5:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void odf_drawing_context::corrected_line_fill() //for vml objects
|
||||
{
|
||||
if (!impl_->current_graphic_properties)return;
|
||||
|
||||
@ -1246,10 +1276,12 @@ void odf_drawing_context::set_path(std::wstring path_string)
|
||||
//boost::replace_all(path_string, L",,", L" 0 ");
|
||||
//boost::replace_all(path_string, L" -", L"-");
|
||||
//boost::replace_all(path_string, L",", L"0"); // нужен разбор
|
||||
//impl_->current_drawing_state_.path_ = path_string;
|
||||
impl_->current_drawing_state_.path_ = path_string;
|
||||
}
|
||||
void odf_drawing_context::add_path_element(std::wstring command, const std::wstring & strE)
|
||||
void odf_drawing_context::add_path_element(std::wstring command, std::wstring strE)
|
||||
{
|
||||
XmlUtils::replace_all(strE, L"gd", L"?f");
|
||||
|
||||
if (command != impl_->current_drawing_state_.path_last_command_)
|
||||
{
|
||||
impl_->current_drawing_state_.path_ += command;
|
||||
@ -1258,19 +1290,179 @@ void odf_drawing_context::add_path_element(std::wstring command, const std::wstr
|
||||
|
||||
impl_->current_drawing_state_.path_last_command_ = command;
|
||||
}
|
||||
if (command != L"N")
|
||||
impl_->current_drawing_state_.path_ += strE + L" ";
|
||||
else
|
||||
impl_->current_drawing_state_.path_ += strE;
|
||||
|
||||
impl_->current_drawing_state_.path_ += strE + L" ";
|
||||
|
||||
if (command == L"N")
|
||||
impl_->current_drawing_state_.path_last_command_.clear();
|
||||
}
|
||||
void odf_drawing_context::add_modifier(std::wstring modifier)
|
||||
void odf_drawing_context::add_modifier (std::wstring modifier)
|
||||
{
|
||||
if (!impl_->current_drawing_state_.oox_shape_) return;
|
||||
|
||||
boost::algorithm::to_lower(modifier);
|
||||
int res = modifier.find(L"val ");
|
||||
if (res >=0) modifier = modifier.substr(4);
|
||||
impl_->current_drawing_state_.modifiers_ += modifier + L" ";
|
||||
|
||||
impl_->current_drawing_state_.oox_shape_->modifiers += modifier + L" ";
|
||||
}
|
||||
void odf_drawing_context::set_viewBox(double W, double H)
|
||||
int GetFormulaType2(const WCHAR& c1, const WCHAR& c2)
|
||||
{
|
||||
switch (c1)
|
||||
{
|
||||
case (WCHAR)'*': return 0;
|
||||
case (WCHAR)'+': return ((WCHAR)'-' == c2) ? 1 : 2;
|
||||
case (WCHAR)'?': return 3;
|
||||
case (WCHAR)'a': return ((WCHAR)'b' == c2) ? 4 : 5;
|
||||
case (WCHAR)'c': return ((WCHAR)'a' == c2) ? 6 : 7;
|
||||
case (WCHAR)'m': return ((WCHAR)'a' == c2) ? 8 : (((WCHAR)'i' == c2) ? 16 : 9);
|
||||
case (WCHAR)'p': return 10;
|
||||
case (WCHAR)'s': return ((WCHAR)'a' == c2) ? 11 : (((WCHAR)'i' == c2) ? 12 : 13);
|
||||
case (WCHAR)'t': return 14;
|
||||
case (WCHAR)'v': return 15;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void odf_drawing_context::set_textarea (std::wstring l, std::wstring t, std::wstring r, std::wstring b)
|
||||
{
|
||||
if (!impl_->current_drawing_state_.oox_shape_) return;
|
||||
|
||||
impl_->current_drawing_state_.oox_shape_->text_areas = l + L" " + t + L" " + r + L" " + b;
|
||||
|
||||
XmlUtils::replace_all(impl_->current_drawing_state_.oox_shape_->text_areas, L"gd", L"?f");
|
||||
}
|
||||
void odf_drawing_context::add_handle (std::wstring x, std::wstring y, std::wstring refX, std::wstring refY,
|
||||
std::wstring minX, std::wstring maxX, std::wstring minY, std::wstring maxY)
|
||||
{
|
||||
if (!impl_->current_drawing_state_.oox_shape_) return;
|
||||
|
||||
oox_shape::_handle h;
|
||||
|
||||
XmlUtils::replace_all(x, L"gd", L"?f");
|
||||
XmlUtils::replace_all(y, L"gd", L"?f");
|
||||
|
||||
h.position = x + L" " + y;
|
||||
|
||||
if (!maxX.empty()) h.x_maximum= maxX;
|
||||
if (!minX.empty()) h.x_minimum= minX;
|
||||
|
||||
if (!maxY.empty()) h.y_maximum= maxY;
|
||||
if (!minY.empty()) h.y_minimum= minY;
|
||||
|
||||
impl_->current_drawing_state_.oox_shape_->handles.push_back(h);
|
||||
}
|
||||
|
||||
void odf_drawing_context::add_formula (std::wstring name, std::wstring fmla)
|
||||
{
|
||||
if (!impl_->current_drawing_state_.oox_shape_) return;
|
||||
|
||||
size_t nStart = 0;
|
||||
size_t nCurrent = 0;
|
||||
|
||||
const wchar_t* pData = fmla.c_str();
|
||||
|
||||
int nFound = 0, x = 0, y = 0;
|
||||
|
||||
std::wstring val[4];
|
||||
|
||||
while (nCurrent < fmla.length())
|
||||
{
|
||||
if (pData[nCurrent] == (WCHAR)' ')
|
||||
{
|
||||
if (nStart < nCurrent)
|
||||
{
|
||||
if (0 == nFound)
|
||||
{
|
||||
if ((nCurrent - nStart) > 1)
|
||||
{
|
||||
x = GetFormulaType2(pData[nStart], pData[nStart + 1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
val[nFound-1] = std::wstring( pData + nStart, (ULONG)(nCurrent - nStart));
|
||||
}
|
||||
nStart = nCurrent + 1;
|
||||
++nFound;
|
||||
}
|
||||
}
|
||||
++nCurrent;
|
||||
}
|
||||
if (nStart < nCurrent)
|
||||
{
|
||||
if (0 == nFound)
|
||||
{
|
||||
if ((nCurrent - nStart) > 1)
|
||||
{
|
||||
y = GetFormulaType2(pData[nStart], pData[nStart + 1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
y = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
val[nFound-1] = std::wstring( pData + nStart, (ULONG)(nCurrent - nStart));
|
||||
}
|
||||
}
|
||||
std::wstring odf_fmla = L"";
|
||||
|
||||
switch(x)
|
||||
{
|
||||
case 0:
|
||||
odf_fmla = val[0] + L"*" + val[1] + L"/" + val[2];
|
||||
break;
|
||||
case 1:
|
||||
odf_fmla = val[0] + L"+" + val[1] + L"-" + val[2];
|
||||
break;
|
||||
case 2:
|
||||
odf_fmla = val[0] + L"+" + val[1];
|
||||
break;
|
||||
case 3:
|
||||
odf_fmla = L"if(";
|
||||
for (int i = 0; i < nFound - 1; i++)
|
||||
{
|
||||
odf_fmla += val[i] + L",";
|
||||
}
|
||||
odf_fmla += val[nFound-1] + L")"; break;
|
||||
case 4:
|
||||
odf_fmla = L"abs(" + val[0] + L")";
|
||||
break;
|
||||
case 7:
|
||||
odf_fmla = val[0] + L"*cos(pi*(" + val[1] + L")/10800000)";
|
||||
break;
|
||||
case 12:
|
||||
odf_fmla = val[0] + L"*sin(pi*(" + val[1] + L")/10800000)";
|
||||
break;
|
||||
case 13:
|
||||
odf_fmla = L"sqrt(" + val[0] + L")";
|
||||
break;
|
||||
case 15:
|
||||
odf_fmla = val[0];
|
||||
break;
|
||||
default:
|
||||
odf_fmla = fmla;
|
||||
break;
|
||||
}
|
||||
|
||||
XmlUtils::replace_all(odf_fmla, L"gd", L"?f");
|
||||
XmlUtils::replace_all(odf_fmla, L"h", L"logheight");
|
||||
XmlUtils::replace_all(odf_fmla, L"w", L"logwidth");
|
||||
XmlUtils::replace_all(odf_fmla, L"adj", L"$");
|
||||
XmlUtils::replace_all(name, L"gd", L"f");
|
||||
|
||||
impl_->current_drawing_state_.oox_shape_->add(name, odf_fmla);
|
||||
}
|
||||
|
||||
void odf_drawing_context::set_viewBox (double W, double H)
|
||||
{
|
||||
if (W < 0.01)
|
||||
{
|
||||
@ -1282,7 +1474,15 @@ void odf_drawing_context::set_viewBox(double W, double H)
|
||||
if (impl_->current_drawing_state_.svg_height_)
|
||||
H = impl_->current_drawing_state_.svg_height_->get_value_unit(length::emu);
|
||||
}
|
||||
impl_->current_drawing_state_.view_box_ = std::wstring(L"0 0 ") + boost::lexical_cast<std::wstring>((int)W) + L" " + boost::lexical_cast<std::wstring>((int)H);
|
||||
impl_->current_drawing_state_.view_box_ = std::wstring(L"0 0 ") + std::to_wstring((int)W) + L" " + std::to_wstring((int)H);
|
||||
|
||||
if (impl_->current_drawing_state_.oox_shape_)
|
||||
{
|
||||
if (impl_->current_drawing_state_.oox_shape_->sub_view_size)
|
||||
impl_->current_drawing_state_.oox_shape_->sub_view_size = *impl_->current_drawing_state_.oox_shape_->sub_view_size + L" " + std::to_wstring((int)W) + L" " + std::to_wstring((int)H);
|
||||
else
|
||||
impl_->current_drawing_state_.oox_shape_->sub_view_size = std::to_wstring((int)W) + L" " + std::to_wstring((int)H);
|
||||
}
|
||||
}
|
||||
void odf_drawing_context::set_flip_H(bool bVal)
|
||||
{
|
||||
@ -1887,7 +2087,7 @@ void odf_drawing_context::set_textarea_font(std::wstring & latin, std::wstring &
|
||||
if (!impl_->current_text_properties) return;
|
||||
|
||||
if (!ea.empty()) impl_->current_text_properties->content_.fo_font_family_ = ea;
|
||||
if (!cs.empty()) impl_->current_text_properties->content_.style_font_family_complex_= cs;
|
||||
if (!cs.empty()) impl_->current_text_properties->content_.style_font_family_complex_ = cs;
|
||||
if (!latin.empty()) impl_->current_text_properties->content_.style_font_family_asian_ = latin;
|
||||
|
||||
}
|
||||
|
||||
@ -139,6 +139,7 @@ public:
|
||||
void start_object(std::wstring name);
|
||||
void end_object();
|
||||
|
||||
bool isLineShape();
|
||||
void corrected_line_fill();
|
||||
|
||||
office_element_ptr & get_root_element();
|
||||
@ -149,8 +150,12 @@ public:
|
||||
bool is_exist_content();
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
void set_path (std::wstring path_string);
|
||||
void add_path_element (std::wstring command, const std::wstring & elm);
|
||||
void add_path_element (std::wstring command, std::wstring elm);
|
||||
void add_modifier (std::wstring modifier);
|
||||
void add_formula (std::wstring name, std::wstring fmla);
|
||||
void set_textarea (std::wstring l, std::wstring t, std::wstring r, std::wstring b);
|
||||
void add_handle (std::wstring x, std::wstring y, std::wstring refX, std::wstring refY,
|
||||
std::wstring minX, std::wstring maxX, std::wstring minY, std::wstring maxY);
|
||||
|
||||
void set_viewBox (double W, double H);
|
||||
|
||||
|
||||
@ -112,7 +112,7 @@ void odp_conversion_context::end_layout_slide()
|
||||
void odp_conversion_context::start_text_context()
|
||||
{
|
||||
text_context_ = new odf_text_context(this);
|
||||
|
||||
text_context_->set_styles_context(slide_context_.get_styles_context());
|
||||
}
|
||||
void odp_conversion_context::end_text_context()
|
||||
{
|
||||
@ -136,5 +136,40 @@ void odp_conversion_context::start_image(const std::wstring & image_file_name)
|
||||
|
||||
current_slide().drawing_context()->start_image(odf_ref_name);
|
||||
}
|
||||
void odp_conversion_context::start_comment(int oox_comm_id)
|
||||
{
|
||||
office_element_ptr comm_elm;
|
||||
create_element(L"office", L"annotation", comm_elm, this);
|
||||
|
||||
current_slide().comment_context()->start_comment(comm_elm, oox_comm_id);
|
||||
|
||||
current_slide().drawing_context()->start_drawing();
|
||||
current_slide().drawing_context()->start_element(comm_elm);
|
||||
}
|
||||
void odp_conversion_context::start_comment_content()
|
||||
{
|
||||
current_slide().comment_context()->start_comment_content();
|
||||
|
||||
office_element_ptr & root_comm_element = current_slide().drawing_context()->get_current_element();
|
||||
start_text_context();
|
||||
|
||||
text_context()->start_element(root_comm_element);
|
||||
text_context()->start_paragraph();
|
||||
}
|
||||
void odp_conversion_context::end_comment_content()
|
||||
{
|
||||
text_context()->end_paragraph();
|
||||
|
||||
current_slide().comment_context()->end_comment_content();
|
||||
|
||||
text_context()->end_element();
|
||||
end_text_context();
|
||||
}
|
||||
void odp_conversion_context::end_comment()
|
||||
{
|
||||
current_slide().drawing_context()->end_element();
|
||||
current_slide().drawing_context()->end_drawing();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -67,12 +67,18 @@ public:
|
||||
virtual odf_drawing_context * drawing_context() {return current_slide().drawing_context();}
|
||||
virtual odf_text_context * text_context() {return text_context_; }
|
||||
odp_slide_context * slide_context() {return &slide_context_;}
|
||||
odf_comment_context * comment_context() {return current_slide().comment_context();}
|
||||
|
||||
void start_drawings();
|
||||
void end_drawings();
|
||||
|
||||
virtual void start_image(const std::wstring & image_file_name);
|
||||
|
||||
void start_comment (int oox_comment_id);
|
||||
void end_comment ();
|
||||
void start_comment_content ();
|
||||
void end_comment_content ();
|
||||
|
||||
private:
|
||||
odp_slide_context slide_context_;
|
||||
|
||||
|
||||
@ -58,7 +58,7 @@ namespace odf_writer {
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
odp_page_state::odp_page_state(odf_conversion_context * Context, office_element_ptr & elm)
|
||||
: context_(Context), drawing_context_(Context)
|
||||
: context_(Context), drawing_context_(Context), comment_context_(Context)
|
||||
{
|
||||
page_elm_ = elm;
|
||||
|
||||
|
||||
@ -40,11 +40,11 @@
|
||||
#include"../../../Common/DocxFormat/Source/XML/Utils.h"
|
||||
|
||||
#include "odf_drawing_context.h"
|
||||
#include "odf_comment_context.h"
|
||||
|
||||
#include "office_elements_create.h"
|
||||
|
||||
|
||||
|
||||
namespace cpdoccore {
|
||||
|
||||
namespace odf_types
|
||||
@ -57,7 +57,6 @@ namespace odf_writer {
|
||||
class odp_conversion_context;
|
||||
class odf_text_context;
|
||||
|
||||
//class table_table;
|
||||
class style;
|
||||
|
||||
|
||||
@ -85,6 +84,7 @@ public:
|
||||
|
||||
///////////////////////////////
|
||||
odf_drawing_context * drawing_context(){return &drawing_context_;}
|
||||
odf_comment_context * comment_context(){return &comment_context_;}
|
||||
|
||||
std::wstring office_page_name_;
|
||||
office_element_ptr page_elm_;
|
||||
@ -94,6 +94,7 @@ private:
|
||||
odf_conversion_context * context_;
|
||||
|
||||
odf_drawing_context drawing_context_;
|
||||
odf_comment_context comment_context_;
|
||||
|
||||
friend class odp_slide_context;
|
||||
|
||||
|
||||
@ -53,6 +53,11 @@ void odp_slide_context::set_styles_context(odf_style_context* styles_context)
|
||||
styles_context_ = styles_context;
|
||||
}
|
||||
|
||||
odf_style_context* odp_slide_context::get_styles_context()
|
||||
{
|
||||
return styles_context_;
|
||||
}
|
||||
|
||||
odp_page_state & odp_slide_context::state()
|
||||
{
|
||||
return page_state_list_.back();
|
||||
|
||||
@ -53,11 +53,11 @@ public:
|
||||
void start_page (office_element_ptr & elm);
|
||||
void end_page ();
|
||||
|
||||
void set_styles_context (odf_style_context* styles_context);
|
||||
void set_styles_context(odf_style_context* styles_context);
|
||||
odf_style_context* get_styles_context();
|
||||
|
||||
odp_page_state & state();
|
||||
|
||||
odf_comment_context * comment_context();
|
||||
odf_table_context * table_context();
|
||||
|
||||
void start_table ();
|
||||
|
||||
@ -238,11 +238,11 @@ void ods_conversion_context::end_row()
|
||||
//////////////////////
|
||||
void ods_conversion_context::start_comment(int col, int row, std::wstring & author)
|
||||
{
|
||||
current_table().start_comment(col,row,author);
|
||||
current_table().start_comment(col, row, author);
|
||||
start_text_context();
|
||||
////////////////
|
||||
office_element_ptr paragr_elm;
|
||||
create_element(L"text", L"p",paragr_elm,this);
|
||||
create_element(L"text", L"p", paragr_elm, this);
|
||||
|
||||
current_text_context_->start_paragraph(paragr_elm);
|
||||
}
|
||||
@ -309,7 +309,7 @@ void ods_conversion_context::add_merge_cells(const std::wstring & ref)
|
||||
|
||||
void ods_conversion_context::start_cell(std::wstring & ref, int xfd_style)
|
||||
{
|
||||
int col=0, row=0;
|
||||
int col = 0, row = 0;
|
||||
utils::parsing_ref ( ref, col,row);
|
||||
|
||||
if (col > current_table().current_column()+1)
|
||||
@ -389,11 +389,31 @@ void ods_conversion_context::start_rows()
|
||||
void ods_conversion_context::end_rows()
|
||||
{
|
||||
//add default last row
|
||||
int repeat = (std::max)(current_table().dimension_row,64) - current_table().current_row();
|
||||
if (repeat < 0) repeat = 1;
|
||||
int repeated = (std::max)(current_table().dimension_row, 64) - current_table().current_row();
|
||||
if (repeated < 0) repeated = 1;
|
||||
|
||||
start_row(current_table().current_row()+1,repeat,0,true);
|
||||
end_row();
|
||||
while(true)
|
||||
{
|
||||
//делим на 3 - до, с комметом, после;
|
||||
int comment_idx = current_table().is_row_comment(current_table().current_row() + 1, repeated);
|
||||
|
||||
if (comment_idx < 0) break;
|
||||
int rows = current_table().comments_[comment_idx].row - current_table().current_row() - 1;
|
||||
|
||||
start_row(current_table().current_row() + 1, rows, 0, true);
|
||||
end_row();
|
||||
|
||||
start_row(current_table().current_row() + 1, 1, 0, true);
|
||||
end_row();
|
||||
|
||||
repeated -= (1 + rows);
|
||||
}
|
||||
|
||||
if (repeated > 0)
|
||||
{
|
||||
start_row(current_table().current_row() + 1, repeated, 0, true);
|
||||
end_row();
|
||||
}
|
||||
}
|
||||
|
||||
void ods_conversion_context::add_column(int start_column, int repeated, int level, bool _default)
|
||||
|
||||
@ -136,8 +136,8 @@ ods_table_state::ods_table_state(odf_conversion_context * Context, office_elemen
|
||||
{
|
||||
office_table_ = elm;
|
||||
|
||||
current_table_row_ =0;
|
||||
current_table_column_ =0;
|
||||
current_table_row_ = 0;
|
||||
current_table_column_ = 0;
|
||||
|
||||
current_level_.push_back(office_table_);
|
||||
|
||||
@ -395,7 +395,7 @@ bool ods_table_state::is_cell_hyperlink()
|
||||
bool ods_table_state::is_cell_comment()
|
||||
{
|
||||
if (cells_size_ <1)return false;
|
||||
return cells_.back().comment_idx >=0 ? true : false;
|
||||
return cells_.back().comment_idx >= 0 ? true : false;
|
||||
}
|
||||
|
||||
int ods_table_state::is_cell_hyperlink(int col, int row)
|
||||
@ -413,7 +413,18 @@ int ods_table_state::is_cell_comment(int col, int row, short repeate_col)
|
||||
{
|
||||
for (size_t i = 0; i < comments_.size(); i++)
|
||||
{
|
||||
if ((comments_[i].col < col+repeate_col && comments_[i].col >= col) && comments_[i].row == row)
|
||||
if ((comments_[i].col < col + repeate_col && comments_[i].col >= col) && comments_[i].row == row)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
int ods_table_state::is_row_comment(int row, int repeate_row)
|
||||
{
|
||||
for (size_t i = 0; i < comments_.size(); i++)
|
||||
{
|
||||
if (comments_[i].row < row + repeate_row && comments_[i].row >= row)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
@ -489,10 +500,10 @@ void ods_table_state::start_cell(office_element_ptr & elm, office_element_ptr &
|
||||
|
||||
state.empty = true;
|
||||
state.elm = elm; state.repeated = 1; state.style_name = style_name; state.style_elm = style_elm;
|
||||
state.row=current_table_row_; state.col =current_table_column_+1;
|
||||
state.row = current_table_row_; state.col =current_table_column_ + 1;
|
||||
|
||||
state.hyperlink_idx = is_cell_hyperlink(state.col, state.row);
|
||||
state.comment_idx = is_cell_comment(state.col, state.row);
|
||||
state.comment_idx = is_cell_comment(state.col, state.row);
|
||||
|
||||
current_table_column_ += state.repeated;
|
||||
cells_.push_back(state);
|
||||
@ -1016,8 +1027,8 @@ void ods_table_state::end_cell()
|
||||
|
||||
void ods_table_state::add_default_cell( short repeated)
|
||||
{
|
||||
int comment_idx = is_cell_comment(current_table_column_+1 , current_table_row_, repeated);
|
||||
if (comment_idx >=0 && repeated >1)
|
||||
int comment_idx = is_cell_comment(current_table_column_ + 1 , current_table_row_, repeated);
|
||||
if (comment_idx >= 0 && repeated > 1)
|
||||
{
|
||||
//делим на 3 - до, с комметом, после;
|
||||
int c = current_table_column_;
|
||||
|
||||
@ -300,6 +300,7 @@ public:
|
||||
int is_cell_hyperlink (int col, int row);
|
||||
bool is_cell_comment ();
|
||||
int is_cell_comment (int col, int row, short repeate_col = 1);
|
||||
int is_row_comment (int row, int repeate_row = 1);
|
||||
|
||||
ods_hyperlink_state & current_hyperlink();
|
||||
|
||||
@ -316,7 +317,8 @@ public:
|
||||
|
||||
odf_drawing_context * drawing_context(){return &drawing_context_;}
|
||||
|
||||
std::wstring office_table_name_;
|
||||
std::wstring office_table_name_;
|
||||
std::vector<ods_comment_state> comments_;
|
||||
private:
|
||||
|
||||
odf_conversion_context * context_;
|
||||
@ -342,9 +344,7 @@ private:
|
||||
std::list<ods_cell_state> cells_;
|
||||
long cells_size_;
|
||||
|
||||
std::vector<ods_hyperlink_state> hyperlinks_;
|
||||
std::vector<ods_comment_state> comments_;
|
||||
|
||||
std::vector<ods_hyperlink_state> hyperlinks_;
|
||||
std::vector<ods_shared_formula_state> shared_formulas_;
|
||||
|
||||
odf_drawing_context drawing_context_;
|
||||
|
||||
@ -50,6 +50,12 @@
|
||||
namespace cpdoccore
|
||||
{
|
||||
|
||||
oox_shape::oox_shape()
|
||||
{
|
||||
odf_type_name = L"ooxml-non-primitive";
|
||||
view_box = L"0 0 0 0";
|
||||
}
|
||||
|
||||
oox_shape_ptr oox_shape::create(int ooxPrstGeomType)
|
||||
{
|
||||
switch (ooxPrstGeomType)
|
||||
@ -127,7 +133,7 @@ oox_shape_ptr oox_shape::create(int ooxPrstGeomType)
|
||||
|
||||
default:
|
||||
if (ooxPrstGeomType > 2000) return boost::make_shared<oox_shape_textPlain>();
|
||||
else return boost::make_shared<oox_shape>();
|
||||
else return oox_shape_ptr();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -48,6 +48,8 @@ namespace cpdoccore
|
||||
public:
|
||||
static oox_shape_ptr create(int ooxPrstGeomType);
|
||||
|
||||
oox_shape();
|
||||
|
||||
struct _equation
|
||||
{
|
||||
std::wstring name;
|
||||
@ -66,20 +68,20 @@ namespace cpdoccore
|
||||
|
||||
void add(std::wstring name,std::wstring frmla)
|
||||
{
|
||||
_equation q = {name,frmla};
|
||||
_equation q = {name, frmla};
|
||||
equations.push_back(q);
|
||||
}
|
||||
|
||||
std::vector<_equation> equations;
|
||||
std::vector<_handle> handles;
|
||||
std::vector<_equation> equations;
|
||||
std::vector<_handle> handles;
|
||||
|
||||
std::wstring enhanced_path;
|
||||
std::wstring modifiers;
|
||||
std::wstring text_areas;
|
||||
std::wstring view_box;
|
||||
std::wstring enhanced_path;
|
||||
std::wstring modifiers;
|
||||
std::wstring text_areas;
|
||||
std::wstring view_box;
|
||||
_CP_OPT(std::wstring) sub_view_size;
|
||||
_CP_OPT(std::wstring) glue_points;
|
||||
|
||||
std::wstring odf_type_name;
|
||||
|
||||
_CP_OPT(std::wstring) glue_points;
|
||||
std::wstring odf_type_name;
|
||||
};
|
||||
};
|
||||
@ -234,7 +234,7 @@ void OoxConverter::convert(PPTX::Logic::SmartArt *oox_smart_art)
|
||||
odf_context()->drawing_context()->get_size (width, height);
|
||||
odf_context()->drawing_context()->get_position (x, y);
|
||||
|
||||
oox_current_child_document = dynamic_cast<OOX::IFileContainer*>(oox_smart_art->m_oCommonRels.operator->());
|
||||
oox_current_child_document = oox_smart_art->m_pFileContainer.operator->();
|
||||
|
||||
odf_context()->drawing_context()->start_group();
|
||||
|
||||
@ -372,7 +372,17 @@ void OoxConverter::convert(PPTX::Logic::CxnSp *oox_connect)
|
||||
|
||||
odf_context()->drawing_context()->start_drawing();
|
||||
|
||||
odf_context()->drawing_context()->start_shape(SimpleTypes::shapetypeLine);
|
||||
int type = SimpleTypes::shapetypeLine;
|
||||
|
||||
if ( oox_connect->spPr.Geometry.is<PPTX::Logic::PrstGeom>() )
|
||||
{
|
||||
const PPTX::Logic::PrstGeom& prstGeom = oox_connect->spPr.Geometry.as<PPTX::Logic::PrstGeom>();
|
||||
|
||||
SimpleTypes::CShapeType<> preset;
|
||||
preset.FromString(prstGeom.prst.get());
|
||||
type = preset.GetValue();
|
||||
}
|
||||
odf_context()->drawing_context()->start_shape(type);
|
||||
|
||||
convert(&oox_connect->spPr, oox_connect->style.GetPointer());
|
||||
convert(&oox_connect->nvCxnSpPr);
|
||||
@ -417,15 +427,11 @@ void OoxConverter::convert(PPTX::Logic::Shape *oox_shape)
|
||||
}
|
||||
|
||||
if (type < 0)return;
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//-----------------------------------------------------------------------------
|
||||
odf_context()->drawing_context()->start_shape(type);
|
||||
|
||||
//if (oox_shape->levelUp)
|
||||
//{
|
||||
// convert((PPTX::Logic::SpPr *)&oox_shape->levelUp->spPr, oox_shape->levelUp->style.GetPointer());
|
||||
//}
|
||||
convert(&oox_shape->spPr, oox_shape->style.GetPointer());
|
||||
//имя, описалово, номер ...
|
||||
|
||||
convert(&oox_shape->nvSpPr);
|
||||
|
||||
if (oox_shape->txXfrm.IsInit() == false)
|
||||
@ -453,6 +459,7 @@ void OoxConverter::convert(PPTX::Logic::Shape *oox_shape)
|
||||
odf_context()->drawing_context()->end_drawing();
|
||||
}
|
||||
}
|
||||
|
||||
void OoxConverter::convert(PPTX::Logic::SpPr *oox_spPr, PPTX::Logic::ShapeStyle* oox_sp_style)
|
||||
{
|
||||
if (oox_spPr == NULL) return;
|
||||
@ -465,7 +472,7 @@ void OoxConverter::convert(PPTX::Logic::SpPr *oox_spPr, PPTX::Logic::ShapeStyle*
|
||||
convert(prstGeom);
|
||||
convert(custGeom);
|
||||
|
||||
bool bLine = prstGeom ? (prstGeom->prst.get() == L"line") : false;
|
||||
bool bLine = odf_context()->drawing_context()->isLineShape();
|
||||
|
||||
if (!bLine)
|
||||
{
|
||||
@ -529,19 +536,52 @@ void OoxConverter::convert(PPTX::Logic::PrstGeom *oox_geom)
|
||||
|
||||
for (size_t i = 0; i < oox_geom->avLst.size(); i++)
|
||||
{
|
||||
if (oox_geom->avLst[i].fmla.IsInit())
|
||||
odf_context()->drawing_context()->add_modifier(oox_geom->avLst[i].fmla.get());
|
||||
odf_context()->drawing_context()->add_modifier(oox_geom->avLst[i].fmla.get_value_or(L"0"));
|
||||
}
|
||||
}
|
||||
void OoxConverter::convert(PPTX::Logic::CustGeom *oox_cust_geom)
|
||||
{
|
||||
if (!oox_cust_geom) return;
|
||||
|
||||
for (size_t i = 0; i < oox_cust_geom->gdLst.size(); i++)
|
||||
{
|
||||
odf_context()->drawing_context()->add_formula(oox_cust_geom->gdLst[i].name.get_value_or(L""), oox_cust_geom->gdLst[i].fmla.get_value_or(L""));
|
||||
}
|
||||
for (size_t i = 0; i < oox_cust_geom->pathLst.size(); i++)
|
||||
{
|
||||
convert(&oox_cust_geom->pathLst[i]);
|
||||
}
|
||||
for (size_t i = 0; i < oox_cust_geom->avLst.size(); i++)
|
||||
{
|
||||
odf_context()->drawing_context()->add_modifier(oox_cust_geom->avLst[i].fmla.get_value_or(L"0"));
|
||||
}
|
||||
for (size_t i = 0; i < oox_cust_geom->ahLst.size(); i++)
|
||||
{
|
||||
convert(oox_cust_geom->ahLst[i].ah.operator->());
|
||||
}
|
||||
if (oox_cust_geom->rect.IsInit())
|
||||
{
|
||||
odf_context()->drawing_context()->set_textarea (oox_cust_geom->rect->l.get_value_or(L"0"),
|
||||
oox_cust_geom->rect->t.get_value_or(L"0"),
|
||||
oox_cust_geom->rect->r.get_value_or(L"0"),
|
||||
oox_cust_geom->rect->b.get_value_or(L"0"));
|
||||
}
|
||||
}
|
||||
void OoxConverter::convert(PPTX::Logic::AhXY *oox_handle)
|
||||
{
|
||||
if (!oox_handle) return;
|
||||
|
||||
odf_context()->drawing_context()->add_handle(oox_handle->x, oox_handle->y,
|
||||
oox_handle->gdRefX.get_value_or(L""), oox_handle->gdRefY.get_value_or(L""),
|
||||
oox_handle->minX.get_value_or(L""), oox_handle->maxX.get_value_or(L""),
|
||||
oox_handle->minX.get_value_or(L""), oox_handle->maxY.get_value_or(L""));
|
||||
|
||||
}
|
||||
void OoxConverter::convert(PPTX::Logic::AhPolar *oox_handle)
|
||||
{
|
||||
if (!oox_handle) return;
|
||||
}
|
||||
|
||||
void OoxConverter::convert(PPTX::Logic::EffectLst *oox_effect_list)
|
||||
{
|
||||
if (!oox_effect_list) return;
|
||||
@ -619,44 +659,20 @@ void OoxConverter::convert(PPTX::Logic::PathBase *oox_path)
|
||||
{
|
||||
if (!oox_path) return;
|
||||
|
||||
PPTX::Logic::MoveTo* moveTo = dynamic_cast<PPTX::Logic::MoveTo*> (oox_path);
|
||||
PPTX::Logic::LineTo* lineTo = dynamic_cast<PPTX::Logic::LineTo*> (oox_path);
|
||||
PPTX::Logic::CubicBezTo* cubicBezTo = dynamic_cast<PPTX::Logic::CubicBezTo*> (oox_path);
|
||||
PPTX::Logic::MoveTo* moveTo = dynamic_cast<PPTX::Logic::MoveTo*> (oox_path);
|
||||
PPTX::Logic::LineTo* lineTo = dynamic_cast<PPTX::Logic::LineTo*> (oox_path);
|
||||
PPTX::Logic::CubicBezTo* cubicBezTo = dynamic_cast<PPTX::Logic::CubicBezTo*>(oox_path);
|
||||
PPTX::Logic::Close* close = dynamic_cast<PPTX::Logic::Close*> (oox_path);
|
||||
PPTX::Logic::ArcTo* arcTo = dynamic_cast<PPTX::Logic::ArcTo*> (oox_path);
|
||||
PPTX::Logic::QuadBezTo* quadBezTo = dynamic_cast<PPTX::Logic::QuadBezTo*> (oox_path);
|
||||
|
||||
if (moveTo)
|
||||
{
|
||||
std::wstring path_elm = moveTo->x + L" " + moveTo->y;
|
||||
odf_context()->drawing_context()->add_path_element(std::wstring(L"M"), path_elm);
|
||||
}
|
||||
if (lineTo)
|
||||
{
|
||||
std::wstring path_elm = lineTo->x + L" " + lineTo->y;
|
||||
odf_context()->drawing_context()->add_path_element(std::wstring(L"L"), path_elm);
|
||||
}
|
||||
if (cubicBezTo)
|
||||
{
|
||||
std::wstring path_elm = cubicBezTo->x[0] + L" " + cubicBezTo->y[0] + L" " +
|
||||
cubicBezTo->x[1] + L" " + cubicBezTo->y[1] + L" " +
|
||||
cubicBezTo->x[2] + L" " + cubicBezTo->y[2];
|
||||
odf_context()->drawing_context()->add_path_element(std::wstring(L"C"), path_elm);
|
||||
}
|
||||
if (quadBezTo)
|
||||
{
|
||||
std::wstring path_elm = quadBezTo->x[0] + L" " + quadBezTo->y[0] + L" " +
|
||||
quadBezTo->x[1] + L" " + quadBezTo->y[1];
|
||||
odf_context()->drawing_context()->add_path_element(std::wstring(L"S"), path_elm);
|
||||
}
|
||||
if (arcTo)
|
||||
{
|
||||
}
|
||||
if (close)
|
||||
{
|
||||
std::wstring path_elm ;
|
||||
odf_context()->drawing_context()->add_path_element(std::wstring(L"Z"), path_elm);
|
||||
}
|
||||
if (moveTo) convert(moveTo);
|
||||
if (lineTo) convert(lineTo);
|
||||
if (cubicBezTo) convert(cubicBezTo);
|
||||
if (quadBezTo) convert(quadBezTo);
|
||||
if (arcTo) convert(arcTo);
|
||||
if (close) convert(close);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -813,7 +829,7 @@ void OoxConverter::convert(PPTX::Logic::GradFill *oox_grad_fill, DWORD nARGB)
|
||||
|
||||
}
|
||||
|
||||
void OoxConverter::convert(PPTX::Logic::UniColor * color, std::wstring & hexString, _CP_OPT(double) & opacity, DWORD nARGB)
|
||||
void OoxConverter::convert(PPTX::Logic::UniColor * color, DWORD & nARGB)
|
||||
{
|
||||
if (!color) return;
|
||||
|
||||
@ -821,6 +837,13 @@ void OoxConverter::convert(PPTX::Logic::UniColor * color, std::wstring & hexStri
|
||||
smart_ptr<PPTX::Theme> theme(oox_theme()); theme.AddRef();
|
||||
|
||||
nARGB = color->GetRGBColor(theme, clrMap, nARGB);
|
||||
}
|
||||
|
||||
void OoxConverter::convert(PPTX::Logic::UniColor * color, std::wstring & hexString, _CP_OPT(double) & opacity, DWORD nARGB)
|
||||
{
|
||||
if (!color) return;
|
||||
|
||||
convert(color, nARGB);
|
||||
|
||||
hexString = XmlUtils::IntToString(nARGB & 0x00FFFFFF, L"#%06X");
|
||||
|
||||
@ -899,7 +922,7 @@ void OoxConverter::convert(PPTX::Logic::Ln *oox_line_prop, DWORD ARGB, PPTX::Log
|
||||
{
|
||||
if (oox_line_prop->headEnd->len.IsInit() || oox_line_prop->headEnd->type.IsInit() || oox_line_prop->headEnd->w.IsInit())
|
||||
{
|
||||
int type = 0, w=1, len =1;//medium arrow
|
||||
int type = 0, w = 1, len = 1;//medium arrow
|
||||
if (oox_line_prop->headEnd->len.IsInit()) len = oox_line_prop->headEnd->len->GetBYTECode();
|
||||
if (oox_line_prop->headEnd->type.IsInit()) type = oox_line_prop->headEnd->type->GetBYTECode();
|
||||
if (oox_line_prop->headEnd->w.IsInit()) w = oox_line_prop->headEnd->w->GetBYTECode();
|
||||
@ -911,7 +934,7 @@ void OoxConverter::convert(PPTX::Logic::Ln *oox_line_prop, DWORD ARGB, PPTX::Log
|
||||
{
|
||||
if (oox_line_prop->tailEnd->len.IsInit() || oox_line_prop->tailEnd->type.IsInit() || oox_line_prop->tailEnd->w.IsInit())
|
||||
{
|
||||
int type =0, w=1, len =1;//medium arrow
|
||||
int type = 0, w = 1, len = 1;//medium arrow
|
||||
if (oox_line_prop->tailEnd->len.IsInit()) len = oox_line_prop->tailEnd->len->GetBYTECode();
|
||||
if (oox_line_prop->tailEnd->type.IsInit()) type = oox_line_prop->tailEnd->type->GetBYTECode();
|
||||
if (oox_line_prop->tailEnd->w.IsInit()) w = oox_line_prop->tailEnd->w->GetBYTECode();
|
||||
@ -1059,9 +1082,9 @@ void OoxConverter::convert(PPTX::Logic::Paragraph *oox_paragraph, PPTX::Logic::T
|
||||
|
||||
int list_level = 0;
|
||||
|
||||
if (oox_paragraph->pPr.IsInit())
|
||||
if (oox_paragraph->pPr.IsInit() || oox_list_style)
|
||||
{
|
||||
if (oox_paragraph->pPr->lvl.IsInit() || oox_paragraph->pPr->ParagraphBullet.is_init())
|
||||
if (oox_paragraph->pPr.IsInit() && (oox_paragraph->pPr->lvl.IsInit() || oox_paragraph->pPr->ParagraphBullet.is_init()))
|
||||
{
|
||||
list_present = true;
|
||||
|
||||
@ -1074,8 +1097,8 @@ void OoxConverter::convert(PPTX::Logic::Paragraph *oox_paragraph, PPTX::Logic::T
|
||||
//свойства могут быть приписаны не только к параграфу, но и к самому объекту
|
||||
if (!paragraph_properties)
|
||||
{
|
||||
odf_context()->styles_context()->create_style(L"", odf_types::style_family::Paragraph, true, false, -1);
|
||||
paragraph_properties = odf_context()->styles_context()->last_state()->get_paragraph_properties();
|
||||
odf_context()->text_context()->get_styles_context()->create_style(L"", odf_types::style_family::Paragraph, true, false, -1);
|
||||
paragraph_properties = odf_context()->text_context()->get_styles_context()->last_state()->get_paragraph_properties();
|
||||
|
||||
//if(list_present && oox_list_style)
|
||||
//{
|
||||
@ -1135,10 +1158,10 @@ void OoxConverter::convert(PPTX::Logic::TextListStyle *oox_list_style, int level
|
||||
if (!oox_list_style) return;
|
||||
if (!paragraph_properties) return;
|
||||
|
||||
convert(oox_list_style->levels[9].GetPointer(), paragraph_properties);
|
||||
if (level < 0 || level > 9) return;
|
||||
|
||||
convert(oox_list_style->levels[level].GetPointer(), paragraph_properties);
|
||||
|
||||
}
|
||||
void OoxConverter::convert(PPTX::Logic::TextParagraphPr *oox_paragraph_pr, odf_writer::style_paragraph_properties * paragraph_properties)
|
||||
{
|
||||
@ -1196,11 +1219,9 @@ void OoxConverter::convert(PPTX::Logic::TextParagraphPr *oox_paragraph_pr, odf_w
|
||||
//nullable<SimpleTypes::CCoordinate32<> > m_oDefTabSz;
|
||||
//nullable<SimpleTypes::CTextFontAlignType<>> m_oFontAlgn;
|
||||
|
||||
|
||||
|
||||
if (oox_paragraph_pr->defRPr.IsInit())//может быть пустым !!!
|
||||
if (oox_paragraph_pr->defRPr.IsInit())
|
||||
{
|
||||
odf_writer::style_text_properties * text_properties = odf_context()->text_context()->get_text_properties();
|
||||
odf_writer::style_text_properties * text_properties = odf_context()->text_context()->get_styles_context()->last_state()->get_text_properties();
|
||||
if (text_properties)
|
||||
convert(oox_paragraph_pr->defRPr.GetPointer(), text_properties);
|
||||
|
||||
@ -1231,6 +1252,8 @@ void OoxConverter::convert(PPTX::Logic::RunProperties *oox_run_pr, odf_writer::s
|
||||
if (!oox_run_pr) return;
|
||||
if (!text_properties) return;
|
||||
|
||||
PPTX::Theme *theme = oox_theme();
|
||||
|
||||
PPTX::Logic::GradFill* gradFill = &oox_run_pr->Fill.as<PPTX::Logic::GradFill>();
|
||||
if (gradFill)
|
||||
{
|
||||
@ -1243,8 +1266,19 @@ void OoxConverter::convert(PPTX::Logic::RunProperties *oox_run_pr, odf_writer::s
|
||||
odf_context()->drawing_context()->end_area_properties();
|
||||
}
|
||||
}
|
||||
PPTX::Logic::SolidFill* solidFill = &oox_run_pr->Fill.as<PPTX::Logic::SolidFill>();
|
||||
if (solidFill)
|
||||
{
|
||||
std::wstring hexColor;
|
||||
_CP_OPT(double) opacity;
|
||||
convert(&solidFill->Color, hexColor, opacity);
|
||||
|
||||
int res = 0;
|
||||
if ((res = hexColor.find(L"#")) < 0) hexColor = std::wstring(L"#") + hexColor;
|
||||
text_properties->content_.fo_color_ = odf_types::color(hexColor);
|
||||
}
|
||||
|
||||
if (oox_run_pr->ln.IsInit())
|
||||
if (oox_run_pr->ln.IsInit() && oox_run_pr->ln->Fill.getType() != OOX::et_a_noFill)
|
||||
{
|
||||
if (odf_context()->drawing_context()->change_text_box_2_wordart())
|
||||
{
|
||||
@ -1257,7 +1291,6 @@ void OoxConverter::convert(PPTX::Logic::RunProperties *oox_run_pr, odf_writer::s
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
if (oox_run_pr->b.IsInit())
|
||||
{
|
||||
if (oox_run_pr->b.get() == true)
|
||||
@ -1266,17 +1299,6 @@ void OoxConverter::convert(PPTX::Logic::RunProperties *oox_run_pr, odf_writer::s
|
||||
text_properties->content_.fo_font_weight_ = odf_types::font_weight(odf_types::font_weight::WNormal);
|
||||
}
|
||||
|
||||
PPTX::Logic::SolidFill* solidFill = &oox_run_pr->Fill.as<PPTX::Logic::SolidFill>();
|
||||
if (solidFill)
|
||||
{
|
||||
std::wstring hexColor;
|
||||
_CP_OPT(double) opacity;
|
||||
convert(&solidFill->Color, hexColor, opacity);
|
||||
|
||||
int res = 0;
|
||||
if ((res = hexColor.find(L"#")) < 0) hexColor = std::wstring(L"#") + hexColor;
|
||||
text_properties->content_.fo_color_ = odf_types::color(hexColor);
|
||||
}
|
||||
if (oox_run_pr->i.IsInit())
|
||||
{
|
||||
if (oox_run_pr->i.get() ==true)
|
||||
@ -1293,7 +1315,17 @@ void OoxConverter::convert(PPTX::Logic::RunProperties *oox_run_pr, odf_writer::s
|
||||
if (oox_run_pr->latin.IsInit())
|
||||
{
|
||||
if (!oox_run_pr->latin->typeface.empty())
|
||||
text_properties->content_.fo_font_family_ = oox_run_pr->latin->typeface;
|
||||
{
|
||||
std::wstring font = oox_run_pr->latin->typeface;
|
||||
|
||||
if (font == L"+mj-lt")
|
||||
font = theme->themeElements.fontScheme.majorFont.latin.typeface;
|
||||
else if (font == L"+mn-lt")
|
||||
font = theme->themeElements.fontScheme.minorFont.latin.typeface;
|
||||
|
||||
if (!font.empty())
|
||||
text_properties->content_.fo_font_family_ = font;
|
||||
}
|
||||
else
|
||||
{
|
||||
text_properties->content_.fo_font_family_ = L"Calibri";//default_font; ????
|
||||
@ -1302,7 +1334,17 @@ void OoxConverter::convert(PPTX::Logic::RunProperties *oox_run_pr, odf_writer::s
|
||||
if (oox_run_pr->ea.IsInit())
|
||||
{
|
||||
if (!oox_run_pr->ea->typeface.empty())
|
||||
text_properties->content_.style_font_family_asian_ = oox_run_pr->ea->typeface;
|
||||
{
|
||||
std::wstring font = oox_run_pr->ea->typeface;
|
||||
|
||||
if (font == L"+mj-ea")
|
||||
font = theme->themeElements.fontScheme.majorFont.ea.typeface;
|
||||
else if (font == L"+mn-ea")
|
||||
font = theme->themeElements.fontScheme.minorFont.ea.typeface;
|
||||
|
||||
if (!font.empty())
|
||||
text_properties->content_.style_font_family_asian_ = font;
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
@ -1310,7 +1352,17 @@ void OoxConverter::convert(PPTX::Logic::RunProperties *oox_run_pr, odf_writer::s
|
||||
if (oox_run_pr->cs.IsInit())
|
||||
{
|
||||
if (!oox_run_pr->cs->typeface.empty())
|
||||
text_properties->content_.style_font_family_complex_ = oox_run_pr->cs->typeface;
|
||||
{
|
||||
std::wstring font = oox_run_pr->cs->typeface;
|
||||
|
||||
if (font == L"+mj-cs")
|
||||
font = theme->themeElements.fontScheme.majorFont.cs.typeface;
|
||||
else if (font == L"+mn-cs")
|
||||
font = theme->themeElements.fontScheme.minorFont.cs.typeface;
|
||||
|
||||
if (!font.empty())
|
||||
text_properties->content_.style_font_family_complex_ = font;
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
@ -1439,30 +1491,31 @@ void OoxConverter::convert(PPTX::Logic::TxBody *oox_txBody, PPTX::Logic::ShapeSt
|
||||
|
||||
odf_context()->start_text_context();
|
||||
|
||||
|
||||
|
||||
for (size_t i = 0; i < oox_txBody->Paragrs.size(); i++)
|
||||
{
|
||||
convert(&oox_txBody->Paragrs[i], oox_txBody->lstStyle.GetPointer());
|
||||
}
|
||||
odf_context()->drawing_context()->set_text( odf_context()->text_context());
|
||||
|
||||
//наложим внешние настройки для текста
|
||||
//внешние настройки для текста
|
||||
|
||||
convert(oox_txBody->bodyPr.GetPointer());
|
||||
|
||||
if (oox_style)
|
||||
{
|
||||
convert(&oox_style->fontRef);
|
||||
}
|
||||
|
||||
odf_context()->end_text_context();
|
||||
}
|
||||
void OoxConverter::convert(PPTX::Logic::ArcTo *oox_geom_path)
|
||||
{
|
||||
if (!oox_geom_path) return;
|
||||
|
||||
//std::wstring path_elm = std::to_wstring ((int)pt2emu(oox_geom_path->m_oPt.m_oX.GetValue())) +
|
||||
// std::wstring(L" ")+ std::to_wstring ((int)pt2emu(oox_geom_path->m_oPt.m_oY.GetValue()));
|
||||
//
|
||||
//odf_context()->drawing_context()->add_path_element(std::wstring(L"A"), path_elm);
|
||||
std::wstring path_elm = oox_geom_path->hR + L" " + oox_geom_path->wR + L" " + oox_geom_path->swAng + L" " + oox_geom_path->stAng;
|
||||
|
||||
odf_context()->drawing_context()->add_path_element(std::wstring(L"G"), path_elm);
|
||||
}
|
||||
void OoxConverter::convert(PPTX::Logic::QuadBezTo *oox_geom_path)
|
||||
{
|
||||
@ -1493,14 +1546,19 @@ void OoxConverter::convert(PPTX::Logic::Close *oox_geom_path)
|
||||
void OoxConverter::convert(PPTX::Logic::StyleRef *style_ref, int type)
|
||||
{
|
||||
if (!style_ref) return;
|
||||
|
||||
|
||||
DWORD nARGB = 0;
|
||||
convert(&style_ref->Color, nARGB);
|
||||
|
||||
if (style_ref->idx.IsInit() == false)
|
||||
{
|
||||
std::wstring hexColor;
|
||||
std::wstring hexColor = XmlUtils::IntToString(nARGB & 0x00FFFFFF, L"#%06X");
|
||||
_CP_OPT(double) opacity;
|
||||
|
||||
convert(&style_ref->Color, hexColor, opacity);
|
||||
if ((nARGB >> 24) != 0xff)
|
||||
{
|
||||
opacity = ((nARGB >> 24) /255.) * 100.;
|
||||
}
|
||||
|
||||
if (type != 3) //?? todooo
|
||||
{
|
||||
@ -1540,14 +1598,14 @@ void OoxConverter::convert(PPTX::Logic::StyleRef *style_ref, int type)
|
||||
}
|
||||
}
|
||||
|
||||
convert(fill, style_ref->Color.GetARGB());
|
||||
convert(fill, nARGB);
|
||||
}
|
||||
else if (type == 2)
|
||||
{
|
||||
index -= 1;
|
||||
if ((index >= 0) || (index < theme->themeElements.fmtScheme.lnStyleLst.size()))
|
||||
{
|
||||
convert(&theme->themeElements.fmtScheme.lnStyleLst[index], style_ref->Color.GetARGB());
|
||||
convert(&theme->themeElements.fmtScheme.lnStyleLst[index], nARGB);
|
||||
}
|
||||
}
|
||||
else if (type == 3)
|
||||
@ -1585,7 +1643,15 @@ void OoxConverter::convert(PPTX::Logic::FontRef *style_font_ref)
|
||||
style_font = &theme->themeElements.fontScheme.minorFont;
|
||||
}
|
||||
if (style_font)
|
||||
odf_context()->drawing_context()->set_textarea_font(style_font->latin.typeface, style_font->ea.typeface, style_font->cs.typeface);
|
||||
{
|
||||
std::wstring latin = style_font->latin.typeface;
|
||||
std::wstring ea = style_font->ea.typeface;
|
||||
std::wstring cs = style_font->cs.typeface;
|
||||
|
||||
//theme->themeElements.fontScheme
|
||||
|
||||
odf_context()->drawing_context()->set_textarea_font(latin, ea, cs);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -181,6 +181,14 @@ void OoxConverter::convert(OOX::WritingElement *oox_unknown)
|
||||
{
|
||||
convert(dynamic_cast<PPTX::Logic::CustGeom*>(oox_unknown));
|
||||
}break;
|
||||
case OOX::et_a_ahXY:
|
||||
{
|
||||
convert(dynamic_cast<PPTX::Logic::AhXY*>(oox_unknown));
|
||||
}break;
|
||||
case OOX::et_a_ahPolar:
|
||||
{
|
||||
convert(dynamic_cast<PPTX::Logic::AhPolar*>(oox_unknown));
|
||||
}break;
|
||||
case OOX::et_a_lnTo:
|
||||
{
|
||||
convert(dynamic_cast<PPTX::Logic::LineTo*>(oox_unknown));
|
||||
|
||||
@ -322,6 +322,8 @@ namespace PPTX
|
||||
class InnerShdw;
|
||||
class OuterShdw;
|
||||
class PrstShdw;
|
||||
class AhXY;
|
||||
class AhPolar;
|
||||
}
|
||||
}
|
||||
|
||||
@ -390,6 +392,7 @@ public:
|
||||
void convert(PPTX::Logic::PathBase *oox_path);
|
||||
void convert(PPTX::Logic::BodyPr *oox_bodyPr);
|
||||
void convert(PPTX::Logic::UniFill *oox_fill, DWORD ARGB = 0);
|
||||
void convert(PPTX::Logic::UniColor *color, DWORD & nARGB);
|
||||
void convert(PPTX::Logic::UniColor *color, std::wstring & hexString, _CP_OPT(double) & opacity, DWORD ARGB = 0);
|
||||
void convert(PPTX::Logic::NvSpPr *oox_nvSpPr);
|
||||
void convert(PPTX::Logic::CNvPr *oox_cnvPr);
|
||||
@ -417,6 +420,8 @@ public:
|
||||
void convert(PPTX::Logic::QuadBezTo *oox_geom_path);
|
||||
void convert(PPTX::Logic::CubicBezTo *oox_geom_path);
|
||||
void convert(PPTX::Logic::Close *oox_geom_path);
|
||||
void convert(PPTX::Logic::AhXY *oox_handle);
|
||||
void convert(PPTX::Logic::AhPolar *oox_handle);
|
||||
void convert(PPTX::Logic::EffectStyle *oox_effect);
|
||||
void convert(PPTX::Logic::EffectLst *oox_effect_list);
|
||||
void convert(PPTX::Logic::InnerShdw *oox_effect);
|
||||
|
||||
@ -2248,32 +2248,25 @@ void DocxConverter::convert(SimpleTypes::CTheme<>* oox_font_theme, _CP_OPT(std::
|
||||
case SimpleTypes::themeMajorAscii:
|
||||
case SimpleTypes::themeMajorHAnsi :
|
||||
font = docx_theme->themeElements.fontScheme.majorFont.latin.typeface;
|
||||
if (font.length() > 0) odf_font_name = font;
|
||||
break;
|
||||
case SimpleTypes::themeMajorBidi:
|
||||
font = docx_theme->themeElements.fontScheme.majorFont.cs.typeface;
|
||||
if (font.length() > 0) odf_font_name = font;
|
||||
break;
|
||||
case SimpleTypes::themeMajorEastAsia:
|
||||
font = docx_theme->themeElements.fontScheme.majorFont.ea.typeface;
|
||||
if (font.length() > 0) odf_font_name = font;
|
||||
break;
|
||||
case SimpleTypes::themeMinorAscii:
|
||||
case SimpleTypes::themeMinorHAnsi:
|
||||
font = docx_theme->themeElements.fontScheme.minorFont.latin.typeface;
|
||||
if (font.length() > 0) odf_font_name = font;
|
||||
break;
|
||||
case SimpleTypes::themeMinorBidi:
|
||||
font = docx_theme->themeElements.fontScheme.minorFont.cs.typeface;
|
||||
if (font.length() > 0) odf_font_name = font;
|
||||
break;
|
||||
case SimpleTypes::themeMinorEastAsia:
|
||||
font = docx_theme->themeElements.fontScheme.minorFont.ea.typeface;
|
||||
if (font.length() > 0) odf_font_name = font;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (!font.empty()) odf_font_name = font;
|
||||
}
|
||||
|
||||
void DocxConverter::convert(OOX::Logic::CText *oox_text)
|
||||
@ -3399,7 +3392,7 @@ void DocxConverter::convert(OOX::Logic::CCommentRangeStart* oox_comm_start)
|
||||
|
||||
bool added = odt_context->start_comment(oox_comm_id);
|
||||
|
||||
if (added==false)
|
||||
if (added == false)
|
||||
{
|
||||
convert_comment(oox_comm_id);
|
||||
}
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
#include "../../../ASCOfficePPTXFile/PPTXFormat/Folder.h"
|
||||
#include "../../../ASCOfficePPTXFile/PPTXFormat/Presentation.h"
|
||||
#include "../../../ASCOfficePPTXFile/PPTXFormat/Slide.h"
|
||||
|
||||
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Table/Table.h"
|
||||
|
||||
#include <boost/lexical_cast.hpp>
|
||||
@ -327,7 +328,7 @@ void PptxConverter::convert_slides()
|
||||
if (slide->Layout->clrMapOvr.IsInit() && slide->Layout->clrMapOvr->overrideClrMapping.IsInit())
|
||||
current_clrMap = slide->Layout->clrMapOvr->overrideClrMapping.GetPointer();
|
||||
current_slide = slide->Layout.operator->();
|
||||
convert_slide(&slide->Layout->cSld, false);
|
||||
convert_slide(&slide->Layout->cSld, true);
|
||||
odp_context->end_master_slide();
|
||||
|
||||
m_mapMasters.insert(std::make_pair(slide->Master->m_sOutputFilename + slide->Layout->m_sOutputFilename, master_style_name));
|
||||
@ -369,16 +370,14 @@ void PptxConverter::convert_slides()
|
||||
//nullable_bool showMasterPhAnim;
|
||||
//nullable_bool showMasterSp;
|
||||
|
||||
convert_slide(slide->cSld.GetPointer(), true);
|
||||
convert_slide (slide->cSld.GetPointer(), true);
|
||||
convert (slide->transition.GetPointer());
|
||||
|
||||
convert (slide->comments.operator->());
|
||||
|
||||
|
||||
//nullable<Logic::Transition> transition;
|
||||
//nullable<Logic::Timing> timing;
|
||||
|
||||
//smart_ptr<NotesSlide> Note;
|
||||
|
||||
//smart_ptr<PPTX::Comments> comments;
|
||||
|
||||
odp_context->end_slide();
|
||||
}
|
||||
}
|
||||
@ -394,7 +393,47 @@ void PptxConverter::convert(OOX::WritingElement *oox_unknown)
|
||||
}break;
|
||||
}
|
||||
}
|
||||
void PptxConverter::convert(PPTX::Comments *oox_comments)
|
||||
{
|
||||
if (!oox_comments) return;
|
||||
|
||||
for (size_t i = 0; i < oox_comments->m_arComments.size(); i++)
|
||||
{
|
||||
PPTX::Logic::Comment & oox_comment = oox_comments->m_arComments[i];
|
||||
|
||||
odp_context->start_comment(oox_comment.idx.get_value_or(-1));
|
||||
odp_context->start_comment_content();
|
||||
|
||||
if (oox_comment.pos_x.IsInit() && oox_comment.pos_y.IsInit())
|
||||
odp_context->comment_context()->set_position (*oox_comment.pos_x / 10., *oox_comment.pos_y / 10.); //pt
|
||||
|
||||
if (oox_comment.authorId.IsInit() && presentation->commentAuthors.IsInit())
|
||||
{
|
||||
for (size_t a = 0; a < presentation->commentAuthors->m_arAuthors.size(); a++)
|
||||
{
|
||||
PPTX::Logic::CommentAuthor & autor = presentation->commentAuthors->m_arAuthors[a];
|
||||
|
||||
if (autor.id.IsInit() && autor.id.get() == oox_comment.authorId.get())
|
||||
{
|
||||
odp_context->comment_context()->set_author(autor.name.get_value_or(L""));
|
||||
odp_context->comment_context()->set_initials(autor.initials.get_value_or(L""));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (oox_comment.dt.IsInit()) odp_context->comment_context()->set_date(*oox_comment.dt);
|
||||
if (oox_comment.text.IsInit()) odp_context->text_context()->add_text_content(*oox_comment.text);
|
||||
|
||||
odp_context->end_comment_content();
|
||||
odp_context->end_comment();
|
||||
}
|
||||
}
|
||||
void PptxConverter::convert(PPTX::Logic::Transition *oox_transition)
|
||||
{
|
||||
if (!oox_transition) return;
|
||||
|
||||
|
||||
}
|
||||
void PptxConverter::convert(PPTX::Logic::TableProperties *oox_table_pr)
|
||||
{
|
||||
if (!oox_table_pr) return;
|
||||
@ -897,22 +936,16 @@ void PptxConverter::convert_slide(PPTX::Logic::CSld *oox_slide, bool bPlaceholde
|
||||
smart_ptr<PPTX::WrapperWritingElement> pElem = oox_slide->spTree.SpTreeElems[i].GetElem();
|
||||
smart_ptr<PPTX::Logic::Shape> pShape = pElem.smart_dynamic_cast<PPTX::Logic::Shape>();
|
||||
|
||||
if (pShape.IsInit() && pShape->nvSpPr.nvPr.ph.is_init())
|
||||
if (pShape.IsInit())
|
||||
{
|
||||
pShape->FillLevelUp();
|
||||
if (bPlaceholders)
|
||||
{
|
||||
PPTX::Logic::Shape update_shape;
|
||||
|
||||
pShape->levelUp->Merge(update_shape, true);
|
||||
pShape->Merge(update_shape);
|
||||
if (!bPlaceholders && pShape->nvSpPr.nvPr.ph.is_init())
|
||||
continue;
|
||||
|
||||
OoxConverter::convert(&update_shape);
|
||||
}
|
||||
else
|
||||
{
|
||||
OoxConverter::convert(pShape.operator->());
|
||||
}
|
||||
PPTX::Logic::Shape update_shape;
|
||||
pShape->Merge(update_shape);
|
||||
|
||||
OoxConverter::convert(&update_shape);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -48,6 +48,7 @@ namespace PPTX
|
||||
{
|
||||
class TableStyles;
|
||||
class Presentation;
|
||||
class Comments;
|
||||
class Folder;
|
||||
|
||||
namespace Logic
|
||||
@ -105,8 +106,10 @@ namespace Oox2Odf
|
||||
|
||||
void convert_slide (PPTX::Logic::CSld *oox_slide, bool bPlaceholders = true);
|
||||
void convert_layout (PPTX::Logic::CSld *oox_slide);
|
||||
void convert (PPTX::Comments *oox_comments);
|
||||
|
||||
void convert(PPTX::Logic::Bg *oox_background);
|
||||
void convert(PPTX::Logic::Transition *oox_transition);
|
||||
|
||||
void convert(PPTX::Logic::Table *oox_table);
|
||||
void convert(PPTX::Logic::TableRow *oox_table_row);
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8,00"
|
||||
Version="8.00"
|
||||
Name="Oox2OdfConverter"
|
||||
ProjectGUID="{BEE01B53-244A-44E6-8947-ED9342D9247E}"
|
||||
RootNamespace="Oox2OdfConverter"
|
||||
|
||||
@ -912,16 +912,7 @@ HRESULT CDrawingConverter::SetMainDocument(BinDocxRW::CDocxSerializer* pDocument
|
||||
m_pImageManager->m_nDocumentType = XMLWRITER_DOC_TYPE_DOCX;
|
||||
return S_OK;
|
||||
}
|
||||
HRESULT CDrawingConverter::SetRelsPath(const std::wstring& bsRelsPath)
|
||||
{
|
||||
// чтобы не переоткрывать рельсы - посмотрим - может у нас уже есть такой??
|
||||
m_strCurrentRelsPath = bsRelsPath;
|
||||
return SetCurrentRelsPath();
|
||||
}
|
||||
std::wstring CDrawingConverter::GetRelsPath()
|
||||
{
|
||||
return m_strCurrentRelsPath;
|
||||
}
|
||||
|
||||
HRESULT CDrawingConverter::SetMediaDstPath(const std::wstring& bsMediaPath)
|
||||
{
|
||||
m_pBinaryWriter->m_pCommon->m_pImageManager->m_strDstMedia = (std::wstring)bsMediaPath;
|
||||
@ -1062,9 +1053,7 @@ PPTX::Logic::SpTreeElem CDrawingConverter::ObjectFromXml(const std::wstring& sXm
|
||||
XmlUtils::CXmlNode oNodeContent;
|
||||
oChilds.GetAt(0, oNodeContent);
|
||||
|
||||
std::wstring strCurrentRelsPath = m_strCurrentRelsPath;
|
||||
|
||||
if (L"dgm:relIds" == oNodeContent.GetName() && m_pBinaryWriter->m_pCommonRels->is_init())
|
||||
if (L"dgm:relIds" == oNodeContent.GetName() && m_pBinaryWriter->m_pCurrentContainer->is_init())
|
||||
{
|
||||
doc_LoadDiagram(&oElem, oNodeContent, ppMainProps, true);
|
||||
}
|
||||
@ -1597,7 +1586,7 @@ void CDrawingConverter::doc_LoadDiagram(PPTX::Logic::SpTreeElem *result, XmlUtil
|
||||
|
||||
if (id_data.IsInit())
|
||||
{
|
||||
oFileData = (*m_pBinaryWriter->m_pCommonRels)->Find(*id_data);
|
||||
oFileData = (*m_pBinaryWriter->m_pCurrentContainer)->Find(*id_data);
|
||||
|
||||
if (oFileData.is_init())
|
||||
{
|
||||
@ -1616,7 +1605,7 @@ void CDrawingConverter::doc_LoadDiagram(PPTX::Logic::SpTreeElem *result, XmlUtil
|
||||
}
|
||||
if (id_drawing.is_init())
|
||||
{
|
||||
oFileDrawing = (*m_pBinaryWriter->m_pCommonRels)->Find(*id_drawing);
|
||||
oFileDrawing = (*m_pBinaryWriter->m_pCurrentContainer)->Find(*id_drawing);
|
||||
pDiagramDrawing = dynamic_cast<OOX::CDiagramDrawing*>(oFileDrawing.operator->());
|
||||
}
|
||||
if (!pDiagramDrawing && pDiagramData)
|
||||
@ -1641,8 +1630,7 @@ void CDrawingConverter::doc_LoadDiagram(PPTX::Logic::SpTreeElem *result, XmlUtil
|
||||
{
|
||||
result->InitElem(new PPTX::Logic::SpTree(*pDiagramDrawing->m_oShapeTree));
|
||||
//to correct write blipFill rId to binary
|
||||
m_strCurrentRelsPath = pDiagramDrawing->GetReadPath().GetPath();
|
||||
SetCurrentRelsPath();
|
||||
SetRels(pDiagramDrawing);
|
||||
}
|
||||
else
|
||||
{//BG-FSC1.docx
|
||||
@ -2604,10 +2592,10 @@ void CDrawingConverter::doc_LoadShape(PPTX::Logic::SpTreeElem *elem, XmlUtils::C
|
||||
{
|
||||
std::wstring sId = oNodeTextData.GetAttribute(L"id");
|
||||
|
||||
if (sId.length() > 0 && m_pBinaryWriter->m_pCommonRels->IsInit())
|
||||
if (sId.length() > 0 && m_pBinaryWriter->m_pCurrentContainer->IsInit())
|
||||
{
|
||||
OOX::RId rId(sId);
|
||||
smart_ptr<PPTX::LegacyDiagramText> pExt = (*m_pBinaryWriter->m_pCommonRels)->legacyDiagramText(rId);
|
||||
smart_ptr<PPTX::LegacyDiagramText> pExt = (*m_pBinaryWriter->m_pCurrentContainer)->GetLegacyDiagramText(rId);
|
||||
|
||||
if (pExt.IsInit())
|
||||
{
|
||||
@ -5275,27 +5263,19 @@ void CDrawingConverter::Clear()
|
||||
RELEASEOBJECT(pMem);
|
||||
}
|
||||
m_mapShapeTypes.clear();
|
||||
m_mapRels.clear();
|
||||
}
|
||||
|
||||
HRESULT CDrawingConverter::SetCurrentRelsPath()
|
||||
void CDrawingConverter::SetRels(smart_ptr<OOX::IFileContainer> container)
|
||||
{
|
||||
std::map<std::wstring, smart_ptr<PPTX::CCommonRels>>::iterator pPair = m_mapRels.find(m_strCurrentRelsPath);
|
||||
|
||||
if (m_mapRels.end() == pPair)
|
||||
{
|
||||
smart_ptr<PPTX::CCommonRels> pCR = new PPTX::CCommonRels();
|
||||
m_mapRels.insert(std::pair<std::wstring, NSCommon::smart_ptr<PPTX::CCommonRels>>(m_strCurrentRelsPath, pCR));
|
||||
|
||||
pPair = m_mapRels.find(m_strCurrentRelsPath);
|
||||
|
||||
OOX::CPath filename = m_strCurrentRelsPath;
|
||||
pPair->second->_read(filename);
|
||||
}
|
||||
|
||||
*m_pBinaryWriter->m_pCommonRels = pPair->second;
|
||||
|
||||
return S_OK;
|
||||
*m_pBinaryWriter->m_pCurrentContainer = container;
|
||||
}
|
||||
void CDrawingConverter::SetRels(OOX::IFileContainer *container)
|
||||
{
|
||||
*m_pBinaryWriter->m_pCurrentContainer = smart_ptr<OOX::IFileContainer>(container);
|
||||
m_pBinaryWriter->m_pCurrentContainer->AddRef();
|
||||
}
|
||||
smart_ptr<OOX::IFileContainer> CDrawingConverter::GetRels()
|
||||
{
|
||||
return *m_pBinaryWriter->m_pCurrentContainer;
|
||||
}
|
||||
void CDrawingConverter::SetFontManager(CFontManager* pFontManager)
|
||||
{
|
||||
|
||||
@ -63,6 +63,7 @@ namespace BinDocxRW
|
||||
namespace OOX
|
||||
{
|
||||
class CContentTypes;
|
||||
class IFileContainer;
|
||||
}
|
||||
namespace NSBinPptxRW
|
||||
{
|
||||
@ -186,9 +187,7 @@ namespace NSBinPptxRW
|
||||
};
|
||||
|
||||
|
||||
std::map<std::wstring, CShape*> m_mapShapeTypes;
|
||||
std::map<std::wstring, NSCommon::smart_ptr<PPTX::CCommonRels>> m_mapRels;
|
||||
std::wstring m_strCurrentRelsPath;
|
||||
std::map<std::wstring, CShape*> m_mapShapeTypes;
|
||||
|
||||
NSBinPptxRW::CBinaryFileWriter* m_pBinaryWriter;
|
||||
int m_lNextId;
|
||||
@ -211,9 +210,11 @@ namespace NSBinPptxRW
|
||||
|
||||
~CDrawingConverter();
|
||||
|
||||
HRESULT SetMainDocument (BinDocxRW::CDocxSerializer* pDocument);
|
||||
HRESULT SetRelsPath (const std::wstring& sRelsPath);
|
||||
std::wstring GetRelsPath ();
|
||||
void SetRels(OOX::IFileContainer *container);
|
||||
void SetRels(smart_ptr<OOX::IFileContainer> container);
|
||||
smart_ptr<OOX::IFileContainer> GetRels();
|
||||
|
||||
HRESULT SetMainDocument (BinDocxRW::CDocxSerializer* pDocument);
|
||||
HRESULT SetMediaDstPath (const std::wstring& sMediaPath);
|
||||
HRESULT SetEmbedDstPath (const std::wstring& sEmbedPath);
|
||||
|
||||
|
||||
@ -80,7 +80,10 @@ namespace NSBinPptxRW
|
||||
ImageMap = 42,
|
||||
FontMap = 43,
|
||||
|
||||
FontsEmbedded = 44
|
||||
FontsEmbedded = 44,
|
||||
SlideNotesRels = 45,
|
||||
NotesRels = 46,
|
||||
NotesMastersRels= 47
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@ -718,11 +718,12 @@ namespace NSBinPptxRW
|
||||
}
|
||||
CBinaryFileWriter::CBinaryFileWriter()
|
||||
{
|
||||
m_pMainDocument = NULL;
|
||||
m_pCommon = new CCommonWriter();
|
||||
m_pCommonRels = new NSCommon::smart_ptr<PPTX::CCommonRels>();
|
||||
m_pTheme = new NSCommon::smart_ptr<PPTX::Theme>();
|
||||
m_pClrMap = new NSCommon::smart_ptr<PPTX::Logic::ClrMap>();
|
||||
m_pMainDocument = NULL;
|
||||
m_pCommon = new CCommonWriter();
|
||||
//m_pCommonRels = new NSCommon::smart_ptr<PPTX::CCommonRels>();
|
||||
m_pCurrentContainer = new NSCommon::smart_ptr<OOX::IFileContainer>();
|
||||
m_pTheme = new NSCommon::smart_ptr<PPTX::Theme>();
|
||||
m_pClrMap = new NSCommon::smart_ptr<PPTX::Logic::ClrMap>();
|
||||
|
||||
Clear();
|
||||
}
|
||||
@ -730,7 +731,8 @@ namespace NSBinPptxRW
|
||||
{
|
||||
RELEASEARRAYOBJECTS (m_pStreamData);
|
||||
RELEASEOBJECT (m_pCommon);
|
||||
RELEASEOBJECT (m_pCommonRels);
|
||||
//RELEASEOBJECT (m_pCommonRels);
|
||||
RELEASEOBJECT (m_pCurrentContainer);
|
||||
|
||||
RELEASEOBJECT (m_pTheme);
|
||||
RELEASEOBJECT (m_pClrMap);
|
||||
|
||||
@ -51,6 +51,7 @@ namespace OOX
|
||||
class OleObject;
|
||||
class CContentTypes;
|
||||
class WritingElement;
|
||||
class IFileContainer;
|
||||
}
|
||||
namespace NSCommon
|
||||
{
|
||||
@ -63,7 +64,6 @@ namespace NSCommon
|
||||
}
|
||||
namespace PPTX
|
||||
{
|
||||
class CCommonRels;
|
||||
class Theme;
|
||||
namespace Logic
|
||||
{
|
||||
@ -152,6 +152,9 @@ namespace NSBinPptxRW
|
||||
|
||||
std::vector<_masterSlideInfo> m_oRels;
|
||||
std::vector<LONG> m_oSlide_Layout_Rels;
|
||||
std::vector<LONG> m_oSlide_Notes_Rels;
|
||||
std::vector<LONG> m_oNote_Rels;
|
||||
std::vector<LONG> m_oNotesMasters_Rels;
|
||||
|
||||
NSShapeImageGen::CImageManager* m_pImageManager;
|
||||
|
||||
@ -223,7 +226,7 @@ namespace NSBinPptxRW
|
||||
CCommonWriter* m_pCommon;
|
||||
std::wstring m_strMainFolder;
|
||||
|
||||
NSCommon::smart_ptr<PPTX::CCommonRels>* m_pCommonRels;
|
||||
NSCommon::smart_ptr<OOX::IFileContainer>* m_pCurrentContainer;
|
||||
BinDocxRW::CDocxSerializer * m_pMainDocument;
|
||||
|
||||
NSCommon::smart_ptr<PPTX::Theme>* m_pTheme;
|
||||
|
||||
@ -147,13 +147,18 @@ namespace PPTX2EditorAdvanced
|
||||
|
||||
// проверяем theme
|
||||
size_t pPointerTh = (size_t)(noteMaster->theme_.operator ->());
|
||||
LONG nNotesMastersRelsIndex = -1;
|
||||
std::map<size_t, LONG>::const_iterator pSearchTh = pCommon->themes.find(pPointerTh);
|
||||
if (pSearchTh == pCommon->themes.end())
|
||||
{
|
||||
LONG lCountTh = (LONG)_themes.size();
|
||||
pCommon->themes [pPointerTh] = lCountTh;
|
||||
_themes.push_back(noteMaster->theme_);
|
||||
nNotesMastersRelsIndex = lCountTh;
|
||||
} else {
|
||||
nNotesMastersRelsIndex = pSearchTh->second;
|
||||
}
|
||||
oBinaryWriter.m_pCommon->m_oNotesMasters_Rels.push_back(nNotesMastersRelsIndex);
|
||||
}
|
||||
|
||||
// записываем все слайды
|
||||
@ -194,7 +199,7 @@ namespace PPTX2EditorAdvanced
|
||||
|
||||
// проверяем note
|
||||
size_t pPointerN = (size_t)(slide->Note.operator ->());
|
||||
|
||||
LONG nNoteIndex = -1;
|
||||
if (NULL != pPointerN)
|
||||
{
|
||||
std::map<size_t, LONG>::const_iterator pSearchN = pCommon->notes.find(pPointerN);
|
||||
@ -203,8 +208,27 @@ namespace PPTX2EditorAdvanced
|
||||
LONG lCountN = (LONG)_notes.size();
|
||||
pCommon->notes [pPointerN] = lCountN;
|
||||
_notes.push_back(slide->Note);
|
||||
nNoteIndex = lCountN;
|
||||
}
|
||||
}
|
||||
oBinaryWriter.m_pCommon->m_oSlide_Notes_Rels.push_back(nNoteIndex);
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < _notes.size(); ++i)
|
||||
{
|
||||
smart_ptr<PPTX::NotesSlide> note = _notes[i];
|
||||
LONG nMasterIndex = -1;
|
||||
smart_ptr<PPTX::NotesMaster> noteMaster = note->Get(OOX::Presentation::FileTypes::NotesMaster).smart_dynamic_cast<PPTX::NotesMaster>();
|
||||
if(noteMaster.is_init())
|
||||
{
|
||||
size_t pPointerL = (size_t)(noteMaster.operator ->());
|
||||
std::map<size_t, LONG>::const_iterator pSearchL = pCommon->notesMasters.find(pPointerL);
|
||||
if (pSearchL != pCommon->notesMasters.end())
|
||||
{
|
||||
nMasterIndex = pSearchL->second;
|
||||
}
|
||||
}
|
||||
oBinaryWriter.m_pCommon->m_oNote_Rels.push_back(nMasterIndex);
|
||||
}
|
||||
|
||||
// нужно записать все в maintables. А кроме главных таблиц ничего и нету. Все остальное лежит в них
|
||||
@ -328,27 +352,22 @@ namespace PPTX2EditorAdvanced
|
||||
_slides[i]->toPPTY(&oBinaryWriter);
|
||||
}
|
||||
|
||||
if (false)
|
||||
{
|
||||
// ПОКА нету NOTES
|
||||
|
||||
// notes
|
||||
oBinaryWriter.StartMainRecord(NSMainTables::NotesSlides);
|
||||
ULONG nCountN = (ULONG)_notes.size();
|
||||
oBinaryWriter.WriteULONG(nCountN);
|
||||
for (ULONG i = 0; i < nCountN; ++i)
|
||||
{
|
||||
_notes[i]->toPPTY(&oBinaryWriter);
|
||||
}
|
||||
oBinaryWriter.StartMainRecord(NSMainTables::NotesSlides);
|
||||
ULONG nCountN = (ULONG)_notes.size();
|
||||
oBinaryWriter.WriteULONG(nCountN);
|
||||
for (ULONG i = 0; i < nCountN; ++i)
|
||||
{
|
||||
_notes[i]->toPPTY(&oBinaryWriter);
|
||||
}
|
||||
|
||||
// notesmasters
|
||||
oBinaryWriter.StartMainRecord(NSMainTables::NotesMasters);
|
||||
ULONG nCountNM = (ULONG)_notesMasters.size();
|
||||
oBinaryWriter.WriteULONG(nCountNM);
|
||||
for (ULONG i = 0; i < nCountNM; ++i)
|
||||
{
|
||||
_notesMasters[i]->toPPTY(&oBinaryWriter);
|
||||
}
|
||||
oBinaryWriter.StartMainRecord(NSMainTables::NotesMasters);
|
||||
ULONG nCountNM = (ULONG)_notesMasters.size();
|
||||
oBinaryWriter.WriteULONG(nCountNM);
|
||||
for (ULONG i = 0; i < nCountNM; ++i)
|
||||
{
|
||||
_notesMasters[i]->toPPTY(&oBinaryWriter);
|
||||
}
|
||||
|
||||
// ImageMap ---------------------------------------
|
||||
@ -405,7 +424,21 @@ namespace PPTX2EditorAdvanced
|
||||
|
||||
oBinaryWriter.WriteBYTE(NSBinPptxRW::g_nodeAttributeEnd);
|
||||
oBinaryWriter.EndRecord();
|
||||
// ------------------------------------------------
|
||||
|
||||
// SlideNotesRels --------------------------------------
|
||||
oBinaryWriter.StartMainRecord(NSMainTables::SlideNotesRels);
|
||||
oBinaryWriter.StartRecord(NSMainTables::SlideNotesRels);
|
||||
oBinaryWriter.WriteBYTE(NSBinPptxRW::g_nodeAttributeStart);
|
||||
|
||||
_s_rels = oBinaryWriter.m_pCommon->m_oSlide_Notes_Rels.size();
|
||||
for (size_t i = 0; i < _s_rels; ++i)
|
||||
{
|
||||
oBinaryWriter.WriteInt1(0, oBinaryWriter.m_pCommon->m_oSlide_Notes_Rels[i]);
|
||||
}
|
||||
|
||||
oBinaryWriter.WriteBYTE(NSBinPptxRW::g_nodeAttributeEnd);
|
||||
oBinaryWriter.EndRecord();
|
||||
// ------------------------------------------------
|
||||
|
||||
// ThemeRels --------------------------------------
|
||||
@ -445,7 +478,39 @@ namespace PPTX2EditorAdvanced
|
||||
|
||||
oBinaryWriter.EndRecord();
|
||||
}
|
||||
|
||||
// ------------------------------------------------
|
||||
|
||||
// NoteRels --------------------------------------
|
||||
oBinaryWriter.StartMainRecord(NSMainTables::NotesRels);
|
||||
oBinaryWriter.StartRecord(NSMainTables::NotesRels);
|
||||
oBinaryWriter.WriteBYTE(NSBinPptxRW::g_nodeAttributeStart);
|
||||
|
||||
_s_rels = oBinaryWriter.m_pCommon->m_oNote_Rels.size();
|
||||
for (size_t i = 0; i < _s_rels; ++i)
|
||||
{
|
||||
oBinaryWriter.WriteInt1(0, oBinaryWriter.m_pCommon->m_oNote_Rels[i]);
|
||||
}
|
||||
|
||||
oBinaryWriter.WriteBYTE(NSBinPptxRW::g_nodeAttributeEnd);
|
||||
oBinaryWriter.EndRecord();
|
||||
// ------------------------------------------------
|
||||
|
||||
// NoteRels --------------------------------------
|
||||
oBinaryWriter.StartMainRecord(NSMainTables::NotesMastersRels);
|
||||
oBinaryWriter.StartRecord(NSMainTables::NotesMastersRels);
|
||||
oBinaryWriter.WriteBYTE(NSBinPptxRW::g_nodeAttributeStart);
|
||||
|
||||
_s_rels = oBinaryWriter.m_pCommon->m_oNotesMasters_Rels.size();
|
||||
for (size_t i = 0; i < _s_rels; ++i)
|
||||
{
|
||||
oBinaryWriter.WriteInt1(0, oBinaryWriter.m_pCommon->m_oNotesMasters_Rels[i]);
|
||||
}
|
||||
|
||||
oBinaryWriter.WriteBYTE(NSBinPptxRW::g_nodeAttributeEnd);
|
||||
oBinaryWriter.EndRecord();
|
||||
// ------------------------------------------------
|
||||
|
||||
|
||||
oBinaryWriter.EndRecord();
|
||||
}
|
||||
|
||||
|
||||
@ -44,7 +44,7 @@ namespace PPTX
|
||||
{
|
||||
public:
|
||||
PPTX_LOGIC_BASE(CommentAuthor)
|
||||
private:
|
||||
|
||||
nullable_int id;
|
||||
nullable_int last_idx;
|
||||
nullable_int clr_idx;
|
||||
@ -52,8 +52,6 @@ namespace PPTX
|
||||
nullable_string name;
|
||||
nullable_string initials;
|
||||
|
||||
public:
|
||||
|
||||
virtual void fromXML(XmlUtils::CXmlNode& node)
|
||||
{
|
||||
node.ReadAttributeBase(L"id", id);
|
||||
@ -138,10 +136,9 @@ namespace PPTX
|
||||
|
||||
class Authors : public WrapperFile
|
||||
{
|
||||
private:
|
||||
public:
|
||||
std::vector<PPTX::Logic::CommentAuthor> m_arAuthors;
|
||||
|
||||
public:
|
||||
Authors()
|
||||
{
|
||||
}
|
||||
@ -152,8 +149,6 @@ namespace PPTX
|
||||
virtual ~Authors()
|
||||
{
|
||||
}
|
||||
|
||||
public:
|
||||
virtual void read(const OOX::CPath& filename, FileMap& map)
|
||||
{
|
||||
XmlUtils::CXmlNode oNode;
|
||||
@ -177,8 +172,6 @@ namespace PPTX
|
||||
{
|
||||
WrapperFile::write(filename, directory, content);
|
||||
}
|
||||
|
||||
public:
|
||||
virtual const OOX::FileType type() const
|
||||
{
|
||||
return OOX::Presentation::FileTypes::CommentAuthors;
|
||||
@ -191,8 +184,6 @@ namespace PPTX
|
||||
{
|
||||
return type().DefaultFileName();
|
||||
}
|
||||
|
||||
public:
|
||||
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
|
||||
{
|
||||
pWriter->WriteRecordArray(0, 0, m_arAuthors);
|
||||
|
||||
@ -44,7 +44,7 @@ namespace PPTX
|
||||
{
|
||||
public:
|
||||
PPTX_LOGIC_BASE(Comment)
|
||||
private:
|
||||
|
||||
nullable_int authorId;
|
||||
nullable_int idx;
|
||||
nullable_string dt;
|
||||
@ -59,8 +59,6 @@ namespace PPTX
|
||||
|
||||
nullable_string additional_data; // teamlab editor information!!!
|
||||
|
||||
public:
|
||||
|
||||
virtual void fromXML(XmlUtils::CXmlNode& node)
|
||||
{
|
||||
node.ReadAttributeBase(L"authorId", authorId);
|
||||
@ -276,10 +274,9 @@ namespace PPTX
|
||||
|
||||
class Comments : public WrapperFile
|
||||
{
|
||||
private:
|
||||
public:
|
||||
std::vector<PPTX::Logic::Comment> m_arComments;
|
||||
|
||||
public:
|
||||
Comments()
|
||||
{
|
||||
}
|
||||
@ -291,7 +288,6 @@ namespace PPTX
|
||||
{
|
||||
}
|
||||
|
||||
public:
|
||||
virtual void read(const OOX::CPath& filename, FileMap& map)
|
||||
{
|
||||
XmlUtils::CXmlNode oNode;
|
||||
@ -315,7 +311,6 @@ namespace PPTX
|
||||
WrapperFile::write(filename, directory, content);
|
||||
}
|
||||
|
||||
public:
|
||||
virtual const OOX::FileType type() const
|
||||
{
|
||||
return OOX::Presentation::FileTypes::SlideComments;
|
||||
@ -328,8 +323,6 @@ namespace PPTX
|
||||
{
|
||||
return type().DefaultFileName();
|
||||
}
|
||||
|
||||
public:
|
||||
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
|
||||
{
|
||||
pWriter->WriteRecordArray(0, 0, m_arComments);
|
||||
|
||||
@ -34,7 +34,6 @@
|
||||
#include "FileContainer.h"
|
||||
#include "FileTypes.h"
|
||||
|
||||
#include "LegacyDiagramText.h"
|
||||
#include "FileFactory.h"
|
||||
#include "WrapperFile.h"
|
||||
|
||||
@ -241,13 +240,7 @@ namespace PPTX
|
||||
}
|
||||
}
|
||||
}
|
||||
smart_ptr<PPTX::LegacyDiagramText> FileContainer::legacyDiagramText(const OOX::RId& rId) const
|
||||
{
|
||||
std::map<std::wstring, smart_ptr<OOX::File>>::const_iterator pPair = m_mContainer.find(rId.get());
|
||||
if (pPair == m_mContainer.end ())
|
||||
return smart_ptr<LegacyDiagramText>();
|
||||
return pPair->second.smart_dynamic_cast<LegacyDiagramText>();
|
||||
}
|
||||
|
||||
void FileContainer::read(const OOX::CPath& filename, FileMap& map, IPPTXEvent* Event)
|
||||
{
|
||||
OOX::CRels rels(filename);
|
||||
@ -304,25 +297,5 @@ namespace PPTX
|
||||
content.Registration(type().OverrideType(), directory, m_WrittenFileName);
|
||||
m_written = true;
|
||||
}
|
||||
//---------------------------------------------------------------------------------------------------------------------------
|
||||
void CCommonRels::_read(const OOX::CRels& rels, const OOX::CPath& path)
|
||||
{
|
||||
size_t nCount = rels.m_arrRelations.size();
|
||||
for (size_t i = 0; i < nCount; ++i)
|
||||
{
|
||||
OOX::Rels::CRelationShip* pRelation = rels.m_arrRelations[i];
|
||||
|
||||
OOX::CPath normPath = CorrectPathRels(path, pRelation);
|
||||
|
||||
smart_ptr<OOX::File> _file = PPTX::FileFactory::CreateFilePPTX_OnlyMedia(normPath, *pRelation);
|
||||
Add(pRelation->rId(), _file);
|
||||
}
|
||||
}
|
||||
|
||||
void CCommonRels::_read(const OOX::CPath& filename)
|
||||
{
|
||||
OOX::CRels rels(filename);
|
||||
OOX::CPath path = filename.GetDirectory();
|
||||
_read(rels, path);
|
||||
}
|
||||
} // namespace PPTX
|
||||
|
||||
@ -52,7 +52,6 @@ namespace PPTX
|
||||
virtual ~FileContainer()
|
||||
{
|
||||
}
|
||||
smart_ptr<PPTX::LegacyDiagramText> legacyDiagramText (const OOX::RId& rId) const;
|
||||
|
||||
protected:
|
||||
void read(const OOX::CPath& filename);
|
||||
@ -71,16 +70,6 @@ namespace PPTX
|
||||
bool m_bCancelled;
|
||||
};
|
||||
|
||||
class CCommonRels : public PPTX::FileContainer
|
||||
{
|
||||
public:
|
||||
CCommonRels() : PPTX::FileContainer()
|
||||
{
|
||||
}
|
||||
|
||||
void _read(const OOX::CPath& filename);
|
||||
void _read(const OOX::CRels& rels, const OOX::CPath& path);
|
||||
};
|
||||
} // namespace PPTX
|
||||
|
||||
#endif // PPTX_IFILE_CONTAINER_INCLUDE_H_
|
||||
@ -143,52 +143,4 @@ namespace PPTX
|
||||
return smart_ptr<OOX::File>(new OOX::UnknowTypeFile());
|
||||
}
|
||||
|
||||
const smart_ptr<OOX::File> FileFactory::CreateFilePPTX_OnlyMedia(const OOX::CPath& norm_filename, OOX::Rels::CRelationShip& relation)
|
||||
{
|
||||
bool bIsDownload = false;
|
||||
std::wstring strFile = relation.Filename().GetPath();
|
||||
|
||||
int n1 = (int)strFile.find(_T("www"));
|
||||
int n2 = (int)strFile.find(_T("http"));
|
||||
int n3 = (int)strFile.find(_T("ftp"));
|
||||
int n4 = (int)strFile.find(_T("https://"));
|
||||
|
||||
//если nI сранивать не с 0, то будут проблемы
|
||||
//потому что в инсталяции мы кладем файлы в /var/www...
|
||||
if (0 == n1 || 0 == n2 || 0 == n3 || 0 == n4)
|
||||
bIsDownload = true;
|
||||
|
||||
OOX::CPath filename = norm_filename;
|
||||
|
||||
if (bIsDownload)
|
||||
filename = relation.Filename();
|
||||
|
||||
std::wstring strT = relation.Type();
|
||||
|
||||
if (strT == OOX::FileTypes::Image ||
|
||||
strT == OOX::FileTypes::Chart)
|
||||
{
|
||||
return smart_ptr<OOX::File>(new OOX::Image(filename));
|
||||
}
|
||||
else if(strT == OOX::FileTypes::Data)
|
||||
return smart_ptr<OOX::File>(new OOX::CDiagramData(filename));
|
||||
|
||||
else if(strT == OOX::FileTypes::DiagDrawing)
|
||||
return smart_ptr<OOX::File>(new OOX::CDiagramDrawing(filename));
|
||||
|
||||
else if(strT == OOX::FileTypes::HyperLink)
|
||||
return smart_ptr<OOX::File>(new OOX::HyperLink(relation.Target()));
|
||||
|
||||
else if(strT == OOX::FileTypes::LegacyDiagramText)
|
||||
return smart_ptr<OOX::File>(new PPTX::LegacyDiagramText(filename));
|
||||
|
||||
else if(strT == OOX::FileTypes::OleObject)
|
||||
return smart_ptr<OOX::File>(new OOX::OleObject(filename));
|
||||
|
||||
else if ( strT == OOX::FileTypes::MicrosoftOfficeUnknown) //ms package
|
||||
return smart_ptr<OOX::File>(new OOX::OleObject( filename, true ));
|
||||
|
||||
return smart_ptr<OOX::File>(new OOX::UnknowTypeFile());
|
||||
}
|
||||
|
||||
} // namespace PPTX
|
||||
|
||||
@ -42,6 +42,5 @@ namespace PPTX
|
||||
{
|
||||
public:
|
||||
static const smart_ptr<OOX::File> CreateFilePPTX(const OOX::CPath& path, OOX::Rels::CRelationShip& relation, FileMap& map);
|
||||
static const smart_ptr<OOX::File> CreateFilePPTX_OnlyMedia(const OOX::CPath& path, OOX::Rels::CRelationShip& relation);
|
||||
};
|
||||
} // namespace PPTX
|
||||
|
||||
@ -38,24 +38,23 @@ namespace PPTX
|
||||
{
|
||||
namespace Logic
|
||||
{
|
||||
std::wstring Control::GetVmlXmlBySpid(std::wstring spid, std::wstring & rels) const
|
||||
std::wstring Control::GetVmlXmlBySpid(std::wstring spid, smart_ptr<OOX::IFileContainer> & rels) const
|
||||
{
|
||||
std::wstring xml;
|
||||
rels = _T("");
|
||||
if(parentFileIs<PPTX::Slide>() && parentFileAs<PPTX::Slide>().Vml.IsInit())
|
||||
{
|
||||
xml = parentFileAs<PPTX::Slide>().GetVmlXmlBySpid(spid);
|
||||
rels = parentFileAs<PPTX::Slide>().Vml->GetReadPath().GetPath();
|
||||
rels = parentFileAs<PPTX::Slide>().Vml.smart_dynamic_cast<OOX::IFileContainer>();
|
||||
}
|
||||
else if(parentFileIs<PPTX::SlideLayout>() && parentFileAs<PPTX::SlideLayout>().Vml.IsInit())
|
||||
{
|
||||
xml= parentFileAs<PPTX::SlideLayout>().GetVmlXmlBySpid(spid);
|
||||
rels = parentFileAs<PPTX::SlideLayout>().Vml->GetReadPath().GetPath();
|
||||
rels = parentFileAs<PPTX::SlideLayout>().Vml.smart_dynamic_cast<OOX::IFileContainer>();
|
||||
}
|
||||
else if(parentFileIs<PPTX::SlideMaster>() && parentFileAs<PPTX::SlideMaster>().Vml.IsInit())
|
||||
{
|
||||
xml = parentFileAs<PPTX::SlideMaster>().GetVmlXmlBySpid(spid);
|
||||
rels = parentFileAs<PPTX::SlideMaster>().Vml->GetReadPath().GetPath();
|
||||
rels = parentFileAs<PPTX::SlideMaster>().Vml.smart_dynamic_cast<OOX::IFileContainer>();
|
||||
}
|
||||
|
||||
return xml;
|
||||
@ -67,7 +66,7 @@ namespace PPTX
|
||||
std::wstring s = *spid;
|
||||
if (s.length() < 8) s = _T("_x0000_s") + s;
|
||||
|
||||
std::wstring rels;
|
||||
smart_ptr<OOX::IFileContainer> rels;
|
||||
std::wstring xml = GetVmlXmlBySpid(s, rels);
|
||||
|
||||
if (xml.length() > 0)
|
||||
@ -82,7 +81,7 @@ namespace PPTX
|
||||
RELEASEOBJECT(oDrawingConverter.m_pBinaryWriter->m_pCommon->m_pImageManager);
|
||||
oDrawingConverter.m_pBinaryWriter->m_pCommon->m_pImageManager = pImageManager;
|
||||
|
||||
oDrawingConverter.SetRelsPath(rels);
|
||||
oDrawingConverter.SetRels(rels);
|
||||
|
||||
std::wstring *main_props = NULL;
|
||||
HRESULT hRes = oDrawingConverter.AddObject(temp, &main_props);
|
||||
@ -97,7 +96,7 @@ namespace PPTX
|
||||
std::wstring s = *spid;
|
||||
if (s.length() < 8) s = _T("_x0000_s") + s;
|
||||
|
||||
std::wstring rels;
|
||||
smart_ptr<OOX::IFileContainer> rels;
|
||||
std::wstring xml = GetVmlXmlBySpid(s, rels);
|
||||
|
||||
if (xml.length() > 0)
|
||||
@ -113,7 +112,7 @@ namespace PPTX
|
||||
|
||||
std::wstring *main_props = NULL;
|
||||
|
||||
oDrawingConverter.SetRelsPath(rels);
|
||||
oDrawingConverter.SetRels(rels);
|
||||
|
||||
HRESULT hRes = oDrawingConverter.AddObject(temp, &main_props);
|
||||
if (hRes == S_OK && oDrawingConverter.m_pBinaryWriter->GetPosition() > 10)
|
||||
|
||||
@ -50,7 +50,8 @@ namespace PPTX
|
||||
|
||||
public:
|
||||
void AddObjectTo (const std::vector<SpTreeElem> *spTreeElements, NSShapeImageGen::CImageManager* pImageManager) const ;
|
||||
std::wstring GetVmlXmlBySpid(std::wstring spid, std::wstring & rels) const ;
|
||||
|
||||
std::wstring GetVmlXmlBySpid(std::wstring spid, smart_ptr<OOX::IFileContainer> & rels) const ;
|
||||
|
||||
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const ;
|
||||
|
||||
|
||||
@ -99,7 +99,7 @@ namespace PPTX
|
||||
Effects[i].SetParentPointer(this);
|
||||
}
|
||||
|
||||
std::wstring Blip::GetFullPicName(FileContainer* pRels)const
|
||||
std::wstring Blip::GetFullPicName(OOX::IFileContainer* pRels)const
|
||||
{
|
||||
if(embed.IsInit())
|
||||
{
|
||||
@ -141,7 +141,7 @@ namespace PPTX
|
||||
}
|
||||
return _T("");
|
||||
}
|
||||
std::wstring Blip::GetFullOleName(const OOX::RId& oRId, FileContainer* pRels)const
|
||||
std::wstring Blip::GetFullOleName(const OOX::RId& oRId, OOX::IFileContainer* pRels)const
|
||||
{
|
||||
smart_ptr<OOX::OleObject> pOleObject;
|
||||
|
||||
|
||||
@ -135,10 +135,10 @@ namespace PPTX
|
||||
double dW = pWriter->GetShapeWidth(); //mm
|
||||
double dH = pWriter->GetShapeHeight();
|
||||
|
||||
FileContainer* pRels = NULL;
|
||||
OOX::IFileContainer* pRels = NULL;
|
||||
|
||||
if (pWriter->m_pCommonRels->is_init())
|
||||
pRels = pWriter->m_pCommonRels->operator ->();
|
||||
if (pWriter->m_pCurrentContainer->is_init())
|
||||
pRels = pWriter->m_pCurrentContainer->operator ->();
|
||||
|
||||
std::wstring olePath;
|
||||
if(!oleFilepathBin.empty())
|
||||
@ -171,8 +171,8 @@ namespace PPTX
|
||||
|
||||
pWriter->EndRecord();
|
||||
}
|
||||
virtual std::wstring GetFullPicName(FileContainer* pRels = NULL)const;
|
||||
virtual std::wstring GetFullOleName(const OOX::RId& pRId, FileContainer* pRels = NULL)const;
|
||||
virtual std::wstring GetFullPicName(OOX::IFileContainer* pRels = NULL)const;
|
||||
virtual std::wstring GetFullOleName(const OOX::RId& pRId, OOX::IFileContainer* pRels = NULL)const;
|
||||
|
||||
std::vector<UniEffect> Effects;
|
||||
|
||||
|
||||
@ -375,8 +375,8 @@ namespace PPTX
|
||||
return;
|
||||
}
|
||||
|
||||
std::wstring xml_object_vml;
|
||||
std::wstring xml_object_rels;
|
||||
std::wstring xml_object_vml;
|
||||
smart_ptr<OOX::IFileContainer> xml_object_rels;
|
||||
|
||||
if (oleSpid.is_init())
|
||||
{
|
||||
@ -452,7 +452,7 @@ namespace PPTX
|
||||
|
||||
std::wstring *main_props = NULL;
|
||||
|
||||
oDrawingConverter.SetRelsPath(xml_object_rels);
|
||||
oDrawingConverter.SetRels(xml_object_rels);
|
||||
oDrawingConverter.SetAdditionalParam(L"xfrm_override", (BYTE*)xfrm.GetPointer(), sizeof(xfrm));
|
||||
|
||||
HRESULT hRes = oDrawingConverter.AddObject(temp, &main_props);
|
||||
@ -613,35 +613,29 @@ namespace PPTX
|
||||
{
|
||||
nvGraphicFramePr.SetParentPointer(this);
|
||||
|
||||
if (xfrm.IsInit())
|
||||
xfrm->SetParentPointer(this);
|
||||
if(table.IsInit())
|
||||
table->SetParentPointer(this);
|
||||
if (smartArt.is_init())
|
||||
smartArt->SetParentPointer(this);
|
||||
if (chartRec.is_init())
|
||||
chartRec->SetParentPointer(this);
|
||||
if (olePic.is_init())
|
||||
olePic->SetParentPointer(this);
|
||||
if (xfrm.IsInit()) xfrm->SetParentPointer(this);
|
||||
if (table.IsInit()) table->SetParentPointer(this);
|
||||
if (smartArt.is_init()) smartArt->SetParentPointer(this);
|
||||
if (chartRec.is_init()) chartRec->SetParentPointer(this);
|
||||
if (olePic.is_init()) olePic->SetParentPointer(this);
|
||||
}
|
||||
std::wstring GraphicFrame::GetVmlXmlBySpid(std::wstring & rels)const
|
||||
std::wstring GraphicFrame::GetVmlXmlBySpid(smart_ptr<OOX::IFileContainer> & rels)const
|
||||
{
|
||||
std::wstring xml;
|
||||
rels = L"";
|
||||
if(parentFileIs<PPTX::Slide>() && parentFileAs<PPTX::Slide>().Vml.IsInit())
|
||||
{
|
||||
xml = parentFileAs<PPTX::Slide>().GetVmlXmlBySpid(oleSpid.get_value_or(L""));
|
||||
rels = parentFileAs<PPTX::Slide>().Vml->GetReadPath().GetPath();
|
||||
rels = parentFileAs<PPTX::Slide>().Vml.smart_dynamic_cast<OOX::IFileContainer>();
|
||||
}
|
||||
else if(parentFileIs<PPTX::SlideLayout>() && parentFileAs<PPTX::SlideLayout>().Vml.IsInit())
|
||||
{
|
||||
xml= parentFileAs<PPTX::SlideLayout>().GetVmlXmlBySpid(oleSpid.get_value_or(L""));
|
||||
rels = parentFileAs<PPTX::SlideLayout>().Vml->GetReadPath().GetPath();
|
||||
xml = parentFileAs<PPTX::SlideLayout>().GetVmlXmlBySpid(oleSpid.get_value_or(L""));
|
||||
rels = parentFileAs<PPTX::SlideLayout>().Vml.smart_dynamic_cast<OOX::IFileContainer>();
|
||||
}
|
||||
else if(parentFileIs<PPTX::SlideMaster>() && parentFileAs<PPTX::SlideMaster>().Vml.IsInit())
|
||||
{
|
||||
xml = parentFileAs<PPTX::SlideMaster>().GetVmlXmlBySpid(oleSpid.get_value_or(L""));
|
||||
rels = parentFileAs<PPTX::SlideMaster>().Vml->GetReadPath().GetPath();
|
||||
xml = parentFileAs<PPTX::SlideMaster>().GetVmlXmlBySpid(oleSpid.get_value_or(L""));
|
||||
rels = parentFileAs<PPTX::SlideMaster>().Vml.smart_dynamic_cast<OOX::IFileContainer>();
|
||||
}
|
||||
|
||||
return xml;
|
||||
|
||||
@ -36,7 +36,6 @@
|
||||
#include "./../WrapperWritingElement.h"
|
||||
#include "NvGraphicFramePr.h"
|
||||
#include "Xfrm.h"
|
||||
#include "ShapeProperties.h"
|
||||
#include "Table/Table.h"
|
||||
#include "SmartArt.h"
|
||||
#include "Pic.h"
|
||||
@ -99,7 +98,7 @@ namespace PPTX
|
||||
|
||||
SpTreeElem element;
|
||||
|
||||
std::wstring GetVmlXmlBySpid(std::wstring & rels) const;
|
||||
std::wstring GetVmlXmlBySpid(smart_ptr<OOX::IFileContainer> & rels) const;
|
||||
protected:
|
||||
virtual void FillParentPointersForChilds();
|
||||
};
|
||||
|
||||
@ -41,7 +41,7 @@ namespace PPTX
|
||||
{
|
||||
namespace Logic
|
||||
{
|
||||
std::wstring Hyperlink::GetFullHyperlinkName(FileContainer* pRels)const
|
||||
std::wstring Hyperlink::GetFullHyperlinkName(OOX::IFileContainer* pRels)const
|
||||
{
|
||||
if(id.IsInit() && *id != _T(""))
|
||||
{
|
||||
|
||||
@ -113,9 +113,9 @@ namespace PPTX
|
||||
|
||||
if (id.is_init())
|
||||
{
|
||||
FileContainer* pRels = NULL;
|
||||
if (pWriter->m_pCommonRels->is_init())
|
||||
pRels = pWriter->m_pCommonRels->operator ->();
|
||||
OOX::IFileContainer* pRels = NULL;
|
||||
if (pWriter->m_pCurrentContainer->is_init())
|
||||
pRels = pWriter->m_pCurrentContainer->operator ->();
|
||||
|
||||
std::wstring str = GetFullHyperlinkName(pRels);
|
||||
pWriter->WriteString1(0, str);
|
||||
@ -256,7 +256,7 @@ namespace PPTX
|
||||
snd->SetParentPointer(this);
|
||||
}
|
||||
|
||||
virtual std::wstring GetFullHyperlinkName(FileContainer* pRels)const;
|
||||
virtual std::wstring GetFullHyperlinkName(OOX::IFileContainer* pRels)const;
|
||||
};
|
||||
} // namespace Logic
|
||||
} // namespace PPTX
|
||||
|
||||
@ -112,9 +112,9 @@ namespace PPTX
|
||||
|
||||
if(m_oId.IsInit() && ole_file.IsInit() == false)
|
||||
{
|
||||
FileContainer* pRels = NULL;
|
||||
if (pWriter->m_pCommonRels->is_init())
|
||||
pRels = pWriter->m_pCommonRels->operator ->();
|
||||
OOX::IFileContainer* pRels = NULL;
|
||||
if (pWriter->m_pCurrentContainer->is_init())
|
||||
pRels = pWriter->m_pCurrentContainer->operator ->();
|
||||
|
||||
ole_file = GetOleObject(m_oId.get(), pRels);
|
||||
}
|
||||
@ -163,8 +163,8 @@ namespace PPTX
|
||||
DocWrapper::FontProcessor fp;
|
||||
NSBinPptxRW::CDrawingConverter oDrawingConverter;
|
||||
|
||||
NSBinPptxRW::CBinaryFileWriter* old_writer = oDrawingConverter.m_pBinaryWriter;
|
||||
NSCommon::smart_ptr<PPTX::CCommonRels> old_rels = *pWriter->m_pCommonRels;
|
||||
NSBinPptxRW::CBinaryFileWriter* old_writer = oDrawingConverter.m_pBinaryWriter;
|
||||
NSCommon::smart_ptr<OOX::IFileContainer> old_rels = *pWriter->m_pCurrentContainer;
|
||||
|
||||
oDrawingConverter.m_pBinaryWriter = pWriter;
|
||||
|
||||
@ -176,7 +176,7 @@ namespace PPTX
|
||||
pWriter->EndRecord();
|
||||
|
||||
oDrawingConverter.m_pBinaryWriter = old_writer;
|
||||
*pWriter->m_pCommonRels = old_rels;
|
||||
*pWriter->m_pCurrentContainer = old_rels;
|
||||
}
|
||||
else if (office_checker.nFileType == AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX)
|
||||
//if ( std::wstring::npos != sProgID.find(L"Excel.Sheet")) //"ET.Xlsx.6" !!!
|
||||
@ -189,7 +189,7 @@ namespace PPTX
|
||||
NSBinPptxRW::CDrawingConverter oDrawingConverter;
|
||||
|
||||
NSBinPptxRW::CBinaryFileWriter* old_writer = oDrawingConverter.m_pBinaryWriter;
|
||||
NSCommon::smart_ptr<PPTX::CCommonRels> old_rels = *pWriter->m_pCommonRels;
|
||||
NSCommon::smart_ptr<OOX::IFileContainer> old_rels = *pWriter->m_pCurrentContainer;
|
||||
|
||||
oDrawingConverter.m_pBinaryWriter = pWriter;
|
||||
|
||||
@ -201,7 +201,7 @@ namespace PPTX
|
||||
pWriter->EndRecord();
|
||||
|
||||
oDrawingConverter.m_pBinaryWriter = old_writer;
|
||||
*pWriter->m_pCommonRels = old_rels;
|
||||
*pWriter->m_pCurrentContainer = old_rels;
|
||||
}
|
||||
//else if (office_checker.nFileType == AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX)
|
||||
//{
|
||||
@ -469,7 +469,7 @@ namespace PPTX
|
||||
return m_sProgId.IsInit() && (m_sData.IsInit() || m_oId.IsInit() || m_OleObjectFile.IsInit());
|
||||
}
|
||||
|
||||
smart_ptr<OOX::OleObject> COLEObject::GetOleObject(const OOX::RId& oRId, FileContainer* pRels) const
|
||||
smart_ptr<OOX::OleObject> COLEObject::GetOleObject(const OOX::RId& oRId, OOX::IFileContainer* pRels) const
|
||||
{
|
||||
smart_ptr<OOX::OleObject> ole_file = m_OleObjectFile;
|
||||
if (ole_file.IsInit() == false)
|
||||
|
||||
@ -198,7 +198,7 @@ namespace PPTX
|
||||
|
||||
bool isValid();
|
||||
|
||||
smart_ptr<OOX::OleObject> GetOleObject(const OOX::RId& oRId, FileContainer* pRels)const;
|
||||
smart_ptr<OOX::OleObject> GetOleObject(const OOX::RId& oRId, OOX::IFileContainer* pRels)const;
|
||||
std::wstring GetOleData (const std::wstring& sFilePath)const;
|
||||
|
||||
nullable_limit<Limit::OLEDrawAspectType>m_oDrawAspect;
|
||||
|
||||
@ -43,8 +43,9 @@ namespace PPTX
|
||||
{
|
||||
Shape::Shape(std::wstring name_)
|
||||
{
|
||||
m_name = name_;
|
||||
levelUp = NULL;
|
||||
m_name = name_;
|
||||
m_pLevelUp = NULL;
|
||||
m_nMasterTextType = -1;
|
||||
}
|
||||
|
||||
Shape::~Shape()
|
||||
@ -53,21 +54,31 @@ namespace PPTX
|
||||
|
||||
Shape::Shape(XmlUtils::CXmlNode& node)
|
||||
{
|
||||
levelUp = NULL;
|
||||
m_pLevelUp = NULL;
|
||||
m_nMasterTextType = -1;
|
||||
|
||||
fromXML(node);
|
||||
}
|
||||
Shape::Shape(XmlUtils::CXmlLiteReader& oReader)
|
||||
{
|
||||
levelUp = NULL;
|
||||
m_pLevelUp = NULL;
|
||||
m_nMasterTextType = -1;
|
||||
|
||||
fromXML(oReader);
|
||||
}
|
||||
const Shape& Shape::operator =(XmlUtils::CXmlNode& node)
|
||||
{
|
||||
m_pLevelUp = NULL;
|
||||
m_nMasterTextType = -1;
|
||||
|
||||
fromXML(node);
|
||||
return *this;
|
||||
}
|
||||
const Shape& Shape::operator =(XmlUtils::CXmlLiteReader& oReader)
|
||||
{
|
||||
m_pLevelUp = NULL;
|
||||
m_nMasterTextType = -1;
|
||||
|
||||
fromXML(oReader);
|
||||
return *this;
|
||||
}
|
||||
@ -367,11 +378,11 @@ namespace PPTX
|
||||
{
|
||||
nvSpPr.SetParentPointer(this);
|
||||
spPr.SetParentPointer(this);
|
||||
if(style.IsInit())
|
||||
|
||||
if (style.IsInit())
|
||||
style->SetParentPointer(this);
|
||||
if(txBody.IsInit())
|
||||
txBody->SetParentPointer(this);
|
||||
levelUp = NULL;
|
||||
if (txBody.IsInit())
|
||||
txBody->SetParentPointer(this);
|
||||
}
|
||||
|
||||
void Shape::toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter)const
|
||||
@ -432,257 +443,106 @@ namespace PPTX
|
||||
}
|
||||
|
||||
|
||||
void Shape::GetRect(Aggplus::RECT& pRect)const
|
||||
void Shape::FillLevelUp()
|
||||
{
|
||||
pRect.bottom = 0;
|
||||
pRect.left = 0;
|
||||
pRect.right = 0;
|
||||
pRect.top = 0;
|
||||
|
||||
if(spPr.xfrm.is_init())
|
||||
if ((m_pLevelUp == NULL) && (nvSpPr.nvPr.ph.IsInit()))
|
||||
{
|
||||
pRect.left = spPr.xfrm->offX.get_value_or(0);
|
||||
pRect.top = spPr.xfrm->offY.get_value_or(0);
|
||||
pRect.right = pRect.left + spPr.xfrm->extX.get_value_or(0);
|
||||
pRect.bottom = pRect.top + spPr.xfrm->extY.get_value_or(0);
|
||||
}
|
||||
|
||||
if(parentIs<Logic::SpTree>())
|
||||
parentAs<Logic::SpTree>().NormalizeRect(pRect);
|
||||
}
|
||||
|
||||
void Shape::FillLevelUp()const
|
||||
{
|
||||
if((levelUp == NULL) && (nvSpPr.nvPr.ph.IsInit()))
|
||||
{
|
||||
if((nvSpPr.nvPr.ph->type.IsInit()) || (nvSpPr.nvPr.ph->idx.IsInit()))
|
||||
if ((nvSpPr.nvPr.ph->type.IsInit()) || (nvSpPr.nvPr.ph->idx.IsInit()))
|
||||
{
|
||||
if(parentFileIs<Slide>())
|
||||
parentFileAs<Slide>().Layout->GetLevelUp(*this);
|
||||
if (parentFileIs<Slide>())
|
||||
parentFileAs<Slide>().Layout->GetLevelUp(this);
|
||||
else if(parentFileIs<SlideLayout>())
|
||||
parentFileAs<SlideLayout>().Master->GetLevelUp(*this);
|
||||
parentFileAs<SlideLayout>().Master->GetLevelUp(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Shape::FillShapeProperties(ShapeProperties& props)
|
||||
void Shape::Merge(Shape& shape, bool bIsSlidePlaceholder)
|
||||
{
|
||||
//props.SetParentFilePointer(*parentFile);
|
||||
if(parentFileIs<SlideMaster>())
|
||||
{
|
||||
std::wstring type = nvSpPr.nvPr.ph.IsInit()?nvSpPr.nvPr.ph->type.get_value_or(_T("body")):_T("");
|
||||
//if( (nvSpPr->cNvSpPr->txBox.get_value_or(false)) && (type == "") )
|
||||
// type = "text-box";
|
||||
parentFileAs<SlideMaster>().FillShapeProperties(props, type);
|
||||
props.FillFromTextBody(txBody);
|
||||
if(style.IsInit())
|
||||
props.FillFontRef(style->fontRef);
|
||||
if (m_pLevelUp)
|
||||
m_pLevelUp->Merge(shape, true);
|
||||
|
||||
//props.SetParentFilePointer(parentFile);
|
||||
}
|
||||
else if(parentFileIs<SlideLayout>())
|
||||
{
|
||||
//FillLevelUp();
|
||||
//if(levelUp != NULL)
|
||||
// levelUp->GetShapeProperties(props);
|
||||
//else
|
||||
//{
|
||||
std::wstring type = nvSpPr.nvPr.ph.IsInit()?nvSpPr.nvPr.ph->type.get_value_or(_T("body")):_T("");
|
||||
//if( (nvSpPr->cNvSpPr->txBox.get_value_or(false)) && (type == "") )
|
||||
// type = "text-box";
|
||||
parentFileAs<SlideLayout>().FillShapeProperties(props, type);
|
||||
//}
|
||||
|
||||
props.FillFromTextBody(txBody);
|
||||
if(style.IsInit())
|
||||
props.FillFontRef(style->fontRef);
|
||||
|
||||
//props.SetParentFilePointer(parentFile);
|
||||
}
|
||||
else if(parentFileIs<Slide>())
|
||||
{
|
||||
//FillLevelUp();
|
||||
//if(levelUp != NULL)
|
||||
// levelUp->GetShapeProperties(props);
|
||||
//else
|
||||
//{
|
||||
std::wstring type = nvSpPr.nvPr.ph.is_init()?nvSpPr.nvPr.ph->type.get_value_or(_T("body")):_T("");
|
||||
//if( (nvSpPr->cNvSpPr->txBox.get_value_or(false)) && (type == "") )
|
||||
// type = "text-box";
|
||||
parentFileAs<Slide>().FillShapeProperties(props, type);
|
||||
//}
|
||||
|
||||
props.FillFromTextBody(txBody);
|
||||
if(style.IsInit())
|
||||
props.FillFontRef(style->fontRef);
|
||||
|
||||
//props.SetParentFilePointer(parentFile);
|
||||
}
|
||||
props.SetParentFilePointer(parentFile);
|
||||
}
|
||||
|
||||
void Shape::FillShapeTextProperties(CShapeTextProperties& props)
|
||||
{
|
||||
std::wstring type = nvSpPr.nvPr.ph.IsInit()?nvSpPr.nvPr.ph->type.get_value_or(_T("body")):_T("");
|
||||
if (parentFileIs<SlideMaster>())
|
||||
{
|
||||
parentFileAs<SlideMaster>().FillShapeTextProperties(props, type);
|
||||
props.FillFromTextBody(txBody, NULL);
|
||||
if (style.IsInit())
|
||||
props.FillFontRef(style->fontRef, isFontRefInSlide);
|
||||
}
|
||||
else if (parentFileIs<SlideLayout>())
|
||||
{
|
||||
parentFileAs<SlideLayout>().FillShapeTextProperties(props, type);
|
||||
props.FillFromTextBody(txBody, NULL);
|
||||
if(style.IsInit())
|
||||
props.FillFontRef(style->fontRef, isFontRefInSlide);
|
||||
}
|
||||
else if (parentFileIs<Slide>())
|
||||
{
|
||||
parentFileAs<Slide>().FillShapeTextProperties(props, type);
|
||||
props.FillFromTextBody(txBody, body);
|
||||
if(style.IsInit())
|
||||
props.FillFontRef(style->fontRef, isFontRefInSlide);
|
||||
}
|
||||
|
||||
props.SetParentFilePointer(parentFile);
|
||||
}
|
||||
|
||||
DWORD Shape::GetFill(UniFill& fill)const
|
||||
{
|
||||
DWORD BGRA = 0;
|
||||
//fill.SetParentFilePointer(*parentFile);
|
||||
|
||||
if(style.IsInit())
|
||||
{
|
||||
if(parentFileIs<PPTX::Slide>())
|
||||
parentFileAs<PPTX::Slide>().theme->GetFillStyle(style->fillRef.idx.get_value_or(0), fill);
|
||||
else if(parentFileIs<PPTX::SlideLayout>())
|
||||
parentFileAs<PPTX::SlideLayout>().theme->GetFillStyle(style->fillRef.idx.get_value_or(0), fill);
|
||||
else if(parentFileIs<PPTX::SlideMaster>())
|
||||
parentFileAs<PPTX::SlideMaster>().theme->GetFillStyle(style->fillRef.idx.get_value_or(0), fill);
|
||||
|
||||
if (style->fillRef.Color.is_init())
|
||||
{
|
||||
if (fill.is<PPTX::Logic::SolidFill>())
|
||||
{
|
||||
fill.as<PPTX::Logic::SolidFill>().Color = style->fillRef.Color;
|
||||
}
|
||||
}
|
||||
BGRA = style->fillRef.Color.GetBGRA();
|
||||
}
|
||||
|
||||
if(spPr.Fill.is_init())
|
||||
spPr.Fill.Merge(fill);
|
||||
|
||||
//if((!fill.is_init()) && (bMergeWithLevelUp))
|
||||
//{
|
||||
// FillLevelUp();
|
||||
// if(levelUp != NULL)
|
||||
// BGRA = levelUp->GetFill(fill);
|
||||
//}
|
||||
|
||||
return BGRA;
|
||||
}
|
||||
|
||||
DWORD Shape::GetLine(Ln& line)const
|
||||
{
|
||||
DWORD BGRA = 0;
|
||||
|
||||
if(style.IsInit())
|
||||
{
|
||||
if(parentFileIs<PPTX::Slide>())
|
||||
parentFileAs<PPTX::Slide>().theme->GetLineStyle(style->lnRef.idx.get_value_or(0), line);
|
||||
else if(parentFileIs<PPTX::SlideLayout>())
|
||||
parentFileAs<PPTX::SlideLayout>().theme->GetLineStyle(style->lnRef.idx.get_value_or(0), line);
|
||||
else if(parentFileIs<PPTX::SlideMaster>())
|
||||
parentFileAs<PPTX::SlideMaster>().theme->GetLineStyle(style->lnRef.idx.get_value_or(0), line);
|
||||
|
||||
BGRA = style->lnRef.Color.GetBGRA();
|
||||
}
|
||||
|
||||
if(spPr.ln.IsInit())
|
||||
spPr.ln->Merge(line);
|
||||
return BGRA;
|
||||
}
|
||||
|
||||
void Shape::Merge(Shape& shape, bool bIsSlidePlaceholder)const
|
||||
{
|
||||
shape.nvSpPr = nvSpPr;
|
||||
shape.m_name = m_name;
|
||||
shape.m_nMasterTextType = m_nMasterTextType;
|
||||
|
||||
shape.nvSpPr = nvSpPr;
|
||||
spPr.Merge(shape.spPr);
|
||||
if(style.is_init())
|
||||
|
||||
if (parentFileIs<SlideMaster>() && (parentFileAs<SlideMaster>()).txStyles.IsInit())
|
||||
{
|
||||
shape.isFontRefInSlide = bIsSlidePlaceholder;
|
||||
TextListStyle * listMasterStyle = NULL;
|
||||
|
||||
std::wstring type = nvSpPr.nvPr.ph->type.get_value_or(_T("body"));
|
||||
if ((type == L"title") || (type == L"ctrTitle"))
|
||||
{
|
||||
m_nMasterTextType = 1;
|
||||
listMasterStyle = (parentFileAs<SlideMaster>()).txStyles->titleStyle.GetPointer();
|
||||
}
|
||||
else if ((type == L"body") || (type == L"subTitle") || (type == L"obj"))
|
||||
{
|
||||
m_nMasterTextType = 2;
|
||||
listMasterStyle = (parentFileAs<SlideMaster>()).txStyles->bodyStyle.GetPointer();
|
||||
}
|
||||
else if (type != L"")
|
||||
{
|
||||
m_nMasterTextType = 3;
|
||||
listMasterStyle = (parentFileAs<SlideMaster>()).txStyles->otherStyle.GetPointer();
|
||||
}
|
||||
|
||||
if (listMasterStyle)
|
||||
{
|
||||
if(!txBody.is_init())
|
||||
txBody = new TxBody();
|
||||
|
||||
TextListStyle *newListStyle = new TextListStyle();
|
||||
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
if(listMasterStyle->levels[i].is_init())
|
||||
listMasterStyle->levels[i]->Merge(newListStyle->levels[i]);
|
||||
if(txBody->lstStyle->levels[i].is_init())
|
||||
txBody->lstStyle->levels[i]->Merge(newListStyle->levels[i]);
|
||||
}
|
||||
txBody->lstStyle.reset(newListStyle);
|
||||
}
|
||||
}
|
||||
shape.m_nMasterTextType = m_nMasterTextType;
|
||||
|
||||
if (style.is_init())
|
||||
{
|
||||
shape.m_bIsFontRefInSlide = bIsSlidePlaceholder;
|
||||
shape.style = style;
|
||||
shape.style->SetParentFilePointer(parentFile);
|
||||
}
|
||||
if (!bIsSlidePlaceholder)
|
||||
{
|
||||
if(txBody.IsInit())
|
||||
{
|
||||
if(!shape.txBody.is_init())
|
||||
shape.txBody = new TxBody();
|
||||
|
||||
txBody->Merge(shape.txBody);
|
||||
|
||||
if (txBody.IsInit())
|
||||
{
|
||||
if(!shape.txBody.is_init())
|
||||
shape.txBody = new TxBody();
|
||||
|
||||
if (!bIsSlidePlaceholder)
|
||||
{
|
||||
txBody->Merge(shape.txBody);
|
||||
shape.txBody->Paragrs = txBody->Paragrs;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (txBody.is_init())
|
||||
{
|
||||
if(!shape.txBody.is_init())
|
||||
shape.txBody = new TxBody();
|
||||
|
||||
else
|
||||
{
|
||||
if (txBody->bodyPr.IsInit())
|
||||
txBody->bodyPr->Merge(shape.txBody->bodyPr);
|
||||
|
||||
if(txBody->lstStyle.is_init())
|
||||
txBody->bodyPr->Merge(shape.txBody->bodyPr);
|
||||
}
|
||||
if (txBody->lstStyle.is_init())
|
||||
{
|
||||
if(!shape.txBody->lstStyle.is_init())
|
||||
shape.txBody->lstStyle = new TextListStyle();
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
for (int i = 0; i < 10; i++)
|
||||
if(txBody->lstStyle->levels[i].is_init())
|
||||
txBody->lstStyle->levels[i]->Merge(body[i]);
|
||||
if(txBody->lstStyle->levels[i].is_init())
|
||||
txBody->lstStyle->levels[i]->Merge(shape.txBody->lstStyle->levels[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Shape::GetShapeFullDescription(Shape& shape, int level)const
|
||||
{
|
||||
if(level == 0)
|
||||
//shape.SetParentFilePointer(*parentFile);
|
||||
shape.SetParentPointer(parentElement);
|
||||
|
||||
if(!nvSpPr.nvPr.ph.is_init())
|
||||
{
|
||||
Merge(shape);
|
||||
return;
|
||||
}
|
||||
if(parentFileIs<PPTX::SlideMaster>())
|
||||
{
|
||||
Merge(shape);
|
||||
return;
|
||||
}
|
||||
if(parentFileIs<PPTX::SlideLayout>())
|
||||
{
|
||||
FillLevelUp();
|
||||
if(levelUp != NULL)
|
||||
levelUp->GetShapeFullDescription(shape, level + 1);
|
||||
Merge(shape);
|
||||
return;
|
||||
}
|
||||
if(parentFileIs<PPTX::Slide>())
|
||||
{
|
||||
FillLevelUp();
|
||||
if(levelUp != NULL)
|
||||
levelUp->GetShapeFullDescription(shape, level + 1);
|
||||
Merge(shape, true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void Shape::toXmlWriterVML(NSBinPptxRW::CXmlWriter *pWriter, NSCommon::smart_ptr<PPTX::Theme>& oTheme, NSCommon::smart_ptr<PPTX::Logic::ClrMap>& oClrMap, bool in_group)
|
||||
{
|
||||
std::wstring strPath, strTextRect;
|
||||
|
||||
@ -38,8 +38,6 @@
|
||||
#include "SpPr.h"
|
||||
#include "ShapeStyle.h"
|
||||
#include "TxBody.h"
|
||||
#include "ShapeProperties.h"
|
||||
#include "ShapeTextProperties.h"
|
||||
#include "UniFill.h"
|
||||
#include "Ln.h"
|
||||
|
||||
@ -303,19 +301,10 @@ namespace PPTX
|
||||
}
|
||||
std::wstring GetText()const{if(txBody.IsInit()) return txBody->GetText(); return _T(""); };
|
||||
|
||||
void GetShapeFullDescription(Shape& shape, int level = 0)const;
|
||||
void GetRect(Aggplus::RECT& pRect)const;
|
||||
DWORD GetFill(UniFill& fill)const;
|
||||
DWORD GetLine(Ln& line)const;
|
||||
void FillLevelUp();
|
||||
void Merge(Shape& shape, bool bIsSlidePlaceholder = false);
|
||||
|
||||
void FillShapeProperties(ShapeProperties& props);
|
||||
void FillShapeTextProperties(CShapeTextProperties& props);
|
||||
void FillLevelUp()const;
|
||||
|
||||
mutable Shape const * levelUp;
|
||||
void Merge(Shape& shape, bool bIsSlidePlaceholder = false)const;
|
||||
public:
|
||||
void SetLevelUpElement(const Shape& p)const{levelUp = &p;};
|
||||
void SetLevelUpElement( Shape* p){m_pLevelUp = p;};
|
||||
|
||||
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const;
|
||||
void toXmlWriterVML (NSBinPptxRW::CXmlWriter* pWriter, smart_ptr<PPTX::Theme>& oTheme, smart_ptr<PPTX::Logic::ClrMap>& oClrMap, bool in_group = false);
|
||||
@ -326,8 +315,10 @@ namespace PPTX
|
||||
|
||||
//-------------------------------------------------------------------------------------------------
|
||||
std::wstring m_name;
|
||||
bool m_bOleShape;
|
||||
|
||||
Shape * m_pLevelUp;
|
||||
int m_nMasterTextType;
|
||||
bool m_bIsFontRefInSlide;
|
||||
//-------------------------------------------------------------------------------------------------
|
||||
NvSpPr nvSpPr;
|
||||
SpPr spPr;
|
||||
nullable<ShapeStyle> style;
|
||||
@ -338,10 +329,6 @@ namespace PPTX
|
||||
nullable<OOX::Logic::CSdtContent> oTextBoxShape;
|
||||
nullable<BodyPr> oTextBoxBodyPr;
|
||||
|
||||
bool isFontRefInSlide;
|
||||
mutable nullable<TextParagraphPr> body[10];
|
||||
|
||||
// Attributes
|
||||
nullable_bool attrUseBgFill;
|
||||
protected:
|
||||
virtual void FillParentPointersForChilds();
|
||||
|
||||
@ -1,824 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2017
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "ShapeProperties.h"
|
||||
#include "Fills/SolidFill.h"
|
||||
#include "Fills/GradFill.h"
|
||||
#include "../Slide.h"
|
||||
#include "../SlideLayout.h"
|
||||
#include "../SlideMaster.h"
|
||||
|
||||
namespace PPTX
|
||||
{
|
||||
namespace Logic
|
||||
{
|
||||
|
||||
ShapeProperties::ShapeProperties()
|
||||
{
|
||||
for(int i = 0; i < 10; i++)
|
||||
{
|
||||
TextParagraphPr ppr;
|
||||
RunProperties rpr;
|
||||
ppr.defRPr = rpr;
|
||||
|
||||
levels[i] = ppr;
|
||||
masters[i] = ppr;
|
||||
}
|
||||
m_nTextType = 0;
|
||||
}
|
||||
|
||||
ShapeProperties::~ShapeProperties()
|
||||
{
|
||||
}
|
||||
|
||||
void ShapeProperties::FillFromTextBody(const nullable<TxBody>& Src)
|
||||
{
|
||||
if(Src.IsInit())
|
||||
{
|
||||
if (Src->bodyPr.IsInit())
|
||||
Src->bodyPr->Merge(bodyPr);
|
||||
|
||||
if(Src->lstStyle.IsInit())
|
||||
{
|
||||
for(int i = 0; i < 10; i++)
|
||||
{
|
||||
if(Src->lstStyle->levels[i].IsInit())
|
||||
Src->lstStyle->levels[i]->Merge(levels[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ShapeProperties::FillFromTextListStyle(const nullable<TextListStyle>& Src)
|
||||
{
|
||||
if(Src.IsInit())
|
||||
{
|
||||
for(int i = 0; i < 10; i++)
|
||||
{
|
||||
if(Src->levels[i].IsInit())
|
||||
Src->levels[i]->Merge(masters[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ShapeProperties::FillFromTextListStyle(const TextListStyle& Src)
|
||||
{
|
||||
for(int i = 0; i < 10; i++)
|
||||
{
|
||||
if(Src.levels[i].IsInit())
|
||||
Src.levels[i]->Merge(masters[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void ShapeProperties::FillFontRef(const FontRef& Src)
|
||||
{
|
||||
fontStyle = Src;
|
||||
}
|
||||
|
||||
void ShapeProperties::FillMasterFontSize(int size)
|
||||
{
|
||||
for(int i = 0; i < 10; i++)
|
||||
{
|
||||
if(masters[i]->defRPr.IsInit())
|
||||
masters[i]->defRPr->sz = size;
|
||||
else
|
||||
{
|
||||
PPTX::Logic::RunProperties rpr;
|
||||
rpr.sz = size;
|
||||
masters[i]->defRPr = rpr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::wstring ShapeProperties::GetParagraphAlgn(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pParagraph.IsInit())
|
||||
if(pParagraph->algn.IsInit())
|
||||
return pParagraph->algn->get();
|
||||
|
||||
//return levels[level]->algn.get_value_or(masters[level]->algn.get_value_or(0));
|
||||
|
||||
if (levels[level]->algn.is_init())
|
||||
return levels[level]->algn.get_value();
|
||||
|
||||
if (masters[level]->algn.is_init())
|
||||
return masters[level]->algn.get_value();
|
||||
return _T("l");
|
||||
}
|
||||
|
||||
int ShapeProperties::GetParagraphLeftMargin(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pParagraph.IsInit())
|
||||
if(pParagraph->marL.IsInit())
|
||||
return pParagraph->marL.get();
|
||||
//return levels[level]->marL.get_value_or(levels[9].marL.get_value_or(347663));
|
||||
//return levels[level]->marL.get_value_or(masters[level]->marL.get_value_or(0));
|
||||
|
||||
if (levels[level]->marL.is_init())
|
||||
return levels[level]->marL.get();
|
||||
|
||||
if (masters[level]->marL.is_init())
|
||||
return masters[level]->marL.get();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ShapeProperties::GetParagraphIndent(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pParagraph.IsInit())
|
||||
if(pParagraph->indent.IsInit())
|
||||
return pParagraph->indent.get();
|
||||
//return levels[level]->indent.get_value_or(levels[9].indent.get_value_or(-342900));
|
||||
//return levels[level]->indent.get_value_or(masters[level]->indent.get_value_or(0));
|
||||
|
||||
if (levels[level]->indent.is_init())
|
||||
return levels[level]->indent.get();
|
||||
|
||||
if (masters[level]->indent.is_init())
|
||||
return masters[level]->indent.get();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ShapeProperties::GetParagraphDefTabSz(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pParagraph.IsInit())
|
||||
if(pParagraph->defTabSz.IsInit())
|
||||
return pParagraph->defTabSz.get();
|
||||
//return levels[level]->defTabSz.get_value_or(levels[9].defTabSz.get_value_or(376300));
|
||||
//return levels[level]->defTabSz.get_value_or(masters[level]->defTabSz.get_value_or(376300));
|
||||
|
||||
if (levels[level]->defTabSz.is_init())
|
||||
return levels[level]->defTabSz.get();
|
||||
|
||||
if (masters[level]->defTabSz.is_init())
|
||||
return masters[level]->defTabSz.get();
|
||||
return 376300;
|
||||
}
|
||||
|
||||
std::wstring ShapeProperties::GetParagraphFontAlgn(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pParagraph.IsInit())
|
||||
if(pParagraph->fontAlgn.IsInit())
|
||||
return pParagraph->fontAlgn->get();
|
||||
//return levels[level]->fontAlgn.get_value_or(levels[9].fontAlgn.get_value_or("base"));
|
||||
//return levels[level]->fontAlgn.get_value_or(masters[level]->fontAlgn.get_value_or(_T("base")));
|
||||
|
||||
if (levels[level]->fontAlgn.is_init())
|
||||
return levels[level]->fontAlgn.get_value();
|
||||
|
||||
if (masters[level]->fontAlgn.is_init())
|
||||
return masters[level]->fontAlgn.get_value();
|
||||
return _T("base");
|
||||
}
|
||||
|
||||
bool ShapeProperties::GetParagraphLatinLnBrk(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pParagraph.IsInit())
|
||||
if(pParagraph->latinLnBrk.IsInit())
|
||||
return pParagraph->latinLnBrk.get();
|
||||
//return levels[level]->latinLnBrk.get_value_or(levels[9].latinLnBrk.get_value_or(true));
|
||||
//return levels[level]->latinLnBrk.get_value_or(masters[level]->latinLnBrk.get_value_or(false));
|
||||
|
||||
if (levels[level]->latinLnBrk.is_init())
|
||||
return levels[level]->latinLnBrk.get();
|
||||
|
||||
if (masters[level]->latinLnBrk.is_init())
|
||||
return masters[level]->latinLnBrk.get();
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ShapeProperties::GetParagraphRtl(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pParagraph.IsInit())
|
||||
if(pParagraph->rtl.IsInit())
|
||||
return pParagraph->rtl.get();
|
||||
//return levels[level]->rtl.get_value_or(levels[9].rtl.get_value_or(false));
|
||||
//return levels[level]->rtl.get_value_or(masters[level]->rtl.get_value_or(false));
|
||||
|
||||
if (levels[level]->rtl.is_init())
|
||||
return levels[level]->rtl.get();
|
||||
|
||||
if (masters[level]->rtl.is_init())
|
||||
return masters[level]->rtl.get();
|
||||
return false;
|
||||
}
|
||||
|
||||
int ShapeProperties::GetParagraphLnSpc(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pParagraph.IsInit())
|
||||
if(pParagraph->lnSpc.IsInit())
|
||||
return pParagraph->lnSpc->GetVal();
|
||||
|
||||
if(levels[level]->lnSpc.IsInit())
|
||||
return levels[level]->lnSpc->GetVal();
|
||||
if(masters[level]->lnSpc.IsInit())
|
||||
return masters[level]->lnSpc->GetVal();
|
||||
return 100;//0;
|
||||
}
|
||||
|
||||
int ShapeProperties::GetParagraphSpcAft(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pParagraph.IsInit())
|
||||
if(pParagraph->spcAft.IsInit())
|
||||
return pParagraph->spcAft->GetVal();
|
||||
|
||||
if(levels[level]->spcAft.IsInit())
|
||||
return levels[level]->spcAft->GetVal();
|
||||
if(masters[level]->spcAft.IsInit())
|
||||
return masters[level]->spcAft->GetVal();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ShapeProperties::GetParagraphSpcBef(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pParagraph.IsInit())
|
||||
if(pParagraph->spcBef.IsInit())
|
||||
return pParagraph->spcBef->GetVal();
|
||||
|
||||
if(levels[level]->spcBef.IsInit())
|
||||
return levels[level]->spcBef->GetVal();
|
||||
if(masters[level]->spcBef.IsInit())
|
||||
return masters[level]->spcBef->GetVal();
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool ShapeProperties::HasParagraphBullet(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pParagraph.IsInit())
|
||||
if(pParagraph->ParagraphBullet.is_init())
|
||||
return pParagraph->ParagraphBullet.has_bullet();
|
||||
|
||||
if(levels[level]->ParagraphBullet.is_init())
|
||||
return levels[level]->ParagraphBullet.has_bullet();
|
||||
|
||||
return masters[level]->ParagraphBullet.has_bullet();
|
||||
}
|
||||
|
||||
bool ShapeProperties::GetRunBold(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pRun.IsInit())
|
||||
if(pRun->b.IsInit())
|
||||
return pRun->b.get();
|
||||
if(pParagraph.IsInit())
|
||||
if(pParagraph->defRPr.IsInit())
|
||||
if(pParagraph->defRPr->b.IsInit())
|
||||
return pParagraph->defRPr->b.get();
|
||||
//return levels[level].defRPr->b.get_value_or(levels[9].defRPr->b.get_value_or(false));
|
||||
//return levels[level]->defRPr->b.get_value_or(masters[level]->defRPr->b.get_value_or(false));
|
||||
|
||||
if (levels[level]->defRPr->b.is_init())
|
||||
return levels[level]->defRPr->b.get();
|
||||
|
||||
if (masters[level]->defRPr->b.is_init())
|
||||
return masters[level]->defRPr->b.get();
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ShapeProperties::GetRunItalic(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pRun.IsInit())
|
||||
if(pRun->i.IsInit())
|
||||
return pRun->i.get();
|
||||
if(pParagraph.IsInit())
|
||||
if(pParagraph->defRPr.IsInit())
|
||||
if(pParagraph->defRPr->i.IsInit())
|
||||
return pParagraph->defRPr->i.get();
|
||||
//return levels[level]->defRPr->i.get_value_or(levels[9].defRPr->i.get_value_or(false));
|
||||
//return levels[level]->defRPr->i.get_value_or(masters[level]->defRPr->i.get_value_or(false));
|
||||
|
||||
if (levels[level]->defRPr->i.is_init())
|
||||
return levels[level]->defRPr->i.get();
|
||||
|
||||
if (masters[level]->defRPr->i.is_init())
|
||||
return masters[level]->defRPr->i.get();
|
||||
return false;
|
||||
}
|
||||
|
||||
std::wstring ShapeProperties::GetRunUnderline(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pRun.IsInit())
|
||||
if(pRun->u.IsInit())
|
||||
return pRun->u->get();
|
||||
if(pParagraph.IsInit())
|
||||
if(pParagraph->defRPr.IsInit())
|
||||
if(pParagraph->defRPr->u.IsInit())
|
||||
return pParagraph->defRPr->u->get();
|
||||
//return levels[level]->defRPr->u.get_value_or(masters[level]->defRPr->u.get_value_or(_T("none")));
|
||||
|
||||
if (levels[level]->defRPr->u.is_init())
|
||||
return levels[level]->defRPr->u.get_value();
|
||||
|
||||
if (masters[level]->defRPr->u.is_init())
|
||||
return masters[level]->defRPr->u.get_value();
|
||||
return _T("none");
|
||||
}
|
||||
|
||||
std::wstring ShapeProperties::GetRunStrike(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pRun.IsInit())
|
||||
if(pRun->strike.IsInit())
|
||||
return pRun->strike->get();
|
||||
if(pParagraph.IsInit())
|
||||
if(pParagraph->defRPr.IsInit())
|
||||
if(pParagraph->defRPr->strike.IsInit())
|
||||
return pParagraph->defRPr->strike->get();
|
||||
//return levels[level]->defRPr->strike.get_value_or(masters[level]->defRPr->strike.get_value_or(_T("noStrike")));
|
||||
|
||||
if (levels[level]->defRPr->strike.is_init())
|
||||
return levels[level]->defRPr->strike.get_value();
|
||||
|
||||
if (masters[level]->defRPr->strike.is_init())
|
||||
return masters[level]->defRPr->strike.get_value();
|
||||
return _T("noStrike");
|
||||
}
|
||||
|
||||
std::wstring ShapeProperties::GetRunCap(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pRun.is_init())
|
||||
if(pRun->cap.is_init())
|
||||
return pRun->cap->get();
|
||||
if(pParagraph.is_init())
|
||||
if(pParagraph->defRPr.is_init())
|
||||
if(pParagraph->defRPr->cap.is_init())
|
||||
return pParagraph->defRPr->cap->get();
|
||||
//return levels[level]->defRPr->cap.get_value_or(masters[level]->defRPr->cap.get_value_or(_T("none")));
|
||||
|
||||
if (levels[level]->defRPr->cap.is_init())
|
||||
return levels[level]->defRPr->cap.get_value();
|
||||
|
||||
if (masters[level]->defRPr->cap.is_init())
|
||||
return masters[level]->defRPr->cap.get_value();
|
||||
return _T("none");
|
||||
}
|
||||
|
||||
int ShapeProperties::GetRunBaseline(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pRun.is_init())
|
||||
if(pRun->baseline.is_init())
|
||||
return pRun->baseline.get();
|
||||
if(pParagraph.is_init())
|
||||
if(pParagraph->defRPr.is_init())
|
||||
if(pParagraph->defRPr->baseline.is_init())
|
||||
return pParagraph->defRPr->baseline.get();
|
||||
|
||||
//return levels[level]->defRPr->baseline.get_value_or(masters[level]->defRPr->baseline.get_value_or(0));
|
||||
if (levels[level]->defRPr->baseline.is_init())
|
||||
return levels[level]->defRPr->baseline.get();
|
||||
|
||||
if (masters[level]->defRPr->baseline.is_init())
|
||||
return masters[level]->defRPr->baseline.get();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ShapeProperties::GetRunSize(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pRun.is_init())
|
||||
if(pRun->sz.is_init())
|
||||
return pRun->sz.get();
|
||||
if(pParagraph.is_init())
|
||||
if(pParagraph->defRPr.is_init())
|
||||
if(pParagraph->defRPr->sz.is_init())
|
||||
return pParagraph->defRPr->sz.get();
|
||||
//return levels[level]->defRPr->sz.get_value_or(levels[9].defRPr->sz.get_value_or(1000));
|
||||
//return levels[level]->defRPr->sz.get_value_or(masters[level]->defRPr->sz.get_value_or(1800));
|
||||
|
||||
if (levels[level]->defRPr->sz.is_init())
|
||||
return levels[level]->defRPr->sz.get();
|
||||
|
||||
if (masters[level]->defRPr->sz.is_init())
|
||||
return masters[level]->defRPr->sz.get();
|
||||
return 1800;
|
||||
}
|
||||
|
||||
int ShapeProperties::GetRunSize(int level)const
|
||||
{
|
||||
//return levels[level]->defRPr->sz.get_value_or(masters[level]->defRPr->sz.get_value_or(1800));
|
||||
|
||||
if (levels[level]->defRPr->sz.is_init())
|
||||
return levels[level]->defRPr->sz.get();
|
||||
|
||||
if (masters[level]->defRPr->sz.is_init())
|
||||
return masters[level]->defRPr->sz.get();
|
||||
return 1800;
|
||||
}
|
||||
|
||||
std::wstring ShapeProperties::GetRunFont(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph, LONG& lFontIndex)const
|
||||
{
|
||||
std::wstring strFontName = _T("");
|
||||
if((pRun.is_init()) && (pRun->latin.is_init()))
|
||||
strFontName = pRun->latin->typeface;
|
||||
else if((pParagraph.is_init()) && (pParagraph->defRPr.is_init()) && (pParagraph->defRPr->latin.is_init()))
|
||||
strFontName = pParagraph->defRPr->latin->typeface;
|
||||
else
|
||||
{
|
||||
if(levels[level]->defRPr->latin.is_init())
|
||||
strFontName = levels[level]->defRPr->latin->typeface;
|
||||
else if(fontStyle.is_init())
|
||||
strFontName = (fontStyle->idx->get() == _T("minor"))?_T("+mn-lt"):_T("+mj-lt");
|
||||
else if(masters[level]->defRPr->latin.is_init())
|
||||
strFontName = masters[level]->defRPr->latin->typeface;
|
||||
}
|
||||
|
||||
if(strFontName == _T("+mj-lt"))
|
||||
{
|
||||
strFontName = MajorLatin.typeface;
|
||||
lFontIndex = 0;
|
||||
}
|
||||
else if(strFontName == _T("+mn-lt"))
|
||||
{
|
||||
strFontName = MinorLatin.typeface;
|
||||
lFontIndex = 1;
|
||||
}
|
||||
else if(strFontName == _T(""))
|
||||
{
|
||||
strFontName = MinorLatin.typeface;
|
||||
lFontIndex = 1;
|
||||
}
|
||||
return strFontName;
|
||||
}
|
||||
|
||||
std::wstring ShapeProperties::GetRunPanose(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
std::wstring panose = _T("");
|
||||
std::wstring style = _T("");
|
||||
if((pRun.is_init()) && (pRun->latin.is_init()))
|
||||
panose = pRun->latin->panose.get_value_or(_T(""));
|
||||
else if((pParagraph.is_init()) && (pParagraph->defRPr.is_init()) && (pParagraph->defRPr->latin.is_init()))
|
||||
panose = pParagraph->defRPr->latin->panose.get_value_or(_T(""));
|
||||
else
|
||||
{
|
||||
if(levels[level]->defRPr->latin.is_init())
|
||||
panose = levels[level]->defRPr->latin->panose.get_value_or(_T(""));
|
||||
else if(fontStyle.is_init())
|
||||
style = fontStyle->idx.get_value_or(_T("major"));
|
||||
else if(masters[level]->defRPr->latin.is_init())
|
||||
panose = masters[level]->defRPr->latin->panose.get_value_or(_T(""));
|
||||
}
|
||||
|
||||
if(style == _T("major"))
|
||||
panose = MajorLatin.panose.get_value_or(_T(""));
|
||||
else if(style == _T("minor"))
|
||||
panose = MinorLatin.panose.get_value_or(_T(""));
|
||||
return panose;
|
||||
}
|
||||
|
||||
BYTE ShapeProperties::GetRunCharset(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
std::wstring charset = _T("");
|
||||
std::wstring style = _T("");
|
||||
if((pRun.is_init()) && (pRun->latin.is_init()))
|
||||
charset = pRun->latin->charset.get_value_or(_T(""));
|
||||
else if((pParagraph.is_init()) && (pParagraph->defRPr.is_init()) && (pParagraph->defRPr->latin.is_init()))
|
||||
charset = pParagraph->defRPr->latin->charset.get_value_or(_T(""));
|
||||
|
||||
else
|
||||
{
|
||||
if(levels[level]->defRPr->latin.is_init())
|
||||
charset = levels[level]->defRPr->latin->charset.get_value_or(_T(""));
|
||||
else if(fontStyle.is_init())
|
||||
style = fontStyle->idx.get_value_or(_T("major"));
|
||||
else if(masters[level]->defRPr->latin.is_init())
|
||||
charset = masters[level]->defRPr->latin->charset.get_value_or(_T(""));
|
||||
}
|
||||
|
||||
if(style == _T("major"))
|
||||
charset = MajorLatin.charset.get_value_or(_T(""));
|
||||
else if(style == _T("minor"))
|
||||
charset = MinorLatin.charset.get_value_or(_T(""));
|
||||
if(charset == _T(""))
|
||||
charset = _T("01");
|
||||
return XmlUtils::GetInteger(charset);
|
||||
}
|
||||
|
||||
BYTE ShapeProperties::GetRunPitchFamily(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
std::wstring pitchFamily = _T("");
|
||||
std::wstring style = _T("");
|
||||
if((pRun.is_init()) && (pRun->latin.is_init()))
|
||||
pitchFamily = pRun->latin->pitchFamily.get_value_or(_T(""));
|
||||
else if((pParagraph.is_init()) && (pParagraph->defRPr.is_init()) && (pParagraph->defRPr->latin.is_init()))
|
||||
pitchFamily = pParagraph->defRPr->latin->pitchFamily.get_value_or(_T(""));
|
||||
else
|
||||
{
|
||||
if(levels[level]->defRPr->latin.is_init())
|
||||
pitchFamily = levels[level]->defRPr->latin->pitchFamily.get_value_or(_T(""));
|
||||
else if(fontStyle.is_init())
|
||||
style = fontStyle->idx.get_value_or(_T("major"));
|
||||
else if(masters[level]->defRPr->latin.is_init())
|
||||
pitchFamily = masters[level]->defRPr->latin->pitchFamily.get_value_or(_T(""));
|
||||
}
|
||||
|
||||
if(style == _T("major"))
|
||||
pitchFamily = MajorLatin.pitchFamily.get_value_or(_T(""));
|
||||
else if(style == _T("minor"))
|
||||
pitchFamily = MinorLatin.pitchFamily.get_value_or(_T(""));
|
||||
if(pitchFamily == _T(""))
|
||||
pitchFamily = _T("0");
|
||||
return XmlUtils::GetInteger(pitchFamily);
|
||||
}
|
||||
|
||||
|
||||
DWORD ShapeProperties::GetRunRGBA(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pRun.is_init())
|
||||
{
|
||||
if(pRun->Fill.is<SolidFill>())
|
||||
return pRun->Fill.as<SolidFill>().Color.GetRGBA();
|
||||
if(pRun->Fill.is<GradFill>())
|
||||
return pRun->Fill.as<GradFill>().GetFrontColor().GetRGBA();
|
||||
}
|
||||
|
||||
if((pParagraph.is_init()) && (pParagraph->defRPr.is_init()))
|
||||
{
|
||||
if(pParagraph->defRPr->Fill.is<SolidFill>())
|
||||
return pParagraph->defRPr->Fill.as<SolidFill>().Color.GetRGBA();
|
||||
if(pParagraph->defRPr->Fill.is<GradFill>())
|
||||
return pParagraph->defRPr->Fill.as<GradFill>().GetFrontColor().GetRGBA();
|
||||
}
|
||||
|
||||
if(levels[level]->defRPr->Fill.is<SolidFill>())
|
||||
return levels[level]->defRPr->Fill.as<SolidFill>().Color.GetRGBA();
|
||||
if(levels[level]->defRPr->Fill.is<GradFill>())
|
||||
return levels[level]->defRPr->Fill.as<GradFill>().GetFrontColor().GetRGBA();
|
||||
|
||||
if(fontStyle.is_init())
|
||||
return fontStyle->Color.GetRGBA();
|
||||
|
||||
if(masters[level]->defRPr->Fill.is<SolidFill>())
|
||||
return masters[level]->defRPr->Fill.as<SolidFill>().Color.GetRGBA();
|
||||
if(masters[level]->defRPr->Fill.is<GradFill>())
|
||||
return masters[level]->defRPr->Fill.as<GradFill>().GetFrontColor().GetRGBA();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD ShapeProperties::GetRunARGB(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pRun.is_init())
|
||||
{
|
||||
if(pRun->Fill.is<SolidFill>())
|
||||
return pRun->Fill.as<SolidFill>().Color.GetARGB();
|
||||
if(pRun->Fill.is<GradFill>())
|
||||
return pRun->Fill.as<GradFill>().GetFrontColor().GetARGB();
|
||||
}
|
||||
|
||||
if((pParagraph.is_init()) && (pParagraph->defRPr.is_init()))
|
||||
{
|
||||
if(pParagraph->defRPr->Fill.is<SolidFill>())
|
||||
return pParagraph->defRPr->Fill.as<SolidFill>().Color.GetARGB();
|
||||
if(pParagraph->defRPr->Fill.is<GradFill>())
|
||||
return pParagraph->defRPr->Fill.as<GradFill>().GetFrontColor().GetARGB();
|
||||
}
|
||||
|
||||
if(levels[level]->defRPr->Fill.is<SolidFill>())
|
||||
return levels[level]->defRPr->Fill.as<SolidFill>().Color.GetARGB();
|
||||
if(levels[level]->defRPr->Fill.is<GradFill>())
|
||||
return levels[level]->defRPr->Fill.as<GradFill>().GetFrontColor().GetARGB();
|
||||
|
||||
if(fontStyle.is_init())
|
||||
return fontStyle->Color.GetARGB();
|
||||
|
||||
if(masters[level]->defRPr->Fill.is<SolidFill>())
|
||||
return masters[level]->defRPr->Fill.as<SolidFill>().Color.GetARGB();
|
||||
if(masters[level]->defRPr->Fill.is<GradFill>())
|
||||
return masters[level]->defRPr->Fill.as<GradFill>().GetFrontColor().GetARGB();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD ShapeProperties::GetRunBGRA(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pRun.is_init())
|
||||
{
|
||||
if(pRun->Fill.is<SolidFill>())
|
||||
return pRun->Fill.as<SolidFill>().Color.GetBGRA();
|
||||
if(pRun->Fill.is<GradFill>())
|
||||
return pRun->Fill.as<GradFill>().GetFrontColor().GetBGRA();
|
||||
}
|
||||
|
||||
if((pParagraph.is_init()) && (pParagraph->defRPr.is_init()))
|
||||
{
|
||||
if(pParagraph->defRPr->Fill.is<SolidFill>())
|
||||
return pParagraph->defRPr->Fill.as<SolidFill>().Color.GetBGRA();
|
||||
if(pParagraph->defRPr->Fill.is<GradFill>())
|
||||
return pParagraph->defRPr->Fill.as<GradFill>().GetFrontColor().GetBGRA();
|
||||
}
|
||||
|
||||
if(levels[level]->defRPr->Fill.is<SolidFill>())
|
||||
return levels[level]->defRPr->Fill.as<SolidFill>().Color.GetBGRA();
|
||||
if(levels[level]->defRPr->Fill.is<GradFill>())
|
||||
return levels[level]->defRPr->Fill.as<GradFill>().GetFrontColor().GetBGRA();
|
||||
|
||||
if(fontStyle.is_init())
|
||||
return fontStyle->Color.GetBGRA();
|
||||
|
||||
if(masters[level]->defRPr->Fill.is<SolidFill>())
|
||||
return masters[level]->defRPr->Fill.as<SolidFill>().Color.GetBGRA();
|
||||
if(masters[level]->defRPr->Fill.is<GradFill>())
|
||||
return masters[level]->defRPr->Fill.as<GradFill>().GetFrontColor().GetBGRA();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD ShapeProperties::GetRunABGR(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pRun.is_init())
|
||||
{
|
||||
if(pRun->Fill.is<SolidFill>())
|
||||
return pRun->Fill.as<SolidFill>().Color.GetABGR();
|
||||
if(pRun->Fill.is<GradFill>())
|
||||
return pRun->Fill.as<GradFill>().GetFrontColor().GetABGR();
|
||||
}
|
||||
|
||||
if((pParagraph.is_init()) && (pParagraph->defRPr.is_init()))
|
||||
{
|
||||
if(pParagraph->defRPr->Fill.is<SolidFill>())
|
||||
return pParagraph->defRPr->Fill.as<SolidFill>().Color.GetABGR();
|
||||
if(pParagraph->defRPr->Fill.is<GradFill>())
|
||||
return pParagraph->defRPr->Fill.as<GradFill>().GetFrontColor().GetABGR();
|
||||
}
|
||||
|
||||
if(levels[level]->defRPr->Fill.is<SolidFill>())
|
||||
return levels[level]->defRPr->Fill.as<SolidFill>().Color.GetABGR();
|
||||
if(levels[level]->defRPr->Fill.is<GradFill>())
|
||||
return levels[level]->defRPr->Fill.as<GradFill>().GetFrontColor().GetABGR();
|
||||
|
||||
if(fontStyle.is_init())
|
||||
return fontStyle->Color.GetABGR();
|
||||
|
||||
if(masters[level]->defRPr->Fill.is<SolidFill>())
|
||||
return masters[level]->defRPr->Fill.as<SolidFill>().Color.GetABGR();
|
||||
if(masters[level]->defRPr->Fill.is<GradFill>())
|
||||
return masters[level]->defRPr->Fill.as<GradFill>().GetFrontColor().GetABGR();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
PPTX::Logic::UniColor ShapeProperties::GetColor(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pRun.is_init())
|
||||
{
|
||||
if(pRun->Fill.is<SolidFill>())
|
||||
return pRun->Fill.as<SolidFill>().Color;
|
||||
if(pRun->Fill.is<GradFill>())
|
||||
return pRun->Fill.as<GradFill>().GetFrontColor();
|
||||
}
|
||||
|
||||
if((pParagraph.is_init()) && (pParagraph->defRPr.is_init()))
|
||||
{
|
||||
if(pParagraph->defRPr->Fill.is<SolidFill>())
|
||||
return pParagraph->defRPr->Fill.as<SolidFill>().Color;
|
||||
if(pParagraph->defRPr->Fill.is<GradFill>())
|
||||
return pParagraph->defRPr->Fill.as<GradFill>().GetFrontColor();
|
||||
}
|
||||
|
||||
if(levels[level]->defRPr->Fill.is<SolidFill>())
|
||||
return levels[level]->defRPr->Fill.as<SolidFill>().Color;
|
||||
if(levels[level]->defRPr->Fill.is<GradFill>())
|
||||
return levels[level]->defRPr->Fill.as<GradFill>().GetFrontColor();
|
||||
|
||||
if(fontStyle.is_init())
|
||||
return fontStyle->Color;
|
||||
|
||||
if(masters[level]->defRPr->Fill.is<SolidFill>())
|
||||
return masters[level]->defRPr->Fill.as<SolidFill>().Color;
|
||||
if(masters[level]->defRPr->Fill.is<GradFill>())
|
||||
return masters[level]->defRPr->Fill.as<GradFill>().GetFrontColor();
|
||||
|
||||
UniColor oUniColor;
|
||||
return oUniColor;
|
||||
}
|
||||
|
||||
PPTX::Logic::UniColor ShapeProperties::GetColorBullet(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
if(pParagraph.IsInit())
|
||||
{
|
||||
if(pParagraph->buColor.is_init())
|
||||
{
|
||||
if (pParagraph->buColor.is<Logic::BuClr>())
|
||||
return pParagraph->buColor.as<Logic::BuClr>().Color;
|
||||
|
||||
PPTX::Logic::UniColor oColor;
|
||||
return oColor;
|
||||
}
|
||||
}
|
||||
|
||||
if (levels[level]->buColor.is_init())
|
||||
{
|
||||
if (levels[level]->buColor.is<Logic::BuClr>())
|
||||
return levels[level]->buColor.as<Logic::BuClr>().Color;
|
||||
|
||||
PPTX::Logic::UniColor oColor;
|
||||
return oColor;
|
||||
}
|
||||
|
||||
if (masters[level]->buColor.is_init())
|
||||
{
|
||||
if (masters[level]->buColor.is<Logic::BuClr>())
|
||||
return masters[level]->buColor.as<Logic::BuClr>().Color;
|
||||
|
||||
PPTX::Logic::UniColor oColor;
|
||||
return oColor;
|
||||
}
|
||||
PPTX::Logic::UniColor oColor;
|
||||
return oColor;
|
||||
}
|
||||
|
||||
void ShapeProperties::SetParentFilePointer(const WrapperFile* pFile)
|
||||
{
|
||||
if (bodyPr.IsInit())
|
||||
bodyPr->SetParentFilePointer(pFile);
|
||||
|
||||
for(int i = 0; i < 10; i ++)
|
||||
{
|
||||
levels[i]->SetParentFilePointer(pFile);
|
||||
masters[i]->SetParentFilePointer(pFile);
|
||||
}
|
||||
|
||||
if(fontStyle.is_init())
|
||||
fontStyle->SetParentFilePointer(pFile);
|
||||
}
|
||||
|
||||
DWORD ShapeProperties::GetHyperlinkRGBA()const
|
||||
{
|
||||
if (!bodyPr.IsInit()) return 0;
|
||||
|
||||
if(bodyPr->parentFileIs<Slide>())
|
||||
return bodyPr->parentFileAs<Slide>().GetRGBAFromMap(_T("hlink"));
|
||||
else if(bodyPr->parentFileIs<SlideLayout>())
|
||||
return bodyPr->parentFileAs<SlideLayout>().GetRGBAFromMap(_T("hlink"));
|
||||
else if(bodyPr->parentFileIs<SlideMaster>())
|
||||
return bodyPr->parentFileAs<SlideMaster>().GetRGBAFromMap(_T("hlink"));
|
||||
else return 0;
|
||||
}
|
||||
|
||||
DWORD ShapeProperties::GetHyperlinkARGB()const
|
||||
{
|
||||
if (!bodyPr.IsInit()) return 0;
|
||||
|
||||
if(bodyPr->parentFileIs<Slide>())
|
||||
return bodyPr->parentFileAs<Slide>().GetARGBFromMap(_T("hlink"));
|
||||
else if(bodyPr->parentFileIs<SlideLayout>())
|
||||
return bodyPr->parentFileAs<SlideLayout>().GetARGBFromMap(_T("hlink"));
|
||||
else if(bodyPr->parentFileIs<SlideMaster>())
|
||||
return bodyPr->parentFileAs<SlideMaster>().GetARGBFromMap(_T("hlink"));
|
||||
else return 0;
|
||||
}
|
||||
|
||||
DWORD ShapeProperties::GetHyperlinkBGRA()const
|
||||
{
|
||||
if (!bodyPr.IsInit()) return 0;
|
||||
|
||||
if(bodyPr->parentFileIs<Slide>())
|
||||
return bodyPr->parentFileAs<Slide>().GetBGRAFromMap(_T("hlink"));
|
||||
else if(bodyPr->parentFileIs<SlideLayout>())
|
||||
return bodyPr->parentFileAs<SlideLayout>().GetBGRAFromMap(_T("hlink"));
|
||||
else if(bodyPr->parentFileIs<SlideMaster>())
|
||||
return bodyPr->parentFileAs<SlideMaster>().GetBGRAFromMap(_T("hlink"));
|
||||
else return 0;
|
||||
}
|
||||
|
||||
DWORD ShapeProperties::GetHyperlinkABGR()const
|
||||
{
|
||||
if (!bodyPr.IsInit()) return 0;
|
||||
|
||||
if(bodyPr->parentFileIs<Slide>())
|
||||
return bodyPr->parentFileAs<Slide>().GetABGRFromMap(_T("hlink"));
|
||||
else if(bodyPr->parentFileIs<SlideLayout>())
|
||||
return bodyPr->parentFileAs<SlideLayout>().GetABGRFromMap(_T("hlink"));
|
||||
else if(bodyPr->parentFileIs<SlideMaster>())
|
||||
return bodyPr->parentFileAs<SlideMaster>().GetABGRFromMap(_T("hlink"));
|
||||
else return 0;
|
||||
}
|
||||
|
||||
} // namespace Logic
|
||||
} // namespace PPTX
|
||||
@ -1,130 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2017
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
#ifndef PPTX_LOGIC_SHAPEPROPERTIES_INCLUDE_H_
|
||||
#define PPTX_LOGIC_SHAPEPROPERTIES_INCLUDE_H_
|
||||
|
||||
#include "RunProperties.h"
|
||||
#include "TextListStyle.h"
|
||||
#include "TxBody.h"
|
||||
#include "FontRef.h"
|
||||
#include "TextParagraphPr.h"
|
||||
#include "BodyPr.h"
|
||||
#include "TextFont.h"
|
||||
|
||||
namespace PPTX
|
||||
{
|
||||
namespace Logic
|
||||
{
|
||||
|
||||
class ShapeProperties
|
||||
{
|
||||
public:
|
||||
ShapeProperties();
|
||||
virtual ~ShapeProperties();
|
||||
|
||||
private:
|
||||
nullable<FontRef> fontStyle;
|
||||
nullable<TextParagraphPr> levels[10];
|
||||
nullable<TextParagraphPr> masters[10];
|
||||
nullable<BodyPr> bodyPr;
|
||||
|
||||
//std::string MajorLatin;
|
||||
//std::string MinorLatin;
|
||||
TextFont MajorLatin;
|
||||
TextFont MinorLatin;
|
||||
|
||||
DWORD m_nTextType;
|
||||
|
||||
public:
|
||||
|
||||
void SetTextType(DWORD dwType) { m_nTextType = 0; }
|
||||
DWORD GetTextType()const { return m_nTextType; }
|
||||
void FillFromTextListStyle(const nullable<TextListStyle>& Src);
|
||||
void FillFromTextListStyle(const TextListStyle& Src);
|
||||
void FillFromTextBody(const nullable<TxBody>& Src);
|
||||
void FillFontRef(const FontRef& Src);
|
||||
void FillMasterFontSize(int size);
|
||||
|
||||
//void SetMajorLatin(const std::string& mjltFont){MajorLatin = mjltFont;};
|
||||
//void SetMinorLatin(const std::string& mnltFont){MinorLatin = mnltFont;};
|
||||
void SetMajorLatin(const TextFont& mjltFont){MajorLatin = mjltFont;};
|
||||
void SetMinorLatin(const TextFont& mnltFont){MinorLatin = mnltFont;};
|
||||
|
||||
std::wstring GetAnchor()const{return bodyPr.IsInit() ? bodyPr->anchor.get_value_or(L"t") : L"t";};
|
||||
|
||||
std::wstring GetParagraphAlgn (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
int GetParagraphLeftMargin (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
int GetParagraphIndent (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
int GetParagraphDefTabSz (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
std::wstring GetParagraphFontAlgn (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
bool GetParagraphLatinLnBrk (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
bool GetParagraphRtl (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
int GetParagraphLnSpc (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
int GetParagraphSpcAft (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
int GetParagraphSpcBef (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
|
||||
bool HasParagraphBullet (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
|
||||
bool GetRunBold (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
bool GetRunItalic (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
std::wstring GetRunUnderline (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
std::wstring GetRunStrike (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
std::wstring GetRunCap (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
int GetRunBaseline (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
int GetRunSize (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
int GetRunSize (int level)const;
|
||||
|
||||
std::wstring GetRunFont (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph, LONG& lFontIndex)const;
|
||||
std::wstring GetRunPanose (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
BYTE GetRunCharset (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
BYTE GetRunPitchFamily (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
|
||||
DWORD GetRunRGBA (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
DWORD GetRunARGB (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
DWORD GetRunBGRA (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
DWORD GetRunABGR (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
|
||||
PPTX::Logic::UniColor GetColor(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
PPTX::Logic::UniColor GetColorBullet(int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
|
||||
DWORD GetHyperlinkRGBA()const;
|
||||
DWORD GetHyperlinkARGB()const;
|
||||
DWORD GetHyperlinkBGRA()const;
|
||||
DWORD GetHyperlinkABGR()const;
|
||||
|
||||
void SetParentFilePointer(const WrapperFile* pFile);
|
||||
};
|
||||
} // namespace Logic
|
||||
} // namespace PPTX
|
||||
|
||||
#endif // PPTX_LOGIC_SHAPEPROPERTIES_INCLUDE_H
|
||||
@ -1,658 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2017
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "ShapeTextProperties.h"
|
||||
#include "Fills/SolidFill.h"
|
||||
#include "Fills/GradFill.h"
|
||||
#include "../Slide.h"
|
||||
#include "../SlideLayout.h"
|
||||
#include "../SlideMaster.h"
|
||||
|
||||
namespace PPTX
|
||||
{
|
||||
namespace Logic
|
||||
{
|
||||
AVSINLINE WORD GetTextAnchorFromStr(const std::wstring& str)
|
||||
{
|
||||
if (str == _T("t")) return 0;
|
||||
if (str == _T("ctr")) return 1;
|
||||
if (str == _T("b")) return 2;
|
||||
return 0;
|
||||
}
|
||||
|
||||
AVSINLINE WORD GetTextAlignFromStr(const std::wstring& str)
|
||||
{
|
||||
if (str == _T("l")) return 0;
|
||||
if (str == _T("ctr")) return 1;
|
||||
if (str == _T("r")) return 2;
|
||||
if (str == _T("just")) return 3;
|
||||
if (str == _T("dist")) return 4;
|
||||
if (str == _T("thaiDist")) return 5;
|
||||
if (str == _T("justLow")) return 6;
|
||||
return 0;
|
||||
}
|
||||
|
||||
AVSINLINE WORD GetFontAlignFromStr(const std::wstring& str)
|
||||
{
|
||||
if (str == _T("auto")) return 0;
|
||||
if (str == _T("base")) return 0;
|
||||
if (str == _T("t")) return 1;
|
||||
if (str == _T("ctr")) return 2;
|
||||
if (str == _T("b")) return 3;
|
||||
return 0;
|
||||
}
|
||||
|
||||
AVSINLINE int GetIntegerFromHex(const std::wstring& string)
|
||||
{
|
||||
return XmlUtils::GetInteger(string);
|
||||
}
|
||||
|
||||
CShapeTextProperties::CShapeTextProperties()
|
||||
{
|
||||
m_lTextType = -1;
|
||||
m_bIsFontRefFromSlide = false;
|
||||
m_lMasterTextSize = -1;
|
||||
|
||||
m_bIsSlideShape = false;
|
||||
m_masters = NULL;
|
||||
|
||||
m_pFile = NULL;
|
||||
}
|
||||
|
||||
CShapeTextProperties::~CShapeTextProperties()
|
||||
{
|
||||
}
|
||||
|
||||
void CShapeTextProperties::FillTextType(const LONG& lTextMasterType)
|
||||
{
|
||||
m_lTextType = lTextMasterType;
|
||||
}
|
||||
void CShapeTextProperties::FillFromTextBody(const nullable<TxBody>& Src, const nullable<TextParagraphPr>* bodyStyles)
|
||||
{
|
||||
if (Src.IsInit())
|
||||
{
|
||||
if (Src->bodyPr.IsInit())
|
||||
Src->bodyPr->Merge(bodyPr);
|
||||
|
||||
if (Src->lstStyle.IsInit())
|
||||
{
|
||||
for(int i = 0; i < 10; i++)
|
||||
{
|
||||
if(Src->lstStyle->levels[i].IsInit())
|
||||
{
|
||||
if (NULL == bodyStyles)
|
||||
{
|
||||
// не фик мучиться здесь с темами. Это ж не в слайде.
|
||||
// А в слайде все будет круто
|
||||
Src->lstStyle->levels[i]->Merge(m_body[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
Src->lstStyle->levels[i]->Merge(m_levels[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (NULL != bodyStyles)
|
||||
{
|
||||
m_bIsSlideShape = true;
|
||||
for (int i = 0; i < 10; ++i)
|
||||
{
|
||||
m_body[i] = bodyStyles[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
void CShapeTextProperties::FillFontRef(const FontRef& Src, const bool& bIsSlideProperty)
|
||||
{
|
||||
m_FontStyle = Src;
|
||||
}
|
||||
void CShapeTextProperties::FillMasterFontSize(int size)
|
||||
{
|
||||
m_lMasterTextSize = size;
|
||||
}
|
||||
|
||||
nullable_base<WORD> CShapeTextProperties::GetParagraphAlgn(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
nullable_base<WORD> prop;
|
||||
|
||||
if (pParagraph.is_init())
|
||||
if (pParagraph->algn.is_init())
|
||||
prop = GetTextAlignFromStr(pParagraph->algn->get());
|
||||
|
||||
return prop;
|
||||
}
|
||||
nullable_base<LONG> CShapeTextProperties::GetParagraphLeftMargin(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
nullable_base<LONG> prop;
|
||||
|
||||
if (pParagraph.is_init())
|
||||
if (pParagraph->marL.is_init())
|
||||
prop = (LONG)pParagraph->marL.get();
|
||||
|
||||
return prop;
|
||||
}
|
||||
nullable_base<LONG> CShapeTextProperties::GetParagraphIndent(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
nullable_base<LONG> prop;
|
||||
|
||||
if (pParagraph.is_init())
|
||||
if (pParagraph->indent.is_init())
|
||||
prop = pParagraph->indent.get();
|
||||
|
||||
return prop;
|
||||
}
|
||||
nullable_base<LONG> CShapeTextProperties::GetParagraphDefTabSz(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
nullable_base<LONG> prop;
|
||||
|
||||
if (pParagraph.is_init())
|
||||
if (pParagraph->defTabSz.is_init())
|
||||
prop = (LONG)pParagraph->defTabSz.get();
|
||||
|
||||
return prop;
|
||||
}
|
||||
nullable_base<WORD> CShapeTextProperties::GetParagraphFontAlgn(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
nullable_base<WORD> prop;
|
||||
|
||||
if (pParagraph.is_init())
|
||||
if (pParagraph->fontAlgn.is_init())
|
||||
prop = (WORD)GetFontAlignFromStr(pParagraph->fontAlgn->get());
|
||||
|
||||
return prop;
|
||||
}
|
||||
nullable_base<WORD> CShapeTextProperties::GetParagraphLatinLnBrk(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
nullable_base<WORD> prop;
|
||||
|
||||
if (pParagraph.is_init())
|
||||
if (pParagraph->latinLnBrk.is_init())
|
||||
{
|
||||
bool bWrap = pParagraph->latinLnBrk.get();
|
||||
WORD lWrap = 0;
|
||||
if (bWrap)
|
||||
{
|
||||
lWrap &= 0xFD;
|
||||
lWrap |= 0x01;
|
||||
}
|
||||
else
|
||||
{
|
||||
lWrap &= 0xFE;
|
||||
lWrap |= 0x02;
|
||||
}
|
||||
prop = lWrap;
|
||||
}
|
||||
|
||||
return prop;
|
||||
}
|
||||
nullable_base<WORD> CShapeTextProperties::GetParagraphRtl(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
nullable_base<WORD> prop;
|
||||
|
||||
if (pParagraph.is_init())
|
||||
if (pParagraph->rtl.is_init())
|
||||
{
|
||||
WORD lVal = 0;
|
||||
if (pParagraph->rtl.get())
|
||||
lVal = 1;
|
||||
|
||||
prop = lVal;
|
||||
}
|
||||
|
||||
return prop;
|
||||
}
|
||||
nullable_base<LONG> CShapeTextProperties::GetParagraphLnSpc(int level, const nullable<TextParagraphPr>& pParagraph, const double& LnSpcReduction)const
|
||||
{
|
||||
nullable_base<LONG> prop;
|
||||
|
||||
if (pParagraph.is_init())
|
||||
if (pParagraph->lnSpc.is_init())
|
||||
{
|
||||
int space = pParagraph->lnSpc->GetVal();
|
||||
if (space < 0)
|
||||
prop = (LONG)(space * 127 * (1 - LnSpcReduction));// - 13200;
|
||||
else
|
||||
prop = (LONG)(space * (1 - LnSpcReduction));
|
||||
}
|
||||
|
||||
return prop;
|
||||
}
|
||||
nullable_base<LONG> CShapeTextProperties::GetParagraphSpcAft(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
nullable_base<LONG> prop;
|
||||
|
||||
if (pParagraph.is_init())
|
||||
if (pParagraph->spcAft.is_init())
|
||||
{
|
||||
int space = pParagraph->spcAft->GetVal();
|
||||
if (space < 0)
|
||||
prop = (LONG)(space * 127);// - 13200;
|
||||
else
|
||||
prop = (LONG)space;
|
||||
}
|
||||
|
||||
return prop;
|
||||
}
|
||||
nullable_base<LONG> CShapeTextProperties::GetParagraphSpcBef(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
nullable_base<LONG> prop;
|
||||
|
||||
if (pParagraph.is_init())
|
||||
if (pParagraph->spcBef.is_init())
|
||||
{
|
||||
int space = pParagraph->spcBef->GetVal();
|
||||
if (space < 0)
|
||||
prop = (LONG)(space * 127);// - 13200;
|
||||
else
|
||||
prop = (LONG)space;
|
||||
}
|
||||
|
||||
return prop;
|
||||
}
|
||||
|
||||
nullable_base<bool> CShapeTextProperties::GetHasBullet(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
nullable_base<bool> prop;
|
||||
|
||||
if (pParagraph.is_init())
|
||||
if (pParagraph->ParagraphBullet.is_init())
|
||||
{
|
||||
prop = (bool)pParagraph->ParagraphBullet.has_bullet();
|
||||
return prop;
|
||||
}
|
||||
|
||||
if (m_body[level].is_init())
|
||||
if (m_body[level]->ParagraphBullet.is_init())
|
||||
{
|
||||
prop = (bool)m_body[level]->ParagraphBullet.has_bullet();
|
||||
return prop;
|
||||
}
|
||||
|
||||
if (m_levels[level].is_init())
|
||||
if (m_levels[level]->ParagraphBullet.is_init())
|
||||
{
|
||||
prop = (bool)m_levels[level]->ParagraphBullet.has_bullet();
|
||||
return prop;
|
||||
}
|
||||
|
||||
return prop;
|
||||
}
|
||||
|
||||
nullable_base<bool> CShapeTextProperties::GetRunBold(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
nullable_base<bool> prop;
|
||||
|
||||
if (pRun.is_init())
|
||||
if (pRun->b.is_init())
|
||||
{
|
||||
prop = (bool)pRun->b.get();
|
||||
return prop;
|
||||
}
|
||||
if (pParagraph.is_init())
|
||||
if (pParagraph->defRPr.is_init())
|
||||
if (pParagraph->defRPr->b.is_init())
|
||||
{
|
||||
prop = (bool)pParagraph->defRPr->b.get();
|
||||
}
|
||||
|
||||
return prop;
|
||||
}
|
||||
nullable_base<bool> CShapeTextProperties::GetRunItalic(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
nullable_base<bool> prop;
|
||||
|
||||
if (pRun.is_init())
|
||||
if (pRun->i.is_init())
|
||||
{
|
||||
prop = (bool)pRun->i.get();
|
||||
return prop;
|
||||
}
|
||||
if (pParagraph.is_init())
|
||||
if (pParagraph->defRPr.is_init())
|
||||
if (pParagraph->defRPr->i.is_init())
|
||||
{
|
||||
prop = (bool)pParagraph->defRPr->i.get();
|
||||
}
|
||||
|
||||
return prop;
|
||||
}
|
||||
nullable_base<bool> CShapeTextProperties::GetRunUnderline(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
nullable_base<bool> prop;
|
||||
|
||||
if (pRun.is_init())
|
||||
if (pRun->u.is_init())
|
||||
{
|
||||
prop = (_T("none") != pRun->u->get()) ? true : false;
|
||||
return prop;
|
||||
}
|
||||
if (pParagraph.is_init())
|
||||
if (pParagraph->defRPr.is_init())
|
||||
if (pParagraph->defRPr->u.is_init())
|
||||
{
|
||||
prop = (_T("none") != pParagraph->defRPr->u->get()) ? true : false;
|
||||
return prop;
|
||||
}
|
||||
|
||||
return prop;
|
||||
}
|
||||
nullable_base<bool> CShapeTextProperties::GetRunStrike(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
nullable_base<bool> prop;
|
||||
|
||||
if (pRun.is_init())
|
||||
if (pRun->strike.is_init())
|
||||
{
|
||||
prop = (_T("noStrike") != pRun->strike->get()) ? true : false;
|
||||
return prop;
|
||||
}
|
||||
if (pParagraph.is_init())
|
||||
if (pParagraph->defRPr.is_init())
|
||||
if (pParagraph->defRPr->strike.is_init())
|
||||
prop = (_T("noStrike") != pParagraph->defRPr->strike->get()) ? true : false;
|
||||
|
||||
return prop;
|
||||
}
|
||||
nullable_base<WORD> CShapeTextProperties::GetRunCap(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
nullable_base<WORD> prop;
|
||||
|
||||
if (pRun.is_init())
|
||||
if (pRun->cap.is_init())
|
||||
{
|
||||
std::wstring str = pRun->cap->get();
|
||||
if (_T("all") == str)
|
||||
prop = (WORD)1;
|
||||
else if (_T("small") == str)
|
||||
prop = (WORD)2;
|
||||
else
|
||||
prop = (WORD)0;
|
||||
|
||||
return prop;
|
||||
}
|
||||
if(pParagraph.is_init())
|
||||
if(pParagraph->defRPr.is_init())
|
||||
if(pParagraph->defRPr->cap.is_init())
|
||||
{
|
||||
std::wstring str = pParagraph->defRPr->cap->get();
|
||||
if (_T("all") == str)
|
||||
prop = (WORD)1;
|
||||
else if (_T("small") == str)
|
||||
prop = (WORD)2;
|
||||
else
|
||||
prop = (WORD)0;
|
||||
}
|
||||
|
||||
return prop;
|
||||
}
|
||||
nullable_base<double> CShapeTextProperties::GetRunBaseline(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
nullable_base<double> prop;
|
||||
|
||||
if (pRun.is_init())
|
||||
if (pRun->baseline.is_init())
|
||||
{
|
||||
prop = (double)pRun->baseline.get() / 1000;
|
||||
return prop;
|
||||
}
|
||||
if (pParagraph.is_init())
|
||||
if (pParagraph->defRPr.is_init())
|
||||
if (pParagraph->defRPr->baseline.is_init())
|
||||
prop = (double)pParagraph->defRPr->baseline.get() / 1000;
|
||||
|
||||
return prop;
|
||||
}
|
||||
nullable_base<WORD> CShapeTextProperties::GetRunSize(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph, const double& FontScale)const
|
||||
{
|
||||
nullable_base<WORD> prop;
|
||||
|
||||
if (pRun.is_init())
|
||||
if (pRun->sz.is_init())
|
||||
{
|
||||
int size = pRun->sz.get();
|
||||
prop = (WORD)((size * FontScale + 50) / 100);
|
||||
return prop;
|
||||
}
|
||||
if (pParagraph.is_init())
|
||||
if (pParagraph->defRPr.is_init())
|
||||
if (pParagraph->defRPr->sz.is_init())
|
||||
{
|
||||
int size = pParagraph->defRPr->sz.get();
|
||||
prop = (WORD)((size * FontScale + 50) / 100);
|
||||
return prop;
|
||||
}
|
||||
|
||||
if (-1 != m_lMasterTextSize)
|
||||
{
|
||||
bool bIsSetUp = false;
|
||||
|
||||
if (m_levels[level].is_init())
|
||||
if (m_levels[level]->defRPr.is_init())
|
||||
if (m_levels[level]->defRPr->sz.is_init())
|
||||
bIsSetUp = true;
|
||||
|
||||
if (!bIsSetUp)
|
||||
{
|
||||
if (m_body[level].is_init())
|
||||
if (m_body[level]->defRPr.is_init())
|
||||
if (m_body[level]->defRPr->sz.is_init())
|
||||
bIsSetUp = true;
|
||||
}
|
||||
|
||||
if (!bIsSetUp)
|
||||
prop = (WORD)((double)(m_lMasterTextSize * FontScale + 50) / 100);
|
||||
}
|
||||
|
||||
return prop;
|
||||
}
|
||||
|
||||
nullable_base<CFontInfo> CShapeTextProperties::GetRunFont(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
nullable_base<CFontInfo> prop;
|
||||
|
||||
if ((pRun.is_init()) && (pRun->latin.is_init()))
|
||||
{
|
||||
CFontInfo oInfo;
|
||||
|
||||
oInfo.strFontName = pRun->latin->typeface;
|
||||
oInfo.strPanose = pRun->latin->panose.get_value_or(_T(""));
|
||||
oInfo.strPitchFamily = pRun->latin->pitchFamily.get_value_or(_T(""));
|
||||
oInfo.Charset = XmlUtils::GetInteger(pRun->latin->charset.get_value_or(_T("0")));
|
||||
|
||||
oInfo.FontRef = -1;
|
||||
if (oInfo.strFontName == _T("+mj-lt"))
|
||||
{
|
||||
oInfo.strFontName = MajorLatin.typeface;
|
||||
oInfo.FontRef = 0;
|
||||
}
|
||||
else if (oInfo.strFontName == _T("+mn-lt"))
|
||||
{
|
||||
oInfo.strFontName = MinorLatin.typeface;
|
||||
oInfo.FontRef = 1;
|
||||
}
|
||||
else if (oInfo.strFontName == _T(""))
|
||||
{
|
||||
oInfo.strFontName = MinorLatin.typeface;
|
||||
oInfo.FontRef = 1;
|
||||
}
|
||||
|
||||
prop = oInfo;
|
||||
}
|
||||
else if ((pParagraph.is_init()) && (pParagraph->defRPr.is_init()) && (pParagraph->defRPr->latin.is_init()))
|
||||
{
|
||||
CFontInfo oInfo;
|
||||
|
||||
oInfo.strFontName = pParagraph->defRPr->latin->typeface;
|
||||
oInfo.strPanose = pParagraph->defRPr->latin->panose.get_value_or(_T(""));
|
||||
oInfo.strPitchFamily = pParagraph->defRPr->latin->pitchFamily.get_value_or(_T(""));
|
||||
oInfo.Charset = XmlUtils::GetInteger(pParagraph->defRPr->latin->charset.get_value_or(_T("0")));
|
||||
|
||||
oInfo.FontRef = -1;
|
||||
if (oInfo.strFontName == _T("+mj-lt"))
|
||||
{
|
||||
oInfo.strFontName = MajorLatin.typeface;
|
||||
oInfo.FontRef = 0;
|
||||
}
|
||||
else if (oInfo.strFontName == _T("+mn-lt"))
|
||||
{
|
||||
oInfo.strFontName = MinorLatin.typeface;
|
||||
oInfo.FontRef = 1;
|
||||
}
|
||||
else if (oInfo.strFontName == _T(""))
|
||||
{
|
||||
oInfo.strFontName = MinorLatin.typeface;
|
||||
oInfo.FontRef = 1;
|
||||
}
|
||||
prop = oInfo;
|
||||
}
|
||||
|
||||
return prop;
|
||||
}
|
||||
PPTX::Logic::UniColor CShapeTextProperties::GetColor(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
PPTX::Logic::UniColor prop;
|
||||
|
||||
if (pRun.is_init())
|
||||
{
|
||||
if (pRun->Fill.is<SolidFill>())
|
||||
{
|
||||
prop = pRun->Fill.as<SolidFill>().Color;
|
||||
return prop;
|
||||
}
|
||||
if (pRun->Fill.is<GradFill>())
|
||||
{
|
||||
prop = pRun->Fill.as<GradFill>().GetFrontColor();
|
||||
return prop;
|
||||
}
|
||||
}
|
||||
|
||||
if ((pParagraph.is_init()) && (pParagraph->defRPr.is_init()))
|
||||
{
|
||||
if (pParagraph->defRPr->Fill.is<SolidFill>())
|
||||
{
|
||||
prop = pParagraph->defRPr->Fill.as<SolidFill>().Color;
|
||||
return prop;
|
||||
}
|
||||
if (pParagraph->defRPr->Fill.is<GradFill>())
|
||||
{
|
||||
prop = pParagraph->defRPr->Fill.as<GradFill>().GetFrontColor();
|
||||
return prop;
|
||||
}
|
||||
}
|
||||
|
||||
return prop;
|
||||
}
|
||||
PPTX::Logic::UniColor CShapeTextProperties::GetColorBullet(int level, const nullable<TextParagraphPr>& pParagraph)const
|
||||
{
|
||||
PPTX::Logic::UniColor prop;
|
||||
|
||||
if (pParagraph.is_init())
|
||||
{
|
||||
if (pParagraph->buColor.is_init())
|
||||
{
|
||||
if (pParagraph->buColor.is<Logic::BuClr>())
|
||||
prop = pParagraph->buColor.as<Logic::BuClr>().Color;
|
||||
}
|
||||
}
|
||||
|
||||
return prop;
|
||||
}
|
||||
|
||||
DWORD CShapeTextProperties::GetHyperlinkRGBA()const
|
||||
{
|
||||
if (!bodyPr.IsInit()) return 0;
|
||||
|
||||
if(bodyPr->parentFileIs<Slide>())
|
||||
return bodyPr->parentFileAs<Slide>().GetRGBAFromMap(_T("hlink"));
|
||||
else if(bodyPr->parentFileIs<SlideLayout>())
|
||||
return bodyPr->parentFileAs<SlideLayout>().GetRGBAFromMap(_T("hlink"));
|
||||
else if(bodyPr->parentFileIs<SlideMaster>())
|
||||
return bodyPr->parentFileAs<SlideMaster>().GetRGBAFromMap(_T("hlink"));
|
||||
else return 0;
|
||||
}
|
||||
DWORD CShapeTextProperties::GetHyperlinkARGB()const
|
||||
{
|
||||
if (!bodyPr.IsInit()) return 0;
|
||||
|
||||
if(bodyPr->parentFileIs<Slide>())
|
||||
return bodyPr->parentFileAs<Slide>().GetARGBFromMap(_T("hlink"));
|
||||
else if(bodyPr->parentFileIs<SlideLayout>())
|
||||
return bodyPr->parentFileAs<SlideLayout>().GetARGBFromMap(_T("hlink"));
|
||||
else if(bodyPr->parentFileIs<SlideMaster>())
|
||||
return bodyPr->parentFileAs<SlideMaster>().GetARGBFromMap(_T("hlink"));
|
||||
else return 0;
|
||||
}
|
||||
DWORD CShapeTextProperties::GetHyperlinkBGRA()const
|
||||
{
|
||||
if (!bodyPr.IsInit()) return 0;
|
||||
|
||||
if(bodyPr->parentFileIs<Slide>())
|
||||
return bodyPr->parentFileAs<Slide>().GetBGRAFromMap(_T("hlink"));
|
||||
else if(bodyPr->parentFileIs<SlideLayout>())
|
||||
return bodyPr->parentFileAs<SlideLayout>().GetBGRAFromMap(_T("hlink"));
|
||||
else if(bodyPr->parentFileIs<SlideMaster>())
|
||||
return bodyPr->parentFileAs<SlideMaster>().GetBGRAFromMap(_T("hlink"));
|
||||
else return 0;
|
||||
}
|
||||
DWORD CShapeTextProperties::GetHyperlinkABGR()const
|
||||
{
|
||||
if (!bodyPr.IsInit()) return 0;
|
||||
|
||||
if(bodyPr->parentFileIs<Slide>())
|
||||
return bodyPr->parentFileAs<Slide>().GetABGRFromMap(_T("hlink"));
|
||||
else if(bodyPr->parentFileIs<SlideLayout>())
|
||||
return bodyPr->parentFileAs<SlideLayout>().GetABGRFromMap(_T("hlink"));
|
||||
else if(bodyPr->parentFileIs<SlideMaster>())
|
||||
return bodyPr->parentFileAs<SlideMaster>().GetABGRFromMap(_T("hlink"));
|
||||
else return 0;
|
||||
}
|
||||
|
||||
void CShapeTextProperties::SetParentFilePointer(const WrapperFile* pFile)
|
||||
{
|
||||
if (bodyPr.IsInit())
|
||||
bodyPr->SetParentFilePointer(pFile);
|
||||
|
||||
m_pFile = pFile;
|
||||
|
||||
//for(int i = 0; i < 10; i ++)
|
||||
//{
|
||||
// m_levels[i]->SetParentFilePointer(pFile);
|
||||
// m_body[i]->SetParentFilePointer(pFile);
|
||||
//}
|
||||
|
||||
if(m_FontStyle.is_init())
|
||||
m_FontStyle->SetParentFilePointer(pFile);
|
||||
}
|
||||
} // namespace Logic
|
||||
} // namespace PPTX
|
||||
@ -1,176 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2017
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
#ifndef PPTX_LOGIC_SHAPETEXTPROPERTIES_INCLUDE_H_
|
||||
#define PPTX_LOGIC_SHAPETEXTPROPERTIES_INCLUDE_H_
|
||||
|
||||
#include "RunProperties.h"
|
||||
#include "TextListStyle.h"
|
||||
#include "TxBody.h"
|
||||
#include "FontRef.h"
|
||||
#include "TextParagraphPr.h"
|
||||
#include "BodyPr.h"
|
||||
#include "TextFont.h"
|
||||
|
||||
namespace PPTX
|
||||
{
|
||||
namespace Logic
|
||||
{
|
||||
class CFontInfo
|
||||
{
|
||||
public:
|
||||
LONG FontRef;
|
||||
std::wstring strFontName;
|
||||
std::wstring strPanose;
|
||||
std::wstring strPitchFamily;
|
||||
BYTE Charset;
|
||||
|
||||
public:
|
||||
CFontInfo()
|
||||
{
|
||||
FontRef = -1;
|
||||
strFontName = _T("");
|
||||
strPanose = _T("");
|
||||
strPitchFamily = _T("");
|
||||
Charset = 0;
|
||||
}
|
||||
CFontInfo(const CFontInfo& oSrc)
|
||||
{
|
||||
*this = oSrc;
|
||||
}
|
||||
CFontInfo& operator=(const CFontInfo& oSrc)
|
||||
{
|
||||
FontRef = oSrc.FontRef;
|
||||
strFontName = oSrc.strFontName;
|
||||
strPanose = oSrc.strPanose;
|
||||
strPitchFamily = oSrc.strPitchFamily;
|
||||
Charset = oSrc.Charset;
|
||||
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
class CShapeTextProperties
|
||||
{
|
||||
public:
|
||||
CShapeTextProperties();
|
||||
virtual ~CShapeTextProperties();
|
||||
|
||||
private:
|
||||
nullable<FontRef> m_FontStyle;
|
||||
LONG m_lTextType;
|
||||
nullable<TextParagraphPr> m_levels[10];
|
||||
nullable<TextParagraphPr> m_body[10];
|
||||
nullable<BodyPr> bodyPr;
|
||||
|
||||
// просто указатель - он должен выставиться из темы
|
||||
std::vector<nullable<TextParagraphPr>*>* m_masters;
|
||||
|
||||
TextFont MajorLatin;
|
||||
TextFont MinorLatin;
|
||||
|
||||
bool m_bIsFontRefFromSlide;
|
||||
int m_lMasterTextSize; // заглушка под таблицы.
|
||||
|
||||
bool m_bIsSlideShape;
|
||||
|
||||
const WrapperFile* m_pFile;
|
||||
|
||||
public:
|
||||
void FillTextType(const LONG& lTextMasterType);
|
||||
void FillFromTextBody(const nullable<TxBody>& Src, const nullable<TextParagraphPr>* bodyStyles);
|
||||
void FillFontRef(const FontRef& Src, const bool& bIsSlideProperty);
|
||||
void FillMasterFontSize(int size);
|
||||
|
||||
AVSINLINE void SetMajorLatin(const TextFont& mjltFont){MajorLatin = mjltFont;};
|
||||
AVSINLINE void SetMinorLatin(const TextFont& mnltFont){MinorLatin = mnltFont;};
|
||||
|
||||
AVSINLINE void SetMasterStyles(std::vector<nullable<TextParagraphPr>*>* pStyles) { m_masters = pStyles; }
|
||||
|
||||
AVSINLINE nullable<TextParagraphPr>* GetLevels()
|
||||
{
|
||||
if (!m_bIsSlideShape)
|
||||
return NULL;
|
||||
return m_levels;
|
||||
}
|
||||
AVSINLINE nullable<TextParagraphPr>* GetLevelsBody() { return m_body; }
|
||||
AVSINLINE LONG GetTextType() { return m_lTextType; }
|
||||
AVSINLINE LONG GetFontRef(bool& bIsSlideSetUp)
|
||||
{
|
||||
bIsSlideSetUp = m_bIsFontRefFromSlide;
|
||||
|
||||
if (m_FontStyle.is_init() && m_FontStyle->idx.is_init())
|
||||
{
|
||||
return (m_FontStyle->idx->get() == _T("minor")) ? 1 : 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
std::wstring GetAnchor()const{return bodyPr.IsInit() ? bodyPr->anchor.get_value_or(L"t") : L"t"; };
|
||||
|
||||
nullable_base<WORD> GetParagraphAlgn (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
nullable_base<LONG> GetParagraphLeftMargin (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
nullable_base<LONG> GetParagraphIndent (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
nullable_base<LONG> GetParagraphDefTabSz (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
nullable_base<WORD> GetParagraphFontAlgn (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
nullable_base<WORD> GetParagraphLatinLnBrk (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
nullable_base<WORD> GetParagraphRtl (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
nullable_base<LONG> GetParagraphLnSpc (int level, const nullable<TextParagraphPr>& pParagraph, const double& LnSpcReduction)const;
|
||||
nullable_base<LONG> GetParagraphSpcAft (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
nullable_base<LONG> GetParagraphSpcBef (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
|
||||
nullable_base<bool> GetHasBullet (int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
|
||||
nullable_base<bool> GetRunBold (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
nullable_base<bool> GetRunItalic (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
nullable_base<bool> GetRunUnderline (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
nullable_base<bool> GetRunStrike (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
nullable_base<WORD> GetRunCap (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
nullable_base<double> GetRunBaseline (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
nullable_base<WORD> GetRunSize (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph, const double& FontScale)const;
|
||||
|
||||
nullable_base<CFontInfo> GetRunFont (int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
|
||||
PPTX::Logic::UniColor GetColor(int level, const nullable<RunProperties>& pRun, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
PPTX::Logic::UniColor GetColorBullet(int level, const nullable<TextParagraphPr>& pParagraph)const;
|
||||
|
||||
DWORD GetHyperlinkRGBA()const;
|
||||
DWORD GetHyperlinkARGB()const;
|
||||
DWORD GetHyperlinkBGRA()const;
|
||||
DWORD GetHyperlinkABGR()const;
|
||||
|
||||
void SetParentFilePointer(const WrapperFile* pFile);
|
||||
};
|
||||
} // namespace Logic
|
||||
} // namespace PPTX
|
||||
|
||||
#endif // PPTX_LOGIC_SHAPETEXTPROPERTIES_INCLUDE_H_
|
||||
@ -36,6 +36,7 @@
|
||||
#include "../SlideMaster.h"
|
||||
|
||||
#include "../../ASCOfficeDrawingConverter.h"
|
||||
#include "../../../XlsxSerializerCom/Reader/ChartFromToBinary.h"
|
||||
#include "../../../ASCOfficeDocxFile2/DocWrapper/XlsxSerializer.h"
|
||||
#include "../../../Common/DocxFormat/Source/DocxFormat/Diagram/DiagramData.h"
|
||||
#include "../../../Common/DocxFormat/Source/DocxFormat/Diagram/DiagramDrawing.h"
|
||||
@ -49,11 +50,11 @@ namespace PPTX
|
||||
if (m_diag.IsInit())
|
||||
return ;
|
||||
|
||||
FileContainer* pRels = NULL;
|
||||
OOX::IFileContainer* pRels = NULL;
|
||||
if (pWriter)
|
||||
{
|
||||
if (pWriter->m_pCommonRels->is_init())
|
||||
pRels = pWriter->m_pCommonRels->operator ->();
|
||||
if (pWriter->m_pCurrentContainer->is_init())
|
||||
pRels = pWriter->m_pCurrentContainer->operator ->();
|
||||
}
|
||||
|
||||
smart_ptr<OOX::File> oFileData;
|
||||
@ -65,11 +66,8 @@ namespace PPTX
|
||||
|
||||
if(id_data.IsInit())
|
||||
{
|
||||
if (parentFileIs<Slide>()) oFileData = parentFileAs<Slide>().Find(*id_data);
|
||||
else if (parentFileIs<SlideLayout>()) oFileData = parentFileAs<SlideLayout>().Find(*id_data);
|
||||
else if (parentFileIs<SlideMaster>()) oFileData = parentFileAs<SlideMaster>().Find(*id_data);
|
||||
else if (parentFileIs<Theme>()) oFileData = parentFileAs<Theme>().Find(*id_data);
|
||||
else if (pRels != NULL) oFileData = pRels->Find(*id_data);
|
||||
if (parentFileIs<OOX::IFileContainer>()) oFileData = parentFileAs<OOX::IFileContainer>().Find(*id_data);
|
||||
else if (pRels != NULL) oFileData = pRels->Find(*id_data);
|
||||
}
|
||||
|
||||
if (oFileData.IsInit())
|
||||
@ -90,11 +88,8 @@ namespace PPTX
|
||||
|
||||
if (id_drawing.IsInit())
|
||||
{
|
||||
if (parentFileIs<Slide>()) oFileDrawing = parentFileAs<Slide>().Find(*id_drawing);
|
||||
else if (parentFileIs<SlideLayout>()) oFileDrawing = parentFileAs<SlideLayout>().Find(*id_drawing);
|
||||
else if (parentFileIs<SlideMaster>()) oFileDrawing = parentFileAs<SlideMaster>().Find(*id_drawing);
|
||||
else if (parentFileIs<Theme>()) oFileDrawing = parentFileAs<Theme>().Find(*id_drawing);
|
||||
else if (pRels != NULL) oFileDrawing = pRels->Find(*id_data);
|
||||
if (parentFileIs<OOX::IFileContainer>()) oFileDrawing = parentFileAs<OOX::IFileContainer>().Find(*id_drawing);
|
||||
else if (pRels != NULL) oFileDrawing = pRels->Find(*id_data);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -127,8 +122,7 @@ namespace PPTX
|
||||
m_diag = pDiagramDrawing->m_oShapeTree;
|
||||
FillParentPointersForChilds();
|
||||
|
||||
m_oCommonRels = smart_ptr<PPTX::CCommonRels>( new PPTX::CCommonRels());
|
||||
m_oCommonRels->_read(pDiagramDrawing->m_oReadPath);
|
||||
m_pFileContainer = smart_ptr<OOX::IFileContainer>(pDiagramDrawing);
|
||||
|
||||
if (!m_diag->grpSpPr.xfrm.IsInit())
|
||||
m_diag->grpSpPr.xfrm = new PPTX::Logic::Xfrm;
|
||||
@ -141,43 +135,30 @@ namespace PPTX
|
||||
|
||||
void ChartRec::toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
|
||||
{
|
||||
FileContainer* pRels = NULL;
|
||||
if (pWriter->m_pCommonRels->is_init())
|
||||
pRels = pWriter->m_pCommonRels->operator ->();
|
||||
OOX::IFileContainer* pRels = NULL;
|
||||
if (pWriter->m_pCurrentContainer->is_init())
|
||||
pRels = pWriter->m_pCurrentContainer->operator ->();
|
||||
|
||||
std::wstring strDataPath = L"";
|
||||
smart_ptr<OOX::File> file;
|
||||
if(id_data.IsInit())
|
||||
{
|
||||
if(parentFileIs<Slide>())
|
||||
strDataPath = parentFileAs<Slide>().GetMediaFullPathNameFromRId(*id_data);
|
||||
else if(parentFileIs<SlideLayout>())
|
||||
strDataPath = parentFileAs<SlideLayout>().GetMediaFullPathNameFromRId(*id_data);
|
||||
else if(parentFileIs<SlideMaster>())
|
||||
strDataPath = parentFileAs<SlideMaster>().GetMediaFullPathNameFromRId(*id_data);
|
||||
else if(parentFileIs<Theme>())
|
||||
strDataPath = parentFileAs<Theme>().GetMediaFullPathNameFromRId(*id_data);
|
||||
else if (pRels != NULL)
|
||||
{
|
||||
smart_ptr<OOX::Image> p = pRels->GetImage(*id_data);
|
||||
if (p.is_init())
|
||||
strDataPath = p->filename().m_strFilename;
|
||||
}
|
||||
if(parentFileIs<OOX::IFileContainer>()) file = parentFileAs<OOX::IFileContainer>().Find(*id_data);
|
||||
else if (pRels != NULL) file = pRels->Find(*id_data);
|
||||
}
|
||||
smart_ptr<OOX::Spreadsheet::CChartSpace> pChart = file.smart_dynamic_cast<OOX::Spreadsheet::CChartSpace>();
|
||||
|
||||
if (strDataPath.empty())
|
||||
if (pChart.IsInit() == false)
|
||||
return;
|
||||
|
||||
BinXlsxRW::CXlsxSerializer oXlsxSerializer;
|
||||
NSBinPptxRW::CDrawingConverter oDrawingConverter;
|
||||
NSBinPptxRW::CBinaryFileWriter* pOldWriter = oDrawingConverter.m_pBinaryWriter;
|
||||
|
||||
oDrawingConverter.m_pBinaryWriter = pWriter;
|
||||
NSCommon::smart_ptr<PPTX::CCommonRels> pOldRels = *oDrawingConverter.m_pBinaryWriter->m_pCommonRels;
|
||||
oDrawingConverter.SetRels(pChart.smart_dynamic_cast<OOX::IFileContainer>());
|
||||
|
||||
BinXlsxRW::BinaryChartWriter oBinaryChartWriter(*pWriter, &oDrawingConverter);
|
||||
oBinaryChartWriter.WriteCT_ChartSpace(*pChart);
|
||||
|
||||
oXlsxSerializer.setDrawingConverter(&oDrawingConverter);
|
||||
|
||||
long lDataSize = 0;
|
||||
oXlsxSerializer.loadChart(strDataPath, pWriter, lDataSize);
|
||||
*oDrawingConverter.m_pBinaryWriter->m_pCommonRels = pOldRels;
|
||||
oDrawingConverter.m_pBinaryWriter = pOldWriter;
|
||||
}
|
||||
std::wstring ChartRec::toXML() const
|
||||
|
||||
@ -97,10 +97,12 @@ namespace PPTX
|
||||
{
|
||||
if (m_diag.is_init())
|
||||
{
|
||||
smart_ptr<PPTX::CCommonRels> old = *pWriter->m_pCommonRels;
|
||||
*pWriter->m_pCommonRels = m_oCommonRels;
|
||||
smart_ptr<OOX::IFileContainer> old = *pWriter->m_pCurrentContainer;
|
||||
*pWriter->m_pCurrentContainer = m_pFileContainer;
|
||||
|
||||
m_diag->toPPTY(pWriter);
|
||||
*pWriter->m_pCommonRels = old;
|
||||
|
||||
*pWriter->m_pCurrentContainer = old;
|
||||
}
|
||||
}
|
||||
|
||||
@ -115,7 +117,7 @@ namespace PPTX
|
||||
nullable<OOX::RId> id_style;
|
||||
|
||||
nullable<PPTX::Logic::SpTree> m_diag;
|
||||
smart_ptr<PPTX::CCommonRels> m_oCommonRels;
|
||||
smart_ptr<OOX::IFileContainer> m_pFileContainer;
|
||||
protected:
|
||||
virtual void FillParentPointersForChilds()
|
||||
{
|
||||
|
||||
@ -37,8 +37,6 @@
|
||||
#include "./../Logic/NvGrpSpPr.h"
|
||||
#include "./../Logic/GrpSpPr.h"
|
||||
#include "SpTreeElem.h"
|
||||
#include "ShapeProperties.h"
|
||||
#include "ShapeTextProperties.h"
|
||||
|
||||
#include "../../../DesktopEditor/graphics/aggplustypes.h"
|
||||
|
||||
|
||||
@ -418,6 +418,8 @@ namespace PPTX
|
||||
smart_ptr<PPTX::Logic::SpTree> oSpTree = m_elem.smart_dynamic_cast<PPTX::Logic::SpTree>();
|
||||
if (oSpTree.IsInit()) oSpTree->toXmlWriterVML(pWriter, oTheme, oClrMap);
|
||||
}break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -114,16 +114,5 @@ namespace PPTX
|
||||
CellProperties->SetParentPointer(this);
|
||||
}
|
||||
|
||||
void TableCell::GetShapeProperties(ShapeProperties& props)const
|
||||
{
|
||||
if(parentFileIs<Slide>())
|
||||
{
|
||||
parentFileAs<Slide>().FillShapeProperties(props, _T("table-cell"));
|
||||
props.FillFromTextBody(txBody);
|
||||
|
||||
//props.SetParentFilePointer(parentFile);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace Logic
|
||||
} // namespace PPTX
|
||||
|
||||
@ -36,7 +36,6 @@
|
||||
#include "./../../WrapperWritingElement.h"
|
||||
#include "./../TxBody.h"
|
||||
#include "TableCellProperties.h"
|
||||
#include "../ShapeProperties.h"
|
||||
|
||||
namespace PPTX
|
||||
{
|
||||
@ -59,8 +58,6 @@ namespace PPTX
|
||||
|
||||
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);
|
||||
|
||||
virtual void GetShapeProperties(ShapeProperties& props)const;
|
||||
|
||||
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
|
||||
{
|
||||
pWriter->StartNode(_T("a:tc"));
|
||||
|
||||
@ -138,7 +138,6 @@ namespace PPTX
|
||||
pWriter->EndNode(_T("p:txStyles"));
|
||||
}
|
||||
|
||||
public:
|
||||
nullable<TextListStyle> titleStyle;
|
||||
nullable<TextListStyle> bodyStyle;
|
||||
nullable<TextListStyle> otherStyle;
|
||||
|
||||
@ -52,7 +52,6 @@
|
||||
#include "Logic/CxnSp.h"
|
||||
#include "Logic/GraphicFrame.h"
|
||||
#include "Logic/TxBody.h"
|
||||
#include "Logic/ShapeProperties.h"
|
||||
#include "Logic/SpTree.h"
|
||||
#include "Logic/UniFill.h"
|
||||
#include "Logic/UniColor.h"
|
||||
|
||||
@ -41,7 +41,6 @@
|
||||
#include "Logic/Transitions/Transition.h"
|
||||
#include "Logic/Timing/Timing.h"
|
||||
|
||||
#include "Logic/ShapeProperties.h"
|
||||
#include "Logic/Bg.h"
|
||||
|
||||
#include "Theme.h"
|
||||
@ -73,8 +72,6 @@ namespace PPTX
|
||||
virtual ~Slide()
|
||||
{
|
||||
}
|
||||
|
||||
public:
|
||||
virtual void read(const OOX::CPath& filename, FileMap& map)
|
||||
{
|
||||
//FileContainer::read(filename, map);
|
||||
@ -147,38 +144,7 @@ namespace PPTX
|
||||
return type().DefaultFileName();
|
||||
}
|
||||
//-------------------------------------------------
|
||||
virtual void FillShapeProperties(Logic::ShapeProperties& props, const std::wstring& type)const
|
||||
{
|
||||
if (Layout.IsInit())
|
||||
Layout->FillShapeProperties(props, type);
|
||||
}
|
||||
virtual void FillShapeTextProperties(Logic::CShapeTextProperties& props, const std::wstring& type)const
|
||||
{
|
||||
if (Layout.IsInit())
|
||||
Layout->FillShapeTextProperties(props, type);
|
||||
}
|
||||
virtual bool GetBackground(Logic::BgPr& bg, DWORD& ARGB)const
|
||||
{
|
||||
if (cSld->bg.is_init())
|
||||
{
|
||||
if(cSld->bg->bgPr.is_init())
|
||||
bg = cSld->bg->bgPr.get();
|
||||
else if(cSld->bg->bgRef.is_init())
|
||||
{
|
||||
ARGB = cSld->bg->bgRef->Color.GetARGB();
|
||||
theme->themeElements.fmtScheme.GetFillStyle(cSld->bg->bgRef->idx.get_value_or(0), bg.Fill);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else//from slideLayout
|
||||
{
|
||||
if (Layout.IsInit())
|
||||
Layout->GetBackground(bg, ARGB);
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
virtual std::wstring GetMediaFullPathNameFromRId(const OOX::RId& rid)const
|
||||
{
|
||||
smart_ptr<OOX::Image> p = GetImage(rid);
|
||||
@ -362,7 +328,6 @@ namespace PPTX
|
||||
pReader->Seek(end);
|
||||
}
|
||||
|
||||
public:
|
||||
nullable_bool show;
|
||||
nullable_bool showMasterPhAnim;
|
||||
nullable_bool showMasterSp;
|
||||
@ -380,8 +345,7 @@ namespace PPTX
|
||||
smart_ptr<TableStyles> tableStyles_;
|
||||
|
||||
smart_ptr<PPTX::Comments> comments;
|
||||
|
||||
public:
|
||||
//--------------------------------------------------------------------------------------
|
||||
void ApplyRels()
|
||||
{
|
||||
Layout = FileContainer::Get(OOX::Presentation::FileTypes::SlideLayout).smart_dynamic_cast<PPTX::SlideLayout>();//boost::shared_dynamic_cast<PPTX::SlideLayout, PPTX::File>(FileContainer::get(OOX::Presentation::FileTypes::SlideLayout));
|
||||
|
||||
@ -46,7 +46,6 @@
|
||||
|
||||
#include "Logic/SpTreeElem.h"
|
||||
#include "Logic/Shape.h"
|
||||
#include "Logic/ShapeProperties.h"
|
||||
|
||||
#include "Theme.h"
|
||||
#include "SlideMaster.h"
|
||||
@ -73,8 +72,6 @@ namespace PPTX
|
||||
virtual ~SlideLayout()
|
||||
{
|
||||
}
|
||||
|
||||
public:
|
||||
virtual void read(const OOX::CPath& filename, FileMap& map)
|
||||
{
|
||||
m_sOutputFilename = filename.GetFilename();
|
||||
@ -114,7 +111,6 @@ namespace PPTX
|
||||
FileContainer::write(filename, directory, content);
|
||||
}
|
||||
|
||||
public:
|
||||
virtual const OOX::FileType type() const
|
||||
{
|
||||
return OOX::Presentation::FileTypes::SlideLayout;
|
||||
@ -128,103 +124,40 @@ namespace PPTX
|
||||
return type().DefaultFileName();
|
||||
}
|
||||
|
||||
public:
|
||||
virtual void GetLevelUp(const Logic::Shape& pShape)const
|
||||
virtual void GetLevelUp(Logic::Shape* pShape)
|
||||
{
|
||||
if(pShape.nvSpPr.nvPr.ph.is_init())
|
||||
{
|
||||
std::wstring idx = /*pShape.nvSpPr->nvPr->ph.is_init()?*/pShape.nvSpPr.nvPr.ph->idx.get_value_or(_T("0"));//:"";
|
||||
std::wstring type = /*pShape.nvSpPr->nvPr->ph.is_init()?*/pShape.nvSpPr.nvPr.ph->type.get_value_or(_T("body"));//:"";
|
||||
if(type == _T("ctrTitle"))
|
||||
type = _T("title");
|
||||
if (!pShape) return;
|
||||
|
||||
size_t count = cSld.spTree.SpTreeElems.size();
|
||||
for(size_t i = 0; i < count; ++i)
|
||||
if(pShape->nvSpPr.nvPr.ph.is_init())
|
||||
{
|
||||
std::wstring idx = pShape->nvSpPr.nvPr.ph->idx.get_value_or(_T("0"));
|
||||
std::wstring type = pShape->nvSpPr.nvPr.ph->type.get_value_or(_T("body"));
|
||||
|
||||
if(type == L"ctrTitle") type = L"title";
|
||||
|
||||
for(size_t i = 0; i < cSld.spTree.SpTreeElems.size(); ++i)
|
||||
{
|
||||
const PPTX::Logic::SpTreeElem* pElem = &cSld.spTree.SpTreeElems[i];
|
||||
|
||||
if(pElem->is<Logic::Shape>())
|
||||
smart_ptr<Logic::Shape> pLayoutShape = cSld.spTree.SpTreeElems[i].GetElem().smart_dynamic_cast<Logic::Shape>();
|
||||
|
||||
if(pLayoutShape.IsInit())
|
||||
{
|
||||
const Logic::Shape& LayoutShape = pElem->as<Logic::Shape>();
|
||||
if(LayoutShape.nvSpPr.nvPr.ph.is_init())
|
||||
if(pLayoutShape->nvSpPr.nvPr.ph.is_init())
|
||||
{
|
||||
std::wstring lIdx = /*LayoutShape->nvSpPr->nvPr->ph.is_init()?*/LayoutShape.nvSpPr.nvPr.ph->idx.get_value_or(_T("0"));//:"";
|
||||
std::wstring lType = /*LayoutShape->nvSpPr->nvPr->ph.is_init()?*/LayoutShape.nvSpPr.nvPr.ph->type.get_value_or(_T("body"));//:"";
|
||||
if(lType == _T("ctrTitle"))
|
||||
lType = _T("title");
|
||||
std::wstring lIdx = pLayoutShape->nvSpPr.nvPr.ph->idx.get_value_or(_T("0"));
|
||||
std::wstring lType = pLayoutShape->nvSpPr.nvPr.ph->type.get_value_or(_T("body"));
|
||||
|
||||
if(lType == _T("ctrTitle")) lType = _T("title");
|
||||
|
||||
if((type == lType) && (idx == lIdx))
|
||||
{
|
||||
pShape.SetLevelUpElement(LayoutShape);
|
||||
pShape->SetLevelUpElement(pLayoutShape.operator->());
|
||||
return;
|
||||
}
|
||||
|
||||
//if(lType == "ctrTitle")
|
||||
// lType = "title";
|
||||
//if(idx == LayoutShape->nvSpPr->nvPr->idx.get_value_or("0"))
|
||||
//{
|
||||
// if((type == LayoutShape->nvSpPr->nvPr->type.get_value_or("")) || ((type == "") && (LayoutShape->nvSpPr->nvPr->type.get_value_or("") != "")))
|
||||
// pShape->SetLevelUpElement(LayoutShape);
|
||||
// return;
|
||||
//}
|
||||
//if((type == lType) && (type != ""))
|
||||
//{
|
||||
// if(idx == lIdx)
|
||||
// {
|
||||
// pShape.SetLevelUpElement(LayoutShape);
|
||||
// return;
|
||||
// }
|
||||
// continue;
|
||||
//}
|
||||
//if((type == lType) && (type == ""))
|
||||
//{
|
||||
// if((idx == lIdx) && (idx != ""))
|
||||
// {
|
||||
// pShape.SetLevelUpElement(LayoutShape);
|
||||
// return;
|
||||
// }
|
||||
//}
|
||||
//if(type != lType)
|
||||
//{
|
||||
// if((idx == lIdx) && (idx != ""))
|
||||
// {
|
||||
// pShape.SetLevelUpElement(LayoutShape);
|
||||
// return;
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
virtual void FillShapeProperties(Logic::ShapeProperties& props, const std::wstring& type)const
|
||||
{
|
||||
if(Master.IsInit())
|
||||
Master->FillShapeProperties(props, type);
|
||||
}
|
||||
virtual void FillShapeTextProperties(Logic::CShapeTextProperties& props, const std::wstring& type)const
|
||||
{
|
||||
if(Master.IsInit())
|
||||
Master->FillShapeTextProperties(props, type);
|
||||
}
|
||||
virtual void GetBackground(Logic::BgPr& bg, DWORD& ARGB)const
|
||||
{
|
||||
if(cSld.bg.is_init())
|
||||
{
|
||||
if(cSld.bg->bgPr.is_init())
|
||||
bg = cSld.bg->bgPr.get();
|
||||
else if(cSld.bg->bgRef.is_init())
|
||||
{
|
||||
ARGB = cSld.bg->bgRef->Color.GetARGB();
|
||||
theme->themeElements.fmtScheme.GetFillStyle(cSld.bg->bgRef->idx.get_value_or(0), bg.Fill);
|
||||
//bg.SetParentFilePointer(this);
|
||||
}
|
||||
}
|
||||
else//from slideMaster
|
||||
{
|
||||
if(Master.IsInit())
|
||||
Master->GetBackground(bg, ARGB);
|
||||
}
|
||||
}
|
||||
virtual std::wstring GetMediaFullPathNameFromRId(const OOX::RId& rid)const
|
||||
{
|
||||
smart_ptr<OOX::Image> p = GetImage(rid);
|
||||
|
||||
@ -45,7 +45,6 @@
|
||||
#include "Logic/XmlId.h"
|
||||
|
||||
#include "Logic/Shape.h"
|
||||
#include "Logic/ShapeProperties.h"
|
||||
#include "Logic/TxBody.h"
|
||||
#include "Logic/UniColor.h"
|
||||
|
||||
@ -72,8 +71,6 @@ namespace PPTX
|
||||
virtual ~SlideMaster()
|
||||
{
|
||||
}
|
||||
|
||||
public:
|
||||
virtual void read(const OOX::CPath& filename, FileMap& map)
|
||||
{
|
||||
m_sOutputFilename = filename.GetFilename();
|
||||
@ -121,8 +118,6 @@ namespace PPTX
|
||||
WrapperFile::write(filename, directory, content);
|
||||
FileContainer::write(filename, directory, content);
|
||||
}
|
||||
|
||||
public:
|
||||
virtual const OOX::FileType type() const
|
||||
{
|
||||
return OOX::Presentation::FileTypes::SlideMaster;
|
||||
@ -135,170 +130,38 @@ namespace PPTX
|
||||
{
|
||||
return type().DefaultFileName();
|
||||
}
|
||||
|
||||
public:
|
||||
void GetLevelUp(const Logic::Shape& pShape)const
|
||||
void GetLevelUp(Logic::Shape* pShape)
|
||||
{
|
||||
if(pShape.nvSpPr.nvPr.ph.is_init())
|
||||
{
|
||||
std::wstring idx = /*pShape.nvSpPr->nvPr->ph.is_init()?*/pShape.nvSpPr.nvPr.ph->idx.get_value_or(_T("0"));//:"";
|
||||
std::wstring type = /*pShape.nvSpPr->nvPr->ph.is_init()?*/pShape.nvSpPr.nvPr.ph->type.get_value_or(_T("body"));//:"";
|
||||
if(type == _T("ctrTitle"))
|
||||
type = _T("title");
|
||||
if (!pShape) return;
|
||||
|
||||
size_t count = cSld.spTree.SpTreeElems.size();
|
||||
for (size_t i = 0; i < count; ++i)
|
||||
if(pShape->nvSpPr.nvPr.ph.is_init())
|
||||
{
|
||||
std::wstring idx = pShape->nvSpPr.nvPr.ph->idx.get_value_or(_T("0"));
|
||||
std::wstring type = pShape->nvSpPr.nvPr.ph->type.get_value_or(_T("body"));
|
||||
|
||||
if (type == _T("ctrTitle")) type = _T("title");
|
||||
|
||||
for (size_t i = 0; i < cSld.spTree.SpTreeElems.size(); ++i)
|
||||
{
|
||||
const PPTX::Logic::SpTreeElem* pElem = &cSld.spTree.SpTreeElems[i];
|
||||
if(pElem->is<Logic::Shape>())
|
||||
smart_ptr<Logic::Shape> pMasterShape = cSld.spTree.SpTreeElems[i].GetElem().smart_dynamic_cast<Logic::Shape>();
|
||||
if (pMasterShape.IsInit())
|
||||
{
|
||||
const Logic::Shape& MasterShape = pElem->as<Logic::Shape>();
|
||||
if(MasterShape.nvSpPr.nvPr.ph.is_init())
|
||||
if (pMasterShape->nvSpPr.nvPr.ph.is_init())
|
||||
{
|
||||
std::wstring lIdx = /*MasterShape->nvSpPr->nvPr->ph.is_init()?*/MasterShape.nvSpPr.nvPr.ph->idx.get_value_or(_T("0"));//:"";
|
||||
std::wstring lType = /*MasterShape->nvSpPr->nvPr->ph.is_init()?*/MasterShape.nvSpPr.nvPr.ph->type.get_value_or(_T("body"));//:"";
|
||||
if(lType == _T("ctrTitle"))
|
||||
lType = _T("title");
|
||||
if(type == lType)
|
||||
std::wstring lIdx = pMasterShape->nvSpPr.nvPr.ph->idx.get_value_or(_T("0"));
|
||||
std::wstring lType = pMasterShape->nvSpPr.nvPr.ph->type.get_value_or(_T("body"));
|
||||
|
||||
if (lType == L"ctrTitle") lType = L"title";
|
||||
if (type == lType)
|
||||
{
|
||||
pShape.SetLevelUpElement(MasterShape);
|
||||
pShape->SetLevelUpElement(pMasterShape.operator->());
|
||||
return;
|
||||
}
|
||||
|
||||
//if(idx == MasterShape->nvSpPr->nvPr->idx.get_value_or("0"))
|
||||
//{
|
||||
// if((type == MasterShape->nvSpPr->nvPr->type.get_value_or("")) || ((type == "") && (MasterShape->nvSpPr->nvPr->type.get_value_or("") != "")))
|
||||
// pShape->SetLevelUpElement(MasterShape);
|
||||
// return;
|
||||
//}
|
||||
//if((type == lType) && (type != ""))
|
||||
//{
|
||||
// //if(idx == lIdx)
|
||||
// //{
|
||||
// pShape.SetLevelUpElement(MasterShape);
|
||||
// return;
|
||||
// //}
|
||||
// //continue;
|
||||
//}
|
||||
//if((type == lType) && (type == ""))
|
||||
//{
|
||||
// if((idx == lType) && (idx != ""))
|
||||
// {
|
||||
// pShape.SetLevelUpElement(MasterShape);
|
||||
// return;
|
||||
// }
|
||||
//}
|
||||
//if(type != lType)
|
||||
//{
|
||||
// if((idx == lIdx) && (idx != ""))
|
||||
// {
|
||||
// pShape.SetLevelUpElement(MasterShape);
|
||||
// return;
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
void FillShapeProperties(Logic::ShapeProperties& props, const std::wstring& type)const
|
||||
{
|
||||
if((theme.IsInit()) && (theme->presentation.IsInit()))
|
||||
{
|
||||
PPTX::Presentation* pPres = const_cast<PPTX::Presentation*>(theme->presentation.operator->());
|
||||
|
||||
pPres->SetClrMap(clrMap);
|
||||
pPres->SetClrScheme(theme->themeElements.clrScheme);
|
||||
}
|
||||
if((theme.IsInit()) && (type != _T("")))
|
||||
theme->FillShapeProperties(props, type);
|
||||
|
||||
if(txStyles.is_init())
|
||||
{
|
||||
// props.FillFromTextListStyle(txStyles->otherStyle, true);
|
||||
|
||||
//if(type == "")
|
||||
//{
|
||||
// if(Theme->spDef.is_init())
|
||||
// {
|
||||
// props.FillFromTextListStyle(Theme->spDef->lstStyle, true);
|
||||
// if(Theme->spDef->style.is_init())
|
||||
// props.FillFontRef(Theme->spDef->style->fontRef.get());
|
||||
// }
|
||||
// else
|
||||
// props.FillFromTextListStyle(txStyles->otherStyle, true);
|
||||
// return;
|
||||
//}
|
||||
|
||||
if((type == _T("title")) || (type == _T("ctrTitle")))
|
||||
{
|
||||
props.FillFromTextListStyle(txStyles->titleStyle);
|
||||
props.SetTextType(1);
|
||||
}
|
||||
else if((type == _T("body")) || (type == _T("subTitle")) || (type == _T("obj")))
|
||||
{
|
||||
props.FillFromTextListStyle(txStyles->bodyStyle);
|
||||
props.SetTextType(2);
|
||||
}
|
||||
else if(type != _T(""))
|
||||
{
|
||||
props.FillFromTextListStyle(txStyles->otherStyle);
|
||||
props.SetTextType(3);
|
||||
}
|
||||
else
|
||||
{
|
||||
props.FillFromTextListStyle(txStyles->otherStyle);
|
||||
props.SetTextType(3);
|
||||
|
||||
if(theme.IsInit())
|
||||
theme->FillShapeProperties(props, type);
|
||||
}
|
||||
}
|
||||
}
|
||||
void FillShapeTextProperties(Logic::CShapeTextProperties& props, const std::wstring& type)const
|
||||
{
|
||||
if((theme.IsInit()) && (theme->presentation.IsInit()))
|
||||
{
|
||||
PPTX::Presentation* pPres = const_cast<PPTX::Presentation*>(theme->presentation.operator->());
|
||||
|
||||
pPres->SetClrMap(clrMap);
|
||||
pPres->SetClrScheme(theme->themeElements.clrScheme);
|
||||
}
|
||||
|
||||
if (type == _T("table-cell"))
|
||||
props.FillMasterFontSize(1800);
|
||||
|
||||
if ((type == _T("title")) || (type == _T("ctrTitle")))
|
||||
{
|
||||
props.FillTextType(1);
|
||||
}
|
||||
else if ((type == _T("body")) || (type == _T("subTitle")) || (type == _T("obj")))
|
||||
{
|
||||
props.FillTextType(2);
|
||||
}
|
||||
else if (type != _T(""))
|
||||
{
|
||||
props.FillTextType(3);
|
||||
}
|
||||
else
|
||||
{
|
||||
props.FillTextType(0);
|
||||
}
|
||||
}
|
||||
void GetBackground(Logic::BgPr& bg, DWORD& ARGB)const
|
||||
{
|
||||
if(cSld.bg.is_init())
|
||||
{
|
||||
if(cSld.bg->bgPr.is_init())
|
||||
bg = cSld.bg->bgPr.get();
|
||||
else if(cSld.bg->bgRef.is_init())
|
||||
{
|
||||
ARGB = cSld.bg->bgRef->Color.GetARGB();
|
||||
theme->themeElements.fmtScheme.GetFillStyle(cSld.bg->bgRef->idx.get_value_or(0), bg.Fill);
|
||||
// bg.SetParentFilePointer(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
virtual std::wstring GetMediaFullPathNameFromRId(const OOX::RId& rid)const
|
||||
{
|
||||
smart_ptr<OOX::Image> p = GetImage(rid);
|
||||
@ -321,8 +184,7 @@ namespace PPTX
|
||||
return p->filename().m_strFilename;
|
||||
}
|
||||
|
||||
//---------------------Colors from map---------------------------------------
|
||||
|
||||
//---------------------Colors from map---------------------------------------
|
||||
DWORD GetRGBAFromMap(const std::wstring& str)const
|
||||
{
|
||||
return theme->GetRGBAFromScheme(clrMap.GetColorSchemeIndex(str));
|
||||
@ -342,9 +204,7 @@ namespace PPTX
|
||||
{
|
||||
return theme->GetABGRFromScheme(clrMap.GetColorSchemeIndex(str));
|
||||
}
|
||||
|
||||
//---------------------------Colors from scheme------------------------------
|
||||
|
||||
//---------------------------Colors from scheme------------------------------
|
||||
DWORD GetRGBAFromScheme(const std::wstring& str)const
|
||||
{
|
||||
return theme->GetRGBAFromScheme(str);
|
||||
@ -365,7 +225,7 @@ namespace PPTX
|
||||
return theme->GetABGRFromScheme(str);
|
||||
}
|
||||
|
||||
//void ApplyColors();
|
||||
|
||||
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
|
||||
{
|
||||
pWriter->StartRecord(NSBinPptxRW::NSMainTables::SlideMasters);
|
||||
@ -476,7 +336,8 @@ namespace PPTX
|
||||
pReader->Seek(end);
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
|
||||
Logic::CSld cSld;
|
||||
Logic::ClrMap clrMap;
|
||||
std::vector<Logic::XmlId> sldLayoutIdLst;
|
||||
@ -490,7 +351,6 @@ namespace PPTX
|
||||
smart_ptr<TableStyles> tableStyles;
|
||||
smart_ptr<OOX::CVmlDrawing> Vml;
|
||||
|
||||
public:
|
||||
void ApplyRels()
|
||||
{
|
||||
theme = (FileContainer::Get(OOX::FileTypes::Theme)).smart_dynamic_cast<PPTX::Theme>();
|
||||
|
||||
@ -40,7 +40,6 @@
|
||||
#include "Logic/DefaultShapeDefinition.h"
|
||||
#include "Theme/ExtraClrScheme.h"
|
||||
|
||||
#include "Logic/ShapeProperties.h"
|
||||
#include "Logic/ClrMap.h"
|
||||
|
||||
#include "Presentation.h"
|
||||
@ -325,24 +324,6 @@ namespace PPTX
|
||||
return GetABGRFromScheme(m_map->GetColorSchemeIndex(str));
|
||||
}
|
||||
|
||||
virtual void FillShapeProperties(Logic::ShapeProperties& props, const std::wstring& type)const
|
||||
{
|
||||
if(presentation.IsInit())
|
||||
{
|
||||
props.FillFromTextListStyle(presentation->defaultTextStyle);
|
||||
props.SetTextType(0);
|
||||
}
|
||||
if(type == _T("table-cell"))
|
||||
props.FillMasterFontSize(1800);
|
||||
//if(spDef.is_init())
|
||||
//{
|
||||
// props.FillFromTextListStyle(spDef->lstStyle, true);
|
||||
// if(spDef->style.is_init())
|
||||
// props.FillFontRef(spDef->style->fontRef.get());
|
||||
//}
|
||||
props.SetMajorLatin(themeElements.fontScheme.majorFont.latin);
|
||||
props.SetMinorLatin(themeElements.fontScheme.minorFont.latin);
|
||||
}
|
||||
virtual std::wstring GetMediaFullPathNameFromRId(const OOX::RId& rid)const
|
||||
{
|
||||
smart_ptr<OOX::Image> p = GetImage(rid);
|
||||
|
||||
@ -80,8 +80,6 @@ SOURCES += \
|
||||
../../../PPTXFormat/Logic/NvGrpSpPr.cpp \
|
||||
../../../PPTXFormat/Logic/Pic.cpp \
|
||||
../../../PPTXFormat/Logic/Shape.cpp \
|
||||
../../../PPTXFormat/Logic/ShapeProperties.cpp \
|
||||
../../../PPTXFormat/Logic/ShapeTextProperties.cpp \
|
||||
../../../PPTXFormat/Logic/SmartArt.cpp \
|
||||
../../../PPTXFormat/Logic/SpPr.cpp \
|
||||
../../../PPTXFormat/Logic/SpTree.cpp \
|
||||
@ -400,9 +398,7 @@ HEADERS += pptxformatlib.h \
|
||||
../../../PPTXFormat/Logic/RunProperties.h \
|
||||
../../../PPTXFormat/Logic/Scene3d.h \
|
||||
../../../PPTXFormat/Logic/Shape.h \
|
||||
../../../PPTXFormat/Logic/ShapeProperties.h \
|
||||
../../../PPTXFormat/Logic/ShapeStyle.h \
|
||||
../../../PPTXFormat/Logic/ShapeTextProperties.h \
|
||||
../../../PPTXFormat/Logic/SmartArt.h \
|
||||
../../../PPTXFormat/Logic/Sp3d.h \
|
||||
../../../PPTXFormat/Logic/SpPr.h \
|
||||
|
||||
@ -51,8 +51,6 @@
|
||||
#include "../../../PPTXFormat/Logic/NvGrpSpPr.cpp"
|
||||
#include "../../../PPTXFormat/Logic/Pic.cpp"
|
||||
#include "../../../PPTXFormat/Logic/Shape.cpp"
|
||||
#include "../../../PPTXFormat/Logic/ShapeProperties.cpp"
|
||||
#include "../../../PPTXFormat/Logic/ShapeTextProperties.cpp"
|
||||
#include "../../../PPTXFormat/Logic/SmartArt.cpp"
|
||||
#include "../../../PPTXFormat/Logic/SpPr.cpp"
|
||||
#include "../../../PPTXFormat/Logic/SpTree.cpp"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8,00"
|
||||
Version="8.00"
|
||||
Name="PPTXFormat"
|
||||
ProjectGUID="{36636678-AE25-4BE6-9A34-2561D1BCF302}"
|
||||
RootNamespace="PPTXFormat"
|
||||
@ -2756,124 +2756,10 @@
|
||||
RelativePath="..\.\PPTXFormat\Logic\Shape.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\.\PPTXFormat\Logic\ShapeProperties.cpp"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
PrecompiledHeaderThrough="./StdAfx.h"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
PrecompiledHeaderThrough="./StdAfx.h"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PrecompiledHeaderThrough="./StdAfx.h"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
PrecompiledHeaderThrough="./StdAfx.h"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="ReleaseASC|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
PrecompiledHeaderThrough="./StdAfx.h"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="ReleaseOpenSource|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
PrecompiledHeaderThrough="./StdAfx.h"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\.\PPTXFormat\Logic\ShapeProperties.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\.\PPTXFormat\Logic\ShapeStyle.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\.\PPTXFormat\Logic\ShapeTextProperties.cpp"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
PrecompiledHeaderThrough="./StdAfx.h"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
PrecompiledHeaderThrough="./StdAfx.h"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PrecompiledHeaderThrough="./StdAfx.h"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
PrecompiledHeaderThrough="./StdAfx.h"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="ReleaseASC|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
PrecompiledHeaderThrough="./StdAfx.h"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="ReleaseOpenSource|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
PrecompiledHeaderThrough="./StdAfx.h"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\.\PPTXFormat\Logic\ShapeTextProperties.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\.\PPTXFormat\Logic\Sp3d.h"
|
||||
>
|
||||
|
||||
@ -661,7 +661,7 @@ bool OOXRunReader::Parse( ReaderParameter oParam , RtfParagraph& oOutputParagrap
|
||||
}
|
||||
}
|
||||
//todooo проверить что тут за путь ..
|
||||
std::wstring sOlePath = oParam.oReader->m_sPath + FILE_SEPARATOR_STR + sRelativePath;
|
||||
std::wstring sOlePath = sRelativePath;
|
||||
|
||||
POLE::Storage *storage = new POLE::Storage(sOlePath.c_str());
|
||||
if (storage)
|
||||
@ -693,8 +693,9 @@ bool OOXRunReader::Parse( ReaderParameter oParam , RtfParagraph& oOutputParagrap
|
||||
}
|
||||
}
|
||||
}
|
||||
if( NULL != aPictShape && NULL != oCurOle )
|
||||
if( NULL != aPictShape)
|
||||
{
|
||||
aPictShape->m_nShapeType = 75;//NSOfficeDrawing::sptPictureFrame;
|
||||
//надо пересчитать размеры картинки так чтобы scalex == 100 и scaley = 100
|
||||
//если scalex != 100, то после редактирование ole киртинка сжимается(растягивается)
|
||||
if( NULL != aPictShape->m_oPicture )
|
||||
@ -714,7 +715,9 @@ bool OOXRunReader::Parse( ReaderParameter oParam , RtfParagraph& oOutputParagrap
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if( NULL != aPictShape && NULL != oCurOle )
|
||||
{
|
||||
TextItemContainerPtr oNewTextItemContainer ( new TextItemContainer() );
|
||||
RtfParagraphPtr pNewPar ( new RtfParagraph() );
|
||||
|
||||
@ -725,6 +728,10 @@ bool OOXRunReader::Parse( ReaderParameter oParam , RtfParagraph& oOutputParagrap
|
||||
oCurOle->m_oResultPic = aPictShape;
|
||||
oOutputParagraph.AddItem( oCurOle );
|
||||
}
|
||||
else if (NULL != aPictShape)
|
||||
{
|
||||
oOutputParagraph.AddItem( aPictShape );
|
||||
}
|
||||
}
|
||||
}break;
|
||||
case OOX::et_w_drawing:
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8,00"
|
||||
Version="8.00"
|
||||
Name="RtfFormatTest"
|
||||
ProjectGUID="{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}"
|
||||
RootNamespace="RtfFormatTest"
|
||||
@ -339,7 +339,7 @@
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Name="Common"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
@ -391,10 +391,18 @@
|
||||
RelativePath="..\..\ASCOfficeDocxFile2\DocWrapper\FontProcessor.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Common\OfficeFileFormatChecker2.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Common\3dParty\pole\pole.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\ASCOfficeDocxFile2\BinReader\Readers.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\ASCOfficeOdfFile\src\odf\svg_parser.cpp"
|
||||
>
|
||||
|
||||
@ -30,19 +30,20 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include "../../TxtXmlFormatLib/source/TxtXmlFile.h"
|
||||
#include "../TxtXmlFormatLib/source/TxtXmlFile.h"
|
||||
|
||||
#include "../../../OfficeUtils/src/OfficeUtils.h"
|
||||
|
||||
#include "../../../Common/DocxFormat/Source/SystemUtility/FileSystem/Directory.h"
|
||||
#include "../../OfficeUtils/src/OfficeUtils.h"
|
||||
#include "../../DesktopEditor/common/Directory.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <string>
|
||||
#include <tchar.h>
|
||||
|
||||
namespace BinDocxRW
|
||||
{
|
||||
int g_nCurFormatVersion = 0; //extern from ...DocxSerializer
|
||||
}
|
||||
#if defined(_WIN64)
|
||||
#pragma comment(lib, "../../build/bin/icu/win_64/icuuc.lib")
|
||||
#elif defined (_WIN32)
|
||||
#pragma comment(lib, "../../build/bin/icu/win_32/icuuc.lib")
|
||||
#endif
|
||||
|
||||
int _tmain(int argc, _TCHAR* argv[])
|
||||
{
|
||||
@ -52,22 +53,22 @@ int _tmain(int argc, _TCHAR* argv[])
|
||||
|
||||
std::wstring srcFileName = argv[1];
|
||||
std::wstring dstFileName = argv[2];
|
||||
std::wstring outputDir = FileSystem::Directory::GetFolderPath(dstFileName);
|
||||
std::wstring outputDir = NSDirectory::GetFolderPath(dstFileName);
|
||||
|
||||
std::wstring dstTempPath = FileSystem::Directory::CreateDirectoryWithUniqueName(outputDir);
|
||||
std::wstring dstTempPath = NSDirectory::CreateDirectoryWithUniqueName(outputDir);
|
||||
|
||||
int n1 = srcFileName.rfind(_T('.'));
|
||||
int n2 = dstFileName.rfind(_T('.'));
|
||||
int n1 = srcFileName.rfind(L".");
|
||||
int n2 = dstFileName.rfind(L".");
|
||||
|
||||
std::wstring ext_1 = n1>=0 ? srcFileName.substr(n1+1, srcFileName.length() - n1): _T(""); //ext_1.MakeLower();
|
||||
std::wstring ext_2 = n2>=0 ? dstFileName.substr(n2+1, dstFileName.length() - n2): _T(""); //ext_2.MakeLower();
|
||||
std::wstring ext_1 = n1>=0 ? srcFileName.substr(n1+1, srcFileName.length() - n1): L""; //ext_1.MakeLower();
|
||||
std::wstring ext_2 = n2>=0 ? dstFileName.substr(n2+1, dstFileName.length() - n2): L""; //ext_2.MakeLower();
|
||||
|
||||
std::transform(ext_1.begin(), ext_1.end(), ext_1.begin(), ::tolower);
|
||||
|
||||
CTxtXmlFile txtFile;
|
||||
|
||||
COfficeUtils oCOfficeUtils(NULL);
|
||||
if (ext_1 == _T("txt"))
|
||||
if (ext_1 == L"txt")
|
||||
{
|
||||
// txt->docx
|
||||
if (S_OK != txtFile.txt_LoadFromFile(srcFileName, dstTempPath, sXMLOptions))
|
||||
@ -76,7 +77,7 @@ int _tmain(int argc, _TCHAR* argv[])
|
||||
if (S_OK != oCOfficeUtils.CompressFileOrDirectory(dstTempPath.c_str(), dstFileName.c_str(), -1))
|
||||
return S_FALSE;
|
||||
}
|
||||
if (ext_2 == _T("txt"))
|
||||
if (ext_2 == L"txt")
|
||||
{
|
||||
// docx->txt
|
||||
if (S_OK != oCOfficeUtils.ExtractToDirectory(srcFileName.c_str(), dstTempPath.c_str(), NULL, 0))
|
||||
@ -86,7 +87,7 @@ int _tmain(int argc, _TCHAR* argv[])
|
||||
return 3;
|
||||
}
|
||||
|
||||
FileSystem::Directory::DeleteDirectory(dstTempPath);
|
||||
NSDirectory::DeleteDirectory(dstTempPath);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -22,22 +22,77 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OfficeUtilsLib", "..\..\Off
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TxtFormatTest", "TxtFormatTest.vcproj", "{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363} = {F8274B05-168E-4D6E-B843-AA7510725363}
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0} = {21663823-DE45-479B-91D0-B4FEF4916EF0}
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0} = {A100103A-353E-45E8-A9B8-90B87CC5C0B0}
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} = {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56} = {C739151F-5384-41DF-A1A6-F089E2C1AD56}
|
||||
{DACBE6CA-E089-47D1-8CE7-C7DB59C15417} = {DACBE6CA-E089-47D1-8CE7-C7DB59C15417}
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540} = {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363} = {F8274B05-168E-4D6E-B843-AA7510725363}
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302} = {36636678-AE25-4BE6-9A34-2561D1BCF302}
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56} = {C739151F-5384-41DF-A1A6-F089E2C1AD56}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxml2", "..\..\DesktopEditor\xml\build\vs2005\libxml2.vcproj", "{21663823-DE45-479B-91D0-B4FEF4916EF0}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "raster", "..\..\DesktopEditor\raster\raster_vs2005.vcproj", "{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2} = {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1} = {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36} = {BC52A07C-A797-423D-8C4F-8678805BBB36}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cximage", "..\..\DesktopEditor\cximage\CxImage\cximage_vs2005.vcproj", "{BC52A07C-A797-423D-8C4F-8678805BBB36}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7} = {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239} = {764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169} = {DF861D33-9BC1-418C-82B1-581F590FE169}
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3} = {0588563C-F05C-428C-B21A-DD74756628B3}
|
||||
{40A69F40-063E-43FD-8543-455495D8733E} = {40A69F40-063E-43FD-8543-455495D8733E}
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E} = {9A037A69-D1DF-4505-AB2A-6CB3641C476E}
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D} = {FFDA5DA1-BB65-4695-B678-BE59B4A1355D}
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470} = {818753F2-DBB9-4D3B-898A-A604309BE470}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "graphics", "..\..\DesktopEditor\graphics\graphics_vs2005.vcproj", "{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} = {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36} = {BC52A07C-A797-423D-8C4F-8678805BBB36}
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD} = {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56} = {C739151F-5384-41DF-A1A6-F089E2C1AD56}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "agg2d", "..\..\DesktopEditor\agg-2.4\agg_vs2005.vcproj", "{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PPTXFormat", "..\..\ASCOfficePPTXFile\PPTXLib\PPTXFormat.vcproj", "{36636678-AE25-4BE6-9A34-2561D1BCF302}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jasper", "..\..\DesktopEditor\cximage\jasper\jasper_vs2005.vcproj", "{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jbig", "..\..\DesktopEditor\cximage\jbig\jbig_vs2005.vcproj", "{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jpeg", "..\..\DesktopEditor\cximage\jpeg\Jpeg_vs2005.vcproj", "{818753F2-DBB9-4D3B-898A-A604309BE470}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpsd", "..\..\DesktopEditor\cximage\libpsd\libpsd_vs2005.vcproj", "{9A037A69-D1DF-4505-AB2A-6CB3641C476E}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mng", "..\..\DesktopEditor\cximage\mng\mng_vs2005.vcproj", "{40A69F40-063E-43FD-8543-455495D8733E}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "png", "..\..\DesktopEditor\cximage\png\png_vs2005.vcproj", "{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdcr", "..\..\DesktopEditor\cximage\raw\libdcr_vs2005.vcproj", "{DF861D33-9BC1-418C-82B1-581F590FE169}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tiff", "..\..\DesktopEditor\cximage\tiff\Tiff_vs2005.vcproj", "{0588563C-F05C-428C-B21A-DD74756628B3}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jbig2", "..\..\DesktopEditor\raster\JBig2\win32\jbig2.vcproj", "{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
Unicode Debug|Win32 = Unicode Debug|Win32
|
||||
Unicode Debug|x64 = Unicode Debug|x64
|
||||
Unicode Release|Win32 = Unicode Release|Win32
|
||||
Unicode Release|x64 = Unicode Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
@ -48,6 +103,14 @@ Global
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release|Win32.Build.0 = Release|Win32
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release|x64.ActiveCfg = Release|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release|x64.Build.0 = Release|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
@ -56,6 +119,14 @@ Global
|
||||
{DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Release|Win32.Build.0 = Release|Win32
|
||||
{DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Release|x64.ActiveCfg = Release|x64
|
||||
{DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Release|x64.Build.0 = Release|x64
|
||||
{DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{DACBE6CA-E089-47D1-8CE7-C7DB59C15417}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
@ -64,6 +135,14 @@ Global
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release|Win32.Build.0 = Release|Win32
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release|x64.ActiveCfg = Release|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release|x64.Build.0 = Release|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
@ -72,6 +151,14 @@ Global
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.Build.0 = Release|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.ActiveCfg = Release|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.Build.0 = Release|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug|x64.ActiveCfg = Debug|x64
|
||||
@ -80,6 +167,14 @@ Global
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Release|Win32.Build.0 = Release|Win32
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Release|x64.ActiveCfg = Release|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Release|x64.Build.0 = Release|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Debug|x64.ActiveCfg = Debug|x64
|
||||
@ -88,6 +183,14 @@ Global
|
||||
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Release|Win32.Build.0 = Release|Win32
|
||||
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Release|x64.ActiveCfg = Release|x64
|
||||
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Release|x64.Build.0 = Release|x64
|
||||
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug|x64.ActiveCfg = Debug|x64
|
||||
@ -96,6 +199,238 @@ Global
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release|Win32.Build.0 = Release|Win32
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release|x64.ActiveCfg = Release|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release|x64.Build.0 = Release|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug|x64.Build.0 = Debug|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release|Win32.Build.0 = Release|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release|x64.ActiveCfg = Release|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release|x64.Build.0 = Release|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug|x64.Build.0 = Debug|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release|Win32.Build.0 = Release|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release|x64.ActiveCfg = Release|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release|x64.Build.0 = Release|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug|x64.Build.0 = Debug|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release|Win32.Build.0 = Release|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release|x64.ActiveCfg = Release|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release|x64.Build.0 = Release|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug|x64.Build.0 = Debug|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release|Win32.Build.0 = Release|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release|x64.ActiveCfg = Release|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release|x64.Build.0 = Release|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Debug|x64.Build.0 = Debug|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Release|Win32.Build.0 = Release|Win32
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Release|x64.ActiveCfg = Release|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Release|x64.Build.0 = Release|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Unicode Release|x64.Build.0 = Release|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug|x64.Build.0 = Debug|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release|Win32.Build.0 = Release|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release|x64.ActiveCfg = Release|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release|x64.Build.0 = Release|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug|x64.Build.0 = Debug|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release|Win32.Build.0 = Release|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release|x64.ActiveCfg = Release|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release|x64.Build.0 = Release|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug|x64.Build.0 = Debug|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release|Win32.Build.0 = Release|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release|x64.ActiveCfg = Release|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release|x64.Build.0 = Release|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug|x64.Build.0 = Debug|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release|Win32.Build.0 = Release|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release|x64.ActiveCfg = Release|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release|x64.Build.0 = Release|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Debug|x64.Build.0 = Debug|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Release|Win32.Build.0 = Release|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Release|x64.ActiveCfg = Release|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Release|x64.Build.0 = Release|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug|x64.Build.0 = Debug|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release|Win32.Build.0 = Release|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release|x64.ActiveCfg = Release|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release|x64.Build.0 = Release|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug|x64.Build.0 = Debug|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release|Win32.Build.0 = Release|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release|x64.ActiveCfg = Release|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release|x64.Build.0 = Release|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug|x64.Build.0 = Debug|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Release|Win32.Build.0 = Release|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Release|x64.ActiveCfg = Release|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Release|x64.Build.0 = Release|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Release|x64.Build.0 = Unicode Release|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug|x64.Build.0 = Debug|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release|Win32.Build.0 = Release|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release|x64.ActiveCfg = Release|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release|x64.Build.0 = Release|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Debug|x64.ActiveCfg = Debug|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Debug|x64.Build.0 = Debug|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Release|x64.ActiveCfg = Release|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8,00"
|
||||
Version="8.00"
|
||||
Name="TxtFormatTest"
|
||||
ProjectGUID="{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}"
|
||||
RootNamespace="TxtFormatTest"
|
||||
@ -23,6 +23,7 @@
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
UseOfMFC="0"
|
||||
UseOfATL="0"
|
||||
CharacterSet="1"
|
||||
>
|
||||
@ -44,8 +45,8 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;USE_ATL_CSTRINGS;_USE_LIBXML2_READER_;LIBXML_READER_ENABLED;USE_LITE_READER;_USE_XMLLITE_READER_"
|
||||
AdditionalIncludeDirectories=""D:\_Work\core\DesktopEditor\agg-2.4\include";"D:\_Work\core\DesktopEditor\freetype-2.5.2\include""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;USE_ATL_CSTRINGS;_USE_LIBXML2_READER_;LIBXML_READER_ENABLED;USE_LITE_READER;_USE_XMLLITE_READER_;DONT_WRITE_EMBEDDED_FONTS"
|
||||
MinimalRebuild="false"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="2"
|
||||
@ -338,22 +339,94 @@
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<File
|
||||
RelativePath="..\..\..\build\bin\icu\win_32\icuuc.lib"
|
||||
<Filter
|
||||
Name="Common"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\HtmlRenderer\src\ASCSVGWriter.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\ASCOfficePPTXFile\Editor\BinaryFileReaderWriter.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\ASCOfficeDocxFile2\BinWriter\BinWriters.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\XlsxSerializerCom\Reader\ChartFromToBinary.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\ASCOfficeDocxFile2\DocWrapper\ChartWriter.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\XlsxSerializerCom\Common\Common.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\XlsxSerializerCom\Reader\CommonWriter.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\XlsxSerializerCom\Reader\CSVReader.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\ASCOfficeDocxFile2\DocWrapper\DocxSerializer.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Common\FileDownloader\FileDownloader_win.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\ASCOfficePPTXFile\Editor\FontPicker.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\ASCOfficeDocxFile2\DocWrapper\FontProcessor.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Common\OfficeFileFormatChecker2.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Common\3dParty\pole\pole.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\ASCOfficeDocxFile2\BinReader\Readers.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\UnicodeConverter\UnicodeConverter.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\ASCOfficeDocxFile2\DocWrapper\XlsxSerializer.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\DesktopEditor\xml\src\xmldom.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\DesktopEditor\xml\src\xmllight.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<File
|
||||
RelativePath="..\..\..\Common\DocxFormat\Source\XML\libxml2\libxml2.cpp"
|
||||
RelativePath="..\..\XlsxSerializerCom\Writer\CSVWriter.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TxtFormatTest.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\UnicodeConverter\UnicodeConverter.cpp"
|
||||
>
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
|
||||
@ -198,7 +198,7 @@ const std::list<std::string> TxtFile::readUtf8()
|
||||
void TxtFile::writeAnsiOrCodePage(const std::list<std::string>& content) // === writeUtf8withoutPref также
|
||||
{
|
||||
NSFile::CFileBinary file;
|
||||
if (file.CreateFileW(m_path) == S_OK)
|
||||
if (file.CreateFileW(m_path))
|
||||
{
|
||||
BYTE endLine[2] = {0x0d, 0x0a};
|
||||
for (std::list<std::string>::const_iterator iter = content.begin(); iter != content.end(); ++iter)
|
||||
@ -214,7 +214,7 @@ void TxtFile::writeAnsiOrCodePage(const std::list<std::string>& content) // ===
|
||||
void TxtFile::writeUnicode(const std::list<std::wstring>& content)
|
||||
{
|
||||
NSFile::CFileBinary file;
|
||||
if (file.CreateFileW(m_path) == S_OK)
|
||||
if (file.CreateFileW(m_path))
|
||||
{
|
||||
BYTE Header[2] = {0xff, 0xfe};
|
||||
BYTE EndLine[4] = {0x0d, 0x00, 0x0a, 0x00};
|
||||
@ -238,13 +238,14 @@ void TxtFile::writeUnicode(const std::list<std::wstring>& content)
|
||||
file.WriteFile(EndLine, 4);
|
||||
m_linesCount++;
|
||||
}
|
||||
file.CloseFile();
|
||||
}
|
||||
}
|
||||
|
||||
void TxtFile::writeBigEndian(const std::list<std::wstring>& content)
|
||||
{
|
||||
NSFile::CFileBinary file;
|
||||
if (file.CreateFileW(m_path) == S_OK)
|
||||
if (file.CreateFileW(m_path))
|
||||
{
|
||||
BYTE Header[2] = {0xfe, 0xff};
|
||||
BYTE EndLine[4] = {0x00, 0x0d, 0x00, 0x0a};
|
||||
@ -274,13 +275,14 @@ void TxtFile::writeBigEndian(const std::list<std::wstring>& content)
|
||||
file.WriteFile(EndLine, 4);
|
||||
m_linesCount++;
|
||||
}
|
||||
file.CloseFile();
|
||||
}
|
||||
}
|
||||
|
||||
void TxtFile::writeUtf8(const std::list<std::string>& content)
|
||||
{
|
||||
NSFile::CFileBinary file;
|
||||
if (file.CreateFileW(m_path) == S_OK)
|
||||
if (file.CreateFileW(m_path))
|
||||
{
|
||||
BYTE Header[3] = {0xef ,0xbb , 0xbf};
|
||||
BYTE EndLine[2] = {0x0d ,0x0a};
|
||||
@ -294,6 +296,7 @@ void TxtFile::writeUtf8(const std::list<std::string>& content)
|
||||
|
||||
m_linesCount++;
|
||||
}
|
||||
file.CloseFile();
|
||||
}
|
||||
}
|
||||
|
||||
@ -301,7 +304,7 @@ const bool TxtFile::isUnicode()
|
||||
{
|
||||
NSFile::CFileBinary file;
|
||||
|
||||
if (file.OpenFile(m_path) != S_OK) return false;
|
||||
if (file.OpenFile(m_path) == false) return false;
|
||||
|
||||
DWORD dwRead;
|
||||
BYTE data [2];
|
||||
@ -318,7 +321,7 @@ const bool TxtFile::isBigEndian()
|
||||
{
|
||||
NSFile::CFileBinary file;
|
||||
|
||||
if (file.OpenFile(m_path) != S_OK) return false;
|
||||
if (file.OpenFile(m_path) == false) return false;
|
||||
|
||||
DWORD dwRead;
|
||||
BYTE data [2];
|
||||
@ -335,7 +338,7 @@ const bool TxtFile::isUtf8()
|
||||
{
|
||||
NSFile::CFileBinary file;
|
||||
|
||||
if (file.OpenFile(m_path) != S_OK) return false;
|
||||
if (file.OpenFile(m_path) == false) return false;
|
||||
|
||||
DWORD dwRead;
|
||||
BYTE data [3];
|
||||
|
||||
@ -35,12 +35,13 @@
|
||||
#include "ContentTypes.h"
|
||||
|
||||
#include "FileType.h"
|
||||
#include "FileTypes.h"
|
||||
|
||||
#include "External/External.h"
|
||||
#include "External/HyperLink.h"
|
||||
#include "Media/Image.h"
|
||||
#include "Media/OleObject.h"
|
||||
#include "FileTypes.h"
|
||||
|
||||
#include "../../../../ASCOfficePPTXFile/PPTXFormat/LegacyDiagramText.h"
|
||||
#include "../XlsxFormat/FileFactory_Spreadsheet.h"
|
||||
|
||||
namespace OOX
|
||||
@ -252,7 +253,13 @@ namespace OOX
|
||||
return smart_ptr<OleObject>();
|
||||
return pPair->second.smart_dynamic_cast<OleObject>();
|
||||
}
|
||||
|
||||
smart_ptr<PPTX::LegacyDiagramText> IFileContainer::GetLegacyDiagramText(const OOX::RId& rId) const
|
||||
{
|
||||
std::map<std::wstring, smart_ptr<OOX::File>>::const_iterator pPair = m_mContainer.find(rId.get());
|
||||
if (pPair == m_mContainer.end ())
|
||||
return smart_ptr<PPTX::LegacyDiagramText>();
|
||||
return pPair->second.smart_dynamic_cast<PPTX::LegacyDiagramText>();
|
||||
}
|
||||
const bool IFileContainer::IsExist(const FileType& oType) const
|
||||
{
|
||||
for (std::map<std::wstring, smart_ptr<OOX::File>>::const_iterator it = m_mContainer.begin(); it != m_mContainer.end(); ++it)
|
||||
|
||||
@ -48,7 +48,12 @@ namespace OOX
|
||||
class Image;
|
||||
class HyperLink;
|
||||
class OleObject;
|
||||
} // OOX
|
||||
}
|
||||
|
||||
namespace PPTX
|
||||
{
|
||||
class LegacyDiagramText;
|
||||
}
|
||||
|
||||
namespace OOX
|
||||
{
|
||||
@ -76,9 +81,10 @@ namespace OOX
|
||||
void Read (const OOX::CPath& oRootPath, const OOX::CPath& oPath);
|
||||
void ExtractPictures(const OOX::CPath& oPath) const;
|
||||
|
||||
virtual smart_ptr<Image> GetImage (const RId& rId) const;
|
||||
virtual smart_ptr<HyperLink> GetHyperlink(const RId& rId) const;
|
||||
virtual smart_ptr<OleObject> GetOleObject(const RId& rId) const;
|
||||
virtual smart_ptr<Image> GetImage (const RId& rId) const;
|
||||
virtual smart_ptr<HyperLink> GetHyperlink(const RId& rId) const;
|
||||
virtual smart_ptr<OleObject> GetOleObject(const RId& rId) const;
|
||||
virtual smart_ptr<PPTX::LegacyDiagramText> GetLegacyDiagramText (const OOX::RId& rId) const;
|
||||
|
||||
OOX::CRels* GetCurRls()
|
||||
{
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
#include "../../libxml2/entities.c"
|
||||
#include "../../libxml2/error.c"
|
||||
#include "../../libxml2/globals.c"
|
||||
#include "../../libxml2/hash.c"
|
||||
#include "../../libxml2/HTMLparser.c"
|
||||
#include "../../libxml2/HTMLtree.c"
|
||||
#include "../../libxml2/legacy.c"
|
||||
@ -16,6 +17,7 @@
|
||||
#include "../../libxml2/nanoftp.c"
|
||||
#include "../../libxml2/nanohttp.c"
|
||||
//#include "../../libxml2/parser.c"
|
||||
#include "../../libxml2/parserInternals.c"
|
||||
#include "../../libxml2/pattern.c"
|
||||
#include "../../libxml2/relaxng.c"
|
||||
#include "../../libxml2/SAX.c"
|
||||
@ -40,5 +42,3 @@
|
||||
#include "../../libxml2/xmlwriter.c"
|
||||
#include "../../libxml2/xpath.c"
|
||||
#include "../../libxml2/xpointer.c"
|
||||
#include "../../libxml2/parserInternals.c"
|
||||
#include "../../libxml2/hash.c"
|
||||
|
||||
@ -593,7 +593,7 @@ Thu Apr 24 13:56:53 CEST 2008 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
Tue Apr 22 10:27:17 CEST 2008 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* dict.c: improvement on the hashing of the dictionnary, with visible
|
||||
* dict.c: improvement on the hashing of the dictionary, with visible
|
||||
speed up as the number of strings in the hash increases, work from
|
||||
Stefan Behnel
|
||||
|
||||
@ -2479,7 +2479,7 @@ Mon Jan 9 17:27:15 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
|
||||
Mon Jan 9 15:33:16 CET 2006 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* parser.c: reverted first patches for #319279 which led to #326295
|
||||
and fixed the problem in DoctRenderer() instead
|
||||
and fixed the problem in xmlParseChunk() instead
|
||||
* test/ent11 result//ent11*: added test for #326295 to the regression
|
||||
suite
|
||||
|
||||
@ -5017,7 +5017,7 @@ Mon Jan 24 00:47:41 CET 2005 Daniel Veillard <daniel@veillard.com>
|
||||
Sun Jan 23 23:54:39 CET 2005 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* hash.c include/libxml/hash.h: added xmlHashCreateDict where
|
||||
the hash reuses the dictionnary for internal strings
|
||||
the hash reuses the dictionary for internal strings
|
||||
* entities.c valid.c parser.c: reuse that new API, leads to a decent
|
||||
speedup when parsing for example DocBook documents.
|
||||
|
||||
@ -5371,7 +5371,7 @@ Fri Nov 26 11:44:36 CET 2004 Daniel Veillard <daniel@veillard.com>
|
||||
Wed Nov 24 13:41:52 CET 2004 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* dict.c include/libxml/dict.h: added xmlDictExists() to the
|
||||
dictionnary interface.
|
||||
dictionary interface.
|
||||
* xmlreader.c: applying xmlTextReaderHasAttributes fix for namespaces
|
||||
from Rob Richards
|
||||
|
||||
@ -5697,7 +5697,7 @@ Tue Oct 26 23:57:02 CEST 2004 Daniel Veillard <daniel@veillard.com>
|
||||
Tue Oct 26 18:09:59 CEST 2004 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* debugXML.c include/libxml/xmlerror.h: added checking for names
|
||||
values and dictionnaries generates a tons of errors
|
||||
values and dictionaries generates a tons of errors
|
||||
* SAX2.ccatalog.c parser.c relaxng.c tree.c xinclude.c xmlwriter.c
|
||||
include/libxml/tree.h: fixing the errors in the regression tests
|
||||
|
||||
@ -7746,14 +7746,14 @@ Fri Jan 23 14:03:21 CET 2004 Daniel Veillard <daniel@veillard.com>
|
||||
make tests
|
||||
* xpath.c include/libxml/xpath.h: added xmlXPathCtxtCompile() to
|
||||
compile an XPath expression within a context, currently the goal
|
||||
is to be able to reuse the XSLT stylesheet dictionnary, but this
|
||||
is to be able to reuse the XSLT stylesheet dictionary, but this
|
||||
opens the door to others possible optimizations.
|
||||
* dict.c include/libxml/dict.h: added xmlDictCreateSub() which allows
|
||||
to build a new dictionnary based on another read-only dictionnary.
|
||||
This is needed for XSLT to keep the stylesheet dictionnary read-only
|
||||
to build a new dictionary based on another read-only dictionary.
|
||||
This is needed for XSLT to keep the stylesheet dictionary read-only
|
||||
while being able to reuse the strings for the transformation
|
||||
dictionnary.
|
||||
* xinclude.c: fixed a dictionnar reference counting problem occuring
|
||||
dictionary.
|
||||
* xinclude.c: fixed a dictionary reference counting problem occuring
|
||||
when document parsing failed.
|
||||
* testSAX.c: adding option --repeat for timing 100times the parsing
|
||||
* doc/* : rebuilt all the docs
|
||||
@ -7806,7 +7806,7 @@ Mon Jan 12 17:22:57 CET 2004 Daniel Veillard <daniel@veillard.com>
|
||||
Thu Jan 8 17:57:50 CET 2004 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* xmlschemas.c: removed a memory leak remaining from the switch
|
||||
to a dictionnary for string allocations c.f. #130891
|
||||
to a dictionary for string allocations c.f. #130891
|
||||
|
||||
Thu Jan 8 17:48:46 CET 2004 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
@ -7928,7 +7928,7 @@ Fri Jan 2 22:58:29 HKT 2004 William Brack <wbrack@mmm.com.hk>
|
||||
Fri Jan 2 11:40:06 CET 2004 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* SAX2.c: found and fixed a bug misallocating some non
|
||||
blank text node strings from the dictionnary.
|
||||
blank text node strings from the dictionary.
|
||||
* xmlmemory.c: fixed a problem with the memory debug mutex
|
||||
release.
|
||||
|
||||
@ -9386,7 +9386,7 @@ Sat Sep 27 01:25:39 CEST 2003 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* parser.c: William's change allowed to spot a nasty bug in xmlDoRead
|
||||
if the result is not well formed that ctxt->myDoc is not NULL
|
||||
and uses the context dictionnary.
|
||||
and uses the context dictionary.
|
||||
|
||||
Fri Sep 26 21:09:34 CEST 2003 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
|
||||
@ -120,7 +120,7 @@ docbParseChunk(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED,
|
||||
deprecated = 1;
|
||||
}
|
||||
|
||||
return (DoctRenderer(ctxt, chunk, size, terminate));
|
||||
return (xmlParseChunk(ctxt, chunk, size, terminate));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -105,7 +105,7 @@ htmlErrMemory(xmlParserCtxtPtr ctxt, const char *extra)
|
||||
*
|
||||
* Handle a fatal parser error, i.e. violating Well-Formedness constraints
|
||||
*/
|
||||
static void
|
||||
static void LIBXML_ATTR_FORMAT(3,0)
|
||||
htmlParseErr(xmlParserCtxtPtr ctxt, xmlParserErrors error,
|
||||
const char *msg, const xmlChar *str1, const xmlChar *str2)
|
||||
{
|
||||
@ -132,7 +132,7 @@ htmlParseErr(xmlParserCtxtPtr ctxt, xmlParserErrors error,
|
||||
*
|
||||
* Handle a fatal parser error, i.e. violating Well-Formedness constraints
|
||||
*/
|
||||
static void
|
||||
static void LIBXML_ATTR_FORMAT(3,0)
|
||||
htmlParseErrInt(xmlParserCtxtPtr ctxt, xmlParserErrors error,
|
||||
const char *msg, int val)
|
||||
{
|
||||
@ -303,6 +303,7 @@ htmlNodeInfoPop(htmlParserCtxtPtr ctxt)
|
||||
#define UPP(val) (toupper(ctxt->input->cur[(val)]))
|
||||
|
||||
#define CUR_PTR ctxt->input->cur
|
||||
#define BASE_PTR ctxt->input->base
|
||||
|
||||
#define SHRINK if ((ctxt->input->cur - ctxt->input->base > 2 * INPUT_CHUNK) && \
|
||||
(ctxt->input->end - ctxt->input->cur < 2 * INPUT_CHUNK)) \
|
||||
@ -1177,7 +1178,7 @@ static const char *const htmlScriptAttributes[] = {
|
||||
"onfocus",
|
||||
"onblur",
|
||||
"onsubmit",
|
||||
"onrest",
|
||||
"onreset",
|
||||
"onchange",
|
||||
"onselect"
|
||||
};
|
||||
@ -2471,6 +2472,10 @@ htmlParseName(htmlParserCtxtPtr ctxt) {
|
||||
(*in == '_') || (*in == '-') ||
|
||||
(*in == ':') || (*in == '.'))
|
||||
in++;
|
||||
|
||||
if (in == ctxt->input->end)
|
||||
return(NULL);
|
||||
|
||||
if ((*in > 0) && (*in < 0x80)) {
|
||||
count = in - ctxt->input->cur;
|
||||
ret = xmlDictLookup(ctxt->dict, ctxt->input->cur, count);
|
||||
@ -2488,6 +2493,7 @@ htmlParseNameComplex(xmlParserCtxtPtr ctxt) {
|
||||
int len = 0, l;
|
||||
int c;
|
||||
int count = 0;
|
||||
const xmlChar *base = ctxt->input->base;
|
||||
|
||||
/*
|
||||
* Handler for more complex cases
|
||||
@ -2513,7 +2519,18 @@ htmlParseNameComplex(xmlParserCtxtPtr ctxt) {
|
||||
len += l;
|
||||
NEXTL(l);
|
||||
c = CUR_CHAR(l);
|
||||
if (ctxt->input->base != base) {
|
||||
/*
|
||||
* We changed encoding from an unknown encoding
|
||||
* Input buffer changed location, so we better start again
|
||||
*/
|
||||
return(htmlParseNameComplex(ctxt));
|
||||
}
|
||||
}
|
||||
|
||||
if (ctxt->input->base > ctxt->input->cur - len)
|
||||
return(NULL);
|
||||
|
||||
return(xmlDictLookup(ctxt->dict, ctxt->input->cur - len, len));
|
||||
}
|
||||
|
||||
@ -2765,31 +2782,43 @@ htmlParseAttValue(htmlParserCtxtPtr ctxt) {
|
||||
|
||||
static xmlChar *
|
||||
htmlParseSystemLiteral(htmlParserCtxtPtr ctxt) {
|
||||
const xmlChar *q;
|
||||
size_t len = 0, startPosition = 0;
|
||||
xmlChar *ret = NULL;
|
||||
|
||||
if (CUR == '"') {
|
||||
NEXT;
|
||||
q = CUR_PTR;
|
||||
while ((IS_CHAR_CH(CUR)) && (CUR != '"'))
|
||||
|
||||
if (CUR_PTR < BASE_PTR)
|
||||
return(ret);
|
||||
startPosition = CUR_PTR - BASE_PTR;
|
||||
|
||||
while ((IS_CHAR_CH(CUR)) && (CUR != '"')) {
|
||||
NEXT;
|
||||
len++;
|
||||
}
|
||||
if (!IS_CHAR_CH(CUR)) {
|
||||
htmlParseErr(ctxt, XML_ERR_LITERAL_NOT_FINISHED,
|
||||
"Unfinished SystemLiteral\n", NULL, NULL);
|
||||
} else {
|
||||
ret = xmlStrndup(q, CUR_PTR - q);
|
||||
ret = xmlStrndup((BASE_PTR+startPosition), len);
|
||||
NEXT;
|
||||
}
|
||||
} else if (CUR == '\'') {
|
||||
NEXT;
|
||||
q = CUR_PTR;
|
||||
while ((IS_CHAR_CH(CUR)) && (CUR != '\''))
|
||||
|
||||
if (CUR_PTR < BASE_PTR)
|
||||
return(ret);
|
||||
startPosition = CUR_PTR - BASE_PTR;
|
||||
|
||||
while ((IS_CHAR_CH(CUR)) && (CUR != '\'')) {
|
||||
NEXT;
|
||||
len++;
|
||||
}
|
||||
if (!IS_CHAR_CH(CUR)) {
|
||||
htmlParseErr(ctxt, XML_ERR_LITERAL_NOT_FINISHED,
|
||||
"Unfinished SystemLiteral\n", NULL, NULL);
|
||||
} else {
|
||||
ret = xmlStrndup(q, CUR_PTR - q);
|
||||
ret = xmlStrndup((BASE_PTR+startPosition), len);
|
||||
NEXT;
|
||||
}
|
||||
} else {
|
||||
@ -2813,32 +2842,47 @@ htmlParseSystemLiteral(htmlParserCtxtPtr ctxt) {
|
||||
|
||||
static xmlChar *
|
||||
htmlParsePubidLiteral(htmlParserCtxtPtr ctxt) {
|
||||
const xmlChar *q;
|
||||
size_t len = 0, startPosition = 0;
|
||||
xmlChar *ret = NULL;
|
||||
/*
|
||||
* Name ::= (Letter | '_') (NameChar)*
|
||||
*/
|
||||
if (CUR == '"') {
|
||||
NEXT;
|
||||
q = CUR_PTR;
|
||||
while (IS_PUBIDCHAR_CH(CUR)) NEXT;
|
||||
|
||||
if (CUR_PTR < BASE_PTR)
|
||||
return(ret);
|
||||
startPosition = CUR_PTR - BASE_PTR;
|
||||
|
||||
while (IS_PUBIDCHAR_CH(CUR)) {
|
||||
len++;
|
||||
NEXT;
|
||||
}
|
||||
|
||||
if (CUR != '"') {
|
||||
htmlParseErr(ctxt, XML_ERR_LITERAL_NOT_FINISHED,
|
||||
"Unfinished PubidLiteral\n", NULL, NULL);
|
||||
} else {
|
||||
ret = xmlStrndup(q, CUR_PTR - q);
|
||||
ret = xmlStrndup((BASE_PTR + startPosition), len);
|
||||
NEXT;
|
||||
}
|
||||
} else if (CUR == '\'') {
|
||||
NEXT;
|
||||
q = CUR_PTR;
|
||||
while ((IS_PUBIDCHAR_CH(CUR)) && (CUR != '\''))
|
||||
NEXT;
|
||||
|
||||
if (CUR_PTR < BASE_PTR)
|
||||
return(ret);
|
||||
startPosition = CUR_PTR - BASE_PTR;
|
||||
|
||||
while ((IS_PUBIDCHAR_CH(CUR)) && (CUR != '\'')){
|
||||
len++;
|
||||
NEXT;
|
||||
}
|
||||
|
||||
if (CUR != '\'') {
|
||||
htmlParseErr(ctxt, XML_ERR_LITERAL_NOT_FINISHED,
|
||||
"Unfinished PubidLiteral\n", NULL, NULL);
|
||||
} else {
|
||||
ret = xmlStrndup(q, CUR_PTR - q);
|
||||
ret = xmlStrndup((BASE_PTR + startPosition), len);
|
||||
NEXT;
|
||||
}
|
||||
} else {
|
||||
@ -2948,8 +2992,9 @@ htmlParseScript(htmlParserCtxtPtr ctxt) {
|
||||
|
||||
|
||||
/**
|
||||
* htmlParseCharData:
|
||||
* htmlParseCharDataInternal:
|
||||
* @ctxt: an HTML parser context
|
||||
* @readahead: optional read ahead character in ascii range
|
||||
*
|
||||
* parse a CharData section.
|
||||
* if we are within a CDATA section ']]>' marks an end of section.
|
||||
@ -2958,12 +3003,15 @@ htmlParseScript(htmlParserCtxtPtr ctxt) {
|
||||
*/
|
||||
|
||||
static void
|
||||
htmlParseCharData(htmlParserCtxtPtr ctxt) {
|
||||
xmlChar buf[HTML_PARSER_BIG_BUFFER_SIZE + 5];
|
||||
htmlParseCharDataInternal(htmlParserCtxtPtr ctxt, int readahead) {
|
||||
xmlChar buf[HTML_PARSER_BIG_BUFFER_SIZE + 6];
|
||||
int nbchar = 0;
|
||||
int cur, l;
|
||||
int chunk = 0;
|
||||
|
||||
if (readahead)
|
||||
buf[nbchar++] = readahead;
|
||||
|
||||
SHRINK;
|
||||
cur = CUR_CHAR(l);
|
||||
while (((cur != '<') || (ctxt->token == '<')) &&
|
||||
@ -3042,6 +3090,21 @@ htmlParseCharData(htmlParserCtxtPtr ctxt) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* htmlParseCharData:
|
||||
* @ctxt: an HTML parser context
|
||||
*
|
||||
* parse a CharData section.
|
||||
* if we are within a CDATA section ']]>' marks an end of section.
|
||||
*
|
||||
* [14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)
|
||||
*/
|
||||
|
||||
static void
|
||||
htmlParseCharData(htmlParserCtxtPtr ctxt) {
|
||||
htmlParseCharDataInternal(ctxt, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* htmlParseExternalID:
|
||||
* @ctxt: an HTML parser context
|
||||
@ -3245,12 +3308,17 @@ htmlParseComment(htmlParserCtxtPtr ctxt) {
|
||||
ctxt->instate = state;
|
||||
return;
|
||||
}
|
||||
len = 0;
|
||||
buf[len] = 0;
|
||||
q = CUR_CHAR(ql);
|
||||
if (!IS_CHAR(q))
|
||||
goto unfinished;
|
||||
NEXTL(ql);
|
||||
r = CUR_CHAR(rl);
|
||||
if (!IS_CHAR(r))
|
||||
goto unfinished;
|
||||
NEXTL(rl);
|
||||
cur = CUR_CHAR(l);
|
||||
len = 0;
|
||||
while (IS_CHAR(cur) &&
|
||||
((cur != '>') ||
|
||||
(r != '-') || (q != '-'))) {
|
||||
@ -3281,18 +3349,20 @@ htmlParseComment(htmlParserCtxtPtr ctxt) {
|
||||
}
|
||||
}
|
||||
buf[len] = 0;
|
||||
if (!IS_CHAR(cur)) {
|
||||
htmlParseErr(ctxt, XML_ERR_COMMENT_NOT_FINISHED,
|
||||
"Comment not terminated \n<!--%.50s\n", buf, NULL);
|
||||
xmlFree(buf);
|
||||
} else {
|
||||
if (IS_CHAR(cur)) {
|
||||
NEXT;
|
||||
if ((ctxt->sax != NULL) && (ctxt->sax->comment != NULL) &&
|
||||
(!ctxt->disableSAX))
|
||||
ctxt->sax->comment(ctxt->userData, buf);
|
||||
xmlFree(buf);
|
||||
ctxt->instate = state;
|
||||
return;
|
||||
}
|
||||
ctxt->instate = state;
|
||||
|
||||
unfinished:
|
||||
htmlParseErr(ctxt, XML_ERR_COMMENT_NOT_FINISHED,
|
||||
"Comment not terminated \n<!--%.50s\n", buf, NULL);
|
||||
xmlFree(buf);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -3671,13 +3741,13 @@ htmlParseStartTag(htmlParserCtxtPtr ctxt) {
|
||||
int i;
|
||||
int discardtag = 0;
|
||||
|
||||
if (ctxt->instate == XML_PARSER_EOF)
|
||||
return(-1);
|
||||
if ((ctxt == NULL) || (ctxt->input == NULL)) {
|
||||
htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR,
|
||||
"htmlParseStartTag: context error\n", NULL, NULL);
|
||||
return -1;
|
||||
}
|
||||
if (ctxt->instate == XML_PARSER_EOF)
|
||||
return(-1);
|
||||
if (CUR != '<') return -1;
|
||||
NEXT;
|
||||
|
||||
@ -3690,6 +3760,14 @@ htmlParseStartTag(htmlParserCtxtPtr ctxt) {
|
||||
htmlParseErr(ctxt, XML_ERR_NAME_REQUIRED,
|
||||
"htmlParseStartTag: invalid element name\n",
|
||||
NULL, NULL);
|
||||
/* if recover preserve text on classic misconstructs */
|
||||
if ((ctxt->recovery) && ((IS_BLANK_CH(CUR)) || (CUR == '<') ||
|
||||
(CUR == '=') || (CUR == '>') || (((CUR >= '0') && (CUR <= '9'))))) {
|
||||
htmlParseCharDataInternal(ctxt, '<');
|
||||
return(-1);
|
||||
}
|
||||
|
||||
|
||||
/* Dump the bogus tag like browsers do */
|
||||
while ((IS_CHAR_CH(CUR)) && (CUR != '>') &&
|
||||
(ctxt->instate != XML_PARSER_EOF))
|
||||
@ -4366,7 +4444,7 @@ static void
|
||||
htmlParseElementInternal(htmlParserCtxtPtr ctxt) {
|
||||
const xmlChar *name;
|
||||
const htmlElemDesc * info;
|
||||
htmlParserNodeInfo node_info;
|
||||
htmlParserNodeInfo node_info = { 0, };
|
||||
int failed;
|
||||
|
||||
if ((ctxt == NULL) || (ctxt->input == NULL)) {
|
||||
@ -5701,17 +5779,17 @@ htmlParseTryOrFinish(htmlParserCtxtPtr ctxt, int terminate) {
|
||||
if (ctxt->keepBlanks) {
|
||||
if (ctxt->sax->characters != NULL)
|
||||
ctxt->sax->characters(
|
||||
ctxt->userData, &cur, 1);
|
||||
ctxt->userData, &in->cur[0], 1);
|
||||
} else {
|
||||
if (ctxt->sax->ignorableWhitespace != NULL)
|
||||
ctxt->sax->ignorableWhitespace(
|
||||
ctxt->userData, &cur, 1);
|
||||
ctxt->userData, &in->cur[0], 1);
|
||||
}
|
||||
} else {
|
||||
htmlCheckParagraph(ctxt);
|
||||
if (ctxt->sax->characters != NULL)
|
||||
ctxt->sax->characters(
|
||||
ctxt->userData, &cur, 1);
|
||||
ctxt->userData, &in->cur[0], 1);
|
||||
}
|
||||
}
|
||||
ctxt->token = 0;
|
||||
@ -6288,12 +6366,16 @@ htmlCreateFileParserCtxt(const char *filename, const char *encoding)
|
||||
|
||||
/* set encoding */
|
||||
if (encoding) {
|
||||
content = xmlMallocAtomic (xmlStrlen(content_line) + strlen(encoding) + 1);
|
||||
if (content) {
|
||||
strcpy ((char *)content, (char *)content_line);
|
||||
strcat ((char *)content, (char *)encoding);
|
||||
htmlCheckEncoding (ctxt, content);
|
||||
xmlFree (content);
|
||||
size_t l = strlen(encoding);
|
||||
|
||||
if (l < 1000) {
|
||||
content = xmlMallocAtomic (xmlStrlen(content_line) + l + 1);
|
||||
if (content) {
|
||||
strcpy ((char *)content, (char *)content_line);
|
||||
strcat ((char *)content, (char *)encoding);
|
||||
htmlCheckEncoding (ctxt, content);
|
||||
xmlFree (content);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -6499,7 +6581,7 @@ htmlNodeStatus(const htmlNodePtr node, int legacy) {
|
||||
* DICT_FREE:
|
||||
* @str: a string
|
||||
*
|
||||
* Free a string if it is not owned by the "dict" dictionnary in the
|
||||
* Free a string if it is not owned by the "dict" dictionary in the
|
||||
* current scope
|
||||
*/
|
||||
#define DICT_FREE(str) \
|
||||
@ -6808,6 +6890,7 @@ htmlReadFd(int fd, const char *URL, const char *encoding, int options)
|
||||
|
||||
if (fd < 0)
|
||||
return (NULL);
|
||||
xmlInitParser();
|
||||
|
||||
xmlInitParser();
|
||||
input = xmlParserInputBufferCreateFd(fd, XML_CHAR_ENCODING_NONE);
|
||||
@ -6898,6 +6981,7 @@ htmlCtxtReadDoc(htmlParserCtxtPtr ctxt, const xmlChar * cur,
|
||||
return (NULL);
|
||||
if (ctxt == NULL)
|
||||
return (NULL);
|
||||
xmlInitParser();
|
||||
|
||||
htmlCtxtReset(ctxt);
|
||||
|
||||
@ -6931,6 +7015,7 @@ htmlCtxtReadFile(htmlParserCtxtPtr ctxt, const char *filename,
|
||||
return (NULL);
|
||||
if (ctxt == NULL)
|
||||
return (NULL);
|
||||
xmlInitParser();
|
||||
|
||||
htmlCtxtReset(ctxt);
|
||||
|
||||
@ -6967,6 +7052,7 @@ htmlCtxtReadMemory(htmlParserCtxtPtr ctxt, const char *buffer, int size,
|
||||
return (NULL);
|
||||
if (buffer == NULL)
|
||||
return (NULL);
|
||||
xmlInitParser();
|
||||
|
||||
htmlCtxtReset(ctxt);
|
||||
|
||||
@ -7009,6 +7095,7 @@ htmlCtxtReadFd(htmlParserCtxtPtr ctxt, int fd,
|
||||
return (NULL);
|
||||
if (ctxt == NULL)
|
||||
return (NULL);
|
||||
xmlInitParser();
|
||||
|
||||
htmlCtxtReset(ctxt);
|
||||
|
||||
@ -7053,6 +7140,7 @@ htmlCtxtReadIO(htmlParserCtxtPtr ctxt, xmlInputReadCallback ioread,
|
||||
return (NULL);
|
||||
if (ctxt == NULL)
|
||||
return (NULL);
|
||||
xmlInitParser();
|
||||
|
||||
htmlCtxtReset(ctxt);
|
||||
|
||||
|
||||
@ -668,7 +668,8 @@ htmlDtdDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
|
||||
xmlOutputBufferWriteString(buf, " ");
|
||||
xmlBufWriteQuotedString(buf->buffer, cur->SystemID);
|
||||
}
|
||||
} else if (cur->SystemID != NULL) {
|
||||
} else if (cur->SystemID != NULL &&
|
||||
xmlStrcmp(cur->SystemID, BAD_CAST "about:legacy-compat")) {
|
||||
xmlOutputBufferWriteString(buf, " SYSTEM ");
|
||||
xmlBufWriteQuotedString(buf->buffer, cur->SystemID);
|
||||
}
|
||||
|
||||
@ -216,6 +216,10 @@ check-valgrind valgrind: all
|
||||
@echo '## Go get a cup of coffee it is gonna take a while ...'
|
||||
$(MAKE) CHECKER='valgrind -q' runtests
|
||||
|
||||
asan:
|
||||
@echo '## rebuilding for ASAN'
|
||||
./configure CFLAGS="-fsanitize=address,undefined -Wformat -Werror=format-security -Werror=array-bounds -g" CXXFLAGS="-fsanitize=address,undefined -Wformat -Werror=format-security -Werror=array-bounds -g" LDFLAGS="-fsanitize=address,undefined" CC="clang" CXX="clang++" --disable-shared ; OptimOff ; $(MAKE) clean ; $(MAKE)
|
||||
|
||||
testall : tests SVGtests SAXtests
|
||||
|
||||
tests: XMLtests XMLenttests NStests IDtests Errtests APItests $(READER_TEST) $(TEST_SAX) $(TEST_PUSH) $(TEST_HTML) $(TEST_PHTML) $(TEST_VALID) URItests $(TEST_PATTERN) $(TEST_XPATH) $(TEST_XPTR) $(TEST_XINCLUDE) $(TEST_C14N) $(TEST_DEBUG) $(TEST_CATALOG) $(TEST_REGEXPS) $(TEST_SCHEMAS) $(TEST_SCHEMATRON) $(TEST_THREADS) Timingtests $(TEST_VTIME) $(PYTHON_TESTS) $(TEST_MODULES)
|
||||
@ -1164,7 +1168,7 @@ cleanup:
|
||||
|
||||
dist-hook: cleanup libxml2.spec
|
||||
-cp libxml2.spec $(distdir)
|
||||
(cd $(srcdir) ; tar -cf - --exclude CVS --exclude .svn --exclude .git win32 macos vms VxWorks bakefile test result) | (cd $(distdir); tar xf -)
|
||||
(cd $(srcdir) ; tar -cf - --exclude CVS --exclude .svn --exclude .git win32 macos os400 vms VxWorks bakefile test result) | (cd $(distdir); tar xf -)
|
||||
|
||||
dist-source: distdir
|
||||
$(AMTAR) -chof - --exclude Tests --exclude test --exclude result $(distdir) | GZIP=$(GZIP_ENV) gzip -c >`echo "$(distdir)" | sed "s+libxml2+libxml2-sources+"`.tar.gz
|
||||
@ -1207,6 +1211,7 @@ EXTRA_DIST = xml2-config.in xml2Conf.sh.in libxml.spec.in libxml2.spec \
|
||||
check-xsddata-test-suite.py check-xinclude-test-suite.py \
|
||||
example/Makefile.am example/gjobread.c example/gjobs.xml \
|
||||
$(man_MANS) libxml-2.0.pc.in libxml-2.0-uninstalled.pc.in \
|
||||
libxml2-config.cmake.in autogen.sh \
|
||||
trionan.c trionan.h triostr.c triostr.h trio.c trio.h \
|
||||
triop.h triodef.h libxml.h elfgcchack.h xzlib.h buf.h \
|
||||
enc.h save.h testThreadsWin32.c genUnicode.py TODO_SCHEMAS \
|
||||
@ -1218,6 +1223,9 @@ EXTRA_DIST = xml2-config.in xml2Conf.sh.in libxml.spec.in libxml2.spec \
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = libxml-2.0.pc
|
||||
|
||||
cmakedir = $(libdir)/cmake/libxml2
|
||||
cmake_DATA = libxml2-config.cmake
|
||||
|
||||
#
|
||||
# Install the tests program sources as examples
|
||||
#
|
||||
|
||||
@ -4,17 +4,647 @@
|
||||
Note that this is automatically generated from the news webpage at:
|
||||
http://xmlsoft.org/news.html
|
||||
|
||||
Items not finished and worked on, get in touch with the list if you want
|
||||
to help those - More testing on RelaxNG
|
||||
- Finishing up XML
|
||||
Schemas
|
||||
|
||||
The change log at
|
||||
ChangeLog.html
|
||||
describes the recents commits
|
||||
to the SVN at
|
||||
http://svn.gnome.org/viewvc/libxml2/trunk/
|
||||
to the GIT at
|
||||
http://git.gnome.org/browse/libxml2/
|
||||
code base.Here is the list of public releases:
|
||||
2.9.2: Oct 16 2014:
|
||||
- Security:
|
||||
Fix for CVE-2014-3660 billion laugh variant (Daniel Veillard),
|
||||
CVE-2014-0191 Do not fetch external parameter entities (Daniel Veillard)
|
||||
|
||||
- Bug Fixes:
|
||||
fix memory leak xml header encoding field with XML_PARSE_IGNORE_ENC (Bart De Schuymer),
|
||||
xmlmemory: handle realloc properly (Yegor Yefremov),
|
||||
Python generator bug raised by the const change (Daniel Veillard),
|
||||
Windows Critical sections not released correctly (Daniel Veillard),
|
||||
Parser error on repeated recursive entity expansion containing < (Daniel Veillard),
|
||||
xpointer : fixing Null Pointers (Gaurav Gupta),
|
||||
Remove Unnecessary Null check in xpointer.c (Gaurav Gupta),
|
||||
parser bug on misformed namespace attributes (Dennis Filder),
|
||||
Pointer dereferenced before null check (Daniel Veillard),
|
||||
Leak of struct addrinfo in xmlNanoFTPConnect() (Gaurav Gupta),
|
||||
Possible overflow in HTMLParser.c (Daniel Veillard),
|
||||
python/tests/sync.py assumes Python dictionaries are ordered (John Beck),
|
||||
Fix Enum check and missing break (Gaurav Gupta),
|
||||
xmlIO: Handle error returns from dup() (Philip Withnall),
|
||||
Fix a problem properly saving URIs (Daniel Veillard),
|
||||
wrong error column in structured error when parsing attribute values (Juergen Keil),
|
||||
wrong error column in structured error when skipping whitespace in xml decl (Juergen Keil),
|
||||
no error column in structured error handler for xml schema validation errors (Juergen Keil),
|
||||
Couple of Missing Null checks (Gaurav Gupta),
|
||||
Add couple of missing Null checks (Daniel Veillard),
|
||||
xmlschemastypes: Fix potential array overflow (Philip Withnall),
|
||||
runtest: Fix a memory leak on parse failure (Philip Withnall),
|
||||
xmlIO: Fix an FD leak on gzdopen() failure (Philip Withnall),
|
||||
xmlcatalog: Fix a memory leak on quit (Philip Withnall),
|
||||
HTMLparser: Correctly initialise a stack allocated structure (Philip Withnall),
|
||||
Check for tmon in _xmlSchemaDateAdd() is incorrect (David Kilzer),
|
||||
Avoid Possible Null Pointer in trio.c (Gaurav Gupta),
|
||||
Fix processing in SAX2 in case of an allocation failure (Daniel Veillard),
|
||||
XML Shell command "cd" does not handle "/" at end of path (Daniel Veillard),
|
||||
Fix various Missing Null checks (Gaurav Gupta),
|
||||
Fix a potential NULL dereference (Daniel Veillard),
|
||||
Add a couple of misisng check in xmlRelaxNGCleanupTree (Gaurav Gupta),
|
||||
Add a missing argument check (Gaurav Gupta),
|
||||
Adding a check in case of allocation error (Gaurav Gupta),
|
||||
xmlSaveUri() incorrectly recomposes URIs with rootless paths (Dennis Filder),
|
||||
Adding some missing NULL checks (Gaurav),
|
||||
Fixes for xmlInitParserCtxt (Daniel Veillard),
|
||||
Fix regressions introduced by CVE-2014-0191 patch (Daniel Veillard),
|
||||
erroneously ignores a validation error if no error callback set (Daniel Veillard),
|
||||
xmllint was not parsing the --c14n11 flag (Sérgio Batista),
|
||||
Avoid Possible null pointer dereference in memory debug mode (Gaurav),
|
||||
Avoid Double Null Check (Gaurav),
|
||||
Restore context size and position after XPATH_OP_ARG (Nick Wellnhofer),
|
||||
Fix xmlParseInNodeContext() if node is not element (Daniel Veillard),
|
||||
Avoid a possible NULL pointer dereference (Gaurav),
|
||||
Fix xmlTextWriterWriteElement when a null content is given (Daniel Veillard),
|
||||
Fix an typo 'onrest' in htmlScriptAttributes (Daniel Veillard),
|
||||
fixing a ptotential uninitialized access (Daniel Veillard),
|
||||
Fix an fd leak in an error case (Daniel Veillard),
|
||||
Missing initialization for the catalog module (Daniel Veillard),
|
||||
Handling of XPath function arguments in error case (Nick Wellnhofer),
|
||||
Fix a couple of missing NULL checks (Gaurav),
|
||||
Avoid a possibility of dangling encoding handler (Gaurav),
|
||||
Fix HTML push parser to accept HTML_PARSE_NODEFDTD (Arnold Hendriks),
|
||||
Fix a bug loading some compressed files (Mike Alexander),
|
||||
Fix XPath node comparison bug (Gaurav),
|
||||
Type mismatch in xmlschemas.c (Gaurav),
|
||||
Type mismatch in xmlschemastypes.c (Gaurav),
|
||||
Avoid a deadcode in catalog.c (Daniel Veillard),
|
||||
run close socket on Solaris, same as we do on other platforms (Denis Pauk),
|
||||
Fix pointer dereferenced before null check (Gaurav),
|
||||
Fix a potential NULL dereference in tree code (Daniel Veillard),
|
||||
Fix potential NULL pointer dereferences in regexp code (Gaurav),
|
||||
xmllint --pretty crashed without following numeric argument (Tim Galeckas),
|
||||
Fix XPath expressions of the form '@ns:*' (Nick Wellnhofer),
|
||||
Fix XPath '//' optimization with predicates (Nick Wellnhofer),
|
||||
Clear up a potential NULL dereference (Daniel Veillard),
|
||||
Fix a possible NULL dereference (Gaurav),
|
||||
Avoid crash if allocation fails (Daniel Veillard),
|
||||
Remove occasional leading space in XPath number formatting (Daniel Veillard),
|
||||
Fix handling of mmap errors (Daniel Veillard),
|
||||
Catch malloc error and exit accordingly (Daniel Veillard),
|
||||
missing else in xlink.c (Ami Fischman),
|
||||
Fix a parsing bug on non-ascii element and CR/LF usage (Daniel Veillard),
|
||||
Fix a regression in xmlGetDocCompressMode() (Daniel Veillard),
|
||||
properly quote the namespace uris written out during c14n (Aleksey Sanin),
|
||||
Remove premature XInclude check on URI being relative (Alexey Neyman),
|
||||
Fix missing break on last() function for attributes (dcb),
|
||||
Do not URI escape in server side includes (Romain Bondue),
|
||||
Fix an error in xmlCleanupParser (Alexander Pastukhov)
|
||||
|
||||
- Documentation:
|
||||
typo in error messages "colon are forbidden from..." (Daniel Veillard),
|
||||
Fix a link to James SAX documentation old page (Daniel Veillard),
|
||||
Fix typos in relaxng.c (Jan Pokorný),
|
||||
Fix a doc typo (Daniel Veillard),
|
||||
Fix typos in {tree,xpath}.c (errror) (Jan Pokorný),
|
||||
Add limitations about encoding conversion (Daniel Veillard),
|
||||
Fix typos in xmlschemas{,types}.c (Jan Pokorný),
|
||||
Fix incorrect spelling entites->entities (Jan Pokorný),
|
||||
Forgot to document 2.9.1 release, regenerate docs (Daniel Veillard)
|
||||
|
||||
- Portability:
|
||||
AC_CONFIG_FILES and executable bit (Roumen Petrov),
|
||||
remove HAVE_CONFIG_H dependency in testlimits.c (Roumen Petrov),
|
||||
fix some tabs mixing incompatible with python3 (Roumen Petrov),
|
||||
Visual Studio 14 CTP defines snprintf() (Francis Dupont),
|
||||
OS400: do not try to copy unexisting doc files (Patrick Monnerat),
|
||||
OS400: use either configure.ac or configure.in. (Patrick Monnerat),
|
||||
os400: make-src.sh: create physical file with target CCSID (Patrick Monnerat),
|
||||
OS400: Add some more C macros equivalent procedures. (Patrick Monnerat),
|
||||
OS400: use C macros to implement equivalent RPG support procedures. (Patrick Monnerat),
|
||||
OS400: implement XPath macros as procedures for ILE/RPG support. (Patrick Monnerat),
|
||||
OS400: include in distribution tarball. (Patrick Monnerat),
|
||||
OS400: Add README: compilation directives and OS/400 specific stuff. (Patrick Monnerat),
|
||||
OS400: Add compilation scripts. (Patrick Monnerat),
|
||||
OS400: ILE RPG language header files. (Patrick Monnerat),
|
||||
OS400: implement some macros as functions for ILE/RPG language support (that as no macros). (Patrick Monnerat),
|
||||
OS400: UTF8<-->EBCDIC wrappers for system and external library calls (Patrick Monnerat),
|
||||
OS400: Easy character transcoding support (Patrick Monnerat),
|
||||
OS400: iconv functions compatibility wrappers and table builder. (Patrick Monnerat),
|
||||
OS400: create architecture directory. Implement dlfcn emulation. (Patrick Monnerat),
|
||||
Fix building when configuring without xpath and xptr (Daniel Veillard),
|
||||
configure: Add --with-python-install-dir (Jonas Eriksson),
|
||||
Fix compilation with minimum and xinclude. (Nicolas Le Cam),
|
||||
Compile out use of xmlValidateNCName() when not available. (Nicolas Le Cam),
|
||||
Fix compilation with minimum and schematron. (Nicolas Le Cam),
|
||||
Legacy needs xmlSAX2StartElement() and xmlSAX2EndElement(). (Nicolas Le Cam),
|
||||
Don't use xmlValidateName() when not available. (Nicolas Le Cam),
|
||||
Fix a portability issue on Windows (Longstreth Jon),
|
||||
Various portability patches for OpenVMS (Jacob (Jouk) Jansen),
|
||||
Use specific macros for portability to OS/400 (Patrick Monnerat),
|
||||
Add macros needed for OS/400 portability (Patrick Monnerat),
|
||||
Portability patch for fopen on OS/400 (Patrick Monnerat),
|
||||
Portability fixes for OS/400 (Patrick Monnerat),
|
||||
Improve va_list portability (Patrick Monnerat),
|
||||
Portability fix (Patrick Monnerat),
|
||||
Portability fix (Patrick Monnerat),
|
||||
Generic portability fix (Patrick Monnerat),
|
||||
Shortening lines in headers (Patrick Monnerat),
|
||||
build: Use pkg-config to find liblzma in preference to AC_CHECK_LIB (Philip Withnall),
|
||||
build: Add @LZMA_LIBS@ to libxml’s pkg-config files (Philip Withnall),
|
||||
fix some tabs mixing incompatible with python3 (Daniel Veillard),
|
||||
add additional defines checks for support "./configure --with-minimum" (Denis Pauk),
|
||||
Another round of fixes for older versions of Python (Arfrever Frehtes Taifersar Arahesis),
|
||||
python: fix drv_libxml2.py for python3 compatibility (Alexandre Rostovtsev),
|
||||
python: Fix compiler warnings when building python3 bindings (Armin K),
|
||||
Fix for compilation with python 2.6.8 (Petr Sumbera)
|
||||
|
||||
- Improvements:
|
||||
win32/libxml2.def.src after rebuild in doc (Roumen Petrov),
|
||||
elfgcchack.h: more legacy needs xmlSAX2StartElement() and xmlSAX2EndElement() (Roumen Petrov),
|
||||
elfgcchack.h: add xmlXPathNodeEval and xmlXPathSetContextNode (Roumen Petrov),
|
||||
Provide cmake module (Samuel Martin),
|
||||
Fix a couple of issues raised by make dist (Daniel Veillard),
|
||||
Fix and add const qualifiers (Kurt Roeckx),
|
||||
Preparing for upcoming release of 2.9.2 (Daniel Veillard),
|
||||
Fix zlib and lzma libraries check via command line (Dmitriy),
|
||||
wrong error column in structured error when parsing end tag (Juergen Keil),
|
||||
doc/news.html: small update to avoid line join while generating NEWS. (Patrick Monnerat),
|
||||
Add methods for python3 iterator (Ron Angeles),
|
||||
Support element node traversal in document fragments. (Kyle VanderBeek),
|
||||
xmlNodeSetName: Allow setting the name to a substring of the currently set name (Tristan Van Berkom),
|
||||
Added macros for argument casts (Eric Zurcher),
|
||||
adding init calls to xml and html Read parsing entry points (Daniel Veillard),
|
||||
Get rid of 'REPLACEMENT CHARACTER' Unicode chars in xmlschemas.c (Jan Pokorný),
|
||||
Implement choice for name classes on attributes (Shaun McCance),
|
||||
Two small namespace tweaks (Daniel Veillard),
|
||||
xmllint --memory should fail on empty files (Daniel Veillard),
|
||||
Cast encoding name to char pointer to match arg type (Nikolay Sivov)
|
||||
|
||||
- Cleanups:
|
||||
Removal of old configure.in (Daniel Veillard),
|
||||
Unreachable code in tree.c (Gaurav Gupta),
|
||||
Remove a couple of dead conditions (Gaurav Gupta),
|
||||
Avoid some dead code and cleanup in relaxng.c (Gaurav),
|
||||
Drop not needed checks (Denis Pauk),
|
||||
Fix a wrong test (Daniel Veillard)
|
||||
|
||||
|
||||
|
||||
2.9.1: Apr 19 2013:
|
||||
- Features:
|
||||
Support for Python3 (Daniel Veillard),
|
||||
Add xmlXPathSetContextNode and xmlXPathNodeEval (Alex Bligh)
|
||||
|
||||
- Documentation:
|
||||
Add documentation for xmllint --xpath (Daniel Veillard),
|
||||
Fix the URL of the SAX documentation from James (Daniel Veillard),
|
||||
Fix spelling of "length". (Michael Wood)
|
||||
|
||||
- Portability:
|
||||
Fix python bindings with versions older than 2.7 (Daniel Veillard),
|
||||
rebuild docs:Makefile.am (Roumen Petrov),
|
||||
elfgcchack.h after rebuild in doc (Roumen Petrov),
|
||||
elfgcchack for buf module (Roumen Petrov),
|
||||
Fix a uneeded and wrong extra link parameter (Daniel Veillard),
|
||||
Few cleanup patches for Windows (Denis Pauk),
|
||||
Fix rpmbuild --nocheck (Mark Salter),
|
||||
Fix for win32/configure.js and WITH_THREAD_ALLOC (Daniel Richard),
|
||||
Fix Broken multi-arch support in xml2-config (Daniel Veillard),
|
||||
Fix a portability issue for GCC < 3.4.0 (Daniel Veillard),
|
||||
Windows build fixes (Daniel Richard),
|
||||
Fix a thread portability problem (Friedrich Haubensak),
|
||||
Downgrade autoconf requirement to 2.63 (Daniel Veillard)
|
||||
|
||||
- Bug Fixes:
|
||||
Fix a linking error for python bindings (Daniel Veillard),
|
||||
Fix a couple of return without value (Jüri Aedla),
|
||||
Improve the hashing functions (Daniel Franke),
|
||||
Improve handling of xmlStopParser() (Daniel Veillard),
|
||||
Remove risk of lockup in dictionary initialization (Daniel Veillard),
|
||||
Activate detection of encoding in external subset (Daniel Veillard),
|
||||
Fix an output buffer flushing conversion bug (Mikhail Titov),
|
||||
Fix an old bug in xmlSchemaValidateOneElement (Csaba László),
|
||||
Fix configure cannot remove messages (Gilles Espinasse),
|
||||
fix schema validation in combination with xsi:nil (Daniel Veillard),
|
||||
xmlCtxtReadFile doesn't work with literal IPv6 URLs (Steve Wolf),
|
||||
Fix a few problems with setEntityLoader (Alexey Neyman),
|
||||
Detect excessive entities expansion upon replacement (Daniel Veillard),
|
||||
Fix the flushing out of raw buffers on encoding conversions (Daniel,
|
||||
Veillard),
|
||||
Fix some buffer conversion issues (Daniel Veillard),
|
||||
When calling xmlNodeDump make sure we grow the buffer quickly (Daniel,
|
||||
Veillard),
|
||||
Fix an error in the progressive DTD parsing code (Dan Winship),
|
||||
xmllint should not load DTD by default when using the reader (Daniel,
|
||||
Veillard),
|
||||
Try IBM-037 when looking for EBCDIC handlers (Petr Sumbera),
|
||||
Fix potential out of bound access (Daniel Veillard),
|
||||
Fix large parse of file from memory (Daniel Veillard),
|
||||
Fix a bug in the nsclean option of the parser (Daniel Veillard),
|
||||
Fix a regression in 2.9.0 breaking validation while streaming (Daniel,
|
||||
Veillard),
|
||||
Remove potential calls to exit() (Daniel Veillard)
|
||||
|
||||
- Improvements:
|
||||
Regenerated API, and testapi, rebuild documentation (Daniel Veillard),
|
||||
Fix tree iterators broken by 2to3 script (Daniel Veillard),
|
||||
update all tests for Python3 and Python2 (Daniel Veillard),
|
||||
A few more fixes for python 3 affecting libxml2.py (Daniel Veillard),
|
||||
Fix compilation on Python3 (Daniel Veillard),
|
||||
Converting apibuild.py to python3 (Daniel Veillard),
|
||||
First pass at starting porting to python3 (Daniel Veillard),
|
||||
updated configure.in for python3 (Daniel Veillard),
|
||||
Add support for xpathRegisterVariable in Python (Shaun McCance),
|
||||
Added a regression tests from bug 694228 data (Daniel Veillard),
|
||||
Cache presence of '<' in entities content (Daniel Veillard),
|
||||
Avoid extra processing on entities (Daniel Veillard),
|
||||
Python binding for xmlRegisterInputCallback (Alexey Neyman),
|
||||
Python bindings: DOM casts everything to xmlNode (Alexey Neyman),
|
||||
Define LIBXML_THREAD_ALLOC_ENABLED via xmlversion.h (Tim Starling),
|
||||
Adding streaming validation to runtest checks (Daniel Veillard),
|
||||
Add a --pushsmall option to xmllint (Daniel Veillard)
|
||||
|
||||
- Cleanups:
|
||||
Switched comment in file to UTF-8 encoding (Daniel Veillard),
|
||||
Extend gitignore (Daniel Veillard),
|
||||
Silent the new python test on input (Alexey Neyman),
|
||||
Cleanup of a duplicate test (Daniel Veillard),
|
||||
Cleanup on duplicate test expressions (Daniel Veillard),
|
||||
Fix compiler warning after 153cf15905cf4ec080612ada6703757d10caba1e (Patrick,
|
||||
Gansterer),
|
||||
Spec cleanups and a fix for multiarch support (Daniel Veillard),
|
||||
Silence a clang warning (Daniel Veillard),
|
||||
Cleanup the Copyright to be pure MIT Licence wording (Daniel Veillard),
|
||||
rand_seed should be static in dict.c (Wouter Van Rooy),
|
||||
Fix typos in parser comments (Jan Pokorný)
|
||||
|
||||
|
||||
|
||||
2.9.0: Sep 11 2012:
|
||||
- Features:
|
||||
A few new API entry points,
|
||||
More resilient push parser mode,
|
||||
A lot of portability improvement,
|
||||
Faster XPath evaluation
|
||||
|
||||
- Documentation:
|
||||
xml2-config.1 markup error (Christian Weisgerber),
|
||||
libxml(3) manpage typo fix (John Bradshaw),
|
||||
More cleanups to the documentation part of libxml2 (Daniel Richard G)
|
||||
|
||||
- Portability:
|
||||
Bug 676544 - fails to build with --without-sax1 (Akira TAGOH),
|
||||
fix builds not having stdint.h (Rob Richards),
|
||||
GetProcAddressA is available only on WinCE (Daniel Veillard),
|
||||
More updates and cleanups on autotools and Makefiles (Daniel Richard G),
|
||||
More changes for Win32 compilation (Eric Zurcher),
|
||||
Basic changes for Win32 builds of release 2.9.0: compile buf.c (Eric Zurcher),
|
||||
Bundles all generated files for python into the distribution (Daniel Richard G),
|
||||
Fix compiler warnings of wincecompat.c (Patrick Gansterer),
|
||||
Fix non __GNUC__ build (Patrick Gansterer),
|
||||
Fix windows unicode build (Patrick Gansterer),
|
||||
clean redefinition of {v}snprintf in C-source (Roumen Petrov),
|
||||
use xmlBuf... if DEBUG_INPUT is defined (Roumen Petrov),
|
||||
fix runtests to use pthreads support for various Unix platforms (Daniel Richard G),
|
||||
Various "make distcheck" and portability fixups 2nd part (Daniel Richard G),
|
||||
Various "make distcheck" and portability fixups (Daniel Richard G),
|
||||
Fix compilation on older Visual Studio (Daniel Veillard)
|
||||
|
||||
- Bug Fixes:
|
||||
Change the XPath code to percolate allocation errors (Daniel Veillard),
|
||||
Fix reuse of xmlInitParser (Daniel Veillard),
|
||||
Fix potential crash on entities errors (Daniel Veillard),
|
||||
initialize var (Rob Richards),
|
||||
Fix the XPath arity check to also check the XPath stack limits (Daniel Veillard),
|
||||
Fix problem with specific and generic error handlers (Pietro Cerutti),
|
||||
Avoid a potential infinite recursion (Daniel Veillard),
|
||||
Fix an XSD error when generating internal automata (Daniel Veillard),
|
||||
Patch for xinclude of text using multibyte characters (Vitaly Ostanin),
|
||||
Fix a segfault on XSD validation on pattern error (Daniel Veillard),
|
||||
Fix missing xmlsave.h module which was ignored in recent builds (Daniel Veillard),
|
||||
Add a missing element check (Daniel Veillard),
|
||||
Adding various checks on node type though the API (Daniel Veillard),
|
||||
Namespace nodes can't be unlinked with xmlUnlinkNode (Daniel Veillard),
|
||||
Fix make dist to include new private header files (Daniel Veillard),
|
||||
More fixups on the push parser behaviour (Daniel Veillard),
|
||||
Strengthen behaviour of the push parser in problematic situations (Daniel Veillard),
|
||||
Enforce XML_PARSER_EOF state handling through the parser (Daniel Veillard),
|
||||
Fixup limits parser (Daniel Veillard),
|
||||
Do not fetch external parsed entities (Daniel Veillard),
|
||||
Fix an error in previous commit (Aron Xu),
|
||||
Fix entities local buffers size problems (Daniel Veillard),
|
||||
Fix parser local buffers size problems (Daniel Veillard),
|
||||
Fix a failure to report xmlreader parsing failures (Daniel Veillard)
|
||||
|
||||
- Improvements:
|
||||
Keep libxml2.syms when running "make distclean" (Daniel Veillard),
|
||||
Allow to set the quoting character of an xmlWriter (Csaba Raduly),
|
||||
Keep non-significant blanks node in HTML parser (Daniel Veillard),
|
||||
Add a forbidden variable error number and message to XPath (Daniel Veillard),
|
||||
Support long path names on WNT (Michael Stahl),
|
||||
Improve HTML escaping of attribute on output (Daniel Veillard),
|
||||
Handle ICU_LIBS as LIBADD, not LDFLAGS to prevent linking errors (Arfrever Frehtes Taifersar Arahesis),
|
||||
Switching XPath node sorting to Timsort (Vojtech Fried),
|
||||
Optimizing '//' in XPath expressions (Nick Wellnhofer),
|
||||
Expose xmlBufShrink in the public tree API (Daniel Veillard),
|
||||
Visible HTML elements close the head tag (Conrad Irwin),
|
||||
Fix file and line report for XSD SAX and reader streaming validation (Daniel Veillard),
|
||||
Fix const qualifyer to definition of xmlBufferDetach (Daniel Veillard),
|
||||
minimize use of HAVE_CONFIG_H (Roumen Petrov),
|
||||
fixup regression in Various "make distcheck" and portability fixups (Roumen Petrov),
|
||||
Add support for big line numbers in error reporting (Daniel Veillard),
|
||||
Avoid using xmlBuffer for serialization (Daniel Veillard),
|
||||
Improve compatibility between xmlBuf and xmlBuffer (Daniel Veillard),
|
||||
Provide new accessors for xmlOutputBuffer (Daniel Veillard),
|
||||
Improvements for old buffer compatibility (Daniel Veillard),
|
||||
Expand the limit test program (Daniel Veillard),
|
||||
Improve error reporting on parser errors (Daniel Veillard),
|
||||
Implement some default limits in the XPath module (Daniel Veillard),
|
||||
Introduce some default parser limits (Daniel Veillard),
|
||||
Cleanups and new limit APIs for dictionaries (Daniel Veillard),
|
||||
Fixup for buf.c (Daniel Veillard),
|
||||
Cleanup URI module memory allocation code (Daniel Veillard),
|
||||
Extend testlimits (Daniel Veillard),
|
||||
More avoid quadratic behaviour (Daniel Veillard),
|
||||
Impose a reasonable limit on PI size (Daniel Veillard),
|
||||
first version of testlimits new test (Daniel Veillard),
|
||||
Avoid quadratic behaviour in some push parsing cases (Daniel Veillard),
|
||||
Impose a reasonable limit on comment size (Daniel Veillard),
|
||||
Impose a reasonable limit on attribute size (Daniel Veillard),
|
||||
Harden the buffer code and make it more compatible (Daniel Veillard),
|
||||
More cleanups for input/buffers code (Daniel Veillard),
|
||||
Cleanup function xmlBufResetInput(), to set input from Buffer (Daniel Veillard)
|
||||
Swicth the test program for characters to new input buffers (Daniel Veillard),
|
||||
Convert the HTML tree module to the new buffers (Daniel Veillard),
|
||||
Convert of the HTML parser to new input buffers (Daniel Veillard),
|
||||
Convert the writer to new output buffer and save APIs (Daniel Veillard),
|
||||
Convert XMLReader to the new input buffers (Daniel Veillard),
|
||||
New saving functions using xmlBuf and conversion (Daniel Veillard),
|
||||
Provide new xmlBuf based saving functions (Daniel Veillard),
|
||||
Convert XInclude to the new input buffers (Daniel Veillard),
|
||||
Convert catalog code to the new input buffers (Daniel Veillard),
|
||||
Convert C14N to the new Input buffer (Daniel Veillard),
|
||||
Convert xmlIO.c to the new input and output buffers (Daniel Veillard),
|
||||
Convert XML parser to the new input buffers (Daniel Veillard),
|
||||
Incompatible change to the Input and Output buffers (Daniel Veillard),
|
||||
Adding new encoding function to deal with the new structures (Daniel Veillard),
|
||||
Convert XPath to xmlBuf (Daniel Veillard),
|
||||
Adding a new buf module for buffers (Daniel Veillard),
|
||||
Memory error within SAX2 reuse common framework (Daniel Veillard),
|
||||
Fix xmllint --xpath node initialization (Daniel Veillard)
|
||||
|
||||
- Cleanups:
|
||||
Various cleanups to avoid compiler warnings (Daniel Veillard),
|
||||
Big space and tab cleanup (Daniel Veillard),
|
||||
Followup to LibXML2 docs/examples cleanup patch (Daniel Veillard),
|
||||
Second round of cleanups for LibXML2 docs/examples (Daniel Richard),
|
||||
Remove all .cvsignore as they are not used anymore (Daniel Veillard),
|
||||
Fix a Timsort function helper comment (Daniel Veillard),
|
||||
Small cleanup for valgrind target (Daniel Veillard),
|
||||
Patch for portability of latin characters in C files (Daniel Veillard),
|
||||
Cleanup some of the parser code (Daniel Veillard),
|
||||
Fix a variable name in comment (Daniel Veillard),
|
||||
Regenerated testapi.c (Daniel Veillard),
|
||||
Regenerating docs and API files (Daniel Veillard),
|
||||
Small cleanup of unused variables in test (Daniel Veillard),
|
||||
Expand .gitignore with more files (Daniel Veillard)
|
||||
|
||||
|
||||
|
||||
2.8.0: May 23 2012:
|
||||
- Features:
|
||||
add lzma compression support (Anders F Bjorklund)
|
||||
|
||||
- Documentation:
|
||||
xmlcatalog: Add uri and delegateURI to possible add types in man page. (Ville Skyttä),
|
||||
Update README.tests (Daniel Veillard),
|
||||
URI handling code is not OOM resilient (Daniel Veillard),
|
||||
Fix an error in comment (Daniel Veillard),
|
||||
Fixed bug #617016 (Daniel Mustieles),
|
||||
Fixed two typos in the README document (Daniel Neel),
|
||||
add generated html files (Anders F Bjorklund),
|
||||
Clarify the need to use xmlFreeNode after xmlUnlinkNode (Daniel Veillard),
|
||||
Improve documentation a bit (Daniel Veillard),
|
||||
Updated URL for lxml python bindings (Daniel Veillard)
|
||||
|
||||
- Portability:
|
||||
Restore code for Windows compilation (Daniel Veillard),
|
||||
Remove git error message during configure (Christian Dywan),
|
||||
xmllint: Build fix for endTimer if !defined(HAVE_GETTIMEOFDAY) (Patrick R. Gansterer),
|
||||
remove a bashism in confgure.in (John Hein),
|
||||
undef ERROR if already defined (Patrick R. Gansterer),
|
||||
Fix library problems with mingw-w64 (Michael Cronenworth),
|
||||
fix windows build. ifdef addition from bug 666491 makes no sense (Rob Richards),
|
||||
prefer native threads on win32 (Sam Thursfield),
|
||||
Allow to compile with Visual Studio 2010 (Thomas Lemm),
|
||||
Fix mingw's snprintf configure check (Andoni Morales),
|
||||
fixed a 64bit big endian issue (Marcus Meissner),
|
||||
Fix portability failure if netdb.h lacks NO_ADDRESS (Daniel Veillard),
|
||||
Fix windows build from lzma addition (Rob Richards),
|
||||
autogen: Only check for libtoolize (Colin Walters),
|
||||
Fix the Windows build files (Patrick von Reth),
|
||||
634846 Remove a linking option breaking Windows VC10 (Daniel Veillard),
|
||||
599241 fix an initialization problem on Win64 (Andrew W. Nosenko),
|
||||
fix win build (Rob Richards)
|
||||
|
||||
- Bug fixes:
|
||||
Part for rand_r checking missing (Daniel Veillard),
|
||||
Cleanup on randomization (Daniel Veillard),
|
||||
Fix undefined reference in python module (Pacho Ramos),
|
||||
Fix a race in xmlNewInputStream (Daniel Veillard),
|
||||
Fix weird streaming RelaxNG errors (Noam),
|
||||
Fix various bugs in new code raised by the API checking (Daniel Veillard),
|
||||
Fix various problems with "make dist" (Daniel Veillard),
|
||||
Fix a memory leak in the xzlib code (Daniel Veillard),
|
||||
HTML parser error with <noscript> in the <head> (Denis Pauk),
|
||||
XSD: optional element in complex type extension (Remi Gacogne),
|
||||
Fix html serialization error and htmlSetMetaEncoding() (Daniel Veillard),
|
||||
Fix a wrong return value in previous patch (Daniel Veillard),
|
||||
Fix an uninitialized variable use (Daniel Veillard),
|
||||
Fix a compilation problem with --minimum (Brandon Slack),
|
||||
Remove redundant and ungarded include of resolv.h (Daniel Veillard),
|
||||
xinclude with parse="text" does not use the entity loader (Shaun McCance),
|
||||
Allow to parse 1 byte HTML files (Denis Pauk),
|
||||
Patch that fixes the skipping of the HTML_PARSE_NOIMPLIED flag (Martin Schröder),
|
||||
Avoid memory leak if xmlParserInputBufferCreateIO fails (Lin Yi-Li),
|
||||
Prevent an infinite loop when dumping a node with encoding problems (Timothy Elliott),
|
||||
xmlParseNodeInContext problems with an empty document (Tim Elliott),
|
||||
HTML element position is not detected propperly (Pavel Andrejs),
|
||||
Fix an off by one pointer access (Jüri Aedla),
|
||||
Try to fix a problem with entities in SAX mode (Daniel Veillard),
|
||||
Fix a crash with xmllint --path on empty results (Daniel Veillard),
|
||||
Fixed bug #667946 (Daniel Mustieles),
|
||||
Fix a logic error in Schemas Component Constraints (Ryan Sleevi),
|
||||
Fix a wrong enum type use in Schemas Types (Nico Weber),
|
||||
Fix SAX2 builder in case of undefined attributes namespace (Daniel Veillard),
|
||||
Fix SAX2 builder in case of undefined element namespaces (Daniel Veillard),
|
||||
fix reference to STDOUT_FILENO on MSVC (Tay Ray Chuan),
|
||||
fix a pair of possible out of array char references (Daniel Veillard),
|
||||
Fix an allocation error when copying entities (Daniel Veillard),
|
||||
Make sure the parser returns when getting a Stop order (Chris Evans),
|
||||
Fix some potential problems on reallocation failures(parser.c) (Xia Xinfeng),
|
||||
Fix a schema type duration comparison overflow (Daniel Veillard),
|
||||
Fix an unimplemented part in RNG value validation (Daniel Veillard),
|
||||
Fix missing error status in XPath evaluation (Daniel Veillard),
|
||||
Hardening of XPath evaluation (Daniel Veillard),
|
||||
Fix an off by one error in encoding (Daniel Veillard),
|
||||
Fix RELAX NG include bug #655288 (Shaun McCance),
|
||||
Fix XSD validation bug #630130 (Toyoda Eizi),
|
||||
Fix some potential problems on reallocation failures (Chris Evans),
|
||||
__xmlRaiseError: fix use of the structured callback channel (Dmitry V. Levin),
|
||||
__xmlRaiseError: fix the structured callback channel's data initialization (Dmitry V. Levin),
|
||||
Fix memory corruption when xmlParseBalancedChunkMemoryInternal is called from xmlParseBalancedChunk (Rob Richards),
|
||||
Small fix for previous commit (Daniel Veillard),
|
||||
Fix a potential freeing error in XPath (Daniel Veillard),
|
||||
Fix a potential memory access error (Daniel Veillard),
|
||||
Reactivate the shared library versionning script (Daniel Veillard)
|
||||
|
||||
- Improvements:
|
||||
use mingw C99 compatible functions {v}snprintf instead those from MSVC runtime (Roumen Petrov),
|
||||
New symbols added for the next release (Daniel Veillard),
|
||||
xmlTextReader bails too quickly on error (Andy Lutomirski),
|
||||
Use a hybrid allocation scheme in xmlNodeSetContent (Conrad Irwin),
|
||||
Use buffers when constructing string node lists. (Conrad Irwin),
|
||||
Add HTML parser support for HTML5 meta charset encoding declaration (Denis Pauk),
|
||||
wrong message for double hyphen in comment XML error (Bryan Henderson),
|
||||
Fix "make tst" to grab lzma lib too (Daniel Veillard),
|
||||
Add "whereis" command to xmllint shell (Ryan),
|
||||
Improve xmllint shell (Ryan),
|
||||
add function xmlTextReaderRelaxNGValidateCtxt() (Noam Postavsky),
|
||||
Add --system support to autogen.sh (Daniel Veillard),
|
||||
Add hash randomization to hash and dict structures (Daniel Veillard),
|
||||
included xzlib in dist (Anders F Bjorklund),
|
||||
move xz/lzma helpers to separate included files (Anders F Bjorklund),
|
||||
add generated devhelp files (Anders F Bjorklund),
|
||||
add XML_WITH_LZMA to api (Anders F Bjorklund),
|
||||
autogen.sh: Honor NOCONFIGURE environment variable (Colin Walters),
|
||||
Improve the error report on undefined REFs (Daniel Veillard),
|
||||
Add exception for new W3C PI xml-model (Daniel Veillard),
|
||||
Add options to ignore the internal encoding (Daniel Veillard),
|
||||
testapi: use the right type for the check (Stefan Kost),
|
||||
various: handle return values of write calls (Stefan Kost),
|
||||
testWriter: xmlTextWriterWriteFormatElement wants an int instead of a long int (Stefan Kost),
|
||||
runxmlconf: update to latest testsuite version (Stefan Kost),
|
||||
configure: add -Wno-long-long to CFLAGS (Stefan Kost),
|
||||
configure: support silent automake rules if possible (Stefan Kost),
|
||||
xmlmemory: add a cast as size_t has no portable printf modifier (Stefan Kost),
|
||||
__xmlRaiseError: remove redundant schannel initialization (Dmitry V. Levin),
|
||||
__xmlRaiseError: do cheap code check early (Dmitry V. Levin)
|
||||
|
||||
- Cleanups:
|
||||
Cleanups before 2.8.0-rc2 (Daniel Veillard),
|
||||
Avoid an extra operation (Daniel Veillard),
|
||||
Remove vestigial de-ANSI-fication support. (Javier Jardón),
|
||||
autogen.sh: Fix typo (Javier Jardón),
|
||||
Do not use unsigned but unsigned int (Daniel Veillard),
|
||||
Remove two references to u_short (Daniel Veillard),
|
||||
Fix -Wempty-body warning from clang (Nico Weber),
|
||||
Cleanups of lzma support (Daniel Veillard),
|
||||
Augment the list of ignored files (Daniel Veillard),
|
||||
python: remove unused variable (Stefan Kost),
|
||||
python: flag two unused args (Stefan Kost),
|
||||
configure: acconfig.h is deprecated since autoconf-2.50 (Stefan Kost),
|
||||
xpath: remove unused variable (Stefan Kost)
|
||||
|
||||
|
||||
|
||||
2.7.8: Nov 4 2010:
|
||||
- Features:
|
||||
480323 add code to plug in ICU converters by default (Giuseppe Iuculano),
|
||||
Add xmlSaveOption XML_SAVE_WSNONSIG (Adam Spragg)
|
||||
|
||||
- Documentation:
|
||||
Fix devhelp documentation installation (Mike Hommey),
|
||||
Fix web site encoding problems (Daniel Veillard),
|
||||
Fix a couple of typo in HTML parser error messages (Michael Day),
|
||||
Forgot to update the news page for 0.7.7 (Daniel Veillard)
|
||||
|
||||
- Portability:
|
||||
607273 Fix python detection on MSys/Windows (LRN),
|
||||
614087 Fix Socket API usage to allow Windows64 compilation (Ozkan Sezer),
|
||||
Fix compilation with Clang (Koop Mast),
|
||||
Fix Win32 build (Rob Richards)
|
||||
|
||||
- Bug Fixes:
|
||||
595789 fix a remaining potential Solaris problem (Daniel Veillard),
|
||||
617468 fix progressive HTML parsing with style using "'" (Denis Pauk),
|
||||
616478 Fix xmllint shell write command (Gwenn Kahz),
|
||||
614005 Possible erroneous HTML parsing on unterminated script (Pierre Belzile),
|
||||
627987 Fix XSD IDC errors in imported schemas (Jim Panetta),
|
||||
629325 XPath rounding errors first cleanup (Phil Shafer),
|
||||
630140 fix iso995x encoding error (Daniel Veillard),
|
||||
make sure htmlCtxtReset do reset the disableSAX field (Daniel Veillard),
|
||||
Fix a change of semantic on XPath preceding and following axis (Daniel Veillard),
|
||||
Fix a potential segfault due to weak symbols on pthreads (Mike Hommey),
|
||||
Fix a leak in XPath compilation (Daniel Veillard),
|
||||
Fix the semantic of XPath axis for namespace/attribute context nodes (Daniel Veillard),
|
||||
Avoid a descriptor leak in catalog loading code (Carlo Bramini),
|
||||
Fix a small bug in XPath evaluation code (Marius Wachtler),
|
||||
Fix handling of XML-1.0 XML namespace declaration (Daniel Veillard),
|
||||
Fix errors in XSD double validation check (Csaba Raduly),
|
||||
Fix handling of apos in URIs (Daniel Veillard),
|
||||
xmlTextReaderReadOuterXml should handle DTD (Rob Richards),
|
||||
Autogen.sh needs to create m4 directory (Rob Richards)
|
||||
|
||||
- Improvements:
|
||||
606592 update language ID parser to RFC 5646 (Daniel Veillard),
|
||||
Sort python generated stubs (Mike Hommey),
|
||||
Add an HTML parser option to avoid a default doctype (Daniel Veillard)
|
||||
|
||||
- Cleanups:
|
||||
618831 don't ship generated files in git (Adrian Bunk),
|
||||
Switch from the obsolete mkinstalldirs to AC_PROG_MKDIR_P (Adrian Bunk),
|
||||
Various cleanups on encoding handling (Daniel Veillard),
|
||||
Fix xmllint to use format=1 for default formatting (Adam Spragg),
|
||||
Force _xmlSaveCtxt.format to be 0 or 1 (Adam Spragg),
|
||||
Cleanup encoding pointer comparison (Nikolay Sivov),
|
||||
Small code cleanup on previous patch (Daniel Veillard)
|
||||
|
||||
|
||||
|
||||
2.7.7: Mar 15 2010:
|
||||
- Improvements:
|
||||
Adding a --xpath option to xmllint (Daniel Veillard),
|
||||
Make HTML parser non-recursive (Eugene Pimenov)
|
||||
|
||||
- Portability:
|
||||
relaxng.c: cast to allow compilation with sun studio 11 (Ben Walton),
|
||||
Fix build failure on Sparc solaris (Roumen Petrov),
|
||||
use autoreconf in autogen.sh (Daniel Veillard),
|
||||
Fix build with mingw (Roumen Petrov),
|
||||
Upgrade some of the configure and autogen (Daniel Veillard),
|
||||
Fix relaxNG tests in runtest for Windows runtest.c: initialize ret (Rob Richards),
|
||||
Fix a const warning in xmlNodeSetBase (Martin Trappel),
|
||||
Fix python generator to not use deprecated xmllib (Daniel Veillard),
|
||||
Update some automake files (Daniel Veillard),
|
||||
598785 Fix nanohttp on Windows (spadix)
|
||||
|
||||
- Bug Fixes:
|
||||
libxml violates the zlib interface and crashes (Mark Adler),
|
||||
Fix broken escape behaviour in regexp ranges (Daniel Veillard),
|
||||
Fix missing win32 libraries in libxml-2.0.pc (Volker Grabsch),
|
||||
Fix detection of python linker flags (Daniel Macks),
|
||||
fix build error in libxml2/python (Paul Smith),
|
||||
ChunkParser: Incorrect decoding of small xml files (Raul Hudea),
|
||||
htmlCheckEncoding doesn't update input-end after shrink (Eugene Pimenov),
|
||||
Fix a missing #ifdef (Daniel Veillard),
|
||||
Fix encoding selection for xmlParseInNodeContext (Daniel Veillard),
|
||||
xmlPreviousElementSibling mistake (François Delyon),
|
||||
608773 add a missing check in xmlGROW (Daniel Veillard),
|
||||
Fix xmlParseInNodeContext for HTML content (Daniel Veillard),
|
||||
Fix lost namespace when copying node * tree.c: reconcile namespace if not found (Rob Richards),
|
||||
Fix some missing commas in HTML element lists (Eugene Pimenov),
|
||||
Correct variable type to unsigned (Nikolay Sivov),
|
||||
Recognize ID attribute in HTML without DOCTYPE (Daniel Veillard),
|
||||
Fix memory leak in xmlXPathEvalExpression() (Martin),
|
||||
Fix an init bug in global.c (Kai Henning),
|
||||
Fix xmlNodeSetBase() comment (Daniel Veillard),
|
||||
Fix broken escape behaviour in regexp ranges (Daniel Veillard),
|
||||
Don't give default HTML boolean attribute values in parser (Daniel Veillard),
|
||||
xmlCtxtResetLastError should reset ctxt-errNo (Daniel Veillard)
|
||||
|
||||
- Cleanups:
|
||||
Cleanup a couple of weirdness in HTML parser (Eugene Pimenov)
|
||||
|
||||
|
||||
|
||||
2.7.6: Oct 6 2009:
|
||||
- Bug Fixes:
|
||||
Restore thread support in default configuration (Andrew W. Nosenko),
|
||||
@ -215,7 +845,7 @@ http://svn.gnome.org/viewvc/libxml2/trunk/
|
||||
- Improvement: switch parser to XML-1.0 5th edition, add parsing flags
|
||||
for old versions, switch URI parsing to RFC 3986,
|
||||
add xmlSchemaValidCtxtGetParserCtxt (Holger Kaelberer),
|
||||
new hashing functions for dictionnaries (based on Stefan Behnel work),
|
||||
new hashing functions for dictionaries (based on Stefan Behnel work),
|
||||
improve handling of misplaced html/head/body in HTML parser, better
|
||||
regression test tools and code coverage display, better algorithms
|
||||
to detect various versions of the billion laughts attacks, make
|
||||
@ -420,7 +1050,7 @@ Do not use or package 2.6.25
|
||||
|
||||
- Improvements: xmlDOMWrapReconcileNamespaces xmlDOMWrapCloneNode (Kasimier
|
||||
Buchcik), XML catalog debugging (Rick Jones), update to Unicode 4.01.
|
||||
- Bug fixes: DoctRenderer() problem in 2.6.23, xmlParseInNodeContext()
|
||||
- Bug fixes: xmlParseChunk() problem in 2.6.23, xmlParseInNodeContext()
|
||||
on HTML docs, URI behaviour on Windows (Rob Richards), comment streaming
|
||||
bug, xmlParseComment (with William Brack), regexp bug fixes (DV &
|
||||
Youri Golovanov), xmlGetNodePath on text/CDATA (Kasimier),
|
||||
@ -601,7 +1231,7 @@ Do not use or package 2.6.25
|
||||
Bakefile support (Francesco Montorsi), Windows compilation (Joel Reed),
|
||||
some gcc4 fixes, HP-UX portability fixes (Rick Jones).
|
||||
- bug fixes: xmlSchemaElementDump namespace (Kasimier Buchcik), push and
|
||||
xmlreader stopping on non-fatal errors, thread support for dictionnaries
|
||||
xmlreader stopping on non-fatal errors, thread support for dictionaries
|
||||
reference counting (Gary Coady), internal subset and push problem, URL
|
||||
saved in xmlCopyDoc, various schemas bug fixes (Kasimier), Python paths
|
||||
fixup (Stephane Bidoul), xmlGetNodePath and namespaces, xmlSetNsProp fix
|
||||
@ -614,7 +1244,7 @@ Do not use or package 2.6.25
|
||||
Hendricks), aliasing bug exposed by gcc4 on s390, xmlTextReaderNext bug
|
||||
(Rob Richards), Schemas decimal type fixes (William Brack),
|
||||
xmlByteConsumed static buffer (Ben Maurer).
|
||||
- improvement: speedup parsing comments and DTDs, dictionnary support for
|
||||
- improvement: speedup parsing comments and DTDs, dictionary support for
|
||||
hash tables, Schemas Identity constraints (Kasimier), streaming XPath
|
||||
subset, xmlTextReaderReadString added (Bjorn Reese), Schemas canonical
|
||||
values handling (Kasimier), add xmlTextReaderByteConsumed (Aron
|
||||
@ -824,7 +1454,7 @@ Do not use or package 2.6.25
|
||||
URI on SYSTEM lookup failure, XInclude parse flags inheritance (William),
|
||||
XInclude and XPointer fixes for entities (William), XML parser bug
|
||||
reported by Holger Rauch, nanohttp fd leak (William), regexps char
|
||||
groups '-' handling (William), dictionnary reference counting problems,
|
||||
groups '-' handling (William), dictionary reference counting problems,
|
||||
do not close stderr.
|
||||
- performance patches from Petr Pajas
|
||||
- Documentation fixes: XML_CATALOG_FILES in man pages (Mike Hommey)
|
||||
@ -852,7 +1482,7 @@ Do not use or package 2.6.25
|
||||
William) reported by Yuuichi Teranishi
|
||||
- bugfixes: make test and path issues, xmlWriter attribute serialization
|
||||
(William Brack), xmlWriter indentation (William), schemas validation
|
||||
(Eric Haszlakiewicz), XInclude dictionnaries issues (William and Oleg
|
||||
(Eric Haszlakiewicz), XInclude dictionaries issues (William and Oleg
|
||||
Paraschenko), XInclude empty fallback (William), HTML warnings (William),
|
||||
XPointer in XInclude (William), Python namespace serialization,
|
||||
isolat1ToUTF8 bound error (Alfred Mickautsch), output of parameter
|
||||
@ -873,7 +1503,7 @@ Do not use or package 2.6.25
|
||||
|
||||
|
||||
2.6.5: Jan 25 2004:
|
||||
- Bugfixes: dictionnaries for schemas (William Brack), regexp segfault
|
||||
- Bugfixes: dictionaries for schemas (William Brack), regexp segfault
|
||||
(William), xs:all problem (William), a number of XPointer bugfixes
|
||||
(William), xmllint error go to stderr, DTD validation problem with
|
||||
namespace, memory leak (William), SAX1 cleanup and minimal options fixes
|
||||
@ -885,14 +1515,14 @@ Do not use or package 2.6.25
|
||||
Fleck), doc (Sven Zimmerman), I/O example.
|
||||
- Python bindings: fixes (William), enum support (Stéphane Bidoul),
|
||||
structured error reporting (Stéphane Bidoul)
|
||||
- XInclude: various fixes for conformance, problem related to dictionnary
|
||||
- XInclude: various fixes for conformance, problem related to dictionary
|
||||
references (William & me), recursion (William)
|
||||
- xmlWriter: indentation (Lucas Brasilino), memory leaks (Alfred
|
||||
Mickautsch),
|
||||
- xmlSchemas: normalizedString datatype (John Belmonte)
|
||||
- code cleanup for strings functions (William)
|
||||
- Windows: compiler patches (Mark Vakoc)
|
||||
- Parser optimizations, a few new XPath and dictionnary APIs for future
|
||||
- Parser optimizations, a few new XPath and dictionary APIs for future
|
||||
XSLT optimizations.
|
||||
|
||||
|
||||
@ -987,8 +1617,8 @@ Do not use or package 2.6.25
|
||||
of change
|
||||
- Increased the library modularity, far more options can be stripped out,
|
||||
a --with-minimum configuration will weight around 160KBytes
|
||||
- Use per parser and per document dictionnary, allocate names and small
|
||||
text nodes from the dictionnary
|
||||
- Use per parser and per document dictionary, allocate names and small
|
||||
text nodes from the dictionary
|
||||
- Switch to a SAX2 like parser rewrote most of the XML parser core,
|
||||
provides namespace resolution and defaulted attributes, minimize memory
|
||||
allocations and copies, namespace checking and specific error handling,
|
||||
@ -1035,7 +1665,7 @@ Do not use or package 2.6.25
|
||||
(William), xmlCleanupParser (Marc Liyanage), CDATA output (William), HTTP
|
||||
error handling.
|
||||
- xmllint options: --dtdvalidfpi for Tobias Reif, --sax1 for compat
|
||||
testing, --nodict for building without tree dictionnary, --nocdata to
|
||||
testing, --nodict for building without tree dictionary, --nocdata to
|
||||
replace CDATA by text, --nsclean to remove surperfluous namespace
|
||||
declarations
|
||||
- added xml2-config --libtool-libs option from Kevin P. Fleming
|
||||
@ -1325,7 +1955,8 @@ http://www.w3.org/TR/xmlschema-2/
|
||||
code, beware, all
|
||||
interfaces are likely to change, there is huge holes, it is clearly a work in
|
||||
progress and don't even think of putting this code in a production system,
|
||||
it's actually not compiled in by default. The real fixes are: - a couple of bugs or limitations introduced in 2.4.20
|
||||
it's actually not compiled in by default. The real fixes are:
|
||||
- a couple of bugs or limitations introduced in 2.4.20
|
||||
- patches for Borland C++ and MSC by Igor
|
||||
- some fixes on XPath strings and conformance patches by Richard
|
||||
Jinks
|
||||
@ -1567,7 +2198,8 @@ it's actually not compiled in by default. The real fixes are: - a couple of bu
|
||||
|
||||
|
||||
2.3.9: May 19 2001:
|
||||
Lots of bugfixes, and added a basic SGML catalog support: - HTML push bugfix #54891 and another patch from Jonas Borgström
|
||||
Lots of bugfixes, and added a basic SGML catalog support:
|
||||
- HTML push bugfix #54891 and another patch from Jonas Borgstrom
|
||||
- some serious speed optimization again
|
||||
- some documentation cleanups
|
||||
- trying to get better linking on Solaris (-R)
|
||||
@ -1809,7 +2441,8 @@ Lots of bugfixes, and added a basic SGML catalog support: - HTML push bugfix #
|
||||
about & charref parsing
|
||||
- 2.1.0 also ease the upgrade from libxml v1 to the recent version. it
|
||||
also contains numerous fixes and enhancements:
|
||||
added xmlStopParser() to stop parsing
|
||||
|
||||
added xmlStopParser() to stop parsing
|
||||
improved a lot parsing speed when there is large CDATA blocs
|
||||
includes XPath patches provided by Picdar Technology
|
||||
tried to fix as much as possible DTD validation and namespace
|
||||
@ -1817,6 +2450,7 @@ Lots of bugfixes, and added a basic SGML catalog support: - HTML push bugfix #
|
||||
output to a given encoding has been added/tested
|
||||
lot of various fixes
|
||||
|
||||
|
||||
- added xmlStopParser() to stop parsing
|
||||
- improved a lot parsing speed when there is large CDATA blocs
|
||||
- includes XPath patches provided by Picdar Technology
|
||||
@ -1865,7 +2499,8 @@ Lots of bugfixes, and added a basic SGML catalog support: - HTML push bugfix #
|
||||
upgrade page
|
||||
- Some interfaces may changes (especially a bit about encoding).
|
||||
- the updates includes:
|
||||
fix I18N support. ISO-Latin-x/UTF-8/UTF-16 (nearly) seems correctly
|
||||
|
||||
fix I18N support. ISO-Latin-x/UTF-8/UTF-16 (nearly) seems correctly
|
||||
handled now
|
||||
Better handling of entities, especially well-formedness checking
|
||||
and proper PEref extensions in external subsets
|
||||
@ -1874,6 +2509,7 @@ Lots of bugfixes, and added a basic SGML catalog support: - HTML push bugfix #
|
||||
change
|
||||
structures to accommodate DOM
|
||||
|
||||
|
||||
- fix I18N support. ISO-Latin-x/UTF-8/UTF-16 (nearly) seems correctly
|
||||
handled now
|
||||
- Better handling of entities, especially well-formedness checking
|
||||
|
||||
@ -55,7 +55,7 @@
|
||||
* @ctxt: an XML validation parser context
|
||||
* @msg: a string to accompany the error message
|
||||
*/
|
||||
static void
|
||||
static void LIBXML_ATTR_FORMAT(2,0)
|
||||
xmlSAX2ErrMemory(xmlParserCtxtPtr ctxt, const char *msg) {
|
||||
xmlStructuredErrorFunc schannel = NULL;
|
||||
const char *str1 = "out of memory\n";
|
||||
@ -93,7 +93,7 @@ xmlSAX2ErrMemory(xmlParserCtxtPtr ctxt, const char *msg) {
|
||||
*
|
||||
* Handle a validation error
|
||||
*/
|
||||
static void
|
||||
static void LIBXML_ATTR_FORMAT(3,0)
|
||||
xmlErrValid(xmlParserCtxtPtr ctxt, xmlParserErrors error,
|
||||
const char *msg, const char *str1, const char *str2)
|
||||
{
|
||||
@ -133,7 +133,7 @@ xmlErrValid(xmlParserCtxtPtr ctxt, xmlParserErrors error,
|
||||
*
|
||||
* Handle a fatal parser error, i.e. violating Well-Formedness constraints
|
||||
*/
|
||||
static void
|
||||
static void LIBXML_ATTR_FORMAT(3,0)
|
||||
xmlFatalErrMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
|
||||
const char *msg, const xmlChar *str1, const xmlChar *str2)
|
||||
{
|
||||
@ -164,7 +164,7 @@ xmlFatalErrMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
|
||||
*
|
||||
* Handle a parser warning
|
||||
*/
|
||||
static void
|
||||
static void LIBXML_ATTR_FORMAT(3,0)
|
||||
xmlWarnMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
|
||||
const char *msg, const xmlChar *str1)
|
||||
{
|
||||
@ -189,7 +189,7 @@ xmlWarnMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
|
||||
*
|
||||
* Handle a namespace error
|
||||
*/
|
||||
static void
|
||||
static void LIBXML_ATTR_FORMAT(3,0)
|
||||
xmlNsErrMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
|
||||
const char *msg, const xmlChar *str1, const xmlChar *str2)
|
||||
{
|
||||
@ -213,7 +213,7 @@ xmlNsErrMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
|
||||
*
|
||||
* Handle a namespace warning
|
||||
*/
|
||||
static void
|
||||
static void LIBXML_ATTR_FORMAT(3,0)
|
||||
xmlNsWarnMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
|
||||
const char *msg, const xmlChar *str1, const xmlChar *str2)
|
||||
{
|
||||
@ -1078,7 +1078,7 @@ xmlSAX2EndDocument(void *ctx)
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)
|
||||
#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED)
|
||||
/**
|
||||
* xmlSAX2AttributeInternal:
|
||||
* @ctx: the user data (XML parser context)
|
||||
@ -1177,6 +1177,12 @@ xmlSAX2AttributeInternal(void *ctx, const xmlChar *fullname,
|
||||
val = xmlStringDecodeEntities(ctxt, value, XML_SUBSTITUTE_REF,
|
||||
0,0,0);
|
||||
ctxt->depth--;
|
||||
if (val == NULL) {
|
||||
xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElement");
|
||||
if (name != NULL)
|
||||
xmlFree(name);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
val = (xmlChar *) value;
|
||||
}
|
||||
@ -1822,7 +1828,7 @@ xmlSAX2EndElement(void *ctx, const xmlChar *name ATTRIBUTE_UNUSED)
|
||||
#endif
|
||||
nodePop(ctxt);
|
||||
}
|
||||
#endif /* LIBXML_SAX1_ENABLED || LIBXML_HTML_ENABLE */
|
||||
#endif /* LIBXML_SAX1_ENABLED || LIBXML_HTML_ENABLED || LIBXML_LEGACY_ENABLED */
|
||||
|
||||
/*
|
||||
* xmlSAX2TextNode:
|
||||
@ -2145,12 +2151,14 @@ xmlSAX2AttributeNs(xmlParserCtxtPtr ctxt,
|
||||
*/
|
||||
if (dup == NULL)
|
||||
dup = xmlStrndup(value, valueend - value);
|
||||
#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED)
|
||||
#ifdef LIBXML_VALID_ENABLED
|
||||
if (xmlValidateNCName(dup, 1) != 0) {
|
||||
xmlErrValid(ctxt, XML_DTD_XMLID_VALUE,
|
||||
"xml:id : attribute value %s is not an NCName\n",
|
||||
(const char *) dup, NULL);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
xmlAddID(&ctxt->vctxt, ctxt->myDoc, dup, ret);
|
||||
} else if (xmlIsID(ctxt->myDoc, ctxt->node, ret)) {
|
||||
@ -2570,6 +2578,10 @@ xmlSAX2Characters(void *ctx, const xmlChar *ch, int len)
|
||||
(xmlDictOwns(ctxt->dict, lastChild->content))) {
|
||||
lastChild->content = xmlStrdup(lastChild->content);
|
||||
}
|
||||
if (lastChild->content == NULL) {
|
||||
xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters: xmlStrdup returned NULL");
|
||||
return;
|
||||
}
|
||||
if (((size_t)ctxt->nodelen + (size_t)len > XML_MAX_TEXT_LENGTH) &&
|
||||
((ctxt->options & XML_PARSE_HUGE) == 0)) {
|
||||
xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters: huge text node");
|
||||
@ -2793,7 +2805,8 @@ xmlSAX2CDataBlock(void *ctx, const xmlChar *value, int len)
|
||||
xmlTextConcat(lastChild, value, len);
|
||||
} else {
|
||||
ret = xmlNewCDataBlock(ctxt->myDoc, value, len);
|
||||
xmlAddChild(ctxt->node, ret);
|
||||
if (xmlAddChild(ctxt->node, ret) == NULL)
|
||||
xmlFreeNode(ret);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -221,7 +221,7 @@ Done:
|
||||
ID and removes it from the table.
|
||||
- push mode parsing i.e. non-blocking state based parser
|
||||
done, both for XML and HTML parsers. Use xmlCreatePushParserCtxt()
|
||||
and DoctRenderer() and html counterparts.
|
||||
and xmlParseChunk() and html counterparts.
|
||||
The tester program now has a --push option to select that parser
|
||||
front-end. Douplicated tests to use both and check results are similar.
|
||||
|
||||
|
||||
@ -27,6 +27,7 @@
|
||||
#include <libxml/tree.h>
|
||||
#include <libxml/globals.h>
|
||||
#include <libxml/tree.h>
|
||||
#include <libxml/parserInternals.h> /* for XML_MAX_TEXT_LENGTH */
|
||||
#include "buf.h"
|
||||
|
||||
#define WITH_BUFFER_COMPAT
|
||||
@ -299,7 +300,8 @@ xmlBufSetAllocationScheme(xmlBufPtr buf,
|
||||
if ((scheme == XML_BUFFER_ALLOC_DOUBLEIT) ||
|
||||
(scheme == XML_BUFFER_ALLOC_EXACT) ||
|
||||
(scheme == XML_BUFFER_ALLOC_HYBRID) ||
|
||||
(scheme == XML_BUFFER_ALLOC_IMMUTABLE)) {
|
||||
(scheme == XML_BUFFER_ALLOC_IMMUTABLE) ||
|
||||
(scheme == XML_BUFFER_ALLOC_BOUNDED)) {
|
||||
buf->alloc = scheme;
|
||||
if (buf->buffer)
|
||||
buf->buffer->alloc = scheme;
|
||||
@ -458,6 +460,18 @@ xmlBufGrowInternal(xmlBufPtr buf, size_t len) {
|
||||
size = buf->use + len + 100;
|
||||
#endif
|
||||
|
||||
if (buf->alloc == XML_BUFFER_ALLOC_BOUNDED) {
|
||||
/*
|
||||
* Used to provide parsing limits
|
||||
*/
|
||||
if ((buf->use + len >= XML_MAX_TEXT_LENGTH) ||
|
||||
(buf->size >= XML_MAX_TEXT_LENGTH)) {
|
||||
xmlBufMemoryError(buf, "buffer error: text too long\n");
|
||||
return(0);
|
||||
}
|
||||
if (size >= XML_MAX_TEXT_LENGTH)
|
||||
size = XML_MAX_TEXT_LENGTH;
|
||||
}
|
||||
if ((buf->alloc == XML_BUFFER_ALLOC_IO) && (buf->contentIO != NULL)) {
|
||||
size_t start_buf = buf->content - buf->contentIO;
|
||||
|
||||
@ -565,7 +579,7 @@ xmlBufDump(FILE *file, xmlBufPtr buf) {
|
||||
*/
|
||||
|
||||
xmlChar *
|
||||
xmlBufContent(const xmlBufPtr buf)
|
||||
xmlBufContent(const xmlBuf *buf)
|
||||
{
|
||||
if ((!buf) || (buf->error))
|
||||
return NULL;
|
||||
@ -583,7 +597,7 @@ xmlBufContent(const xmlBufPtr buf)
|
||||
*/
|
||||
|
||||
xmlChar *
|
||||
xmlBufEnd(const xmlBufPtr buf)
|
||||
xmlBufEnd(xmlBufPtr buf)
|
||||
{
|
||||
if ((!buf) || (buf->error))
|
||||
return NULL;
|
||||
@ -739,6 +753,15 @@ xmlBufResize(xmlBufPtr buf, size_t size)
|
||||
CHECK_COMPAT(buf)
|
||||
|
||||
if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) return(0);
|
||||
if (buf->alloc == XML_BUFFER_ALLOC_BOUNDED) {
|
||||
/*
|
||||
* Used to provide parsing limits
|
||||
*/
|
||||
if (size >= XML_MAX_TEXT_LENGTH) {
|
||||
xmlBufMemoryError(buf, "buffer error: text too long\n");
|
||||
return(0);
|
||||
}
|
||||
}
|
||||
|
||||
/* Don't resize if we don't have to */
|
||||
if (size < buf->size)
|
||||
@ -867,6 +890,15 @@ xmlBufAdd(xmlBufPtr buf, const xmlChar *str, int len) {
|
||||
|
||||
needSize = buf->use + len + 2;
|
||||
if (needSize > buf->size){
|
||||
if (buf->alloc == XML_BUFFER_ALLOC_BOUNDED) {
|
||||
/*
|
||||
* Used to provide parsing limits
|
||||
*/
|
||||
if (needSize >= XML_MAX_TEXT_LENGTH) {
|
||||
xmlBufMemoryError(buf, "buffer error: text too long\n");
|
||||
return(-1);
|
||||
}
|
||||
}
|
||||
if (!xmlBufResize(buf, needSize)){
|
||||
xmlBufMemoryError(buf, "growing buffer");
|
||||
return XML_ERR_NO_MEMORY;
|
||||
@ -938,6 +970,15 @@ xmlBufAddHead(xmlBufPtr buf, const xmlChar *str, int len) {
|
||||
}
|
||||
needSize = buf->use + len + 2;
|
||||
if (needSize > buf->size){
|
||||
if (buf->alloc == XML_BUFFER_ALLOC_BOUNDED) {
|
||||
/*
|
||||
* Used to provide parsing limits
|
||||
*/
|
||||
if (needSize >= XML_MAX_TEXT_LENGTH) {
|
||||
xmlBufMemoryError(buf, "buffer error: text too long\n");
|
||||
return(-1);
|
||||
}
|
||||
}
|
||||
if (!xmlBufResize(buf, needSize)){
|
||||
xmlBufMemoryError(buf, "growing buffer");
|
||||
return XML_ERR_NO_MEMORY;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
* Summary: Internal Interfaces for memory buffers in libxml2
|
||||
* Description: this module describes most of the new xmlBuf buffer
|
||||
* entry points, those are private routines, with a
|
||||
@ -50,8 +50,8 @@ int xmlBufIsEmpty(const xmlBufPtr buf);
|
||||
int xmlBufAddLen(xmlBufPtr buf, size_t len);
|
||||
int xmlBufErase(xmlBufPtr buf, size_t len);
|
||||
|
||||
/* const xmlChar * xmlBufContent(const xmlBufPtr buf); */
|
||||
/* const xmlChar * xmlBufEnd(const xmlBufPtr buf); */
|
||||
/* const xmlChar * xmlBufContent(const xmlBuf *buf); */
|
||||
/* const xmlChar * xmlBufEnd(xmlBufPtr buf); */
|
||||
|
||||
xmlChar * xmlBufDetach(xmlBufPtr buf);
|
||||
|
||||
|
||||
@ -46,10 +46,10 @@
|
||||
#define MAX_DELEGATE 50
|
||||
#define MAX_CATAL_DEPTH 50
|
||||
|
||||
#if defined(_WIN32) || defined (_WIN64)
|
||||
# define PATH_SEAPARATOR ';'
|
||||
#ifdef _WIN32
|
||||
# define PATH_SEPARATOR ';'
|
||||
#else
|
||||
# define PATH_SEAPARATOR ':'
|
||||
# define PATH_SEPARATOR ':'
|
||||
#endif
|
||||
|
||||
/**
|
||||
@ -238,7 +238,7 @@ xmlCatalogErrMemory(const char *extra)
|
||||
*
|
||||
* Handle a catalog error
|
||||
*/
|
||||
static void
|
||||
static void LIBXML_ATTR_FORMAT(4,0)
|
||||
xmlCatalogErr(xmlCatalogEntryPtr catal, xmlNodePtr node, int error,
|
||||
const char *msg, const xmlChar *str1, const xmlChar *str2,
|
||||
const xmlChar *str3)
|
||||
@ -994,6 +994,11 @@ xmlLoadFileContent(const char *filename)
|
||||
content = (xmlChar*)xmlMallocAtomic(size + 10);
|
||||
if (content == NULL) {
|
||||
xmlCatalogErrMemory("allocating catalog data");
|
||||
#ifdef HAVE_STAT
|
||||
close(fd);
|
||||
#else
|
||||
fclose(fd);
|
||||
#endif
|
||||
return (NULL);
|
||||
}
|
||||
#ifdef HAVE_STAT
|
||||
@ -3230,7 +3235,7 @@ xmlLoadCatalogs(const char *pathss) {
|
||||
const char *cur;
|
||||
const char *paths;
|
||||
xmlChar *path;
|
||||
#if defined(_WIN32) || defined (_WIN64)
|
||||
#ifdef _WIN32
|
||||
int i, iLen;
|
||||
#endif
|
||||
|
||||
@ -3242,10 +3247,10 @@ xmlLoadCatalogs(const char *pathss) {
|
||||
while (xmlIsBlank_ch(*cur)) cur++;
|
||||
if (*cur != 0) {
|
||||
paths = cur;
|
||||
while ((*cur != 0) && (*cur != PATH_SEAPARATOR) && (!xmlIsBlank_ch(*cur)))
|
||||
while ((*cur != 0) && (*cur != PATH_SEPARATOR) && (!xmlIsBlank_ch(*cur)))
|
||||
cur++;
|
||||
path = xmlStrndup((const xmlChar *)paths, cur - paths);
|
||||
#if defined(_WIN32) || defined (_WIN64)
|
||||
#ifdef _WIN32
|
||||
iLen = strlen((const char*)path);
|
||||
for(i = 0; i < iLen; i++) {
|
||||
if(path[i] == '\\') {
|
||||
@ -3258,7 +3263,7 @@ xmlLoadCatalogs(const char *pathss) {
|
||||
xmlFree(path);
|
||||
}
|
||||
}
|
||||
while (*cur == PATH_SEAPARATOR)
|
||||
while (*cur == PATH_SEPARATOR)
|
||||
cur++;
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -44,10 +44,10 @@ struct _xmlDebugCtxt {
|
||||
int depth; /* current depth */
|
||||
xmlDocPtr doc; /* current document */
|
||||
xmlNodePtr node; /* current node */
|
||||
xmlDictPtr dict; /* the doc dictionnary */
|
||||
xmlDictPtr dict; /* the doc dictionary */
|
||||
int check; /* do just checkings */
|
||||
int errors; /* number of errors found */
|
||||
int nodict; /* if the document has no dictionnary */
|
||||
int nodict; /* if the document has no dictionary */
|
||||
int options; /* options */
|
||||
};
|
||||
|
||||
@ -164,7 +164,7 @@ xmlDebugErr(xmlDebugCtxtPtr ctxt, int error, const char *msg)
|
||||
NULL, NULL, NULL, 0, 0,
|
||||
"%s", msg);
|
||||
}
|
||||
static void
|
||||
static void LIBXML_ATTR_FORMAT(3,0)
|
||||
xmlDebugErr2(xmlDebugCtxtPtr ctxt, int error, const char *msg, int extra)
|
||||
{
|
||||
ctxt->errors++;
|
||||
@ -174,7 +174,7 @@ xmlDebugErr2(xmlDebugCtxtPtr ctxt, int error, const char *msg, int extra)
|
||||
NULL, NULL, NULL, 0, 0,
|
||||
msg, extra);
|
||||
}
|
||||
static void
|
||||
static void LIBXML_ATTR_FORMAT(3,0)
|
||||
xmlDebugErr3(xmlDebugCtxtPtr ctxt, int error, const char *msg, const char *extra)
|
||||
{
|
||||
ctxt->errors++;
|
||||
@ -243,7 +243,7 @@ xmlCtxtCheckString(xmlDebugCtxtPtr ctxt, const xmlChar * str)
|
||||
* @ctxt: the debug context
|
||||
* @name: the name
|
||||
*
|
||||
* Do debugging on the name, for example the dictionnary status and
|
||||
* Do debugging on the name, for example the dictionary status and
|
||||
* conformance to the Name production.
|
||||
*/
|
||||
static void
|
||||
@ -254,16 +254,18 @@ xmlCtxtCheckName(xmlDebugCtxtPtr ctxt, const xmlChar * name)
|
||||
xmlDebugErr(ctxt, XML_CHECK_NO_NAME, "Name is NULL");
|
||||
return;
|
||||
}
|
||||
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
|
||||
if (xmlValidateName(name, 0)) {
|
||||
xmlDebugErr3(ctxt, XML_CHECK_NOT_NCNAME,
|
||||
"Name is not an NCName '%s'", (const char *) name);
|
||||
}
|
||||
#endif
|
||||
if ((ctxt->dict != NULL) &&
|
||||
(!xmlDictOwns(ctxt->dict, name)) &&
|
||||
((ctxt->doc == NULL) ||
|
||||
((ctxt->doc->parseFlags & (XML_PARSE_SAX1 | XML_PARSE_NODICT)) == 0))) {
|
||||
xmlDebugErr3(ctxt, XML_CHECK_OUTSIDE_DICT,
|
||||
"Name is not from the document dictionnary '%s'",
|
||||
"Name is not from the document dictionary '%s'",
|
||||
(const char *) name);
|
||||
}
|
||||
}
|
||||
@ -290,7 +292,7 @@ xmlCtxtGenericNodeCheck(xmlDebugCtxtPtr ctxt, xmlNodePtr node) {
|
||||
/* desactivated right now as it raises too many errors */
|
||||
if (doc->type == XML_DOCUMENT_NODE)
|
||||
xmlDebugErr(ctxt, XML_CHECK_NO_DICT,
|
||||
"Document has no dictionnary\n");
|
||||
"Document has no dictionary\n");
|
||||
#endif
|
||||
ctxt->nodict = 1;
|
||||
}
|
||||
@ -3241,7 +3243,12 @@ xmlShell(xmlDocPtr doc, char *filename, xmlShellReadlineFunc input,
|
||||
ctxt->node = (xmlNodePtr) ctxt->doc;
|
||||
} else {
|
||||
#ifdef LIBXML_XPATH_ENABLED
|
||||
int l;
|
||||
|
||||
ctxt->pctxt->node = ctxt->node;
|
||||
l = strlen(arg);
|
||||
if ((l >= 2) && (arg[l - 1] == '/'))
|
||||
arg[l - 1] = 0;
|
||||
list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt);
|
||||
#else
|
||||
list = NULL;
|
||||
|
||||
@ -87,7 +87,7 @@ typedef unsigned __int32 uint32_t;
|
||||
#endif /* WITH_BIG_KEY */
|
||||
|
||||
/*
|
||||
* An entry in the dictionnary
|
||||
* An entry in the dictionary
|
||||
*/
|
||||
typedef struct _xmlDictEntry xmlDictEntry;
|
||||
typedef xmlDictEntry *xmlDictEntryPtr;
|
||||
@ -110,7 +110,7 @@ struct _xmlDictStrings {
|
||||
xmlChar array[1];
|
||||
};
|
||||
/*
|
||||
* The entire dictionnary
|
||||
* The entire dictionary
|
||||
*/
|
||||
struct _xmlDict {
|
||||
int ref_counter;
|
||||
@ -229,7 +229,7 @@ xmlDictCleanup(void) {
|
||||
|
||||
/*
|
||||
* xmlDictAddString:
|
||||
* @dict: the dictionnary
|
||||
* @dict: the dictionary
|
||||
* @name: the name of the userdata
|
||||
* @len: the length of the name
|
||||
*
|
||||
@ -291,7 +291,7 @@ found_pool:
|
||||
|
||||
/*
|
||||
* xmlDictAddQString:
|
||||
* @dict: the dictionnary
|
||||
* @dict: the dictionary
|
||||
* @prefix: the prefix of the userdata
|
||||
* @plen: the prefix length
|
||||
* @name: the name of the userdata
|
||||
@ -486,7 +486,10 @@ xmlDictComputeFastQKey(const xmlChar *prefix, int plen,
|
||||
value += 30 * (*prefix);
|
||||
|
||||
if (len > 10) {
|
||||
value += name[len - (plen + 1 + 1)];
|
||||
int offset = len - (plen + 1 + 1);
|
||||
if (offset < 0)
|
||||
offset = len - (10 + 1);
|
||||
value += name[offset];
|
||||
len = 10;
|
||||
if (plen > 10)
|
||||
plen = 10;
|
||||
@ -530,7 +533,7 @@ xmlDictComputeFastQKey(const xmlChar *prefix, int plen,
|
||||
*
|
||||
* Create a new dictionary
|
||||
*
|
||||
* Returns the newly created dictionnary, or NULL if an error occured.
|
||||
* Returns the newly created dictionary, or NULL if an error occured.
|
||||
*/
|
||||
xmlDictPtr
|
||||
xmlDictCreate(void) {
|
||||
@ -570,14 +573,14 @@ xmlDictCreate(void) {
|
||||
|
||||
/**
|
||||
* xmlDictCreateSub:
|
||||
* @sub: an existing dictionnary
|
||||
* @sub: an existing dictionary
|
||||
*
|
||||
* Create a new dictionary, inheriting strings from the read-only
|
||||
* dictionnary @sub. On lookup, strings are first searched in the
|
||||
* new dictionnary, then in @sub, and if not found are created in the
|
||||
* new dictionnary.
|
||||
* dictionary @sub. On lookup, strings are first searched in the
|
||||
* new dictionary, then in @sub, and if not found are created in the
|
||||
* new dictionary.
|
||||
*
|
||||
* Returns the newly created dictionnary, or NULL if an error occured.
|
||||
* Returns the newly created dictionary, or NULL if an error occured.
|
||||
*/
|
||||
xmlDictPtr
|
||||
xmlDictCreateSub(xmlDictPtr sub) {
|
||||
@ -596,7 +599,7 @@ xmlDictCreateSub(xmlDictPtr sub) {
|
||||
|
||||
/**
|
||||
* xmlDictReference:
|
||||
* @dict: the dictionnary
|
||||
* @dict: the dictionary
|
||||
*
|
||||
* Increment the reference counter of a dictionary
|
||||
*
|
||||
@ -617,10 +620,10 @@ xmlDictReference(xmlDictPtr dict) {
|
||||
|
||||
/**
|
||||
* xmlDictGrow:
|
||||
* @dict: the dictionnary
|
||||
* @size: the new size of the dictionnary
|
||||
* @dict: the dictionary
|
||||
* @size: the new size of the dictionary
|
||||
*
|
||||
* resize the dictionnary
|
||||
* resize the dictionary
|
||||
*
|
||||
* Returns 0 in case of success, -1 in case of failure
|
||||
*/
|
||||
@ -752,7 +755,7 @@ xmlDictGrow(xmlDictPtr dict, size_t size) {
|
||||
|
||||
/**
|
||||
* xmlDictFree:
|
||||
* @dict: the dictionnary
|
||||
* @dict: the dictionary
|
||||
*
|
||||
* Free the hash @dict and its contents. The userdata is
|
||||
* deallocated with @f if provided.
|
||||
@ -814,11 +817,11 @@ xmlDictFree(xmlDictPtr dict) {
|
||||
|
||||
/**
|
||||
* xmlDictLookup:
|
||||
* @dict: the dictionnary
|
||||
* @dict: the dictionary
|
||||
* @name: the name of the userdata
|
||||
* @len: the length of the name, if -1 it is recomputed
|
||||
*
|
||||
* Add the @name to the dictionnary @dict if not present.
|
||||
* Add the @name to the dictionary @dict if not present.
|
||||
*
|
||||
* Returns the internal copy of the name or NULL in case of internal error
|
||||
*/
|
||||
@ -954,11 +957,11 @@ xmlDictLookup(xmlDictPtr dict, const xmlChar *name, int len) {
|
||||
|
||||
/**
|
||||
* xmlDictExists:
|
||||
* @dict: the dictionnary
|
||||
* @dict: the dictionary
|
||||
* @name: the name of the userdata
|
||||
* @len: the length of the name, if -1 it is recomputed
|
||||
*
|
||||
* Check if the @name exists in the dictionnary @dict.
|
||||
* Check if the @name exists in the dictionary @dict.
|
||||
*
|
||||
* Returns the internal copy of the name or NULL if not found.
|
||||
*/
|
||||
@ -1062,7 +1065,7 @@ xmlDictExists(xmlDictPtr dict, const xmlChar *name, int len) {
|
||||
|
||||
/**
|
||||
* xmlDictQLookup:
|
||||
* @dict: the dictionnary
|
||||
* @dict: the dictionary
|
||||
* @prefix: the prefix
|
||||
* @name: the name
|
||||
*
|
||||
@ -1167,7 +1170,7 @@ xmlDictQLookup(xmlDictPtr dict, const xmlChar *prefix, const xmlChar *name) {
|
||||
|
||||
/**
|
||||
* xmlDictOwns:
|
||||
* @dict: the dictionnary
|
||||
* @dict: the dictionary
|
||||
* @str: the string
|
||||
*
|
||||
* check if a string is owned by the disctionary
|
||||
@ -1194,11 +1197,11 @@ xmlDictOwns(xmlDictPtr dict, const xmlChar *str) {
|
||||
|
||||
/**
|
||||
* xmlDictSize:
|
||||
* @dict: the dictionnary
|
||||
* @dict: the dictionary
|
||||
*
|
||||
* Query the number of elements installed in the hash @dict.
|
||||
*
|
||||
* Returns the number of elements in the dictionnary or
|
||||
* Returns the number of elements in the dictionary or
|
||||
* -1 in case of error
|
||||
*/
|
||||
int
|
||||
@ -1212,7 +1215,7 @@ xmlDictSize(xmlDictPtr dict) {
|
||||
|
||||
/**
|
||||
* xmlDictSetLimit:
|
||||
* @dict: the dictionnary
|
||||
* @dict: the dictionary
|
||||
* @limit: the limit in bytes
|
||||
*
|
||||
* Set a size limit for the dictionary
|
||||
@ -1233,7 +1236,7 @@ xmlDictSetLimit(xmlDictPtr dict, size_t limit) {
|
||||
|
||||
/**
|
||||
* xmlDictGetUsage:
|
||||
* @dict: the dictionnary
|
||||
* @dict: the dictionary
|
||||
*
|
||||
* Get how much memory is used by a dictionary for strings
|
||||
* Added in 2.9.0
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user