Compare commits

..

83 Commits

Author SHA1 Message Date
32d3c0e65c . 2017-04-30 18:19:52 +03:00
33aeef2c02 OdfFormat - spreadsheets - support page cover 2017-04-30 15:55:49 +03:00
7c97941acc . 2017-04-29 16:26:46 +03:00
01a4cd2289 OdfFormatWriter - fix errors after testing 2017-04-29 15:14:03 +03:00
202b58fb10 OdfFormatWriter - fix after testing 2017-04-28 20:02:56 +03:00
b221150797 return AVS_FILEUTILS_ERROR_CONVERT_CORRUPTED in case of error in appling changes 2017-04-28 18:15:46 +03:00
2084587e9a remove res 2017-04-28 16:18:10 +03:00
8332c28ac2 Merge tag 'v4.3.3' into develop
v4.3.3 v4.3.3
2017-04-28 12:44:13 +03:00
435a11d75c . 2017-04-27 19:57:49 +03:00
9a5329f5d6 . 2017-04-27 16:12:28 +03:00
8eecbf5fa5 . 2017-04-27 16:08:38 +03:00
9e1773df65 Used ClrMap in docx settings 2017-04-27 15:57:44 +03:00
39e4140524 for save pivot 2017-04-27 15:46:06 +03:00
bd90de857e Merge branch 'develop' of https://github.com/ONLYOFFICE/core into develop 2017-04-27 13:51:47 +03:00
57f2ec7b96 graphicFrameLocks 2017-04-27 13:38:40 +03:00
634098a6fa fix reading xml attributes without namespace 2017-04-27 13:24:46 +03:00
bdbf208f6c open/save Sdt 2017-04-27 12:47:39 +03:00
a652f5d73f OdfFormatWriter - fix smart-art 2017-04-26 20:10:04 +03:00
1602843aa6 fix color alpha 2017-04-26 12:58:51 +03:00
cdb7fb8ea6 Merge branch 'develop' of https://github.com/ONLYOFFICE/core into develop
* 'develop' of https://github.com/ONLYOFFICE/core:
  pivotButton; AddNoWrite defDir
  OdfFormat - fix after testing
  save pivotTables to xlsx
  windows sign (worked version)
  .
2017-04-26 12:46:48 +03:00
6387e9fa69 fix build converter ios 2017-04-26 12:46:41 +03:00
4e8097c93d pivotButton; AddNoWrite defDir 2017-04-26 11:10:58 +03:00
65254b57b2 Merge branch 'develop' of https://github.com/ONLYOFFICE/core into develop 2017-04-25 19:31:42 +03:00
95899e23a8 OdfFormat - fix after testing 2017-04-25 19:30:40 +03:00
5c8757d346 save pivotTables to xlsx 2017-04-25 19:25:45 +03:00
234e19d68a Merge branch 'develop' of https://github.com/ONLYOFFICE/core into develop 2017-04-25 16:06:04 +03:00
62145b7204 windows sign (worked version) 2017-04-25 15:22:19 +03:00
8bcc6d1501 . 2017-04-25 15:05:58 +03:00
09ef46f333 fix bug #34836 2017-04-25 11:33:31 +03:00
1839350526 . 2017-04-24 19:57:38 +03:00
d7587e91b1 windows sign 2017-04-24 18:57:37 +03:00
7b0a342cf9 . 2017-04-24 17:49:47 +03:00
3d01b0782e . 2017-04-24 15:30:57 +03:00
fecfcfa7d2 . 2017-04-24 14:32:57 +03:00
29b5fa513a . 2017-04-24 13:26:50 +03:00
f9a19badbf DocFormatReader - fix embedded docx formula 2017-04-24 13:20:23 +03:00
d2630ea73c toXml - writer instead string; refreshedDate 2017-04-24 10:54:56 +03:00
a4a58c4782 x2t version up 2017-04-24 10:33:47 +03:00
29a3d80071 . 2017-04-23 16:36:12 +03:00
598bb419c0 OdfFormatWriter - presentation - fields 2017-04-23 16:31:00 +03:00
087da9d2ce . 2017-04-23 14:21:07 +03:00
c505aced48 . 2017-04-22 18:34:10 +03:00
959d5e5fcd OdfFormatWriter - presentation - fix multi-level list, master list styles 2017-04-22 13:05:10 +03:00
8ee0cf4b2c . 2017-04-21 19:26:01 +03:00
426342074e . 2017-04-21 19:08:59 +03:00
d2c092fe62 pivot 2017-04-21 15:05:23 +03:00
a336917338 OdfFormatWriter - image bullet presentation list style 2017-04-21 14:12:50 +03:00
8925ddeee5 big integer from buffer bug 2017-04-21 10:24:17 +03:00
84824631b2 OdfFormatWriter - presentation styled list 2017-04-20 19:55:18 +03:00
dc3ecb1fc0 BigInteger as string realization 2017-04-20 18:13:10 +03:00
266cef8c49 tests windows 2017-04-20 14:10:38 +03:00
a5e821cd21 . 2017-04-19 20:06:58 +03:00
cb5d92334e OdfFormatWriter - presentation ... 2017-04-18 16:40:03 +03:00
f6dbc6b9f0 fix bug #34762 2017-04-17 22:16:47 +03:00
c2c6430495 . 2017-04-17 18:55:02 +03:00
9ecf5b7834 Merge pull request #23 from ONLYOFFICE/hotfix/v4.3.2
Hotfix/v4.3.2
2017-04-17 17:12:30 +03:00
1d003863dd . 2017-04-17 17:10:12 +03:00
774561bd00 Merge branch 'develop' into hotfix/v4.3.2 2017-04-17 16:56:05 +03:00
d356a305b9 tests (mscrypto) 2017-04-17 16:45:35 +03:00
95c472c15c Merge branch 'hotfix/v4.3.2' 2017-04-17 14:59:08 +03:00
2dbec241f7 OdfFormatWriter - presentation comments 2017-04-17 14:06:14 +03:00
f3c66cab50 OdfFormatWriter 2017-04-17 09:56:12 +03:00
11e6fc3e06 . 2017-04-14 19:13:53 +03:00
cdf8c0a11b update libxml (for sec) 2017-04-14 19:03:02 +03:00
ae29cebe35 . 2017-04-14 15:26:29 +03:00
e933a1fb42 fix bug #34766 2017-04-14 13:12:50 +03:00
5a3f98c502 open notesMasters rels 2017-04-13 19:40:20 +03:00
8677540a82 . 2017-04-13 16:39:33 +03:00
f4ceac5b2b . 2017-04-13 16:23:43 +03:00
61be4ea100 . 2017-04-13 15:37:04 +03:00
51c6ce2ba2 . 2017-04-13 14:43:14 +03:00
e13bc44198 Merge branch 'develop' of https://github.com/ONLYOFFICE/core into develop 2017-04-13 12:45:51 +03:00
56cefcb1be fix bug #34761 2017-04-13 12:45:11 +03:00
6f860c17e3 . 2017-04-13 11:45:29 +03:00
fb9edc4f81 . 2017-04-13 11:34:14 +03:00
4eb0a73f3c PptxFormat - delete unused
OdfFormatWriter - extended text styles
2017-04-13 11:31:20 +03:00
7929d798c8 open presentation notes 2017-04-12 19:40:09 +03:00
4c3d8ca059 . 2017-04-12 19:14:12 +03:00
ad74a8ea6b fix bug #34747 2017-04-11 17:11:56 +03:00
f50dda7c31 fix bug #34736 2017-04-11 15:28:51 +03:00
f78a805fa3 . 2017-04-11 13:17:58 +03:00
51c77c3a85 Fixed downloading icu binaries from sourceforge 2017-04-05 19:59:56 +03:00
4326a7d258 fix bug 34695 2017-04-05 19:48:02 +03:00
456 changed files with 16284 additions and 9689 deletions

View File

@ -136,14 +136,18 @@ namespace DocFileFormat
}
return btWin32;
}
bool ParseEmbeddedEquation( const std::string & xmlString, std::wstring & newXmlString)
bool VMLPictureMapping::ParseEmbeddedEquation( const std::string & xmlString, std::wstring & newXmlString)
{
newXmlString.clear();
std::wstring sTempXmlFile = NSDirectory::CreateTempFileWithUniqueName(
NSDirectory::GetTempPath(), L"emb");
sTempXmlFile += L".xml";
std::wstring sTempFolder = m_ctx->_doc->m_sTempFolder;
if (sTempFolder.empty())
{
sTempFolder = NSFile::CFileBinary::GetTempPath();
}
std::wstring sTempXmlFile = NSDirectory::CreateTempFileWithUniqueName(sTempFolder, L"emb");
NSFile::CFileBinary file;
file.CreateFileW(sTempXmlFile);
file.WriteFile((BYTE*)xmlString.c_str(), xmlString.size());
@ -186,6 +190,7 @@ namespace DocFileFormat
if (res) break;
}
}
NSFile::CFileBinary::Remove(sTempXmlFile);
return res;
}
//---------------------------------------------------------------
@ -297,8 +302,13 @@ namespace DocFileFormat
case metroBlob:
{
//встроенная неведомая хуйня
m_isEmbedded = true;
m_embeddedData = std::string((char*)iter->opComplex, iter->op);
m_isEmbedded = true;
m_embeddedData = std::string((char*)iter->opComplex, iter->op);
//if (ParseEmbeddedBlob( m_embeddedData, m_blobXml)) // todoooo
//{
// m_isEmbedded = false;
//}
}break;
//BORDERS
case borderBottomColor:

View File

@ -46,7 +46,6 @@ namespace DocFileFormat
{
class OleObject;
bool ParseEmbeddedEquation( const std::string & xmlString, std::wstring & newXmlString );
class VMLPictureMapping: public PropertiesMapping, public IMapping
{
@ -58,6 +57,7 @@ namespace DocFileFormat
/// Writes a border element
void writePictureBorder (const std::wstring & name, const BorderCode* brc);
void appendStyleProperty( std::wstring* b, const std::wstring& propName, const std::wstring& propValue ) const;
bool ParseEmbeddedEquation( const std::string & xmlString, std::wstring & newXmlString );
protected:
/// Copies the picture from the binary stream to the zip archive
/// and creates the relationships for the image.

View File

@ -86,6 +86,7 @@ namespace DocFileFormat
friend class Table;
friend class TableRow;
friend class VMLShapeMapping;
friend class VMLPictureMapping;
friend class OpenXmlPackage;
friend class TextboxMapping;

View File

@ -45,13 +45,13 @@ namespace Writers
int index;
};
std::vector<_chartElem> m_aCharts;
int nChartCount;
public:
std::wstring m_sDir;
int nEmbeddedCount;
ChartWriter(std::wstring sDir) : m_sDir(sDir)
{
nChartCount = 0;
nEmbeddedCount = 1000;
}
~ChartWriter()
{
@ -80,30 +80,20 @@ namespace Writers
}
return true;
}
void AddChart(std::wstring& content, std::wstring& sRelsName, std::wstring& sFileName, int& index)
void AddChart(std::wstring& content, std::wstring& sRelsName, std::wstring& sFileName, int index)
{
_chartElem oChartElem;
oChartElem.content = content;
oChartElem.index = nChartCount + 1;
nChartCount++;
oChartElem.index = index;
oChartElem.filename = L"chart" + std::to_wstring(oChartElem.index) + L".xml";
sRelsName = L"charts/" + oChartElem.filename;
sFileName = oChartElem.filename;
index = oChartElem.index;
m_aCharts.push_back(oChartElem);
}
int getChartCount()
{
return nChartCount;
}
void setChartCount(int val)
{
nChartCount = val;
}
};
}
#endif // #ifndef CHART_WRITER

View File

@ -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>")));

View File

@ -61,6 +61,26 @@ enum ETblStyleOverrideType
tblstyleoverridetypeSwCell = 11,
tblstyleoverridetypeWholeTable = 12
};
class SdtWraper
{
public:
OOX::Logic::CSdt m_oSdt;
rPr* m_oEndPr;
rPr* m_oRPr;
int m_nType;
SdtWraper(int nType)
{
m_nType = nType;
m_oEndPr = NULL;
m_oRPr = NULL;
}
~SdtWraper()
{
RELEASEOBJECT(m_oEndPr)
RELEASEOBJECT(m_oRPr)
}
};
#define READ1_DEF(stLen, fReadFunction, arg, res) {\
res = c_oSerConstants::ReadOk;\
@ -3635,6 +3655,11 @@ public:
//сбрасываем Shd
oBinary_tblPrReader.m_sCurTableShd.clear();
}
else if(c_oSerParType::Sdt == type)
{
SdtWraper oSdt(0);
res = Read1(length, &Binary_DocumentTableReader::ReadSdt, this, &oSdt);
}
else if ( c_oSerParType::sectPr == type )
{
SectPr oSectPr;
@ -3746,6 +3771,11 @@ public:
res = Read1(length, &Binary_DocumentTableReader::ReadDelIns, this, &oTrackRevision);
oTrackRevision.Write(&GetRunStringWriter(), _T("w:del"));
}
else if(c_oSerParType::Sdt == type)
{
SdtWraper oSdt(1);
res = Read1(length, &Binary_DocumentTableReader::ReadSdt, this, &oSdt);
}
else
res = c_oSerConstants::ReadUnknown;
return res;
@ -6292,15 +6322,11 @@ public:
std::wstring sDrawingProperty = oCDrawingProperty.Write();
if(false == sDrawingProperty.empty())
{
m_oFileWriter.m_pDrawingConverter->SetDocumentChartsCount(m_oFileWriter.m_oChartWriter.getChartCount());
long nCurPos = m_oBufferedStream.GetPos();
std::wstring sDrawingXml;
m_oFileWriter.m_pDrawingConverter->SaveObjectEx(oCDrawingProperty.DataPos, oCDrawingProperty.DataLength, sDrawingProperty, XMLWRITER_DOC_TYPE_DOCX, sDrawingXml);
m_oBufferedStream.Seek(nCurPos);
m_oFileWriter.m_oChartWriter.setChartCount(m_oFileWriter.m_pDrawingConverter->GetDocumentChartsCount());
if( false == sDrawingXml.empty())
{
GetRunStringWriter().WriteString(sDrawingXml);
@ -6416,6 +6442,11 @@ public:
res = Read1(length, &Binary_DocumentTableReader::Read_Row, this, poResult);
pCStringWriter->WriteString(std::wstring(_T("</w:tr>")));
}
else if(c_oSerDocTableType::Sdt == type)
{
SdtWraper oSdt(2);
res = Read1(length, &Binary_DocumentTableReader::ReadSdt, this, &oSdt);
}
else
res = c_oSerConstants::ReadUnknown;
return res;
@ -6448,6 +6479,11 @@ public:
res = Read1(length, &Binary_DocumentTableReader::ReadCell, this, poResult);
pCStringWriter->WriteString(std::wstring(_T("</w:tc>")));
}
else if(c_oSerDocTableType::Sdt == type)
{
SdtWraper oSdt(3);
res = Read1(length, &Binary_DocumentTableReader::ReadSdt, this, &oSdt);
}
else
res = c_oSerConstants::ReadUnknown;
return res;
@ -6606,8 +6642,11 @@ public:
OOX::Spreadsheet::CChartSpace* pChartSpace = new OOX::Spreadsheet::CChartSpace();
oBinaryChartReader.ReadCT_ChartSpace(length, &pChartSpace->m_oChartSpace);
//save xlsx
std::wstring sXlsxFilename = L"Microsoft_Excel_Worksheet" + std::to_wstring(m_oFileWriter.m_oChartWriter.getChartCount() + 1) + L".xlsx";
//save xlsx
_INT32 nChartCount = m_oFileWriter.m_pDrawingConverter->GetDocumentChartsCount();
_INT32 nChartIndex = nChartCount + 1;
m_oFileWriter.m_pDrawingConverter->SetDocumentChartsCount(nChartCount + 1);
std::wstring sXlsxFilename = L"Microsoft_Excel_Worksheet" + std::to_wstring(nChartIndex) + L".xlsx";
std::wstring sXlsxPath = pathChartsWorksheetDir.GetPath() + FILE_SEPARATOR_STR + sXlsxFilename;
BinXlsxRW::CXlsxSerializer oXlsxSerializer;
oXlsxSerializer.writeChartXlsx(sXlsxPath, *pChartSpace);
@ -6615,8 +6654,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");
@ -6630,7 +6671,6 @@ public:
std::wstring sFilename;
std::wstring sRelsName;
int nChartIndex;
std::wstring sContent = sw.GetData();
m_oFileWriter.m_oChartWriter.AddChart(sContent, sRelsName, sFilename, nChartIndex);
@ -6824,8 +6864,7 @@ public:
std::wstring strDstEmbeddedTemp = strDstEmbedded + FILE_SEPARATOR_STR + L"Temp";
NSDirectory::CreateDirectory(strDstEmbeddedTemp);
int id = m_oFileWriter.m_oChartWriter.getChartCount();
m_oFileWriter.m_oChartWriter.setChartCount(id + 1);
int id = m_oFileWriter.m_oChartWriter.nEmbeddedCount++;
std::wstring sXlsxFilename = L"Microsoft_Excel_Worksheet" + std::to_wstring( id + 1) + L".xlsx";
BinXlsxRW::SaveParams oSaveParams(m_oFileWriter.m_sThemePath, m_oFileWriter.m_pDrawingConverter->GetContentTypes());//???
@ -7148,6 +7187,309 @@ public:
{
return oBinary_pPrReader.Read_SecPr(type, length, poResult);
}
int ReadSdt(BYTE type, long length, void* poResult)
{
int res = 0;
SdtWraper* pSdt = static_cast<SdtWraper*>(poResult);
if (c_oSerSdt::Pr == type)
{
pSdt->m_oSdt.m_oSdtPr.Init();
res = Read1(length, &Binary_DocumentTableReader::ReadSdtPr, this, pSdt);
}
else if (c_oSerSdt::EndPr == type)
{
pSdt->m_oEndPr = new rPr(m_oFontTableWriter.m_mapFonts);
res = oBinary_rPrReader.Read(length, pSdt->m_oEndPr);
}
else if (c_oSerSdt::Content == type)
{
m_oDocumentWriter.m_oContent.WriteString(L"<w:sdt>");
if ( pSdt->m_oSdt.m_oSdtPr.IsInit() )
{
m_oDocumentWriter.m_oContent.WriteString(pSdt->m_oSdt.m_oSdtPr->toXMLStart());
if (NULL != pSdt->m_oRPr)
{
pSdt->m_oRPr->Write(&m_oDocumentWriter.m_oContent);
}
m_oDocumentWriter.m_oContent.WriteString(pSdt->m_oSdt.m_oSdtPr->toXMLEnd());
}
if (NULL != pSdt->m_oEndPr)
{
m_oDocumentWriter.m_oContent.WriteString(L"<w:sdtEndPr>");
pSdt->m_oEndPr->Write(&m_oDocumentWriter.m_oContent);
m_oDocumentWriter.m_oContent.WriteString(L"</w:sdtEndPr>");
}
m_oDocumentWriter.m_oContent.WriteString(L"<w:sdtContent>");
switch(pSdt->m_nType)
{
case 0:
res = Read1(length, &Binary_DocumentTableReader::ReadDocumentContent, this, this);
break;
case 1:
res = Read1(length, &Binary_DocumentTableReader::ReadParagraphContent, this, this);
break;
case 2:
res = Read1(length, &Binary_DocumentTableReader::Read_TableContent, this, &m_oDocumentWriter.m_oContent);
break;
case 3:
res = Read1(length, &Binary_DocumentTableReader::ReadRowContent, this, &m_oDocumentWriter.m_oContent);
break;
}
m_oDocumentWriter.m_oContent.WriteString(L"</w:sdtContent>");
m_oDocumentWriter.m_oContent.WriteString(L"</w:sdt>");
}
else
res = c_oSerConstants::ReadUnknown;
return res;
}
int ReadSdtPr(BYTE type, long length, void* poResult)
{
int res = 0;
SdtWraper* pSdtWraper = static_cast<SdtWraper*>(poResult);
OOX::Logic::CSdtPr* pSdtPr = pSdtWraper->m_oSdt.m_oSdtPr.GetPointer();
if (c_oSerSdt::Type == type)
{
pSdtPr->m_eType = (OOX::Logic::ESdtType)m_oBufferedStream.GetUChar();
}
else if (c_oSerSdt::Alias == type)
{
pSdtPr->m_oAlias.Init();
pSdtPr->m_oAlias->m_sVal.Init();
pSdtPr->m_oAlias->m_sVal->append(m_oBufferedStream.GetString3(length));
}
else if (c_oSerSdt::ComboBox == type)
{
pSdtPr->m_oComboBox.Init();
res = Read1(length, &Binary_DocumentTableReader::ReadSdtComboBox, this, pSdtPr->m_oComboBox.GetPointer());
}
else if (c_oSerSdt::DataBinding == type)
{
pSdtPr->m_oDataBinding.Init();
res = Read1(length, &Binary_DocumentTableReader::ReadSdtPrDataBinding, this, pSdtPr->m_oDataBinding.GetPointer());
}
else if (c_oSerSdt::PrDate == type)
{
pSdtPr->m_oDate.Init();
res = Read1(length, &Binary_DocumentTableReader::ReadSdtPrDate, this, pSdtPr->m_oDate.GetPointer());
}
else if (c_oSerSdt::DocPartList == type)
{
pSdtPr->m_oDocPartList.Init();
res = Read1(length, &Binary_DocumentTableReader::ReadDocPartList, this, pSdtPr->m_oDocPartList.GetPointer());
}
else if (c_oSerSdt::DocPartObj == type)
{
pSdtPr->m_oDocPartObj.Init();
res = Read1(length, &Binary_DocumentTableReader::ReadDocPartList, this, pSdtPr->m_oDocPartObj.GetPointer());
}
else if (c_oSerSdt::DropDownList == type)
{
pSdtPr->m_oDropDownList.Init();
res = Read1(length, &Binary_DocumentTableReader::ReadDropDownList, this, pSdtPr->m_oDropDownList.GetPointer());
}
else if (c_oSerSdt::Id == type)
{
pSdtPr->m_oId.Init();
pSdtPr->m_oId->m_oVal.Init();
pSdtPr->m_oId->m_oVal->SetValue(m_oBufferedStream.GetULong());
}
else if (c_oSerSdt::Label == type)
{
pSdtPr->m_oLabel.Init();
pSdtPr->m_oLabel->m_oVal.Init();
pSdtPr->m_oLabel->m_oVal->SetValue(m_oBufferedStream.GetULong());
}
else if (c_oSerSdt::Lock == type)
{
pSdtPr->m_oLock.Init();
pSdtPr->m_oLock->m_oVal.SetValue((SimpleTypes::ELock)m_oBufferedStream.GetUChar());
}
else if (c_oSerSdt::PlaceHolder == type)
{
pSdtPr->m_oPlaceHolder.Init();
pSdtPr->m_oPlaceHolder->m_oDocPart.Init();
pSdtPr->m_oPlaceHolder->m_oDocPart->m_sVal.Init();
pSdtPr->m_oPlaceHolder->m_oDocPart->m_sVal->append(m_oBufferedStream.GetString3(length));
}
else if (c_oSerSdt::RPr == type)
{
pSdtWraper->m_oRPr = new rPr(m_oFontTableWriter.m_mapFonts);
res = oBinary_rPrReader.Read(length, pSdtWraper->m_oRPr);
}
else if (c_oSerSdt::ShowingPlcHdr == type)
{
pSdtPr->m_oShowingPlcHdr.Init();
pSdtPr->m_oShowingPlcHdr->m_oVal.FromBool(m_oBufferedStream.GetBool());
}
else if (c_oSerSdt::TabIndex == type)
{
pSdtPr->m_oTabIndex.Init();
pSdtPr->m_oTabIndex->m_oVal.Init();
pSdtPr->m_oTabIndex->m_oVal->SetValue(m_oBufferedStream.GetULong());
}
else if (c_oSerSdt::Tag == type)
{
pSdtPr->m_oTag.Init();
pSdtPr->m_oTag->m_sVal.Init();
pSdtPr->m_oTag->m_sVal->append(m_oBufferedStream.GetString3(length));
}
else if (c_oSerSdt::Temporary == type)
{
pSdtPr->m_oTemporary.Init();
pSdtPr->m_oTemporary->m_oVal.FromBool(m_oBufferedStream.GetBool());
}
else if (c_oSerSdt::MultiLine == type)
{
pSdtPr->m_oText.Init();
pSdtPr->m_oText->m_oMultiLine.Init();
pSdtPr->m_oText->m_oMultiLine->FromBool(m_oBufferedStream.GetBool());
}
else
res = c_oSerConstants::ReadUnknown;
return res;
}
int ReadSdtComboBox(BYTE type, long length, void* poResult)
{
int res = 0;
OOX::Logic::CSdtComboBox* pSdtComboBox = static_cast<OOX::Logic::CSdtComboBox*>(poResult);
if (c_oSerSdt::LastValue == type)
{
pSdtComboBox->m_sLastValue.Init();
pSdtComboBox->m_sLastValue->append(m_oBufferedStream.GetString3(length));
}
else if (c_oSerSdt::SdtListItem == type)
{
ComplexTypes::Word::CSdtListItem* pSdtListItem = new ComplexTypes::Word::CSdtListItem();
res = Read1(length, &Binary_DocumentTableReader::ReadSdtListItem, this, pSdtListItem);
pSdtComboBox->m_arrListItem.push_back(pSdtListItem); }
else
res = c_oSerConstants::ReadUnknown;
return res;
}
int ReadSdtListItem(BYTE type, long length, void* poResult)
{
int res = 0;
ComplexTypes::Word::CSdtListItem* pSdtListItem = static_cast<ComplexTypes::Word::CSdtListItem*>(poResult);
if (c_oSerSdt::DisplayText == type)
{
pSdtListItem->m_sDisplayText.Init();
pSdtListItem->m_sDisplayText->append(m_oBufferedStream.GetString3(length));
}
else if (c_oSerSdt::Value == type)
{
pSdtListItem->m_sValue.Init();
pSdtListItem->m_sValue->append(m_oBufferedStream.GetString3(length));
}
else
res = c_oSerConstants::ReadUnknown;
return res;
}
int ReadSdtPrDataBinding(BYTE type, long length, void* poResult)
{
int res = 0;
ComplexTypes::Word::CDataBinding* pDataBinding = static_cast<ComplexTypes::Word::CDataBinding*>(poResult);
if (c_oSerSdt::PrefixMappings == type)
{
pDataBinding->m_sPrefixMappings.Init();
pDataBinding->m_sPrefixMappings->append(m_oBufferedStream.GetString3(length));
}
else if (c_oSerSdt::StoreItemID == type)
{
pDataBinding->m_sStoreItemID.Init();
pDataBinding->m_sStoreItemID->append(m_oBufferedStream.GetString3(length));
}
else if (c_oSerSdt::XPath == type)
{
pDataBinding->m_sXPath.Init();
pDataBinding->m_sXPath->append(m_oBufferedStream.GetString3(length));
}
else
res = c_oSerConstants::ReadUnknown;
return res;
}
int ReadSdtPrDate(BYTE type, long length, void* poResult)
{
int res = 0;
OOX::Logic::CDate* pDate = static_cast<OOX::Logic::CDate*>(poResult);
if (c_oSerSdt::FullDate == type)
{
std::wstring sVal = m_oBufferedStream.GetString3(length);
pDate->m_oFullDate.Init();
pDate->m_oFullDate->SetValue(sVal);
}
else if (c_oSerSdt::Calendar == type)
{
pDate->m_oCalendar.Init();
pDate->m_oCalendar->m_oVal.SetValue((SimpleTypes::ECalendarType)m_oBufferedStream.GetUChar());
}
else if (c_oSerSdt::DateFormat == type)
{
pDate->m_oDateFormat.Init();
pDate->m_oDateFormat->m_sVal.Init();
pDate->m_oDateFormat->m_sVal->append(m_oBufferedStream.GetString3(length));
}
else if (c_oSerSdt::Lid == type)
{
pDate->m_oLid.Init();
pDate->m_oLid->m_oVal.Init();
std::wstring sVal = m_oBufferedStream.GetString3(length);
pDate->m_oLid->m_oVal->SetValue(sVal);
}
else if (c_oSerSdt::StoreMappedDataAs == type)
{
pDate->m_oStoreMappedDateAs.Init();
pDate->m_oStoreMappedDateAs->m_oVal.SetValue((SimpleTypes::ESdtDateMappingType)m_oBufferedStream.GetUChar());
}
else
res = c_oSerConstants::ReadUnknown;
return res;
}
int ReadDocPartList(BYTE type, long length, void* poResult)
{
int res = 0;
OOX::Logic::CSdtDocPart* pDocPart = static_cast<OOX::Logic::CSdtDocPart*>(poResult);
if (c_oSerSdt::DocPartCategory == type)
{
pDocPart->m_oDocPartCategory.Init();
pDocPart->m_oDocPartCategory->m_sVal.Init();
pDocPart->m_oDocPartCategory->m_sVal->append(m_oBufferedStream.GetString3(length));
}
else if (c_oSerSdt::DocPartGallery == type)
{
pDocPart->m_oDocPartGallery.Init();
pDocPart->m_oDocPartGallery->m_sVal.Init();
pDocPart->m_oDocPartGallery->m_sVal->append(m_oBufferedStream.GetString3(length));
}
else if (c_oSerSdt::DocPartUnique == type)
{
pDocPart->m_oDocPartUnique.Init();
pDocPart->m_oDocPartUnique->m_oVal.FromBool(m_oBufferedStream.GetBool());
}
else
res = c_oSerConstants::ReadUnknown;
return res;
}
int ReadDropDownList(BYTE type, long length, void* poResult)
{
int res = 0;
OOX::Logic::CSdtDropDownList* pDropDownList = static_cast<OOX::Logic::CSdtDropDownList*>(poResult);
if (c_oSerSdt::LastValue == type)
{
pDropDownList->m_sLastValue.Init();
pDropDownList->m_sLastValue->append(m_oBufferedStream.GetString3(length));
}
else if (c_oSerSdt::SdtListItem == type)
{
ComplexTypes::Word::CSdtListItem* pSdtListItem = new ComplexTypes::Word::CSdtListItem();
res = Read1(length, &Binary_DocumentTableReader::ReadSdtListItem, this, pSdtListItem);
pDropDownList->m_arrListItem.push_back(pSdtListItem);
}
else
res = c_oSerConstants::ReadUnknown;
return res;
}
};
class Binary_NotesTableReader : public Binary_CommonReader<Binary_NotesTableReader>
{

View File

@ -463,7 +463,8 @@ extern int g_nCurFormatVersion;
FldSimple = 11,
Del = 12,
Ins = 13,
Background = 14
Background = 14,
Sdt = 15
};}
namespace c_oSerDocTableType{enum c_oSerDocTableType
{
@ -477,7 +478,8 @@ extern int g_nCurFormatVersion;
Cell = 6,
Cell_Pr = 7,
Cell_Content = 8,
tblGridChange = 9
tblGridChange = 9,
Sdt = 10
};}
namespace c_oSerRunType{enum c_oSerRunType
{
@ -1003,6 +1005,45 @@ extern int g_nCurFormatVersion;
Data = 1,
Program = 2
};}
namespace c_oSerSdt{enum c_oSerSdt
{
Pr = 0,
EndPr = 1,
Content = 2,
Type = 3,
Alias = 4,
ComboBox = 5,
LastValue = 6,
SdtListItem = 7,
DisplayText = 8,
Value = 9,
DataBinding = 10,
PrefixMappings = 11,
StoreItemID = 12,
XPath = 13,
PrDate = 14,
FullDate = 15,
Calendar = 16,
DateFormat = 17,
Lid = 18,
StoreMappedDataAs = 19,
DocPartList = 20,
DocPartObj = 21,
DocPartCategory = 22,
DocPartGallery = 23,
DocPartUnique = 24,
DropDownList = 25,
Id = 26,
Label = 27,
Lock = 28,
PlaceHolder = 29,
RPr = 30,
ShowingPlcHdr = 31,
TabIndex = 32,
Tag = 33,
Temporary = 34,
MultiLine = 35
};}
}
#endif // #ifndef DOCX_BIN_READER_WRITER_DEFINES

View File

@ -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);

View File

