#include "OleConverter.h" #include "../../../DesktopEditor/common/File.h" #include "../../../DesktopEditor/common/Directory.h" #include "../../../DesktopEditor/common/StringBuilder.h" #include "../OLEdoc/CompoundFile.h" #include "../Chart/ChartReader.h" namespace HWP { COleConverter::COleConverter() : m_unCountCharts(0) {} void COleConverter::Clear() { m_unCountCharts = 0; m_wsTempDir.clear(); } unsigned int COleConverter::GetChartsCount() const { return m_unCountCharts; } void COleConverter::SetTempDir(const std::wstring& wsTempDir) { m_wsTempDir = wsTempDir; } void COleConverter::CreateChartData(CHWPStream& oOOXMLStream) { const std::wstring wsPath = m_wsTempDir + FILE_SEPARATOR_STR + L"word" + FILE_SEPARATOR_STR + L"charts" + FILE_SEPARATOR_STR; NSFile::CFileBinary oChartFile; oChartFile.CreateFileW(wsPath + L"chart" + std::to_wstring(m_unCountCharts) + L".xml"); oChartFile.WriteFile(oOOXMLStream.GetCurPtr(), oOOXMLStream.SizeToEnd()); oChartFile.CloseFile(); NSStringUtils::CStringBuilder oColorData; oColorData.WriteString(L""); oColorData.WriteString(L""); oColorData.WriteString(L""); oColorData.WriteString(L""); oColorData.WriteString(L""); oColorData.WriteString(L""); oColorData.WriteString(L""); NSFile::CFileBinary oColorFile; oColorFile.CreateFileW(wsPath + L"colors" + std::to_wstring(m_unCountCharts) + L".xml"); oColorFile.WriteStringUTF8(oColorData.GetData()); oColorFile.CloseFile(); NSStringUtils::CStringBuilder oStyleData; oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); oStyleData.WriteString(L""); NSFile::CFileBinary oStyleFile; oStyleFile.CreateFileW(wsPath + L"style" + std::to_wstring(m_unCountCharts) + L".xml"); oStyleFile.WriteStringUTF8(oStyleData.GetData()); oStyleFile.CloseFile(); } void COleConverter::CreateChart(CHWPStream& oOleStream) { oOleStream.Skip(4); CCompoundFile oCompoundFile(oOleStream); if (!oCompoundFile.Open()) return; CHWPStream oContentData; if (!oCompoundFile.GetComponent(L"OOXMLChartContents", oContentData) || true) { if (!oCompoundFile.GetComponent(L"Contents", oContentData)) return; CHART::CChartReader oChartReader; if (!oChartReader.ReadFromOle(oContentData)) return; } const std::wstring wsPath = m_wsTempDir + FILE_SEPARATOR_STR + L"word" + FILE_SEPARATOR_STR + L"charts"; if (!NSDirectory::Exists(wsPath)) NSDirectory::CreateDirectory(wsPath); ++m_unCountCharts; CreateChartData(oContentData); const std::wstring wsRelsPath = wsPath + FILE_SEPARATOR_STR + L"_rels"; if (!NSDirectory::Exists(wsRelsPath)) NSDirectory::CreateDirectory(wsRelsPath); NSStringUtils::CStringBuilder oRelsData; oRelsData.WriteString(L""); oRelsData.WriteString(L""); oRelsData.WriteString(L""); oRelsData.WriteString(L""); oRelsData.WriteString(L""); NSFile::CFileBinary oRelsFile; oRelsFile.CreateFileW(wsRelsPath + FILE_SEPARATOR_STR + L"chart" + std::to_wstring(m_unCountCharts) + L".xml.rels"); oRelsFile.WriteStringUTF8(oRelsData.GetData()); oRelsFile.CloseFile(); } }