#include "OleConverter.h" #include "../../../DesktopEditor/common/File.h" #include "../../../DesktopEditor/common/Directory.h" #include "../../../DesktopEditor/common/StringBuilder.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(const std::wstring& wsChartData) { 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.WriteStringUTF8(wsChartData); 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) { std::string sData = std::string(oOleStream.GetCurPtr(), oOleStream.GetSize()); size_t unBegin = sData.find("", unBegin); if (std::string::npos == unEnd) return; const std::string sCharDataA = sData.substr(unBegin, unEnd - unBegin + 15); const std::wstring wsChartData = UTF8_TO_U(sCharDataA); 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(wsChartData); 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(); } }