@ -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)
{
@ -3045,8 +3047,9 @@ namespace BinDocxRW
case OOX::et_w_sdt:
{
OOX::Logic::CSdt* pStd = static_cast<OOX::Logic::CSdt*>(item);
if(pStd->m_oSdtContent.IsInit())
WriteDocumentContent(pStd->m_oSdtContent.get().m_arrItems);
nCurPos = m_oBcw.WriteItemStart(c_oSerParType::Sdt);
WriteSdt(pStd, 0, NULL, 0, 0, 0);
m_oBcw.WriteItemWithLengthEnd(nCurPos);
}break;
case OOX::et_w_smartTag:
{
@ -3187,8 +3190,9 @@ namespace BinDocxRW
case OOX::et_w_sdt:
{
OOX::Logic::CSdt* pStd = static_cast<OOX::Logic::CSdt*>(item);
if(pStd->m_oSdtContent.IsInit())
WriteParagraphContent(pStd->m_oSdtContent.get().m_arrItems);
nCurPos = m_oBcw.WriteItemStart(c_oSerParType::Sdt);
WriteSdt(pStd, 1, NULL, 0, 0, 0);
m_oBcw.WriteItemWithLengthEnd(nCurPos);
break;
}
case OOX::et_w_smartTag:
@ -5480,21 +5484,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
{
@ -6371,8 +6368,9 @@ namespace BinDocxRW
else if(OOX::et_w_sdt == item->getType())
{
OOX::Logic::CSdt* pStd = static_cast<OOX::Logic::CSdt*>(item);
if(pStd->m_oSdtContent.IsInit())
WriteTableContent(pStd->m_oSdtContent->m_arrItems, pTblPr, nRows, nCols);
nCurPos = m_oBcw.WriteItemStart(c_oSerDocTableType::Sdt);
WriteSdt(pStd, 2, pTblPr, 0, nRows, nCols);
m_oBcw.WriteItemWithLengthEnd(nCurPos);
}
else if(OOX::et_w_smartTag == item->getType())
{
@ -6430,8 +6428,9 @@ namespace BinDocxRW
else if(OOX::et_w_sdt == item->getType())
{
OOX::Logic::CSdt* pStd = static_cast<OOX::Logic::CSdt*>(item);
if(pStd->m_oSdtContent.IsInit())
WriteRowContent(pStd->m_oSdtContent.get().m_arrItems, pTblPr, nCurRowIndex, nRows, nCols);
nCurPos = m_oBcw.WriteItemStart(c_oSerDocTableType::Sdt);
WriteSdt(pStd, 3, pTblPr, nCurRowIndex, nRows, nCols);
m_oBcw.WriteItemWithLengthEnd(nCurPos);
}
else if(OOX::et_w_smartTag == item->getType())
{
@ -6467,6 +6466,287 @@ namespace BinDocxRW
oBinaryDocumentTableWriter.WriteDocumentContent(tc.m_arrItems);
m_oBcw.WriteItemEnd(nCurPos);
}
void WriteSdt(OOX::Logic::CSdt* pStd, int type, OOX::Logic::CTableProperty* pTblPr, int nCurRowIndex, int nRows, int nCols)
{
int nCurPos = 0;
if(pStd->m_oSdtPr.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::Pr);
WriteSdtPr(pStd->m_oSdtPr.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if(pStd->m_oSdtEndPr.IsInit() && pStd->m_oSdtEndPr->m_oRPr.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::EndPr);
brPrs.Write_rPr(pStd->m_oSdtEndPr->m_oRPr.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if(pStd->m_oSdtContent.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::Content);
switch(type)
{
case 0:
{
BinaryDocumentTableWriter oBinaryDocumentTableWriter(m_oParamsWriter, m_oParamsDocumentWriter, m_mapIgnoreComments, bpPrs.m_oBinaryHeaderFooterTableWriter);
oBinaryDocumentTableWriter.WriteDocumentContent(pStd->m_oSdtContent.get().m_arrItems);
break;
}
case 1:
{
WriteParagraphContent(pStd->m_oSdtContent.get().m_arrItems);
break;
}
case 2:
{
WriteTableContent(pStd->m_oSdtContent->m_arrItems, pTblPr, nRows, nCols);
break;
}
case 3:
{
WriteRowContent(pStd->m_oSdtContent.get().m_arrItems, pTblPr, nCurRowIndex, nRows, nCols);
break;
}
}
m_oBcw.WriteItemEnd(nCurPos);
}
}
void WriteSdtPr(const OOX::Logic::CSdtPr& oStdPr)
{
int nCurPos = 0;
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::Type);
m_oBcw.m_oStream.WriteBYTE(oStdPr.m_eType);
m_oBcw.WriteItemEnd(nCurPos);
if(oStdPr.m_oAlias.IsInit() && oStdPr.m_oAlias->m_sVal.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::Alias);
m_oBcw.m_oStream.WriteStringW3(oStdPr.m_oAlias->m_sVal.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oStdPr.m_oComboBox.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::ComboBox);
WriteSdtComboBox(oStdPr.m_oComboBox.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oStdPr.m_oDataBinding.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::DataBinding);
WriteSdtPrDataBinding(oStdPr.m_oDataBinding.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oStdPr.m_oDate.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::PrDate);
WriteSdtPrDate(oStdPr.m_oDate.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oStdPr.m_oDocPartList.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::DocPartList);
WriteDocPartList(oStdPr.m_oDocPartList.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oStdPr.m_oDocPartObj.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::DocPartObj);
WriteDocPartList(oStdPr.m_oDocPartObj.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oStdPr.m_oDropDownList.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::DropDownList);
WriteDropDownList(oStdPr.m_oDropDownList.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oStdPr.m_oId.IsInit() && oStdPr.m_oId->m_oVal.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::Id);
m_oBcw.m_oStream.WriteULONG(oStdPr.m_oId->m_oVal->GetValue());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oStdPr.m_oLabel.IsInit() && oStdPr.m_oLabel->m_oVal.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::Label);
m_oBcw.m_oStream.WriteULONG(oStdPr.m_oLabel->m_oVal->GetValue());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oStdPr.m_oLock.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::Lock);
m_oBcw.m_oStream.WriteBYTE(oStdPr.m_oLock->m_oVal.GetValue());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oStdPr.m_oPlaceHolder.IsInit() && oStdPr.m_oPlaceHolder->m_oDocPart.IsInit() && oStdPr.m_oPlaceHolder->m_oDocPart->m_sVal.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::PlaceHolder);
m_oBcw.m_oStream.WriteStringW3(oStdPr.m_oPlaceHolder->m_oDocPart->m_sVal.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oStdPr.m_oRPr.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::RPr);
brPrs.Write_rPr(oStdPr.m_oRPr.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oStdPr.m_oShowingPlcHdr.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::ShowingPlcHdr);
m_oBcw.m_oStream.WriteBOOL(oStdPr.m_oShowingPlcHdr->m_oVal.ToBool());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oStdPr.m_oTabIndex.IsInit() && oStdPr.m_oTabIndex->m_oVal.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::TabIndex);
m_oBcw.m_oStream.WriteULONG(oStdPr.m_oTabIndex->m_oVal->GetValue());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oStdPr.m_oTag.IsInit() && oStdPr.m_oTag->m_sVal.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::Tag);
m_oBcw.m_oStream.WriteStringW3(oStdPr.m_oTag->m_sVal.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oStdPr.m_oTemporary.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::Temporary);
m_oBcw.m_oStream.WriteBOOL(oStdPr.m_oTemporary->m_oVal.ToBool());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oStdPr.m_oText.IsInit() && oStdPr.m_oText->m_oMultiLine.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::MultiLine);
m_oBcw.m_oStream.WriteBOOL(oStdPr.m_oText->m_oMultiLine->ToBool());
m_oBcw.WriteItemEnd(nCurPos);
}
}
void WriteSdtComboBox(const OOX::Logic::CSdtComboBox& oSdtComboBox)
{
int nCurPos = 0;
if(oSdtComboBox.m_sLastValue.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::LastValue);
m_oBcw.m_oStream.WriteStringW3(oSdtComboBox.m_sLastValue.get());
m_oBcw.WriteItemEnd(nCurPos);
}
for(size_t i = 0; i < oSdtComboBox.m_arrListItem.size(); ++i)
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::SdtListItem);
WriteSdtListItem(*oSdtComboBox.m_arrListItem[i]);
m_oBcw.WriteItemEnd(nCurPos);
}
}
void WriteSdtListItem(const ComplexTypes::Word::CSdtListItem& oSdtListItem)
{
int nCurPos = 0;
if(oSdtListItem.m_sDisplayText.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::DisplayText);
m_oBcw.m_oStream.WriteStringW3(oSdtListItem.m_sDisplayText.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oSdtListItem.m_sValue.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::Value);
m_oBcw.m_oStream.WriteStringW3(oSdtListItem.m_sValue.get());
m_oBcw.WriteItemEnd(nCurPos);
}
}
void WriteSdtPrDataBinding(const ComplexTypes::Word::CDataBinding& oDataBinding)
{
int nCurPos = 0;
if(oDataBinding.m_sPrefixMappings.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::PrefixMappings);
m_oBcw.m_oStream.WriteStringW3(oDataBinding.m_sPrefixMappings.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oDataBinding.m_sStoreItemID.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::StoreItemID);
m_oBcw.m_oStream.WriteStringW3(oDataBinding.m_sStoreItemID.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oDataBinding.m_sXPath.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::XPath);
m_oBcw.m_oStream.WriteStringW3(oDataBinding.m_sXPath.get());
m_oBcw.WriteItemEnd(nCurPos);
}
}
void WriteSdtPrDate(const OOX::Logic::CDate& oDate)
{
int nCurPos = 0;
if(oDate.m_oFullDate.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::FullDate);
m_oBcw.m_oStream.WriteStringW3(oDate.m_oFullDate->GetValue());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oDate.m_oCalendar.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::Calendar);
m_oBcw.m_oStream.WriteBYTE(oDate.m_oCalendar->m_oVal.GetValue());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oDate.m_oDateFormat.IsInit() && oDate.m_oDateFormat->m_sVal.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::DateFormat);
m_oBcw.m_oStream.WriteStringW3(oDate.m_oDateFormat->m_sVal.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oDate.m_oLid.IsInit() && oDate.m_oLid->m_oVal.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::Lid);
m_oBcw.m_oStream.WriteStringW3(oDate.m_oLid->m_oVal->GetValue());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oDate.m_oStoreMappedDateAs.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::StoreMappedDataAs);
m_oBcw.m_oStream.WriteBYTE(oDate.m_oStoreMappedDateAs->m_oVal.GetValue());
m_oBcw.WriteItemEnd(nCurPos);
}
}
void WriteDocPartList(const OOX::Logic::CSdtDocPart& oSdtDocPart)
{
int nCurPos = 0;
if(oSdtDocPart.m_oDocPartCategory.IsInit() && oSdtDocPart.m_oDocPartCategory->m_sVal.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::DocPartCategory);
m_oBcw.m_oStream.WriteStringW3(oSdtDocPart.m_oDocPartCategory->m_sVal.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oSdtDocPart.m_oDocPartGallery.IsInit() && oSdtDocPart.m_oDocPartGallery->m_sVal.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::DocPartGallery);
m_oBcw.m_oStream.WriteStringW3(oSdtDocPart.m_oDocPartGallery->m_sVal.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if(oSdtDocPart.m_oDocPartUnique.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::DocPartUnique);
m_oBcw.m_oStream.WriteBOOL(oSdtDocPart.m_oDocPartUnique->m_oVal.ToBool());
m_oBcw.WriteItemEnd(nCurPos);
}
}
void WriteDropDownList(const OOX::Logic::CSdtDropDownList& oDropDownList)
{
int nCurPos = 0;
if(oDropDownList.m_sLastValue.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::LastValue);
m_oBcw.m_oStream.WriteStringW3(oDropDownList.m_sLastValue.get());
m_oBcw.WriteItemEnd(nCurPos);
}
for(size_t i = 0; i < oDropDownList.m_arrListItem.size(); ++i)
{
nCurPos = m_oBcw.WriteItemStart(c_oSerSdt::SdtListItem);
WriteSdtListItem(*oDropDownList.m_arrListItem[i]);
m_oBcw.WriteItemEnd(nCurPos);
}
}
};
class BinaryCommentsTableWriter
{
@ -6914,80 +7194,94 @@ namespace BinDocxRW
}
}
}
void WriteColorSchemeMapping(const OOX::Settings::CColorSchemeMapping& oColorSchemeMapping)
void WriteColorSchemeMapping(const PPTX::Logic::ClrMap& oColorSchemeMapping)
{
int nCurPos = 0;
if(oColorSchemeMapping.m_oAccent1.IsInit())
std::map<std::wstring, PPTX::Limit::ColorSchemeIndex>::const_iterator pFind;
pFind = oColorSchemeMapping.ColorMap.find(L"accent1");
if(pFind != oColorSchemeMapping.ColorMap.end())
{
m_oBcw.m_oStream.WriteBYTE(c_oSer_ClrSchemeMappingType::Accent1);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBYTE(oColorSchemeMapping.m_oAccent1->GetValue());
m_oBcw.m_oStream.WriteBYTE(pFind->second.GetBYTECode());
}
if(oColorSchemeMapping.m_oAccent2.IsInit())
pFind = oColorSchemeMapping.ColorMap.find(L"accent2");
if(pFind != oColorSchemeMapping.ColorMap.end())
{
m_oBcw.m_oStream.WriteBYTE(c_oSer_ClrSchemeMappingType::Accent2);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBYTE(oColorSchemeMapping.m_oAccent2->GetValue());
m_oBcw.m_oStream.WriteBYTE(pFind->second.GetBYTECode());
}
if(oColorSchemeMapping.m_oAccent3.IsInit())
pFind = oColorSchemeMapping.ColorMap.find(L"accent3");
if(pFind != oColorSchemeMapping.ColorMap.end())
{
m_oBcw.m_oStream.WriteBYTE(c_oSer_ClrSchemeMappingType::Accent3);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBYTE(oColorSchemeMapping.m_oAccent3->GetValue());
m_oBcw.m_oStream.WriteBYTE(pFind->second.GetBYTECode());
}
if(oColorSchemeMapping.m_oAccent4.IsInit())
pFind = oColorSchemeMapping.ColorMap.find(L"accent4");
if(pFind != oColorSchemeMapping.ColorMap.end())
{
m_oBcw.m_oStream.WriteBYTE(c_oSer_ClrSchemeMappingType::Accent4);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBYTE(oColorSchemeMapping.m_oAccent4->GetValue());
m_oBcw.m_oStream.WriteBYTE(pFind->second.GetBYTECode());
}
if(oColorSchemeMapping.m_oAccent5.IsInit())
pFind = oColorSchemeMapping.ColorMap.find(L"accent5");
if(pFind != oColorSchemeMapping.ColorMap.end())
{
m_oBcw.m_oStream.WriteBYTE(c_oSer_ClrSchemeMappingType::Accent5);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBYTE(oColorSchemeMapping.m_oAccent5->GetValue());
m_oBcw.m_oStream.WriteBYTE(pFind->second.GetBYTECode());
}
if(oColorSchemeMapping.m_oAccent6.IsInit())
pFind = oColorSchemeMapping.ColorMap.find(L"accent6");
if(pFind != oColorSchemeMapping.ColorMap.end())
{
m_oBcw.m_oStream.WriteBYTE(c_oSer_ClrSchemeMappingType::Accent6);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBYTE(oColorSchemeMapping.m_oAccent6->GetValue());
m_oBcw.m_oStream.WriteBYTE(pFind->second.GetBYTECode());
}
if(oColorSchemeMapping.m_oBg1.IsInit())
pFind = oColorSchemeMapping.ColorMap.find(L"bg1");
if(pFind != oColorSchemeMapping.ColorMap.end())
{
m_oBcw.m_oStream.WriteBYTE(c_oSer_ClrSchemeMappingType::Bg1);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBYTE(oColorSchemeMapping.m_oBg1->GetValue());
m_oBcw.m_oStream.WriteBYTE(pFind->second.GetBYTECode());
}
if(oColorSchemeMapping.m_oBg2.IsInit())
pFind = oColorSchemeMapping.ColorMap.find(L"bg2");
if(pFind != oColorSchemeMapping.ColorMap.end())
{
m_oBcw.m_oStream.WriteBYTE(c_oSer_ClrSchemeMappingType::Bg2);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBYTE(oColorSchemeMapping.m_oBg2->GetValue());
m_oBcw.m_oStream.WriteBYTE(pFind->second.GetBYTECode());
}
if(oColorSchemeMapping.m_oFollowedHyperlink.IsInit())
pFind = oColorSchemeMapping.ColorMap.find(L"folHlink");
if(pFind != oColorSchemeMapping.ColorMap.end())
{
m_oBcw.m_oStream.WriteBYTE(c_oSer_ClrSchemeMappingType::FollowedHyperlink);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBYTE(oColorSchemeMapping.m_oFollowedHyperlink->GetValue());
m_oBcw.m_oStream.WriteBYTE(pFind->second.GetBYTECode());
}
if(oColorSchemeMapping.m_oHyperlink.IsInit())
pFind = oColorSchemeMapping.ColorMap.find(L"hlink");
if(pFind != oColorSchemeMapping.ColorMap.end())
{
m_oBcw.m_oStream.WriteBYTE(c_oSer_ClrSchemeMappingType::Hyperlink);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBYTE(oColorSchemeMapping.m_oHyperlink->GetValue());
m_oBcw.m_oStream.WriteBYTE(pFind->second.GetBYTECode());
}
if(oColorSchemeMapping.m_oT1.IsInit())
pFind = oColorSchemeMapping.ColorMap.find(L"tx1");
if(pFind != oColorSchemeMapping.ColorMap.end())
{
m_oBcw.m_oStream.WriteBYTE(c_oSer_ClrSchemeMappingType::T1);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBYTE(oColorSchemeMapping.m_oT1->GetValue());
m_oBcw.m_oStream.WriteBYTE(pFind->second.GetBYTECode());
}
if(oColorSchemeMapping.m_oT2.IsInit())
pFind = oColorSchemeMapping.ColorMap.find(L"tx2");
if(pFind != oColorSchemeMapping.ColorMap.end())
{
m_oBcw.m_oStream.WriteBYTE(c_oSer_ClrSchemeMappingType::T2);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBYTE(oColorSchemeMapping.m_oT2->GetValue());
m_oBcw.m_oStream.WriteBYTE(pFind->second.GetBYTECode());
}
};
};
@ -7003,9 +7297,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 +7306,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 +7340,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 +7507,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();

View File

@ -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)
{

View File

@ -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;

View File

@ -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);

View File

@ -54,7 +54,7 @@ int _tmain(int argc, _TCHAR* argv[])
HRESULT hr = S_OK;
//////////////////////////////////////////////////////////////////////////
std::wstring srcFileName = argv[1];
std::wstring dstPath = argc > 2 ? argv[2] : srcFileName + L"-my.pptx"; //xlsx pptx docx
std::wstring dstPath = argc > 2 ? argv[2] : srcFileName + L"-my.docx"; //xlsx pptx docx
std::wstring outputDir = NSDirectory::GetFolderPath(dstPath);

View File

@ -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"

View File

@ -1195,7 +1195,7 @@ void docx_conversion_context::process_headers_footers()
// проходим по всем page layout
BOOST_FOREACH(const odf_reader::style_master_page* page, pageLayouts.master_pages())
{
const std::wstring & styleName = page->style_master_page_attlist_.style_name_.get_value_or( L"" );
const std::wstring & styleName = page->attlist_.style_name_.get_value_or( L"" );
const std::wstring masterPageNameLayout =context.pageLayoutContainer().page_layout_name_by_style(styleName);
add_page_properties(masterPageNameLayout);

View File

@ -272,9 +272,9 @@ void pptx_conversion_context::end_document()
odf_reader::odf_read_context & context = root()->odf_context();
odf_reader::page_layout_container & pageLayouts = context.pageLayoutContainer();
if ((pageLayouts.master_pages().size() > 0) && (pageLayouts.master_pages()[0]->style_master_page_attlist_.style_name_))//default
if ((pageLayouts.master_pages().size() > 0) && (pageLayouts.master_pages()[0]->attlist_.style_name_))//default
{
const std::wstring masterStyleName = pageLayouts.master_pages()[0]->style_master_page_attlist_.style_name_.get();
const std::wstring masterStyleName = pageLayouts.master_pages()[0]->attlist_.style_name_.get();
const std::wstring pageProperties = root()->odf_context().pageLayoutContainer().page_layout_name_by_style(masterStyleName);
odf_reader::page_layout_instance *pages_layouts = root()->odf_context().pageLayoutContainer().page_layout_by_name(pageProperties);

View File

@ -72,8 +72,8 @@ public:
void start_base_style(const std::wstring baseStyleName, const odf_types::style_family::type baseStyleType);
void end_base_style();
void ApplyTextProperties (std::wstring style,odf_reader::text_format_properties_content & propertiesOut, odf_types::style_family::type Type);
void ApplyParagraphProperties (std::wstring style,odf_reader::paragraph_format_properties & propertiesOut, odf_types::style_family::type Type);
void ApplyTextProperties (std::wstring style, std::wstring para_style, odf_reader::text_format_properties_content & propertiesOut);
void ApplyParagraphProperties (std::wstring para_style, odf_reader::paragraph_format_properties & propertiesOut);
void ApplyListProperties (odf_reader::paragraph_format_properties & propertiesOut, int Level);
void set_local_styles_container(odf_reader::styles_container* local_styles_);//это если стили объектов содержатся в другом документе
@ -239,32 +239,37 @@ void pptx_text_context::Impl::end_hyperlink(std::wstring hId)
dump_run();
hyperlink_hId = L"";
}
void pptx_text_context::Impl::ApplyTextProperties(std::wstring style_name,odf_reader::text_format_properties_content & propertiesOut, odf_types::style_family::type Type)
void pptx_text_context::Impl::ApplyTextProperties(std::wstring style_name, std::wstring para_style_name, odf_reader::text_format_properties_content & propertiesOut)
{
std::vector<const odf_reader::style_instance *> instances;
odf_reader::style_instance* defaultStyle = NULL;
odf_reader::style_instance* style = NULL;
odf_reader::style_instance* baseStyle = NULL;
odf_reader::style_instance* defaultStyle = NULL;
odf_reader::style_instance* para_style = NULL;
odf_reader::style_instance* text_style = NULL;
odf_reader::style_instance* baseStyle = NULL;
if (local_styles_ptr_)
{
style = local_styles_ptr_->style_by_name(style_name, Type,false/*process_headers_footers_*/);
defaultStyle = local_styles_ptr_->style_default_by_type(Type);
baseStyle = local_styles_ptr_->style_by_name(base_style_name_, base_style_family_,false/*process_headers_footers_*/);
para_style = local_styles_ptr_->style_by_name (para_style_name, odf_types::style_family::Paragraph, false/*process_headers_footers_*/);
text_style = local_styles_ptr_->style_by_name (style_name, odf_types::style_family::Text, false/*process_headers_footers_*/);
defaultStyle = local_styles_ptr_->style_default_by_type (odf_types::style_family::Text);
baseStyle = local_styles_ptr_->style_by_name (base_style_name_, base_style_family_, false/*process_headers_footers_*/);
}
else
{
style = odf_context_.styleContainer().style_by_name(style_name, Type,false/*process_headers_footers_*/);
defaultStyle = odf_context_.styleContainer().style_default_by_type(Type);
baseStyle = odf_context_.styleContainer().style_by_name(base_style_name_, base_style_family_,false/*process_headers_footers_*/);
para_style = odf_context_.styleContainer().style_by_name (para_style_name, odf_types::style_family::Paragraph, false/*process_headers_footers_*/);
text_style = odf_context_.styleContainer().style_by_name (style_name, odf_types::style_family::Text, false/*process_headers_footers_*/);
defaultStyle = odf_context_.styleContainer().style_default_by_type (odf_types::style_family::Text);
baseStyle = odf_context_.styleContainer().style_by_name (base_style_name_, base_style_family_, false/*process_headers_footers_*/);
}
if (defaultStyle) instances.push_back(defaultStyle);
if (baseStyle) instances.push_back(baseStyle);
if (style) instances.push_back(style);
if (para_style) instances.push_back(para_style);
if (text_style) instances.push_back(text_style);
if (style)get_styles_context().start_process_style(style);
else get_styles_context().start_process_style(baseStyle);
if (text_style) get_styles_context().start_process_style(text_style);
else if (para_style) get_styles_context().start_process_style(para_style);
else get_styles_context().start_process_style(baseStyle);
propertiesOut.apply_from(calc_text_properties_content(instances));
}
@ -323,33 +328,33 @@ void pptx_text_context::Impl::ApplyListProperties(odf_reader::paragraph_format_p
}
void pptx_text_context::Impl::ApplyParagraphProperties(std::wstring style_name,odf_reader::paragraph_format_properties & propertiesOut, odf_types::style_family::type Type)
void pptx_text_context::Impl::ApplyParagraphProperties(std::wstring style_name, odf_reader::paragraph_format_properties & propertiesOut)
{
std::vector<const odf_reader::style_instance *> instances;
odf_reader::style_instance* style = NULL;
odf_reader::style_instance * defaultStyle = NULL;
odf_reader::style_instance * baseStyle = NULL;
odf_reader::style_instance* style = NULL;
odf_reader::style_instance* defaultStyle = NULL;
odf_reader::style_instance* baseStyle = NULL;
if (local_styles_ptr_)
{
style = local_styles_ptr_->style_by_name(style_name, Type,false/*process_headers_footers_*/);
defaultStyle = local_styles_ptr_->style_default_by_type(Type);
baseStyle = local_styles_ptr_->style_by_name(base_style_name_, base_style_family_,false/*process_headers_footers_*/);
style = local_styles_ptr_->style_by_name (style_name, odf_types::style_family::Paragraph, false/*process_headers_footers_*/);
defaultStyle = local_styles_ptr_->style_default_by_type (odf_types::style_family::Paragraph);
baseStyle = local_styles_ptr_->style_by_name (base_style_name_, base_style_family_, false/*process_headers_footers_*/);
}
else
{
style = odf_context_.styleContainer().style_by_name(style_name, Type,false/*process_headers_footers_*/);
defaultStyle = odf_context_.styleContainer().style_default_by_type(Type);
baseStyle= odf_context_.styleContainer().style_by_name(base_style_name_, base_style_family_,false/*process_headers_footers_*/);
style = odf_context_.styleContainer().style_by_name (style_name, odf_types::style_family::Paragraph, false/*process_headers_footers_*/);
defaultStyle = odf_context_.styleContainer().style_default_by_type (odf_types::style_family::Paragraph);
baseStyle = odf_context_.styleContainer().style_by_name (base_style_name_, base_style_family_,false/*process_headers_footers_*/);
}
if (defaultStyle) instances.push_back(defaultStyle);
if (baseStyle) instances.push_back(baseStyle);
if (style) instances.push_back(style);
if (style)get_styles_context().start_process_style(style);
else get_styles_context().start_process_style(baseStyle);
if (style) get_styles_context().start_process_style(style);
else get_styles_context().start_process_style(baseStyle);
propertiesOut.apply_from(calc_paragraph_properties_content(instances));
}
@ -360,9 +365,9 @@ void pptx_text_context::Impl::write_pPr(std::wostream & strm)
int level = list_style_stack_.size()-1;
odf_reader::paragraph_format_properties paragraph_properties_;
odf_reader::paragraph_format_properties paragraph_properties_;
ApplyParagraphProperties (paragraph_style_name_, paragraph_properties_,odf_types::style_family::Paragraph);
ApplyParagraphProperties (paragraph_style_name_, paragraph_properties_);
ApplyListProperties (paragraph_properties_, level);//выравнивания листа накатим на свойства параграфа
paragraph_properties_.pptx_convert(pptx_context_);
@ -403,16 +408,9 @@ void pptx_text_context::Impl::write_rPr(std::wostream & strm)
if (paragraph_style_name_.empty() && span_style_name_.empty() && !(!hyperlink_hId.empty()) && base_style_name_.empty())
return;
odf_reader::text_format_properties_content text_properties_paragraph_;
ApplyTextProperties (paragraph_style_name_, text_properties_paragraph_,odf_types::style_family::Paragraph);
odf_reader::text_format_properties_content text_properties_span_;
ApplyTextProperties(span_style_name_, text_properties_span_,odf_types::style_family::Text);
odf_reader::text_format_properties_content text_properties_;
text_properties_.apply_from(text_properties_paragraph_);
text_properties_.apply_from(text_properties_span_);
ApplyTextProperties(span_style_name_, paragraph_style_name_, text_properties_);
get_styles_context().start();

View File

@ -55,6 +55,7 @@ public:
std::wstringstream autofilter_;
std::wstringstream conditionalFormatting_;
std::wstringstream ole_objects_;
std::wstringstream page_props_;
rels hyperlinks_rels_;
rels ole_objects_rels_;
@ -134,6 +135,11 @@ std::wostream & xlsx_xml_worksheet::ole_objects()
{
return impl_->ole_objects_;
}
std::wostream & xlsx_xml_worksheet::page_properties()
{
return impl_->page_props_;
}
//---------------------------------------------------------------------------------------
rels & xlsx_xml_worksheet::hyperlinks_rels()
{
@ -196,9 +202,13 @@ void xlsx_xml_worksheet::write_to(std::wostream & strm)
{
CP_XML_NODE(L"oleObjects")
{
CP_XML_STREAM() << impl_->ole_objects_.str();
CP_XML_STREAM() << impl_->ole_objects_.str();
}
}
if (!impl_->page_props_.str().empty())
{
CP_XML_STREAM() << impl_->page_props_.str();
}
//CP_XML_NODE(L"headerFooter){}
//CP_XML_NODE(L"rowBreaks){}

View File

@ -63,6 +63,7 @@ public:
std::wostream & conditionalFormatting();
std::wostream & sort();
std::wostream & ole_objects();
std::wostream & page_properties();
rels & hyperlinks_rels();
rels & ole_objects_rels();

View File

@ -341,11 +341,26 @@ double charsToSize(unsigned int charsCount, double maxDigitSize)
return 1.0 * int((maxDigitSize * charsCount + 5.0) / maxDigitSize * 256.0) / 256.0;
}
void xlsx_table_state::serialize_table_format(std::wostream & _Wostream)
void xlsx_table_state::serialize_page_properties (std::wostream & strm)
{
_CP_OPT(std::wstring) masterPageName = context_->root()->odf_context().styleContainer().master_page_name_by_name(table_style_);
if (!masterPageName) return;
odf_reader::style_master_page* master_style_ = context_->root()->odf_context().pageLayoutContainer().master_page_by_name(*masterPageName);
if (!master_style_) return;
if (!master_style_->attlist_.style_page_layout_name_) return;
odf_reader::page_layout_instance * page_layout = context_->root()->odf_context().pageLayoutContainer().page_layout_by_name(*master_style_->attlist_.style_page_layout_name_);
if (!page_layout) return;
page_layout->xlsx_serialize(strm, *context_);
}
void xlsx_table_state::serialize_table_format (std::wostream & strm)
{
odf_reader::odf_read_context & odfContext = context_->root()->odf_context();
CP_XML_WRITER(_Wostream)
CP_XML_WRITER(strm)
{
odf_reader::style_table_properties * table_prop = NULL;
odf_reader::style_instance * tableStyle = odfContext.styleContainer().style_by_name(table_style_, odf_types::style_family::Table, false);
@ -435,9 +450,9 @@ void xlsx_table_state::serialize_table_format(std::wostream & _Wostream)
{
const odf_reader::style_table_row_properties * prop = rowDefStyle->content()->get_style_table_row_properties();
if ( (prop) && (prop->style_table_row_properties_attlist_.style_row_height_))
if ( (prop) && (prop->attlist_.style_row_height_))
{
default_height = prop->style_table_row_properties_attlist_.style_row_height_->get_value_unit(odf_types::length::pt);
default_height = prop->attlist_.style_row_height_->get_value_unit(odf_types::length::pt);
}
std::wstringstream ht_s;
ht_s.precision(1);
@ -451,21 +466,21 @@ void xlsx_table_state::serialize_table_format(std::wostream & _Wostream)
}
}
void xlsx_table_state::serialize_merge_cells(std::wostream & _Wostream)
void xlsx_table_state::serialize_merge_cells(std::wostream & strm)
{
return xlsx_merge_cells_.xlsx_serialize(_Wostream);
return xlsx_merge_cells_.xlsx_serialize(strm);
}
void xlsx_table_state::serialize_ole_objects(std::wostream & _Wostream)
void xlsx_table_state::serialize_ole_objects(std::wostream & strm)
{
return xlsx_drawing_context_.get_drawings()->serialize_objects(_Wostream);
return xlsx_drawing_context_.get_drawings()->serialize_objects(strm);
}
void xlsx_table_state::serialize_hyperlinks(std::wostream & _Wostream)
void xlsx_table_state::serialize_hyperlinks(std::wostream & strm)
{
return xlsx_hyperlinks_.xlsx_serialize(_Wostream);
return xlsx_hyperlinks_.xlsx_serialize(strm);
}
void xlsx_table_state::serialize_conditionalFormatting(std::wostream & _Wostream)
void xlsx_table_state::serialize_conditionalFormatting(std::wostream & strm)
{
return xlsx_conditionalFormatting_context_.serialize(_Wostream);
return xlsx_conditionalFormatting_context_.serialize(strm);
}
void xlsx_table_state::dump_rels_hyperlinks(rels & Rels)
{

View File

@ -128,7 +128,8 @@ public:
void serialize_merge_cells (std::wostream & _Wostream);
void serialize_hyperlinks (std::wostream & _Wostream);
void serialize_ole_objects (std::wostream & _Wostream);
void serialize_page_properties (std::wostream & _Wostream);
void dump_rels_hyperlinks (rels & Rels);
void dump_rels_ole_objects (rels & Rels);

View File

@ -317,6 +317,10 @@ void xlsx_table_context::serialize_table_format(std::wostream & _Wostream)
{
return state()->serialize_table_format(_Wostream);
}
void xlsx_table_context::serialize_page_properties(std::wostream & _Wostream)
{
return state()->serialize_page_properties(_Wostream);
}
void xlsx_table_context::serialize_hyperlinks(std::wostream & _Wostream)
{
return state()->serialize_hyperlinks(_Wostream);

View File

@ -90,6 +90,7 @@ public:
void serialize_conditionalFormatting(std::wostream & _Wostream);
void serialize_hyperlinks (std::wostream & _Wostream);
void serialize_ole_objects (std::wostream & _Wostream);
void serialize_page_properties (std::wostream & _Wostream);
xlsx_table_metrics & get_table_metrics();

View File

@ -84,10 +84,10 @@ public:
void serialize_shared_strings(std::wostream & strm);
void ApplyTextProperties (std::wstring style, odf_reader::text_format_properties_content & propertiesOut, odf_types::style_family::type Type);
void ApplyParagraphProperties (std::wstring style, odf_reader::paragraph_format_properties & propertiesOut, odf_types::style_family::type Type);
void ApplyTextProperties (std::wstring style, std::wstring para_style, odf_reader::text_format_properties_content & propertiesOut);
void ApplyParagraphProperties (std::wstring style, odf_reader::paragraph_format_properties & propertiesOut);
void set_local_styles_container(odf_reader::styles_container* local_styles_);//это если стили объектов содержатся в другом документе
void set_local_styles_container (odf_reader::styles_container* local_styles_);//это если стили объектов содержатся в другом документе
bool is_drawing_context(){return in_draw;}
@ -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)
@ -236,48 +237,54 @@ void xlsx_text_context::Impl::end_hyperlink(std::wstring hId)
hyperlink_hId = hId;
}
void xlsx_text_context::Impl::ApplyParagraphProperties (std::wstring style, odf_reader::paragraph_format_properties & propertiesOut, odf_types::style_family::type Type)
void xlsx_text_context::Impl::ApplyParagraphProperties (std::wstring style, odf_reader::paragraph_format_properties & propertiesOut)
{
std::vector<const odf_reader::style_instance *> instances;
odf_reader::style_instance* defaultStyle = NULL;
odf_reader::style_instance* paraStyle = NULL;
if (local_styles_ptr_)
{
odf_reader::style_instance * defaultStyle = local_styles_ptr_->style_default_by_type(Type);
if (defaultStyle)instances.push_back(defaultStyle);
odf_reader::style_instance* styleInst = local_styles_ptr_->style_by_name(style, Type,false/*process_headers_footers_*/);
if(styleInst)instances.push_back(styleInst);
defaultStyle = local_styles_ptr_->style_default_by_type(odf_types::style_family::Paragraph);
paraStyle = local_styles_ptr_->style_by_name(style, odf_types::style_family::Paragraph, false/*process_headers_footers_*/);
}
else
{
odf_reader::style_instance * defaultStyle = styles_.style_default_by_type(Type);
if (defaultStyle)instances.push_back(defaultStyle);
odf_reader::style_instance* styleInst = styles_.style_by_name(style, Type,false/*process_headers_footers_*/);
if(styleInst)instances.push_back(styleInst);
defaultStyle = styles_.style_default_by_type(odf_types::style_family::Paragraph);
paraStyle = styles_.style_by_name(style, odf_types::style_family::Paragraph, false/*process_headers_footers_*/);
}
if (defaultStyle) instances.push_back(defaultStyle);
if (paraStyle) instances.push_back(paraStyle);
propertiesOut.apply_from(calc_paragraph_properties_content(instances));
}
void xlsx_text_context::Impl::ApplyTextProperties(std::wstring style, odf_reader::text_format_properties_content & propertiesOut, odf_types::style_family::type Type)
void xlsx_text_context::Impl::ApplyTextProperties(std::wstring style, std::wstring para_style, odf_reader::text_format_properties_content & propertiesOut)
{
std::vector<const odf_reader::style_instance *> instances;
odf_reader::style_instance* defaultStyle = NULL;
odf_reader::style_instance* textStyle = NULL;
odf_reader::style_instance* paraStyle = NULL;
if (local_styles_ptr_)
{
odf_reader::style_instance * defaultStyle = local_styles_ptr_->style_default_by_type(Type);
if (defaultStyle)instances.push_back(defaultStyle);
odf_reader::style_instance* styleInst = local_styles_ptr_->style_by_name(style, Type,false/*process_headers_footers_*/);
if(styleInst)instances.push_back(styleInst);
defaultStyle = local_styles_ptr_->style_default_by_type(odf_types::style_family::Text);
paraStyle = local_styles_ptr_->style_by_name(para_style, odf_types::style_family::Paragraph, false/*process_headers_footers_*/);
textStyle = local_styles_ptr_->style_by_name(style, odf_types::style_family::Text, false/*process_headers_footers_*/);
}
else
{
odf_reader::style_instance * defaultStyle = styles_.style_default_by_type(Type);
if (defaultStyle)instances.push_back(defaultStyle);
odf_reader::style_instance* styleInst = styles_.style_by_name(style, Type,false/*process_headers_footers_*/);
if(styleInst)instances.push_back(styleInst);
defaultStyle = styles_.style_default_by_type(odf_types::style_family::Text);
paraStyle = styles_.style_by_name(para_style, odf_types::style_family::Paragraph, false/*process_headers_footers_*/);
textStyle = styles_.style_by_name(style, odf_types::style_family::Text, false/*process_headers_footers_*/);
}
if (defaultStyle) instances.push_back(defaultStyle);
if (paraStyle) instances.push_back(paraStyle);
if (textStyle) instances.push_back(textStyle);
propertiesOut.apply_from(calc_text_properties_content(instances));
}
@ -290,10 +297,10 @@ void xlsx_text_context::Impl::write_pPr (std::wostream & strm)
{
if (paragraph_style_name_.empty())return;
odf_reader::paragraph_format_properties paragraph_format_properties_;
odf_reader::paragraph_format_properties paragraph_format_properties_;
ApplyParagraphProperties (paragraph_style_name_, paragraph_format_properties_ , odf_types::style_family::Paragraph);
paragraph_format_properties_.xlsx_convert(strm, in_draw);
ApplyParagraphProperties (paragraph_style_name_, paragraph_format_properties_);
paragraph_format_properties_.xlsx_convert (strm, in_draw);
}
void xlsx_text_context::Impl::write_rPr(std::wostream & strm)
@ -302,20 +309,13 @@ void xlsx_text_context::Impl::write_rPr(std::wostream & strm)
&& !(!hyperlink_hId.empty() && in_draw)
&& !(text_properties_cell_ && in_cell_content))return;
odf_reader::text_format_properties_content text_properties_paragraph_;
odf_reader::text_format_properties_content text_properties_span_;
ApplyTextProperties (paragraph_style_name_, text_properties_paragraph_ , odf_types::style_family::Paragraph);
ApplyTextProperties (span_style_name_, text_properties_span_ , odf_types::style_family::Text);
odf_reader::text_format_properties_content text_properties_;
if (in_cell_content && text_properties_cell_)
{
text_properties_.apply_from(*text_properties_cell_);
}
text_properties_.apply_from(text_properties_paragraph_);
text_properties_.apply_from(text_properties_span_);
}
ApplyTextProperties (span_style_name_, paragraph_style_name_, text_properties_);
_CP_OPT(double) dValFontSize;
if (text_properties_.fo_font_size_)

View File

@ -369,6 +369,7 @@ void xlsx_conversion_context::end_table()
current_sheet().cols() << L"</cols>";
get_table_context().serialize_table_format (current_sheet().sheetFormat());
get_table_context().serialize_page_properties (current_sheet().page_properties());
get_table_context().serialize_conditionalFormatting (current_sheet().conditionalFormatting());
get_table_context().serialize_autofilter (current_sheet().autofilter());
get_table_context().serialize_sort (current_sheet().sort());
@ -420,7 +421,7 @@ void xlsx_conversion_context::end_table()
current_sheet().set_comments_link(commentsName.first, commentsName.second);
current_sheet().set_vml_drawing_link(vml_drawingName.first, vml_drawingName.second);
}
//background picture
get_table_context().end_table();
}

View File

@ -161,7 +161,7 @@ style_table_cell_properties_attlist calc_table_cell_properties(const std::vector
BOOST_FOREACH(const style_table_cell_properties* v, props)
{
if (v)
result.apply_from(v->style_table_cell_properties_attlist_);
result.apply_from(v->attlist_);
}
return result;
}

View File

@ -200,7 +200,11 @@ double pt_to_cm(double Val)
return Val / 28.34467120181406;
}
double pt_to_mm(double Val)
{
return Val / 2.834467120181406;
}
double to_pt(const length & Val)
{
switch(Val.get_unit())
@ -247,7 +251,11 @@ double length::get_value_unit(unit Unit) const
{
return pt_to_cm( to_pt(*this) );
}
else
else if (Unit == mm)
{
return pt_to_mm( to_pt(*this) );
}
else
{
return 0.0;
}

View File

@ -41,22 +41,22 @@ std::wostream & operator << (std::wostream & _Wostream, const presentation_class
std::wstring res = L"";
switch(_Val.get_type())
{
case presentation_class::title: _Wostream << L"title" ; break;
case presentation_class::subtitle: _Wostream << L"subtitle" ; break;
case presentation_class::graphic: _Wostream << L"graphic" ; break;
case presentation_class::object: _Wostream << L"object" ; break;
case presentation_class::chart: _Wostream << L"chart" ; break;
case presentation_class::table: _Wostream << L"table" ; break;
case presentation_class::orgchart: _Wostream << L"orgchart" ; break;
case presentation_class::header: _Wostream << L"header" ; break;
case presentation_class::footer: _Wostream << L"footer" ; break;
case presentation_class::date_time: _Wostream << L"date_time" ; break;
case presentation_class::page_number: _Wostream << L"page_number" ; break;
case presentation_class::page: _Wostream << L"page" ; break;
case presentation_class::notes: _Wostream << L"notes" ; break;
case presentation_class::handout: _Wostream << L"handout" ; break;
case presentation_class::outline: _Wostream << L"outline" ; break;
case presentation_class::text: _Wostream << L"text" ; break;
case presentation_class::title: _Wostream << L"title"; break;
case presentation_class::subtitle: _Wostream << L"subtitle"; break;
case presentation_class::graphic: _Wostream << L"graphic"; break;
case presentation_class::object: _Wostream << L"object"; break;
case presentation_class::chart: _Wostream << L"chart"; break;
case presentation_class::table: _Wostream << L"table"; break;
case presentation_class::orgchart: _Wostream << L"orgchart"; break;
case presentation_class::header: _Wostream << L"header"; break;
case presentation_class::footer: _Wostream << L"footer"; break;
case presentation_class::date_time: _Wostream << L"date-time"; break;
case presentation_class::page_number: _Wostream << L"page-number";break;
case presentation_class::page: _Wostream << L"page"; break;
case presentation_class::notes: _Wostream << L"notes"; break;
case presentation_class::handout: _Wostream << L"handout"; break;
case presentation_class::outline: _Wostream << L"outline"; break;
case presentation_class::text: _Wostream << L"text"; break;
}
return _Wostream;
}
@ -65,41 +65,24 @@ presentation_class presentation_class::parse(const std::wstring & Str)
std::wstring tmp = Str;
boost::algorithm::to_lower(tmp);
if (tmp == L"page")
return presentation_class( page );
else if (tmp == L"title")
return presentation_class( title);
else if (tmp == L"outline")
return presentation_class( outline );
else if (tmp == L"subtitle")
return presentation_class( subtitle);
else if (tmp == L"text")
return presentation_class( text);
else if (tmp == L"graphic")
return presentation_class( graphic );
else if (tmp == L"object")
return presentation_class( object );
else if (tmp == L"chart")
return presentation_class( chart );
else if (tmp == L"table")
return presentation_class( table );
else if (tmp == L"orgchart")
return presentation_class( orgchart );
else if (tmp == L"notes")
return presentation_class( notes );
else if (tmp == L"handout")
return presentation_class( handout );
else if (tmp == L"header")
return presentation_class( header );
else if (tmp == L"footer")
return presentation_class( footer );
else if (tmp == L"date-time")
return presentation_class( date_time );
else if (tmp == L"page-number")
return presentation_class( page_number );
else
if (tmp == L"page") return presentation_class( page );
else if (tmp == L"title") return presentation_class( title);
else if (tmp == L"outline") return presentation_class( outline );
else if (tmp == L"subtitle") return presentation_class( subtitle);
else if (tmp == L"text") return presentation_class( text);
else if (tmp == L"graphic") return presentation_class( graphic );
else if (tmp == L"object") return presentation_class( object );
else if (tmp == L"chart") return presentation_class( chart );
else if (tmp == L"table") return presentation_class( table );
else if (tmp == L"orgchart") return presentation_class( orgchart );
else if (tmp == L"notes") return presentation_class( notes );
else if (tmp == L"handout") return presentation_class( handout );
else if (tmp == L"header") return presentation_class( header );
else if (tmp == L"footer") return presentation_class( footer );
else if (tmp == L"date-time") return presentation_class( date_time );
else if (tmp == L"page-number") return presentation_class( page_number );
else
{
BOOST_THROW_EXCEPTION( errors::invalid_attribute() );
return presentation_class( page );
}
}

View File

@ -153,7 +153,7 @@ length ComputeContextWidth(const style_page_layout_properties * pageProperties
if (pagePropertiesNode)
{
if (const style_columns * styleColumns
= dynamic_cast<const style_columns*>( pagePropertiesNode->style_page_layout_properties_elements_.style_columns_.get()))
= dynamic_cast<const style_columns*>( pagePropertiesNode->elements_.style_columns_.get()))
{
columnsCount = styleColumns->fo_column_count_.get_value_or(1);
if (!columnsCount)
@ -784,7 +784,7 @@ void common_draw_docx_convert(oox::docx_conversion_context & Context, const unio
style_page_layout_properties_attlist emptyPageProperties;
const style_page_layout_properties_attlist & pageProperties =
pagePropertiesNode ? pagePropertiesNode->style_page_layout_properties_attlist_ : emptyPageProperties;
pagePropertiesNode ? pagePropertiesNode->attlist_ : emptyPageProperties;
/////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -453,6 +453,7 @@ void draw_enhanced_geometry_attlist::add_attributes( const xml::attributes_wc_pt
CP_APPLY_ATTR(L"draw:modifiers" , draw_modifiers_);
CP_APPLY_ATTR(L"draw:text-path" , draw_text_path_);
CP_APPLY_ATTR(L"draw:enhanced-path" , draw_enhanced_path_);
CP_APPLY_ATTR(L"drawooo:enhanced-path" , drawooo_enhanced_path_);
CP_APPLY_ATTR(L"drawooo:sub-view-size" , drawooo_sub_view_size_);
}
// draw:enhanced_geometry
@ -485,6 +486,9 @@ void draw_enhanced_geometry::add_child_element( xml::sax * Reader, const std::ws
}
void draw_enhanced_geometry::find_draw_type_oox()
{
word_art_ = false;
bOoxType_ = false;
if (draw_enhanced_geometry_attlist_.draw_text_path_ &&
*draw_enhanced_geometry_attlist_.draw_text_path_ == true)
{
@ -501,7 +505,7 @@ void draw_enhanced_geometry::find_draw_type_oox()
{
int count = sizeof(_OO_OOX_wordart) / sizeof(_shape_converter);
for (long i=0; i< count; i++)
for (int i = 0; i < count; i++)
{
if (_OO_OOX_wordart[i].odf_reader == odf_type)
{
@ -518,7 +522,7 @@ void draw_enhanced_geometry::find_draw_type_oox()
if (pos < 0)
{
for (long i=0; i< count; i++)
for (long i = 0; i< count; i++)
{
if (_OO_OOX_custom_shapes[i].odf_reader == odf_type)
{
@ -529,8 +533,9 @@ void draw_enhanced_geometry::find_draw_type_oox()
}
else
{
bOoxType_ = true;
std::wstring oox_type = odf_type.substr(pos + 6);
for (long i=0; i< count; i++)
for (long i = 0; i< count; i++)
{
if (_OO_OOX_custom_shapes[i].oox == oox_type)
{
@ -547,18 +552,18 @@ void draw_enhanced_geometry::find_draw_type_oox()
}
std::wstringstream str;
BOOST_FOREACH(const office_element_ptr & parElement, draw_handle_)
for (size_t i = 0; i < draw_handle_.size(); i++)
{
draw_handle * handle = dynamic_cast<draw_handle *>(parElement.get());
int min = -1;
int max = -1;
draw_handle * handle = dynamic_cast<draw_handle *>(draw_handle_[i].get());
if (!handle) continue;
int min = -1, max = -1;
try
{
min = parsing(handle->draw_handle_attlist_.draw_handle_range_y_minimum_);//пока статик .. и выдается только цыфровое значение
if (min<0)min = parsing(handle->draw_handle_attlist_.draw_handle_range_x_minimum_);
if (min<0)min = parsing(handle->draw_handle_attlist_.draw_handle_radius_range_minimum_);
if (min < 0) min = parsing(handle->draw_handle_attlist_.draw_handle_range_x_minimum_);
if (min < 0) min = parsing(handle->draw_handle_attlist_.draw_handle_radius_range_minimum_);
}
catch(...)
{
@ -574,7 +579,7 @@ void draw_enhanced_geometry::find_draw_type_oox()
catch(...)
{
}
draw_handle_geometry elm={min, max};
draw_handle_geometry elm = {min, max};
draw_handle_geometry_.push_back(elm);
}
}

View File

@ -437,6 +437,7 @@ public:
_CP_OPT(std::wstring) draw_modifiers_;
_CP_OPT(bool) draw_text_path_;
_CP_OPT(std::wstring) draw_enhanced_path_;
_CP_OPT(std::wstring) drawooo_enhanced_path_;
_CP_OPT(std::wstring) drawooo_sub_view_size_;
};
/////////////////////////////////////////////////////////////////////////
@ -464,7 +465,9 @@ public:
_CP_OPT(int) sub_type_;
_CP_OPT(int) draw_type_oox_index_;
_CP_OPT(std::wstring) svg_viewbox_;
bool word_art_;
bool bOoxType_;
typedef std::pair<std::wstring,std::wstring> pair_string_value;

View File

@ -253,13 +253,19 @@ void draw_enhanced_geometry::docx_convert(oox::docx_conversion_context & Context
set_shape = true;
}
if (sub_type_)
{
shape->sub_type_ = sub_type_.get();
set_shape = true;
}
std::wstring odf_path;
if (draw_enhanced_geometry_attlist_.drawooo_enhanced_path_)
odf_path = draw_enhanced_geometry_attlist_.drawooo_enhanced_path_.get();
else if (draw_enhanced_geometry_attlist_.draw_enhanced_path_)
odf_path = draw_enhanced_geometry_attlist_.draw_enhanced_path_.get();
if (draw_enhanced_geometry_attlist_.draw_enhanced_path_)
if (!odf_path.empty())
{
std::vector<::svg_path::_polyline> o_Polyline;
@ -267,7 +273,7 @@ void draw_enhanced_geometry::docx_convert(oox::docx_conversion_context & Context
try
{
res = ::svg_path::parseSvgD(o_Polyline, draw_enhanced_geometry_attlist_.draw_enhanced_path_.get(), true);
res = ::svg_path::parseSvgD(o_Polyline, odf_path, true);
}
catch(...)
{
@ -316,8 +322,8 @@ void draw_enhanced_geometry::docx_convert(oox::docx_conversion_context & Context
{
if (draw_handle_geometry_[0].min < draw_handle_geometry_[0].max)
{
shape->additional_.push_back(_property(L"draw-modifiers-min",draw_handle_geometry_[0].min));
shape->additional_.push_back(_property(L"draw-modifiers-max",draw_handle_geometry_[0].max));
shape->additional_.push_back(_property(L"draw-modifiers-min", draw_handle_geometry_[0].min));
shape->additional_.push_back(_property(L"draw-modifiers-max", draw_handle_geometry_[0].max));
}
}
}
@ -326,7 +332,6 @@ void draw_enhanced_geometry::docx_convert(oox::docx_conversion_context & Context
{
shape->bad_shape_ = true;
}
}
}
}

View File

@ -462,8 +462,8 @@ void odf_document::Impl::parse_styles()
continue;
}
const std::wstring styleName = masterPage->style_master_page_attlist_.style_name_.get_value_or(L"");
const std::wstring pageLayoutName = masterPage->style_master_page_attlist_.style_page_layout_name_.get_value_or(L"");
const std::wstring styleName = masterPage->attlist_.style_name_.get_value_or(L"");
const std::wstring pageLayoutName = masterPage->attlist_.style_page_layout_name_.get_value_or(L"");
context_->pageLayoutContainer().add_master_page(styleName, pageLayoutName, masterPage);
}

View File

@ -40,23 +40,24 @@ namespace cpdoccore {
namespace odf_reader {
style_instance::style_instance(
styles_container *Container,
const std::wstring &Name,
style_family::type Type,
style_content *Content,
bool IsAutomatic,
bool IsDefault,
const std::wstring & ParentStyleName,
const std::wstring & NextStyleName,
const std::wstring & DataStyleName
) : container_(Container),
name_(Name),
style_type_(Type),
content_(Content),
is_automatic_(IsAutomatic),
is_default_(IsDefault),
next_name_(NextStyleName),
next_(Container->style_by_name(NextStyleName, style_type_,false)),
styles_container *Container,
const std::wstring &Name,
style_family::type Type,
style_content *Content,
bool IsAutomatic,
bool IsDefault,
const std::wstring & ParentStyleName,
const std::wstring & NextStyleName,
const std::wstring & DataStyleName
) :
container_ (Container),
name_ (Name),
style_type_ (Type),
content_ (Content),
is_automatic_ (IsAutomatic),
is_default_ (IsDefault),
next_name_ (NextStyleName),
next_ (Container->style_by_name(NextStyleName, style_type_, false)),
data_style_name_(DataStyleName)
{
parent_name_ = ParentStyleName;
@ -64,8 +65,7 @@ style_instance::style_instance(
{
parent_name_ = L"Standard";
}
parent_ = Container->style_by_name(parent_name_, style_type_,false);
parent_ = Container->style_by_name(parent_name_, style_type_, false);
}
style_instance * styles_container::hyperlink_style()
@ -325,6 +325,13 @@ style_page_layout_properties * page_layout_instance::properties() const
return dynamic_cast<style_page_layout_properties *>(style_page_layout_->style_page_layout_properties_.get());
}
void page_layout_instance::xlsx_serialize(std::wostream & strm, oox::xlsx_conversion_context & Context)
{
style_page_layout_properties * props = properties();
if (props)
props->xlsx_serialize(strm, Context);
}
void page_layout_instance::docx_convert_serialize(std::wostream & strm, oox::docx_conversion_context & Context)
{
const style_header_style * headerStyle = dynamic_cast<style_header_style *>(style_page_layout_->style_header_style_.get());
@ -348,8 +355,10 @@ void page_layout_instance::docx_convert_serialize(std::wostream & strm, oox::doc
_CP_OPT(length) bottom = attr.fo_min_height_ ? attr.fo_min_height_ : attr.svg_height_;
Context.get_header_footer_context().set_footer(bottom);
}
properties()->docx_convert_serialize(strm, Context);
style_page_layout_properties * props = properties();
if (props)
props->docx_convert_serialize(strm, Context);
}
void page_layout_instance::pptx_convert(oox::pptx_conversion_context & Context)
{

View File

@ -193,8 +193,9 @@ public:
const std::wstring & name() const;
style_page_layout_properties * properties() const;
void docx_convert_serialize(std::wostream & strm, oox::docx_conversion_context & Context);
void pptx_convert(oox::pptx_conversion_context & Context);
void docx_convert_serialize (std::wostream & strm, oox::docx_conversion_context & Context);
void xlsx_serialize (std::wostream & strm, oox::xlsx_conversion_context & Context);
void pptx_convert (oox::pptx_conversion_context & Context);
const style_page_layout * style_page_layout_;

View File

@ -98,7 +98,7 @@ void office_body::docx_convert(oox::docx_conversion_context & Context)
std::vector<style_master_page*> & masterPages = Context.root()->odf_context().pageLayoutContainer().master_pages();
if (!masterPages.empty())
{
Context.set_master_page_name(masterPages[0]->style_master_page_attlist_.style_name_.get_value_or(L"Standard"));
Context.set_master_page_name(masterPages[0]->attlist_.style_name_.get_value_or(L"Standard"));
}
const page_layout_instance * layout = Context.root()->odf_context().pageLayoutContainer().page_layout_first();
@ -116,15 +116,15 @@ void office_body::docx_convert(oox::docx_conversion_context & Context)
//background (for all pages)
if (page_layout_instance * firtsPageLayout = Context.root()->odf_context().pageLayoutContainer().page_layout_by_name(Context.get_page_properties()))
{
if (style_page_layout_properties * prop = firtsPageLayout->properties())
if (style_page_layout_properties * layout_properties = firtsPageLayout->properties())
{
oox::_oox_fill fill;
Compute_GraphicFill(prop->style_page_layout_properties_attlist_.common_draw_fill_attlist_,
prop->style_page_layout_properties_elements_.style_background_image_,
Compute_GraphicFill(layout_properties->attlist_.common_draw_fill_attlist_,
layout_properties->elements_.style_background_image_,
Context.root()->odf_context().drawStyles(), fill);
if (prop->style_page_layout_properties_attlist_.common_background_color_attlist_.fo_background_color_ || fill.type != 0)
if (layout_properties->attlist_.common_background_color_attlist_.fo_background_color_ || fill.type != 0)
{
if ((fill.bitmap) && (fill.bitmap->rId.empty()))
{
@ -132,7 +132,7 @@ void office_body::docx_convert(oox::docx_conversion_context & Context)
fill.bitmap->rId = Context.add_mediaitem(href, oox::typeImage, fill.bitmap->isInternal, href);
}
int id = Context.get_drawing_context().get_current_shape_id();
if (prop->docx_background_serialize(Context.output_stream(), Context, fill, id))
if (layout_properties->docx_background_serialize(Context.output_stream(), Context, fill, id))
{
Context.set_settings_property(odf_reader::_property(L"displayBackgroundShape", true));
}

View File

@ -458,7 +458,7 @@ void paragraph_format_properties::pptx_convert(oox::pptx_conversion_context & Co
{
CP_XML_NODE(L"a:spcBef")
{
if (fo_margin_bottom_->get_type() == length_or_percent::Length)
if (fo_margin_top_->get_type() == length_or_percent::Length)
{
std::wstring w_before = pptx_process_margin(fo_margin_top_, length::pt, 100.0);
CP_XML_NODE(L"a:spcPts")

View File

@ -155,17 +155,17 @@ const wchar_t * style_table_properties::name = L"table-properties";
void style_table_properties::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
table_format_properties_.add_attributes(Attributes);
content_.add_attributes(Attributes);
}
void style_table_properties::add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name)
{
table_format_properties_.add_child_element(Reader, Ns, Name, getContext());
content_.add_child_element(Reader, Ns, Name, getContext());
}
void style_table_properties::docx_convert(oox::docx_conversion_context & Context)
{
table_format_properties_.docx_convert(Context);
content_.docx_convert(Context);
}
// style-table-column-properties-attlist
@ -186,7 +186,7 @@ const wchar_t * style_table_column_properties::name = L"table-column-properties"
void style_table_column_properties::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
style_table_column_properties_attlist_.add_attributes(Attributes);
attlist_.add_attributes(Attributes);
}
void style_table_column_properties::add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name)
@ -199,14 +199,14 @@ void style_table_column_properties::docx_convert(oox::docx_conversion_context &
std::wostream & strm = Context.output_stream();
if (style_table_column_properties_attlist_.style_column_width_)
if (attlist_.style_column_width_)
{
double kf_max_width_ms =1.;
const page_layout_instance * pp = Context.root()->odf_context().pageLayoutContainer().page_layout_first();//
if (pp)
{
style_page_layout_properties_attlist & attr_page = pp->properties()->style_page_layout_properties_attlist_;
style_page_layout_properties_attlist & attr_page = pp->properties()->attlist_;
if (attr_page.fo_page_width_)
{
int val = 0.5 + 20.0 * attr_page.fo_page_width_->get_value_unit(length::pt);
@ -215,7 +215,7 @@ void style_table_column_properties::docx_convert(oox::docx_conversion_context &
}
}
int val = style_table_column_properties_attlist_.style_column_width_->get_value_unit(length::pt);
int val = attlist_.style_column_width_->get_value_unit(length::pt);
//_CP_OPT(int) iUnormalWidth;
@ -236,9 +236,9 @@ void style_table_column_properties::pptx_convert(oox::pptx_conversion_context &
std::wostream & strm = Context.get_table_context().tableData();
if (style_table_column_properties_attlist_.style_column_width_)
if (attlist_.style_column_width_)
{
int val = style_table_column_properties_attlist_.style_column_width_->get_value_unit(length::emu);
int val = attlist_.style_column_width_->get_value_unit(length::emu);
strm << L"<a:gridCol w=\"" << val << "\"/>";
}
@ -289,7 +289,7 @@ const wchar_t * style_table_cell_properties::name = L"table-cell-properties";
void style_table_cell_properties::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
style_table_cell_properties_attlist_.add_attributes(Attributes);
attlist_.add_attributes(Attributes);
}
void style_table_cell_properties::add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name)
@ -351,7 +351,7 @@ const wchar_t * style_table_row_properties::name = L"table-row-properties";
void style_table_row_properties::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
style_table_row_properties_attlist_.add_attributes(Attributes);
attlist_.add_attributes(Attributes);
}
void style_table_row_properties::add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name)
@ -368,7 +368,7 @@ void style_table_row_properties::add_child_element( xml::sax * Reader, const std
void style_table_row_properties::docx_convert(oox::docx_conversion_context & Context)
{
style_table_row_properties_attlist_.docx_convert(Context);
attlist_.docx_convert(Context);
}
/////
@ -654,7 +654,7 @@ void style_table_cell_properties_attlist::pptx_serialize(oox::pptx_conversion_co
void style_table_cell_properties::docx_convert(oox::docx_conversion_context & Context)
{
style_table_cell_properties_attlist_.docx_convert(Context);
attlist_.docx_convert(Context);
}
void style_table_cell_properties_attlist::apply_from(const style_table_cell_properties_attlist & Other)

View File

@ -89,7 +89,6 @@ public:
};
/// style:table-properties
class style_table_properties : public office_element_impl<style_table_properties>
{
public:
@ -101,19 +100,17 @@ public:
CPDOCCORE_DEFINE_VISITABLE();
virtual void docx_convert(oox::docx_conversion_context & Context) ;
table_format_properties & content() {return table_format_properties_;}
table_format_properties & content() {return content_;}
private:
virtual void add_attributes( const xml::attributes_wc_ptr & Attributes );
virtual void add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name);
table_format_properties table_format_properties_;
table_format_properties content_;
};
CP_REGISTER_OFFICE_ELEMENT2(style_table_properties);
// style-table-column-properties-attlist
class style_table_column_properties_attlist
{
public:
@ -126,7 +123,6 @@ public:
};
/// style:table-column-properties
class style_table_column_properties : public office_element_impl<style_table_column_properties>
{
public:
@ -146,13 +142,12 @@ private:
virtual void add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name);
public:
style_table_column_properties_attlist style_table_column_properties_attlist_;
style_table_column_properties_attlist attlist_;
};
CP_REGISTER_OFFICE_ELEMENT2(style_table_column_properties);
// style-table-row-properties-attlist
class style_table_row_properties_attlist
{
public:
@ -161,7 +156,6 @@ public:
void docx_convert(oox::docx_conversion_context & Context);
void pptx_convert(oox::pptx_conversion_context & Context);
public:
_CP_OPT(odf_types::length) style_row_height_;
_CP_OPT(odf_types::length) style_min_row_height_;
_CP_OPT(bool) style_use_optimal_row_height_;
@ -171,7 +165,6 @@ public:
};
/// style:table-row-properties
class style_table_row_properties : public office_element_impl<style_table_row_properties>
{
public:
@ -189,14 +182,13 @@ private:
virtual void add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name);
public:
style_table_row_properties_attlist style_table_row_properties_attlist_;
style_table_row_properties_attlist attlist_;
office_element_ptr style_background_image_;
};
CP_REGISTER_OFFICE_ELEMENT2(style_table_row_properties);
// style-table-cell-properties-attlist
class style_table_cell_properties_attlist
{
public:
@ -207,7 +199,6 @@ public:
void apply_from(const style_table_cell_properties_attlist & Other);
public:
odf_types::common_shadow_attlist common_shadow_attlist_;
odf_types::common_background_color_attlist common_background_color_attlist_;
odf_types::common_border_attlist common_border_attlist_;
@ -227,26 +218,21 @@ public:
_CP_OPT(std::wstring) style_cell_protect_;
_CP_OPT(bool) style_print_content_;
_CP_OPT(unsigned int) style_decimal_places_;
_CP_OPT(bool) style_repeat_content_;
_CP_OPT(bool) style_shrink_to_fit_;
_CP_OPT(bool) style_repeat_content_;
_CP_OPT(bool) style_shrink_to_fit_;
_CP_OPT(odf_types::wrap_option) fo_wrap_option_;
};
// style-table-cell-properties-elements
class style_table_cell_properties_elements
{
public:
void add_attributes( const xml::attributes_wc_ptr & Attributes );
private:
// 15.11.6
office_element_ptr style_background_image_;
};
/// style:table-cell-properties
class style_table_cell_properties : public office_element_impl<style_table_cell_properties>
{
public:
@ -264,8 +250,8 @@ private:
virtual void add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name);
public:
style_table_cell_properties_attlist style_table_cell_properties_attlist_;
office_element_ptr style_background_image_;
style_table_cell_properties_attlist attlist_;
office_element_ptr style_background_image_;
};

View File

@ -722,7 +722,6 @@ void style_footer_left::add_child_element( xml::sax * Reader, const std::wstring
content().header_footer_content_.add_child_element(Reader, Ns, Name, getContext());
}
/// style:columns
//////////////////////////////////////////////////////////////////////////////////////////////////
const wchar_t * style_columns::ns = L"style";
const wchar_t * style_columns::name = L"columns";
@ -745,7 +744,6 @@ void style_columns::add_child_element( xml::sax * Reader, const std::wstring & N
}
}
/// style:column
//////////////////////////////////////////////////////////////////////////////////////////////////
const wchar_t * style_column::ns = L"style";
const wchar_t * style_column::name = L"column";
@ -765,7 +763,6 @@ void style_column::add_child_element( xml::sax * Reader, const std::wstring & Ns
CP_NOT_APPLICABLE_ELM();
}
/// style:column-sep
//////////////////////////////////////////////////////////////////////////////////////////////////
const wchar_t * style_column_sep::ns = L"style";
const wchar_t * style_column_sep::name = L":column-sep";
@ -784,8 +781,6 @@ void style_column_sep::add_child_element( xml::sax * Reader, const std::wstring
CP_NOT_APPLICABLE_ELM();
}
/// style:section-properties
//////////////////////////////////////////////////////////////////////////////////////////////////
const wchar_t * style_section_properties::ns = L"style";
const wchar_t * style_section_properties::name = L"section-properties";
@ -811,7 +806,6 @@ void style_section_properties::add_child_element( xml::sax * Reader, const std::
}
}
/// style:header-style
//////////////////////////////////////////////////////////////////////////////////////////////////
const wchar_t * style_header_style::ns = L"style";
const wchar_t * style_header_style::name = L"header-style";
@ -837,7 +831,6 @@ void style_header_style::add_child_element( xml::sax * Reader, const std::wstrin
}
}
/// style:footer-style
//////////////////////////////////////////////////////////////////////////////////////////////////
const wchar_t * style_footer_style::ns = L"style";
const wchar_t * style_footer_style::name = L"footer-style";
@ -863,15 +856,12 @@ void style_footer_style::add_child_element( xml::sax * Reader, const std::wstrin
}
}
/// style-page-layout-attlist
void style_page_layout_attlist::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
CP_APPLY_ATTR(L"style:name", style_name_, std::wstring(L""));
CP_APPLY_ATTR(L"style:page-usage", style_page_usage_, page_usage(page_usage::All));
}
/// style:page-layout
//////////////////////////////////////////////////////////////////////////////////////////////////
const wchar_t * style_page_layout::ns = L"style";
const wchar_t * style_page_layout::name = L"page-layout";
@ -906,16 +896,15 @@ void style_page_layout::add_child_element( xml::sax * Reader, const std::wstring
}
}
// style-page-layout-properties-attlist
void style_page_layout_properties_attlist::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
CP_APPLY_ATTR(L"fo:page-width", fo_page_width_);
CP_APPLY_ATTR(L"fo:page-height", fo_page_height_);
common_num_format_attlist_.add_attributes(Attributes);
common_num_format_prefix_suffix_attlist_.add_attributes(Attributes);
CP_APPLY_ATTR(L"style:paper-tray-name", style_paper_tray_name_);
CP_APPLY_ATTR(L"style:print-orientation", style_print_orientation_);
common_num_format_attlist_.add_attributes(Attributes);
common_num_format_prefix_suffix_attlist_.add_attributes(Attributes);
common_horizontal_margin_attlist_.add_attributes(Attributes);
common_vertical_margin_attlist_.add_attributes(Attributes);
common_margin_attlist_.add_attributes(Attributes);
@ -947,34 +936,6 @@ void style_page_layout_properties_attlist::add_attributes( const xml::attributes
CP_APPLY_ATTR(L"style:layout-grid-display", style_layout_grid_display_);
}
/*
Choice [0..6]
[ ] w:headerReference Header Reference
[ ] w:footerReference Footer Reference
[ ] from group w:EG_SectPrContents
[ ] Sequence
[ ] w:footnotePr Section-Wide Footnote Properties
[ ] w:endnotePr Section-Wide Endnote Properties
[ ] w:type Section Type
[x] w:pgSz Page Size
[ ] w:pgMar Page Margins
[ ] w:paperSrc Paper Source Information
[ ] w:pgBorders Page Borders
[ ] w:lnNumType Line Numbering Settings
[ ] w:pgNumType Page Numbering Settings
[ ] w:cols Column Definitions
[ ] w:formProt Only Allow Editing of Form Fields
[ ] w:vAlign Vertical Text Alignment on Page
[ ] w:noEndnote Suppress Endnotes In Document
[ ] w:titlePg Different First Page Headers and Footers
[ ] w:textDirection Text Flow Direction
[ ] w:bidi Right to Left Section Layout
[ ] w:rtlGutter Gutter on Right Side of Page
[ ] w:docGrid Document Grid
[ ] w:printerSettings Reference to Printer Settings Data
[ ] w:sectPrChange Revision Information for Section Properties
*/
namespace {
std::wstring process_page_margin(const _CP_OPT(length_or_percent) & Val,
@ -1012,7 +973,7 @@ void style_page_layout_properties_attlist::docx_convert_serialize(std::wostream
//Context.set_settings_property(odf_reader::_property(L"UnormalWidthPage",val));
val =31680;//22"
}
w_w = boost::lexical_cast<std::wstring>(val);
w_w = std::to_wstring(val);
}
if (fo_page_height_)
{
@ -1199,7 +1160,7 @@ void style_page_layout_properties_attlist::pptx_convert(oox::pptx_conversion_con
h = fo_page_height_->get_value_unit(length::emu);
if (h < 914400) h = 914400;
w_h = boost::lexical_cast<std::wstring>(h);
w_h = std::to_wstring(h);
}
std::wstring w_orient = L"custom";
@ -1259,18 +1220,18 @@ const wchar_t * style_page_layout_properties::name = L"page-layout-properties";
void style_page_layout_properties::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
style_page_layout_properties_attlist_.add_attributes(Attributes);
attlist_.add_attributes(Attributes);
}
void style_page_layout_properties::add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name)
{
style_page_layout_properties_elements_.add_child_element(Reader, Ns, Name, getContext());
elements_.add_child_element(Reader, Ns, Name, getContext());
}
bool style_page_layout_properties::docx_background_serialize(std::wostream & strm, oox::docx_conversion_context & Context, oox::_oox_fill & fill, int id)
{
if (style_page_layout_properties_attlist_.common_background_color_attlist_.fo_background_color_ &&
style_page_layout_properties_attlist_.common_background_color_attlist_.fo_background_color_->get_type() == background_color::Transparent)
if (attlist_.common_background_color_attlist_.fo_background_color_ &&
attlist_.common_background_color_attlist_.fo_background_color_->get_type() == background_color::Transparent)
return true; //??
//прозрачный фон
@ -1280,8 +1241,8 @@ bool style_page_layout_properties::docx_background_serialize(std::wostream & str
{
std::wstring color = L"ffffff";
if (style_page_layout_properties_attlist_.common_background_color_attlist_.fo_background_color_)
color = style_page_layout_properties_attlist_.common_background_color_attlist_.fo_background_color_->get_color().get_hex_value();
if (attlist_.common_background_color_attlist_.fo_background_color_)
color = attlist_.common_background_color_attlist_.fo_background_color_->get_color().get_hex_value();
CP_XML_ATTR(L"w:color", color);
@ -1290,9 +1251,91 @@ bool style_page_layout_properties::docx_background_serialize(std::wostream & str
}
return true;
}
void style_page_layout_properties::xlsx_convert(oox::xlsx_conversion_context & Context)
{
}
void style_page_layout_properties::xlsx_serialize(std::wostream & strm, oox::xlsx_conversion_context & Context)
{
CP_XML_WRITER(strm)
{
odf_types::common_horizontal_margin_attlist horizontal_margins = attlist_.common_horizontal_margin_attlist_;
odf_types::common_vertical_margin_attlist vertical_margins = attlist_.common_vertical_margin_attlist_;
if (horizontal_margins.fo_margin_left_ || horizontal_margins.fo_margin_right_ ||
vertical_margins.fo_margin_top_ || vertical_margins.fo_margin_bottom_ )
{
//_CP_OPT(odf_types::length) margin_top, margin_bottom;
//margin_top = Context.get_header_footer_context().header();
//margin_bottom = Context.get_header_footer_context().footer();
CP_XML_NODE(L"pageMargins")
{
if (horizontal_margins.fo_margin_left_ && horizontal_margins.fo_margin_left_->get_type() == odf_types::length_or_percent::Length)
CP_XML_ATTR(L"left" , horizontal_margins.fo_margin_left_->get_length().get_value_unit(odf_types::length::inch));
if (horizontal_margins.fo_margin_right_ && horizontal_margins.fo_margin_right_->get_type() == odf_types::length_or_percent::Length)
CP_XML_ATTR(L"right" , horizontal_margins.fo_margin_right_->get_length().get_value_unit(odf_types::length::inch));
if (vertical_margins.fo_margin_top_ && vertical_margins.fo_margin_top_->get_type() == odf_types::length_or_percent::Length)
CP_XML_ATTR(L"top" , vertical_margins.fo_margin_top_->get_length().get_value_unit(odf_types::length::inch));
if (vertical_margins.fo_margin_bottom_ && vertical_margins.fo_margin_bottom_->get_type() == odf_types::length_or_percent::Length)
CP_XML_ATTR(L"bottom" , vertical_margins.fo_margin_bottom_->get_length().get_value_unit(odf_types::length::inch));
CP_XML_ATTR(L"header" , vertical_margins.fo_margin_top_->get_length().get_value_unit(odf_types::length::inch));
CP_XML_ATTR(L"footer" , vertical_margins.fo_margin_bottom_->get_length().get_value_unit(odf_types::length::inch));
}
}
if (attlist_.fo_page_width_ || attlist_.fo_page_height_ || attlist_.style_print_orientation_)
{
CP_XML_NODE(L"pageSetup")
{
double h = 0, w = 0;
if (attlist_.fo_page_width_)
{
w = attlist_.fo_page_width_->get_value_unit(length::mm);
CP_XML_ATTR(L"paperWidth", (int)w);
}
if (attlist_.fo_page_height_)
{
h = attlist_.fo_page_height_->get_value_unit(length::mm);
CP_XML_ATTR(L"paperHeight", (int)h);
}
CP_XML_ATTR(L"paperUnits", L"mm");
if (attlist_.style_print_orientation_)
{
CP_XML_ATTR(L"orientation", *attlist_.style_print_orientation_);
}
}
}
if (elements_.style_background_image_)
{
oox::_oox_fill fill;
Compute_GraphicFill(attlist_.common_draw_fill_attlist_, elements_.style_background_image_, Context.root()->odf_context().drawStyles(), fill);
if (fill.bitmap)
{
if ( fill.bitmap->rId.empty())
{
std::wstring href = fill.bitmap->xlink_href_;
fill.bitmap->rId = Context.get_mediaitems().add_or_find(href, oox::typeImage, fill.bitmap->isInternal, href);
Context.get_drawing_context().get_drawings()->add(fill.bitmap->isInternal, fill.bitmap->rId, href, oox::typeImage, true);
}
CP_XML_NODE(L"picture")
{
CP_XML_ATTR(L"r:id", fill.bitmap->rId );
}
}
}
}
}
void style_page_layout_properties::docx_convert_serialize(std::wostream & strm, oox::docx_conversion_context & Context)
{
style_columns * columns = dynamic_cast<style_columns *>( style_page_layout_properties_elements_.style_columns_.get());
style_columns * columns = dynamic_cast<style_columns *>( elements_.style_columns_.get());
CP_XML_WRITER(strm)
{
@ -1325,14 +1368,14 @@ void style_page_layout_properties::docx_convert_serialize(std::wostream & strm,
oox::section_context::_section & section = Context.get_section_context().get();
style_page_layout_properties_attlist_.docx_convert_serialize(strm, Context, section.margin_left_, section.margin_right_);
attlist_.docx_convert_serialize(strm, Context, section.margin_left_, section.margin_right_);
//todooo при появлении еще накладок - переписать !!
}
}
}
void style_page_layout_properties::pptx_convert(oox::pptx_conversion_context & Context)
{
style_page_layout_properties_attlist_.pptx_convert(Context);
attlist_.pptx_convert(Context);
}
@ -1363,10 +1406,10 @@ void style_page_layout_properties_elements::add_child_element( xml::sax * Reader
//////////////////////////////////////////////////////////////////////////////////////////////////
void style_master_page_attlist::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
CP_APPLY_ATTR(L"style:name", style_name_);
CP_APPLY_ATTR(L"style:display-name", style_display_name_);
CP_APPLY_ATTR(L"style:page-layout-name", style_page_layout_name_);
CP_APPLY_ATTR(L"draw:style-name", draw_style_name_);
CP_APPLY_ATTR(L"style:name", style_name_);
CP_APPLY_ATTR(L"style:display-name", style_display_name_);
CP_APPLY_ATTR(L"style:page-layout-name",style_page_layout_name_);
CP_APPLY_ATTR(L"draw:style-name", draw_style_name_);
CP_APPLY_ATTR(L"style:next-style-name", style_next_style_name_);
}
@ -1382,7 +1425,7 @@ std::wostream & style_master_page::text_to_stream(std::wostream & _Wostream) con
void style_master_page::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
style_master_page_attlist_.add_attributes(Attributes);
attlist_.add_attributes(Attributes);
}
void style_master_page::add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name)
@ -1457,9 +1500,9 @@ int style_master_page::find_placeHolderIndex(presentation_class::type placeHolde
void style_master_page::pptx_convert(oox::pptx_conversion_context & Context)
{
if (style_master_page_attlist_.draw_style_name_)
if (attlist_.draw_style_name_)
{
std::wstring style_name = style_master_page_attlist_.draw_style_name_.get();
std::wstring style_name = attlist_.draw_style_name_.get();
style_instance * style_inst = Context.root()->odf_context().styleContainer().style_by_name(style_name,style_family::DrawingPage,true);
if ((style_inst) && (style_inst->content()))

View File

@ -442,7 +442,6 @@ public:
_CP_OPT(std::wstring) style_next_style_name_;
};
// style:master-page
class style_master_page;
typedef boost::shared_ptr<style_master_page> style_master_page_ptr;
@ -465,7 +464,7 @@ private:
public:
int find_placeHolderIndex(odf_types::presentation_class::type placeHolder,int & last_idx);
style_master_page_attlist style_master_page_attlist_;
style_master_page_attlist attlist_;
office_element_ptr style_header_;
office_element_ptr style_header_left_;
@ -975,15 +974,17 @@ public:
static const ElementType type = typeStylePageLayout;
CPDOCCORE_DEFINE_VISITABLE();
void docx_convert_serialize(std::wostream & strm, oox::docx_conversion_context & Context);
void pptx_convert(oox::pptx_conversion_context & Context);
void docx_convert_serialize (std::wostream & strm, oox::docx_conversion_context & Context);
void pptx_convert (oox::pptx_conversion_context & Context);
void xlsx_convert (oox::xlsx_conversion_context & Context);
bool docx_background_serialize(std::wostream & strm, oox::docx_conversion_context & Context, oox::_oox_fill & fill, int id);
void xlsx_serialize(std::wostream & strm, oox::xlsx_conversion_context & Context);
style_page_layout_properties() { }
style_page_layout_properties_attlist style_page_layout_properties_attlist_;
style_page_layout_properties_elements style_page_layout_properties_elements_;
style_page_layout_properties_attlist attlist_;
style_page_layout_properties_elements elements_;
private:

View File

@ -81,7 +81,7 @@ void table_table_row::pptx_convert(oox::pptx_conversion_context & Context)
if ((inst) && (inst->content()) && (inst->content()->get_style_table_row_properties()))
{
style_table_row_properties_attlist & row_attlist = inst->content()->get_style_table_row_properties()->style_table_row_properties_attlist_;
style_table_row_properties_attlist & row_attlist = inst->content()->get_style_table_row_properties()->attlist_;
if (row_attlist.style_row_height_)
{
height = (int)( 0.5 +row_attlist.style_row_height_->get_value_unit(length::emu) );

View File

@ -120,12 +120,12 @@ void table_table_row::xlsx_convert(oox::xlsx_conversion_context & Context)
if ((rowStyle) && (rowStyle->content()))
{
const odf_reader::style_table_row_properties * prop = rowStyle->content()->get_style_table_row_properties();
if ((prop) && (prop->style_table_row_properties_attlist_.style_row_height_))
if ((prop) && (prop->attlist_.style_row_height_))
{
row_height = prop->style_table_row_properties_attlist_.style_row_height_->get_value_unit(odf_types::length::pt);
row_height = prop->attlist_.style_row_height_->get_value_unit(odf_types::length::pt);
if ((prop->style_table_row_properties_attlist_.style_use_optimal_row_height_) &&
(*prop->style_table_row_properties_attlist_.style_use_optimal_row_height_==true))
if ((prop->attlist_.style_use_optimal_row_height_) &&
(*prop->attlist_.style_use_optimal_row_height_==true))
{
//автоматическая подстройка высоты.
//нету в оох
@ -478,11 +478,11 @@ void table_table_column::xlsx_convert(oox::xlsx_conversion_context & Context)
{
if (const style_table_column_properties * prop = inst->content()->get_style_table_column_properties())
{
if (prop->style_table_column_properties_attlist_.style_column_width_)
if (prop->attlist_.style_column_width_)
{
pt_width = prop->style_table_column_properties_attlist_.style_column_width_->get_value_unit(length::pt);
cm_width = prop->style_table_column_properties_attlist_.style_column_width_->get_value_unit(length::cm);
in_width = prop->style_table_column_properties_attlist_.style_column_width_->get_value_unit(length::inch);
pt_width = prop->attlist_.style_column_width_->get_value_unit(length::pt);
cm_width = prop->attlist_.style_column_width_->get_value_unit(length::cm);
in_width = prop->attlist_.style_column_width_->get_value_unit(length::inch);
if (collapsed)
{
@ -492,7 +492,7 @@ void table_table_column::xlsx_convert(oox::xlsx_conversion_context & Context)
const double pixDpi = in_width * 96.;
width = pixToSize(pixDpi, Context.getMaxDigitSize().first);
//const double width = cmToChars(prop->style_table_column_properties_attlist_.style_column_width_->get_value_unit(length::cm));
//const double width = cmToChars(prop->attlist_.style_column_width_->get_value_unit(length::cm));
// see ECMA-376 page 1768
if (in_width > 0)

View File

@ -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

View File

@ -65,7 +65,7 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
{ L"mso-spt36" , 7}, // shapetypeBentConnector5,
{ L"mso-spt90" , 7}, // shapetypeBentUpArrow,
{ L"quad-bevel" , 7}, // shapetypeBevel,
{ L"block-arc" , 7}, // shapetypeBlockArc,
{ L"" , 7}, // shapetypeBlockArc,
{ L"mso-spt49" , 7}, // shapetypeBorderCallout1,
{ L"mso-spt50" , 7}, // shapetypeBorderCallout2,
{ L"mso-spt51" , 7}, // shapetypeBorderCallout3,
@ -98,7 +98,7 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
{ L"" , 7}, // shapetypeDiagStripe,
{ L"diamond" , 7}, // shapetypeDiamond,
{ L"" , 7}, // shapetypeDodecagon,
{ L"ring" , 7}, // shapetypeDonut,
{ L"" , 7}, // shapetypeDonut,
{ L"" , 7}, // shapetypeDoubleWave,
{ L"down-arrow" , 7}, // shapetypeDownArrow,
{ L"down-arrow-callout" , 7}, // shapetypeDownArrowCallout,
@ -174,7 +174,7 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
{ L"octagon" , 7}, // shapetypeOctagon,
{ L"parallelogram" , 7}, // shapetypeParallelogram,
{ L"pentagon" , 7}, // shapetypePentagon,
{ L"mso-spt100" , 7}, // shapetypePie,
{ L"" , 7}, // shapetypePie,
{ L"" , 7}, // shapetypePieWedge,
{ L"" , 7}, // shapetypePlaque,
{ L"" , 7}, // shapetypePlaqueTabs,

View File

@ -32,7 +32,7 @@
#include "../oox_shape_defines.h"
// +shapetypeLeftCircularArrow,
// shapetypeLeftRightCircularArrow,
// shapetypeSwooshArrow,
// +shapetypeSwooshArrow,
// +shapetypeCircularArrow
namespace cpdoccore
{
@ -43,158 +43,243 @@ public:
{
odf_type_name =L"ooxml-leftCircularArrow";
enhanced_path = L"M 529769 128373 L 570534 225808 A ?f91 ?f92 ?f93 ?f94 570534 225808 ?f88 ?f90 W ?f95 ?f96 ?f97 ?f98 570534 225808 ?f88 ?f90 L 246425 854941 139301 967187 5691 907641 74093 892667 A ?f138 ?f139 ?f140 ?f141 74093 892667 ?f135 ?f137 W ?f142 ?f143 ?f144 ?f145 74093 892667 ?f135 ?f137 Z N";
text_areas = L"?f48 ?f50 ?f49 ?f51";
glue_points = L"?f40 ?f41 ?f42 ?f43 ?f44 ?f45 ?f46 ?f47";
view_box = L"0 0 1637004 1637004";
enhanced_path = L"M ?f63 ?f64 L ?f69 ?f70 G ?f13 ?f14 ?f210 ?f211 L ?f185 ?f186 ?f57 ?f58 ?f183 ?f184 ?f126 ?f127 G ?f10 ?f12 ?f212 ?f213 Z N";
text_areas = L"?f206 ?f208 ?f207 ?f209";
modifiers = L"10980 1142322 6300000 18900000 12500";
view_box = L"0 0 0 0";
add(L"f0", L"10800000");
add(L"f1", L"5400000");
add(L"f2", L"left");
add(L"f3", L"right");
add(L"f4", L"top");
add(L"f5", L"bottom");
add(L"f6", L"?f5 - ?f4");
add(L"f7", L"?f3 - ?f2");
add(L"f8", L"5419351 / 1725033");
add(L"f9", L"180");
add(L"f10", L"?f7 / 1637004");
add(L"f11", L"?f6 / 1637004");
add(L"f12", L"139301 - 818502");
add(L"f13", L"967187 - 818502");
add(L"f14", L"sqrt(?f12 * ?f12 + ?f13 * ?f13 + 0 * 0)");
add(L"f15", L"atan2(?f12, ?f13)");
add(L"f16", L"?f15 + ?f1");
add(L"f17", L"?f16 * ?f9 / ?f0");
add(L"f18", L"0 - ?f17");
add(L"f19", L"529769 - 818502");
add(L"f20", L"128373 - 818502");
add(L"f21", L"sqrt(?f19 * ?f19 + ?f20 * ?f20 + 0 * 0)");
add(L"f22", L"atan2(?f19, ?f20)");
add(L"f23", L"?f22 + ?f1");
add(L"f24", L"?f23 * ?f9 / ?f0");
add(L"f25", L"0 - ?f24");
add(L"f26", L"74093 - 818502");
add(L"f27", L"892667 - 818502");
add(L"f28", L"sqrt(?f26 * ?f26 + ?f27 * ?f27 + 0 * 0)");
add(L"f29", L"atan2(?f26, ?f27)");
add(L"f30", L"?f29 + ?f1");
add(L"f31", L"?f30 * ?f9 / ?f0");
add(L"f32", L"0 - ?f31");
add(L"f33", L"246425 - 818502");
add(L"f34", L"854941 - 818502");
add(L"f35", L"sqrt(?f33 * ?f33 + ?f34 * ?f34 + 0 * 0)");
add(L"f36", L"atan2(?f33, ?f34)");
add(L"f37", L"?f36 + ?f1");
add(L"f38", L"?f37 * ?f9 / ?f0");
add(L"f39", L"0 - ?f38");
add(L"f40", L"550151 / ?f10");
add(L"f41", L"177091 / ?f11");
add(L"f42", L"5691 / ?f10");
add(L"f43", L"907641 / ?f11");
add(L"f44", L"139301 / ?f10");
add(L"f45", L"967187 / ?f11");
add(L"f46", L"246425 / ?f10");
add(L"f47", L"854941 / ?f11");
add(L"f48", L"289519 / ?f10");
add(L"f49", L"1347485 / ?f10");
add(L"f50", L"289519 / ?f11");
add(L"f51", L"1347485 / ?f11");
add(L"f52", L"21550000 - -4313128");
add(L"f53", L"if(?f52, -4313128, 21550000)");
add(L"f54", L"-21550000 - ?f53");
add(L"f55", L"if(?f54, -21550000, ?f53)");
add(L"f56", L"14837806 + ?f55");
add(L"f57", L"14837806 + ?f1");
add(L"f58", L"?f57 * ?f8 / ?f0");
add(L"f59", L"0 - ?f58");
add(L"f60", L"cos(?f59)");
add(L"f61", L"0 - ?f60");
add(L"f62", L"?f61 * 642475");
add(L"f63", L"sin(?f59)");
add(L"f64", L"0 - ?f63");
add(L"f65", L"?f64 * 642475");
add(L"f66", L"sqrt(?f62 * ?f62 + ?f65 * ?f65 + 0 * 0)");
add(L"f67", L"642475 * 642475 / ?f66");
add(L"f68", L"?f64 * ?f67");
add(L"f69", L"570534 - ?f68");
add(L"f70", L"?f61 * ?f67");
add(L"f71", L"225808 - ?f70");
add(L"f72", L"?f69 - 642475");
add(L"f73", L"?f71 - 642475");
add(L"f74", L"?f69 + 642475");
add(L"f75", L"?f71 + 642475");
add(L"f76", L"?f56 + ?f1");
add(L"f77", L"?f76 * ?f8 / ?f0");
add(L"f78", L"0 - ?f77");
add(L"f79", L"cos(?f78)");
add(L"f80", L"0 - ?f79");
add(L"f81", L"?f80 * 642475");
add(L"f82", L"sin(?f78)");
add(L"f83", L"0 - ?f82");
add(L"f84", L"?f83 * 642475");
add(L"f85", L"sqrt(?f81 * ?f81 + ?f84 * ?f84 + 0 * 0)");
add(L"f86", L"642475 * 642475 / ?f85");
add(L"f87", L"?f83 * ?f86");
add(L"f88", L"?f69 + ?f87");
add(L"f89", L"?f80 * ?f86");
add(L"f90", L"?f71 + ?f89");
add(L"f91", L"if(?f55, 570534, ?f72)");
add(L"f92", L"if(?f55, 225808, ?f73)");
add(L"f93", L"if(?f55, 570534, ?f74)");
add(L"f94", L"if(?f55, 225808, ?f75)");
add(L"f95", L"if(?f55, ?f72, ?f88)");
add(L"f96", L"if(?f55, ?f73, ?f90)");
add(L"f97", L"if(?f55, ?f74, ?f88)");
add(L"f98", L"if(?f55, ?f75, ?f90)");
add(L"f99", L"21550000 - 4379179");
add(L"f100", L"if(?f99, 4379179, 21550000)");
add(L"f101", L"-21550000 - ?f100");
add(L"f102", L"if(?f101, -21550000, ?f100)");
add(L"f103", L"10458627 + ?f102");
add(L"f104", L"10458627 + ?f1");
add(L"f105", L"?f104 * ?f8 / ?f0");
add(L"f106", L"0 - ?f105");
add(L"f107", L"cos(?f106)");
add(L"f108", L"0 - ?f107");
add(L"f109", L"?f108 * 748094");
add(L"f110", L"sin(?f106)");
add(L"f111", L"0 - ?f110");
add(L"f112", L"?f111 * 748094");
add(L"f113", L"sqrt(?f109 * ?f109 + ?f112 * ?f112 + 0 * 0)");
add(L"f114", L"748094 * 748094 / ?f113");
add(L"f115", L"?f111 * ?f114");
add(L"f116", L"74093 - ?f115");
add(L"f117", L"?f108 * ?f114");
add(L"f118", L"892667 - ?f117");
add(L"f119", L"?f116 - 748094");
add(L"f120", L"?f118 - 748094");
add(L"f121", L"?f116 + 748094");
add(L"f122", L"?f118 + 748094");
add(L"f123", L"?f103 + ?f1");
add(L"f124", L"?f123 * ?f8 / ?f0");
add(L"f125", L"0 - ?f124");
add(L"f126", L"cos(?f125)");
add(L"f127", L"0 - ?f126");
add(L"f128", L"?f127 * 748094");
add(L"f129", L"sin(?f125)");
add(L"f130", L"0 - ?f129");
add(L"f131", L"?f130 * 748094");
add(L"f132", L"sqrt(?f128 * ?f128 + ?f131 * ?f131 + 0 * 0)");
add(L"f133", L"748094 * 748094 / ?f132");
add(L"f134", L"?f130 * ?f133");
add(L"f135", L"?f116 + ?f134");
add(L"f136", L"?f127 * ?f133");
add(L"f137", L"?f118 + ?f136");
add(L"f138", L"if(?f102, 74093, ?f119)");
add(L"f139", L"if(?f102, 892667, ?f120)");
add(L"f140", L"if(?f102, 74093, ?f121)");
add(L"f141", L"if(?f102, 892667, ?f122)");
add(L"f142", L"if(?f102, ?f119, ?f135)");
add(L"f143", L"if(?f102, ?f120, ?f137)");
add(L"f144", L"if(?f102, ?f121, ?f135)");
add(L"f145", L"if(?f102, ?f122, ?f137)");
add(L"f0", L"if(0-$4 ,0,if(25000-$4 ,$4 ,25000))");
add(L"f1", L"?f0 *2/1");
add(L"f2", L"if(0-$0 ,0,if(?f1 -$0 ,$0 ,?f1 ))");
add(L"f3", L"if(1-$2 ,1,if(21599999-$2 ,$2 ,21599999))");
add(L"f4", L"if(0-$3 ,0,if(21599999-$3 ,$3 ,21599999))");
add(L"f5", L"min(logwidth,logheight)");
add(L"f6", L"?f5 *?f2 /100000");
add(L"f7", L"?f5 *?f0 /100000");
add(L"f8", L"?f6 *1/2");
add(L"f9", L"logwidth/2");
add(L"f10", L"?f9 +?f8 -?f7 ");
add(L"f11", L"logheight/2");
add(L"f12", L"?f11 +?f8 -?f7 ");
add(L"f13", L"?f10 +0-?f6 ");
add(L"f14", L"?f12 +0-?f6 ");
add(L"f15", L"?f13 +?f8 -0");
add(L"f16", L"?f14 +?f8 -0");
add(L"f17", L"?f15 *sin(pi*(?f3 )/10800000)");
add(L"f18", L"?f16 *cos(pi*(?f3 )/10800000)");
add(L"f19", L"?f15 *(cos(atan2(?f17 ,?f18 )))");
add(L"f20", L"?f16 *(sin(atan2(?f17 ,?f18 )))");
add(L"f21", L"logwidth/2");
add(L"f22", L"?f21 +?f19 -0");
add(L"f23", L"logheight/2");
add(L"f24", L"?f23 +?f20 -0");
add(L"f25", L"min(?f13 ,?f14 )");
add(L"f26", L"?f19 *?f19 /1");
add(L"f27", L"?f20 *?f20 /1");
add(L"f28", L"?f25 *?f25 /1");
add(L"f29", L"?f26 +0-?f28 ");
add(L"f30", L"?f27 +0-?f28 ");
add(L"f31", L"?f29 *?f30 /?f26 ");
add(L"f32", L"?f31 *1/?f27 ");
add(L"f33", L"1+0-?f32 ");
add(L"f34", L"sqrt(?f33 )");
add(L"f35", L"?f29 *1/?f19 ");
add(L"f36", L"?f35 *1/?f20 ");
add(L"f37", L"(1+?f34 )/?f36 ");
add(L"f38", L"(10800000*atan2(?f37 ,1))/pi");
add(L"f39", L"?f38 +21600000-0");
add(L"f40", L"if(?f38 ,?f38 ,?f39 )");
add(L"f41", L"?f40 +0-?f3 ");
add(L"f42", L"?f41 +21600000-0");
add(L"f43", L"if(?f41 ,?f41 ,?f42 )");
add(L"f44", L"?f43 +0-10800000");
add(L"f45", L"?f43 +0-21600000");
add(L"f46", L"if(?f44 ,?f45 ,?f43 )");
add(L"f47", L"abs(?f46 )");
add(L"f48", L"?f47 *-1/1");
add(L"f49", L"abs($1 )");
add(L"f50", L"?f49 *-1/1");
add(L"f51", L"if(?f48 -?f50 ,?f48 ,if(0-?f50 ,?f50 ,0))");
add(L"f52", L"?f3 +?f51 -0");
add(L"f53", L"?f15 *sin(pi*(?f52 )/10800000)");
add(L"f54", L"?f16 *cos(pi*(?f52 )/10800000)");
add(L"f55", L"?f15 *(cos(atan2(?f53 ,?f54 )))");
add(L"f56", L"?f16 *(sin(atan2(?f53 ,?f54 )))");
add(L"f57", L"?f21 +?f55 -0");
add(L"f58", L"?f23 +?f56 -0");
add(L"f59", L"?f10 *sin(pi*(?f4 )/10800000)");
add(L"f60", L"?f12 *cos(pi*(?f4 )/10800000)");
add(L"f61", L"?f10 *(cos(atan2(?f59 ,?f60 )))");
add(L"f62", L"?f12 *(sin(atan2(?f59 ,?f60 )))");
add(L"f63", L"?f21 +?f61 -0");
add(L"f64", L"?f23 +?f62 -0");
add(L"f65", L"?f13 *sin(pi*(?f4 )/10800000)");
add(L"f66", L"?f14 *cos(pi*(?f4 )/10800000)");
add(L"f67", L"?f13 *(cos(atan2(?f65 ,?f66 )))");
add(L"f68", L"?f14 *(sin(atan2(?f65 ,?f66 )))");
add(L"f69", L"?f21 +?f67 -0");
add(L"f70", L"?f23 +?f68 -0");
add(L"f71", L"?f7 *cos(pi*(?f52 )/10800000)");
add(L"f72", L"?f7 *sin(pi*(?f52 )/10800000)");
add(L"f73", L"?f22 +?f71 -0");
add(L"f74", L"?f24 +?f72 -0");
add(L"f75", L"?f7 *cos(pi*(?f52 )/10800000)");
add(L"f76", L"?f7 *sin(pi*(?f52 )/10800000)");
add(L"f77", L"?f22 +0-?f75 ");
add(L"f78", L"?f24 +0-?f76 ");
add(L"f79", L"?f77 +0-?f21 ");
add(L"f80", L"?f78 +0-?f23 ");
add(L"f81", L"?f73 +0-?f21 ");
add(L"f82", L"?f74 +0-?f23 ");
add(L"f83", L"min(?f10 ,?f12 )");
add(L"f84", L"?f79 *?f83 /?f10 ");
add(L"f85", L"?f80 *?f83 /?f12 ");
add(L"f86", L"?f81 *?f83 /?f10 ");
add(L"f87", L"?f82 *?f83 /?f12 ");
add(L"f88", L"?f86 +0-?f84 ");
add(L"f89", L"?f87 +0-?f85 ");
add(L"f90", L"sqrt(?f88 *?f88 +?f89 *?f89 +0*0)");
add(L"f91", L"?f84 *?f87 /1");
add(L"f92", L"?f86 *?f85 /1");
add(L"f93", L"?f91 +0-?f92 ");
add(L"f94", L"?f83 *?f83 /1");
add(L"f95", L"?f90 *?f90 /1");
add(L"f96", L"?f94 *?f95 /1");
add(L"f97", L"?f93 *?f93 /1");
add(L"f98", L"?f96 +0-?f97 ");
add(L"f99", L"max(?f98 ,0)");
add(L"f100", L"sqrt(?f99 )");
add(L"f101", L"?f89 *-1/1");
add(L"f102", L"if(?f101 ,-1,1)");
add(L"f103", L"?f102 *?f88 /1");
add(L"f104", L"?f103 *?f100 /1");
add(L"f105", L"?f93 *?f89 /1");
add(L"f106", L"(?f105 +?f104 )/?f95 ");
add(L"f107", L"?f105 +0-?f104 ");
add(L"f108", L"?f107 *1/?f95 ");
add(L"f109", L"abs(?f89 )");
add(L"f110", L"?f109 *?f100 /1");
add(L"f111", L"?f93 *?f88 /-1");
add(L"f112", L"(?f111 +?f110 )/?f95 ");
add(L"f113", L"?f111 +0-?f110 ");
add(L"f114", L"?f113 *1/?f95 ");
add(L"f115", L"?f86 +0-?f106 ");
add(L"f116", L"?f86 +0-?f108 ");
add(L"f117", L"?f87 +0-?f112 ");
add(L"f118", L"?f87 +0-?f114 ");
add(L"f119", L"sqrt(?f115 *?f115 +?f117 *?f117 +0*0)");
add(L"f120", L"sqrt(?f116 *?f116 +?f118 *?f118 +0*0)");
add(L"f121", L"?f120 +0-?f119 ");
add(L"f122", L"if(?f121 ,?f106 ,?f108 )");
add(L"f123", L"if(?f121 ,?f112 ,?f114 )");
add(L"f124", L"?f122 *?f10 /?f83 ");
add(L"f125", L"?f123 *?f12 /?f83 ");
add(L"f126", L"?f21 +?f124 -0");
add(L"f127", L"?f23 +?f125 -0");
add(L"f128", L"?f79 *?f25 /?f13 ");
add(L"f129", L"?f80 *?f25 /?f14 ");
add(L"f130", L"?f81 *?f25 /?f13 ");
add(L"f131", L"?f82 *?f25 /?f14 ");
add(L"f132", L"?f130 +0-?f128 ");
add(L"f133", L"?f131 +0-?f129 ");
add(L"f134", L"sqrt(?f132 *?f132 +?f133 *?f133 +0*0)");
add(L"f135", L"?f128 *?f131 /1");
add(L"f136", L"?f130 *?f129 /1");
add(L"f137", L"?f135 +0-?f136 ");
add(L"f138", L"?f25 *?f25 /1");
add(L"f139", L"?f134 *?f134 /1");
add(L"f140", L"?f138 *?f139 /1");
add(L"f141", L"?f137 *?f137 /1");
add(L"f142", L"?f140 +0-?f141 ");
add(L"f143", L"max(?f142 ,0)");
add(L"f144", L"sqrt(?f143 )");
add(L"f145", L"?f102 *?f132 /1");
add(L"f146", L"?f145 *?f144 /1");
add(L"f147", L"?f137 *?f133 /1");
add(L"f148", L"(?f147 +?f146 )/?f139 ");
add(L"f149", L"?f147 +0-?f146 ");
add(L"f150", L"?f149 *1/?f139 ");
add(L"f151", L"abs(?f133 )");
add(L"f152", L"?f151 *?f144 /1");
add(L"f153", L"?f137 *?f132 /-1");
add(L"f154", L"(?f153 +?f152 )/?f139 ");
add(L"f155", L"?f153 +0-?f152 ");
add(L"f156", L"?f155 *1/?f139 ");
add(L"f157", L"?f128 +0-?f148 ");
add(L"f158", L"?f128 +0-?f150 ");
add(L"f159", L"?f129 +0-?f154 ");
add(L"f160", L"?f129 +0-?f156 ");
add(L"f161", L"sqrt(?f157 *?f157 +?f159 *?f159 +0*0)");
add(L"f162", L"sqrt(?f158 *?f158 +?f160 *?f160 +0*0)");
add(L"f163", L"?f162 +0-?f161 ");
add(L"f164", L"if(?f163 ,?f148 ,?f150 )");
add(L"f165", L"if(?f163 ,?f154 ,?f156 )");
add(L"f166", L"?f164 *?f13 /?f25 ");
add(L"f167", L"?f165 *?f14 /?f25 ");
add(L"f168", L"?f21 +?f166 -0");
add(L"f169", L"?f23 +?f167 -0");
add(L"f170", L"(10800000*atan2(?f167 ,?f166 ))/pi");
add(L"f171", L"?f170 +21600000-0");
add(L"f172", L"if(?f170 ,?f170 ,?f171 )");
add(L"f173", L"?f4 +0-?f172 ");
add(L"f174", L"?f173 +21600000-0");
add(L"f175", L"if(?f173 ,?f173 ,?f174 )");
add(L"f176", L"?f172 +?f175 -0");
add(L"f177", L"0+0-?f175 ");
add(L"f178", L"?f126 +0-?f168 ");
add(L"f179", L"?f127 +0-?f169 ");
add(L"f180", L"sqrt(?f178 *?f178 +?f179 *?f179 +0*0)");
add(L"f181", L"?f180 *1/2");
add(L"f182", L"?f181 +0-?f7 ");
add(L"f183", L"if(?f182 ,?f126 ,?f73 )");
add(L"f184", L"if(?f182 ,?f127 ,?f74 )");
add(L"f185", L"if(?f182 ,?f168 ,?f77 )");
add(L"f186", L"if(?f182 ,?f169 ,?f78 )");
add(L"f187", L"(10800000*atan2(?f125 ,?f124 ))/pi");
add(L"f188", L"?f187 +21600000-0");
add(L"f189", L"if(?f187 ,?f187 ,?f188 )");
add(L"f190", L"?f189 +0-?f4 ");
add(L"f191", L"?f190 +0-21600000");
add(L"f192", L"if(?f190 ,?f191 ,?f190 )");
add(L"f193", L"?f4 +?f192 -0");
add(L"f194", L"0+0-?f192 ");
add(L"f195", L"?f15 *sin(pi*(?f4 )/10800000)");
add(L"f196", L"?f16 *cos(pi*(?f4 )/10800000)");
add(L"f197", L"?f15 *(cos(atan2(?f195 ,?f196 )))");
add(L"f198", L"?f16 *(sin(atan2(?f195 ,?f196 )))");
add(L"f199", L"?f21 +?f197 -0");
add(L"f200", L"?f23 +?f198 -0");
add(L"f201", L"?f4 +5400000-0");
add(L"f202", L"?f52 +0-5400000");
add(L"f203", L"?f52 +10800000-0");
add(L"f204", L"?f10 *cos(pi*(2700000)/10800000)");
add(L"f205", L"?f12 *sin(pi*(2700000)/10800000)");
add(L"f206", L"?f21 +0-?f204 ");
add(L"f207", L"?f21 +?f204 -0");
add(L"f208", L"?f23 +0-?f205 ");
add(L"f209", L"?f23 +?f205 -0");
add(L"f210", L"(?f176 )/60000.0");
add(L"f211", L"(?f177 )/60000.0");
add(L"f212", L"(?f193 )/60000.0");
add(L"f213", L"(?f194 )/60000.0");
/////////////////////////////////////////////////////////
_handle h;
h.position = L"?f57 ?f58";
handles.push_back(h);
h.position = L"?f63 ?f64";
handles.push_back(h);
h.position = L"?f126 ?f127";
h.r_minimum = L"0";
h.r_maximum = L"?f1";
handles.push_back(h);
h.position = L"?f77 ?f78";
h.r_minimum = L"0";
h.r_maximum = L"25000";
handles.push_back(h);
}
};
class oox_shape_CircularArrow : public oox_shape
@ -202,160 +287,291 @@ class oox_shape_CircularArrow : public oox_shape
public:
oox_shape_CircularArrow()
{
odf_type_name =L"ooxml-circularArrow";
odf_type_name = L"ooxml-circularArrow";
enhanced_path = L"M 832838 101692 A ?f91 ?f92 ?f93 ?f94 832838 101692 ?f88 ?f90 W ?f95 ?f96 ?f97 ?f98 832838 101692 ?f88 ?f90 L 1755675 1929758 1616897 1879250 1618409 1725100 1657499 1783381 A ?f138 ?f139 ?f140 ?f141 1657499 1783381 ?f135 ?f137 W ?f142 ?f143 ?f144 ?f145 1657499 1783381 ?f135 ?f137 Z N";
text_areas = L"?f48 ?f50 ?f49 ?f51";
glue_points = L"?f40 ?f41 ?f42 ?f43 ?f44 ?f45 ?f46 ?f47";
view_box = L"0 0 2165070 2165070";
enhanced_path = L"M ?f60 ?f61 G ?f10 ?f12 ?f197 ?f198 L ?f172 ?f173 ?f54 ?f55 ?f174 ?f175 ?f159 ?f160 G ?f13 ?f14 ?f199 ?f200 Z N";
text_areas = L"?f193 ?f195 ?f194 ?f196";
modifiers = L"12500 515062 20457681 17744048 18489";
view_box = L"0 0 0 0";
add(L"f0", L"10800000");
add(L"f1", L"5400000");
add(L"f2", L"left");
add(L"f3", L"right");
add(L"f4", L"top");
add(L"f5", L"bottom");
add(L"f6", L"?f5 - ?f4");
add(L"f7", L"?f3 - ?f2");
add(L"f8", L"5419351 / 1725033");
add(L"f9", L"180");
add(L"f10", L"?f7 / 2165070");
add(L"f11", L"?f6 / 2165070");
add(L"f12", L"1616897 - 1082535");
add(L"f13", L"1879250 - 1082535");
add(L"f14", L"sqrt(?f12 * ?f12 + ?f13 * ?f13 + 0 * 0)");
add(L"f15", L"atan2(?f12, ?f13)");
add(L"f16", L"?f15 + ?f1");
add(L"f17", L"?f16 * ?f9 / ?f0");
add(L"f18", L"0 - ?f17");
add(L"f19", L"832838 - 1082535");
add(L"f20", L"101692 - 1082535");
add(L"f21", L"sqrt(?f19 * ?f19 + ?f20 * ?f20 + 0 * 0)");
add(L"f22", L"atan2(?f19, ?f20)");
add(L"f23", L"?f22 + ?f1");
add(L"f24", L"?f23 * ?f9 / ?f0");
add(L"f25", L"0 - ?f24");
add(L"f26", L"1716572 - 1082535");
add(L"f27", L"1871457 - 1082535");
add(L"f28", L"sqrt(?f26 * ?f26 + ?f27 * ?f27 + 0 * 0)");
add(L"f29", L"atan2(?f26, ?f27)");
add(L"f30", L"?f29 + ?f1");
add(L"f31", L"?f30 * ?f9 / ?f0");
add(L"f32", L"0 - ?f31");
add(L"f33", L"1618409 - 1082535");
add(L"f34", L"1725100 - 1082535");
add(L"f35", L"sqrt(?f33 * ?f33 + ?f34 * ?f34 + 0 * 0)");
add(L"f36", L"atan2(?f33, ?f34)");
add(L"f37", L"?f36 + ?f1");
add(L"f38", L"?f37 * ?f9 / ?f0");
add(L"f39", L"0 - ?f38");
add(L"f40", L"845866 / ?f10");
add(L"f41", L"152866 / ?f11");
add(L"f42", L"1755675 / ?f10");
add(L"f43", L"1929758 / ?f11");
add(L"f44", L"1616897 / ?f10");
add(L"f45", L"1879250 / ?f11");
add(L"f46", L"1618409 / ?f10");
add(L"f47", L"1725100 / ?f11");
add(L"f48", L"366853 / ?f10");
add(L"f49", L"1798217 / ?f10");
add(L"f50", L"366853 / ?f11");
add(L"f51", L"1798217 / ?f11");
add(L"f52", L"21550000 - 9329679");
add(L"f53", L"if(?f52, 9329679, 21550000)");
add(L"f54", L"-21550000 - ?f53");
add(L"f55", L"if(?f54, -21550000, ?f53)");
add(L"f56", L"15343043 + ?f55");
add(L"f57", L"15343043 + ?f1");
add(L"f58", L"?f57 * ?f8 / ?f0");
add(L"f59", L"0 - ?f58");
add(L"f60", L"cos(?f59)");
add(L"f61", L"0 - ?f60");
add(L"f62", L"?f61 * 1012127");
add(L"f63", L"sin(?f59)");
add(L"f64", L"0 - ?f63");
add(L"f65", L"?f64 * 1012127");
add(L"f66", L"sqrt(?f62 * ?f62 + ?f65 * ?f65 + 0 * 0)");
add(L"f67", L"1012127 * 1012127 / ?f66");
add(L"f68", L"?f64 * ?f67");
add(L"f69", L"832838 - ?f68");
add(L"f70", L"?f61 * ?f67");
add(L"f71", L"101692 - ?f70");
add(L"f72", L"?f69 - 1012127");
add(L"f73", L"?f71 - 1012127");
add(L"f74", L"?f69 + 1012127");
add(L"f75", L"?f71 + 1012127");
add(L"f76", L"?f56 + ?f1");
add(L"f77", L"?f76 * ?f8 / ?f0");
add(L"f78", L"0 - ?f77");
add(L"f79", L"cos(?f78)");
add(L"f80", L"0 - ?f79");
add(L"f81", L"?f80 * 1012127");
add(L"f82", L"sin(?f78)");
add(L"f83", L"0 - ?f82");
add(L"f84", L"?f83 * 1012127");
add(L"f85", L"sqrt(?f81 * ?f81 + ?f84 * ?f84 + 0 * 0)");
add(L"f86", L"1012127 * 1012127 / ?f85");
add(L"f87", L"?f83 * ?f86");
add(L"f88", L"?f69 + ?f87");
add(L"f89", L"?f80 * ?f86");
add(L"f90", L"?f71 + ?f89");
add(L"f91", L"if(?f55, 832838, ?f72)");
add(L"f92", L"if(?f55, 101692, ?f73)");
add(L"f93", L"if(?f55, 832838, ?f74)");
add(L"f94", L"if(?f55, 101692, ?f75)");
add(L"f95", L"if(?f55, ?f72, ?f88)");
add(L"f96", L"if(?f55, ?f73, ?f90)");
add(L"f97", L"if(?f55, ?f74, ?f88)");
add(L"f98", L"if(?f55, ?f75, ?f90)");
add(L"f99", L"21550000 - -9295060");
add(L"f100", L"if(?f99, -9295060, 21550000)");
add(L"f101", L"-21550000 - ?f100");
add(L"f102", L"if(?f101, -21550000, ?f100)");
add(L"f103", L"3038103 + ?f102");
add(L"f104", L"3038103 + ?f1");
add(L"f105", L"?f104 * ?f8 / ?f0");
add(L"f106", L"0 - ?f105");
add(L"f107", L"cos(?f106)");
add(L"f108", L"0 - ?f107");
add(L"f109", L"?f108 * 906515");
add(L"f110", L"sin(?f106)");
add(L"f111", L"0 - ?f110");
add(L"f112", L"?f111 * 906515");
add(L"f113", L"sqrt(?f109 * ?f109 + ?f112 * ?f112 + 0 * 0)");
add(L"f114", L"906515 * 906515 / ?f113");
add(L"f115", L"?f111 * ?f114");
add(L"f116", L"1657499 - ?f115");
add(L"f117", L"?f108 * ?f114");
add(L"f118", L"1783381 - ?f117");
add(L"f119", L"?f116 - 906515");
add(L"f120", L"?f118 - 906515");
add(L"f121", L"?f116 + 906515");
add(L"f122", L"?f118 + 906515");
add(L"f123", L"?f103 + ?f1");
add(L"f124", L"?f123 * ?f8 / ?f0");
add(L"f125", L"0 - ?f124");
add(L"f126", L"cos(?f125)");
add(L"f127", L"0 - ?f126");
add(L"f128", L"?f127 * 906515");
add(L"f129", L"sin(?f125)");
add(L"f130", L"0 - ?f129");
add(L"f131", L"?f130 * 906515");
add(L"f132", L"sqrt(?f128 * ?f128 + ?f131 * ?f131 + 0 * 0)");
add(L"f133", L"906515 * 906515 / ?f132");
add(L"f134", L"?f130 * ?f133");
add(L"f135", L"?f116 + ?f134");
add(L"f136", L"?f127 * ?f133");
add(L"f137", L"?f118 + ?f136");
add(L"f138", L"if(?f102, 1657499, ?f119)");
add(L"f139", L"if(?f102, 1783381, ?f120)");
add(L"f140", L"if(?f102, 1657499, ?f121)");
add(L"f141", L"if(?f102, 1783381, ?f122)");
add(L"f142", L"if(?f102, ?f119, ?f135)");
add(L"f143", L"if(?f102, ?f120, ?f137)");
add(L"f144", L"if(?f102, ?f121, ?f135)");
add(L"f145", L"if(?f102, ?f122, ?f137)");
add(L"f0", L"if(0-$4 ,0,if(25000-$4 ,$4 ,25000))");
add(L"f1", L"?f0 *2/1");
add(L"f2", L"if(0-$0 ,0,if(?f1 -$0 ,$0 ,?f1 ))");
add(L"f3", L"if(1-$2 ,1,if(21599999-$2 ,$2 ,21599999))");
add(L"f4", L"if(0-$3 ,0,if(21599999-$3 ,$3 ,21599999))");
add(L"f5", L"min(logwidth,logheight)");
add(L"f6", L"?f5 *?f2 /100000");
add(L"f7", L"?f5 *?f0 /100000");
add(L"f8", L"?f6 *1/2");
add(L"f9", L"logwidth/2");
add(L"f10", L"?f9 +?f8 -?f7 ");
add(L"f11", L"logheight/2");
add(L"f12", L"?f11 +?f8 -?f7 ");
add(L"f13", L"?f10 +0-?f6 ");
add(L"f14", L"?f12 +0-?f6 ");
add(L"f15", L"?f13 +?f8 -0");
add(L"f16", L"?f14 +?f8 -0");
add(L"f17", L"?f15 *sin(pi*(?f3 )/10800000)");
add(L"f18", L"?f16 *cos(pi*(?f3 )/10800000)");
add(L"f19", L"?f15 *(cos(atan2(?f17 ,?f18 )))");
add(L"f20", L"?f16 *(sin(atan2(?f17 ,?f18 )))");
add(L"f21", L"logwidth/2");
add(L"f22", L"?f21 +?f19 -0");
add(L"f23", L"logheight/2");
add(L"f24", L"?f23 +?f20 -0");
add(L"f25", L"min(?f13 ,?f14 )");
add(L"f26", L"?f19 *?f19 /1");
add(L"f27", L"?f20 *?f20 /1");
add(L"f28", L"?f25 *?f25 /1");
add(L"f29", L"?f26 +0-?f28 ");
add(L"f30", L"?f27 +0-?f28 ");
add(L"f31", L"?f29 *?f30 /?f26 ");
add(L"f32", L"?f31 *1/?f27 ");
add(L"f33", L"1+0-?f32 ");
add(L"f34", L"sqrt(?f33 )");
add(L"f35", L"?f29 *1/?f19 ");
add(L"f36", L"?f35 *1/?f20 ");
add(L"f37", L"(1+?f34 )/?f36 ");
add(L"f38", L"(10800000*atan2(?f37 ,1))/pi");
add(L"f39", L"?f38 +21600000-0");
add(L"f40", L"if(?f38 ,?f38 ,?f39 )");
add(L"f41", L"?f40 +0-?f3 ");
add(L"f42", L"?f41 +21600000-0");
add(L"f43", L"if(?f41 ,?f41 ,?f42 )");
add(L"f44", L"?f43 +0-10800000");
add(L"f45", L"?f43 +0-21600000");
add(L"f46", L"if(?f44 ,?f45 ,?f43 )");
add(L"f47", L"abs(?f46 )");
add(L"f48", L"if(0-$1 ,0,if(?f47 -$1 ,$1 ,?f47 ))");
add(L"f49", L"?f3 +?f48 -0");
add(L"f50", L"?f15 *sin(pi*(?f49 )/10800000)");
add(L"f51", L"?f16 *cos(pi*(?f49 )/10800000)");
add(L"f52", L"?f15 *(cos(atan2(?f50 ,?f51 )))");
add(L"f53", L"?f16 *(sin(atan2(?f50 ,?f51 )))");
add(L"f54", L"?f21 +?f52 -0");
add(L"f55", L"?f23 +?f53 -0");
add(L"f56", L"?f10 *sin(pi*(?f4 )/10800000)");
add(L"f57", L"?f12 *cos(pi*(?f4 )/10800000)");
add(L"f58", L"?f10 *(cos(atan2(?f56 ,?f57 )))");
add(L"f59", L"?f12 *(sin(atan2(?f56 ,?f57 )))");
add(L"f60", L"?f21 +?f58 -0");
add(L"f61", L"?f23 +?f59 -0");
add(L"f62", L"?f7 *cos(pi*(?f49 )/10800000)");
add(L"f63", L"?f7 *sin(pi*(?f49 )/10800000)");
add(L"f64", L"?f22 +?f62 -0");
add(L"f65", L"?f24 +?f63 -0");
add(L"f66", L"?f7 *cos(pi*(?f49 )/10800000)");
add(L"f67", L"?f7 *sin(pi*(?f49 )/10800000)");
add(L"f68", L"?f22 +0-?f66 ");
add(L"f69", L"?f24 +0-?f67 ");
add(L"f70", L"?f68 +0-?f21 ");
add(L"f71", L"?f69 +0-?f23 ");
add(L"f72", L"?f64 +0-?f21 ");
add(L"f73", L"?f65 +0-?f23 ");
add(L"f74", L"min(?f10 ,?f12 )");
add(L"f75", L"?f70 *?f74 /?f10 ");
add(L"f76", L"?f71 *?f74 /?f12 ");
add(L"f77", L"?f72 *?f74 /?f10 ");
add(L"f78", L"?f73 *?f74 /?f12 ");
add(L"f79", L"?f77 +0-?f75 ");
add(L"f80", L"?f78 +0-?f76 ");
add(L"f81", L"sqrt(?f79 *?f79 +?f80 *?f80 +0*0)");
add(L"f82", L"?f75 *?f78 /1");
add(L"f83", L"?f77 *?f76 /1");
add(L"f84", L"?f82 +0-?f83 ");
add(L"f85", L"?f74 *?f74 /1");
add(L"f86", L"?f81 *?f81 /1");
add(L"f87", L"?f85 *?f86 /1");
add(L"f88", L"?f84 *?f84 /1");
add(L"f89", L"?f87 +0-?f88 ");
add(L"f90", L"max(?f89 ,0)");
add(L"f91", L"sqrt(?f90 )");
add(L"f92", L"?f80 *-1/1");
add(L"f93", L"if(?f92 ,-1,1)");
add(L"f94", L"?f93 *?f79 /1");
add(L"f95", L"?f94 *?f91 /1");
add(L"f96", L"?f84 *?f80 /1");
add(L"f97", L"(?f96 +?f95 )/?f86 ");
add(L"f98", L"?f96 +0-?f95 ");
add(L"f99", L"?f98 *1/?f86 ");
add(L"f100", L"abs(?f80 )");
add(L"f101", L"?f100 *?f91 /1");
add(L"f102", L"?f84 *?f79 /-1");
add(L"f103", L"(?f102 +?f101 )/?f86 ");
add(L"f104", L"?f102 +0-?f101 ");
add(L"f105", L"?f104 *1/?f86 ");
add(L"f106", L"?f77 +0-?f97 ");
add(L"f107", L"?f77 +0-?f99 ");
add(L"f108", L"?f78 +0-?f103 ");
add(L"f109", L"?f78 +0-?f105 ");
add(L"f110", L"sqrt(?f106 *?f106 +?f108 *?f108 +0*0)");
add(L"f111", L"sqrt(?f107 *?f107 +?f109 *?f109 +0*0)");
add(L"f112", L"?f111 +0-?f110 ");
add(L"f113", L"if(?f112 ,?f97 ,?f99 )");
add(L"f114", L"if(?f112 ,?f103 ,?f105 )");
add(L"f115", L"?f113 *?f10 /?f74 ");
add(L"f116", L"?f114 *?f12 /?f74 ");
add(L"f117", L"?f21 +?f115 -0");
add(L"f118", L"?f23 +?f116 -0");
add(L"f119", L"?f70 *?f25 /?f13 ");
add(L"f120", L"?f71 *?f25 /?f14 ");
add(L"f121", L"?f72 *?f25 /?f13 ");
add(L"f122", L"?f73 *?f25 /?f14 ");
add(L"f123", L"?f121 +0-?f119 ");
add(L"f124", L"?f122 +0-?f120 ");
add(L"f125", L"sqrt(?f123 *?f123 +?f124 *?f124 +0*0)");
add(L"f126", L"?f119 *?f122 /1");
add(L"f127", L"?f121 *?f120 /1");
add(L"f128", L"?f126 +0-?f127 ");
add(L"f129", L"?f25 *?f25 /1");
add(L"f130", L"?f125 *?f125 /1");
add(L"f131", L"?f129 *?f130 /1");
add(L"f132", L"?f128 *?f128 /1");
add(L"f133", L"?f131 +0-?f132 ");
add(L"f134", L"max(?f133 ,0)");
add(L"f135", L"sqrt(?f134 )");
add(L"f136", L"?f93 *?f123 /1");
add(L"f137", L"?f136 *?f135 /1");
add(L"f138", L"?f128 *?f124 /1");
add(L"f139", L"(?f138 +?f137 )/?f130 ");
add(L"f140", L"?f138 +0-?f137 ");
add(L"f141", L"?f140 *1/?f130 ");
add(L"f142", L"abs(?f124 )");
add(L"f143", L"?f142 *?f135 /1");
add(L"f144", L"?f128 *?f123 /-1");
add(L"f145", L"(?f144 +?f143 )/?f130 ");
add(L"f146", L"?f144 +0-?f143 ");
add(L"f147", L"?f146 *1/?f130 ");
add(L"f148", L"?f119 +0-?f139 ");
add(L"f149", L"?f119 +0-?f141 ");
add(L"f150", L"?f120 +0-?f145 ");
add(L"f151", L"?f120 +0-?f147 ");
add(L"f152", L"sqrt(?f148 *?f148 +?f150 *?f150 +0*0)");
add(L"f153", L"sqrt(?f149 *?f149 +?f151 *?f151 +0*0)");
add(L"f154", L"?f153 +0-?f152 ");
add(L"f155", L"if(?f154 ,?f139 ,?f141 )");
add(L"f156", L"if(?f154 ,?f145 ,?f147 )");
add(L"f157", L"?f155 *?f13 /?f25 ");
add(L"f158", L"?f156 *?f14 /?f25 ");
add(L"f159", L"?f21 +?f157 -0");
add(L"f160", L"?f23 +?f158 -0");
add(L"f161", L"(10800000*atan2(?f158 ,?f157 ))/pi");
add(L"f162", L"?f161 +21600000-0");
add(L"f163", L"if(?f161 ,?f161 ,?f162 )");
add(L"f164", L"?f4 +0-?f163 ");
add(L"f165", L"?f164 +0-21600000");
add(L"f166", L"if(?f164 ,?f165 ,?f164 )");
add(L"f167", L"?f117 +0-?f159 ");
add(L"f168", L"?f118 +0-?f160 ");
add(L"f169", L"sqrt(?f167 *?f167 +?f168 *?f168 +0*0)");
add(L"f170", L"?f169 *1/2");
add(L"f171", L"?f170 +0-?f7 ");
add(L"f172", L"if(?f171 ,?f117 ,?f64 )");
add(L"f173", L"if(?f171 ,?f118 ,?f65 )");
add(L"f174", L"if(?f171 ,?f159 ,?f68 )");
add(L"f175", L"if(?f171 ,?f160 ,?f69 )");
add(L"f176", L"(10800000*atan2(?f116 ,?f115 ))/pi");
add(L"f177", L"?f176 +21600000-0");
add(L"f178", L"if(?f176 ,?f176 ,?f177 )");
add(L"f179", L"?f178 +0-?f4 ");
add(L"f180", L"?f179 +21600000-0");
add(L"f181", L"if(?f179 ,?f179 ,?f180 )");
add(L"f182", L"?f15 *sin(pi*(?f4 )/10800000)");
add(L"f183", L"?f16 *cos(pi*(?f4 )/10800000)");
add(L"f184", L"?f15 *(cos(atan2(?f182 ,?f183 )))");
add(L"f185", L"?f16 *(sin(atan2(?f182 ,?f183 )))");
add(L"f186", L"?f21 +?f184 -0");
add(L"f187", L"?f23 +?f185 -0");
add(L"f188", L"?f4 +0-5400000");
add(L"f189", L"?f49 +5400000-0");
add(L"f190", L"?f49 +10800000-0");
add(L"f191", L"?f10 *cos(pi*(2700000)/10800000)");
add(L"f192", L"?f12 *sin(pi*(2700000)/10800000)");
add(L"f193", L"?f21 +0-?f191 ");
add(L"f194", L"?f21 +?f191 -0");
add(L"f195", L"?f23 +0-?f192 ");
add(L"f196", L"?f23 +?f192 -0");
add(L"f197", L"(?f4 )/60000.0");
add(L"f198", L"(?f181 )/60000.0");
add(L"f199", L"(?f163 )/60000.0");
add(L"f200", L"(?f166 )/60000.0");
/////////////////////////////////////////////////////////
_handle h;
h.position = L"?f54 ?f55";
handles.push_back(h);
h.position = L"?f60 ?f61";
handles.push_back(h);
h.position = L"?f117 ?f118";
h.r_minimum = L"0";
h.r_maximum = L"?f1";
handles.push_back(h);
h.position = L"?f68 ?f69";
h.r_minimum = L"0";
h.r_maximum = L"25000";
handles.push_back(h);
}
};
class oox_shape_SwooshArrow : public oox_shape
{
public:
oox_shape_SwooshArrow()
{
odf_type_name = L"ooxml-swooshArrow";
enhanced_path = L"M 0 ?f30 Q ?f25 ?f23 ?f6 ?f8 L ?f11 0 ?f31 ?f20 ?f15 ?f16 ?f14 ?f13 Q ?f29 ?f27 0 ?f30 Z N";
text_areas = L"0 0 ?f31 ?f30";
modifiers = L"25000 25000";
view_box = L"0 0 0 0";
add(L"f0", L"if(1-$0 ,1,if(75000-$0 ,$0 ,75000))");
add(L"f1", L"min(logwidth,logheight)");
add(L"f2", L"70000*logwidth/?f1 ");
add(L"f3", L"if(0-$1 ,0,if(?f2 -$1 ,$1 ,?f2 ))");
add(L"f4", L"logheight*?f0 /100000");
add(L"f5", L"?f1 *?f3 /100000");
add(L"f6", L"logwidth+0-?f5 ");
add(L"f7", L"min(logwidth,logheight)/8");
add(L"f8", L"0+?f7 -0");
add(L"f9", L"5400000*1/14");
add(L"f10", L"?f7 *tan(pi*(?f9 )/10800000)");
add(L"f11", L"?f6 +0-?f10 ");
add(L"f12", L"?f4 *tan(pi*(?f9 )/10800000)");
add(L"f13", L"?f8 +?f4 -0");
add(L"f14", L"?f6 +?f12 -0");
add(L"f15", L"?f14 +?f10 -0");
add(L"f16", L"?f13 +?f7 -0");
add(L"f17", L"?f16 +0-0");
add(L"f18", L"?f17 *1/2");
add(L"f19", L"logheight*1/20");
add(L"f20", L"0+?f18 -?f19 ");
add(L"f21", L"logheight/6");
add(L"f22", L"?f21 *1/1");
add(L"f23", L"?f21 +?f22 -0");
add(L"f24", L"logwidth/6");
add(L"f25", L"?f24 ");
add(L"f26", L"?f21 *1/2");
add(L"f27", L"?f13 +?f26 -0");
add(L"f28", L"logwidth/4");
add(L"f29", L"?f28 ");
add(L"f30", L"logheight");
add(L"f31", L"logwidth");
/////////////////////////////////////////////////////////
_handle h1, h2;
h1.position = L"?f54 ?f55";
h1.y_minimum = L"1";
h1.y_maximum = L"75000";
handles.push_back(h1);
h2.position = L"?f60 ?f61";
h2.x_minimum = L"0";
h2.x_maximum = L"?f2";
handles.push_back(h2);
}
};
}

View File

@ -30,11 +30,11 @@
*
*/
#include "../oox_shape_defines.h"
// shapetypeMathDivide,
// shapetypeMathEqual,
// shapetypeMathMinus,
//+ // shapetypeMathMultiply,
// shapetypeMathNotEqual,
// shapetypeMathDivide,
//+ shapetypeMathEqual,
// shapetypeMathMinus,
//+ shapetypeMathMultiply,
// shapetypeMathNotEqual,
namespace cpdoccore
{
class oox_shape_mathMultiply : public oox_shape
@ -117,4 +117,47 @@ public:
handles.push_back(h);
}
};
class oox_shape_mathEqual : public oox_shape
{
public:
oox_shape_mathEqual()
{
odf_type_name =L"ooxml-mathEqual";
enhanced_path = L"M ?f13 ?f10 L ?f14 ?f10 ?f14 ?f8 ?f13 ?f8 Z M ?f13 ?f9 L ?f14 ?f9 ?f14 ?f11 ?f13 ?f11 Z N";
text_areas = L"?f13 ?f10 ?f14 ?f11";
view_box = L"0 0 0 0";
modifiers = L"23520 11760";
add(L"f0", L"if(0-$0 ,0,if(36745-$0 ,$0 ,36745))");
add(L"f1", L"?f0 *2/1");
add(L"f2", L"100000+0-2");
add(L"f3", L"if(0-$1 ,0,if(?f2 -$1 ,$1 ,?f2 ))");
add(L"f4", L"logheight*?f0 /100000");
add(L"f5", L"logheight*?f3 /200000");
add(L"f6", L"logwidth*73490/200000");
add(L"f7", L"logheight/2");
add(L"f8", L"?f7 +0-?f5 ");
add(L"f9", L"?f7 +?f5 -0");
add(L"f10", L"?f8 +0-?f4 ");
add(L"f11", L"?f9 +?f4 -0");
add(L"f12", L"logwidth/2");
add(L"f13", L"?f12 +0-?f6 ");
add(L"f14", L"?f12 +?f6 -0");
add(L"f15", L"(?f10 +?f8 )/2");
add(L"f16", L"(?f9 +?f11 )/2");
add(L"f17", L"logwidth");
/////////////////////////////////////////////////////////
_handle h;
h.position = L"0 ?f10";
h.y_maximum= L"36745";
h.y_minimum= L"0";
handles.push_back(h);
h.position = L"?f17 ?f8";
h.y_maximum= L"?f2";
h.y_minimum= L"0";
handles.push_back(h);
}
};
}

View File

@ -30,8 +30,8 @@
*
*/
// shapetypeArc,
// shapetypeChord,
// shapetypeCorner,
//+ shapetypeChord,
//+ shapetypeCorner,
// shapetypeCornerTabs,
// shapetypeDecagon,
// shapetypeDiagStripe,
@ -43,12 +43,14 @@
// shapetypeHalfFrame,
// shapetypeHeptagon,
// shapetypeNonIsoscelesTrapezoid,
// shapetypePie,
//+ shapetypePie,
//+ shapetypePieWedge,
//+ shapetypePlaque,
// shapetypePlaqueTabs,
// shapetypeSquareTabs,
// shapetypeTeardrop,
//+ shapetypeBlockArc
//+ shapetypeDonut
#include "../oox_shape_defines.h"
@ -785,4 +787,320 @@ public:
/////////////////////////////////////////////////////////
}
};
class oox_shape_Pie : public oox_shape
{
public:
oox_shape_Pie()
{
odf_type_name =L"ooxml-pie";
enhanced_path = L"M ?f12 ?f14 G ?f5 ?f7 ?f29 ?f30 L ?f11 ?f13 Z N";
text_areas = L"?f23 ?f24 ?f25 ?f26";
view_box = L"0 0 0 0";
modifiers = L"9000000 16200000";
add(L"f0", L"if(0-$0 ,0,if(21599999-$0 ,$0 ,21599999))");
add(L"f1", L"if(0-$1 ,0,if(21599999-$1 ,$1 ,21599999))");
add(L"f2", L"?f1 +0-?f0 ");
add(L"f3", L"?f2 +21600000-0");
add(L"f4", L"if(?f2 ,?f2 ,?f3 )");
add(L"f5", L"logwidth/2");
add(L"f6", L"?f5 *sin(pi*(?f0 )/10800000)");
add(L"f7", L"logheight/2");
add(L"f8", L"?f7 *cos(pi*(?f0 )/10800000)");
add(L"f9", L"?f5 *(cos(atan2(?f6 ,?f8 )))");
add(L"f10", L"?f7 *(sin(atan2(?f6 ,?f8 )))");
add(L"f11", L"logwidth/2");
add(L"f12", L"?f11 +?f9 -0");
add(L"f13", L"logheight/2");
add(L"f14", L"?f13 +?f10 -0");
add(L"f15", L"?f5 *sin(pi*(?f1 )/10800000)");
add(L"f16", L"?f7 *cos(pi*(?f1 )/10800000)");
add(L"f17", L"?f5 *(cos(atan2(?f15 ,?f16 )))");
add(L"f18", L"?f7 *(sin(atan2(?f15 ,?f16 )))");
add(L"f19", L"?f11 +?f17 -0");
add(L"f20", L"?f13 +?f18 -0");
add(L"f21", L"?f5 *cos(pi*(2700000)/10800000)");
add(L"f22", L"?f7 *sin(pi*(2700000)/10800000)");
add(L"f23", L"?f11 +0-?f21 ");
add(L"f24", L"?f11 +?f21 -0");
add(L"f25", L"?f13 +0-?f22 ");
add(L"f26", L"?f13 +?f22 -0");
add(L"f27", L"logwidth");
add(L"f28", L"logheight");
add(L"f29", L"(?f0 )/60000.0");
add(L"f30", L"(?f4 )/60000.0");
/////////////////////////////////////////////////////////
_handle h;
h.position = L"?f12 ?f14";
handles.push_back(h);
h.position = L"?f19 ?f20";
handles.push_back(h);
}
};
class oox_shape_BlockArc : public oox_shape
{
public:
oox_shape_BlockArc()
{
odf_type_name =L"ooxml-blockArc";
enhanced_path = L"M ?f18 ?f20 G ?f7 ?f9 ?f76 ?f77 L ?f35 ?f36 G ?f25 ?f26 ?f78 ?f79 Z N";
text_areas = L"f60 ?f68 ?f44 ?f52";
modifiers = L"13500000 10800000 12740";
view_box = L"0 0 0 0";
add(L"f0", L"if(0-$0 ,0,if(21599999-$0 ,$0 ,21599999))");
add(L"f1", L"if(0-$1 ,0,if(21599999-$1 ,$1 ,21599999))");
add(L"f2", L"if(0-$2 ,0,if(50000-$2 ,$2 ,50000))");
add(L"f3", L"?f1 +0-?f0 ");
add(L"f4", L"?f3 +21600000-0");
add(L"f5", L"if(?f3 ,?f3 ,?f4 )");
add(L"f6", L"0+0-?f5 ");
add(L"f7", L"logwidth/2");
add(L"f8", L"?f7 *sin(pi*(?f0 )/10800000)");
add(L"f9", L"logheight/2");
add(L"f10", L"?f9 *cos(pi*(?f0 )/10800000)");
add(L"f11", L"?f7 *sin(pi*(?f1 )/10800000)");
add(L"f12", L"?f9 *cos(pi*(?f1 )/10800000)");
add(L"f13", L"?f7 *(cos(atan2(?f8 ,?f10 )))");
add(L"f14", L"?f9 *(sin(atan2(?f8 ,?f10 )))");
add(L"f15", L"?f7 *(cos(atan2(?f11 ,?f12 )))");
add(L"f16", L"?f9 *(sin(atan2(?f11 ,?f12 )))");
add(L"f17", L"logwidth/2");
add(L"f18", L"?f17 +?f13 -0");
add(L"f19", L"logheight/2");
add(L"f20", L"?f19 +?f14 -0");
add(L"f21", L"?f17 +?f15 -0");
add(L"f22", L"?f19 +?f16 -0");
add(L"f23", L"min(logwidth,logheight)");
add(L"f24", L"?f23 *?f2 /100000");
add(L"f25", L"?f7 +0-?f24 ");
add(L"f26", L"?f9 +0-?f24 ");
add(L"f27", L"?f25 *sin(pi*(?f1 )/10800000)");
add(L"f28", L"?f26 *cos(pi*(?f1 )/10800000)");
add(L"f29", L"?f25 *sin(pi*(?f0 )/10800000)");
add(L"f30", L"?f26 *cos(pi*(?f0 )/10800000)");
add(L"f31", L"?f25 *(cos(atan2(?f27 ,?f28 )))");
add(L"f32", L"?f26 *(sin(atan2(?f27 ,?f28 )))");
add(L"f33", L"?f25 *(cos(atan2(?f29 ,?f30 )))");
add(L"f34", L"?f26 *(sin(atan2(?f29 ,?f30 )))");
add(L"f35", L"?f17 +?f31 -0");
add(L"f36", L"?f19 +?f32 -0");
add(L"f37", L"?f17 +?f33 -0");
add(L"f38", L"?f19 +?f34 -0");
add(L"f39", L"21600000+0-?f0 ");
add(L"f40", L"?f5 +0-?f39 ");
add(L"f41", L"max(?f18 ,?f35 )");
add(L"f42", L"max(?f21 ,?f37 )");
add(L"f43", L"max(?f41 ,?f42 )");
add(L"f44", L"if(?f40 ,logwidth,?f43 )");
add(L"f45", L"5400000+0-?f0 ");
add(L"f46", L"27000000+0-?f0 ");
add(L"f47", L"if(?f45 ,?f45 ,?f46 )");
add(L"f48", L"?f5 +0-?f47 ");
add(L"f49", L"max(?f20 ,?f36 )");
add(L"f50", L"max(?f22 ,?f38 )");
add(L"f51", L"max(?f49 ,?f50 )");
add(L"f52", L"if(?f48 ,logheight,?f51 )");
add(L"f53", L"10800000+0-?f0 ");
add(L"f54", L"32400000+0-?f0 ");
add(L"f55", L"if(?f53 ,?f53 ,?f54 )");
add(L"f56", L"?f5 +0-?f55 ");
add(L"f57", L"min(?f18 ,?f35 )");
add(L"f58", L"min(?f21 ,?f37 )");
add(L"f59", L"min(?f57 ,?f58 )");
add(L"f60", L"if(?f56 ,0,?f59 )");
add(L"f61", L"16200000+0-?f0 ");
add(L"f62", L"37800000+0-?f0 ");
add(L"f63", L"if(?f61 ,?f61 ,?f62 )");
add(L"f64", L"?f5 +0-?f63 ");
add(L"f65", L"min(?f20 ,?f36 )");
add(L"f66", L"min(?f22 ,?f38 )");
add(L"f67", L"min(?f65 ,?f66 )");
add(L"f68", L"if(?f64 ,0,?f67 )");
add(L"f69", L"(?f18 +?f37 )/2");
add(L"f70", L"(?f20 +?f38 )/2");
add(L"f71", L"(?f21 +?f35 )/2");
add(L"f72", L"(?f22 +?f36 )/2");
add(L"f73", L"?f0 +0-5400000");
add(L"f74", L"?f1 +5400000-0");
add(L"f75", L"(?f73 +?f74 )/2");
add(L"f76", L"(?f0 )/60000.0");
add(L"f77", L"(?f5 )/60000.0");
add(L"f78", L"(?f1 )/60000.0");
add(L"f79", L"(?f6 )/60000.0");
/////////////////////////////////////////////////////////
_handle h;
h.position = L"?f18 ?f20";
handles.push_back(h);
h.position = L"?f35 ?f36";
h.r_minimum = L"0";
h.r_maximum = L"50000";
handles.push_back(h);
}
};
class oox_shape_Corner : public oox_shape
{
public:
oox_shape_Corner()
{
odf_type_name =L"ooxml-corner";
enhanced_path = L"M 0 0 L ?f5 0 ?f5 ?f7 ?f13 ?f7 ?f13 ?f15 0 ?f15 Z N";
text_areas = L"0 ?f11 ?f12 ?f15";
view_box = L"0 0 0 0";
modifiers = L"16120 16110";
add(L"f0", L"min(logwidth,logheight)");
add(L"f1", L"100000*logheight/?f0 ");
add(L"f2", L"100000*logwidth/?f0 ");
add(L"f3", L"if(0-$0 ,0,if(?f1 -$0 ,$0 ,?f1 ))");
add(L"f4", L"if(0-$1 ,0,if(?f2 -$1 ,$1 ,?f2 ))");
add(L"f5", L"?f0 *?f4 /100000");
add(L"f6", L"?f0 *?f3 /100000");
add(L"f7", L"logheight+0-?f6 ");
add(L"f8", L"?f5 *1/2");
add(L"f9", L"(?f7 +logheight)/2");
add(L"f10", L"logwidth+0-logheight");
add(L"f11", L"if(?f10 ,?f7 ,0)");
add(L"f12", L"if(?f10 ,logwidth,?f5 )");
add(L"f13", L"logwidth");
add(L"f14", L"logwidth/2");
add(L"f15", L"logheight");
add(L"f16", L"logheight/2");
/////////////////////////////////////////////////////////
_handle h1, h2;
h1.position = L"0 ?f7";
h1.y_minimum = L"0";
h1.y_maximum = L"?f1";
handles.push_back(h1);
h2.position = L"?f5 0";
h2.x_minimum = L"0";
h2.x_maximum = L"?f2";
handles.push_back(h2);
}
};
class oox_shape_Chord : public oox_shape
{
public:
oox_shape_Chord()
{
odf_type_name =L"ooxml-chord";
enhanced_path = L"M ?f16 ?f18 G ?f5 ?f7 ?f31 ?f32 Z N";
text_areas = L"?f27 ?f29 ?f28 ?f30";
view_box = L"0 0 0 0";
modifiers = L"1168272 9631728";
add(L"f0", L"if(0-$0 ,0,if(21599999-$0 ,$0 ,21599999))");
add(L"f1", L"if(0-$1 ,0,if(21599999-$1 ,$1 ,21599999))");
add(L"f2", L"?f1 +0-?f0 ");
add(L"f3", L"?f2 +21600000-0");
add(L"f4", L"if(?f2 ,?f2 ,?f3 )");
add(L"f5", L"logwidth/2");
add(L"f6", L"?f5 *sin(pi*(?f0 )/10800000)");
add(L"f7", L"logheight/2");
add(L"f8", L"?f7 *cos(pi*(?f0 )/10800000)");
add(L"f9", L"?f5 *(cos(atan2(?f6 ,?f8 )))");
add(L"f10", L"?f7 *(sin(atan2(?f6 ,?f8 )))");
add(L"f11", L"?f5 *sin(pi*(?f1 )/10800000)");
add(L"f12", L"?f7 *cos(pi*(?f1 )/10800000)");
add(L"f13", L"?f5 *(cos(atan2(?f11 ,?f12 )))");
add(L"f14", L"?f7 *(sin(atan2(?f11 ,?f12 )))");
add(L"f15", L"logwidth/2");
add(L"f16", L"?f15 +?f9 -0");
add(L"f17", L"logheight/2");
add(L"f18", L"?f17 +?f10 -0");
add(L"f19", L"?f15 +?f13 -0");
add(L"f20", L"?f17 +?f14 -0");
add(L"f21", L"(?f16 +?f19 )/2");
add(L"f22", L"(?f18 +?f20 )/2");
add(L"f23", L"?f4 *1/2");
add(L"f24", L"?f0 +?f23 -10800000");
add(L"f25", L"?f5 *cos(pi*(2700000)/10800000)");
add(L"f26", L"?f7 *sin(pi*(2700000)/10800000)");
add(L"f27", L"?f15 +0-?f25 ");
add(L"f28", L"?f15 +?f25 -0");
add(L"f29", L"?f17 +0-?f26 ");
add(L"f30", L"?f17 +?f26 -0");
add(L"f31", L"(?f0 )/60000.0");
add(L"f32", L"(?f4 )/60000.0");
/////////////////////////////////////////////////////////
_handle h;
h.position = L"?f16 ?f18";
handles.push_back(h);
h.position = L"?f19 ?f20";
handles.push_back(h);
}
};
class oox_shape_Donut : public oox_shape
{
public:
oox_shape_Donut()
{
odf_type_name =L"ooxml-donut";
enhanced_path = L"M 0 ?f12 G ?f3 ?f5 ?f17 ?f18 ?f3 ?f5 ?f19 ?f20 ?f3 ?f5 ?f21 ?f22 ?f3 ?f5 ?f23 ?f24 Z M ?f2 ?f12 G ?f4 ?f6 ?f25 ?f26 ?f4 ?f6 ?f27 ?f28 ?f4 ?f6 ?f29 ?f30 ?f4 ?f6 ?f31 ?f32 Z N";
text_areas = L"?f10 ?f13 ?f11 ?f14";
view_box = L"0 0 0 0";
modifiers = L"20000";
add(L"f0", L"if(0-$0 ,0,if(50000-$0 ,$0 ,50000))");
add(L"f1", L"min(logwidth,logheight)");
add(L"f2", L"?f1 *?f0 /100000");
add(L"f3", L"logwidth/2");
add(L"f4", L"?f3 +0-?f2 ");
add(L"f5", L"logheight/2");
add(L"f6", L"?f5 +0-?f2 ");
add(L"f7", L"?f3 *cos(pi*(2700000)/10800000)");
add(L"f8", L"?f5 *sin(pi*(2700000)/10800000)");
add(L"f9", L"logwidth/2");
add(L"f10", L"?f9 +0-?f7 ");
add(L"f11", L"?f9 +?f7 -0");
add(L"f12", L"logheight/2");
add(L"f13", L"?f12 +0-?f8 ");
add(L"f14", L"?f12 +?f8 -0");
add(L"f15", L"logheight");
add(L"f16", L"logwidth");
add(L"f17", L"(10800000)/60000.0");
add(L"f18", L"(5400000)/60000.0");
add(L"f19", L"(16200000)/60000.0");
add(L"f20", L"(5400000)/60000.0");
add(L"f21", L"(0)/60000.0");
add(L"f22", L"(5400000)/60000.0");
add(L"f23", L"(5400000)/60000.0");
add(L"f24", L"(5400000)/60000.0");
add(L"f25", L"(10800000)/60000.0");
add(L"f26", L"(-5400000)/60000.0");
add(L"f27", L"(5400000)/60000.0");
add(L"f28", L"(-5400000)/60000.0");
add(L"f29", L"(0)/60000.0");
add(L"f30", L"(-5400000)/60000.0");
add(L"f31", L"(16200000)/60000.0");
add(L"f32", L"(-5400000)/60000.0");
/////////////////////////////////////////////////////////
_handle h;
h.position = L"?f2 ?f12";
h.r_minimum = L"0";
h.r_maximum = L"50000";
handles.push_back(h);
}
};
}

View File

@ -29,4 +29,83 @@
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
//{ L"" , 7}, // shapetypeLeftRightRibbon,
//+ shapetypeLeftRightRibbon
namespace cpdoccore
{
class oox_shape_LeftRightRibbon : public oox_shape
{
public:
oox_shape_LeftRightRibbon()
{
odf_type_name =L"ooxml-leftRightRibbon";
enhanced_path = L"M 0 ?f16 L ?f9 0 ?f9 ?f14 ?f23 ?f14 G ?f4 ?f22 ?f30 ?f31 ?f4 ?f22 ?f32 ?f33 L ?f10 ?f21 ?f10 ?f19 ?f28 ?f17 ?f10 ?f29 ?f10 ?f15 ?f23 ?f15 G ?f4 ?f22 ?f34 ?f35 L ?f24 ?f20 ?f9 ?f20 ?f9 ?f18 Z S N M ?f25 ?f26 G ?f4 ?f22 ?f36 ?f37 ?f4 ?f22 ?f38 ?f39 L ?f25 ?f21 Z I S N M 0 ?f16 L ?f9 0 ?f9 ?f14 ?f23 ?f14 G ?f4 ?f22 ?f40 ?f41 ?f4 ?f22 ?f42 ?f43 L ?f10 ?f21 ?f10 ?f19 ?f28 ?f17 ?f10 ?f29 ?f10 ?f15 ?f23 ?f15 G ?f4 ?f22 ?f44 ?f45 L ?f24 ?f20 ?f9 ?f20 ?f9 ?f18 Z M ?f25 ?f26 L ?f25 ?f21 M ?f24 ?f27 L ?f24 ?f20 F N";
text_areas = L"?f9 ?f14 ?f10 ?f15";
view_box = L"0 0 0 0";
modifiers = L"50000 50000 16667";
add(L"f0", L"if(0-$2 ,0,if(33333-$2 ,$2 ,33333))");
add(L"f1", L"100000+0-?f0 ");
add(L"f2", L"if(0-$0 ,0,if(?f1 -$0 ,$0 ,?f1 ))");
add(L"f3", L"logwidth/2");
add(L"f4", L"logwidth/32");
add(L"f5", L"?f3 +0-?f4 ");
add(L"f6", L"min(logwidth,logheight)");
add(L"f7", L"100000*?f5 /?f6 ");
add(L"f8", L"if(0-$1 ,0,if(?f7 -$1 ,$1 ,?f7 ))");
add(L"f9", L"?f6 *?f8 /100000");
add(L"f10", L"logwidth+0-?f9 ");
add(L"f11", L"logheight*?f2 /200000");
add(L"f12", L"logheight*?f0 /-200000");
add(L"f13", L"logheight/2");
add(L"f14", L"?f13 +?f12 -?f11 ");
add(L"f15", L"?f13 +?f11 -?f12 ");
add(L"f16", L"?f14 +?f11 -0");
add(L"f17", L"logheight+0-?f16 ");
add(L"f18", L"?f16 *2/1");
add(L"f19", L"logheight+0-?f18 ");
add(L"f20", L"?f18 +0-?f14 ");
add(L"f21", L"logheight+0-?f20 ");
add(L"f22", L"?f0 *?f6 /400000");
add(L"f23", L"logwidth/2");
add(L"f24", L"?f23 +0-?f4 ");
add(L"f25", L"?f23 +?f4 -0");
add(L"f26", L"?f14 +?f22 -0");
add(L"f27", L"?f21 +0-?f22 ");
add(L"f28", L"logwidth");
add(L"f29", L"logheight");
add(L"f30", L"(16200000)/60000.0");
add(L"f31", L"(10800000)/60000.0");
add(L"f32", L"(16200000)/60000.0");
add(L"f33", L"(-10800000)/60000.0");
add(L"f34", L"(5400000)/60000.0");
add(L"f35", L"(5400000)/60000.0");
add(L"f36", L"(0)/60000.0");
add(L"f37", L"(5400000)/60000.0");
add(L"f38", L"(16200000)/60000.0");
add(L"f39", L"(-10800000)/60000.0");
add(L"f40", L"(16200000)/60000.0");
add(L"f41", L"(10800000)/60000.0");
add(L"f42", L"(16200000)/60000.0");
add(L"f43", L"(-10800000)/60000.0");
add(L"f44", L"(5400000)/60000.0");
add(L"f45", L"(5400000)/60000.0");
/////////////////////////////////////////////////////////
_handle h1, h2, h3;
h1.position = L"??f10 ?f21";
h1.y_maximum= L"?f1";
h1.y_minimum= L"0";
handles.push_back(h1);
h2.position = L"?f9 0";
h2.x_maximum= L"?f7";
h2.x_minimum= L"0";
handles.push_back(h2);
h3.position = L"?f25 ?f21";
h3.y_maximum= L"33333";
h3.y_minimum= L"0";
handles.push_back(h3);
}
};
}

View File

@ -67,30 +67,41 @@ public:
odf_type_name =L"ooxml-snip2DiagRect";
modifiers = L"0 16667";
enhanced_path = L"M ?f9 ?f2 L ?f13 ?f2 ?f1 ?f12 ?f1 ?f11 ?f10 ?f3 ?f12 ?f3 ?f0 ?f14 ?f0 ?f9 Z N";
text_areas = L"?f17 ?f17 ?f18 ?f19";
view_box = L"0 0 21600 21600";
enhanced_path = L"M ?f3 0 L ?f7 0 ?f14 ?f6 ?f14 ?f5 ?f4 ?f17 ?f6 ?f17 0 ?f8 0 ?f3 Z N";
text_areas = L"?f11 ?f11 ?f12 ?f13";
view_box = L"0 0 0 0";
add(L"f0", L"left");
add(L"f1", L"right");
add(L"f2", L"top");
add(L"f3", L"bottom");
add(L"f4", L"?f3 - ?f2");
add(L"f5", L"?f1 - ?f0");
add(L"f6", L"min(?f5, ?f4)");
add(L"f7", L"$0");
add(L"f8", L"$1");
add(L"f9", L"?f6 * ?f7 / 100000");
add(L"f10", L"?f1 - ?f9");
add(L"f11", L"?f3 - ?f9");
add(L"f12", L"?f6 * ?f8 / 100000");
add(L"f13", L"?f1 - ?f12");
add(L"f14", L"?f3 - ?f12");
add(L"f15", L"?f9 - ?f12");
add(L"f16", L"if(?f15, ?f9, ?f12)");
add(L"f17", L"?f16 / 2");
add(L"f18", L"?f1 - ?f17");
add(L"f19", L"?f3 - ?f17");
add(L"f0", L"if(0-$0 ,0,if(50000-$0 ,$0 ,50000))");
add(L"f1", L"if(0-$1 ,0,if(50000-$1 ,$1 ,50000))");
add(L"f2", L"min(logwidth,logheight)");
add(L"f3", L"?f2 *?f0 /100000");
add(L"f4", L"logwidth+0-?f3 ");
add(L"f5", L"logheight+0-?f3 ");
add(L"f6", L"?f2 *?f1 /100000");
add(L"f7", L"logwidth+0-?f6 ");
add(L"f8", L"logheight+0-?f6 ");
add(L"f9", L"?f3 +0-?f6 ");
add(L"f10", L"if(?f9 ,?f3 ,?f6 )");
add(L"f11", L"?f10 *1/2");
add(L"f12", L"logwidth+0-?f11 ");
add(L"f13", L"logheight+0-?f11 ");
add(L"f14", L"logwidth");
add(L"f15", L"logheight/2");
add(L"f16", L"logwidth/2");
add(L"f17", L"logheight");
_handle h;
h.position = L"?f3 0";
h.x_maximum= L"50000";
h.x_minimum= L"0";
handles.push_back(h);
h.position = L"?f7 0";
h.x_maximum= L"50000";
h.x_minimum= L"0";
handles.push_back(h);
}
};
class oox_shape_snip2SameRect : public oox_shape

View File

@ -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_);

View File

@ -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);
};

View File

@ -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);
}
}
}
}

View File

@ -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);

View File

@ -262,6 +262,7 @@ void odf_conversion_context::process_settings(_object & object, bool isRoot)
void odf_conversion_context::process_styles(_object & object, bool isRoot)
{
create_element(L"office", L"styles", object.styles, this, true);//общие стили
object.style_context->process_office_styles(object.styles.back());
page_layout_context()->process_office_styles(object.styles.back());
@ -288,7 +289,15 @@ office_element_ptr odf_conversion_context::start_tabs()
create_element(L"style", L"tab-stops", temporary_.elm, this,true);
return temporary_.elm;
}
std::wstring odf_conversion_context::add_image(const std::wstring & image_file_name)
{
if (image_file_name.empty()) return L"";
std::wstring odf_ref_name ;
mediaitems()->add_or_find(image_file_name,_mediaitems::typeImage, odf_ref_name);
return odf_ref_name;
}
void odf_conversion_context::add_tab(_CP_OPT(int) type, _CP_OPT(length) _length, _CP_OPT(int) leader)
{
if (!temporary_.elm) return;

View File

@ -95,7 +95,7 @@ public:
virtual void start_text_context() = 0;
virtual void end_text_context() = 0;
virtual void start_image(const std::wstring & image_file_name) = 0;
std::wstring add_image(const std::wstring & image_file_name);
virtual odf_style_context * styles_context();

File diff suppressed because it is too large Load Diff

View File

@ -52,6 +52,7 @@ namespace odf_writer
class odf_conversion_context;
class odf_style_context;
class odf_text_context;
class style_paragraph_properties;
class odf_drawing_context
{
@ -59,7 +60,8 @@ public:
odf_drawing_context (odf_conversion_context *odf_context);
~odf_drawing_context ();
void set_presentation (bool bMaster);
void set_presentation (bool bMaster);
_CP_OPT(bool) get_presentation ();
void set_drawings_rect (_CP_OPT(double) x_pt, _CP_OPT(double) y_pt, _CP_OPT(double) width_pt, _CP_OPT(double) height_pt);
void clear ();
@ -102,6 +104,7 @@ public:
void end_drawing();
void end_drawing_background(odf_types::common_draw_fill_attlist & common_draw_attlist);
int get_group_level();
void start_group();
void set_group_flip_H (bool bVal);
void set_group_flip_V (bool bVal);
@ -124,21 +127,24 @@ public:
void start_frame ();
void end_frame ();
bool change_text_box_2_wordart();
void start_image (std::wstring file_path);
void start_image (std::wstring odf_file_path);
void end_image ();
bool change_text_box_2_wordart ();
bool is_wordart ();
void set_paragraph_properties (style_paragraph_properties *paragraph_properties);
void start_text_box ();
void set_text_box_min_size (bool val);
void set_text_box_min_size (double w_pt, double h_pt);
void set_text_box_parent_style (std::wstring style_name);
void set_text_box_tableframe (bool val);
void set_text_box_tableframe (bool val);
void end_text_box ();
void start_object(std::wstring name);
void end_object();
bool isLineShape();
void corrected_line_fill();
office_element_ptr & get_root_element();
@ -149,16 +155,18 @@ 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);
void finalize(office_element_ptr & root_elm);
///////////////////////////////////////////////////////////////////////////////////////
void get_position (_CP_OPT(double) & x_pt, _CP_OPT(double) & y_pt);
void set_position (_CP_OPT(double) & x_pt, _CP_OPT(double) & y_pt);
void set_position_line (_CP_OPT(double) & x_pt, _CP_OPT(double) & y_pt, _CP_OPT(double) & x1_pt, _CP_OPT(double) & y1_pt);

View File

@ -54,11 +54,12 @@ void odf_lists_styles_context::set_odf_context(odf_conversion_context * Context)
odf_context_ = Context;
}
void odf_lists_styles_context::process_styles(office_element_ptr root )
void odf_lists_styles_context::process_styles(office_element_ptr root, bool automatic)
{
for (size_t i = 0; i < lists_format_array_.size(); i++)
{
if (lists_format_array_[i].elements.size() < 1) continue;
if (lists_format_array_[i].elements.size() < 1) continue;
if (lists_format_array_[i].automatic != automatic) continue;
root->add_child_element(lists_format_array_[i].elements[0]);
}
@ -92,7 +93,13 @@ std::wstring odf_lists_styles_context::get_style_name1(int oox_style_num)
}
std::wstring odf_lists_styles_context::get_style_name(int oox_style_num)
{
if (link_format_map_.count(oox_style_num) > 0)
if (lists_format_array_.empty()) return L"";
if (oox_style_num < 0)
{
return lists_format_array_.back().odf_list_style_name;
}
else if (link_format_map_.count(oox_style_num) > 0)
{
return link_format_map_.at(oox_style_num);
}
@ -101,7 +108,7 @@ std::wstring odf_lists_styles_context::get_style_name(int oox_style_num)
return L"";
}
}
void odf_lists_styles_context::start_style(int based_number)
void odf_lists_styles_context::start_style(bool bMaster, int based_number)
{
list_format_state state;
@ -109,21 +116,29 @@ void odf_lists_styles_context::start_style(int based_number)
create_element(L"text", L"list-style", elm, odf_context_);
state.elements.push_back(elm);
state.oox_based_number = based_number;
state.odf_list_style_name = std::wstring(L"WWNum") + boost::lexical_cast<std::wstring>(based_number + 1);
if (based_number < 0)
{
state.oox_based_number = lists_format_array_.size();
state.odf_list_style_name = std::wstring(L"L") + boost::lexical_cast<std::wstring>(state.oox_based_number + 1);
}
else
{
state.oox_based_number = based_number;
state.odf_list_style_name = std::wstring(L"WWNum") + boost::lexical_cast<std::wstring>(state.oox_based_number + 1);
}
state.automatic = !bMaster;
text_list_style *style = dynamic_cast<text_list_style *>(elm.get());
if (style == NULL)return;
style->text_list_style_attr_.style_name_ = state.odf_list_style_name;
lists_format_array_.push_back(state); //перенести в end??
}
style_list_level_properties * odf_lists_styles_context::get_list_level_properties()
{
if (lists_format_array_.size() < 1) return NULL;
if (lists_format_array_.back().elements.size() <1) return NULL;
if (lists_format_array_.empty()) return NULL;
if (lists_format_array_.back().elements.empty()) return NULL;
text_list_level_style_number *style_number_ = dynamic_cast<text_list_level_style_number *>(lists_format_array_.back().elements.back().get());
text_list_level_style_bullet *style_bullet_ = dynamic_cast<text_list_level_style_bullet *>(lists_format_array_.back().elements.back().get());
@ -156,8 +171,8 @@ style_list_level_properties * odf_lists_styles_context::get_list_level_propertie
}
style_text_properties * odf_lists_styles_context::get_text_properties()
{
if (lists_format_array_.size() < 1) return NULL;
if (lists_format_array_.back().elements.size() <1) return NULL;
if (lists_format_array_.empty()) return NULL;
if (lists_format_array_.back().elements.empty()) return NULL;
text_list_level_style_number *style_number_ = dynamic_cast<text_list_level_style_number *>(lists_format_array_.back().elements.back().get());
text_list_level_style_bullet *style_bullet_ = dynamic_cast<text_list_level_style_bullet *>(lists_format_array_.back().elements.back().get());
@ -167,14 +182,14 @@ style_text_properties * odf_lists_styles_context::get_text_properties()
if (style_number_)
{
if (!style_number_->style_text_properties_)
create_element(L"style", L"text-properties",style_number_->style_text_properties_,odf_context_);
create_element(L"style", L"text-properties", style_number_->style_text_properties_, odf_context_);
props = dynamic_cast<style_text_properties *>(style_number_->style_text_properties_.get());
}
if (style_bullet_)
{
if (!style_bullet_->style_text_properties_)
create_element(L"style", L"text-properties",style_bullet_->style_text_properties_,odf_context_);
create_element(L"style", L"text-properties", style_bullet_->style_text_properties_, odf_context_);
props = dynamic_cast<style_text_properties *>(style_bullet_->style_text_properties_.get());
}
@ -190,8 +205,8 @@ style_text_properties * odf_lists_styles_context::get_text_properties()
style_list_level_label_alignment * odf_lists_styles_context::get_list_level_alignment_properties()
{
if (lists_format_array_.size() < 1) return NULL;
if (lists_format_array_.back().elements.size() <1) return NULL;
if (lists_format_array_.empty()) return NULL;
if (lists_format_array_.back().elements.empty()) return NULL;
text_list_level_style_number *style_number_ = dynamic_cast<text_list_level_style_number *>(lists_format_array_.back().elements.back().get());
text_list_level_style_bullet *style_bullet_ = dynamic_cast<text_list_level_style_bullet *>(lists_format_array_.back().elements.back().get());
@ -201,21 +216,21 @@ style_list_level_label_alignment * odf_lists_styles_context::get_list_level_alig
if (style_number_)
{
if (!style_number_->style_list_level_properties_)
create_element(L"style", L"list-level-properties",style_number_->style_list_level_properties_,odf_context_);
create_element(L"style", L"list-level-properties", style_number_->style_list_level_properties_, odf_context_);
props = dynamic_cast<style_list_level_properties *>(style_number_->style_list_level_properties_.get());
}
if (style_bullet_)
{
if (!style_bullet_->style_list_level_properties_)
create_element(L"style", L"list-level-properties",style_bullet_->style_list_level_properties_,odf_context_);
create_element(L"style", L"list-level-properties", style_bullet_->style_list_level_properties_, odf_context_);
props = dynamic_cast<style_list_level_properties *>(style_bullet_->style_list_level_properties_.get());
}
if (style_image_)
{
if (!style_image_->style_list_level_properties_)
create_element(L"style", L"list-level-properties",style_image_->style_list_level_properties_,odf_context_);
create_element(L"style", L"list-level-properties", style_image_->style_list_level_properties_, odf_context_);
props = dynamic_cast<style_list_level_properties *>(style_image_->style_list_level_properties_.get());
}
@ -223,14 +238,15 @@ style_list_level_label_alignment * odf_lists_styles_context::get_list_level_alig
if (!props->style_list_level_label_alignment_)
{
create_element(L"style", L"list-level-label-alignment" ,props->style_list_level_label_alignment_,odf_context_);
create_element(L"style", L"list-level-label-alignment" , props->style_list_level_label_alignment_, odf_context_);
}
return dynamic_cast<style_list_level_label_alignment *>(props->style_list_level_label_alignment_.get());
}
int odf_lists_styles_context::start_style_level(int level, int type)
{
if (lists_format_array_.size() < 1) return -1;
if (lists_format_array_.empty()) return -1;
int odf_type =1;
int format_type = -1;
@ -451,10 +467,10 @@ wchar_t convert_bullet_char(wchar_t c)
}
void odf_lists_styles_context::set_numeric_format(std::wstring val)
{
if (lists_format_array_.size() < 1) return;
if (lists_format_array_.back().elements.size() <1) return ;
if ( val.length() <1 )
return;
if ( lists_format_array_.empty() ) return;
if ( lists_format_array_.back().elements.empty() ) return;
if ( val.empty() ) return;
text_list_level_style_number *style_number_ = dynamic_cast<text_list_level_style_number *>(lists_format_array_.back().elements.back().get());
if (style_number_)
@ -522,10 +538,10 @@ void odf_lists_styles_context::set_numeric_format(std::wstring val)
}
void odf_lists_styles_context::set_bullet_char(std::wstring val)
{
if (lists_format_array_.size() < 1) return;
if (lists_format_array_.back().elements.size() <1) return ;
if ( val.length() <1 )
return;
if ( lists_format_array_.empty() ) return;
if ( lists_format_array_.back().elements.empty() ) return ;
if ( val.empty() ) return;
text_list_level_style_bullet *style_bullet_ = dynamic_cast<text_list_level_style_bullet *>(lists_format_array_.back().elements.back().get());
@ -536,20 +552,20 @@ void odf_lists_styles_context::set_bullet_char(std::wstring val)
void odf_lists_styles_context::set_bullet_image_size(double size)
{
if (size < 0.1) return;
if (lists_format_array_.size() < 1) return;
if (lists_format_array_.back().elements.size() <1) return ;
if (lists_format_array_.empty()) return;
if (lists_format_array_.back().elements.empty()) return ;
style_list_level_properties *props = get_list_level_properties();
if(!props) return;
props->fo_width_ = length(length(size,length::pt).get_value_unit(length::cm),length::cm);
props->fo_height_ = length(length(size,length::pt).get_value_unit(length::cm),length::cm);
props->fo_width_ = length(length(size, length::pt).get_value_unit(length::cm), length::cm);
props->fo_height_ = length(length(size, length::pt).get_value_unit(length::cm), length::cm);
}
void odf_lists_styles_context::set_bullet_image (std::wstring ref)
{
if (lists_format_array_.size() < 1) return;
if (lists_format_array_.back().elements.size() <1) return ;
if (lists_format_array_.empty()) return;
if (lists_format_array_.back().elements.empty()) return ;
text_list_level_style_image *style_image_ = dynamic_cast<text_list_level_style_image *>(lists_format_array_.back().elements.back().get());
@ -557,14 +573,14 @@ void odf_lists_styles_context::set_bullet_image (std::wstring ref)
style_image_->text_list_level_style_image_attr_.common_xlink_attlist_.href_ = ref;
style_image_->text_list_level_style_image_attr_.common_xlink_attlist_.type_= xlink_type::Simple;
style_image_->text_list_level_style_image_attr_.common_xlink_attlist_.show_ = xlink_show::Embed;
style_image_->text_list_level_style_image_attr_.common_xlink_attlist_.actuate_= xlink_actuate::OnLoad;
style_image_->text_list_level_style_image_attr_.common_xlink_attlist_.type_ = xlink_type::Simple;
style_image_->text_list_level_style_image_attr_.common_xlink_attlist_.show_ = xlink_show::Embed;
style_image_->text_list_level_style_image_attr_.common_xlink_attlist_.actuate_ = xlink_actuate::OnLoad;
}
void odf_lists_styles_context::set_start_number(int val)
{
if (lists_format_array_.size() < 1) return;
if (lists_format_array_.back().elements.size() <1) return ;
if (lists_format_array_.empty()) return;
if (lists_format_array_.back().elements.empty()) return ;
text_list_level_style_number *style_number_ = dynamic_cast<text_list_level_style_number *>(lists_format_array_.back().elements.back().get());
@ -574,8 +590,8 @@ void odf_lists_styles_context::set_start_number(int val)
}
void odf_lists_styles_context::set_text_style_name(std::wstring name)
{
if (lists_format_array_.size() < 1) return;
if (lists_format_array_.back().elements.size() <1) return ;
if (lists_format_array_.empty()) return;
if (lists_format_array_.back().elements.empty()) return ;
text_list_level_style_number *style_number_ = dynamic_cast<text_list_level_style_number *>(lists_format_array_.back().elements.back().get());
text_list_level_style_bullet *style_bullet_ = dynamic_cast<text_list_level_style_bullet *>(lists_format_array_.back().elements.back().get());

View File

@ -55,7 +55,7 @@ struct list_format_state
std::vector<office_element_ptr> elements;
std::wstring odf_list_style_name;
bool automatic;
};
class odf_lists_styles_context
@ -64,7 +64,7 @@ public:
odf_lists_styles_context();
void set_odf_context(odf_conversion_context * Context);
void start_style(int abstract_number);
void start_style(bool bMaster, int abstract_number = -1);
int start_style_level(int level, int type);
style_list_level_properties * get_list_level_properties();
style_list_level_label_alignment * get_list_level_alignment_properties();
@ -84,9 +84,9 @@ public:
void add_style(int oox_style_num, int oox_based_num);
void process_styles(office_element_ptr root );
void process_styles(office_element_ptr root, bool automatic);
std::wstring get_style_name(int oox_style_num);
std::wstring get_style_name(int oox_style_num = -1);
std::wstring get_style_name1(int oox_style_num);
private:
std::vector<list_format_state> lists_format_array_;

View File

@ -161,6 +161,7 @@ void odf_style_context::process_automatic_styles(office_element_ptr root )
if (/*it->automatic_== true && */style_state_list_[i]->root_== false && style_state_list_[i]->odf_style_)
root->add_child_element(style_state_list_[i]->odf_style_);
}
lists_styles_context_.process_styles(root, true);
}
void odf_style_context::process_office_styles(office_element_ptr root )
@ -175,7 +176,7 @@ void odf_style_context::process_office_styles(office_element_ptr root )
root->add_child_element(style_state_list_[i]->odf_style_);
}
lists_styles_context_.process_styles(root );
lists_styles_context_.process_styles(root, false);
}
std::wstring odf_style_context::find_odf_style_name(int oox_id_style, style_family::type family, bool root, bool automatic)
{

View File

@ -154,13 +154,35 @@ void odf_text_context::add_text_content(const std::wstring & text)
std::wstring last = text.substr(pos);
if (last.length() > 0)current_level_.back().elm->add_text(last);
}
void odf_text_context::add_text_date(const std::wstring & text)
{
office_element_ptr s_elm;
create_element(L"text", L"date", s_elm, odf_context_);
text_date* s = dynamic_cast<text_date*>(s_elm.get());
if (s) s->add_text(text);
if (current_level_.size()>0)
current_level_.back().elm->add_child_element(s_elm);
}
void odf_text_context::add_text_page_number(const std::wstring & text)
{
office_element_ptr s_elm;
create_element(L"text", L"page-number", s_elm, odf_context_);
text_page_number* s = dynamic_cast<text_page_number*>(s_elm.get());
if (s) s->add_text(text);
if (current_level_.size()>0)
current_level_.back().elm->add_child_element(s_elm);
}
void odf_text_context::add_text_space(int count)
{
office_element_ptr s_elm;
create_element(L"text", L"s", s_elm, odf_context_);
text_s* s = dynamic_cast<text_s*>(s_elm.get());
if (s)s->text_c_ = count;
if (s) s->text_c_ = count;
//необязательно хранить..
//int level = current_level_.size();

View File

@ -67,8 +67,10 @@ public:
void add_text_content (const std::wstring & text);
void add_text_space (int count);
void set_symbol_font (const std::wstring & font);
void add_text_date (const std::wstring & text);
void add_text_page_number(const std::wstring & text);
void set_symbol_font (const std::wstring & font);
void set_symbol_text (int sym);
void start_paragraph (bool styled = false);

View File

@ -56,7 +56,26 @@ odp_conversion_context::odp_conversion_context(package::odf_document * outputDoc
: odf_conversion_context (PresentationDocument, outputDocument), slide_context_(*this), text_context_(NULL)
{
}
odf_text_context* odp_conversion_context::text_context()
{
return text_context_;
}
odp_slide_context* odp_conversion_context::slide_context()
{
return &slide_context_;
}
odf_drawing_context* odp_conversion_context::drawing_context()
{
if (slide_context_.page_state_list_.empty()) return NULL;
return slide_context_.state().drawing_context();
}
odf_comment_context* odp_conversion_context::comment_context()
{
if (slide_context_.page_state_list_.empty()) return NULL;
return slide_context_.state().comment_context();
}
void odp_conversion_context::start_document()
{
@ -112,7 +131,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()
{
@ -128,13 +147,41 @@ void odp_conversion_context::end_drawings()
{
current_slide().drawing_context()->clear();
}
void odp_conversion_context::start_image(const std::wstring & image_file_name)
{
std::wstring odf_ref_name ;
mediaitems()->add_or_find(image_file_name,_mediaitems::typeImage,odf_ref_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();
}
}
}

View File

@ -64,14 +64,18 @@ public:
virtual void start_text_context();
virtual void end_text_context();
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_;}
virtual odf_drawing_context * drawing_context();
virtual odf_text_context * text_context();
odp_slide_context * slide_context();
odf_comment_context * 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_;

View File

@ -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;

View File

@ -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;

View File

@ -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();

View File

@ -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 ();

View File

@ -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)
@ -507,14 +527,7 @@ void ods_conversion_context::end_drawings()
{
current_table().drawing_context()->clear();
}
void ods_conversion_context::start_image(const std::wstring & image_file_name)
{
std::wstring odf_ref_name ;
mediaitems()->add_or_find(image_file_name,_mediaitems::typeImage,odf_ref_name);
current_table().drawing_context()->start_image(odf_ref_name);
}
double ods_conversion_context::convert_symbol_width(double val)
{
//width = ((int)((column_width * Digit_Width + 5) / Digit_Width * 256 )) / 256.;

View File

@ -101,8 +101,6 @@ public:
void start_drawings();
void end_drawings();
virtual void start_image(const std::wstring & image_file_name);
double convert_symbol_width(double val);
void add_defined_range (const std::wstring & name, const std::wstring & cell_range, int sheet_id, bool printable = false);

View File

@ -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_;

View File

@ -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_;

View File

@ -163,6 +163,11 @@ odf_table_context* odt_conversion_context::table_context()
{
return &table_context_;
}
odf_notes_context* odt_conversion_context::notes_context()
{
return &notes_context_;
}
odf_text_context* odt_conversion_context::text_context()
{
@ -266,8 +271,11 @@ void odt_conversion_context::end_drawings()
}
else
{
text_context()->start_element(elm);
text_context()->end_element();
if (elm)
{
text_context()->start_element(elm);
text_context()->end_element();
}
drawing_context()->clear();
drawing_context_.pop_back();
@ -915,14 +923,6 @@ void odt_conversion_context::end_change (int id, int type)
// return (text_changes_state_.current_types.back() == 2);
//}
//--------------------------------------------------------------------------------------------------------
void odt_conversion_context::start_image(const std::wstring & image_file_name)
{
std::wstring odf_ref_name ;
mediaitems()->add_or_find(image_file_name, _mediaitems::typeImage,odf_ref_name);
drawing_context()->start_image(odf_ref_name);
}
void odt_conversion_context::start_drop_cap(style_paragraph_properties *paragraph_properties)
{

View File

@ -79,11 +79,11 @@ public:
odf_comment_context * comment_context();
odf_table_context * table_context();
odf_notes_context * notes_context();
void start_drawings ();
void end_drawings ();
virtual void start_image(const std::wstring & image_file_name);
void add_text_content (const std::wstring & text);
void add_text_content (const std::wstring & text);
void start_paragraph (bool styled = false);
void end_paragraph ();

View File

@ -50,11 +50,17 @@
namespace cpdoccore
{
oox_shape::oox_shape()
{
odf_type_name = L"ooxml-non-primitive";
}
oox_shape_ptr oox_shape::create(int ooxPrstGeomType)
{
switch (ooxPrstGeomType)
{
case SimpleTypes::shapetypeMathMultiply: return boost::make_shared<oox_shape_mathMultiply>();
case SimpleTypes::shapetypeMathEqual: return boost::make_shared<oox_shape_mathEqual>();
case SimpleTypes::shapetypeSun: return boost::make_shared<oox_shape_sun>();
case SimpleTypes::shapetypeRound1Rect: return boost::make_shared<oox_shape_round1Rect>();
case SimpleTypes::shapetypeRound2DiagRect: return boost::make_shared<oox_shape_round2DiagRect>();
@ -76,11 +82,17 @@ oox_shape_ptr oox_shape::create(int ooxPrstGeomType)
case SimpleTypes::shapetypeCurvedLeftArrow: return boost::make_shared<oox_shape_curvedLeftArrow>();
case SimpleTypes::shapetypeCurvedDownArrow: return boost::make_shared<oox_shape_curvedDownArrow>();
case SimpleTypes::shapetypeLeftCircularArrow: return boost::make_shared<oox_shape_LeftCircularArrow>();
case SimpleTypes::shapetypeSwooshArrow: return boost::make_shared<oox_shape_SwooshArrow>();
case SimpleTypes::shapetypeBlockArc: return boost::make_shared<oox_shape_BlockArc>();
case SimpleTypes::shapetypeCorner: return boost::make_shared<oox_shape_Corner>();
case SimpleTypes::shapetypeChord: return boost::make_shared<oox_shape_Chord>();
case SimpleTypes::shapetypePlaque: return boost::make_shared<oox_shape_Plaque>();
case SimpleTypes::shapetypeDoubleWave: return boost::make_shared<oox_shape_DoubleWave>();
case SimpleTypes::shapetypePieWedge: return boost::make_shared<oox_shape_PieWedge>();
case SimpleTypes::shapetypePie: return boost::make_shared<oox_shape_Pie>();
case SimpleTypes::shapetypeDonut: return boost::make_shared<oox_shape_Donut>();
case SimpleTypes::shapetypeLeftRightRibbon: return boost::make_shared<oox_shape_LeftRightRibbon>();
//case (2001 + SimpleTypes::textshapetypeTextArchDown):
@ -127,7 +139,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();
}
}

View File

@ -48,6 +48,8 @@ namespace cpdoccore
public:
static oox_shape_ptr create(int ooxPrstGeomType);
oox_shape();
struct _equation
{
std::wstring name;
@ -62,24 +64,27 @@ namespace cpdoccore
_CP_OPT(std::wstring) y_maximum;
_CP_OPT(std::wstring) x_minimum;
_CP_OPT(std::wstring) x_maximum;
_CP_OPT(std::wstring) r_minimum;
_CP_OPT(std::wstring) r_maximum;
};
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 odf_type_name;
_CP_OPT(std::wstring) view_box;
_CP_OPT(std::wstring) sub_view_size;
_CP_OPT(std::wstring) glue_points;
_CP_OPT(std::wstring) glue_points;
std::wstring odf_type_name;
};
};

View File

@ -126,12 +126,12 @@ void style_background_image::serialize(std::wostream & strm)
{
CP_XML_NODE_SIMPLE()
{
CP_XML_ATTR_OPT(L"style:repeat", style_repeat_);
CP_XML_ATTR_OPT(L"style:position", style_position_);
CP_XML_ATTR_OPT(L"filter:name", filter_name_);
CP_XML_ATTR_OPT(L"draw:opacity", draw_opacity_);
CP_XML_ATTR_OPT(L"style:repeat", style_repeat_);
CP_XML_ATTR_OPT(L"style:position", style_position_);
CP_XML_ATTR_OPT(L"filter:name", filter_name_);
CP_XML_ATTR_OPT(L"draw:opacity", draw_opacity_);
if (common_xlink_attlist_) common_xlink_attlist_->serialize(CP_GET_XML_NODE());
if (xlink_attlist_) xlink_attlist_->serialize(CP_GET_XML_NODE());
if (office_binary_data_) office_binary_data_->serialize(CP_XML_STREAM());
}
}

View File

@ -169,13 +169,14 @@ public:
virtual void serialize(std::wostream & strm);
_CP_OPT(odf_types::style_repeat) style_repeat_;
_CP_OPT(odf_types::style_position) style_position_;
_CP_OPT(std::wstring) filter_name_;
_CP_OPT(odf_types::percent) draw_opacity_;
_CP_OPT(odf_types::style_repeat) style_repeat_;
_CP_OPT(odf_types::style_position) style_position_;
_CP_OPT(std::wstring) filter_name_;
_CP_OPT(odf_types::percent) draw_opacity_;
_CP_OPT(odf_types::common_xlink_attlist) common_xlink_attlist_;
office_element_ptr office_binary_data_;
_CP_OPT(odf_types::common_xlink_attlist) xlink_attlist_;
office_element_ptr office_binary_data_;
};

View File

@ -1164,13 +1164,13 @@ void style_page_layout::serialize(std::wostream & strm)
//////////////////////////////////////////////////////////////////////////////////////////////////
void style_footnote_sep_attlist::serialize(CP_ATTR_NODE)
{
CP_XML_ATTR_OPT(L"style:width", style_width_);
CP_XML_ATTR_OPT(L"style:rel-width", style_rel_width_);
CP_XML_ATTR_OPT(L"style:color", style_color_);
CP_XML_ATTR_OPT(L"style:line-style", style_line_style_);
CP_XML_ATTR_OPT(L"style:type", style_adjustment_); // default Left
CP_XML_ATTR_OPT(L"style:distance-before-sep", style_distance_before_sep_);
CP_XML_ATTR_OPT(L"style:distance-after-sep", style_distance_after_sep_);
CP_XML_ATTR_OPT(L"style:width", style_width_);
CP_XML_ATTR_OPT(L"style:rel-width", style_rel_width_);
CP_XML_ATTR_OPT(L"style:color", style_color_);
CP_XML_ATTR_OPT(L"style:line-style", style_line_style_);
CP_XML_ATTR_OPT(L"style:type", style_adjustment_); // default Left
CP_XML_ATTR_OPT(L"style:distance-before-sep", style_distance_before_sep_);
CP_XML_ATTR_OPT(L"style:distance-after-sep", style_distance_after_sep_);
}
const wchar_t * style_footnote_sep::ns = L"style";

View File

@ -207,6 +207,8 @@ void text_list::create_child_element(const std::wstring & Ns, const std::wstring
}
void text_list::add_child_element( const office_element_ptr & child_element)
{
if (!child_element) return;
ElementType type = child_element->get_type();
if (type == typeTextListHeader)

File diff suppressed because it is too large Load Diff

View File

@ -70,7 +70,7 @@ void OoxConverter::convert(OOX::Vml::CShapeType *vml_shape_type)
}
//m_oPreferRelative//типо можно менять размер
for (unsigned int i=0 ; i < vml_shape_type->m_arrItems.size();i++)
for (size_t i = 0; i < vml_shape_type->m_arrItems.size(); i++)
{
convert(vml_shape_type->m_arrItems[i]);
}
@ -86,6 +86,18 @@ void OoxConverter::convert(OOX::Vml::CShapeType *vml_shape_type)
//m_arrItems
//CVmlCommonElements
}
void OoxConverter::convert(OOX::Vml::CFormulas *vml_formulas)
{
if (vml_formulas == NULL) return;
for (size_t i = 0; i < vml_formulas->m_arrItems.size(); i++)
{
OOX::Vml::CF *cf = dynamic_cast<OOX::Vml::CF *>(vml_formulas->m_arrItems[i]);
if (cf == NULL) continue;
//odf_context()->drawing_context()->add_formula(L"", cf->m_sEqn);
}
}
void OoxConverter::convert(SimpleTypes::Vml::CCssStyle *vml_style, bool group)
{
@ -95,7 +107,7 @@ void OoxConverter::convert(SimpleTypes::Vml::CCssStyle *vml_style, bool group)
_CP_OPT(int) anchor_type_x, anchor_type_y;
for (unsigned int i=0; i < vml_style->m_arrProperties.size(); i++)
for (size_t i = 0; i < vml_style->m_arrProperties.size(); i++)
{
if (vml_style->m_arrProperties[i] == NULL) continue;
@ -639,15 +651,15 @@ void OoxConverter::convert(OOX::Vml::CStroke *vml_stroke)
switch(vml_stroke->m_oStartArrow.GetValue())
{
case SimpleTypes::strokearrowtypeBlock:
odf_context()->drawing_context()->set_line_head(SimpleTypes::lineendtypeStealth,vml_stroke->m_oStartArrowLength.GetValue(),vml_stroke->m_oStartArrowWidth.GetValue()); break;
odf_context()->drawing_context()->set_line_head(4, vml_stroke->m_oStartArrowLength.GetValue(), vml_stroke->m_oStartArrowWidth.GetValue()); break;
case SimpleTypes::strokearrowtypeClassic:
odf_context()->drawing_context()->set_line_head(SimpleTypes::lineendtypeArrow,vml_stroke->m_oStartArrowLength.GetValue(),vml_stroke->m_oStartArrowWidth.GetValue()); break;
odf_context()->drawing_context()->set_line_head(1, vml_stroke->m_oStartArrowLength.GetValue(), vml_stroke->m_oStartArrowWidth.GetValue()); break;
case SimpleTypes::strokearrowtypeDiamond:
odf_context()->drawing_context()->set_line_head(SimpleTypes::lineendtypeDiamond,vml_stroke->m_oStartArrowLength.GetValue(),vml_stroke->m_oStartArrowWidth.GetValue()); break;
odf_context()->drawing_context()->set_line_head(2, vml_stroke->m_oStartArrowLength.GetValue(), vml_stroke->m_oStartArrowWidth.GetValue()); break;
case SimpleTypes::strokearrowtypeOpen:
odf_context()->drawing_context()->set_line_head(SimpleTypes::lineendtypeTriangle,vml_stroke->m_oStartArrowLength.GetValue(),vml_stroke->m_oStartArrowWidth.GetValue()); break;
odf_context()->drawing_context()->set_line_head(5, vml_stroke->m_oStartArrowLength.GetValue(), vml_stroke->m_oStartArrowWidth.GetValue()); break;
case SimpleTypes::strokearrowtypeOval:
odf_context()->drawing_context()->set_line_head(SimpleTypes::lineendtypeOval,vml_stroke->m_oStartArrowLength.GetValue(),vml_stroke->m_oStartArrowWidth.GetValue()); break;
odf_context()->drawing_context()->set_line_head(3, vml_stroke->m_oStartArrowLength.GetValue(), vml_stroke->m_oStartArrowWidth.GetValue()); break;
case SimpleTypes::strokearrowtypeNone:
default:
break;
@ -655,15 +667,15 @@ void OoxConverter::convert(OOX::Vml::CStroke *vml_stroke)
switch(vml_stroke->m_oEndArrow.GetValue())
{
case SimpleTypes::strokearrowtypeBlock:
odf_context()->drawing_context()->set_line_tail(SimpleTypes::lineendtypeStealth,vml_stroke->m_oEndArrowLength.GetValue(),vml_stroke->m_oEndArrowWidth.GetValue()); break;
odf_context()->drawing_context()->set_line_tail(4, vml_stroke->m_oEndArrowLength.GetValue(), vml_stroke->m_oEndArrowWidth.GetValue()); break;
case SimpleTypes::strokearrowtypeClassic:
odf_context()->drawing_context()->set_line_tail(SimpleTypes::lineendtypeArrow,vml_stroke->m_oEndArrowLength.GetValue(),vml_stroke->m_oEndArrowWidth.GetValue()); break;
odf_context()->drawing_context()->set_line_tail(1, vml_stroke->m_oEndArrowLength.GetValue(), vml_stroke->m_oEndArrowWidth.GetValue()); break;
case SimpleTypes::strokearrowtypeDiamond:
odf_context()->drawing_context()->set_line_tail(SimpleTypes::lineendtypeDiamond,vml_stroke->m_oEndArrowLength.GetValue(),vml_stroke->m_oEndArrowWidth.GetValue()); break;
odf_context()->drawing_context()->set_line_tail(2, vml_stroke->m_oEndArrowLength.GetValue(), vml_stroke->m_oEndArrowWidth.GetValue()); break;
case SimpleTypes::strokearrowtypeOpen:
odf_context()->drawing_context()->set_line_tail(SimpleTypes::lineendtypeTriangle,vml_stroke->m_oEndArrowLength.GetValue(),vml_stroke->m_oEndArrowWidth.GetValue()); break;
odf_context()->drawing_context()->set_line_tail(5, vml_stroke->m_oEndArrowLength.GetValue(), vml_stroke->m_oEndArrowWidth.GetValue()); break;
case SimpleTypes::strokearrowtypeOval:
odf_context()->drawing_context()->set_line_tail(SimpleTypes::lineendtypeOval,vml_stroke->m_oEndArrowLength.GetValue(),vml_stroke->m_oEndArrowWidth.GetValue()); break;
odf_context()->drawing_context()->set_line_tail(3, vml_stroke->m_oEndArrowLength.GetValue(), vml_stroke->m_oEndArrowWidth.GetValue()); break;
case SimpleTypes::strokearrowtypeNone:
default:
break;
@ -693,17 +705,18 @@ void OoxConverter::convert(OOX::Vml::CTextbox *vml_textbox)
odf_context()->drawing_context()->set_textarea_wrap(true);
DocxConverter *docx_converter = dynamic_cast<DocxConverter*>(this);
odf_context()->start_text_context();
if (docx_converter)
{
for (unsigned int i=0 ; i < vml_textbox->m_oTxtbxContent->m_arrItems.size();i++)
odf_context()->start_text_context();
{
if (docx_converter)
for (size_t i = 0; i < vml_textbox->m_oTxtbxContent->m_arrItems.size(); i++)
{
docx_converter->convert(vml_textbox->m_oTxtbxContent->m_arrItems[i]);
}
odf_context()->drawing_context()->set_text( odf_context()->text_context());
}
odf_context()->drawing_context()->set_text( odf_context()->text_context());
odf_context()->end_text_context();
}
odf_context()->end_text_context();
}
void OoxConverter::convert(OOX::Vml::CTextPath *vml_textpath)
@ -869,7 +882,7 @@ void OoxConverter::convert(OOX::Vml::CVmlCommonElements *vml_common)
delete oRgbColor;
}
}
for (unsigned int i=0 ; i < vml_common->m_arrItems.size();i++)
for (size_t i = 0; i < vml_common->m_arrItems.size(); i++)
{
convert(vml_common->m_arrItems[i]);
}
@ -899,7 +912,7 @@ void OoxConverter::convert(OOX::Vml::CGroup *vml_group)
odf_context()->drawing_context()->set_group_shift(vml_group->m_oCoordOrigin->GetX(), vml_group->m_oCoordOrigin->GetY());
}
for (unsigned int i=0; i < vml_group->m_arrItems.size(); i++)
for (size_t i = 0; i < vml_group->m_arrItems.size(); i++)
{
if (vml_group->m_arrItems[i] == NULL) continue;

View File

@ -130,6 +130,8 @@ bool OoxConverter::UpdateProgress(long nComplete)
void OoxConverter::set_fonts_directory(const std::wstring &fontsPath)
{
if (odf_context() == NULL) return;
odf_context()->set_fonts_directory(fontsPath);
}
@ -143,18 +145,15 @@ void OoxConverter::convert(OOX::WritingElement *oox_unknown)
{
case OOX::et_graphicFrame:
{
PPTX::Logic::GraphicFrame* pGraphicFrame= dynamic_cast<PPTX::Logic::GraphicFrame*>(oox_unknown);
convert(pGraphicFrame);
convert(dynamic_cast<PPTX::Logic::GraphicFrame*>(oox_unknown));
}break;
case OOX::et_pic:
{
PPTX::Logic::Pic* pPic= dynamic_cast<PPTX::Logic::Pic*>(oox_unknown);
convert(pPic);
convert(dynamic_cast<PPTX::Logic::Pic*>(oox_unknown));
}break;
case OOX::et_dgm_DiagrammParts:
{
PPTX::Logic::SmartArt* pDiagrammParts = dynamic_cast<PPTX::Logic::SmartArt*>(oox_unknown);
convert(pDiagrammParts);
convert(dynamic_cast<PPTX::Logic::SmartArt*>(oox_unknown));
}break;
case OOX::et_a_Shape:
case OOX::et_p_Shape:
@ -181,6 +180,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));
@ -258,18 +265,19 @@ void OoxConverter::convert(OOX::WritingElement *oox_unknown)
}break;
case OOX::et_v_fill:
{
OOX::Vml::CFill *vml = dynamic_cast<OOX::Vml::CFill*>(oox_unknown);
convert(vml);
convert(dynamic_cast<OOX::Vml::CFill*>(oox_unknown));
}break;
case OOX::et_v_stroke:
{
OOX::Vml::CStroke *vml = dynamic_cast<OOX::Vml::CStroke*>(oox_unknown);
convert(vml);
convert(dynamic_cast<OOX::Vml::CStroke*>(oox_unknown));
}break;
case OOX::et_v_formulas:
{
convert(dynamic_cast<OOX::Vml::CFormulas*>(oox_unknown));
}break;
case OOX::et_v_shadow:
{
OOX::Vml::CShadow *vml = dynamic_cast<OOX::Vml::CShadow*>(oox_unknown);
convert(vml);
convert(dynamic_cast<OOX::Vml::CShadow*>(oox_unknown));
}break;
case OOX::et_v_image:
{

View File

@ -245,6 +245,7 @@ namespace OOX
class CTextPath;
class CGroup;
class CVmlCommonElements;
class CFormulas;
}
namespace VmlWord
{
@ -263,6 +264,7 @@ namespace PPTX
class Theme;
namespace Logic
{
class Bullet;
class ClrMap;
class SpTreeElem;
class GraphicFrame;
@ -322,6 +324,8 @@ namespace PPTX
class InnerShdw;
class OuterShdw;
class PrstShdw;
class AhXY;
class AhPolar;
}
}
@ -351,10 +355,11 @@ public:
double getSystemDPI();
//.......................................................................................................................
virtual OOX::IFileContainer *current_document() = 0;
virtual cpdoccore::odf_writer::odf_conversion_context *odf_context() = 0;
virtual PPTX::Theme *oox_theme() = 0;
virtual PPTX::Logic::ClrMap *oox_clrMap() {return NULL;}
virtual std::wstring find_link_by_id(std::wstring sId, int t) = 0;
virtual NSCommon::smart_ptr<OOX::File> find_file_by_id(std::wstring sId) = 0;
@ -362,6 +367,7 @@ public:
void convert (double oox_font_size, _CP_OPT(cpdoccore::odf_types::font_size) & odf_font_size);
bool convert (std::wstring sSchemeColor, DWORD & argb);
void convert_font(PPTX::Theme *theme, std::wstring & font);
//.......................................................................................................................
void convert(OOX::WritingElement *oox_unknown);
//drawingML & pptx................................................................................................................................
@ -390,6 +396,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);
@ -399,10 +406,16 @@ public:
void convert(PPTX::Logic::NvCxnSpPr *oox_nvSpPr);
void convert(PPTX::Logic::NvGrpSpPr *oox_nvSpPr);
void convert(PPTX::Logic::NvPr *oox_nvPr);
void convert(PPTX::Logic::Paragraph *oox_para, PPTX::Logic::TextListStyle *oox_list_style = NULL);
void convert(PPTX::Logic::TextListStyle *oox_list_style, int level, cpdoccore::odf_writer::style_paragraph_properties * paragraph_properties);
void convert(PPTX::Logic::TextParagraphPr *oox_para_props, cpdoccore::odf_writer::style_paragraph_properties * paragraph_properties);
void convert(PPTX::Logic::RunProperties *oox_run_props, cpdoccore::odf_writer::style_text_properties * text_properties);
void convert(PPTX::Logic::Paragraph *oox_para, PPTX::Logic::TextListStyle *oox_list_style = NULL);
void convert(PPTX::Logic::TextListStyle *oox_list_style);
void convert_list_level (PPTX::Logic::TextParagraphPr *oox_para_props, int level);
void convert(PPTX::Logic::TextListStyle *oox_list_style, int level, cpdoccore::odf_writer::style_paragraph_properties *paragraph_properties,
cpdoccore::odf_writer::style_text_properties *text_properties);
void convert(PPTX::Logic::TextParagraphPr *oox_para_props, cpdoccore::odf_writer::style_paragraph_properties *paragraph_properties,
cpdoccore::odf_writer::style_text_properties *text_properties);
void convert(PPTX::Logic::RunProperties *oox_run_props, cpdoccore::odf_writer::style_text_properties *text_properties);
void convert(PPTX::Logic::Run *oox_run);
void convert(PPTX::Logic::Fld *oox_fld);
void convert(PPTX::Logic::Br *oox_br);
@ -417,6 +430,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);
@ -497,6 +512,7 @@ public:
void convert(OOX::VmlWord::CWrap *vml_wrap);
void convert(OOX::Vml::CGroup *vml_group);
void convert(OOX::Vml::CVmlCommonElements *vml_attr);
void convert(OOX::Vml::CFormulas *vml_formulas);
};
} // namespace Oox2Odf

View File

@ -103,7 +103,16 @@ PPTX::Theme* DocxConverter::oox_theme()
else
return NULL;
}
OOX::IFileContainer* DocxConverter::current_document()
{
if (oox_current_child_document)
return oox_current_child_document;
else
{
OOX::CDocument *oox_doc = docx_document->GetDocument();
return dynamic_cast<OOX::IFileContainer*>(oox_doc);
}
}
NSCommon::smart_ptr<OOX::File> DocxConverter::find_file_by_id(std::wstring sId)
{
OOX::CDocument *oox_doc = docx_document->GetDocument();
@ -317,16 +326,16 @@ void DocxConverter::convert(OOX::WritingElement *oox_unknown)
// OOX::Logic::CShape* pShape = dynamic_cast<OOX::Logic::CShape*>(oox_unknown);
// convert(pShape);
//}break;
//case OOX::et_w_pict:
//{
// OOX::Logic::CPicture* pPic = dynamic_cast<OOX::Logic::CPicture*>(oox_unknown);
// convert(pPic);
//}break;
//case OOX::et_w_object:
//{
// OOX::Logic::CObject* pObj = dynamic_cast<OOX::Logic::CObject*>(oox_unknown);
// convert(pObj);
//}break;
case OOX::et_w_pict:
{
OOX::Logic::CPicture* pPic = dynamic_cast<OOX::Logic::CPicture*>(oox_unknown);
convert(pPic);
}break;
case OOX::et_w_object:
{
OOX::Logic::CObject* pObj = dynamic_cast<OOX::Logic::CObject*>(oox_unknown);
convert(pObj);
}break;
case OOX::et_pic_pic:
case OOX::et_pic:
case OOX::et_p_pic:
@ -353,23 +362,27 @@ void DocxConverter::convert(OOX::WritingElement *oox_unknown)
}break;
case OOX::et_w_commentReference:
{
OOX::Logic::CCommentReference* pCommRef = dynamic_cast<OOX::Logic::CCommentReference*>(oox_unknown);
convert(pCommRef); //если нет Start - означает начало с предыдущего Run
convert(dynamic_cast<OOX::Logic::CCommentReference*>(oox_unknown)); //если нет Start - означает начало с предыдущего Run
}break;
case OOX::et_w_footnoteReference:
{
OOX::Logic::CFootnoteReference* pRef= dynamic_cast<OOX::Logic::CFootnoteReference*>(oox_unknown);
convert(pRef);
convert(dynamic_cast<OOX::Logic::CFootnoteReference*>(oox_unknown));
}break;
case OOX::et_w_endnoteReference:
{
OOX::Logic::CEndnoteReference* pRef= dynamic_cast<OOX::Logic::CEndnoteReference*>(oox_unknown);
convert(pRef);
convert(dynamic_cast<OOX::Logic::CEndnoteReference*>(oox_unknown));
}break;
case OOX::et_w_endnoteRef:
{
//add ref ??? todoooo
}break;
case OOX::et_w_footnoteRef:
{
//add ref
}break;
case OOX::et_w_tbl:
{
OOX::Logic::CTbl* pTable= dynamic_cast<OOX::Logic::CTbl*>(oox_unknown);
convert(pTable);
convert(dynamic_cast<OOX::Logic::CTbl*>(oox_unknown));
}break;
case OOX::et_w_tr:
{
@ -381,6 +394,12 @@ void DocxConverter::convert(OOX::WritingElement *oox_unknown)
OOX::Logic::CTc* pCell= dynamic_cast<OOX::Logic::CTc*>(oox_unknown);
convert(pCell);
}break;
case OOX::et_w_bookmarkStart:
{
}break;
case OOX::et_w_bookmarkEnd:
{
}break;
default:
{
OoxConverter::convert(oox_unknown);
@ -394,12 +413,15 @@ void DocxConverter::convert(OOX::Logic::CSdt *oox_sdt)
//nullable<OOX::Logic::CSdtEndPr > m_oSdtEndPr;
//nullable<OOX::Logic::CSdtPr > m_oSdtPr;
if (oox_sdt->m_oSdtContent.IsInit())
convert(oox_sdt->m_oSdtContent.GetPointer());
}
void DocxConverter::convert(OOX::Logic::CSdtContent *oox_sdt)
{
if (oox_sdt == NULL) return;
for (size_t i = 0; i < oox_sdt->m_arrItems.size(); i++)
{
for (unsigned int i=0; i< oox_sdt->m_oSdtContent->m_arrItems.size(); i++)
{
convert(oox_sdt->m_oSdtContent->m_arrItems[i]);
}
convert(oox_sdt->m_arrItems[i]);
}
}
void DocxConverter::convert(OOX::Logic::CParagraph *oox_paragraph)
@ -1271,6 +1293,15 @@ void DocxConverter::convert(OOX::Logic::CParagraphProperty *oox_paragraph_pr, cp
}
if (odt_context->notes_context()->is_started() && !paragraph_properties->content_.fo_margin_left_
&& !paragraph_properties->content_.fo_text_indent_)
{
paragraph_properties->content_.fo_margin_left_ = odf_types::length( 0.2, odf_types::length::cm);
paragraph_properties->content_.fo_text_indent_ = odf_types::length(-0.2, odf_types::length::cm);
paragraph_properties->content_.fo_line_height_ = odf_types::percent(100.);
paragraph_properties->content_.style_auto_text_indent_ = false;
}
if (oox_paragraph_pr->m_oTabs.IsInit())
{
paragraph_properties->add_child_element(odf_context()->start_tabs());
@ -2248,32 +2279,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)
@ -2699,9 +2723,12 @@ void DocxConverter::convert(OOX::Drawing::CAnchor *oox_anchor)
int id = oox_anchor->m_oRelativeHeight->GetValue();
odf_context()->drawing_context()->set_z_order(id);
}
OoxConverter::convert(oox_anchor->m_oDocPr.GetPointer());
convert(&oox_anchor->m_oGraphic);
odf_context()->drawing_context()->start_drawing();
OoxConverter::convert(&oox_anchor->m_oGraphic);
odf_context()->drawing_context()->end_drawing();
odf_context()->drawing_context()->check_anchor();
}
@ -2731,9 +2758,12 @@ void DocxConverter::convert(OOX::Drawing::CInline *oox_inline)
odt_context->drawing_context()->set_vertical_rel(2);//line
odt_context->drawing_context()->set_vertical_pos(1);//middle
OoxConverter::convert(oox_inline->m_oDocPr.GetPointer());
convert(&oox_inline->m_oGraphic);
odf_context()->drawing_context()->start_drawing();
OoxConverter::convert(&oox_inline->m_oGraphic);
odf_context()->drawing_context()->end_drawing();
}
void DocxConverter::convert(SimpleTypes::CHexColor<> *color,
@ -2788,11 +2818,19 @@ void DocxConverter::convert(ComplexTypes::Word::CColor *color, _CP_OPT(odf_types
if (!color)return;
convert(color->m_oVal.GetPointer(), color->m_oThemeColor.GetPointer(),color->m_oThemeTint.GetPointer(),color->m_oThemeShade.GetPointer(), odf_color);
}
PPTX::Logic::ClrMap* DocxConverter::oox_clrMap()
{
//return current_clrMap; todoooo
OOX::CSettings * docx_settings = docx_document->GetSettings();
if (!docx_settings) return NULL;
return docx_settings->m_oClrSchemeMapping.GetPointer();
}
void DocxConverter::convert_settings()
{
if (!odt_context) return;
OOX::CSettings * docx_settings = docx_document->GetSettings();
OOX::CSettings * docx_settings = docx_document->GetSettings();
if (!docx_settings) return;
if (docx_settings->m_oZoom.IsInit())
@ -3024,7 +3062,7 @@ void DocxConverter::convert(OOX::Numbering::CAbstractNum* oox_num_style)
if (oox_num_style->m_oAbstractNumId.IsInit() == false) return;
odt_context->styles_context()->lists_styles().start_style(oox_num_style->m_oAbstractNumId->GetValue());
odt_context->styles_context()->lists_styles().start_style(true, oox_num_style->m_oAbstractNumId->GetValue());
//// Childs
//std::vector<OOX::Numbering::CLvl > m_arrLvl;
//nullable<ComplexTypes::Word::CMultiLevelType > m_oMultiLevelType;
@ -3056,7 +3094,7 @@ void DocxConverter::convert(OOX::Numbering::CLvl* oox_num_lvl)
int type_list = odt_context->styles_context()->lists_styles().start_style_level(oox_num_lvl->m_oIlvl->GetValue(), oox_type_list );
if (type_list < 0) return;
odf_writer::style_list_level_properties * level_props = odt_context->styles_context()->lists_styles().get_list_level_properties();
odf_writer::style_list_level_properties * level_props = odt_context->styles_context()->lists_styles().get_list_level_properties();
odf_writer::style_list_level_label_alignment * aligment_props = odt_context->styles_context()->lists_styles().get_list_level_alignment_properties();
if (level_props == NULL)return;
@ -3108,8 +3146,8 @@ void DocxConverter::convert(OOX::Numbering::CLvl* oox_num_lvl)
}
}else
{
aligment_props->fo_text_indent_ = odf_types::length(0,odf_types::length::cm);
aligment_props->fo_margin_left_ = odf_types::length(0,odf_types::length::cm);
aligment_props->fo_text_indent_ = odf_types::length(0, odf_types::length::cm);
aligment_props->fo_margin_left_ = odf_types::length(0, odf_types::length::cm);
}
}
@ -3121,7 +3159,7 @@ void DocxConverter::convert(OOX::Numbering::CLvl* oox_num_lvl)
convert(oox_num_lvl->m_oRPr.GetPointer(), text_props);
//create text style for symbols list НА ЛОКАЛЬНОМ контексте - иначе пересечение имен стилей (todoo вытащить генерацию имен в общую часть)
styles_context->create_style(L"",odf_types::style_family::Text, false, true, -1);
styles_context->create_style(L"", odf_types::style_family::Text, false, true, -1);
odf_writer::odf_style_state_ptr style_state = styles_context->last_state(odf_types::style_family::Text);
if (style_state)
{
@ -3191,7 +3229,9 @@ void DocxConverter::convert(OOX::Numbering::CLvl* oox_num_lvl)
}
if (type_list == 2 || type_list == 3)
{
odt_context->styles_context()->lists_styles().set_bullet_image_size(size_bullet_number_marker);
}
if (oox_num_lvl->m_oLvlRestart.IsInit() && oox_num_lvl->m_oLvlRestart->m_oVal.IsInit() && type_list == 1)
{
@ -3399,7 +3439,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);
}

View File

@ -95,6 +95,7 @@ namespace OOX
class CTcBorders;
class CTblBorders;
class CSdt;
class CSdtContent;
class CBackground;
class CLockedCanvas;
@ -146,12 +147,15 @@ namespace Oox2Odf
virtual void convertDocument();
virtual void write(const std::wstring & path);
virtual OOX::IFileContainer *current_document();
virtual odf_writer::odf_conversion_context *odf_context();
virtual PPTX::Theme *oox_theme();
virtual PPTX::Logic::ClrMap *oox_clrMap();
virtual std::wstring find_link_by_id (std::wstring sId, int t);
virtual NSCommon::smart_ptr<OOX::File> find_file_by_id(std::wstring sId);
void convert(OOX::WritingElement *oox_unknown);
void convert(OOX::WritingElement *oox_unknown);
void convert(OOX::Logic::CSdtContent *oox_sdt);
private:
struct _section
{
@ -220,7 +224,7 @@ namespace Oox2Odf
void convert(OOX::Drawing::CAnchor *oox_anchor);
void convert(OOX::Drawing::CInline *oox_inline);
void convert(SimpleTypes::CTheme<> *oox_font_theme,_CP_OPT(std::wstring) & odf_font_name);
void convert(ComplexTypes::Word::CColor *color, _CP_OPT(odf_types::color) & odf_color);
void convert(SimpleTypes::CUniversalMeasure *oox_size, _CP_OPT(odf_types::length) & odf_size);

View File

@ -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>
@ -59,7 +60,18 @@ namespace Oox2Odf
{
PptxConverter::PptxConverter(const std::wstring & path, const ProgressCallback* CallBack)
{
const OOX::CPath oox_path(std::wstring(path.c_str()));
current_clrMap = NULL;
current_slide = NULL;
current_theme = NULL;
current_tableStyles = NULL;
presentation = NULL;
output_document = NULL;
odp_context = NULL;
pCallBack = CallBack;
const OOX::CPath oox_path(std::wstring(path.c_str()));
pptx_document = new PPTX::Folder();
if (!pptx_document->isValid(oox_path.GetPath())) // true ???
@ -81,13 +93,6 @@ PptxConverter::PptxConverter(const std::wstring & path, const ProgressCallback*
output_document = new odf_writer::package::odf_document(L"presentation");
odp_context = new odf_writer::odp_conversion_context(output_document);
current_clrMap = NULL;
current_slide = NULL;
current_theme = NULL;
current_tableStyles = NULL;
pCallBack = CallBack;
if (UpdateProgress(290000))return;
}
PptxConverter::~PptxConverter()
@ -122,7 +127,15 @@ PPTX::Logic::ClrMap* PptxConverter::oox_clrMap()
{
return current_clrMap;
}
OOX::IFileContainer* PptxConverter::current_document()
{
if (oox_current_child_document)
return oox_current_child_document;
else if (current_slide)
return current_slide;
else
return pptx_document;
}
NSCommon::smart_ptr<OOX::File> PptxConverter::find_file_by_id(std::wstring sId)
{
smart_ptr<OOX::File> oFile;
@ -218,21 +231,20 @@ void PptxConverter::convert_styles()
odf_writer::style_paragraph_properties * paragraph_properties = odp_context->styles_context()->last_state()->get_paragraph_properties();
odf_writer::style_text_properties * text_properties = odp_context->styles_context()->last_state()->get_text_properties();
if (text_properties)
if (presentation->defaultTextStyle.IsInit())
{
text_properties->content_.fo_font_size_ = odf_types::font_size(odf_types::length(18, odf_types::length::pt));
}
if (slide->theme.IsInit() && text_properties)
{
if (slide->theme->themeElements.fontScheme.majorFont.latin.typeface.empty() == false)
text_properties->content_.fo_font_family_ = slide->theme->themeElements.fontScheme.majorFont.latin.typeface;
if (slide->theme->themeElements.fontScheme.majorFont.cs.typeface.empty() == false)
text_properties->content_.style_font_family_complex_ = slide->theme->themeElements.fontScheme.majorFont.cs.typeface;
OoxConverter::convert(presentation->defaultTextStyle->levels[9].GetPointer(), paragraph_properties, text_properties); //defPPr
OoxConverter::convert(presentation->defaultTextStyle->levels[0].GetPointer(), paragraph_properties, text_properties); //default text
if (slide->theme->themeElements.fontScheme.majorFont.ea.typeface.empty() == false)
text_properties->content_.style_font_family_asian_ = slide->theme->themeElements.fontScheme.majorFont.ea.typeface;
odp_context->styles_context()->create_default_style(odf_types::style_family::Paragraph);
paragraph_properties = odp_context->styles_context()->last_state()->get_paragraph_properties();
OoxConverter::convert(presentation->defaultTextStyle->levels[0].GetPointer(), paragraph_properties, text_properties); //default text
odp_context->styles_context()->create_default_style(odf_types::style_family::Text);
text_properties = odp_context->styles_context()->last_state()->get_text_properties();
OoxConverter::convert(presentation->defaultTextStyle->levels[0].GetPointer(), paragraph_properties, text_properties); //default text
}
//convert(presentation->defaultTextStyle.GetPointer()); //стили дефалтовых списков
@ -259,6 +271,8 @@ void PptxConverter::convert_styles()
odp_context->page_layout_context()->create_layer_sets();
}
void PptxConverter::convert_settings()
{
@ -294,24 +308,38 @@ void PptxConverter::convert_slides()
{
continue;// странное ... слайд 38 в FY10_September_Partner_Call.pptx
}
current_theme = slide->theme.operator->();
current_clrMap = NULL;
std::wstring master_style_name;
std::wstring layout_style_name;
bool bShow = slide->show.get_value_or(true);
bool bShowMasterAnim = slide->showMasterPhAnim.get_value_or(true);
bool bShowMasterSp = slide->showMasterSp.get_value_or(true);
PPTX::Logic::TxStyles* current_txStyles = NULL;
if (slide->Master.IsInit())
{
current_clrMap = &slide->Master->clrMap;
current_clrMap = &slide->Master->clrMap;
current_txStyles = slide->Master->txStyles.GetPointer();
std::map<std::wstring, std::wstring>::iterator pFind = m_mapMasters.find(slide->Master->m_sOutputFilename + slide->Layout->m_sOutputFilename);
std::wstring master_name = (bShowMasterSp ? slide->Master->m_sOutputFilename : L"") + slide->Layout->m_sOutputFilename;
std::map<std::wstring, std::wstring>::iterator pFind = m_mapMasters.find(master_name);
if (pFind == m_mapMasters.end())
{
master_style_name = L"MasterPage";
bool bShowLayoutMasterAnim = slide->Layout->showMasterPhAnim.get_value_or(true);
bool bShowLayoutMasterSp = slide->Layout->showMasterSp.get_value_or(true);
if (slide->Master->cSld.attrName.IsInit()) master_style_name = slide->Master->cSld.attrName.get();
else if (current_theme->name.IsInit()) master_style_name = current_theme->name.get();
master_style_name += L"_" ;
if (slide->Layout->cSld.attrName.IsInit()) master_style_name += slide->Layout->cSld.attrName.get();
else if (slide->Layout->attrType.IsInit()) master_style_name += slide->Layout->attrType->get();
else
@ -319,18 +347,23 @@ void PptxConverter::convert_slides()
odp_context->start_master_slide(master_style_name);
convert_common();
//if (slide->Layout->showMasterSp.IsInit() ? *slide->Layout->showMasterSp : true)
{
current_slide = slide->Master.operator->();
convert_slide(&slide->Master->cSld, false);
}
current_slide = slide->Master.operator->();
if (bShowLayoutMasterSp && bShowMasterSp)
convert_slide(&slide->Master->cSld, current_txStyles, false, true);
else
convert(slide->Master->cSld.bg.GetPointer());
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, current_txStyles, true, bShowLayoutMasterSp);
//add note master
odp_context->end_master_slide();
m_mapMasters.insert(std::make_pair(slide->Master->m_sOutputFilename + slide->Layout->m_sOutputFilename, master_style_name));
m_mapMasters.insert(std::make_pair(master_name, master_style_name));
}
else
{
@ -365,23 +398,22 @@ void PptxConverter::convert_slides()
odp_context->current_slide().set_master_page (master_style_name);
odp_context->current_slide().set_layout_page (layout_style_name);
//nullable_bool show;
//nullable_bool showMasterPhAnim;
//nullable_bool showMasterSp;
convert_slide(slide->cSld.GetPointer(), true);
convert_slide (slide->cSld.GetPointer(), current_txStyles, true, bShowMasterSp);
convert (slide->comments.operator->());
convert (slide->Note.operator->());
convert (slide->timing.GetPointer(), slide->transition.GetPointer());
//nullable<Logic::Transition> transition;
//nullable<Logic::Timing> timing;
//smart_ptr<NotesSlide> Note;
//smart_ptr<PPTX::Comments> comments;
odp_context->end_slide();
}
}
void PptxConverter::convert(PPTX::NotesSlide *oox_note)
{
if (!oox_note) return;
}
void PptxConverter::convert(OOX::WritingElement *oox_unknown)
{
if (oox_unknown == NULL)return;
@ -394,7 +426,51 @@ 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::Timing *oox_timing, PPTX::Logic::Transition *oox_transition)
{
if (!oox_timing) return;
if (!oox_timing->tnLst.IsInit()) return;
for (size_t i = 0; i < oox_timing->tnLst->list.size(); i++)
{
//oox_timing->tnLst[0]
}
}
void PptxConverter::convert(PPTX::Logic::TableProperties *oox_table_pr)
{
if (!oox_table_pr) return;
@ -879,46 +955,101 @@ void PptxConverter::convert(PPTX::Logic::Bg *oox_background)
odp_context->end_drawings();
}
void PptxConverter::convert_slide(PPTX::Logic::CSld *oox_slide, bool bPlaceholders)
void PptxConverter::convert_slide(PPTX::Logic::CSld *oox_slide, PPTX::Logic::TxStyles* txStyles, bool bPlaceholders, bool bFillUp)
{
if (oox_slide == NULL) return;
if (current_theme && current_clrMap)
current_theme->SetColorMap(*current_clrMap);
if (oox_slide->attrName.IsInit())
odp_context->current_slide().set_page_name(oox_slide->attrName.get());
convert(oox_slide->bg.GetPointer());
bool bMaster = *odf_context()->drawing_context()->get_presentation();
for (size_t i = 0 ; i < oox_slide->spTree.SpTreeElems.size(); i++)
{
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())
odf_context()->drawing_context()->start_drawing();
if (pShape.IsInit())
{
pShape->FillLevelUp();
if (bPlaceholders)
if (pShape->nvSpPr.nvPr.ph.is_init())
{
if (bFillUp)
pShape->FillLevelUp();
if (pShape->nvSpPr.nvPr.ph->type.IsInit())
{
int ph_type = pShape->nvSpPr.nvPr.ph->type->GetBYTECode();
//if (!bMaster && (ph_type == 5 || ph_type == 6 || ph_type == 7 || ph_type == 12))
// continue;
odf_context()->drawing_context()->set_placeholder_type(ph_type);
}
else
odf_context()->drawing_context()->set_placeholder_type(0);
if (pShape->nvSpPr.nvPr.ph->idx.IsInit())
odf_context()->drawing_context()->set_placeholder_id(pShape->nvSpPr.nvPr.ph->idx.get());
if (!bPlaceholders)
continue;
PPTX::Logic::TextListStyle * listMasterStyle = NULL;
if (txStyles)
{
std::wstring type = pShape->nvSpPr.nvPr.ph->type.get_value_or(_T("body"));
if ((type == L"title") || (type == L"ctrTitle"))
listMasterStyle = txStyles->titleStyle.GetPointer();
else if ((type == L"body") || (type == L"subTitle") || (type == L"obj"))
listMasterStyle = txStyles->bodyStyle.GetPointer();
else if (type != L"")
listMasterStyle = txStyles->otherStyle.GetPointer();
}
PPTX::Logic::Shape update_shape;
pShape->levelUp->Merge(update_shape, true);
pShape->Merge(update_shape);
if (listMasterStyle)
{
update_shape.txBody = new PPTX::Logic::TxBody();
PPTX::Logic::TextListStyle *newListStyle = new PPTX::Logic::TextListStyle();
for (int i = 0; i < 10; i++)
{
if(listMasterStyle->levels[i].is_init())
listMasterStyle->levels[i]->Merge(newListStyle->levels[i]);
}
update_shape.txBody->lstStyle.reset(newListStyle);
}
pShape->Merge(update_shape);
OoxConverter::convert(&update_shape);
}
else if (pShape->txBody.IsInit() && presentation->defaultTextStyle.IsInit())
{//default text style with master clrScheme
PPTX::Logic::Shape update_shape;
update_shape.txBody = new PPTX::Logic::TxBody();
presentation->defaultTextStyle->Merge(update_shape.txBody->lstStyle);
pShape->Merge(update_shape);
OoxConverter::convert(&update_shape);
}
else
{
OoxConverter::convert(pShape.operator->());
}
}
else
{
OoxConverter::convert(pElem.operator->());
}
//convert(oox_slide->spTree.SpTreeElems[i].GetElem().operator->());
odf_context()->drawing_context()->end_drawing();
}
convert(oox_slide->controls.GetPointer());
}
@ -946,7 +1077,11 @@ void PptxConverter::convert_layout(PPTX::Logic::CSld *oox_slide)
odf_context()->drawing_context()->start_drawing();
odf_context()->drawing_context()->start_element(elm);
OoxConverter::convert(&pShape->nvSpPr.nvPr);
odf_context()->drawing_context()->set_placeholder_type(type);
if (pShape->nvSpPr.nvPr.ph->idx.IsInit())
odf_context()->drawing_context()->set_placeholder_id(*pShape->nvSpPr.nvPr.ph->idx);
OoxConverter::convert(pShape->spPr.xfrm.GetPointer());
odf_context()->drawing_context()->end_element();

View File

@ -47,7 +47,9 @@ namespace OOX
namespace PPTX
{
class TableStyles;
class NotesSlide;
class Presentation;
class Comments;
class Folder;
namespace Logic
@ -63,6 +65,7 @@ namespace PPTX
class TableCell;
class TableCellProperties;
class TcBdr;
class TxStyles;
}
}
@ -94,19 +97,23 @@ namespace Oox2Odf
virtual void convertDocument();
virtual void write(const std::wstring & path);
virtual OOX::IFileContainer *current_document();
virtual odf_writer::odf_conversion_context *odf_context();
virtual PPTX::Theme *oox_theme();
virtual PPTX::Logic::ClrMap *oox_clrMap();
virtual std::wstring find_link_by_id (std::wstring sId, int t);
virtual NSCommon::smart_ptr<OOX::File> find_file_by_id (std::wstring sId);
void convert(OOX::WritingElement *oox_unknown);
void convert_slide (PPTX::Logic::CSld *oox_slide, bool bPlaceholders = true);
void convert_layout (PPTX::Logic::CSld *oox_slide);
void convert_slide (PPTX::Logic::CSld *oox_slide, PPTX::Logic::TxStyles* txStyles, bool bPlaceholders, bool bFillUp);
void convert_layout (PPTX::Logic::CSld *oox_slide);
void convert (PPTX::Comments *oox_comments);
void convert (PPTX::NotesSlide *oox_note);
void convert(PPTX::Logic::Bg *oox_background);
void convert(PPTX::Logic::Timing *oox_timing, PPTX::Logic::Transition *oox_transition);
void convert(PPTX::Logic::Table *oox_table);
void convert(PPTX::Logic::TableRow *oox_table_row);

View File

@ -30,9 +30,7 @@
*
*/
#include "XlsxConverter.h"
#include "../utils.h"
#include <boost/foreach.hpp>
#include "../../../Common/DocxFormat/Source/XlsxFormat/Xlsx.h"
#include "../OdfFormat/ods_conversion_context.h"
@ -45,8 +43,9 @@
#include "../OdfFormat/style_text_properties.h"
#include "../OdfFormat/style_paragraph_properties.h"
#include "../OdfFormat/style_graphic_properties.h"
#include "../OdfFormat/style_page_layout_properties.h"
#include "../../../Common/DocxFormat/Source/XlsxFormat/Xlsx.h"
#include "../utils.h"
using namespace cpdoccore;
@ -94,6 +93,15 @@ PPTX::Theme* XlsxConverter::oox_theme()
else
return NULL;
}
OOX::IFileContainer* XlsxConverter::current_document()
{
if (xlsx_current_container)
return xlsx_current_container;
else if (oox_current_child_document)
return oox_current_child_document;
else
return NULL;
}
smart_ptr<OOX::File> XlsxConverter::find_file_by_id(std::wstring sId)
{
smart_ptr<OOX::File> oFile;
@ -232,10 +240,14 @@ void XlsxConverter::convert(OOX::Spreadsheet::CWorksheet *oox_sheet)
{
if (!oox_sheet) return;
OOX::IFileContainer* old_container = xlsx_current_container;
xlsx_current_container = dynamic_cast<OOX::IFileContainer*>(oox_sheet);
if (oox_sheet->m_oDimension.IsInit())
{
ods_context->set_sheet_dimension(oox_sheet->m_oDimension->m_oRef.get());
}
convert(oox_sheet->m_oSheetFormatPr.GetPointer());
convert(oox_sheet->m_oSheetPr.GetPointer());
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -337,8 +349,37 @@ void XlsxConverter::convert(OOX::Spreadsheet::CWorksheet *oox_sheet)
convert(oox_sheet->m_oSheetViews.GetPointer());
convert(oox_sheet->m_oPageSetup.GetPointer());
convert(oox_sheet->m_oPageMargins.GetPointer());
}
convert(oox_sheet->m_oPicture.GetPointer());
xlsx_current_container = old_container;
}
void XlsxConverter::convert(OOX::Spreadsheet::CPictureWorksheet *oox_background)
{
if (!oox_background) return;
if (!oox_background->m_oId.IsInit())return;
std::wstring sID, pathImage, href;
sID = oox_background->m_oId->GetValue();
pathImage = find_link_by_id(sID, 1);
href = ods_context->add_image(pathImage);
if (href.empty()) return;
odf_writer::office_element_ptr fill_image_element;
odf_writer::create_element(L"style", L"background-image", fill_image_element, ods_context);
odf_writer::style_background_image * fill_image = dynamic_cast<odf_writer::style_background_image*>(fill_image_element.get());
if (!fill_image) return;
fill_image->xlink_attlist_ = odf_types::common_xlink_attlist();
fill_image->xlink_attlist_->type_ = odf_types::xlink_type::Simple;
fill_image->xlink_attlist_->actuate_ = odf_types::xlink_actuate::OnLoad;
fill_image->xlink_attlist_->href_ = href;
odf_writer::style_page_layout_properties* page_props = ods_context->page_layout_context()->last_layout()->get_properties();
page_props->add_child_element(fill_image_element);
}
void XlsxConverter::convert(OOX::Spreadsheet::CTable *oox_table_part)
{
if (!oox_table_part) return;
@ -1003,7 +1044,7 @@ void XlsxConverter::convert(OOX::Spreadsheet::CSheetViews *oox_sheet_views)
//nullable<SimpleTypes::COnOff<>> m_oDefaultGridColor;
//nullable<SimpleTypes::COnOff<>> m_oShowRuler;
//nullable<SimpleTypes::COnOff<>> m_oShowWhiteSpace;
//nullable<std::wstring> m_oTopLeftCell;
//nullable<std::wstring> m_oTopLeftCell;
//nullable<SimpleTypes::Spreadsheet::CSheetViewType<>> m_oView;
//nullable<SimpleTypes::COnOff<>> m_oWindowProtection;
//nullable<SimpleTypes::CUnsignedDecimalNumber<>> m_oZoomScaleNormal;
@ -1017,15 +1058,67 @@ void XlsxConverter::convert(OOX::Spreadsheet::CPageSetup *oox_page)
if (!oox_page) return;
int type = 1;
if (oox_page->m_oOrientation.IsInit())
{
type = (int)oox_page->m_oOrientation->GetValue();
}
ods_context->page_layout_context()->set_page_orientation(type);
_CP_OPT(odf_types::length) width, height;
if (oox_page->m_oPaperWidth.IsInit() && oox_page->m_oPaperHeight.IsInit())
{
double w = oox_page->m_oPaperWidth->GetValue();
double h = oox_page->m_oPaperHeight->GetValue();
int unit = oox_page->m_oPaperUnits.IsInit() ? oox_page->m_oPaperUnits->GetValue() : 0;
switch(unit)
{
case 1:
width = odf_types::length(w, odf_types::length::cm);
height = odf_types::length(h, odf_types::length::cm);
case 2:
width = odf_types::length(w, odf_types::length::inch);
height = odf_types::length(h, odf_types::length::inch);
case 3:
width = odf_types::length(w, odf_types::length::pt);
height = odf_types::length(h, odf_types::length::pt);
case 4:
width = odf_types::length(w, odf_types::length::px);
height = odf_types::length(h, odf_types::length::px);
case 0:
default:
width = odf_types::length(w, odf_types::length::mm);
height = odf_types::length(h, odf_types::length::mm);
}
}
else if (oox_page->m_oPaperSize.IsInit())
{
switch(oox_page->m_oPaperSize->GetValue())
{
case SimpleTypes::Spreadsheet::pagesizeLetterPaper:
width = odf_types::length(8.5, odf_types::length::inch);
height = odf_types::length(11, odf_types::length::inch);
break;
case SimpleTypes::Spreadsheet::pagesizeA3Paper:
width = odf_types::length(210, odf_types::length::mm);
height = odf_types::length(297, odf_types::length::mm);
break;
case SimpleTypes::Spreadsheet::pagesizeA4Paper:
width = odf_types::length(297, odf_types::length::mm);
height = odf_types::length(420, odf_types::length::mm);
break;
//todooo
}
}
ods_context->page_layout_context()->set_page_size(width, height);
}
void XlsxConverter::convert(OOX::Spreadsheet::CPageMargins *oox_page)
void XlsxConverter::convert(OOX::Spreadsheet::CPageMargins *oox_page)
{
if (!oox_page) return;
_CP_OPT(double) top, left,right,header,footer,bottom;
ods_context->page_layout_context()->set_page_margin(top,left,bottom, right,header,footer);
ods_context->page_layout_context()->set_page_margin(top, left, bottom, right, header, footer);
}
void XlsxConverter::convert(OOX::Spreadsheet::CSheetFormatPr *oox_sheet_format_pr)
@ -1718,13 +1811,16 @@ void XlsxConverter::convert(OOX::Spreadsheet::CCellAnchor *oox_anchor)
if (oox_anchor->m_oExt.IsInit())
{
}
OoxConverter::convert(oox_anchor->m_oElement.GetPointer());
odf_context()->drawing_context()->start_drawing();
OoxConverter::convert(oox_anchor->m_oElement.GetPointer());
odf_context()->drawing_context()->end_drawing();
}
void XlsxConverter::convert(OOX::Spreadsheet::CDrawing *oox_drawing)
{
if (!oox_drawing)return;
OOX::IFileContainer* old_container = xlsx_current_container;
xlsx_current_container = dynamic_cast<OOX::IFileContainer*>(oox_drawing);
for (unsigned int dr = 0 ; dr < oox_drawing->m_arrItems.size(); dr++)
@ -1734,7 +1830,7 @@ void XlsxConverter::convert(OOX::Spreadsheet::CDrawing *oox_drawing)
ods_context->end_drawings();
}
xlsx_current_container = NULL;
xlsx_current_container = old_container;
}
@ -1748,236 +1844,6 @@ void XlsxConverter::convert(OOX::Spreadsheet::CFromTo* oox_from_to, oox_table_po
if (oox_from_to->m_oColOff.IsInit()) pos->col_off = oox_from_to->m_oColOff->GetValue();//pt
}
//void XlsxConverter::convert(OOX::Spreadsheet::CGroupShape* oox_group_shape)
//{
// if (!oox_group_shape)return;
// if (oox_group_shape->m_arrItems.size() < 1) return;
//
// ods_context->drawing_context()->start_group();
//
// if (oox_group_shape->m_oNvGroupSpPr.IsInit())
// {
// if (oox_group_shape->m_oNvGroupSpPr->m_oCNvPr.IsInit())
// {
// if (oox_group_shape->m_oNvGroupSpPr->m_oCNvPr->m_sName.IsInit())
// ods_context->drawing_context()->set_group_name(*oox_group_shape->m_oNvGroupSpPr->m_oCNvPr->m_sName);
// if (oox_group_shape->m_oNvGroupSpPr->m_oCNvPr->m_oId.IsInit())
// ods_context->drawing_context()->set_group_z_order(oox_group_shape->m_oNvGroupSpPr->m_oCNvPr->m_oId->GetValue());
// }
// }
//
// OoxConverter::convert(oox_group_shape->m_oGroupSpPr.GetPointer());
//
// for (unsigned int i=0; i < oox_group_shape->m_arrItems.size(); i++)
// {
// switch(oox_group_shape->m_arrItems[i]->getType())
// {
// case OOX::et_x_Shape:
// {
// OOX::Spreadsheet::CShape* item = dynamic_cast<OOX::Spreadsheet::CShape*>(oox_group_shape->m_arrItems[i]);
// convert(item);
// }break;
// case OOX::et_x_ConnShape:
// {
// OOX::Spreadsheet::CConnShape* item = dynamic_cast<OOX::Spreadsheet::CConnShape*>(oox_group_shape->m_arrItems[i]);
// convert(item);
// }break;
// case OOX::et_x_GroupShape:
// {
// OOX::Spreadsheet::CGroupShape* item = dynamic_cast<OOX::Spreadsheet::CGroupShape*>(oox_group_shape->m_arrItems[i]);
// convert(item);
// }break;
// case OOX::et_x_Pic:
// {
// OOX::Spreadsheet::CPic* item = dynamic_cast<OOX::Spreadsheet::CPic*>(oox_group_shape->m_arrItems[i]);
// convert(item);
// }break;
// }
// }
// ods_context->drawing_context()->end_group();
//}
//
//void XlsxConverter::convert(OOX::Spreadsheet::CShape* oox_shape)
//{
// if (!oox_shape)return;
// if (!oox_shape->m_oSpPr.IsInit()) return;
//
// ods_context->drawing_context()->start_drawing();
//
// int type = -1;
// if (oox_shape->m_oSpPr->m_oCustGeom.IsInit())
// {
// type = 1000;//6???
// }
// if (oox_shape->m_oSpPr->m_oPrstGeom.IsInit())
// {
// OOX::Drawing::CPresetGeometry2D * geometry = oox_shape->m_oSpPr->m_oPrstGeom.GetPointer();
// type =(geometry->m_oPrst.GetValue());
// }
//
// if ((oox_shape->m_oNvSpPr.IsInit()) && (oox_shape->m_oNvSpPr->m_oCNvSpPr.IsInit()))
// {
// if (oox_shape->m_oNvSpPr->m_oCNvSpPr->m_otxBox.GetValue() == 1)
// type = 2000; //textBox
// }
//
// if (type < 0)return;
///////////////////////////////////////////////////////////////////////////////////
// if (type == 2000) ods_context->drawing_context()->start_text_box();
// else ods_context->drawing_context()->start_shape(type);
//
// {
// OoxConverter::convert(oox_shape->m_oSpPr.GetPointer(), oox_shape->m_oShapeStyle.GetPointer());
//
// if (oox_shape->m_oNvSpPr.IsInit())
// {
// OoxConverter::convert(oox_shape->m_oNvSpPr->m_oCNvPr.GetPointer()); //имя, описалово, номер ...
// convert(oox_shape->m_oNvSpPr->m_oCNvSpPr.GetPointer()); //заблокированности ... todooo
// }
// if (oox_shape->m_oShapeStyle.IsInit())
// {
// //доп эффекты
//
// }
// if (oox_shape->m_oTxBody.IsInit())
// {
// ods_context->start_text_context();
// OoxConverter::convert(oox_shape->m_oTxBody->m_oBodyPr.GetPointer());
//
// for (unsigned int i=0 ; i < oox_shape->m_oTxBody->m_arrItems.size();i++)
// {
// OoxConverter::convert(oox_shape->m_oTxBody->m_arrItems[i]);
// }
// ods_context->drawing_context()->set_text( ods_context->text_context());
// ods_context->end_text_context();
//
// }
// }
// if (type == 2000)ods_context->drawing_context()->end_text_box();
// else ods_context->drawing_context()->end_shape();
//
// ods_context->drawing_context()->end_drawing();
//
//}
//
//void XlsxConverter::convert(OOX::Spreadsheet::CConnShape* oox_shape)
//{
// if (!oox_shape)return;
// if (!oox_shape->m_oSpPr.IsInit()) return;
//
// ods_context->drawing_context()->start_drawing();
//
// int type = -1;
// if (oox_shape->m_oSpPr->m_eGeomType == OOX::Drawing::geomtypeCustom)
// {
// type = 1000;//?????
// }
// else if (oox_shape->m_oSpPr->m_eGeomType == OOX::Drawing::geomtypePreset)
// {
// if (oox_shape->m_oSpPr->m_oPrstGeom.IsInit())
// {
// OOX::Drawing::CPresetGeometry2D * geometry = oox_shape->m_oSpPr->m_oPrstGeom.GetPointer();
// type = (int)(geometry->m_oPrst.GetValue());
// }
// }
// if (type < 0)return;
////////////////////////////////////////////////////////////////////////////////
// ods_context->drawing_context()->start_shape(type);
// {
// OoxConverter::convert(oox_shape->m_oSpPr.GetPointer(), oox_shape->m_oShapeStyle.GetPointer());
//
// //частенько приплывает из стиля заполенение объекта .. а он то одномерный :)
// odf_context()->drawing_context()->start_area_properties();
// odf_context()->drawing_context()->set_no_fill();
// odf_context()->drawing_context()->end_area_properties();
//
// if (oox_shape->m_oNvConnSpPr.IsInit())
// {
// if (oox_shape->m_oNvConnSpPr->m_oCNvPr.IsInit())
// {
// OoxConverter::convert(oox_shape->m_oNvConnSpPr->m_oCNvPr.GetPointer());
// }
//
// if (oox_shape->m_oNvConnSpPr->m_oCNvConnSpPr.IsInit())
// {
// }
// }
// //avLst
// }
// ods_context->drawing_context()->end_shape();
// ods_context->drawing_context()->end_drawing();
//}
//
//
//void XlsxConverter::convert(OOX::Spreadsheet::CPic* oox_picture)
//{
// if (!oox_picture)return;
// if (!oox_picture->m_oBlipFill.IsInit()) return; // невeрная структура оох
//
// ods_context->drawing_context()->start_drawing();
//
// std::wstring pathImage;
// double Width=0, Height = 0;
//
// if (oox_picture->m_oBlipFill->m_oBlip.IsInit())
// {
// std::wstring sID = oox_picture->m_oBlipFill->m_oBlip->m_oEmbed.GetValue();
// pathImage = find_link_by_id(sID,1);
//
// if (pathImage.empty())
// {
// sID = oox_picture->m_oBlipFill->m_oBlip->m_oLink.GetValue();
// //???
// }
// _graphics_utils_::GetResolution(pathImage.c_str(), Width, Height);
// }
// ods_context->start_image(pathImage);
// {
// if (oox_picture->m_oBlipFill->m_oTile.IsInit())
// {
// ods_context->drawing_context()->set_image_style_repeat(2);
// }
// if (oox_picture->m_oBlipFill->m_oStretch.IsInit())
// {
// ods_context->drawing_context()->set_image_style_repeat(1);
// }
// if (oox_picture->m_oBlipFill->m_oSrcRect.IsInit() && Width >0 && Height >0)
// {
// ods_context->drawing_context()->set_image_client_rect_inch(
// oox_picture->m_oBlipFill->m_oSrcRect->m_oL.GetValue()/100. * Width / currentSystemDPI ,
// oox_picture->m_oBlipFill->m_oSrcRect->m_oT.GetValue()/100. * Height / currentSystemDPI ,
// oox_picture->m_oBlipFill->m_oSrcRect->m_oR.GetValue()/100. * Width / currentSystemDPI ,
// oox_picture->m_oBlipFill->m_oSrcRect->m_oB.GetValue()/100. * Height / currentSystemDPI );
// }
// if (oox_picture->m_oNvPicPr.IsInit())
// {
// OoxConverter::convert(oox_picture->m_oNvPicPr->m_oCNvPr.GetPointer());
//
// if (oox_picture->m_oNvPicPr->m_oCNvPicPr.IsInit())
// {
// if (oox_picture->m_oNvPicPr->m_oCNvPicPr->m_oPicLocks.IsInit())
// {
// //if (oox_picture->m_oNvPicPr->m_oCNvPicPr->m_oPicLocks->m_oNoChangeAspect)
// //{
// //}
// //if (oox_picture->m_oNvPicPr->m_oCNvPicPr->m_oPicLocks->m_oNoCrop))
// //{
// //}
// //if (oox_picture->m_oNvPicPr->m_oCNvPicPr->m_oPicLocks->m_oNoResize)
// //{
// //}
// }
// //m_oExtLst
// }
// }
//
// OoxConverter::convert(oox_picture->m_oSpPr.GetPointer(), oox_picture->m_oShapeStyle.GetPointer());
//
// }
// ods_context->drawing_context()->end_image();
// ods_context->drawing_context()->end_drawing();
//}
//
void XlsxConverter::convert(OOX::Spreadsheet::CConditionalFormatting *oox_cond_fmt)
{
if (!oox_cond_fmt)return;

View File

@ -88,6 +88,7 @@ namespace OOX
class CPageMargins;
class CSi;
class CWorkbookView;
class CPictureWorksheet;
}
}
@ -130,6 +131,7 @@ namespace Oox2Odf
virtual void convertDocument();
virtual void write(const std::wstring & path);
virtual OOX::IFileContainer *current_document();
virtual odf_writer::odf_conversion_context *odf_context();
virtual PPTX::Theme *oox_theme();
virtual std::wstring find_link_by_id (std::wstring sId, int t);
@ -150,6 +152,7 @@ namespace Oox2Odf
void convert(OOX::Spreadsheet::CWorksheet *oox_sheet);
void convert(OOX::Spreadsheet::CDefinedName *oox_defined);
void convert(OOX::Spreadsheet::CTable *oox_table_part);
void convert(OOX::Spreadsheet::CPictureWorksheet *oox_background);
void convert(OOX::Spreadsheet::CCol *oox_column);
void convert(OOX::Spreadsheet::CRow *oox_row);

View File

@ -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())
{
@ -4321,7 +4309,8 @@ HRESULT CDrawingConverter::LoadClrMap(const std::wstring& bsXml)
if (oNode.IsValid())
{
pClrMap->fromXMLW(oNode.ReadNode(L"w:clrSchemeMapping"));
XmlUtils::CXmlNode nodeMap = oNode.ReadNode(L"w:clrSchemeMapping");
pClrMap->fromXML(nodeMap);
}
*m_pClrMap = pClrMap;
@ -5275,27 +5264,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)
{

View File

@ -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);

View File

@ -80,7 +80,10 @@ namespace NSBinPptxRW
ImageMap = 42,
FontMap = 43,
FontsEmbedded = 44
FontsEmbedded = 44,
SlideNotesRels = 45,
NotesRels = 46,
NotesMastersRels= 47
};
}
}

View File

@ -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);

View File

@ -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;

View File

@ -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();
}

View File

@ -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);

View File

@ -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);

View File

@ -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

Some files were not shown because too many files have changed in this diff Show More