mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-02-11 02:16:02 +08:00
Compare commits
64 Commits
core-windo
...
core/devel
| Author | SHA1 | Date | |
|---|---|---|---|
| f70ea2b74f | |||
| db834666ba | |||
| 6ed0e13178 | |||
| 446e519110 | |||
| fb1fc01963 | |||
| 4651ae1bbb | |||
| 18606e23c6 | |||
| ed6d070d1f | |||
| f00cecbcaf | |||
| c9aee26fd6 | |||
| 32d3c0e65c | |||
| 33aeef2c02 | |||
| 7c97941acc | |||
| 01a4cd2289 | |||
| 202b58fb10 | |||
| b221150797 | |||
| 2084587e9a | |||
| 8332c28ac2 | |||
| 435a11d75c | |||
| 9a5329f5d6 | |||
| 8eecbf5fa5 | |||
| 9e1773df65 | |||
| 39e4140524 | |||
| bd90de857e | |||
| 57f2ec7b96 | |||
| 634098a6fa | |||
| bdbf208f6c | |||
| a652f5d73f | |||
| 1602843aa6 | |||
| cdb7fb8ea6 | |||
| 6387e9fa69 | |||
| 4e8097c93d | |||
| 65254b57b2 | |||
| 95899e23a8 | |||
| 5c8757d346 | |||
| 234e19d68a | |||
| 62145b7204 | |||
| 8bcc6d1501 | |||
| 09ef46f333 | |||
| 1839350526 | |||
| d7587e91b1 | |||
| 7b0a342cf9 | |||
| 3d01b0782e | |||
| fecfcfa7d2 | |||
| 29b5fa513a | |||
| f9a19badbf | |||
| d2630ea73c | |||
| a4a58c4782 | |||
| 29a3d80071 | |||
| 598bb419c0 | |||
| 087da9d2ce | |||
| c505aced48 | |||
| 959d5e5fcd | |||
| 8ee0cf4b2c | |||
| 426342074e | |||
| d2c092fe62 | |||
| a336917338 | |||
| 8925ddeee5 | |||
| 84824631b2 | |||
| dc3ecb1fc0 | |||
| 266cef8c49 | |||
| a5e821cd21 | |||
| cb5d92334e | |||
| 95c472c15c |
@ -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:
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -86,6 +86,7 @@ namespace DocFileFormat
|
||||
friend class Table;
|
||||
friend class TableRow;
|
||||
friend class VMLShapeMapping;
|
||||
friend class VMLPictureMapping;
|
||||
friend class OpenXmlPackage;
|
||||
friend class TextboxMapping;
|
||||
|
||||
|
||||
@ -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;
|
||||
@ -6412,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;
|
||||
@ -6444,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;
|
||||
@ -7147,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>
|
||||
{
|
||||
|
||||
@ -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
|
||||
|
||||
@ -3047,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:
|
||||
{
|
||||
@ -3189,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:
|
||||
@ -6366,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())
|
||||
{
|
||||
@ -6425,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())
|
||||
{
|
||||
@ -6462,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
|
||||
{
|
||||
@ -6909,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());
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -144,7 +144,8 @@ void styles_context::docx_serialize_table_style(std::wostream & strm, std::wstri
|
||||
}
|
||||
namespace oox
|
||||
{
|
||||
math_context::math_context(odf_reader::fonts_container & fonts, bool graphic) : base_font_size_(12), fonts_container_(fonts)
|
||||
math_context::math_context(odf_reader::fonts_container & fonts, bool graphic) :
|
||||
base_font_size_(12), fonts_container_(fonts)
|
||||
{
|
||||
graphRPR_ = graphic;
|
||||
|
||||
|
||||
@ -57,9 +57,25 @@ namespace svg_path
|
||||
{
|
||||
CP_XML_NODE(val.command)
|
||||
{
|
||||
for (size_t i = 0; i < val.points.size(); i++)
|
||||
{
|
||||
oox_serialize(CP_XML_STREAM(), val.points[i]);
|
||||
if (val.command == L"a:ArcTo")
|
||||
{
|
||||
if (val.points.size() > 0)
|
||||
{
|
||||
CP_XML_ATTR(L"wR", (int)(val.points[0].x.get()));
|
||||
CP_XML_ATTR(L"hR", (int)(val.points[0].y.get()));
|
||||
}
|
||||
if (val.points.size() > 1)
|
||||
{
|
||||
CP_XML_ATTR(L"stAng", (int)(val.points[1].x.get() * 60000));
|
||||
CP_XML_ATTR(L"swAng", (int)(val.points[1].y.get() * 60000));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (size_t i = 0; i < val.points.size(); i++)
|
||||
{
|
||||
oox_serialize(CP_XML_STREAM(), val.points[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -112,7 +128,7 @@ void oox_serialize_ln(std::wostream & strm, const std::vector<odf_reader::_prope
|
||||
_CP_OPT(std::wstring) strStrokeColor;
|
||||
_CP_OPT(int) iStroke;
|
||||
_CP_OPT(double) dStrokeWidth;
|
||||
_CP_OPT(double) dStrokeOpacity;
|
||||
_CP_OPT(double) dStrokeOpacity;
|
||||
_CP_OPT(bool) bWordArt;
|
||||
|
||||
odf_reader::GetProperty(prop, L"wordArt", bWordArt);
|
||||
@ -151,15 +167,23 @@ void oox_serialize_ln(std::wostream & strm, const std::vector<odf_reader::_prope
|
||||
{
|
||||
if (fill != L"a:noFill")
|
||||
{
|
||||
if (color.length() < 1 && always_draw) color = L"000000";
|
||||
else if (color.length() <1 ) color = L"ffffff";
|
||||
if ( color.empty() )
|
||||
{
|
||||
if (always_draw) color = L"000000";
|
||||
else color = L"ffffff";
|
||||
}
|
||||
|
||||
CP_XML_NODE(L"a:srgbClr")
|
||||
{
|
||||
CP_XML_ATTR(L"val",color);
|
||||
|
||||
if (dStrokeOpacity) CP_XML_NODE(L"a:alpha"){CP_XML_ATTR(L"val", *dStrokeOpacity);}
|
||||
|
||||
if (dStrokeOpacity)
|
||||
{
|
||||
CP_XML_NODE(L"a:alpha")
|
||||
{
|
||||
CP_XML_ATTR(L"val", (int)(*dStrokeOpacity * 1000));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -187,69 +211,33 @@ void oox_serialize_ln(std::wostream & strm, const std::vector<odf_reader::_prope
|
||||
}
|
||||
void oox_serialize_aLst(std::wostream & strm, const std::vector<odf_reader::_property> & prop)
|
||||
{
|
||||
_CP_OPT(int) iShapeIndex;
|
||||
_CP_OPT(bool) bWordArt;
|
||||
|
||||
odf_reader::GetProperty(prop, L"wordArt" , bWordArt);
|
||||
odf_reader::GetProperty(prop, L"odf-custom-draw-index" , iShapeIndex);
|
||||
|
||||
int count_values = 0, min_value = 0, max_value = 0;
|
||||
|
||||
if (!bWordArt && iShapeIndex)
|
||||
{
|
||||
count_values = _OO_OOX_custom_shapes[*iShapeIndex].count_values;
|
||||
min_value = _OO_OOX_custom_shapes[*iShapeIndex].min;
|
||||
max_value = _OO_OOX_custom_shapes[*iShapeIndex].max;
|
||||
}
|
||||
else if (iShapeIndex)
|
||||
{
|
||||
count_values = _OO_OOX_wordart[*iShapeIndex].count_values;
|
||||
min_value = _OO_OOX_wordart[*iShapeIndex].min;
|
||||
max_value = _OO_OOX_wordart[*iShapeIndex].max;
|
||||
}
|
||||
|
||||
CP_XML_WRITER(strm)
|
||||
{
|
||||
CP_XML_NODE(L"a:avLst")
|
||||
{
|
||||
_CP_OPT(std::wstring) strVal;
|
||||
if (odf_reader::GetProperty(prop,L"draw-modifiers",strVal) && iShapeIndex)
|
||||
_CP_OPT(bool) bModifiers;
|
||||
_CP_OPT(std::wstring) strModifiers;
|
||||
odf_reader::GetProperty(prop, L"bModifiers", bModifiers);
|
||||
odf_reader::GetProperty(prop, L"oox-draw-modifiers", strModifiers);
|
||||
if (strModifiers)
|
||||
{
|
||||
std::vector< std::wstring > values;
|
||||
boost::algorithm::split(values, strVal.get(), boost::algorithm::is_any_of(L" "), boost::algorithm::token_compress_on);
|
||||
boost::algorithm::split(values, strModifiers.get(), boost::algorithm::is_any_of(L" "), boost::algorithm::token_compress_on);
|
||||
|
||||
if( count_values >0 && values.size()>0 && count_values < 3)//временное ограниечение .. хз как там свойства путаются
|
||||
{//если не заданы доп свойства - нефиг мучится
|
||||
int i=1;
|
||||
if (!values.empty() && values.back().empty()) values.pop_back();
|
||||
|
||||
_CP_OPT(int) iMax,iMin;
|
||||
odf_reader::GetProperty(prop,L"draw-modifiers-min",iMin);
|
||||
odf_reader::GetProperty(prop,L"draw-modifiers-max",iMax);
|
||||
values.resize(count_values);
|
||||
|
||||
BOOST_FOREACH(std::wstring & v, values)
|
||||
for (size_t i = 0; i < values.size(); i++)
|
||||
{
|
||||
if (values[i].empty()) continue;
|
||||
CP_XML_NODE(L"a:gd")
|
||||
{
|
||||
CP_XML_NODE(L"a:gd")
|
||||
{
|
||||
if (values.size() >1)
|
||||
CP_XML_ATTR(L"name",(L"adj" + boost::lexical_cast<std::wstring>(i++)));
|
||||
else
|
||||
CP_XML_ATTR(L"name",L"adj");
|
||||
double val=0;
|
||||
if (v.length()>0)val= boost::lexical_cast<double>(v);
|
||||
|
||||
if (iMin && iMax && iShapeIndex)
|
||||
{
|
||||
if (min_value < max_value)
|
||||
{
|
||||
double W = *iMax - *iMin;
|
||||
val = (val- (*iMin))/W * (max_value - min_value) + min_value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
CP_XML_ATTR(L"fmla",L"val " + boost::lexical_cast<std::wstring>(static_cast<int>(val)));
|
||||
}
|
||||
if (values.size() > 1 || bModifiers)
|
||||
//весьма странное .. для некоторых модификаторов (напр math...) нужно указывать множественность их
|
||||
CP_XML_ATTR(L"name", L"adj" + std::to_wstring(i+1));
|
||||
else
|
||||
CP_XML_ATTR(L"name", L"adj");
|
||||
|
||||
CP_XML_ATTR(L"fmla", L"val " + values[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -342,37 +330,39 @@ void _oox_drawing::serialize_bodyPr(std::wostream & strm, const std::wstring & n
|
||||
|
||||
void _oox_drawing::serialize_shape(std::wostream & strm)
|
||||
{
|
||||
_CP_OPT(std::wstring) strVal;
|
||||
_CP_OPT(double) dVal;
|
||||
_CP_OPT(int) iOoxShapeIndex;
|
||||
_CP_OPT(bool) bWordArt, bOoxShape;
|
||||
_CP_OPT(std::wstring) sCustomPath;
|
||||
|
||||
odf_reader::GetProperty(additional, L"wordArt", bWordArt);
|
||||
odf_reader::GetProperty(additional, L"oox-geom-index", iOoxShapeIndex);
|
||||
odf_reader::GetProperty(additional, L"oox-geom", bOoxShape);
|
||||
|
||||
std::wstring shapeType;
|
||||
_CP_OPT(bool) bWordArt;
|
||||
|
||||
odf_reader::GetProperty(additional,L"wordArt", bWordArt);
|
||||
odf_reader::GetProperty(additional, L"custom_path", sCustomPath);
|
||||
|
||||
std::wstring shapeGeomPreset;
|
||||
|
||||
if (sub_type == 7)//custom
|
||||
{
|
||||
_CP_OPT(int) iVal;
|
||||
odf_reader::GetProperty(additional, L"odf-custom-draw-index",iVal);
|
||||
|
||||
if (iVal)
|
||||
shapeType = _OO_OOX_custom_shapes[*iVal].oox;
|
||||
else
|
||||
if (iOoxShapeIndex)
|
||||
shapeGeomPreset = _OO_OOX_custom_shapes[*iOoxShapeIndex].oox;
|
||||
else if (sCustomPath)
|
||||
sub_type = 6; //path
|
||||
|
||||
if (shapeType == L"textBox")
|
||||
if (shapeGeomPreset == L"textBox")
|
||||
{
|
||||
sub_type = 1;
|
||||
shapeType = L"rect";
|
||||
shapeGeomPreset = L"rect";
|
||||
}
|
||||
}
|
||||
else if (sub_type < 9 && sub_type >= 0)
|
||||
{
|
||||
shapeType = _ooxShapeType[sub_type];
|
||||
shapeGeomPreset = _ooxShapeType[sub_type]; //odf -> oox
|
||||
}
|
||||
|
||||
if (bWordArt) sub_type = 1;
|
||||
|
||||
|
||||
CP_XML_WRITER(strm)
|
||||
{
|
||||
if (sub_type == 6 || sub_type == 8)
|
||||
@ -391,36 +381,40 @@ void _oox_drawing::serialize_shape(std::wostream & strm)
|
||||
CP_XML_ATTR(L"t", 0);
|
||||
}
|
||||
//<a:rect b="b" l="0" r="r" t="0"/>
|
||||
if (odf_reader::GetProperty(additional, L"custom_path", strVal))
|
||||
{
|
||||
_CP_OPT(int) w, h;
|
||||
odf_reader::GetProperty(additional, L"custom_path_w", w);
|
||||
odf_reader::GetProperty(additional, L"custom_path_h", h);
|
||||
_CP_OPT(int) w, h;
|
||||
odf_reader::GetProperty(additional, L"custom_path_w", w);
|
||||
odf_reader::GetProperty(additional, L"custom_path_h", h);
|
||||
|
||||
CP_XML_NODE(L"a:pathLst")
|
||||
{
|
||||
CP_XML_NODE(L"a:path")
|
||||
{
|
||||
CP_XML_ATTR(L"w", w ? *w : cx);
|
||||
CP_XML_ATTR(L"h", h ? *h : cy);
|
||||
|
||||
CP_XML_STREAM() << strVal.get();
|
||||
}
|
||||
CP_XML_NODE(L"a:pathLst")
|
||||
{
|
||||
CP_XML_NODE(L"a:path")
|
||||
{
|
||||
CP_XML_ATTR(L"w", w ? *w : cx);
|
||||
CP_XML_ATTR(L"h", h ? *h : cy);
|
||||
|
||||
CP_XML_STREAM() << *sCustomPath;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (shapeType.length() < 1)
|
||||
if (shapeGeomPreset.empty())
|
||||
{
|
||||
shapeType = L"rect";
|
||||
sub_type = 2;
|
||||
shapeGeomPreset = L"rect";
|
||||
sub_type = 2;
|
||||
}
|
||||
CP_XML_NODE(L"a:prstGeom")//автофигура
|
||||
{
|
||||
CP_XML_ATTR(L"prst", shapeType);
|
||||
if (!bWordArt) oox_serialize_aLst(CP_XML_STREAM(), additional);
|
||||
CP_XML_ATTR(L"prst", shapeGeomPreset);
|
||||
if (!bWordArt)
|
||||
{
|
||||
if (std::wstring::npos != shapeGeomPreset.find(L"mathPlus"))
|
||||
{
|
||||
additional.push_back(odf_reader::_property(L"bModifiers", true));
|
||||
}
|
||||
oox_serialize_aLst(CP_XML_STREAM(), additional);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (bWordArt)
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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();
|
||||
|
||||
|
||||
@ -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){}
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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);
|
||||
@ -406,8 +421,8 @@ void xlsx_table_state::serialize_table_format(std::wostream & _Wostream)
|
||||
int col = -1, row = -1;
|
||||
try
|
||||
{
|
||||
col = boost::lexical_cast<int>(s_col);
|
||||
row = boost::lexical_cast<int>(s_row);
|
||||
if (!s_col.empty()) col = boost::lexical_cast<int>(s_col);
|
||||
if (!s_row.empty()) row = boost::lexical_cast<int>(s_row);
|
||||
}
|
||||
catch(...){}
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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();
|
||||
|
||||
|
||||
@ -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;}
|
||||
|
||||
@ -237,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));
|
||||
}
|
||||
|
||||
@ -291,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)
|
||||
@ -303,92 +309,66 @@ 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_);
|
||||
}
|
||||
|
||||
_CP_OPT(double) dValFontSize;
|
||||
if (text_properties_.fo_font_size_)
|
||||
dValFontSize=text_properties_.fo_font_size_->get_length().get_value();
|
||||
|
||||
_CP_OPT(std::wstring) sValFontFamily;
|
||||
if (text_properties_.fo_font_family_)
|
||||
ApplyTextProperties (span_style_name_, paragraph_style_name_, text_properties_);
|
||||
|
||||
if (in_draw)
|
||||
{
|
||||
std::wstring val =text_properties_.fo_font_family_.get();
|
||||
//'Arial' глючит
|
||||
removeCharsFromString(val, _T("'"));
|
||||
|
||||
sValFontFamily=text_properties_.fo_font_family_.get();
|
||||
odf_reader::fonts_container fonts;
|
||||
text_properties_.drawing_serialize(strm, L"a:rPr", fonts);
|
||||
}
|
||||
//else if (text_properties_.style_font_name_) - тут может быть отсылка к font_face)decl !!!!
|
||||
// sValFontFamily=text_properties_.style_font_name_.get();
|
||||
|
||||
_CP_OPT(std::wstring) sValFontColor;
|
||||
if (text_properties_.fo_color_)
|
||||
sValFontColor=text_properties_.fo_color_->get_hex_value();
|
||||
|
||||
_CP_OPT(int) iValFontWeight;
|
||||
if (text_properties_.fo_font_weight_)
|
||||
iValFontWeight=text_properties_.fo_font_weight_->get_type();
|
||||
|
||||
_CP_OPT(int) iValFontStyle;
|
||||
if(text_properties_.fo_font_style_)
|
||||
iValFontStyle=text_properties_.fo_font_style_->get_type();
|
||||
|
||||
CP_XML_WRITER(strm)
|
||||
{
|
||||
if (in_draw)
|
||||
{
|
||||
//oox_serialize_style_text(strm,text_properties_);
|
||||
//oox_serialize_style_text(strm,odf_reader::text_format_properties_content & properties);
|
||||
CP_XML_NODE(L"a:rPr")
|
||||
{
|
||||
//стр 3197
|
||||
if (dValFontSize) {CP_XML_ATTR(L"sz", (int)(dValFontSize.get()*100));}
|
||||
if ((iValFontStyle) && (iValFontStyle.get() >0)) {CP_XML_ATTR(L"i", "1");} //"true");} Exercícios de Aprendizagem.ods
|
||||
if ((iValFontWeight) && (iValFontWeight.get() >0)) {CP_XML_ATTR(L"b", "1");} //"true");} Exercícios de Aprendizagem.ods
|
||||
if (sValFontColor)
|
||||
{
|
||||
CP_XML_NODE(L"a:solidFill") {CP_XML_NODE(L"a:srgbClr"){CP_XML_ATTR(L"val", sValFontColor.get());}}
|
||||
}
|
||||
if (sValFontFamily)
|
||||
{
|
||||
CP_XML_NODE(L"a:latin"){CP_XML_ATTR(L"typeface", sValFontFamily.get());}
|
||||
}
|
||||
|
||||
|
||||
if (hyperlink_hId.length()>0)
|
||||
{
|
||||
CP_XML_NODE(L"a:hlinkClick ")
|
||||
{
|
||||
CP_XML_ATTR(L"xmlns:r", L"http://schemas.openxmlformats.org/officeDocument/2006/relationships");
|
||||
CP_XML_ATTR(L"r:id", hyperlink_hId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
CP_XML_WRITER(strm)
|
||||
{
|
||||
CP_XML_NODE(L"rPr")
|
||||
{
|
||||
if (sValFontFamily) {CP_XML_NODE(L"rFont") {CP_XML_ATTR(L"val", sValFontFamily.get());}}
|
||||
if (dValFontSize) {CP_XML_NODE(L"sz") {CP_XML_ATTR(L"val", (int)(dValFontSize.get()));}}
|
||||
if (sValFontColor) {CP_XML_NODE(L"color") {CP_XML_ATTR(L"rgb", sValFontColor.get());}}
|
||||
if ((iValFontStyle) &&
|
||||
(iValFontStyle.get() >0)) {CP_XML_NODE(L"i") {CP_XML_ATTR(L"val", "true");}}
|
||||
if ((iValFontWeight) &&
|
||||
(iValFontWeight.get() >0)) {CP_XML_NODE(L"b") {CP_XML_ATTR(L"val", "true");}}
|
||||
if (text_properties_.fo_font_family_)
|
||||
{
|
||||
CP_XML_NODE(L"rFont")
|
||||
{
|
||||
CP_XML_ATTR(L"val", text_properties_.fo_font_family_.get());
|
||||
}
|
||||
}
|
||||
if (text_properties_.fo_font_size_)
|
||||
{
|
||||
CP_XML_NODE(L"sz")
|
||||
{
|
||||
CP_XML_ATTR(L"val", (int)text_properties_.fo_font_size_->get_length().get_value());
|
||||
}
|
||||
}
|
||||
if (text_properties_.fo_color_)
|
||||
{
|
||||
CP_XML_NODE(L"color")
|
||||
{
|
||||
CP_XML_ATTR(L"rgb", text_properties_.fo_color_->get_hex_value());
|
||||
}
|
||||
}
|
||||
if (text_properties_.fo_font_style_)
|
||||
{
|
||||
CP_XML_NODE(L"i")
|
||||
{
|
||||
if (text_properties_.fo_font_style_->get_type() > 0)
|
||||
CP_XML_ATTR(L"val", "true");
|
||||
else
|
||||
CP_XML_ATTR(L"val", "false");
|
||||
}
|
||||
}
|
||||
if (text_properties_.fo_font_weight_)
|
||||
{
|
||||
CP_XML_NODE(L"b")
|
||||
{
|
||||
if (text_properties_.fo_font_weight_->get_type() > 0)
|
||||
CP_XML_ATTR(L"val", "true");
|
||||
else
|
||||
CP_XML_ATTR(L"val", "false");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -54,10 +54,9 @@ class xlsx_conversion_context;
|
||||
class xlsx_text_context: boost::noncopyable
|
||||
{
|
||||
public:
|
||||
//xlsx_text_context();
|
||||
xlsx_text_context(odf_reader::styles_container & styles_);
|
||||
~xlsx_text_context();
|
||||
public:
|
||||
xlsx_text_context (odf_reader::styles_container & styles_);
|
||||
~xlsx_text_context ();
|
||||
|
||||
void set_local_styles_container (odf_reader::styles_container *local_styles_);
|
||||
void set_cell_text_properties (odf_reader::text_format_properties_content *text_properties);
|
||||
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -251,7 +251,11 @@ static const _shape_converter _OO_OOX_custom_shapes[]=
|
||||
{L"" ,L"accentBorderCallout3",0 ,0 ,0 },
|
||||
{L"" ,L"accentBorderCallout2",0 ,0 ,0 },
|
||||
{L"" ,L"accentBorderCallout1",0 ,0 ,0 },
|
||||
{L"" ,L"halfFrame" ,0 ,0 ,0 }
|
||||
{L"" ,L"halfFrame" ,0 ,0 ,0 },
|
||||
{L"" ,L"leftCircularArrow",0 ,0 ,0 },
|
||||
{L"" ,L"leftRightRibbon",0 ,0 ,0 },
|
||||
{L"" ,L"pieWedge",0 ,0 ,0 },
|
||||
{L"" ,L"swooshArrow",0 ,0 ,0 }
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@ -163,10 +163,10 @@ void draw_line::add_attributes( const xml::attributes_wc_ptr & Attributes )
|
||||
}
|
||||
void draw_line::reset_svg_attributes()
|
||||
{
|
||||
double x1=draw_line_attlist_.svg_x1_.get_value_or(length(0)).get_value_unit(length::pt);
|
||||
double y1=draw_line_attlist_.svg_y1_.get_value_or(length(0)).get_value_unit(length::pt);
|
||||
double x2=draw_line_attlist_.svg_x2_.get_value_or(length(0)).get_value_unit(length::pt);
|
||||
double y2=draw_line_attlist_.svg_y2_.get_value_or(length(0)).get_value_unit(length::pt);
|
||||
double x1 = draw_line_attlist_.svg_x1_.get_value_or(length(0)).get_value_unit(length::pt);
|
||||
double y1 = draw_line_attlist_.svg_y1_.get_value_or(length(0)).get_value_unit(length::pt);
|
||||
double x2 = draw_line_attlist_.svg_x2_.get_value_or(length(0)).get_value_unit(length::pt);
|
||||
double y2 = draw_line_attlist_.svg_y2_.get_value_or(length(0)).get_value_unit(length::pt);
|
||||
|
||||
if (x1 > x2)
|
||||
{
|
||||
@ -431,8 +431,8 @@ void draw_equation::add_attributes( const xml::attributes_wc_ptr & Attributes )
|
||||
}
|
||||
int draw_enhanced_geometry::parsing(_CP_OPT(std::wstring) val)
|
||||
{
|
||||
int pos=0, res=-1;
|
||||
if (!val)return res;
|
||||
int pos = 0, res = -1;
|
||||
if (!val) return res;
|
||||
|
||||
BOOST_FOREACH(wchar_t c, val.get())
|
||||
{
|
||||
@ -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)
|
||||
{
|
||||
@ -530,10 +534,11 @@ void draw_enhanced_geometry::find_draw_type_oox()
|
||||
else
|
||||
{
|
||||
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)
|
||||
{
|
||||
bOoxType_ = true;
|
||||
draw_type_oox_index_ = i;
|
||||
break;
|
||||
}
|
||||
@ -545,38 +550,36 @@ void draw_enhanced_geometry::find_draw_type_oox()
|
||||
}
|
||||
}
|
||||
}
|
||||
std::wstringstream str;
|
||||
// for (size_t i = 0; i < draw_handle_.size(); i++)
|
||||
// {
|
||||
//draw_handle * handle = dynamic_cast<draw_handle *>(draw_handle_[i].get());
|
||||
//if (!handle) continue;
|
||||
|
||||
BOOST_FOREACH(const office_element_ptr & parElement, draw_handle_)
|
||||
{
|
||||
draw_handle * handle = dynamic_cast<draw_handle *>(parElement.get());
|
||||
|
||||
int min = -1;
|
||||
int 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_);
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
}
|
||||
if (min < 0 ) min=0;
|
||||
//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_);
|
||||
//}
|
||||
//catch(...)
|
||||
//{
|
||||
//}
|
||||
//if (min < 0 ) min=0;
|
||||
|
||||
try
|
||||
{
|
||||
max = parsing(handle->draw_handle_attlist_.draw_handle_range_y_maximum_);
|
||||
if (max < 0) max = parsing(handle->draw_handle_attlist_.draw_handle_range_x_maximum_);
|
||||
if (max < 0) max = parsing(handle->draw_handle_attlist_.draw_handle_radius_range_maximum_);
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
}
|
||||
draw_handle_geometry elm={min, max};
|
||||
draw_handle_geometry_.push_back(elm);
|
||||
}
|
||||
//try
|
||||
//{
|
||||
// max = parsing(handle->draw_handle_attlist_.draw_handle_range_y_maximum_);
|
||||
// if (max < 0) max = parsing(handle->draw_handle_attlist_.draw_handle_range_x_maximum_);
|
||||
// if (max < 0) max = parsing(handle->draw_handle_attlist_.draw_handle_radius_range_maximum_);
|
||||
//}
|
||||
//catch(...)
|
||||
//{
|
||||
//}
|
||||
//draw_handle_geometry elm = {min, max};
|
||||
//draw_handle_geometry_.push_back(elm);
|
||||
// }
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// draw-caption-attlist
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -246,20 +246,27 @@ void draw_enhanced_geometry::docx_convert(oox::docx_conversion_context & Context
|
||||
|
||||
if (draw_type_oox_index_)
|
||||
{
|
||||
shape->additional_.push_back(_property(L"odf-custom-draw-index", draw_type_oox_index_.get()));
|
||||
shape->additional_.push_back(_property(L"oox-geom-index", draw_type_oox_index_.get()));
|
||||
shape->additional_.push_back(_property(L"oox-geom", bOoxType_));
|
||||
|
||||
if (shape->word_art_ == true)
|
||||
shape->additional_.push_back(_property(L"wordArt", true));
|
||||
|
||||
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,14 +274,14 @@ 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(...)
|
||||
{
|
||||
res = false;
|
||||
}
|
||||
|
||||
if (o_Polyline.size() > 1 && res )
|
||||
if (!o_Polyline.empty() && res )
|
||||
{
|
||||
//сформируем xml-oox сдесь ... а то придется плодить массивы в drawing .. хоть и не красиво..
|
||||
std::wstringstream output_;
|
||||
@ -311,14 +318,10 @@ void draw_enhanced_geometry::docx_convert(oox::docx_conversion_context & Context
|
||||
|
||||
if (draw_enhanced_geometry_attlist_.draw_modifiers_)
|
||||
{
|
||||
shape->additional_.push_back(_property(L"draw-modifiers",draw_enhanced_geometry_attlist_.draw_modifiers_.get()));
|
||||
if (draw_handle_geometry_.size()>0)
|
||||
if (bOoxType_)
|
||||
shape->additional_.push_back(_property(L"oox-draw-modifiers", draw_enhanced_geometry_attlist_.draw_modifiers_.get()));
|
||||
else
|
||||
{
|
||||
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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -326,7 +329,6 @@ void draw_enhanced_geometry::docx_convert(oox::docx_conversion_context & Context
|
||||
{
|
||||
shape->bad_shape_ = true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -312,8 +312,9 @@ void draw_enhanced_geometry::pptx_convert(oox::pptx_conversion_context & Context
|
||||
|
||||
if (draw_type_oox_index_)
|
||||
{
|
||||
Context.get_slide_context().set_property(_property(L"odf-custom-draw-index", draw_type_oox_index_.get()));
|
||||
|
||||
Context.get_slide_context().set_property(_property(L"oox-geom-index", draw_type_oox_index_.get()));
|
||||
Context.get_slide_context().set_property(_property(L"oox-geom", bOoxType_));
|
||||
|
||||
if (word_art_ == true)
|
||||
Context.get_slide_context().set_property(_property(L"wordArt", true));
|
||||
|
||||
@ -325,7 +326,13 @@ void draw_enhanced_geometry::pptx_convert(oox::pptx_conversion_context & Context
|
||||
set_shape = true;
|
||||
}
|
||||
|
||||
if (draw_enhanced_geometry_attlist_.draw_enhanced_path_)
|
||||
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 (!odf_path.empty())
|
||||
{
|
||||
std::vector<::svg_path::_polyline> o_Polyline;
|
||||
|
||||
@ -333,7 +340,7 @@ void draw_enhanced_geometry::pptx_convert(oox::pptx_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(...)
|
||||
{
|
||||
@ -375,16 +382,20 @@ void draw_enhanced_geometry::pptx_convert(oox::pptx_conversion_context & Context
|
||||
}
|
||||
if (draw_enhanced_geometry_attlist_.draw_modifiers_)
|
||||
{
|
||||
Context.get_slide_context().set_property(_property(L"draw-modifiers",draw_enhanced_geometry_attlist_.draw_modifiers_.get()));
|
||||
|
||||
if (draw_handle_geometry_.size()>0)
|
||||
if (bOoxType_)
|
||||
Context.get_slide_context().set_property(_property(L"oox-draw-modifiers", draw_enhanced_geometry_attlist_.draw_modifiers_.get()));
|
||||
else
|
||||
{
|
||||
if (draw_handle_geometry_[0].min < draw_handle_geometry_[0].max)
|
||||
{
|
||||
Context.get_slide_context().set_property(_property(L"draw-modifiers-min",draw_handle_geometry_[0].min));
|
||||
Context.get_slide_context().set_property(_property(L"draw-modifiers-max",draw_handle_geometry_[0].max));
|
||||
}
|
||||
}
|
||||
|
||||
//if (draw_handle_geometry_.size()>0)
|
||||
//{
|
||||
// if (draw_handle_geometry_[0].min < draw_handle_geometry_[0].max)
|
||||
// {
|
||||
// Context.get_slide_context().set_property(_property(L"draw-modifiers-min",draw_handle_geometry_[0].min));
|
||||
// Context.get_slide_context().set_property(_property(L"draw-modifiers-max",draw_handle_geometry_[0].max));
|
||||
// }
|
||||
//}
|
||||
}
|
||||
if (!set_shape)
|
||||
{
|
||||
|
||||
@ -258,7 +258,8 @@ void draw_enhanced_geometry::xlsx_convert(oox::xlsx_conversion_context & Context
|
||||
|
||||
if (draw_type_oox_index_)
|
||||
{
|
||||
Context.get_drawing_context().set_property(_property(L"odf-custom-draw-index", draw_type_oox_index_.get()));
|
||||
Context.get_drawing_context().set_property(_property(L"oox-geom-index", draw_type_oox_index_.get()));
|
||||
Context.get_drawing_context().set_property(_property(L"oox-geom", bOoxType_));
|
||||
|
||||
if (word_art_ == true)
|
||||
Context.get_drawing_context().set_property(_property(L"wordArt", true));
|
||||
@ -269,7 +270,13 @@ void draw_enhanced_geometry::xlsx_convert(oox::xlsx_conversion_context & Context
|
||||
Context.get_drawing_context().start_shape(sub_type_.get());
|
||||
}
|
||||
|
||||
if (draw_enhanced_geometry_attlist_.draw_enhanced_path_)
|
||||
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 (!odf_path.empty())
|
||||
{
|
||||
std::vector<::svg_path::_polyline> o_Polyline;
|
||||
|
||||
@ -277,7 +284,7 @@ void draw_enhanced_geometry::xlsx_convert(oox::xlsx_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(...)
|
||||
{
|
||||
@ -321,15 +328,10 @@ void draw_enhanced_geometry::xlsx_convert(oox::xlsx_conversion_context & Context
|
||||
}
|
||||
if (draw_enhanced_geometry_attlist_.draw_modifiers_)
|
||||
{
|
||||
Context.get_drawing_context().set_property(_property(L"draw-modifiers",draw_enhanced_geometry_attlist_.draw_modifiers_.get()));
|
||||
|
||||
if (draw_handle_geometry_.size()>0)
|
||||
if (bOoxType_)
|
||||
Context.get_drawing_context().set_property(_property(L"oox-draw-modifiers", draw_enhanced_geometry_attlist_.draw_modifiers_.get()));
|
||||
else
|
||||
{
|
||||
if (draw_handle_geometry_[0].min < draw_handle_geometry_[0].max)
|
||||
{
|
||||
Context.get_drawing_context().set_property(_property(L"draw-modifiers-min",draw_handle_geometry_[0].min));
|
||||
Context.get_drawing_context().set_property(_property(L"draw-modifiers-max",draw_handle_geometry_[0].max));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -292,7 +292,7 @@ void math_mstyle::oox_convert(oox::math_context & Context)
|
||||
{
|
||||
CP_XML_NODE(L"m:ctrlPr")
|
||||
{
|
||||
Context.text_properties_->content().oox_convert(CP_XML_STREAM(), Context.graphRPR_, Context.fonts_container_);
|
||||
Context.text_properties_->content().oox_serialize(CP_XML_STREAM(), Context.graphRPR_, Context.fonts_container_);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -317,7 +317,7 @@ void math_mstyle::oox_convert(oox::math_context & Context)
|
||||
{
|
||||
CP_XML_NODE(L"m:ctrlPr")
|
||||
{
|
||||
Context.text_properties_->content().oox_convert(CP_XML_STREAM(), Context.graphRPR_, Context.fonts_container_);
|
||||
Context.text_properties_->content().oox_serialize(CP_XML_STREAM(), Context.graphRPR_, Context.fonts_container_);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -114,7 +114,7 @@ void math_mi::oox_convert(oox::math_context & Context)
|
||||
}
|
||||
}
|
||||
|
||||
Context.text_properties_->content().oox_convert(CP_XML_STREAM(), Context.graphRPR_, Context.fonts_container_);
|
||||
Context.text_properties_->content().oox_serialize(CP_XML_STREAM(), Context.graphRPR_, Context.fonts_container_);
|
||||
|
||||
CP_XML_NODE(L"m:t")
|
||||
{
|
||||
@ -162,7 +162,7 @@ void math_mo::oox_convert(oox::math_context & Context)
|
||||
{
|
||||
// + доп стили текста ... todoooo
|
||||
|
||||
Context.text_properties_->content().oox_convert(CP_XML_STREAM(), Context.graphRPR_, Context.fonts_container_);
|
||||
Context.text_properties_->content().oox_serialize(CP_XML_STREAM(), Context.graphRPR_, Context.fonts_container_);
|
||||
|
||||
CP_XML_NODE(L"m:t")
|
||||
{
|
||||
@ -203,7 +203,7 @@ void math_mn::oox_convert(oox::math_context & Context)
|
||||
{
|
||||
// + доп стили текста ... todoooo
|
||||
|
||||
Context.text_properties_->content().oox_convert(CP_XML_STREAM(), Context.graphRPR_, Context.fonts_container_);
|
||||
Context.text_properties_->content().oox_serialize(CP_XML_STREAM(), Context.graphRPR_, Context.fonts_container_);
|
||||
|
||||
CP_XML_NODE(L"m:t")
|
||||
{
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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_;
|
||||
|
||||
|
||||
@ -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));
|
||||
}
|
||||
|
||||
@ -225,7 +225,7 @@ void paragraph_format_properties::xlsx_convert(std::wostream & strm, bool in_dra
|
||||
{
|
||||
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")
|
||||
@ -235,11 +235,10 @@ void paragraph_format_properties::xlsx_convert(std::wostream & strm, bool in_dra
|
||||
}
|
||||
else
|
||||
{
|
||||
std::wstringstream s;
|
||||
s << fo_margin_top_;
|
||||
double pct = fo_margin_top_->get_percent().get_value();
|
||||
CP_XML_NODE(L"a:spcPct")
|
||||
{
|
||||
CP_XML_ATTR(L"val", s.str());
|
||||
CP_XML_ATTR(L"val", (int)(pct * 1000));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -258,11 +257,11 @@ void paragraph_format_properties::xlsx_convert(std::wostream & strm, bool in_dra
|
||||
}
|
||||
else
|
||||
{
|
||||
std::wstringstream s;
|
||||
s << fo_margin_bottom_;
|
||||
double pct = fo_margin_bottom_->get_percent().get_value();
|
||||
|
||||
CP_XML_NODE(L"a:spcPct")
|
||||
{
|
||||
CP_XML_ATTR(L"val", s.str());
|
||||
CP_XML_ATTR(L"val", (int)(pct * 1000));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -458,7 +457,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")
|
||||
@ -468,11 +467,11 @@ void paragraph_format_properties::pptx_convert(oox::pptx_conversion_context & Co
|
||||
}
|
||||
else
|
||||
{
|
||||
std::wstringstream s;
|
||||
s << fo_margin_top_;
|
||||
double pct = fo_margin_top_->get_percent().get_value();
|
||||
|
||||
CP_XML_NODE(L"a:spcPct")
|
||||
{
|
||||
CP_XML_ATTR(L"val", s.str());
|
||||
CP_XML_ATTR(L"val", (int)(pct * 1000));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -491,11 +490,11 @@ void paragraph_format_properties::pptx_convert(oox::pptx_conversion_context & Co
|
||||
}
|
||||
else
|
||||
{
|
||||
std::wstringstream s;
|
||||
s << fo_margin_bottom_;
|
||||
double pct = fo_margin_bottom_->get_percent().get_value();
|
||||
|
||||
CP_XML_NODE(L"a:spcPct")
|
||||
{
|
||||
CP_XML_ATTR(L"val", s.str());
|
||||
CP_XML_ATTR(L"val", (int)(pct * 1000));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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_;
|
||||
|
||||
};
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -80,7 +80,9 @@ public:
|
||||
void pptx_convert (oox::pptx_conversion_context & Context);
|
||||
void pptx_convert_as_list (oox::pptx_conversion_context & Context);
|
||||
|
||||
void oox_convert (std::wostream & stream, bool graphic, fonts_container & fonts);
|
||||
void oox_serialize (std::wostream & stream, bool graphic, fonts_container & fonts);
|
||||
void docx_serialize (std::wostream & stream, fonts_container & fonts);
|
||||
void drawing_serialize (std::wostream & stream, std::wstring node, fonts_container & fonts, const odf_reader::style_instance *current_style = NULL, std::wstring hlink = L"");
|
||||
|
||||
void apply_from (const text_format_properties_content & Other);
|
||||
void apply_to (std::vector<_property> & properties);
|
||||
|
||||
@ -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()))
|
||||
|
||||
@ -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:
|
||||
|
||||
|
||||
@ -455,6 +455,45 @@ namespace svg_path
|
||||
}
|
||||
}break;
|
||||
|
||||
case 'G':
|
||||
{
|
||||
nPos++;
|
||||
skipSpaces(nPos, rSvgDStatement, nLen);
|
||||
|
||||
while(nPos < nLen && isOnNumberChar(rSvgDStatement, nPos))
|
||||
{
|
||||
double nX, nY;
|
||||
double A1, A2;
|
||||
|
||||
if(!importDoubleAndSpaces(nX, nPos, rSvgDStatement, nLen)) return false;
|
||||
if(!importDoubleAndSpaces(nY, nPos, rSvgDStatement, nLen)) return false;
|
||||
if(!importDoubleAndSpaces(A1, nPos, rSvgDStatement, nLen)) return false;
|
||||
if(!importDoubleAndSpaces(A2, nPos, rSvgDStatement, nLen)) return false;
|
||||
|
||||
if(bRelative)
|
||||
{
|
||||
nX += nLastX;
|
||||
nY += nLastY;
|
||||
}
|
||||
|
||||
aCurrPoly.command = L"a:ArcTo";
|
||||
// append curved edge
|
||||
aCurrPoly.points.push_back(_point(nX, nY));
|
||||
aCurrPoly.points.push_back(_point(A1, A2));
|
||||
|
||||
Polyline.push_back(aCurrPoly);
|
||||
aCurrPoly.points.clear();
|
||||
|
||||
// set last position
|
||||
nLastX = nX;
|
||||
nLastY = nY;
|
||||
|
||||
//keep control point
|
||||
nLastControlX = nX;
|
||||
nLastControlY = nY;
|
||||
}
|
||||
}break;
|
||||
|
||||
// #100617# quadratic beziers are imported as cubic ones
|
||||
//case 'q' :
|
||||
//{
|
||||
|
||||
@ -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) );
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -57,15 +57,15 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"mso-spt200" , 7}, // shapetypeActionButtonMovie,
|
||||
{ L"mso-spt197" , 7}, // shapetypeActionButtonReturn,
|
||||
{ L"mso-spt199" , 7}, // shapetypeActionButtonSound,
|
||||
{ L"ooxml-arc" , 7}, // shapetypeArc,
|
||||
{ L"" , 7}, // shapetypeArc,
|
||||
{ L"mso-spt91" , 7}, // shapetypeBentArrow,
|
||||
{ L"mso-spt33" , 7}, // shapetypeBentConnector2,
|
||||
{ L"mso-spt34" , 7}, // shapetypeBentConnector3,
|
||||
{ L"mso-spt35" , 7}, // shapetypeBentConnector4,
|
||||
{ L"mso-spt36" , 7}, // shapetypeBentConnector5,
|
||||
{ L"mso-spt90" , 7}, // shapetypeBentUpArrow,
|
||||
{ L"" , 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,
|
||||
@ -78,7 +78,7 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"" , 7}, // shapetypeChartPlus,
|
||||
{ L"" , 7}, // shapetypeChartStar,
|
||||
{ L"" , 7}, // shapetypeChartX,
|
||||
{ L"chevron" , 7}, // shapetypeChevron,
|
||||
{ L"" , 7}, // shapetypeChevron,
|
||||
{ L"" , 7}, // shapetypeChord,
|
||||
{ L"" , 7}, // shapetypeCircularArrow,
|
||||
{ L"cloud" , 7}, // shapetypeCloud,
|
||||
@ -92,16 +92,16 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"mso-spt40" , 7}, // shapetypeCurvedConnector5,
|
||||
{ L"" , 7}, // shapetypeCurvedDownArrow,
|
||||
{ L"" , 7}, // shapetypeCurvedLeftArrow,
|
||||
{ L"mso-spt102" , 7}, // shapetypeCurvedRightArrow,
|
||||
{ L"" , 7}, // shapetypeCurvedRightArrow,
|
||||
{ L"mso-spt104" , 7}, // shapetypeCurvedUpArrow,
|
||||
{ L"" , 7}, // shapetypeDecagon,
|
||||
{ L"" , 7}, // shapetypeDiagStripe,
|
||||
{ L"diamond" , 7}, // shapetypeDiamond,
|
||||
{ L"" , 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,
|
||||
{ L"" , 7}, // shapetypeDownArrow,
|
||||
{ L"" , 7}, // shapetypeDownArrowCallout,
|
||||
{ L"ellipse" , 3}, // shapetypeEllipse,
|
||||
{ L"mso-spt107" , 7}, // shapetypeEllipseRibbon,
|
||||
{ L"mso-spt108" , 7}, // shapetypeEllipseRibbon2,
|
||||
@ -112,7 +112,7 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"flowchart-delay" , 7}, // shapetypeFlowChartDelay,
|
||||
{ L"flowchart-display" , 7}, // shapetypeFlowChartDisplay,
|
||||
{ L"flowchart-document" , 7}, // shapetypeFlowChartDocument,
|
||||
{ L"flowchart-extract" , 7}, // shapetypeFlowChartExtract,
|
||||
{ L"" , 7}, // shapetypeFlowChartExtract,
|
||||
{ L"flowchart-data" , 7}, // shapetypeFlowChartInputOutput,
|
||||
{ L"flowchart-internal-storage" , 7}, // shapetypeFlowChartInternalStorage,
|
||||
{ L"flowchart-magnetic-disk" , 7}, // shapetypeFlowChartMagneticDisk,
|
||||
@ -135,7 +135,7 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"flowchart-summing-junction" , 7}, // shapetypeFlowChartSummingJunction,
|
||||
{ L"flowchart-terminator" , 7}, // shapetypeFlowChartTerminator,
|
||||
{ L"paper" , 7}, // shapetypeFoldedCorner,
|
||||
{ L"frame" , 7}, // shapetypeFrame,
|
||||
{ L"" , 7}, // shapetypeFrame,
|
||||
{ L"" , 7}, // shapetypeFunnel,
|
||||
{ L"" , 7}, // shapetypeGear6,
|
||||
{ L"" , 7}, // shapetypeGear9,
|
||||
@ -143,21 +143,21 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"heart" , 7}, // shapetypeHeart,
|
||||
{ L"" , 7}, // shapetypeHeptagon,
|
||||
{ L"hexagon" , 7}, // shapetypeHexagon,
|
||||
{ L"pentagon-right" , 7}, // shapetypeHomePlate,
|
||||
{ L"" , 7}, // shapetypeHomePlate,
|
||||
{ L"horizontal-scroll" , 7}, // shapetypeHorizontalScroll,
|
||||
{ L"" , 7}, // shapetypeIrregularSeal1,
|
||||
{ L"" , 7}, // shapetypeIrregularSeal2,
|
||||
{ L"left-arrow" , 7}, // shapetypeLeftArrow,
|
||||
{ L"left-arrow-callout" , 7}, // shapetypeLeftArrowCallout,
|
||||
{ L"" , 7}, // shapetypeLeftArrow,
|
||||
{ L"" , 7}, // shapetypeLeftArrowCallout,
|
||||
{ L"left-brace" , 7}, // shapetypeLeftBrace,
|
||||
{ L"left-bracket" , 7}, // shapetypeLeftBracket,
|
||||
{ L"" , 7}, // shapetypeLeftCircularArrow,
|
||||
{ L"left-right-arrow" , 7}, // shapetypeLeftRightArrow,
|
||||
{ L"" , 7}, // shapetypeLeftRightArrow,
|
||||
{ L"left-right-arrow-callout" , 7}, // shapetypeLeftRightArrowCallout,
|
||||
{ L"" , 7}, // shapetypeLeftRightCircularArrow,
|
||||
{ L"" , 7}, // shapetypeLeftRightRibbon,
|
||||
{ L"mso-spt182" , 7}, // shapetypeLeftRightUpArrow,
|
||||
{ L"mso-spt89" , 7}, // shapetypeLeftUpArrow,
|
||||
{ L"" , 7}, // shapetypeLeftUpArrow,
|
||||
{ L"lightning" , 7}, // shapetypeLightningBolt,
|
||||
{ L"" , 5}, // shapetypeLine,
|
||||
{ L"" , 7}, // shapetypeLineInv,
|
||||
@ -166,33 +166,33 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"" , 7}, // shapetypeMathMinus,
|
||||
{ L"" , 7}, // shapetypeMathMultiply,
|
||||
{ L"" , 7}, // shapetypeMathNotEqual,
|
||||
{ L"cross" , 7}, // shapetypeMathPlus,
|
||||
{ L"" , 7}, // shapetypeMathPlus,
|
||||
{ L"moon" , 7}, // shapetypeMoon,
|
||||
{ L"" , 7}, // shapetypeNonIsoscelesTrapezoid,
|
||||
{ L"forbidden" , 7}, // shapetypeNoSmoking,
|
||||
{ L"notched-right-arrow" , 7}, // shapetypeNotchedRightArrow,
|
||||
{ L"" , 7}, // shapetypeNotchedRightArrow,
|
||||
{ L"octagon" , 7}, // shapetypeOctagon,
|
||||
{ L"parallelogram" , 7}, // shapetypeParallelogram,
|
||||
{ L"" , 7}, // shapetypeParallelogram,
|
||||
{ L"pentagon" , 7}, // shapetypePentagon,
|
||||
{ L"mso-spt100" , 7}, // shapetypePie,
|
||||
{ L"" , 7}, // shapetypePie,
|
||||
{ L"" , 7}, // shapetypePieWedge,
|
||||
{ L"" , 7}, // shapetypePlaque,
|
||||
{ L"" , 7}, // shapetypePlaqueTabs,
|
||||
{ L"cross" , 7}, // shapetypePlus,
|
||||
{ L"" , 7}, // shapetypePlus,
|
||||
{ L"quad-arrow" , 7}, // shapetypeQuadArrow,
|
||||
{ L"quad-arrow-callout" , 7}, // shapetypeQuadArrowCallout,
|
||||
{ L"rectangle" , 2}, // shapetypeRect,
|
||||
{ L"mso-spt53" , 7}, // shapetypeRibbon,
|
||||
{ L"mso-spt54" , 7}, // shapetypeRibbon2,
|
||||
{ L"right-arrow" , 7}, // shapetypeRightArrow,
|
||||
{ L"right-arrow-callout" , 7}, // shapetypeRightArrowCallout,
|
||||
{ L"" , 7}, // shapetypeRightArrow,
|
||||
{ L"" , 7}, // shapetypeRightArrowCallout,
|
||||
{ L"right-brace" , 7}, // shapetypeRightBrace,
|
||||
{ L"right-bracket" , 7}, // shapetypeRightBracket,
|
||||
{ L"" , 7}, // shapetypeRound1Rect,
|
||||
{ L"" , 7}, // shapetypeRound2DiagRect,
|
||||
{ L"" , 7}, // shapetypeRound2SameRect,
|
||||
{ L"round-rectangle" , 7}, // shapetypeRoundRect,
|
||||
{ L"right-triangle" , 7}, // shapetypeRtTriangle,
|
||||
{ L"" , 7}, // shapetypeRoundRect,
|
||||
{ L"" , 7}, // shapetypeRtTriangle,
|
||||
{ L"smiley" , 7}, // shapetypeSmileyFace,
|
||||
{ L"" , 7}, // shapetypeSnip1Rect,
|
||||
{ L"" , 7}, // shapetypeSnip2DiagRect,
|
||||
@ -214,11 +214,11 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"" , 7}, // shapetypeSun,
|
||||
{ L"" , 7}, // shapetypeSwooshArrow,
|
||||
{ L"" , 7}, // shapetypeTeardrop,
|
||||
{ L"trapezoid" , 7}, // shapetypeTrapezoid,
|
||||
{ L"isosceles-triangle" , 7}, // shapetypeTriangle,
|
||||
{ L"up-arrow" , 7}, // shapetypeUpArrow,
|
||||
{ L"up-arrow-callout" , 7}, // shapetypeUpArrowCallout,
|
||||
{ L"up-down-arrow" , 7}, // shapetypeUpDownArrow,
|
||||
{ L"" , 7}, // shapetypeTrapezoid,
|
||||
{ L"" , 7}, // shapetypeTriangle,
|
||||
{ L"" , 7}, // shapetypeUpArrow,
|
||||
{ L"" , 7}, // shapetypeUpArrowCallout,
|
||||
{ L"" , 7}, // shapetypeUpDownArrow,
|
||||
{ L"up-down-arrow-callout" , 7}, // shapetypeUpDownArrowCallout,
|
||||
{ L"mso-spt101" , 7}, // shapetypeUturnArrow,
|
||||
{ L"vertical-scroll" , 7}, // shapetypeVerticalScroll,
|
||||
|
||||
@ -30,6 +30,12 @@
|
||||
*
|
||||
*/
|
||||
#include "../oox_shape_defines.h"
|
||||
|
||||
// shapetypeAccentBorderCallout1,
|
||||
// shapetypeAccentBorderCallout2,
|
||||
// shapetypeAccentBorderCallout3,
|
||||
|
||||
namespace cpdoccore
|
||||
{
|
||||
|
||||
}
|
||||
@ -29,3 +29,9 @@
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
#include "../oox_shape_defines.h"
|
||||
|
||||
namespace cpdoccore
|
||||
{
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -29,3 +29,67 @@
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
#include "../oox_shape_defines.h"
|
||||
|
||||
//+ shapetypeBentUpArrow
|
||||
// shapetypeBentArrow,
|
||||
// shapetypeBentConnector2,
|
||||
// shapetypeBentConnector3,
|
||||
// shapetypeBentConnector4,
|
||||
// shapetypeBentConnector5,
|
||||
|
||||
namespace cpdoccore
|
||||
{
|
||||
class oox_shape_BentUpArrow : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_BentUpArrow()
|
||||
{
|
||||
odf_type_name =L"ooxml-bentUpArrow";
|
||||
|
||||
enhanced_path = L"M 0 ?f13 L ?f10 ?f13 ?f10 ?f4 ?f6 ?f4 ?f8 0 ?f18 ?f4 ?f11 ?f4 ?f11 ?f17 0 ?f17 Z N";
|
||||
text_areas = L"0 ?f13 ?f11 ?f17";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"25000 25000 25000";
|
||||
|
||||
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"if(0-$2 ,0,if(50000-$2 ,$2 ,50000))");
|
||||
add(L"f3", L"min(logwidth,logheight)");
|
||||
add(L"f4", L"?f3 *?f2 /100000");
|
||||
add(L"f5", L"?f3 *?f1 /50000");
|
||||
add(L"f6", L"logwidth+0-?f5 ");
|
||||
add(L"f7", L"?f3 *?f1 /100000");
|
||||
add(L"f8", L"logwidth+0-?f7 ");
|
||||
add(L"f9", L"?f3 *?f0 /200000");
|
||||
add(L"f10", L"?f8 +0-?f9 ");
|
||||
add(L"f11", L"?f8 +?f9 -0");
|
||||
add(L"f12", L"?f3 *?f0 /100000");
|
||||
add(L"f13", L"logheight+0-?f12 ");
|
||||
add(L"f14", L"?f11 *1/2");
|
||||
add(L"f15", L"(?f13 +logheight)/2");
|
||||
add(L"f16", L"(?f4 +logheight)/2");
|
||||
add(L"f17", L"logheight");
|
||||
add(L"f18", L"logwidth");
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h1, h2;
|
||||
|
||||
h1.position = L"0 ?f13";
|
||||
h1.y_maximum= L"50000";
|
||||
h1.y_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
|
||||
h2.position = L"?f6 0";
|
||||
h2.x_maximum= L"50000";
|
||||
h2.x_minimum= L"0";
|
||||
handles.push_back(h2);
|
||||
|
||||
h1.position = L"?f10 ?f4";
|
||||
h1.y_maximum= L"50000";
|
||||
h1.y_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
@ -29,3 +29,253 @@
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
#include "../oox_shape_defines.h"
|
||||
|
||||
//+ shapetypeLeftArrowCallout
|
||||
//+ shapetypeRightArrowCallout
|
||||
//+ shapetypeUpArrowCallout
|
||||
//+ shapetypeDownArrowCallout
|
||||
|
||||
namespace cpdoccore
|
||||
{
|
||||
class oox_shape_LeftArrowCallout : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_LeftArrowCallout()
|
||||
{
|
||||
odf_type_name =L"ooxml-leftArrowCallout";
|
||||
|
||||
enhanced_path = L"M 0 ?f12 L ?f17 ?f13 ?f17 ?f14 ?f19 ?f14 ?f19 0 ?f22 0 ?f22 ?f21 ?f19 ?f21 ?f19 ?f15 ?f17 ?f15 ?f17 ?f16 Z N";
|
||||
text_areas = L"?f19 0 ?f22 ?f21";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"25000 25000 25000 64977";
|
||||
|
||||
add(L"f0", L"min(logwidth,logheight)");
|
||||
add(L"f1", L"50000*logheight/?f0 ");
|
||||
add(L"f2", L"if(0-$1 ,0,if(?f1 -$1 ,$1 ,?f1 ))");
|
||||
add(L"f3", L"?f2 *2/1");
|
||||
add(L"f4", L"if(0-$0 ,0,if(?f3 -$0 ,$0 ,?f3 ))");
|
||||
add(L"f5", L"100000*logwidth/?f0 ");
|
||||
add(L"f6", L"if(0-$2 ,0,if(?f5 -$2 ,$2 ,?f5 ))");
|
||||
add(L"f7", L"?f6 *?f0 /logwidth");
|
||||
add(L"f8", L"100000+0-?f7 ");
|
||||
add(L"f9", L"if(0-$3 ,0,if(?f8 -$3 ,$3 ,?f8 ))");
|
||||
add(L"f10", L"?f0 *?f2 /100000");
|
||||
add(L"f11", L"?f0 *?f4 /200000");
|
||||
add(L"f12", L"logheight/2");
|
||||
add(L"f13", L"?f12 +0-?f10 ");
|
||||
add(L"f14", L"?f12 +0-?f11 ");
|
||||
add(L"f15", L"?f12 +?f11 -0");
|
||||
add(L"f16", L"?f12 +?f10 -0");
|
||||
add(L"f17", L"?f0 *?f6 /100000");
|
||||
add(L"f18", L"logwidth*?f9 /100000");
|
||||
add(L"f19", L"logwidth+0-?f18 ");
|
||||
add(L"f20", L"(?f19 +logwidth)/2");
|
||||
add(L"f21", L"logheight");
|
||||
add(L"f22", L"logwidth");
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h1, h2;
|
||||
|
||||
h2.position = L"?f17 ?f14";
|
||||
h2.y_maximum= L"?f3";
|
||||
h2.y_minimum= L"0";
|
||||
handles.push_back(h2);
|
||||
|
||||
h2.position = L"0 ?f13";
|
||||
h2.y_maximum= L"?f1";
|
||||
h2.y_minimum= L"0";
|
||||
handles.push_back(h2);
|
||||
|
||||
h1.position = L"?f17 0";
|
||||
h1.x_maximum= L"?f5";
|
||||
h1.x_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
|
||||
h1.position = L"?f19 ?f21";
|
||||
h1.x_maximum= L"?f8";
|
||||
h1.x_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
}
|
||||
};
|
||||
|
||||
class oox_shape_RightArrowCallout : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_RightArrowCallout()
|
||||
{
|
||||
odf_type_name = L"ooxml-rightArrowCallout";
|
||||
|
||||
enhanced_path = L"M 0 0 L ?f19 0 ?f19 ?f14 ?f18 ?f14 ?f18 ?f13 ?f21 ?f12 ?f18 ?f16 ?f18 ?f15 ?f19 ?f15 ?f19 ?f22 0 ?f22 Z N";
|
||||
text_areas = L"0 0 ?f19 ?f22";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"25000 25000 25000 64977";
|
||||
|
||||
add(L"f0", L"min(logwidth,logheight)");
|
||||
add(L"f1", L"50000*logheight/?f0 ");
|
||||
add(L"f2", L"if(0-$1 ,0,if(?f1 -$1 ,$1 ,?f1 ))");
|
||||
add(L"f3", L"?f2 *2/1");
|
||||
add(L"f4", L"if(0-$0 ,0,if(?f3 -$0 ,$0 ,?f3 ))");
|
||||
add(L"f5", L"100000*logwidth/?f0 ");
|
||||
add(L"f6", L"if(0-$2 ,0,if(?f5 -$2 ,$2 ,?f5 ))");
|
||||
add(L"f7", L"?f6 *?f0 /logwidth");
|
||||
add(L"f8", L"100000+0-?f7 ");
|
||||
add(L"f9", L"if(0-$3 ,0,if(?f8 -$3 ,$3 ,?f8 ))");
|
||||
add(L"f10", L"?f0 *?f2 /100000");
|
||||
add(L"f11", L"?f0 *?f4 /200000");
|
||||
add(L"f12", L"logheight/2");
|
||||
add(L"f13", L"?f12 +0-?f10 ");
|
||||
add(L"f14", L"?f12 +0-?f11 ");
|
||||
add(L"f15", L"?f12 +?f11 -0");
|
||||
add(L"f16", L"?f12 +?f10 -0");
|
||||
add(L"f17", L"?f0 *?f6 /100000");
|
||||
add(L"f18", L"logwidth+0-?f17 ");
|
||||
add(L"f19", L"logwidth*?f9 /100000");
|
||||
add(L"f20", L"?f19 *1/2");
|
||||
add(L"f21", L"logwidth");
|
||||
add(L"f22", L"logheight");
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h1, h2;
|
||||
|
||||
h2.position = L"?f18 ?f14";
|
||||
h2.y_maximum= L"?f3";
|
||||
h2.y_minimum= L"0";
|
||||
handles.push_back(h2);
|
||||
|
||||
h2.position = L"?f21 ?f13";
|
||||
h2.y_maximum= L"?f1";
|
||||
h2.y_minimum= L"0";
|
||||
handles.push_back(h2);
|
||||
|
||||
h1.position = L"?f18 0";
|
||||
h1.x_maximum= L"?f5";
|
||||
h1.x_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
|
||||
h1.position = L"?f19 ?f22";
|
||||
h1.x_maximum= L"?f8";
|
||||
h1.x_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
}
|
||||
};
|
||||
|
||||
class oox_shape_UpArrowCallout : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_UpArrowCallout()
|
||||
{
|
||||
odf_type_name =L"ooxml-upArrowCallout";
|
||||
|
||||
enhanced_path = L"M 0 ?f19 L ?f14 ?f19 ?f14 ?f17 ?f13 ?f17 ?f12 0 ?f16 ?f17 ?f15 ?f17 ?f15 ?f19 ?f21 ?f19 ?f21 ?f22 0 ?f22 Z N";
|
||||
text_areas = L"0 ?f19 ?f21 ?f22";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"25000 25000 25000 64977";
|
||||
|
||||
add(L"f0", L"min(logwidth,logheight)");
|
||||
add(L"f1", L"50000*logwidth/?f0 ");
|
||||
add(L"f2", L"if(0-$1 ,0,if(?f1 -$1 ,$1 ,?f1 ))");
|
||||
add(L"f3", L"?f2 *2/1");
|
||||
add(L"f4", L"if(0-$0 ,0,if(?f3 -$0 ,$0 ,?f3 ))");
|
||||
add(L"f5", L"100000*logheight/?f0 ");
|
||||
add(L"f6", L"if(0-$2 ,0,if(?f5 -$2 ,$2 ,?f5 ))");
|
||||
add(L"f7", L"?f6 *?f0 /logheight");
|
||||
add(L"f8", L"100000+0-?f7 ");
|
||||
add(L"f9", L"if(0-$3 ,0,if(?f8 -$3 ,$3 ,?f8 ))");
|
||||
add(L"f10", L"?f0 *?f2 /100000");
|
||||
add(L"f11", L"?f0 *?f4 /200000");
|
||||
add(L"f12", L"logwidth/2");
|
||||
add(L"f13", L"?f12 +0-?f10 ");
|
||||
add(L"f14", L"?f12 +0-?f11 ");
|
||||
add(L"f15", L"?f12 +?f11 -0");
|
||||
add(L"f16", L"?f12 +?f10 -0");
|
||||
add(L"f17", L"?f0 *?f6 /100000");
|
||||
add(L"f18", L"logheight*?f9 /100000");
|
||||
add(L"f19", L"logheight+0-?f18 ");
|
||||
add(L"f20", L"(?f19 +logheight)/2");
|
||||
add(L"f21", L"logwidth");
|
||||
add(L"f22", L"logheight");
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h1, h2;
|
||||
|
||||
h1.position = L"?f14 ?f17";
|
||||
h1.x_maximum= L"?f3";
|
||||
h1.x_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
|
||||
h1.position = L"?f13 0";
|
||||
h1.x_maximum= L"?f1";
|
||||
h1.x_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
|
||||
h2.position = L"?f21 ?f17";
|
||||
h2.y_maximum= L"?f5";
|
||||
h2.y_minimum= L"0";
|
||||
handles.push_back(h2);
|
||||
|
||||
h2.position = L"0 ?f19";
|
||||
h2.y_maximum= L"?f8";
|
||||
h2.y_minimum= L"0";
|
||||
handles.push_back(h2);
|
||||
}
|
||||
};
|
||||
|
||||
class oox_shape_DownArrowCallout : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_DownArrowCallout()
|
||||
{
|
||||
odf_type_name =L"ooxml-downArrowCallout";
|
||||
|
||||
enhanced_path = L"M 0 0 L ?f22 0 ?f22 ?f19 ?f15 ?f19 ?f15 ?f18 ?f16 ?f18 ?f12 ?f21 ?f13 ?f18 ?f14 ?f18 ?f14 ?f19 0 ?f19 Z N";
|
||||
text_areas = L"0 0 ?f22 ?f19";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"25000 25000 25000 64977";
|
||||
|
||||
add(L"f0", L"min(logwidth,logheight)");
|
||||
add(L"f1", L"50000*logwidth/?f0 ");
|
||||
add(L"f2", L"if(0-$1 ,0,if(?f1 -$1 ,$1 ,?f1 ))");
|
||||
add(L"f3", L"?f2 *2/1");
|
||||
add(L"f4", L"if(0-$0 ,0,if(?f3 -$0 ,$0 ,?f3 ))");
|
||||
add(L"f5", L"100000*logheight/?f0 ");
|
||||
add(L"f6", L"if(0-$2 ,0,if(?f5 -$2 ,$2 ,?f5 ))");
|
||||
add(L"f7", L"?f6 *?f0 /logheight");
|
||||
add(L"f8", L"100000+0-?f7 ");
|
||||
add(L"f9", L"if(0-$3 ,0,if(?f8 -$3 ,$3 ,?f8 ))");
|
||||
add(L"f10", L"?f0 *?f2 /100000");
|
||||
add(L"f11", L"?f0 *?f4 /200000");
|
||||
add(L"f12", L"logwidth/2");
|
||||
add(L"f13", L"?f12 +0-?f10 ");
|
||||
add(L"f14", L"?f12 +0-?f11 ");
|
||||
add(L"f15", L"?f12 +?f11 -0");
|
||||
add(L"f16", L"?f12 +?f10 -0");
|
||||
add(L"f17", L"?f0 *?f6 /100000");
|
||||
add(L"f18", L"logheight+0-?f17 ");
|
||||
add(L"f19", L"logheight*?f9 /100000");
|
||||
add(L"f20", L"?f19 *1/2");
|
||||
add(L"f21", L"logheight");
|
||||
add(L"f22", L"logwidth");
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h1, h2;
|
||||
|
||||
h1.position = L"?f14 ?f18";
|
||||
h1.x_maximum= L"?f3";
|
||||
h1.x_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
|
||||
h1.position = L"?f13 ?f21";
|
||||
h1.x_maximum= L"?f1";
|
||||
h1.x_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
|
||||
h2.position = L"?f22 ?f18";
|
||||
h2.y_maximum= L"?f5";
|
||||
h2.y_minimum= L"0";
|
||||
handles.push_back(h2);
|
||||
|
||||
h2.position = L"0 ?f19";
|
||||
h2.y_maximum= L"?f8";
|
||||
h2.y_minimum= L"0";
|
||||
handles.push_back(h2);
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
@ -29,6 +29,32 @@
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
#include "../oox_shape_defines.h"
|
||||
|
||||
// shapetypeChartPlus,
|
||||
// shapetypeChartStar,
|
||||
// shapetypeChartX,
|
||||
// shapetypeChartX
|
||||
//+ shapetypeFlowChartExtract
|
||||
namespace cpdoccore
|
||||
{
|
||||
class oox_shape_FlowChartExtract : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_FlowChartExtract()
|
||||
{
|
||||
odf_type_name =L"ooxml-flowChartExtract";
|
||||
|
||||
enhanced_path = L"M 0 2 L 1 0 2 2 Z N";
|
||||
text_areas = L"?f2 ?f3 ?f0 ?f4";
|
||||
view_box = L"0 0 0 0";
|
||||
|
||||
add(L"f0", L"logwidth*3/4");
|
||||
add(L"f1", L"logwidth/2");
|
||||
add(L"f2", L"logwidth/4");
|
||||
add(L"f3", L"logheight/2");
|
||||
add(L"f4", L"logheight");
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
@ -29,3 +29,9 @@
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
#include "../oox_shape_defines.h"
|
||||
|
||||
namespace cpdoccore
|
||||
{
|
||||
|
||||
}
|
||||
@ -35,202 +35,386 @@
|
||||
// shapetypeCurvedConnector5,
|
||||
//+ shapetypeCurvedDownArrow,
|
||||
//+ shapetypeCurvedLeftArrow,
|
||||
// shapetypeCurvedRightArrow,
|
||||
// shapetypeCurvedUpArrow,
|
||||
//+ shapetypeCurvedRightArrow,
|
||||
//+ shapetypeCurvedUpArrow,
|
||||
|
||||
#include "../oox_shape_defines.h"
|
||||
|
||||
namespace cpdoccore
|
||||
{
|
||||
class oox_shape_curvedLeftArrow : public oox_shape
|
||||
class oox_shape_CurvedLeftArrow : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_curvedLeftArrow()
|
||||
oox_shape_CurvedLeftArrow()
|
||||
{
|
||||
odf_type_name =L"ooxml-curvedLeftArrow";
|
||||
|
||||
//modifiers = L"23520";
|
||||
enhanced_path = L"M ?f2 ?f8 A ?f65 ?f66 ?f67 ?f68 ?f2 ?f8 ?f62 ?f64 W ?f69 ?f70 ?f71 ?f72 ?f2 ?f8 ?f62 ?f64 Z N";
|
||||
text_areas = L"?f22 ?f24 ?f23 ?f25";
|
||||
glue_points = L"?f22 ?f24 ?f22 ?f25 ?f23 ?f25 ?f23 ?f24";
|
||||
view_box = L"0 0 21600 21600";
|
||||
enhanced_path = L"M 0 ?f31 L ?f32 ?f28 ?f32 ?f24 G ?f44 ?f8 ?f45 ?f46 ?f44 ?f8 ?f47 ?f48 L ?f32 ?f29 Z S N M ?f42 ?f18 G ?f44 ?f8 ?f49 ?f50 L 0 0 G ?f44 ?f8 ?f51 ?f52 Z I S N M ?f42 ?f18 G ?f44 ?f8 ?f53 ?f54 L 0 0 G ?f44 ?f8 ?f55 ?f56 L ?f42 ?f18 G ?f44 ?f8 ?f57 ?f58 L ?f32 ?f29 0 ?f31 ?f32 ?f28 ?f32 ?f24 G ?f44 ?f8 ?f59 ?f60 F N";
|
||||
text_areas = L"0 0 ?f42 ?f43";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"25000 50000 25000";
|
||||
|
||||
add(L"f0", L"10800000");
|
||||
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"?f6 / 2");
|
||||
add(L"f8", L"?f4 + ?f7");
|
||||
add(L"f9", L"?f3 - ?f2");
|
||||
add(L"f10", L"?f9 / 2");
|
||||
add(L"f11", L"?f2 + ?f10");
|
||||
add(L"f12", L"5419351 / 1725033");
|
||||
add(L"f13", L"2700000 + ?f1");
|
||||
add(L"f14", L"?f13 * ?f12 / ?f0");
|
||||
add(L"f15", L"0 - ?f14");
|
||||
add(L"f16", L"sin(?f15)");
|
||||
add(L"f17", L"0 - ?f16");
|
||||
add(L"f18", L"?f17 * ?f10");
|
||||
add(L"f19", L"cos(?f15)");
|
||||
add(L"f20", L"0 - ?f19");
|
||||
add(L"f21", L"?f20 * ?f7");
|
||||
add(L"f22", L"?f11 - ?f18");
|
||||
add(L"f23", L"?f11 + ?f18");
|
||||
add(L"f24", L"?f8 - ?f21");
|
||||
add(L"f25", L"?f8 + ?f21");
|
||||
add(L"f26", L"21550000 - 21600000");
|
||||
add(L"f27", L"if(?f26, 21600000, 21550000)");
|
||||
add(L"f28", L"-21550000 - ?f27");
|
||||
add(L"f29", L"if(?f28, -21550000, ?f27)");
|
||||
add(L"f30", L"?f0 + ?f29");
|
||||
add(L"f31", L"?f0 + ?f1");
|
||||
add(L"f32", L"?f31 * ?f12 / ?f0");
|
||||
add(L"f33", L"0 - ?f32");
|
||||
add(L"f34", L"cos(?f33)");
|
||||
add(L"f35", L"0 - ?f34");
|
||||
add(L"f36", L"?f35 * ?f10");
|
||||
add(L"f37", L"sin(?f33)");
|
||||
add(L"f38", L"0 - ?f37");
|
||||
add(L"f39", L"?f38 * ?f7");
|
||||
add(L"f40", L"sqrt(?f36 * ?f36 + ?f39 * ?f39 + 0 * 0)");
|
||||
add(L"f41", L"?f10 * ?f7 / ?f40");
|
||||
add(L"f42", L"?f38 * ?f41");
|
||||
add(L"f43", L"?f2 - ?f42");
|
||||
add(L"f44", L"?f35 * ?f41");
|
||||
add(L"f45", L"?f8 - ?f44");
|
||||
add(L"f46", L"?f43 - ?f10");
|
||||
add(L"f47", L"?f45 - ?f7");
|
||||
add(L"f48", L"?f43 + ?f10");
|
||||
add(L"f49", L"?f45 + ?f7");
|
||||
add(L"f50", L"?f30 + ?f1");
|
||||
add(L"f51", L"?f50 * ?f12 / ?f0");
|
||||
add(L"f52", L"0 - ?f51");
|
||||
add(L"f53", L"cos(?f52)");
|
||||
add(L"f54", L"0 - ?f53");
|
||||
add(L"f55", L"?f54 * ?f10");
|
||||
add(L"f56", L"sin(?f52)");
|
||||
add(L"f57", L"0 - ?f56");
|
||||
add(L"f58", L"?f57 * ?f7");
|
||||
add(L"f59", L"sqrt(?f55 * ?f55 + ?f58 * ?f58 + 0 * 0)");
|
||||
add(L"f60", L"?f10 * ?f7 / ?f59");
|
||||
add(L"f61", L"?f57 * ?f60");
|
||||
add(L"f62", L"?f43 + ?f61");
|
||||
add(L"f63", L"?f54 * ?f60");
|
||||
add(L"f64", L"?f45 + ?f63");
|
||||
add(L"f65", L"if(?f29, ?f2, ?f46)");
|
||||
add(L"f66", L"if(?f29, ?f8, ?f47)");
|
||||
add(L"f67", L"if(?f29, ?f2, ?f48)");
|
||||
add(L"f68", L"if(?f29, ?f8, ?f49)");
|
||||
add(L"f69", L"if(?f29, ?f46, ?f62)");
|
||||
add(L"f70", L"if(?f29, ?f47, ?f64)");
|
||||
add(L"f71", L"if(?f29, ?f48, ?f62)");
|
||||
add(L"f72", L"if(?f29, ?f49, ?f64)");
|
||||
add(L"f0", L"min(logwidth,logheight)");
|
||||
add(L"f1", L"50000*logheight/?f0 ");
|
||||
add(L"f2", L"if(0-$1 ,0,if(?f1 -$1 ,$1 ,?f1 ))");
|
||||
add(L"f3", L"if(0-$0 ,0,if(?f2 -$0 ,$0 ,?f2 ))");
|
||||
add(L"f4", L"?f0 *?f3 /100000");
|
||||
add(L"f5", L"?f0 *?f2 /100000");
|
||||
add(L"f6", L"(?f4 +?f5 )/4");
|
||||
add(L"f7", L"logheight/2");
|
||||
add(L"f8", L"?f7 +0-?f6 ");
|
||||
add(L"f9", L"?f8 *2/1");
|
||||
add(L"f10", L"?f9 *?f9 /1");
|
||||
add(L"f11", L"?f4 *?f4 /1");
|
||||
add(L"f12", L"?f10 +0-?f11 ");
|
||||
add(L"f13", L"sqrt(?f12 )");
|
||||
add(L"f14", L"?f13 *logwidth/?f9 ");
|
||||
add(L"f15", L"100000*?f14 /?f0 ");
|
||||
add(L"f16", L"if(0-$2 ,0,if(?f15 -$2 ,$2 ,?f15 ))");
|
||||
add(L"f17", L"?f0 *?f16 /100000");
|
||||
add(L"f18", L"?f8 +?f4 -0");
|
||||
add(L"f19", L"logwidth*logwidth/1");
|
||||
add(L"f20", L"?f17 *?f17 /1");
|
||||
add(L"f21", L"?f19 +0-?f20 ");
|
||||
add(L"f22", L"sqrt(?f21 )");
|
||||
add(L"f23", L"?f22 *?f8 /logwidth");
|
||||
add(L"f24", L"?f8 +?f23 -0");
|
||||
add(L"f25", L"?f18 +?f23 -0");
|
||||
add(L"f26", L"?f5 +0-?f4 ");
|
||||
add(L"f27", L"?f26 *1/2");
|
||||
add(L"f28", L"?f24 +0-?f27 ");
|
||||
add(L"f29", L"?f25 +?f27 -0");
|
||||
add(L"f30", L"?f5 *1/2");
|
||||
add(L"f31", L"logheight+0-?f30 ");
|
||||
add(L"f32", L"0+?f17 -0");
|
||||
add(L"f33", L"(10800000*atan2(?f23 ,?f17 ))/pi");
|
||||
add(L"f34", L"0+0-?f33 ");
|
||||
add(L"f35", L"0+?f14 -0");
|
||||
add(L"f36", L"(?f8 +?f18 )/2");
|
||||
add(L"f37", L"?f4 *1/2");
|
||||
add(L"f38", L"(10800000*atan2(?f37 ,?f14 ))/pi");
|
||||
add(L"f39", L"?f38 +0-?f33 ");
|
||||
add(L"f40", L"?f33 +?f38 -0");
|
||||
add(L"f41", L"0+0-?f38 ");
|
||||
add(L"f42", L"logwidth");
|
||||
add(L"f43", L"logheight");
|
||||
add(L"f44", L"logwidth");
|
||||
add(L"f45", L"(?f33 )/60000.0");
|
||||
add(L"f46", L"(?f39 )/60000.0");
|
||||
add(L"f47", L"(?f41 )/60000.0");
|
||||
add(L"f48", L"(?f40 )/60000.0");
|
||||
add(L"f49", L"(0)/60000.0");
|
||||
add(L"f50", L"(-5400000)/60000.0");
|
||||
add(L"f51", L"(16200000)/60000.0");
|
||||
add(L"f52", L"(5400000)/60000.0");
|
||||
add(L"f53", L"(0)/60000.0");
|
||||
add(L"f54", L"(-5400000)/60000.0");
|
||||
add(L"f55", L"(16200000)/60000.0");
|
||||
add(L"f56", L"(5400000)/60000.0");
|
||||
add(L"f57", L"(0)/60000.0");
|
||||
add(L"f58", L"(?f33 )/60000.0");
|
||||
add(L"f59", L"(?f33 )/60000.0");
|
||||
add(L"f60", L"(?f39 )/60000.0");
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h;
|
||||
h.position = L"0 ?f2";
|
||||
h.y_maximum= L"51965";
|
||||
h.y_minimum= L"0";
|
||||
_handle h1, h2;
|
||||
|
||||
h1.position = L"?f32 ?f24";
|
||||
h1.y_maximum= L"?f2";
|
||||
h1.y_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
|
||||
handles.push_back(h);
|
||||
h1.position = L"?f42 ?f28";
|
||||
h1.y_maximum= L"?f1";
|
||||
h1.y_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
|
||||
h2.position = L"?f32 ?f43";
|
||||
h2.x_maximum= L"?f15";
|
||||
h2.x_minimum= L"0";
|
||||
handles.push_back(h2);
|
||||
}
|
||||
};
|
||||
class oox_shape_curvedDownArrow : public oox_shape
|
||||
class oox_shape_CurvedRightArrow : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_curvedDownArrow()
|
||||
oox_shape_CurvedRightArrow()
|
||||
{
|
||||
odf_type_name =L"ooxml-curvedRightArrow";
|
||||
|
||||
enhanced_path = L"M 0 ?f8 G ?f45 ?f8 ?f46 ?f47 L ?f32 ?f28 ?f43 ?f31 ?f32 ?f29 ?f32 ?f25 G ?f45 ?f8 ?f48 ?f49 Z S N M ?f43 ?f4 G ?f45 ?f8 ?f50 ?f51 ?f45 ?f8 ?f52 ?f53 Z I S N M 0 ?f8 G ?f45 ?f8 ?f54 ?f55 L ?f32 ?f28 ?f43 ?f31 ?f32 ?f29 ?f32 ?f25 G ?f45 ?f8 ?f56 ?f57 L 0 ?f8 G ?f45 ?f8 ?f58 ?f59 L ?f43 ?f4 G ?f45 ?f8 ?f60 ?f61 F N";
|
||||
text_areas = L"0 0 ?f43 ?f44";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"25000 50000 25000";
|
||||
|
||||
add(L"f0", L"min(logwidth,logheight)");
|
||||
add(L"f1", L"50000*logheight/?f0 ");
|
||||
add(L"f2", L"if(0-$1 ,0,if(?f1 -$1 ,$1 ,?f1 ))");
|
||||
add(L"f3", L"if(0-$0 ,0,if(?f2 -$0 ,$0 ,?f2 ))");
|
||||
add(L"f4", L"?f0 *?f3 /100000");
|
||||
add(L"f5", L"?f0 *?f2 /100000");
|
||||
add(L"f6", L"(?f4 +?f5 )/4");
|
||||
add(L"f7", L"logheight/2");
|
||||
add(L"f8", L"?f7 +0-?f6 ");
|
||||
add(L"f9", L"?f8 *2/1");
|
||||
add(L"f10", L"?f9 *?f9 /1");
|
||||
add(L"f11", L"?f4 *?f4 /1");
|
||||
add(L"f12", L"?f10 +0-?f11 ");
|
||||
add(L"f13", L"sqrt(?f12 )");
|
||||
add(L"f14", L"?f13 *logwidth/?f9 ");
|
||||
add(L"f15", L"100000*?f14 /?f0 ");
|
||||
add(L"f16", L"if(0-$2 ,0,if(?f15 -$2 ,$2 ,?f15 ))");
|
||||
add(L"f17", L"?f0 *?f16 /100000");
|
||||
add(L"f18", L"?f8 +?f4 -0");
|
||||
add(L"f19", L"logwidth*logwidth/1");
|
||||
add(L"f20", L"?f17 *?f17 /1");
|
||||
add(L"f21", L"?f19 +0-?f20 ");
|
||||
add(L"f22", L"sqrt(?f21 )");
|
||||
add(L"f23", L"?f22 *?f8 /logwidth");
|
||||
add(L"f24", L"?f8 +?f23 -0");
|
||||
add(L"f25", L"?f18 +?f23 -0");
|
||||
add(L"f26", L"?f5 +0-?f4 ");
|
||||
add(L"f27", L"?f26 *1/2");
|
||||
add(L"f28", L"?f24 +0-?f27 ");
|
||||
add(L"f29", L"?f25 +?f27 -0");
|
||||
add(L"f30", L"?f5 *1/2");
|
||||
add(L"f31", L"logheight+0-?f30 ");
|
||||
add(L"f32", L"logwidth+0-?f17 ");
|
||||
add(L"f33", L"(10800000*atan2(?f23 ,?f17 ))/pi");
|
||||
add(L"f34", L"10800000+0-?f33 ");
|
||||
add(L"f35", L"0+0-?f33 ");
|
||||
add(L"f36", L"logwidth+0-?f14 ");
|
||||
add(L"f37", L"(?f8 +?f18 )/2");
|
||||
add(L"f38", L"?f4 *1/2");
|
||||
add(L"f39", L"(10800000*atan2(?f38 ,?f14 ))/pi");
|
||||
add(L"f40", L"?f39 +0-5400000");
|
||||
add(L"f41", L"5400000+?f39 -0");
|
||||
add(L"f42", L"10800000+0-?f39 ");
|
||||
add(L"f43", L"logwidth");
|
||||
add(L"f44", L"logheight");
|
||||
add(L"f45", L"logwidth");
|
||||
add(L"f46", L"(10800000)/60000.0");
|
||||
add(L"f47", L"(?f35 )/60000.0");
|
||||
add(L"f48", L"(?f34 )/60000.0");
|
||||
add(L"f49", L"(?f33 )/60000.0");
|
||||
add(L"f50", L"(16200000)/60000.0");
|
||||
add(L"f51", L"(?f40 )/60000.0");
|
||||
add(L"f52", L"(?f42 )/60000.0");
|
||||
add(L"f53", L"(?f41 )/60000.0");
|
||||
add(L"f54", L"(10800000)/60000.0");
|
||||
add(L"f55", L"(?f35 )/60000.0");
|
||||
add(L"f56", L"(?f34 )/60000.0");
|
||||
add(L"f57", L"(?f33 )/60000.0");
|
||||
add(L"f58", L"(10800000)/60000.0");
|
||||
add(L"f59", L"(5400000)/60000.0");
|
||||
add(L"f60", L"(16200000)/60000.0");
|
||||
add(L"f61", L"(?f40 )/60000.0");
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h1, h2;
|
||||
|
||||
h1.position = L"?f32 ?f24";
|
||||
h1.y_maximum= L"?f2";
|
||||
h1.y_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
|
||||
h1.position = L"?f43 ?f28";
|
||||
h1.y_maximum= L"?f1";
|
||||
h1.y_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
|
||||
h2.position = L"?f32 ?f43";
|
||||
h2.x_maximum= L"?f15";
|
||||
h2.x_minimum= L"0";
|
||||
handles.push_back(h2);
|
||||
}
|
||||
};
|
||||
class oox_shape_CurvedDownArrow : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_CurvedDownArrow()
|
||||
{
|
||||
odf_type_name =L"ooxml-curvedDownArrow";
|
||||
|
||||
//modifiers = L"23520";
|
||||
enhanced_path = L"M ?f2 ?f8 A ?f65 ?f66 ?f67 ?f68 ?f2 ?f8 ?f62 ?f64 W ?f69 ?f70 ?f71 ?f72 ?f2 ?f8 ?f62 ?f64 Z N";
|
||||
text_areas = L"?f22 ?f24 ?f23 ?f25";
|
||||
glue_points = L"?f22 ?f24 ?f22 ?f25 ?f23 ?f25 ?f23 ?f24";
|
||||
view_box = L"0 0 21600 21600";
|
||||
enhanced_path = L"M ?f31 ?f43 L ?f28 ?f32 ?f24 ?f32 G ?f8 ?f45 ?f46 ?f47 L ?f18 0 G ?f8 ?f45 ?f48 ?f49 L ?f29 ?f32 Z S N M ?f36 ?f35 G ?f8 ?f45 ?f50 ?f51 L 0 ?f43 G ?f8 ?f45 ?f52 ?f53 Z I S N M ?f36 ?f35 G ?f8 ?f45 ?f54 ?f55 L 0 ?f43 G ?f8 ?f45 ?f56 ?f57 L ?f18 0 G ?f8 ?f45 ?f58 ?f59 L ?f29 ?f32 ?f31 ?f43 ?f28 ?f32 ?f24 ?f32 G ?f8 ?f45 ?f60 ?f61 F N";
|
||||
text_areas = L"0 0 ?f44 ?f43";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"25000 50000 25000";
|
||||
|
||||
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"?f6 / 2");
|
||||
add(L"f8", L"?f4 + ?f7");
|
||||
add(L"f9", L"?f3 - ?f2");
|
||||
add(L"f10", L"?f9 / 2");
|
||||
add(L"f11", L"?f2 + ?f10");
|
||||
add(L"f12", L"5419351 / 1725033");
|
||||
add(L"f13", L"2700000 + ?f1");
|
||||
add(L"f14", L"?f13 * ?f12 / ?f0");
|
||||
add(L"f15", L"0 - ?f14");
|
||||
add(L"f16", L"sin(?f15)");
|
||||
add(L"f17", L"0 - ?f16");
|
||||
add(L"f18", L"?f17 * ?f10");
|
||||
add(L"f19", L"cos(?f15)");
|
||||
add(L"f20", L"0 - ?f19");
|
||||
add(L"f21", L"?f20 * ?f7");
|
||||
add(L"f22", L"?f11 - ?f18");
|
||||
add(L"f23", L"?f11 + ?f18");
|
||||
add(L"f24", L"?f8 - ?f21");
|
||||
add(L"f25", L"?f8 + ?f21");
|
||||
add(L"f26", L"21550000 - 21600000");
|
||||
add(L"f27", L"if(?f26, 21600000, 21550000)");
|
||||
add(L"f28", L"-21550000 - ?f27");
|
||||
add(L"f29", L"if(?f28, -21550000, ?f27)");
|
||||
add(L"f30", L"?f0 + ?f29");
|
||||
add(L"f31", L"?f0 + ?f1");
|
||||
add(L"f32", L"?f31 * ?f12 / ?f0");
|
||||
add(L"f33", L"0 - ?f32");
|
||||
add(L"f34", L"cos(?f33)");
|
||||
add(L"f35", L"0 - ?f34");
|
||||
add(L"f36", L"?f35 * ?f10");
|
||||
add(L"f37", L"sin(?f33)");
|
||||
add(L"f38", L"0 - ?f37");
|
||||
add(L"f39", L"?f38 * ?f7");
|
||||
add(L"f40", L"sqrt(?f36 * ?f36 + ?f39 * ?f39 + 0 * 0)");
|
||||
add(L"f41", L"?f10 * ?f7 / ?f40");
|
||||
add(L"f42", L"?f38 * ?f41");
|
||||
add(L"f43", L"?f2 - ?f42");
|
||||
add(L"f44", L"?f35 * ?f41");
|
||||
add(L"f45", L"?f8 - ?f44");
|
||||
add(L"f46", L"?f43 - ?f10");
|
||||
add(L"f47", L"?f45 - ?f7");
|
||||
add(L"f48", L"?f43 + ?f10");
|
||||
add(L"f49", L"?f45 + ?f7");
|
||||
add(L"f50", L"?f30 + ?f1");
|
||||
add(L"f51", L"?f50 * ?f12 / ?f0");
|
||||
add(L"f52", L"0 - ?f51");
|
||||
add(L"f53", L"cos(?f52)");
|
||||
add(L"f54", L"0 - ?f53");
|
||||
add(L"f55", L"?f54 * ?f10");
|
||||
add(L"f56", L"sin(?f52)");
|
||||
add(L"f57", L"0 - ?f56");
|
||||
add(L"f58", L"?f57 * ?f7");
|
||||
add(L"f59", L"sqrt(?f55 * ?f55 + ?f58 * ?f58 + 0 * 0)");
|
||||
add(L"f60", L"?f10 * ?f7 / ?f59");
|
||||
add(L"f61", L"?f57 * ?f60");
|
||||
add(L"f62", L"?f43 + ?f61");
|
||||
add(L"f63", L"?f54 * ?f60");
|
||||
add(L"f64", L"?f45 + ?f63");
|
||||
add(L"f65", L"if(?f29, ?f2, ?f46)");
|
||||
add(L"f66", L"if(?f29, ?f8, ?f47)");
|
||||
add(L"f67", L"if(?f29, ?f2, ?f48)");
|
||||
add(L"f68", L"if(?f29, ?f8, ?f49)");
|
||||
add(L"f69", L"if(?f29, ?f46, ?f62)");
|
||||
add(L"f70", L"if(?f29, ?f47, ?f64)");
|
||||
add(L"f71", L"if(?f29, ?f48, ?f62)");
|
||||
add(L"f72", L"if(?f29, ?f49, ?f64)");
|
||||
add(L"f0", L"min(logwidth,logheight)");
|
||||
add(L"f1", L"50000*logwidth/?f0 ");
|
||||
add(L"f2", L"if(0-$1 ,0,if(?f1 -$1 ,$1 ,?f1 ))");
|
||||
add(L"f3", L"if(0-$0 ,0,if(100000-$0 ,$0 ,100000))");
|
||||
add(L"f4", L"?f0 *?f3 /100000");
|
||||
add(L"f5", L"?f0 *?f2 /100000");
|
||||
add(L"f6", L"(?f4 +?f5 )/4");
|
||||
add(L"f7", L"logwidth/2");
|
||||
add(L"f8", L"?f7 +0-?f6 ");
|
||||
add(L"f9", L"?f8 *2/1");
|
||||
add(L"f10", L"?f9 *?f9 /1");
|
||||
add(L"f11", L"?f4 *?f4 /1");
|
||||
add(L"f12", L"?f10 +0-?f11 ");
|
||||
add(L"f13", L"sqrt(?f12 )");
|
||||
add(L"f14", L"?f13 *logheight/?f9 ");
|
||||
add(L"f15", L"100000*?f14 /?f0 ");
|
||||
add(L"f16", L"if(0-$2 ,0,if(?f15 -$2 ,$2 ,?f15 ))");
|
||||
add(L"f17", L"?f0 *$2 /100000");
|
||||
add(L"f18", L"?f8 +?f4 -0");
|
||||
add(L"f19", L"logheight*logheight/1");
|
||||
add(L"f20", L"?f17 *?f17 /1");
|
||||
add(L"f21", L"?f19 +0-?f20 ");
|
||||
add(L"f22", L"sqrt(?f21 )");
|
||||
add(L"f23", L"?f22 *?f8 /logheight");
|
||||
add(L"f24", L"?f8 +?f23 -0");
|
||||
add(L"f25", L"?f18 +?f23 -0");
|
||||
add(L"f26", L"?f5 +0-?f4 ");
|
||||
add(L"f27", L"?f26 *1/2");
|
||||
add(L"f28", L"?f24 +0-?f27 ");
|
||||
add(L"f29", L"?f25 +?f27 -0");
|
||||
add(L"f30", L"?f5 *1/2");
|
||||
add(L"f31", L"logwidth+0-?f30 ");
|
||||
add(L"f32", L"logheight+0-?f17 ");
|
||||
add(L"f33", L"(10800000*atan2(?f23 ,?f17 ))/pi");
|
||||
add(L"f34", L"0+0-?f33 ");
|
||||
add(L"f35", L"logheight+0-?f14 ");
|
||||
add(L"f36", L"(?f8 +?f18 )/2");
|
||||
add(L"f37", L"?f4 *1/2");
|
||||
add(L"f38", L"(10800000*atan2(?f37 ,?f14 ))/pi");
|
||||
add(L"f39", L"16200000+?f33 -0");
|
||||
add(L"f40", L"16200000+0-?f38 ");
|
||||
add(L"f41", L"?f38 +0-5400000");
|
||||
add(L"f42", L"5400000+?f38 -0");
|
||||
add(L"f43", L"logheight");
|
||||
add(L"f44", L"logwidth");
|
||||
add(L"f45", L"logheight");
|
||||
add(L"f46", L"(?f39 )/60000.0");
|
||||
add(L"f47", L"(?f34 )/60000.0");
|
||||
add(L"f48", L"(16200000)/60000.0");
|
||||
add(L"f49", L"(?f33 )/60000.0");
|
||||
add(L"f50", L"(?f40 )/60000.0");
|
||||
add(L"f51", L"(?f41 )/60000.0");
|
||||
add(L"f52", L"(10800000)/60000.0");
|
||||
add(L"f53", L"(?f42 )/60000.0");
|
||||
add(L"f54", L"(?f40 )/60000.0");
|
||||
add(L"f55", L"(?f41 )/60000.0");
|
||||
add(L"f56", L"(10800000)/60000.0");
|
||||
add(L"f57", L"(5400000)/60000.0");
|
||||
add(L"f58", L"(16200000)/60000.0");
|
||||
add(L"f59", L"(?f33 )/60000.0");
|
||||
add(L"f60", L"(?f39 )/60000.0");
|
||||
add(L"f61", L"(?f34 )/60000.0");
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h;
|
||||
h.position = L"0 ?f2";
|
||||
h.y_maximum= L"51965";
|
||||
h.y_minimum= L"0";
|
||||
_handle h1, h2;
|
||||
|
||||
h1.position = L"?f25 ?f32";
|
||||
h1.x_maximum= L"$1";
|
||||
h1.x_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
|
||||
h1.position = L"?f28 ?f43";
|
||||
h1.x_maximum= L"?f1";
|
||||
h1.x_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
|
||||
h2.position = L"?f44 ?f32";
|
||||
h2.y_maximum= L"?f15";
|
||||
h2.y_minimum= L"0";
|
||||
handles.push_back(h2);
|
||||
|
||||
handles.push_back(h);
|
||||
}
|
||||
};
|
||||
class oox_shape_CurvedUpArrow : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_CurvedUpArrow()
|
||||
{
|
||||
odf_type_name =L"ooxml-curvedUpArrow";
|
||||
|
||||
enhanced_path = L"M ?f31 0 L ?f29 ?f32 ?f25 ?f32 G ?f8 ?f46 ?f47 ?f48 ?f8 ?f46 ?f49 ?f50 L ?f28 ?f32 Z S N M ?f8 ?f45 G ?f8 ?f46 ?f51 ?f52 L ?f4 0 G ?f8 ?f46 ?f53 ?f54 Z I S N M ?f36 ?f35 G ?f8 ?f46 ?f55 ?f56 L ?f28 ?f32 ?f31 0 ?f29 ?f32 ?f25 ?f32 G ?f8 ?f46 ?f57 ?f58 L ?f8 ?f45 G ?f8 ?f46 ?f59 ?f60 L ?f4 0 G ?f8 ?f46 ?f61 ?f62 F N";
|
||||
text_areas = L"0 0 ?f44 ?f45";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"25000 50000 25000";
|
||||
|
||||
add(L"f0", L"min(logwidth,logheight)");
|
||||
add(L"f1", L"50000*logwidth/?f0 ");
|
||||
add(L"f2", L"if(0-$1 ,0,if(?f1 -$1 ,$1 ,?f1 ))");
|
||||
add(L"f3", L"if(0-$0 ,0,if(100000-$0 ,$0 ,100000))");
|
||||
add(L"f4", L"?f0 *?f3 /100000");
|
||||
add(L"f5", L"?f0 *?f2 /100000");
|
||||
add(L"f6", L"(?f4 +?f5 )/4");
|
||||
add(L"f7", L"logwidth/2");
|
||||
add(L"f8", L"?f7 +0-?f6 ");
|
||||
add(L"f9", L"?f8 *2/1");
|
||||
add(L"f10", L"?f9 *?f9 /1");
|
||||
add(L"f11", L"?f4 *?f4 /1");
|
||||
add(L"f12", L"?f10 +0-?f11 ");
|
||||
add(L"f13", L"sqrt(?f12 )");
|
||||
add(L"f14", L"?f13 *logheight/?f9 ");
|
||||
add(L"f15", L"100000*?f14 /?f0 ");
|
||||
add(L"f16", L"if(0-$2 ,0,if(?f15 -$2 ,$2 ,?f15 ))");
|
||||
add(L"f17", L"?f0 *$2 /100000");
|
||||
add(L"f18", L"?f8 +?f4 -0");
|
||||
add(L"f19", L"logheight*logheight/1");
|
||||
add(L"f20", L"?f17 *?f17 /1");
|
||||
add(L"f21", L"?f19 +0-?f20 ");
|
||||
add(L"f22", L"sqrt(?f21 )");
|
||||
add(L"f23", L"?f22 *?f8 /logheight");
|
||||
add(L"f24", L"?f8 +?f23 -0");
|
||||
add(L"f25", L"?f18 +?f23 -0");
|
||||
add(L"f26", L"?f5 +0-?f4 ");
|
||||
add(L"f27", L"?f26 *1/2");
|
||||
add(L"f28", L"?f24 +0-?f27 ");
|
||||
add(L"f29", L"?f25 +?f27 -0");
|
||||
add(L"f30", L"?f5 *1/2");
|
||||
add(L"f31", L"logwidth+0-?f30 ");
|
||||
add(L"f32", L"0+?f17 -0");
|
||||
add(L"f33", L"(10800000*atan2(?f23 ,?f17 ))/pi");
|
||||
add(L"f34", L"0+0-?f33 ");
|
||||
add(L"f35", L"0+?f14 -0");
|
||||
add(L"f36", L"(?f8 +?f18 )/2");
|
||||
add(L"f37", L"?f4 *1/2");
|
||||
add(L"f38", L"(10800000*atan2(?f37 ,?f14 ))/pi");
|
||||
add(L"f39", L"?f38 +0-?f33 ");
|
||||
add(L"f40", L"0+0-?f39 ");
|
||||
add(L"f41", L"5400000+0-?f33 ");
|
||||
add(L"f42", L"?f33 +?f38 -0");
|
||||
add(L"f43", L"5400000+0-?f38 ");
|
||||
add(L"f44", L"logwidth");
|
||||
add(L"f45", L"logheight");
|
||||
add(L"f46", L"logheight");
|
||||
add(L"f47", L"(?f41 )/60000.0");
|
||||
add(L"f48", L"(?f42 )/60000.0");
|
||||
add(L"f49", L"(?f43 )/60000.0");
|
||||
add(L"f50", L"(?f39 )/60000.0");
|
||||
add(L"f51", L"(5400000)/60000.0");
|
||||
add(L"f52", L"(5400000)/60000.0");
|
||||
add(L"f53", L"(10800000)/60000.0");
|
||||
add(L"f54", L"(-5400000)/60000.0");
|
||||
add(L"f55", L"(?f43 )/60000.0");
|
||||
add(L"f56", L"(?f39 )/60000.0");
|
||||
add(L"f57", L"(?f41 )/60000.0");
|
||||
add(L"f58", L"(?f33 )/60000.0");
|
||||
add(L"f59", L"(5400000)/60000.0");
|
||||
add(L"f60", L"(5400000)/60000.0");
|
||||
add(L"f61", L"(10800000)/60000.0");
|
||||
add(L"f62", L"(-5400000)/60000.0");
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h1, h2;
|
||||
|
||||
h1.position = L"?f25 ?f32";
|
||||
h1.x_maximum= L"?f2";
|
||||
h1.x_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
|
||||
h1.position = L"?f28 0";
|
||||
h1.x_maximum= L"?f1";
|
||||
h1.x_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
|
||||
h2.position = L"?f44 ?f32";
|
||||
h2.y_maximum= L"?f15";
|
||||
h2.y_minimum= L"0";
|
||||
handles.push_back(h2);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@ -30,11 +30,12 @@
|
||||
*
|
||||
*/
|
||||
#include "../oox_shape_defines.h"
|
||||
// shapetypeMathDivide,
|
||||
// shapetypeMathEqual,
|
||||
// shapetypeMathMinus,
|
||||
//+ // shapetypeMathMultiply,
|
||||
// shapetypeMathNotEqual,
|
||||
//+ shapetypeMathDivide,
|
||||
//+ shapetypeMathEqual,
|
||||
//+ shapetypeMathMinus,
|
||||
//+ shapetypeMathMultiply,
|
||||
//+ shapetypeMathPlus,
|
||||
//+ shapetypeMathNotEqual,
|
||||
namespace cpdoccore
|
||||
{
|
||||
class oox_shape_mathMultiply : public oox_shape
|
||||
@ -117,4 +118,259 @@ 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);
|
||||
}
|
||||
};
|
||||
class oox_shape_mathDivide : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_mathDivide()
|
||||
{
|
||||
odf_type_name =L"ooxml-mathDivide";
|
||||
|
||||
enhanced_path = L"M ?f20 ?f18 G ?f11 ?f11 ?f25 ?f26 Z M ?f20 ?f19 G ?f11 ?f11 ?f27 ?f28 Z M ?f21 ?f14 L ?f22 ?f14 ?f22 ?f15 ?f21 ?f15 Z N";
|
||||
text_areas = L"?f21 ?f14 ?f22 ?f15";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"23520 5880 11760";
|
||||
|
||||
add(L"f0", L"if(1000-$0 ,1000,if(36745-$0 ,$0 ,36745))");
|
||||
add(L"f1", L"0+0-?f0 ");
|
||||
add(L"f2", L"(73490+?f1 )/4");
|
||||
add(L"f3", L"36745*logwidth/logheight");
|
||||
add(L"f4", L"min(?f2 ,?f3 )");
|
||||
add(L"f5", L"if(1000-$2 ,1000,if(?f4 -$2 ,$2 ,?f4 ))");
|
||||
add(L"f6", L"-4*?f5 /1");
|
||||
add(L"f7", L"73490+?f6 -?f0 ");
|
||||
add(L"f8", L"if(0-$1 ,0,if(?f7 -$1 ,$1 ,?f7 ))");
|
||||
add(L"f9", L"logheight*?f0 /200000");
|
||||
add(L"f10", L"logheight*?f8 /100000");
|
||||
add(L"f11", L"logheight*?f5 /100000");
|
||||
add(L"f12", L"logwidth*73490/200000");
|
||||
add(L"f13", L"logheight/2");
|
||||
add(L"f14", L"?f13 +0-?f9 ");
|
||||
add(L"f15", L"?f13 +?f9 -0");
|
||||
add(L"f16", L"?f10 +?f11 -0");
|
||||
add(L"f17", L"?f14 +0-?f16 ");
|
||||
add(L"f18", L"?f17 +0-?f11 ");
|
||||
add(L"f19", L"logheight+0-?f18 ");
|
||||
add(L"f20", L"logwidth/2");
|
||||
add(L"f21", L"?f20 +0-?f12 ");
|
||||
add(L"f22", L"?f20 +?f12 -0");
|
||||
add(L"f23", L"?f20 +0-?f11 ");
|
||||
add(L"f24", L"logwidth");
|
||||
add(L"f25", L"(16200000)/60000.0");
|
||||
add(L"f26", L"(21600000)/60000.0");
|
||||
add(L"f27", L"(5400000)/60000.0");
|
||||
add(L"f28", L"(21600000)/60000.0");
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h, h1;
|
||||
h.position = L"0 ?f14";
|
||||
h.y_maximum= L"36745";
|
||||
h.y_minimum= L"1000";
|
||||
handles.push_back(h);
|
||||
|
||||
h.position = L"?f24 ?f17";
|
||||
h.y_maximum= L"?f7";
|
||||
h.y_minimum= L"0";
|
||||
handles.push_back(h);
|
||||
|
||||
h1.position = L"?f23 0";
|
||||
h1.x_maximum= L"?f4";
|
||||
h1.x_minimum= L"1000";
|
||||
handles.push_back(h1);
|
||||
}
|
||||
};
|
||||
class oox_shape_mathNotEqual : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_mathNotEqual()
|
||||
{
|
||||
odf_type_name =L"ooxml-mathNotEqual";
|
||||
|
||||
enhanced_path = L"M ?f9 ?f14 L ?f24 ?f14 ?f43 ?f47 ?f42 ?f46 ?f34 ?f14 ?f10 ?f14 ?f10 ?f12 ?f35 ?f12 ?f36 ?f13 ?f10 ?f13 ?f10 ?f15 ?f37 ?f15 ?f49 ?f51 ?f48 ?f50 ?f30 ?f15 ?f9 ?f15 ?f9 ?f13 ?f28 ?f13 ?f26 ?f12 ?f9 ?f12 Z N";
|
||||
text_areas = L"?f9 ?f14 ?f10 ?f15";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"23520 6600000 11760";
|
||||
|
||||
add(L"f0", L"if(0-$0 ,0,if(50000-$0 ,$0 ,50000))");
|
||||
add(L"f1", L"if(4200000-$1 ,4200000,if(6600000-$1 ,$1 ,6600000))");
|
||||
add(L"f2", L"?f0 *2/1");
|
||||
add(L"f3", L"100000+0-2");
|
||||
add(L"f4", L"if(0-$2 ,0,if(?f3 -$2 ,$2 ,?f3 ))");
|
||||
add(L"f5", L"logheight*?f0 /100000");
|
||||
add(L"f6", L"logheight*?f4 /200000");
|
||||
add(L"f7", L"logwidth*73490/200000");
|
||||
add(L"f8", L"logwidth/2");
|
||||
add(L"f9", L"?f8 +0-?f7 ");
|
||||
add(L"f10", L"?f8 +?f7 -0");
|
||||
add(L"f11", L"logheight/2");
|
||||
add(L"f12", L"?f11 +0-?f6 ");
|
||||
add(L"f13", L"?f11 +?f6 -0");
|
||||
add(L"f14", L"?f12 +0-?f5 ");
|
||||
add(L"f15", L"?f13 +?f5 -0");
|
||||
add(L"f16", L"?f1 +0-5400000");
|
||||
add(L"f17", L"logheight/2");
|
||||
add(L"f18", L"?f17 *tan(pi*(?f16 )/10800000)");
|
||||
add(L"f19", L"sqrt(?f18 *?f18 +?f17 *?f17 +0*0)");
|
||||
add(L"f20", L"?f19 *?f5 /?f17 ");
|
||||
add(L"f21", L"?f20 *1/2");
|
||||
add(L"f22", L"?f8 +?f18 -?f21 ");
|
||||
add(L"f23", L"?f18 *?f14 /?f17 ");
|
||||
add(L"f24", L"?f22 +0-?f23 ");
|
||||
add(L"f25", L"?f18 *?f12 /?f17 ");
|
||||
add(L"f26", L"?f22 +0-?f25 ");
|
||||
add(L"f27", L"?f18 *?f13 /?f17 ");
|
||||
add(L"f28", L"?f22 +0-?f27 ");
|
||||
add(L"f29", L"?f18 *?f15 /?f17 ");
|
||||
add(L"f30", L"?f22 +0-?f29 ");
|
||||
add(L"f31", L"?f18 *2/1");
|
||||
add(L"f32", L"?f22 +0-?f31 ");
|
||||
add(L"f33", L"?f22 +?f20 -0");
|
||||
add(L"f34", L"?f24 +?f20 -0");
|
||||
add(L"f35", L"?f26 +?f20 -0");
|
||||
add(L"f36", L"?f28 +?f20 -0");
|
||||
add(L"f37", L"?f30 +?f20 -0");
|
||||
add(L"f38", L"?f32 +?f20 -0");
|
||||
add(L"f39", L"?f5 *?f17 /?f19 ");
|
||||
add(L"f40", L"?f22 +?f39 -0");
|
||||
add(L"f41", L"?f33 +0-?f39 ");
|
||||
add(L"f42", L"if(?f16 ,?f40 ,?f33 )");
|
||||
add(L"f43", L"if(?f16 ,?f22 ,?f41 )");
|
||||
add(L"f44", L"?f5 *?f18 /?f19 ");
|
||||
add(L"f45", L"0+0-?f44 ");
|
||||
add(L"f46", L"if(?f16 ,?f44 ,0)");
|
||||
add(L"f47", L"if(?f16 ,0,?f45 )");
|
||||
add(L"f48", L"logwidth+0-?f42 ");
|
||||
add(L"f49", L"logwidth+0-?f43 ");
|
||||
add(L"f50", L"logheight+0-?f46 ");
|
||||
add(L"f51", L"logheight+0-?f47 ");
|
||||
add(L"f52", L"(?f42 +?f43 )/2");
|
||||
add(L"f53", L"(?f49 +?f48 )/2");
|
||||
add(L"f54", L"(?f46 +?f47 )/2");
|
||||
add(L"f55", L"(?f14 +?f12 )/2");
|
||||
add(L"f56", L"(?f13 +?f15 )/2");
|
||||
add(L"f57", L"(?f51 +?f50 )/2");
|
||||
add(L"f58", L"logwidth");
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h, h1;
|
||||
h.position = L"0 ?f14";
|
||||
h.y_maximum= L"50000";
|
||||
h.y_minimum= L"0";
|
||||
handles.push_back(h);
|
||||
|
||||
h1.position = L"?f43 0";
|
||||
handles.push_back(h1);
|
||||
|
||||
h.position = L"?f58 ?f12";
|
||||
h.y_maximum= L"?f3";
|
||||
h.y_minimum= L"0";
|
||||
handles.push_back(h);
|
||||
}
|
||||
};
|
||||
class oox_shape_mathPlus : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_mathPlus()
|
||||
{
|
||||
odf_type_name =L"ooxml-mathPlus";
|
||||
|
||||
enhanced_path = L"?f6 ?f12 L ?f7 ?f12 ?f7 ?f11 ?f8 ?f11 ?f8 ?f12 ?f9 ?f12 ?f9 ?f13 ?f8 ?f13 ?f8 ?f14 ?f7 ?f14 ?f7 ?f13 ?f6 ?f13 Z N";
|
||||
text_areas = L"?f6 ?f12 ?f9 ?f13";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"23520";
|
||||
|
||||
add(L"f0", L"if(0-$0 ,0,if(73490-$0 ,$0 ,73490))");
|
||||
add(L"f1", L"logwidth*73490/200000");
|
||||
add(L"f2", L"logheight*73490/200000");
|
||||
add(L"f3", L"min(logwidth,logheight)");
|
||||
add(L"f4", L"?f3 *?f0 /200000");
|
||||
add(L"f5", L"logwidth/2");
|
||||
add(L"f6", L"?f5 +0-?f1 ");
|
||||
add(L"f7", L"?f5 +0-?f4 ");
|
||||
add(L"f8", L"?f5 +?f4 -0");
|
||||
add(L"f9", L"?f5 +?f1 -0");
|
||||
add(L"f10", L"logheight/2");
|
||||
add(L"f11", L"?f10 +0-?f2 ");
|
||||
add(L"f12", L"?f10 +0-?f4 ");
|
||||
add(L"f13", L"?f10 +?f4 -0");
|
||||
add(L"f14", L"?f10 +?f2 -0");
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h;
|
||||
h.position = L"0 ?f12";
|
||||
h.y_maximum= L"73490";
|
||||
h.y_minimum= L"0";
|
||||
handles.push_back(h);
|
||||
}
|
||||
};
|
||||
|
||||
class oox_shape_mathMinus : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_mathMinus()
|
||||
{
|
||||
odf_type_name =L"ooxml-mathMinus";
|
||||
|
||||
enhanced_path = L"M ?f7 ?f4 L ?f8 ?f4 ?f8 ?f5 ?f7 ?f5 Z N";
|
||||
text_areas = L"?f7 ?f4 ?f8 ?f5";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"23520";
|
||||
|
||||
add(L"f0", L"if(0-$0 ,0,if(100000-$0 ,$0 ,100000))");
|
||||
add(L"f1", L"logheight*?f0 /200000");
|
||||
add(L"f2", L"logwidth*73490/200000");
|
||||
add(L"f3", L"logheight/2");
|
||||
add(L"f4", L"?f3 +0-?f1 ");
|
||||
add(L"f5", L"?f3 +?f1 -0");
|
||||
add(L"f6", L"logwidth/2");
|
||||
add(L"f7", L"?f6 +0-?f2 ");
|
||||
add(L"f8", L"?f6 +?f2 -0");
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h;
|
||||
h.position = L"0 ?f4";
|
||||
h.y_maximum= L"100000";
|
||||
h.y_minimum= L"0";
|
||||
handles.push_back(h);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -29,12 +29,15 @@
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
// shapetypeArc,
|
||||
// shapetypeChord,
|
||||
// shapetypeCorner,
|
||||
//+ shapetypeArc,
|
||||
//+ shapetypeBevel,
|
||||
//+ shapetypeChevron,
|
||||
//+ shapetypeChord,
|
||||
//+ shapetypeCorner,
|
||||
// shapetypeCornerTabs,
|
||||
// shapetypeDecagon,
|
||||
// shapetypeDiagStripe,
|
||||
//+ shapetypeDiamond
|
||||
// shapetypeDodecagon,
|
||||
//+ shapetypeDoubleWave,
|
||||
//+ shapetypeFunnel,
|
||||
@ -42,13 +45,19 @@
|
||||
//+ shapetypeGear9,
|
||||
// shapetypeHalfFrame,
|
||||
// shapetypeHeptagon,
|
||||
//+ shapetypeHomePlate,
|
||||
// shapetypeNonIsoscelesTrapezoid,
|
||||
// shapetypePie,
|
||||
//+ shapetypeParallelogram
|
||||
//+ shapetypePie,
|
||||
//+ shapetypePieWedge,
|
||||
//+ shapetypePlaque,
|
||||
// shapetypePlaqueTabs,
|
||||
// shapetypeSquareTabs,
|
||||
// shapetypeTeardrop,
|
||||
// shapetypeTeardrop
|
||||
//+ shapetypeTriangle
|
||||
//+ shapetypeTrapezoid
|
||||
//+ shapetypeBlockArc
|
||||
//+ shapetypeDonut
|
||||
|
||||
#include "../oox_shape_defines.h"
|
||||
|
||||
@ -764,7 +773,7 @@ class oox_shape_PieWedge : public oox_shape
|
||||
public:
|
||||
oox_shape_PieWedge()
|
||||
{
|
||||
odf_type_name =L"ooxml-PieWedge";
|
||||
odf_type_name =L"ooxml-pieWedge";
|
||||
|
||||
enhanced_path = L"M 0 ?f7 G ?f8 ?f9 ?f10 ?f11 L ?f4 ?f7 Z N";
|
||||
text_areas = L"?f2 ?f3 ?f4 ?f7";
|
||||
@ -785,4 +794,692 @@ 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);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class oox_shape_Chevron : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Chevron()
|
||||
{
|
||||
odf_type_name =L"ooxml-chevron";
|
||||
|
||||
enhanced_path = L"M 0 0 L ?f4 0 ?f11 ?f9 ?f4 ?f10 0 ?f10 ?f3 ?f9 Z N";
|
||||
text_areas = L"?f7 0 ?f8 ?f10";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"50000";
|
||||
|
||||
add(L"f0", L"min(logwidth,logheight)");
|
||||
add(L"f1", L"100000*logwidth/?f0 ");
|
||||
add(L"f2", L"if(0-$0 ,0,if(?f1 -$0 ,$0 ,?f1 ))");
|
||||
add(L"f3", L"?f0 *?f2 /100000");
|
||||
add(L"f4", L"logwidth+0-?f3 ");
|
||||
add(L"f5", L"?f4 *1/2");
|
||||
add(L"f6", L"?f4 +0-?f3 ");
|
||||
add(L"f7", L"if(?f6 ,?f3 ,0)");
|
||||
add(L"f8", L"if(?f6 ,?f4 ,logwidth)");
|
||||
add(L"f9", L"logheight/2");
|
||||
add(L"f10", L"logheight");
|
||||
add(L"f11", L"logwidth");
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h;
|
||||
|
||||
h.position = L"?f4 0";
|
||||
h.x_minimum = L"0";
|
||||
h.x_maximum = L"?f1";
|
||||
handles.push_back(h);
|
||||
}
|
||||
};
|
||||
class oox_shape_Arc : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Arc()
|
||||
{
|
||||
odf_type_name =L"ooxml-arc";
|
||||
|
||||
enhanced_path = L"M ?f16 ?f18 G ?f5 ?f7 ?f46 ?f47 L ?f15 ?f17 Z S N M ?f16 ?f18 G ?f5 ?f7 ?f48 ?f49 F N";
|
||||
text_areas = L"?f36 ?f42 ?f24 ?f30";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"16200000 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"?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"21600000+0-?f0 ");
|
||||
add(L"f22", L"?f4 +0-?f21 ");
|
||||
add(L"f23", L"max(?f16 ,?f19 )");
|
||||
add(L"f24", L"if(?f22 ,logwidth,?f23 )");
|
||||
add(L"f25", L"5400000+0-?f0 ");
|
||||
add(L"f26", L"27000000+0-?f0 ");
|
||||
add(L"f27", L"if(?f25 ,?f25 ,?f26 )");
|
||||
add(L"f28", L"?f4 +0-?f27 ");
|
||||
add(L"f29", L"max(?f18 ,?f20 )");
|
||||
add(L"f30", L"if(?f28 ,logheight,?f29 )");
|
||||
add(L"f31", L"10800000+0-?f0 ");
|
||||
add(L"f32", L"32400000+0-?f0 ");
|
||||
add(L"f33", L"if(?f31 ,?f31 ,?f32 )");
|
||||
add(L"f34", L"?f4 +0-?f33 ");
|
||||
add(L"f35", L"min(?f16 ,?f19 )");
|
||||
add(L"f36", L"if(?f34 ,0,?f35 )");
|
||||
add(L"f37", L"16200000+0-?f0 ");
|
||||
add(L"f38", L"37800000+0-?f0 ");
|
||||
add(L"f39", L"if(?f37 ,?f37 ,?f38 )");
|
||||
add(L"f40", L"?f4 +0-?f39 ");
|
||||
add(L"f41", L"min(?f18 ,?f20 )");
|
||||
add(L"f42", L"if(?f40 ,0,?f41 )");
|
||||
add(L"f43", L"?f0 +0-5400000");
|
||||
add(L"f44", L"?f1 +5400000-0");
|
||||
add(L"f45", L"(?f43 +?f44 )/2");
|
||||
add(L"f46", L"(?f0 )/60000.0");
|
||||
add(L"f47", L"(?f4 )/60000.0");
|
||||
add(L"f48", L"(?f0 )/60000.0");
|
||||
add(L"f49", 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_HomePlate : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_HomePlate()
|
||||
{
|
||||
odf_type_name =L"ooxml-homePlate";
|
||||
|
||||
enhanced_path = L"M 0 0 L ?f4 0 ?f9 ?f7 ?f4 ?f8 0 ?f8 Z N";
|
||||
text_areas = L"0 0 ?f5 ?f8";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"50000";
|
||||
|
||||
add(L"f0", L"min(logwidth,logheight)");
|
||||
add(L"f1", L"100000*logwidth/?f0 ");
|
||||
add(L"f2", L"if(0-$0 ,0,if(?f1 -$0 ,$0 ,?f1 ))");
|
||||
add(L"f3", L"?f0 *?f2 /100000");
|
||||
add(L"f4", L"logwidth+0-?f3 ");
|
||||
add(L"f5", L"(?f4 +logwidth)/2");
|
||||
add(L"f6", L"?f4 *1/2");
|
||||
add(L"f7", L"logheight/2");
|
||||
add(L"f8", L"logheight");
|
||||
add(L"f9", L"logwidth");
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h;
|
||||
|
||||
h.position = L"?f4 0";
|
||||
h.x_minimum = L"0";
|
||||
h.x_maximum = L"?f1";
|
||||
handles.push_back(h);
|
||||
}
|
||||
};
|
||||
|
||||
class oox_shape_Bevel : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Bevel()
|
||||
{
|
||||
odf_type_name =L"ooxml-bevel";
|
||||
|
||||
enhanced_path = L"M ?f2 ?f2 L ?f3 ?f2 ?f3 ?f4 ?f2 ?f4 Z S N M 0 0 L ?f5 0 ?f3 ?f2 ?f2 ?f2 Z K S N M 0 ?f8 L ?f2 ?f4 ?f3 ?f4 ?f5 ?f8 Z I S N M 0 0 L ?f2 ?f2 ?f2 ?f4 0 ?f8 Z J S N M ?f5 0 L ?f5 ?f8 ?f3 ?f4 ?f3 ?f2 Z H S N M 0 0 L ?f5 0 ?f5 ?f8 0 ?f8 Z M ?f2 ?f2 L ?f3 ?f2 ?f3 ?f4 ?f2 ?f4 Z M 0 0 L ?f2 ?f2 M 0 ?f8 L ?f2 ?f4 M ?f5 0 L ?f3 ?f2 M ?f5 ?f8 L ?f3 ?f4 F N";
|
||||
text_areas = L"?f2 ?f2 ?f3 ?f4";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"12500";
|
||||
|
||||
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+0-?f2 ");
|
||||
add(L"f4", L"logheight+0-?f2 ");
|
||||
add(L"f5", L"logwidth");
|
||||
add(L"f6", L"logheight/2");
|
||||
add(L"f7", L"logwidth/2");
|
||||
add(L"f8", L"logheight");
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h;
|
||||
|
||||
h.position = L"?f2 0";
|
||||
h.x_minimum = L"0";
|
||||
h.x_maximum = L"50000";
|
||||
handles.push_back(h);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class oox_shape_Trapezoid : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Trapezoid()
|
||||
{
|
||||
odf_type_name =L"ooxml-trapezoid";
|
||||
|
||||
enhanced_path = L"M 0 ?f14 L ?f4 0 ?f5 0 ?f15 ?f14 Z N";
|
||||
text_areas = L"?f8 ?f10 ?f11 ?f14";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"25000";
|
||||
|
||||
add(L"f0", L"min(logwidth,logheight)");
|
||||
add(L"f1", L"50000*logwidth/?f0");
|
||||
add(L"f2", L"if(0-$0 ,0,if(?f1 -$0 ,$0 ,?f1 ))");
|
||||
add(L"f3", L"?f0 *?f2 /200000");
|
||||
add(L"f4", L"?f0 *?f2 /100000");
|
||||
add(L"f5", L"logwidth+0-?f4");
|
||||
add(L"f6", L"logwidth+0-?f3");
|
||||
add(L"f7", L"logwidth/3");
|
||||
add(L"f8", L"?f7 *?f2 /?f1");
|
||||
add(L"f9", L"logheight/3");
|
||||
add(L"f10", L"?f9 *?f2 /?f1");
|
||||
add(L"f11", L"logwidth+0-?f8");
|
||||
add(L"f12", L"logwidth/2");
|
||||
add(L"f13", L"logheight/2");
|
||||
add(L"f14", L"logheight");
|
||||
add(L"f15", L"logwidth");
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h;
|
||||
|
||||
h.position = L"?f4 0";
|
||||
h.x_minimum = L"0";
|
||||
h.x_maximum = L"?f1";
|
||||
handles.push_back(h);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class oox_shape_Triangle : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Triangle()
|
||||
{
|
||||
odf_type_name =L"ooxml-triangle";
|
||||
|
||||
enhanced_path = L"M 0 ?f6 L ?f2 0 ?f7 ?f6 Z N";
|
||||
text_areas = L"?f1 ?f5 ?f4 ?f6";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"50000";
|
||||
|
||||
add(L"f0", L"if(0-$0 ,0,if(100000-$0 ,$0 ,100000))");
|
||||
add(L"f1", L"logwidth*?f0 /200000");
|
||||
add(L"f2", L"logwidth*?f0 /100000");
|
||||
add(L"f3", L"logwidth/2");
|
||||
add(L"f4", L"?f1 +?f3 -0");
|
||||
add(L"f5", L"logheight/2");
|
||||
add(L"f6", L"logheight");
|
||||
add(L"f7", L"logwidth");
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h;
|
||||
|
||||
h.position = L"?f2 0";
|
||||
h.x_minimum = L"0";
|
||||
h.x_maximum = L"100000";
|
||||
handles.push_back(h);
|
||||
}
|
||||
};
|
||||
|
||||
class oox_shape_Diamond : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Diamond()
|
||||
{
|
||||
odf_type_name =L"ooxml-diamond";
|
||||
|
||||
enhanced_path = L"M 0 ?f3 L ?f2 0 ?f5 ?f3 ?f2 ?f4 Z N";
|
||||
text_areas = L"?f6 ?f7 ?f0 ?f1";
|
||||
view_box = L"0 0 0 0";
|
||||
|
||||
add(L"f0", L"logwidth*3/4");
|
||||
add(L"f1", L"logheight*3/4");
|
||||
add(L"f2", L"logwidth/2");
|
||||
add(L"f3", L"logheight/2");
|
||||
add(L"f4", L"logheight");
|
||||
add(L"f5", L"logwidth");
|
||||
add(L"f6", L"logwidth/4");
|
||||
add(L"f7", L"logheight/4");
|
||||
}
|
||||
};
|
||||
|
||||
class oox_shape_Parallelogram : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Parallelogram()
|
||||
{
|
||||
odf_type_name =L"ooxml-parallelogram";
|
||||
|
||||
enhanced_path = L"M 0 ?f22 L ?f4 0 ?f23 0 ?f6 ?f22 Z N";
|
||||
text_areas = L"?f13 ?f14 ?f15 ?f16";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"25000";
|
||||
|
||||
add(L"f0", L"min(logwidth,logheight)");
|
||||
add(L"f1", L"100000*logwidth/?f0");
|
||||
add(L"f2", L"if(0-$0 ,0,if(?f1 -$0 ,$0 ,?f1 ))");
|
||||
add(L"f3", L"?f0 *?f2 /200000");
|
||||
add(L"f4", L"?f0 *?f2 /100000");
|
||||
add(L"f5", L"logwidth+0-?f3");
|
||||
add(L"f6", L"logwidth+0-?f4");
|
||||
add(L"f7", L"?f6 *1/2");
|
||||
add(L"f8", L"logwidth+0-?f7");
|
||||
add(L"f9", L"logwidth/2");
|
||||
add(L"f10", L"?f9 *?f2 /?f1");
|
||||
add(L"f11", L"5*?f2 /?f1 ");
|
||||
add(L"f12", L"(1+?f11 )/12");
|
||||
add(L"f13", L"?f12 *logwidth/1");
|
||||
add(L"f14", L"?f12 *logheight/1");
|
||||
add(L"f15", L"logwidth+0-?f13");
|
||||
add(L"f16", L"logheight+0-?f14");
|
||||
add(L"f17", L"logwidth/2");
|
||||
add(L"f18", L"logheight*?f17 /?f4");
|
||||
add(L"f19", L"if(0-?f18 ,0,if(logheight-?f18 ,?f18 ,logheight))");
|
||||
add(L"f20", L"logheight+0-?f19");
|
||||
add(L"f21", L"logheight/2");
|
||||
add(L"f22", L"logheight");
|
||||
add(L"f23", L"logwidth");
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h;
|
||||
|
||||
h.position = L"?f4 0";
|
||||
h.x_minimum = L"0";
|
||||
h.x_maximum = L"?f1";
|
||||
handles.push_back(h);
|
||||
}
|
||||
};
|
||||
|
||||
class oox_shape_RtTriangle : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_RtTriangle()
|
||||
{
|
||||
odf_type_name =L"ooxml-rtTriangle";
|
||||
|
||||
enhanced_path = L"M 0 ?f4 L 0 0 ?f6 ?f4 Z N";
|
||||
text_areas = L"?f7 ?f0 ?f1 ?f2";
|
||||
view_box = L"0 0 0 0";
|
||||
|
||||
add(L"f0", L"logheight*7/12");
|
||||
add(L"f1", L"logwidth*7/12");
|
||||
add(L"f2", L"logheight*11/12");
|
||||
add(L"f3", L"logheight/2");
|
||||
add(L"f4", L"logheight");
|
||||
add(L"f5", L"logwidth/2");
|
||||
add(L"f6", L"logwidth");
|
||||
add(L"f7", L"logwidth/12");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class oox_shape_Plus : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Plus()
|
||||
{
|
||||
odf_type_name =L"ooxml-plus";
|
||||
|
||||
enhanced_path = L"M 0 ?f2 L ?f2 ?f2 ?f2 0 ?f3 0 ?f3 ?f2 ?f13 ?f2 ?f13 ?f4 ?f3 ?f4 ?f3 ?f12 ?f2 ?f12 ?f2 ?f4 0 ?f4 Z N";
|
||||
text_areas = L"?f6 ?f8 ?f7 ?f9";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"25000";
|
||||
|
||||
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+0-?f2 ");
|
||||
add(L"f4", L"logheight+0-?f2 ");
|
||||
add(L"f5", L"logwidth+0-logheight");
|
||||
add(L"f6", L"if(?f5 ,0,?f2 )");
|
||||
add(L"f7", L"if(?f5 ,logwidth,?f3 )");
|
||||
add(L"f8", L"if(?f5 ,?f2 ,0)");
|
||||
add(L"f9", L"if(?f5 ,?f4 ,logheight)");
|
||||
add(L"f10", L"logwidth/2");
|
||||
add(L"f11", L"logheight/2");
|
||||
add(L"f12", L"logheight");
|
||||
add(L"f13", L"logwidth");
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h;
|
||||
|
||||
h.position = L"?f2 0";
|
||||
h.x_minimum = L"0";
|
||||
h.x_maximum = L"50000";
|
||||
handles.push_back(h);
|
||||
}
|
||||
};}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
};
|
||||
}
|
||||
@ -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
|
||||
@ -708,4 +719,45 @@ public:
|
||||
add(L"f198", L"if(?f26, ?f175, ?f190)");
|
||||
}
|
||||
};
|
||||
class oox_shape_roundRect : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_roundRect()
|
||||
{
|
||||
odf_type_name =L"ooxml-roundRect";
|
||||
|
||||
enhanced_path = L"M 0 ?f2 G ?f2 ?f2 ?f12 ?f13 L ?f3 0 G ?f2 ?f2 ?f14 ?f15 L ?f11 ?f4 G ?f2 ?f2 ?f16 ?f17 L ?f2 ?f10 G ?f2 ?f2 ?f18 ?f19 Z N";
|
||||
text_areas = L"?f5 ?f5 ?f6 ?f7";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"16667";
|
||||
|
||||
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+0-?f2 ");
|
||||
add(L"f4", L"logheight+0-?f2 ");
|
||||
add(L"f5", L"?f2 *29289/100000");
|
||||
add(L"f6", L"logwidth+0-?f5 ");
|
||||
add(L"f7", L"logheight+0-?f5 ");
|
||||
add(L"f8", L"logwidth/2");
|
||||
add(L"f9", L"logheight/2");
|
||||
add(L"f10", L"logheight");
|
||||
add(L"f11", L"logwidth");
|
||||
add(L"f12", L"(10800000)/60000.0");
|
||||
add(L"f13", L"(5400000)/60000.0");
|
||||
add(L"f14", L"(16200000)/60000.0");
|
||||
add(L"f15", L"(5400000)/60000.0");
|
||||
add(L"f16", L"(0)/60000.0");
|
||||
add(L"f17", L"(5400000)/60000.0");
|
||||
add(L"f18", L"(5400000)/60000.0");
|
||||
add(L"f19", L"(5400000)/60000.0");
|
||||
//-----------------------------------------------------------------
|
||||
_handle h1;
|
||||
|
||||
h1.position = L"?f2 0";
|
||||
h1.x_maximum= L"50000";
|
||||
h1.x_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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();
|
||||
|
||||
|
||||
@ -76,7 +76,7 @@ struct odf_group_state
|
||||
scale_cx = scale_cy = 1.;
|
||||
flipH = flipV = false;
|
||||
|
||||
elm = elm_;
|
||||
elm = elm_;
|
||||
level = level_;
|
||||
|
||||
prev_group = prev;
|
||||
@ -185,19 +185,19 @@ struct odf_drawing_state
|
||||
presentation_class_ = boost::none;
|
||||
presentation_placeholder_ = boost::none;
|
||||
|
||||
rotateAngle = boost::none;
|
||||
rotateAngle_ = boost::none;
|
||||
|
||||
path_ = L"";
|
||||
view_box_ = L"";
|
||||
path_last_command_ = L"";
|
||||
|
||||
oox_shape_preset = -1;
|
||||
oox_shape_preset_ = -1;
|
||||
oox_shape_.reset();
|
||||
|
||||
in_group = false;
|
||||
text_box_tableframe = false;
|
||||
in_group_ = false;
|
||||
text_box_tableframe_= false;
|
||||
|
||||
flipH = flipV = false;
|
||||
flipH_ = flipV_ = false;
|
||||
|
||||
}
|
||||
std::vector<odf_element_state> elements_;
|
||||
@ -207,28 +207,29 @@ struct odf_drawing_state
|
||||
_CP_OPT(length) svg_height_;
|
||||
_CP_OPT(length) svg_width_;
|
||||
|
||||
bool flipH_;
|
||||
bool flipV_;
|
||||
|
||||
std::wstring name_;
|
||||
std::wstring description_;
|
||||
int z_order_;
|
||||
bool hidden_;
|
||||
|
||||
_CP_OPT(double) rotateAngle;
|
||||
_CP_OPT(double) rotateAngle_;
|
||||
_CP_OPT(unsigned int) fill_color_;
|
||||
|
||||
_CP_OPT(presentation_class) presentation_class_;
|
||||
_CP_OPT(std::wstring) presentation_placeholder_;
|
||||
|
||||
bool flipH;
|
||||
bool flipV;
|
||||
|
||||
std::wstring path_;
|
||||
std::wstring view_box_;
|
||||
std::wstring path_last_command_;
|
||||
oox_shape_ptr oox_shape_;
|
||||
///////////////////////
|
||||
int oox_shape_preset;
|
||||
bool in_group;
|
||||
bool text_box_tableframe;
|
||||
int oox_shape_preset_;
|
||||
bool in_group_;
|
||||
bool text_box_tableframe_;
|
||||
};
|
||||
|
||||
class odf_drawing_context::Impl
|
||||
@ -316,6 +317,11 @@ void odf_drawing_context::set_presentation (bool bMaster)
|
||||
impl_->is_presentation_ = bMaster;
|
||||
}
|
||||
|
||||
_CP_OPT(bool) odf_drawing_context::get_presentation ()
|
||||
{
|
||||
return impl_->is_presentation_;
|
||||
}
|
||||
|
||||
void odf_drawing_context::set_footer_state(bool Val)
|
||||
{
|
||||
impl_->is_footer_ = Val;
|
||||
@ -330,6 +336,7 @@ void odf_drawing_context::set_background_state(bool Val)
|
||||
impl_->is_background_ = Val;
|
||||
|
||||
impl_->current_graphic_properties = new graphic_format_properties();
|
||||
start_area_properties();
|
||||
}
|
||||
|
||||
void odf_drawing_context::check_anchor()
|
||||
@ -346,6 +353,10 @@ void odf_drawing_context::check_anchor()
|
||||
set_vertical_pos(0);
|
||||
}
|
||||
}
|
||||
int odf_drawing_context::get_group_level()
|
||||
{
|
||||
return impl_->current_level_.size();
|
||||
}
|
||||
void odf_drawing_context::start_group()
|
||||
{
|
||||
office_element_ptr group_elm = impl_->create_draw_element(5000);
|
||||
@ -461,12 +472,13 @@ void odf_drawing_context::start_drawing()
|
||||
//else
|
||||
if (impl_->current_level_.size() > 0)
|
||||
{
|
||||
impl_->current_drawing_state_.in_group = true;
|
||||
impl_->current_drawing_state_.in_group_ = true;
|
||||
}
|
||||
|
||||
}
|
||||
void odf_drawing_context::end_drawing_background(odf_types::common_draw_fill_attlist & common_draw_attlist)
|
||||
{
|
||||
end_area_properties();
|
||||
if (impl_->current_drawing_state_.elements_.empty() == false) return;
|
||||
|
||||
if (!impl_->is_background_ || !impl_->current_graphic_properties) return;
|
||||
@ -485,19 +497,23 @@ void odf_drawing_context::end_drawing()
|
||||
draw_base* draw = dynamic_cast<draw_base*>(impl_->current_drawing_state_.elements_[0].elm.get());
|
||||
if (draw)
|
||||
{
|
||||
if (impl_->is_presentation_)
|
||||
if (impl_->current_drawing_state_.presentation_class_ || impl_->current_drawing_state_.presentation_placeholder_)
|
||||
{
|
||||
_CP_OPT(std::wstring) draw_layer;
|
||||
if (impl_->is_presentation_.get() == true)
|
||||
{//master
|
||||
if (impl_->current_drawing_state_.presentation_class_)
|
||||
draw_layer = L"backgroundobjects";
|
||||
else draw_layer = L"layout";
|
||||
draw_layer = L"backgroundobjects";
|
||||
|
||||
if (!impl_->current_drawing_state_.presentation_class_)
|
||||
impl_->current_drawing_state_.presentation_class_ = presentation_class::outline;
|
||||
|
||||
draw->common_draw_attlists_.shape_with_text_and_styles_.common_presentation_attlist_.presentation_user_transformed_ = true;
|
||||
draw->common_draw_attlists_.shape_with_text_and_styles_.common_presentation_attlist_.presentation_placeholder_ = false;
|
||||
}
|
||||
else
|
||||
{//slide
|
||||
if (impl_->current_drawing_state_.presentation_class_)
|
||||
draw_layer = L"layout";
|
||||
draw_layer = L"layout";
|
||||
}
|
||||
draw->common_draw_attlists_.shape_with_text_and_styles_.common_presentation_attlist_.presentation_class_ = impl_->current_drawing_state_.presentation_class_;
|
||||
draw->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_layer_ = draw_layer;
|
||||
@ -509,20 +525,20 @@ void odf_drawing_context::end_drawing()
|
||||
|
||||
std::wstring strTransform;
|
||||
|
||||
if (impl_->current_drawing_state_.in_group && impl_->current_group_)
|
||||
if (impl_->current_drawing_state_.in_group_ && impl_->current_group_)
|
||||
{
|
||||
double rotate = impl_->current_group_->rotate;
|
||||
if (impl_->current_drawing_state_.rotateAngle )
|
||||
rotate += *impl_->current_drawing_state_.rotateAngle;
|
||||
if (impl_->current_drawing_state_.rotateAngle_)
|
||||
rotate += *impl_->current_drawing_state_.rotateAngle_;
|
||||
|
||||
if (fabs(rotate)>0.001)impl_->current_drawing_state_.rotateAngle = rotate;
|
||||
if (fabs(rotate)>0.001)impl_->current_drawing_state_.rotateAngle_ = rotate;
|
||||
}
|
||||
double x = impl_->current_drawing_state_.svg_x_ ? impl_->current_drawing_state_.svg_x_->get_value() : 0;
|
||||
double y = impl_->current_drawing_state_.svg_y_ ? impl_->current_drawing_state_.svg_y_->get_value() : 0;
|
||||
|
||||
if (impl_->current_drawing_state_.rotateAngle)
|
||||
if (impl_->current_drawing_state_.rotateAngle_)
|
||||
{
|
||||
if (impl_->current_drawing_state_.in_group)
|
||||
if (impl_->current_drawing_state_.in_group_)
|
||||
{
|
||||
if (impl_->current_drawing_state_.svg_width_ && impl_->current_drawing_state_.svg_height_)
|
||||
{
|
||||
@ -532,7 +548,7 @@ void odf_drawing_context::end_drawing()
|
||||
}
|
||||
|
||||
}
|
||||
strTransform += std::wstring(L"rotate(") + boost::lexical_cast<std::wstring>(impl_->current_drawing_state_.rotateAngle.get()) + std::wstring(L")");
|
||||
strTransform += std::wstring(L"rotate(") + boost::lexical_cast<std::wstring>(impl_->current_drawing_state_.rotateAngle_.get()) + std::wstring(L")");
|
||||
//так как вращения все в мс относительно центра фигуры, а не от начала координат - убираем смещение
|
||||
|
||||
if (impl_->current_drawing_state_.svg_x_ && impl_->current_drawing_state_.svg_y_)
|
||||
@ -576,14 +592,14 @@ void odf_drawing_context::end_drawing()
|
||||
placeholder->svg_height_ = impl_->current_drawing_state_.svg_height_;
|
||||
placeholder->svg_width_ = impl_->current_drawing_state_.svg_width_;
|
||||
}
|
||||
if (impl_->current_drawing_state_.in_group)
|
||||
if (impl_->current_drawing_state_.in_group_)
|
||||
{
|
||||
odf_group_state_ptr gr = impl_->current_group_;
|
||||
|
||||
while(gr)
|
||||
{
|
||||
impl_->current_drawing_state_.flipH = impl_->current_drawing_state_.flipH ^ gr->flipH;
|
||||
impl_->current_drawing_state_.flipV = impl_->current_drawing_state_.flipV ^ gr->flipV;
|
||||
impl_->current_drawing_state_.flipH_ = impl_->current_drawing_state_.flipH_ ^ gr->flipH;
|
||||
impl_->current_drawing_state_.flipV_ = impl_->current_drawing_state_.flipV_ ^ gr->flipV;
|
||||
|
||||
gr = gr->prev_group;
|
||||
}
|
||||
@ -594,8 +610,8 @@ void odf_drawing_context::end_drawing()
|
||||
draw_enhanced_geometry* enhan = dynamic_cast<draw_enhanced_geometry*>(custom->draw_enhanced_geometry_.get());
|
||||
if(enhan)
|
||||
{
|
||||
if (impl_->current_drawing_state_.flipV) enhan->draw_enhanced_geometry_attlist_.draw_mirror_vertical_ = true;
|
||||
if (impl_->current_drawing_state_.flipH) enhan->draw_enhanced_geometry_attlist_.draw_mirror_horizontal_ = true;
|
||||
if (impl_->current_drawing_state_.flipV_) enhan->draw_enhanced_geometry_attlist_.draw_mirror_vertical_ = true;
|
||||
if (impl_->current_drawing_state_.flipH_) enhan->draw_enhanced_geometry_attlist_.draw_mirror_horizontal_ = true;
|
||||
}
|
||||
}else
|
||||
{
|
||||
@ -615,7 +631,7 @@ void odf_drawing_context::end_drawing()
|
||||
impl_->current_graphic_properties->common_horizontal_margin_attlist_.fo_margin_right_ = impl_->anchor_settings_.fo_margin_right_;
|
||||
impl_->current_graphic_properties->common_vertical_margin_attlist_.fo_margin_bottom_ = impl_->anchor_settings_.fo_margin_bottom_;
|
||||
|
||||
if (draw && !impl_->current_drawing_state_.in_group)
|
||||
if (draw && !impl_->current_drawing_state_.in_group_)
|
||||
draw->common_draw_attlists_.shape_with_text_and_styles_.common_text_anchor_attlist_.type_ = impl_->anchor_settings_.anchor_type_;
|
||||
|
||||
impl_->current_graphic_properties->style_wrap_ = impl_->anchor_settings_.style_wrap_;
|
||||
@ -695,7 +711,10 @@ void odf_drawing_context::Impl::create_draw_base(int type)
|
||||
draw_base* draw = dynamic_cast<draw_base*>(draw_elm.get());
|
||||
if (draw == NULL)return;
|
||||
//////////
|
||||
styles_context_->create_style(L"", style_family::Graphic, true, false, -1);
|
||||
if (is_presentation_ && current_drawing_state_.presentation_class_)
|
||||
styles_context_->create_style(L"", style_family::Presentation, true, false, -1);
|
||||
else
|
||||
styles_context_->create_style(L"", style_family::Graphic, true, false, -1);
|
||||
|
||||
office_element_ptr & style_shape_elm = styles_context_->last_state()->get_office_element();
|
||||
std::wstring style_name;
|
||||
@ -707,7 +726,10 @@ void odf_drawing_context::Impl::create_draw_base(int type)
|
||||
current_graphic_properties = style_->content_.get_graphic_properties();
|
||||
}
|
||||
|
||||
draw->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_style_name_ = style_name;
|
||||
if (is_presentation_ && current_drawing_state_.presentation_class_)
|
||||
draw->common_draw_attlists_.shape_with_text_and_styles_.common_presentation_attlist_.presentation_style_name_ = style_name;
|
||||
else
|
||||
draw->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_style_name_ = style_name;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
int level = current_level_.size();
|
||||
@ -728,7 +750,7 @@ void odf_drawing_context::Impl::create_draw_base(int type)
|
||||
|
||||
void odf_drawing_context::start_shape(int type)
|
||||
{
|
||||
impl_->current_drawing_state_.oox_shape_preset = type;
|
||||
impl_->current_drawing_state_.oox_shape_preset_ = type;
|
||||
|
||||
if (type < sizeof(Shape_Types_Mapping)/sizeof(_sh_typ))
|
||||
{
|
||||
@ -756,12 +778,21 @@ void odf_drawing_context::start_shape(int type)
|
||||
}
|
||||
}
|
||||
|
||||
bool odf_drawing_context::change_text_box_2_wordart()
|
||||
bool odf_drawing_context::is_wordart()
|
||||
{
|
||||
if (impl_->current_drawing_state_.oox_shape_preset > 2000 && impl_->current_drawing_state_.oox_shape_preset < 3000)
|
||||
if (impl_->current_drawing_state_.oox_shape_preset_ > 2000 && impl_->current_drawing_state_.oox_shape_preset_ < 3000)
|
||||
return true;
|
||||
|
||||
if (impl_->current_drawing_state_.text_box_tableframe) return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool odf_drawing_context::change_text_box_2_wordart()
|
||||
{
|
||||
if (impl_->current_drawing_state_.oox_shape_preset_ > 2000 && impl_->current_drawing_state_.oox_shape_preset_ < 3000)
|
||||
return true;
|
||||
|
||||
if (impl_->current_drawing_state_.presentation_class_) return false;
|
||||
if (impl_->current_drawing_state_.text_box_tableframe_) return false;
|
||||
if (impl_->current_drawing_state_.elements_.empty()) return false;
|
||||
|
||||
draw_text_box* t = dynamic_cast<draw_text_box*>(impl_->current_drawing_state_.elements_.back().elm.get());
|
||||
@ -799,7 +830,7 @@ bool odf_drawing_context::change_text_box_2_wordart()
|
||||
impl_->current_drawing_state_.elements_.erase(impl_->current_drawing_state_.elements_.end() - 2, impl_->current_drawing_state_.elements_.end());
|
||||
impl_->current_drawing_state_.elements_.push_back( state);
|
||||
|
||||
impl_->current_drawing_state_.oox_shape_preset = 2031;//plain text
|
||||
impl_->current_drawing_state_.oox_shape_preset_ = 2031;//plain text
|
||||
|
||||
if (sz == 2) impl_->root_element_ = draw_elm;
|
||||
return true;
|
||||
@ -810,8 +841,8 @@ void odf_drawing_context::end_shape()
|
||||
if (impl_->current_drawing_state_.elements_.empty())
|
||||
return;
|
||||
|
||||
if (impl_->current_drawing_state_.oox_shape_preset == 2000) return end_text_box();
|
||||
if (impl_->current_drawing_state_.oox_shape_preset == 3000) return end_image();
|
||||
if (impl_->current_drawing_state_.oox_shape_preset_ == 2000) return end_text_box();
|
||||
if (impl_->current_drawing_state_.oox_shape_preset_ == 3000) return end_image();
|
||||
//вторичные, вычисляемые свойства шейпов
|
||||
|
||||
if (isLineShape())
|
||||
@ -822,7 +853,7 @@ void odf_drawing_context::end_shape()
|
||||
draw_path* path = dynamic_cast<draw_path*>(impl_->current_drawing_state_.elements_[0].elm.get());
|
||||
if (path)
|
||||
{
|
||||
if (impl_->current_drawing_state_.view_box_.length() < 1 && impl_->current_drawing_state_.svg_width_ && impl_->current_drawing_state_.svg_height_)
|
||||
if (impl_->current_drawing_state_.view_box_.empty() && impl_->current_drawing_state_.svg_width_ && impl_->current_drawing_state_.svg_height_)
|
||||
set_viewBox( impl_->current_drawing_state_.svg_width_->get_value_unit(length::cm) * 1000,
|
||||
impl_->current_drawing_state_.svg_height_->get_value_unit(length::cm) *1000);
|
||||
|
||||
@ -848,7 +879,7 @@ void odf_drawing_context::end_shape()
|
||||
impl_->current_drawing_state_.svg_x_ = boost::none;
|
||||
impl_->current_drawing_state_.svg_y_ = boost::none;
|
||||
|
||||
if (impl_->current_drawing_state_.flipV)
|
||||
if (impl_->current_drawing_state_.flipV_)
|
||||
{
|
||||
_CP_OPT(length) tmp;
|
||||
|
||||
@ -856,7 +887,7 @@ void odf_drawing_context::end_shape()
|
||||
line->draw_line_attlist_.svg_y1_ = line->draw_line_attlist_.svg_y2_;
|
||||
line->draw_line_attlist_.svg_y2_ = tmp;
|
||||
}
|
||||
if (impl_->current_drawing_state_.flipH)
|
||||
if (impl_->current_drawing_state_.flipH_)
|
||||
{
|
||||
_CP_OPT(length) tmp;
|
||||
|
||||
@ -881,11 +912,11 @@ void odf_drawing_context::end_shape()
|
||||
std::wstring sub_type;
|
||||
bool text_shape = false;
|
||||
|
||||
if (impl_->current_drawing_state_.oox_shape_preset < sizeof(Shape_Types_Mapping)/sizeof(_sh_typ))
|
||||
if (impl_->current_drawing_state_.oox_shape_preset_ < sizeof(Shape_Types_Mapping)/sizeof(_sh_typ))
|
||||
{
|
||||
sub_type = Shape_Types_Mapping[impl_->current_drawing_state_.oox_shape_preset].first;
|
||||
sub_type = Shape_Types_Mapping[impl_->current_drawing_state_.oox_shape_preset_].first;
|
||||
}
|
||||
else if (impl_->current_drawing_state_.oox_shape_preset > 2000 && impl_->current_drawing_state_.oox_shape_preset < 3000)// 3000 - все равно сюда не попадет
|
||||
else if (impl_->current_drawing_state_.oox_shape_preset_ > 2000 && impl_->current_drawing_state_.oox_shape_preset_ < 3000)// 3000 - все равно сюда не попадет
|
||||
{
|
||||
text_shape = true;
|
||||
}
|
||||
@ -925,13 +956,18 @@ void odf_drawing_context::end_shape()
|
||||
}
|
||||
else
|
||||
{
|
||||
oox_shape_ptr shape_define = oox_shape::create(impl_->current_drawing_state_.oox_shape_preset);
|
||||
oox_shape_ptr shape_define = oox_shape::create(impl_->current_drawing_state_.oox_shape_preset_);
|
||||
|
||||
if (!shape_define) shape_define = impl_->current_drawing_state_.oox_shape_;
|
||||
if (!shape_define)
|
||||
shape_define = impl_->current_drawing_state_.oox_shape_;
|
||||
|
||||
if (shape_define)
|
||||
{
|
||||
enhanced->svg_viewbox_ = shape_define->view_box;
|
||||
if (impl_->current_drawing_state_.oox_shape_ && impl_->current_drawing_state_.oox_shape_->view_box)
|
||||
enhanced->svg_viewbox_ = impl_->current_drawing_state_.oox_shape_->view_box;
|
||||
else
|
||||
enhanced->svg_viewbox_ = shape_define->view_box;
|
||||
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_type_ = shape_define->odf_type_name;
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_text_areas_ = shape_define->text_areas;
|
||||
|
||||
@ -977,6 +1013,9 @@ void odf_drawing_context::end_shape()
|
||||
if (shape_define->handles[i].y_maximum) h->draw_handle_attlist_.draw_handle_range_y_maximum_ = *shape_define->handles[i].y_maximum;
|
||||
if (shape_define->handles[i].x_minimum) h->draw_handle_attlist_.draw_handle_range_x_minimum_ = *shape_define->handles[i].x_minimum;
|
||||
if (shape_define->handles[i].x_maximum) h->draw_handle_attlist_.draw_handle_range_x_maximum_ = *shape_define->handles[i].x_maximum;
|
||||
|
||||
if (shape_define->handles[i].r_maximum) h->draw_handle_attlist_.draw_handle_radius_range_maximum_ = *shape_define->handles[i].r_maximum;
|
||||
if (shape_define->handles[i].r_minimum) h->draw_handle_attlist_.draw_handle_radius_range_minimum_ = *shape_define->handles[i].r_minimum;
|
||||
}
|
||||
end_element();
|
||||
}
|
||||
@ -1001,7 +1040,7 @@ bool odf_drawing_context::isLineShape()
|
||||
draw_path* path = dynamic_cast<draw_path*>(impl_->current_level_.back().get());
|
||||
if (path) return true;
|
||||
|
||||
switch(impl_->current_drawing_state_.oox_shape_preset)
|
||||
switch(impl_->current_drawing_state_.oox_shape_preset_)
|
||||
{
|
||||
case 20: //SimpleTypes::shapetypeBentConnector2:
|
||||
case 21: //SimpleTypes::shapetypeBentConnector3:
|
||||
@ -1125,7 +1164,6 @@ void odf_drawing_context::set_hidden (bool bVal)
|
||||
void odf_drawing_context::set_opacity(double percent_)
|
||||
{
|
||||
if (!impl_->current_graphic_properties)return;
|
||||
if (percent_ < 0.01) return;
|
||||
|
||||
switch(impl_->current_drawing_part_)
|
||||
{
|
||||
@ -1159,22 +1197,26 @@ void odf_drawing_context::set_shadow(int type, std::wstring hexColor, _CP_OPT(do
|
||||
|
||||
void odf_drawing_context::set_placeholder_id (std::wstring val)
|
||||
{
|
||||
if (!impl_->is_presentation_) return;
|
||||
|
||||
impl_->current_drawing_state_.presentation_placeholder_ = val;
|
||||
}
|
||||
void odf_drawing_context::set_placeholder_type (int val)
|
||||
{
|
||||
if (!impl_->is_presentation_) return;
|
||||
|
||||
switch(val)
|
||||
{
|
||||
case 0: impl_->current_drawing_state_.presentation_class_ = presentation_class::text; break;
|
||||
case 1: impl_->current_drawing_state_.presentation_class_ = presentation_class::chart; break;
|
||||
case 0: impl_->current_drawing_state_.presentation_class_ = presentation_class::outline; break;
|
||||
case 1: impl_->current_drawing_state_.presentation_class_ = presentation_class::chart; break;
|
||||
case 2: impl_->current_drawing_state_.presentation_class_ = presentation_class::graphic; break;
|
||||
case 3: impl_->current_drawing_state_.presentation_class_ = presentation_class::title; break;
|
||||
case 4: impl_->current_drawing_state_.presentation_class_ = presentation_class::graphic; break;
|
||||
case 5: impl_->current_drawing_state_.presentation_class_ = presentation_class::date_time; break;
|
||||
case 6: impl_->current_drawing_state_.presentation_class_ = presentation_class::footer; break;
|
||||
case 7: impl_->current_drawing_state_.presentation_class_ = presentation_class::header; break;
|
||||
case 8: impl_->current_drawing_state_.presentation_class_ = presentation_class::object; break;
|
||||
case 9: impl_->current_drawing_state_.presentation_class_ = presentation_class::object; break;
|
||||
case 6: impl_->current_drawing_state_.presentation_class_ = presentation_class::footer; break;
|
||||
case 7: impl_->current_drawing_state_.presentation_class_ = presentation_class::header; break;
|
||||
case 8: impl_->current_drawing_state_.presentation_class_ = presentation_class::object; break;
|
||||
case 9: impl_->current_drawing_state_.presentation_class_ = presentation_class::object; break;
|
||||
case 10: impl_->current_drawing_state_.presentation_class_ = presentation_class::graphic; break;
|
||||
case 11: impl_->current_drawing_state_.presentation_class_ = presentation_class::graphic; break;
|
||||
case 12: impl_->current_drawing_state_.presentation_class_ = presentation_class::page_number;break;
|
||||
@ -1182,7 +1224,7 @@ void odf_drawing_context::set_placeholder_type (int val)
|
||||
case 14: impl_->current_drawing_state_.presentation_class_ = presentation_class::table; break;
|
||||
case 15: impl_->current_drawing_state_.presentation_class_ = presentation_class::title; break;
|
||||
default:
|
||||
impl_->current_drawing_state_.presentation_class_ = presentation_class::text; break;
|
||||
impl_->current_drawing_state_.presentation_class_ = presentation_class::outline; break;
|
||||
}
|
||||
//todooo draw_layer for master for sldnum, datetime ...
|
||||
}
|
||||
@ -1229,7 +1271,8 @@ _CP_OPT(odf_types::color) odf_drawing_context::get_line_color()
|
||||
}
|
||||
void odf_drawing_context::set_solid_fill(std::wstring hexColor)
|
||||
{
|
||||
if (!impl_->current_graphic_properties)return;
|
||||
if (!impl_->current_graphic_properties) return;
|
||||
if (hexColor.empty()) return;
|
||||
|
||||
int res = 0;
|
||||
if ((res = hexColor.find(L"#")) < 0) hexColor = std::wstring(L"#") + hexColor;
|
||||
@ -1238,7 +1281,7 @@ void odf_drawing_context::set_solid_fill(std::wstring hexColor)
|
||||
{
|
||||
case Area:
|
||||
impl_->current_graphic_properties->common_draw_fill_attlist_.draw_fill_color_ = hexColor;
|
||||
impl_->current_graphic_properties->common_background_color_attlist_.fo_background_color_ = color(hexColor);
|
||||
//impl_->current_graphic_properties->common_background_color_attlist_.fo_background_color_ = color(hexColor); - default transparent
|
||||
//последнее нужно - что если будут вводить текст - под текстом будет цвет фона (или он поменяется в полях текста)
|
||||
|
||||
if ((impl_->is_footer_ || impl_->is_header_ || impl_->is_background_) &&
|
||||
@ -1453,11 +1496,11 @@ void odf_drawing_context::add_formula (std::wstring name, std::wstring fmla)
|
||||
break;
|
||||
}
|
||||
|
||||
XmlUtils::replace_all(odf_fmla, L"gd", L"?f");
|
||||
//XmlUtils::replace_all(odf_fmla, L"gd", L"?f");
|
||||
XmlUtils::replace_all(odf_fmla, L"h", L"logheight");
|
||||
XmlUtils::replace_all(odf_fmla, L"w", L"logwidth");
|
||||
XmlUtils::replace_all(odf_fmla, L"adj", L"$");
|
||||
XmlUtils::replace_all(name, L"gd", L"f");
|
||||
//XmlUtils::replace_all(name, L"gd", L"f");
|
||||
|
||||
impl_->current_drawing_state_.oox_shape_->add(name, odf_fmla);
|
||||
}
|
||||
@ -1478,6 +1521,8 @@ void odf_drawing_context::set_viewBox (double W, double H)
|
||||
|
||||
if (impl_->current_drawing_state_.oox_shape_)
|
||||
{
|
||||
impl_->current_drawing_state_.oox_shape_->view_box = impl_->current_drawing_state_.view_box_;
|
||||
|
||||
if (impl_->current_drawing_state_.oox_shape_->sub_view_size)
|
||||
impl_->current_drawing_state_.oox_shape_->sub_view_size = *impl_->current_drawing_state_.oox_shape_->sub_view_size + L" " + std::to_wstring((int)W) + L" " + std::to_wstring((int)H);
|
||||
else
|
||||
@ -1486,7 +1531,7 @@ void odf_drawing_context::set_viewBox (double W, double H)
|
||||
}
|
||||
void odf_drawing_context::set_flip_H(bool bVal)
|
||||
{
|
||||
impl_->current_drawing_state_.flipH = bVal;
|
||||
impl_->current_drawing_state_.flipH_ = bVal;
|
||||
|
||||
if (impl_->current_graphic_properties == NULL) return;
|
||||
if (bVal == false)return;
|
||||
@ -1498,7 +1543,7 @@ void odf_drawing_context::set_flip_H(bool bVal)
|
||||
}
|
||||
void odf_drawing_context::set_flip_V(bool bVal)
|
||||
{
|
||||
impl_->current_drawing_state_.flipV = bVal;
|
||||
impl_->current_drawing_state_.flipV_ = bVal;
|
||||
|
||||
if (impl_->current_graphic_properties == NULL) return;
|
||||
if (bVal == false)return;
|
||||
@ -1513,7 +1558,7 @@ void odf_drawing_context::set_rotate(double dVal)
|
||||
{
|
||||
if (dVal > 180) dVal = dVal - 360;
|
||||
double dRotate = dVal / 180. * 3.14159265358979323846;
|
||||
impl_->current_drawing_state_.rotateAngle = dRotate;
|
||||
impl_->current_drawing_state_.rotateAngle_ = dRotate;
|
||||
}
|
||||
|
||||
void odf_drawing_context::set_drawings_rect(_CP_OPT(double) x_pt, _CP_OPT(double) y_pt, _CP_OPT(double) width_pt, _CP_OPT(double) height_pt)// "- 1" не задано
|
||||
@ -1720,8 +1765,8 @@ void odf_drawing_context::set_group_position(_CP_OPT(double) x, _CP_OPT(double)
|
||||
impl_->current_group_->x = *change_x ;
|
||||
impl_->current_group_->y = *change_y ;
|
||||
|
||||
impl_->current_group_->shift_x = (*x - *change_x) ;
|
||||
impl_->current_group_->shift_y = (*y - *change_y) ;
|
||||
impl_->current_group_->shift_x = (*x /impl_->current_group_->scale_cx - *change_x) ;
|
||||
impl_->current_group_->shift_y = (*y /impl_->current_group_->scale_cy - *change_y) ;
|
||||
}
|
||||
|
||||
void odf_drawing_context::set_group_size( _CP_OPT(double) cx, _CP_OPT(double) cy, _CP_OPT(double) change_cx, _CP_OPT(double) change_cy)
|
||||
@ -1742,7 +1787,7 @@ void odf_drawing_context::set_group_flip_V(bool bVal)
|
||||
{
|
||||
if ( impl_->group_list_.empty() )return;
|
||||
|
||||
impl_->current_group_->flipV= bVal;
|
||||
impl_->current_group_->flipV = bVal;
|
||||
}
|
||||
void odf_drawing_context::set_group_z_order(int Val)
|
||||
{
|
||||
@ -1767,7 +1812,7 @@ void odf_drawing_context::set_group_flip_H(bool bVal)
|
||||
{
|
||||
if ( impl_->group_list_.empty() )return;
|
||||
|
||||
impl_->current_group_->flipH= bVal;
|
||||
impl_->current_group_->flipH = bVal;
|
||||
}
|
||||
|
||||
void odf_drawing_context::set_group_rotate(int iVal)
|
||||
@ -1794,14 +1839,14 @@ void odf_drawing_context::set_position_line(_CP_OPT(double) & x_pt, _CP_OPT(doub
|
||||
draw_line* line = dynamic_cast<draw_line*>(impl_->current_level_.back().get());
|
||||
if (line == NULL) return;
|
||||
|
||||
if (impl_->current_drawing_state_.in_group && impl_->current_group_ && x_pt)
|
||||
if (impl_->current_drawing_state_.in_group_ && impl_->current_group_ && x_pt)
|
||||
x_pt = *x_pt * impl_->current_group_->scale_cx + impl_->current_group_->shift_x ;
|
||||
// + (impl_->current_group_->flipH ? (impl_->current_group_->cx - 2 * x_pt): 0);
|
||||
|
||||
if (x_pt && !line->draw_line_attlist_.svg_x1_)
|
||||
line->draw_line_attlist_.svg_x1_ = length(length(*x_pt,length::pt).get_value_unit(length::cm),length::cm);
|
||||
|
||||
if (impl_->current_drawing_state_.in_group && impl_->current_group_ && y_pt)
|
||||
if (impl_->current_drawing_state_.in_group_ && impl_->current_group_ && y_pt)
|
||||
y_pt = *y_pt * impl_->current_group_->scale_cy + impl_->current_group_->shift_y;
|
||||
//+ (impl_->current_group_->flipV ? (impl_->current_group_->cy - 2 * y_pt): 0);
|
||||
|
||||
@ -1809,13 +1854,13 @@ void odf_drawing_context::set_position_line(_CP_OPT(double) & x_pt, _CP_OPT(doub
|
||||
line->draw_line_attlist_.svg_y1_ = length(length(*y_pt,length::pt).get_value_unit(length::cm),length::cm);
|
||||
|
||||
///////////////////////////////////////
|
||||
if (impl_->current_drawing_state_.in_group && impl_->current_group_ && x2_pt)
|
||||
if (impl_->current_drawing_state_.in_group_ && impl_->current_group_ && x2_pt)
|
||||
x2_pt = *x2_pt * impl_->current_group_->scale_cx + impl_->current_group_->shift_x ;
|
||||
// + (impl_->current_group_->flipH ? (impl_->current_group_->cx - 2 * x_pt): 0);
|
||||
|
||||
if (x2_pt && !line->draw_line_attlist_.svg_x2_) line->draw_line_attlist_.svg_x2_ = length(length(*x2_pt,length::pt).get_value_unit(length::cm),length::cm);
|
||||
|
||||
if (impl_->current_drawing_state_.in_group && impl_->current_group_ && y2_pt)
|
||||
if (impl_->current_drawing_state_.in_group_ && impl_->current_group_ && y2_pt)
|
||||
y2_pt = *y2_pt * impl_->current_group_->scale_cy + impl_->current_group_->shift_y;
|
||||
//+ (impl_->current_group_->flipV ? (impl_->current_group_->cy - 2 * y_pt): 0);
|
||||
|
||||
@ -1841,14 +1886,14 @@ void odf_drawing_context::set_position(_CP_OPT(double) & x_pt, _CP_OPT(double) &
|
||||
{
|
||||
double x = *x_pt;
|
||||
|
||||
if (impl_->current_drawing_state_.in_group)
|
||||
if (impl_->current_drawing_state_.in_group_)
|
||||
{
|
||||
for( int i = impl_->group_list_.size() - 1; i >= 0 ; i--)
|
||||
{
|
||||
x = (x + impl_->group_list_[i]->shift_x) * impl_->group_list_[i]->scale_cx ;
|
||||
}
|
||||
}
|
||||
if (!impl_->current_drawing_state_.svg_x_ || impl_->current_drawing_state_.in_group)
|
||||
if (!impl_->current_drawing_state_.svg_x_ || impl_->current_drawing_state_.in_group_)
|
||||
{
|
||||
impl_->current_drawing_state_.svg_x_ = length(length(x , length::pt).get_value_unit(length::cm), length::cm);
|
||||
}
|
||||
@ -1858,7 +1903,7 @@ void odf_drawing_context::set_position(_CP_OPT(double) & x_pt, _CP_OPT(double) &
|
||||
{
|
||||
double y = *y_pt;
|
||||
|
||||
if (impl_->current_drawing_state_.in_group)
|
||||
if (impl_->current_drawing_state_.in_group_)
|
||||
{
|
||||
for( int i = impl_->group_list_.size() - 1; i >= 0 ; i--)
|
||||
{
|
||||
@ -1866,7 +1911,7 @@ void odf_drawing_context::set_position(_CP_OPT(double) & x_pt, _CP_OPT(double) &
|
||||
}
|
||||
}
|
||||
|
||||
if (!impl_->current_drawing_state_.svg_y_ || impl_->current_drawing_state_.in_group)
|
||||
if (!impl_->current_drawing_state_.svg_y_ || impl_->current_drawing_state_.in_group_)
|
||||
{
|
||||
impl_->current_drawing_state_.svg_y_ = length(length(y, length::pt).get_value_unit(length::cm),length::cm);
|
||||
}
|
||||
@ -1887,7 +1932,7 @@ void odf_drawing_context::get_size( _CP_OPT(double) & width_pt, _CP_OPT(double)
|
||||
}
|
||||
void odf_drawing_context::set_size( _CP_OPT(double) & width_pt, _CP_OPT(double) & height_pt)
|
||||
{
|
||||
if (impl_->current_drawing_state_.in_group)
|
||||
if (impl_->current_drawing_state_.in_group_)
|
||||
{
|
||||
if (width_pt)
|
||||
{
|
||||
@ -1970,7 +2015,7 @@ std::wstring odf_drawing_context::add_marker_style(int type)
|
||||
{
|
||||
if (type == 2) return L"";
|
||||
|
||||
std::wstring str_types [] = {L"ArrowMarker", L"DiamondMarker", L"None", L"OvalMarker", L"StealthMarker", L"TriangleMarker"};
|
||||
std::wstring str_types [] = {L"None", L"ArrowMarker", L"DiamondMarker", L"OvalMarker", L"StealthMarker", L"TriangleMarker"};
|
||||
|
||||
style * style_=NULL;
|
||||
if (impl_->styles_context_->find_odf_style(str_types[type],style_family::Marker,style_)) return str_types[type];
|
||||
@ -1991,7 +2036,7 @@ std::wstring odf_drawing_context::add_marker_style(int type)
|
||||
|
||||
switch(type)
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
marker->svg_d_ = L"M0 564l564 567 567-567-567-564z";
|
||||
marker->svg_viewBox_ = L"0 0 1131 1131";
|
||||
break;
|
||||
@ -2007,7 +2052,7 @@ std::wstring odf_drawing_context::add_marker_style(int type)
|
||||
marker->svg_d_ = L"M1321 3493h-1321l702-3493z";
|
||||
marker->svg_viewBox_ = L"0 0 1321 3493";
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
default:
|
||||
marker->svg_d_ =L"M0 2108v17 17l12 42 30 34 38 21 43 4 29-8 30-21 25-26 13-34 343-1532 339 1520 13 42 29 34 39 21 42 4 42-12 34-30 21-42v-39-12l-4 4-440-1998-9-42-25-39-38-25-43-8-42 8-38 25-26 39-8 42z";
|
||||
marker->svg_viewBox_ = L"0 0 1122 2243";
|
||||
@ -2071,17 +2116,15 @@ void odf_drawing_context::set_textarea_wrap(bool Val)
|
||||
impl_->current_graphic_properties->fo_wrap_option_ = wrap_option(wrap_option::NoWrap);
|
||||
|
||||
}
|
||||
|
||||
void odf_drawing_context::set_textarea_font(std::wstring & latin, std::wstring & cs, std::wstring & ea)
|
||||
{
|
||||
if (impl_->current_drawing_state_.elements_.empty())return;
|
||||
|
||||
if (!impl_->current_text_properties)
|
||||
odf_style_state_ptr style_state = impl_->styles_context_->last_state(style_family::Paragraph);
|
||||
if (style_state)
|
||||
{
|
||||
odf_style_state_ptr style_state = impl_->styles_context_->last_state(style_family::Paragraph);
|
||||
if (style_state)
|
||||
{
|
||||
impl_->current_text_properties = style_state->get_text_properties();
|
||||
}
|
||||
impl_->current_text_properties = style_state->get_text_properties();
|
||||
}
|
||||
|
||||
if (!impl_->current_text_properties) return;
|
||||
@ -2095,13 +2138,10 @@ void odf_drawing_context::set_textarea_fontcolor(std::wstring hexColor)
|
||||
{
|
||||
if (impl_->current_drawing_state_.elements_.empty())return;
|
||||
|
||||
if (!impl_->current_text_properties)
|
||||
odf_style_state_ptr style_state = impl_->styles_context_->last_state(style_family::Paragraph);
|
||||
if (style_state)
|
||||
{
|
||||
odf_style_state_ptr style_state = impl_->styles_context_->last_state(style_family::Paragraph);
|
||||
if (style_state)
|
||||
{
|
||||
impl_->current_text_properties = style_state->get_text_properties();
|
||||
}
|
||||
impl_->current_text_properties = style_state->get_text_properties();
|
||||
}
|
||||
|
||||
if (!impl_->current_text_properties) return;
|
||||
@ -2129,7 +2169,7 @@ void odf_drawing_context::set_textarea_writing_mode(int mode)
|
||||
style* style_ = NULL;
|
||||
if(!draw->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_text_style_name_)
|
||||
{
|
||||
impl_->styles_context_->create_style(L"",style_family::Paragraph, true, false, -1);
|
||||
impl_->styles_context_->create_style(L"", style_family::Paragraph, true, false, -1);
|
||||
|
||||
office_element_ptr & style_shape_elm = impl_->styles_context_->last_state()->get_office_element();
|
||||
style_ = dynamic_cast<style*>(style_shape_elm.get());
|
||||
@ -2146,32 +2186,79 @@ void odf_drawing_context::set_textarea_writing_mode(int mode)
|
||||
paragraph_properties = style_->content_.get_style_paragraph_properties();
|
||||
}
|
||||
}
|
||||
if (paragraph_properties == NULL && impl_->current_paragraph_properties == NULL)return;
|
||||
|
||||
switch(mode)
|
||||
if (paragraph_properties)
|
||||
{
|
||||
case 5://textverticaltypeWordArtVert:
|
||||
case 6://textverticaltypeWordArtVertRtl:
|
||||
case 4://SimpleTypes::textverticaltypeVert270: //нужно отзеркалить по горизонтали текст
|
||||
case 3://SimpleTypes::textverticaltypeVert:
|
||||
case 2://SimpleTypes::textverticaltypeMongolianVert:
|
||||
paragraph_properties->content_.style_writing_mode_ = odf_types::writing_mode(odf_types::writing_mode::TbRl);
|
||||
impl_->current_paragraph_properties->content_.style_writing_mode_ = odf_types::writing_mode(odf_types::writing_mode::TbRl);
|
||||
break;
|
||||
case 0://SimpleTypes::textverticaltypeEaVert:
|
||||
paragraph_properties->content_.style_writing_mode_ = odf_types::writing_mode(odf_types::writing_mode::TbRl);
|
||||
impl_->current_paragraph_properties->content_.style_writing_mode_ = odf_types::writing_mode(odf_types::writing_mode::TbRl);
|
||||
break;
|
||||
case 1://SimpleTypes::textverticaltypeHorz:
|
||||
default:
|
||||
paragraph_properties->content_.style_writing_mode_ = odf_types::writing_mode(odf_types::writing_mode::LrTb);
|
||||
impl_->current_paragraph_properties->content_.style_writing_mode_ = odf_types::writing_mode(odf_types::writing_mode::LrTb);
|
||||
break;
|
||||
switch(mode)
|
||||
{
|
||||
case 5://textverticaltypeWordArtVert:
|
||||
case 6://textverticaltypeWordArtVertRtl:
|
||||
case 4://SimpleTypes::textverticaltypeVert270: //нужно отзеркалить по горизонтали текст
|
||||
case 3://SimpleTypes::textverticaltypeVert:
|
||||
case 2://SimpleTypes::textverticaltypeMongolianVert:
|
||||
|
||||
paragraph_properties->content_.style_writing_mode_ = odf_types::writing_mode(odf_types::writing_mode::TbRl);
|
||||
break;
|
||||
case 0://SimpleTypes::textverticaltypeEaVert:
|
||||
paragraph_properties->content_.style_writing_mode_ = odf_types::writing_mode(odf_types::writing_mode::TbRl);
|
||||
break;
|
||||
case 1://SimpleTypes::textverticaltypeHorz:
|
||||
default:
|
||||
paragraph_properties->content_.style_writing_mode_ = odf_types::writing_mode(odf_types::writing_mode::LrTb);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (impl_->current_paragraph_properties)
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case 5://textverticaltypeWordArtVert:
|
||||
case 6://textverticaltypeWordArtVertRtl:
|
||||
case 4://SimpleTypes::textverticaltypeVert270: //нужно отзеркалить по горизонтали текст
|
||||
case 3://SimpleTypes::textverticaltypeVert:
|
||||
case 2://SimpleTypes::textverticaltypeMongolianVert:
|
||||
impl_->current_paragraph_properties->content_.style_writing_mode_ = odf_types::writing_mode(odf_types::writing_mode::TbRl);
|
||||
break;
|
||||
case 0://SimpleTypes::textverticaltypeEaVert:
|
||||
impl_->current_paragraph_properties->content_.style_writing_mode_ = odf_types::writing_mode(odf_types::writing_mode::TbRl);
|
||||
break;
|
||||
case 1://SimpleTypes::textverticaltypeHorz:
|
||||
default:
|
||||
impl_->current_paragraph_properties->content_.style_writing_mode_ = odf_types::writing_mode(odf_types::writing_mode::LrTb);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
void odf_drawing_context::set_paragraph_properties(style_paragraph_properties *paragraph_properties)
|
||||
{
|
||||
if (impl_->current_drawing_state_.elements_.empty()) return;
|
||||
|
||||
if (!impl_->current_paragraph_properties)
|
||||
{
|
||||
draw_base* draw = dynamic_cast<draw_base*>(impl_->current_drawing_state_.elements_[0].elm.get());
|
||||
if (draw)
|
||||
{
|
||||
if(!draw->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_text_style_name_)
|
||||
{
|
||||
impl_->styles_context_->create_style(L"", style_family::Paragraph, true, false, -1);
|
||||
|
||||
office_element_ptr & style_shape_elm = impl_->styles_context_->last_state()->get_office_element();
|
||||
style* style_ = dynamic_cast<style*>(style_shape_elm.get());
|
||||
if (style_)
|
||||
{
|
||||
impl_->current_paragraph_properties = style_->content_.get_style_paragraph_properties();
|
||||
draw->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_text_style_name_ = style_->style_name_;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//??? find by name
|
||||
}
|
||||
}
|
||||
}
|
||||
if (impl_->current_paragraph_properties)
|
||||
impl_->current_paragraph_properties ->apply_from(paragraph_properties);
|
||||
}
|
||||
void odf_drawing_context::set_textarea_padding(_CP_OPT(double) & left, _CP_OPT(double) & top, _CP_OPT(double) & right, _CP_OPT(double) & bottom)//in pt
|
||||
{
|
||||
if (!impl_->current_graphic_properties)return;
|
||||
@ -2200,7 +2287,7 @@ void odf_drawing_context::start_image(std::wstring odf_path)
|
||||
return;
|
||||
}
|
||||
|
||||
impl_->current_drawing_state_.oox_shape_preset = 3000;
|
||||
impl_->current_drawing_state_.oox_shape_preset_ = 3000;
|
||||
|
||||
start_frame();
|
||||
|
||||
@ -2247,7 +2334,7 @@ void odf_drawing_context::start_object(std::wstring name)
|
||||
|
||||
void odf_drawing_context::start_text_box()
|
||||
{
|
||||
impl_->current_drawing_state_.oox_shape_preset = 2000;
|
||||
impl_->current_drawing_state_.oox_shape_preset_ = 2000;
|
||||
|
||||
start_frame();
|
||||
|
||||
@ -2292,7 +2379,7 @@ void odf_drawing_context::set_text_box_tableframe(bool val)
|
||||
{
|
||||
if (impl_->current_drawing_state_.elements_.empty()) return;
|
||||
|
||||
impl_->current_drawing_state_.text_box_tableframe = val;
|
||||
impl_->current_drawing_state_.text_box_tableframe_ = val;
|
||||
|
||||
}
|
||||
void odf_drawing_context::set_text_box_parent_style(std::wstring style_name)
|
||||
@ -2418,7 +2505,7 @@ void odf_drawing_context::set_text(odf_text_context* text_context)
|
||||
{
|
||||
if (text_context == NULL || impl_->current_level_.size() < 1 ) return;
|
||||
|
||||
if (impl_->is_presentation_ && *impl_->is_presentation_) return;
|
||||
//if (impl_->is_presentation_ && *impl_->is_presentation_) return;
|
||||
|
||||
for (size_t i = 0; i < text_context->text_elements_list_.size(); i++)
|
||||
{
|
||||
@ -2437,7 +2524,7 @@ void odf_drawing_context::set_text(odf_text_context* text_context)
|
||||
|
||||
}
|
||||
|
||||
if (impl_->current_drawing_state_.oox_shape_preset > 2000 && impl_->current_drawing_state_.oox_shape_preset < 3000)
|
||||
if (impl_->current_drawing_state_.oox_shape_preset_ > 2000 && impl_->current_drawing_state_.oox_shape_preset_ < 3000)
|
||||
{
|
||||
//настройки цвета - перетащить в линии и заливки - так уж нужно wordart-у оо
|
||||
style_text_properties *text_properties_ = text_context->get_text_properties();
|
||||
@ -2947,12 +3034,12 @@ void odf_drawing_context::end_hatch_style()
|
||||
void odf_drawing_context::start_bitmap_style()
|
||||
{
|
||||
if (!impl_->current_graphic_properties) return;
|
||||
if (impl_->current_drawing_state_.oox_shape_preset == 3000) return;
|
||||
if (impl_->current_drawing_state_.oox_shape_preset_ == 3000) return;
|
||||
|
||||
odf_writer::office_element_ptr fill_image_element;
|
||||
|
||||
odf_writer::create_element(L"draw",L"fill-image", fill_image_element, impl_->odf_context_);
|
||||
impl_->styles_context_->add_style(fill_image_element,false,true, style_family::FillImage);
|
||||
odf_writer::create_element(L"draw", L"fill-image", fill_image_element, impl_->odf_context_);
|
||||
impl_->styles_context_->add_style(fill_image_element, false, true, style_family::FillImage);
|
||||
|
||||
draw_fill_image * fill_image = dynamic_cast<draw_fill_image *>(fill_image_element.get());
|
||||
if (!fill_image) return;
|
||||
@ -3043,7 +3130,7 @@ void odf_drawing_context::set_bitmap_link(std::wstring file_path)
|
||||
std::wstring odf_ref_name ;
|
||||
impl_->odf_context_->mediaitems()->add_or_find(file_path, _mediaitems::typeImage, odf_ref_name);
|
||||
|
||||
if (impl_->current_drawing_state_.oox_shape_preset == 3000)
|
||||
if (impl_->current_drawing_state_.oox_shape_preset_ == 3000)
|
||||
{
|
||||
if (impl_->current_level_.size() < 1) return;
|
||||
|
||||
|
||||
@ -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,16 +127,18 @@ 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);
|
||||
@ -162,8 +167,6 @@ public:
|
||||
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);
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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_;
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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()
|
||||
{
|
||||
@ -128,14 +147,7 @@ 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;
|
||||
|
||||
@ -64,16 +64,14 @@ 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_;}
|
||||
odf_comment_context * comment_context() {return current_slide().comment_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 ();
|
||||
|
||||
@ -527,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.;
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -163,6 +163,11 @@ odf_table_context* odt_conversion_context::table_context()
|
||||
{
|
||||
return &table_context_;
|
||||
}
|
||||
|
||||
odf_notes_context* odt_conversion_context::notes_context()
|
||||
{
|
||||
return ¬es_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)
|
||||
{
|
||||
|
||||
@ -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 ();
|
||||
|
||||
@ -44,6 +44,8 @@
|
||||
#include "Shapes/oox_shapeConnectors.h"
|
||||
#include "Shapes/oox_shapeWordArt.h"
|
||||
#include "Shapes/oox_shapeCurvedArrows.h"
|
||||
#include "Shapes/oox_shapeCallouts.h"
|
||||
#include "Shapes/oox_shapeBents.h"
|
||||
|
||||
#include "../../../Common/DocxFormat/Source/Common/SimpleTypes_Drawing.h"
|
||||
|
||||
@ -53,7 +55,6 @@ namespace cpdoccore
|
||||
oox_shape::oox_shape()
|
||||
{
|
||||
odf_type_name = L"ooxml-non-primitive";
|
||||
view_box = L"0 0 0 0";
|
||||
}
|
||||
|
||||
oox_shape_ptr oox_shape::create(int ooxPrstGeomType)
|
||||
@ -61,7 +62,13 @@ oox_shape_ptr oox_shape::create(int ooxPrstGeomType)
|
||||
switch (ooxPrstGeomType)
|
||||
{
|
||||
case SimpleTypes::shapetypeMathMultiply: return boost::make_shared<oox_shape_mathMultiply>();
|
||||
case SimpleTypes::shapetypeSun: return boost::make_shared<oox_shape_sun>();
|
||||
case SimpleTypes::shapetypeMathEqual: return boost::make_shared<oox_shape_mathEqual>();
|
||||
case SimpleTypes::shapetypeMathPlus: return boost::make_shared<oox_shape_mathPlus>();
|
||||
case SimpleTypes::shapetypeMathNotEqual: return boost::make_shared<oox_shape_mathNotEqual>();
|
||||
case SimpleTypes::shapetypeMathDivide: return boost::make_shared<oox_shape_mathDivide>();
|
||||
case SimpleTypes::shapetypeMathMinus: return boost::make_shared<oox_shape_mathMinus>();
|
||||
|
||||
case SimpleTypes::shapetypeRoundRect: return boost::make_shared<oox_shape_roundRect>();
|
||||
case SimpleTypes::shapetypeRound1Rect: return boost::make_shared<oox_shape_round1Rect>();
|
||||
case SimpleTypes::shapetypeRound2DiagRect: return boost::make_shared<oox_shape_round2DiagRect>();
|
||||
case SimpleTypes::shapetypeRound2SameRect: return boost::make_shared<oox_shape_round2SameRect>();
|
||||
@ -69,25 +76,62 @@ oox_shape_ptr oox_shape::create(int ooxPrstGeomType)
|
||||
case SimpleTypes::shapetypeSnip2DiagRect: return boost::make_shared<oox_shape_snip2DiagRect>();
|
||||
case SimpleTypes::shapetypeSnip2SameRect: return boost::make_shared<oox_shape_snip2SameRect>();
|
||||
case SimpleTypes::shapetypeSnipRoundRect: return boost::make_shared<oox_shape_snipRoundRect>();
|
||||
|
||||
case SimpleTypes::shapetypeStar6: return boost::make_shared<oox_shape_star6>();
|
||||
case SimpleTypes::shapetypeStar7: return boost::make_shared<oox_shape_star7>();
|
||||
case SimpleTypes::shapetypeStar10: return boost::make_shared<oox_shape_star10>();
|
||||
case SimpleTypes::shapetypeStar12: return boost::make_shared<oox_shape_star12>();
|
||||
case SimpleTypes::shapetypeStar16: return boost::make_shared<oox_shape_star16>();
|
||||
case SimpleTypes::shapetypeStar32: return boost::make_shared<oox_shape_star32>();
|
||||
case SimpleTypes::shapetypeSun: return boost::make_shared<oox_shape_sun>();
|
||||
|
||||
case SimpleTypes::shapetypeCircularArrow: return boost::make_shared<oox_shape_CircularArrow>();
|
||||
case SimpleTypes::shapetypeCurvedLeftArrow: return boost::make_shared<oox_shape_CurvedLeftArrow>();
|
||||
case SimpleTypes::shapetypeCurvedRightArrow: return boost::make_shared<oox_shape_CurvedRightArrow>();
|
||||
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::shapetypeLeftArrow: return boost::make_shared<oox_shape_LeftArrow>();
|
||||
case SimpleTypes::shapetypeLeftRightArrow: return boost::make_shared<oox_shape_LeftRightArrow>();
|
||||
case SimpleTypes::shapetypeLeftUpArrow: return boost::make_shared<oox_shape_LeftUpArrow>();
|
||||
case SimpleTypes::shapetypeUpDownArrow: return boost::make_shared<oox_shape_UpDownArrow>();
|
||||
case SimpleTypes::shapetypeRightArrow: return boost::make_shared<oox_shape_RightArrow>();
|
||||
case SimpleTypes::shapetypeDownArrow: return boost::make_shared<oox_shape_DownArrow>();
|
||||
case SimpleTypes::shapetypeUpArrow: return boost::make_shared<oox_shape_UpArrow>();
|
||||
case SimpleTypes::shapetypeNotchedRightArrow: return boost::make_shared<oox_shape_NotchedRightArrow>();
|
||||
|
||||
case SimpleTypes::shapetypeFunnel: return boost::make_shared<oox_shape_Funnel>();
|
||||
case SimpleTypes::shapetypeGear6: return boost::make_shared<oox_shape_Gear6>();
|
||||
case SimpleTypes::shapetypeGear9: return boost::make_shared<oox_shape_Gear9>();
|
||||
case SimpleTypes::shapetypeCircularArrow: return boost::make_shared<oox_shape_CircularArrow>();
|
||||
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::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::shapetypeChevron: return boost::make_shared<oox_shape_Chevron>();
|
||||
case SimpleTypes::shapetypeHomePlate: return boost::make_shared<oox_shape_HomePlate>();
|
||||
case SimpleTypes::shapetypeBevel: return boost::make_shared<oox_shape_Bevel>();
|
||||
case SimpleTypes::shapetypeArc: return boost::make_shared<oox_shape_Arc>();
|
||||
case SimpleTypes::shapetypeTrapezoid: return boost::make_shared<oox_shape_Trapezoid>();
|
||||
case SimpleTypes::shapetypeTriangle: return boost::make_shared<oox_shape_Triangle>();
|
||||
case SimpleTypes::shapetypeRtTriangle: return boost::make_shared<oox_shape_RtTriangle>();
|
||||
case SimpleTypes::shapetypeParallelogram: return boost::make_shared<oox_shape_Parallelogram>();
|
||||
case SimpleTypes::shapetypeDiamond: return boost::make_shared<oox_shape_Diamond>();
|
||||
case SimpleTypes::shapetypePlus: return boost::make_shared<oox_shape_Plus>();
|
||||
|
||||
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 SimpleTypes::shapetypeFlowChartExtract: return boost::make_shared<oox_shape_FlowChartExtract>();
|
||||
|
||||
case SimpleTypes::shapetypeLeftArrowCallout: return boost::make_shared<oox_shape_LeftArrowCallout>();
|
||||
case SimpleTypes::shapetypeRightArrowCallout: return boost::make_shared<oox_shape_RightArrowCallout>();
|
||||
case SimpleTypes::shapetypeUpArrowCallout: return boost::make_shared<oox_shape_UpArrowCallout>();
|
||||
case SimpleTypes::shapetypeDownArrowCallout: return boost::make_shared<oox_shape_DownArrowCallout>();
|
||||
|
||||
case SimpleTypes::shapetypeBentUpArrow: return boost::make_shared<oox_shape_BentUpArrow>();
|
||||
|
||||
//case (2001 + SimpleTypes::textshapetypeTextArchDown):
|
||||
//case (2001 + SimpleTypes::textshapetypeTextArchDownPour):
|
||||
|
||||
@ -64,6 +64,8 @@ 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)
|
||||
@ -78,7 +80,8 @@ namespace cpdoccore
|
||||
std::wstring enhanced_path;
|
||||
std::wstring modifiers;
|
||||
std::wstring text_areas;
|
||||
std::wstring view_box;
|
||||
|
||||
_CP_OPT(std::wstring) view_box;
|
||||
_CP_OPT(std::wstring) sub_view_size;
|
||||
_CP_OPT(std::wstring) glue_points;
|
||||
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@ -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_;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -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";
|
||||
|
||||
@ -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
@ -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;
|
||||
|
||||
|
||||
@ -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:
|
||||
@ -266,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:
|
||||
{
|
||||
|
||||
@ -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;
|
||||
@ -353,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;
|
||||
|
||||
@ -364,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................................................................................................................................
|
||||
@ -402,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);
|
||||
@ -502,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
|
||||
|
||||
@ -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());
|
||||
@ -2692,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();
|
||||
}
|
||||
@ -2724,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,
|
||||
@ -2781,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())
|
||||
@ -3017,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;
|
||||
@ -3049,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;
|
||||
@ -3101,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);
|
||||
|
||||
}
|
||||
}
|
||||
@ -3114,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)
|
||||
{
|
||||
@ -3184,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)
|
||||
{
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -60,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 ???
|
||||
@ -82,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()
|
||||
@ -123,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;
|
||||
@ -219,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()); //стили дефалтовых списков
|
||||
|
||||
@ -260,6 +271,8 @@ void PptxConverter::convert_styles()
|
||||
odp_context->page_layout_context()->create_layer_sets();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void PptxConverter::convert_settings()
|
||||
{
|
||||
|
||||
@ -295,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
|
||||
@ -320,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, true);
|
||||
|
||||
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
|
||||
{
|
||||
@ -366,16 +398,12 @@ 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->transition.GetPointer());
|
||||
convert (slide->timing.GetPointer());
|
||||
convert (slide->timing.GetPointer(), slide->transition.GetPointer());
|
||||
|
||||
|
||||
odp_context->end_slide();
|
||||
@ -433,13 +461,7 @@ void PptxConverter::convert(PPTX::Comments *oox_comments)
|
||||
odp_context->end_comment();
|
||||
}
|
||||
}
|
||||
void PptxConverter::convert(PPTX::Logic::Transition *oox_transition)
|
||||
{
|
||||
if (!oox_transition) return;
|
||||
|
||||
|
||||
}
|
||||
void PptxConverter::convert(PPTX::Logic::Timing *oox_timing)
|
||||
void PptxConverter::convert(PPTX::Logic::Timing *oox_timing, PPTX::Logic::Transition *oox_transition)
|
||||
{
|
||||
if (!oox_timing) return;
|
||||
if (!oox_timing->tnLst.IsInit()) return;
|
||||
@ -933,40 +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>();
|
||||
|
||||
odf_context()->drawing_context()->start_drawing();
|
||||
|
||||
if (pShape.IsInit())
|
||||
{
|
||||
pShape->FillLevelUp();
|
||||
if (!bPlaceholders && pShape->nvSpPr.nvPr.ph.is_init())
|
||||
continue;
|
||||
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();
|
||||
|
||||
PPTX::Logic::Shape update_shape;
|
||||
pShape->Merge(update_shape);
|
||||
//if (!bMaster && (ph_type == 5 || ph_type == 6 || ph_type == 7 || ph_type == 12))
|
||||
// continue;
|
||||
|
||||
OoxConverter::convert(&update_shape);
|
||||
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;
|
||||
|
||||
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());
|
||||
}
|
||||
@ -994,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();
|
||||
|
||||
@ -65,6 +65,7 @@ namespace PPTX
|
||||
class TableCell;
|
||||
class TableCellProperties;
|
||||
class TcBdr;
|
||||
class TxStyles;
|
||||
}
|
||||
}
|
||||
|
||||
@ -96,23 +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_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::Transition *oox_transition);
|
||||
void convert(PPTX::Logic::Timing *oox_timing);
|
||||
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);
|
||||
|
||||
@ -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());
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@ -335,10 +347,45 @@ void XlsxConverter::convert(OOX::Spreadsheet::CWorksheet *oox_sheet)
|
||||
}
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
convert(oox_sheet->m_oSheetViews.GetPointer());
|
||||
convert(oox_sheet->m_oHeaderFooter.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::CHeaderFooter * oox_header_footer)
|
||||
{
|
||||
if (!oox_header_footer) return;
|
||||
|
||||
}
|
||||
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 +1050,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 +1064,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 +1817,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 +1836,7 @@ void XlsxConverter::convert(OOX::Spreadsheet::CDrawing *oox_drawing)
|
||||
ods_context->end_drawings();
|
||||
}
|
||||
|
||||
xlsx_current_container = NULL;
|
||||
xlsx_current_container = old_container;
|
||||
}
|
||||
|
||||
|
||||
@ -1748,236 +1850,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;
|
||||
|
||||
@ -88,6 +88,8 @@ namespace OOX
|
||||
class CPageMargins;
|
||||
class CSi;
|
||||
class CWorkbookView;
|
||||
class CPictureWorksheet;
|
||||
class CHeaderFooter;
|
||||
}
|
||||
}
|
||||
|
||||
@ -130,6 +132,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 +153,8 @@ 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::CHeaderFooter *oox_header_footer);
|
||||
|
||||
void convert(OOX::Spreadsheet::CCol *oox_column);
|
||||
void convert(OOX::Spreadsheet::CRow *oox_row);
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Version="8,00"
|
||||
Name="Oox2OdfConverter"
|
||||
ProjectGUID="{BEE01B53-244A-44E6-8947-ED9342D9247E}"
|
||||
RootNamespace="Oox2OdfConverter"
|
||||
|
||||
@ -4309,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;
|
||||
|
||||
@ -95,7 +95,7 @@ namespace PPTX
|
||||
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("dx"), x)
|
||||
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("dy"), y)
|
||||
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("dz"), z)
|
||||
WritingElement_ReadAttributes_End( oReader )
|
||||
WritingElement_ReadAttributes_End_No_NS( oReader )
|
||||
}
|
||||
virtual void fromXML(XmlUtils::CXmlNode& node)
|
||||
{
|
||||
|
||||
@ -63,7 +63,7 @@ namespace PPTX
|
||||
WritingElement_ReadAttributes_Read_if ( oReader, _T("w"), w)
|
||||
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("h"), h)
|
||||
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("prst"), prst)
|
||||
WritingElement_ReadAttributes_End( oReader )
|
||||
WritingElement_ReadAttributes_End_No_NS( oReader )
|
||||
}
|
||||
virtual void fromXML(XmlUtils::CXmlNode& node)
|
||||
{
|
||||
|
||||
@ -120,21 +120,29 @@ namespace PPTX
|
||||
oAttr.Write(_T("noResize"), noResize);
|
||||
oAttr.Write(_T("noSelect"), noSelect);
|
||||
|
||||
return XmlUtils::CreateNode(m_namespace + L":cNvGraphicFramePr", oAttr.m_strValue.empty() ? L"" : XmlUtils::CreateNode(L"a:graphicFrameLocks", oAttr));
|
||||
std::wstring namespaceLocks = L"a";
|
||||
if (m_namespace == L"wp") namespaceLocks = L"wp";
|
||||
|
||||
return XmlUtils::CreateNode(m_namespace + L":cNvGraphicFramePr", oAttr.m_strValue.empty() ? L"" : XmlUtils::CreateNode(namespaceLocks + L":graphicFrameLocks", oAttr));
|
||||
}
|
||||
|
||||
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
|
||||
{
|
||||
std::wstring namespace_ = m_namespace;
|
||||
std::wstring namespace_ = m_namespace;
|
||||
std::wstring namespaceLock_ = L"a";
|
||||
|
||||
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX) namespace_ = L"xdr";
|
||||
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX) namespace_ = L"wp";
|
||||
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX)
|
||||
{
|
||||
namespaceLock_ = L"wp";
|
||||
namespace_ = L"wp";
|
||||
}
|
||||
|
||||
pWriter->StartNode(namespace_ + L":cNvGraphicFramePr");
|
||||
|
||||
pWriter->EndAttributes();
|
||||
|
||||
pWriter->StartNode(_T("a:graphicFrameLocks"));
|
||||
pWriter->StartNode(namespaceLock_ + L":graphicFrameLocks");
|
||||
|
||||
pWriter->StartAttributes();
|
||||
|
||||
@ -147,7 +155,7 @@ namespace PPTX
|
||||
|
||||
pWriter->EndAttributes();
|
||||
|
||||
pWriter->EndNode(_T("a:graphicFrameLocks"));
|
||||
pWriter->EndNode(namespaceLock_ + L":graphicFrameLocks");
|
||||
|
||||
pWriter->EndNode(namespace_ + L":cNvGraphicFramePr");
|
||||
}
|
||||
@ -228,4 +236,4 @@ namespace PPTX
|
||||
} // namespace Logic
|
||||
} // namespace PPTX
|
||||
|
||||
#endif // PPTX_LOGIC_CNVGRAPHICFRAMESPPR_INCLUDE_H
|
||||
#endif // PPTX_LOGIC_CNVGRAPHICFRAMESPPR_INCLUDE_H
|
||||
|
||||
@ -78,7 +78,7 @@ namespace PPTX
|
||||
WritingElement_ReadAttributes_Read_if ( oReader, _T("prst"), prst)
|
||||
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("fov"), fov)
|
||||
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("zoom"), zoom)
|
||||
WritingElement_ReadAttributes_End( oReader )
|
||||
WritingElement_ReadAttributes_End_No_NS( oReader )
|
||||
}
|
||||
virtual void fromXML(XmlUtils::CXmlNode& node)
|
||||
{
|
||||
|
||||
@ -88,7 +88,7 @@ namespace PPTX
|
||||
Limit::ColorSchemeIndex lColorIndex_folHlink;
|
||||
Limit::ColorSchemeIndex lColorIndex_hlink;
|
||||
|
||||
WritingElement_ReadAttributes_Start( oReader )
|
||||
WritingElement_ReadAttributes_Start_No_NS( oReader )
|
||||
WritingElement_ReadAttributes_Read_if ( oReader, _T("accent1"), lColorIndex_accent1)
|
||||
WritingElement_ReadAttributes_Read_else_if( oReader, _T("accent2"), lColorIndex_accent2 )
|
||||
WritingElement_ReadAttributes_Read_else_if( oReader, _T("accent3"), lColorIndex_accent3 )
|
||||
@ -98,10 +98,15 @@ namespace PPTX
|
||||
WritingElement_ReadAttributes_Read_else_if( oReader, _T("bg1"), lColorIndex_bg1 )
|
||||
WritingElement_ReadAttributes_Read_else_if( oReader, _T("bg2"), lColorIndex_bg2 )
|
||||
WritingElement_ReadAttributes_Read_else_if( oReader, _T("tx1"), lColorIndex_tx1 )
|
||||
WritingElement_ReadAttributes_Read_else_if( oReader, _T("tx1"), lColorIndex_tx2 )
|
||||
WritingElement_ReadAttributes_Read_else_if( oReader, _T("tx2"), lColorIndex_tx2 )
|
||||
WritingElement_ReadAttributes_Read_else_if( oReader, _T("folHlink"), lColorIndex_folHlink )
|
||||
WritingElement_ReadAttributes_Read_else_if( oReader, _T("hlink"), lColorIndex_hlink )
|
||||
WritingElement_ReadAttributes_End( oReader )
|
||||
|
||||
WritingElement_ReadAttributes_Read_else_if( oReader, _T("t1"), lColorIndex_tx1 )
|
||||
WritingElement_ReadAttributes_Read_else_if( oReader, _T("t2"), lColorIndex_tx2 )
|
||||
WritingElement_ReadAttributes_Read_else_if( oReader, _T("followedHyperlink"), lColorIndex_folHlink )
|
||||
WritingElement_ReadAttributes_Read_else_if( oReader, _T("hyperlink"), lColorIndex_hlink )
|
||||
WritingElement_ReadAttributes_End_No_NS( oReader )
|
||||
|
||||
ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent1"), lColorIndex_accent1));
|
||||
ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent2"), lColorIndex_accent2));
|
||||
@ -123,6 +128,23 @@ namespace PPTX
|
||||
ColorMap.clear();
|
||||
|
||||
Limit::ColorSchemeIndex lColorIndex;
|
||||
|
||||
if (m_name == L"w:clrSchemeMapping")
|
||||
{
|
||||
lColorIndex._set(node.GetAttribute(_T("w:accent1"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent1"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:accent2"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent2"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:accent3"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent3"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:accent4"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent4"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:accent5"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent5"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:accent6"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent6"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:bg1"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("bg1"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:bg2"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("bg2"), lColorIndex));
|
||||
|
||||
lColorIndex._set(node.GetAttribute(_T("w:t1"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("tx1"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:t2"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("tx2"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:followedHyperlink"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("folHlink"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:hyperlink"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("hlink"), lColorIndex));
|
||||
}
|
||||
|
||||
lColorIndex._set(node.GetAttribute(_T("accent1"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent1"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("accent2"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent2"), lColorIndex));
|
||||
@ -138,37 +160,29 @@ namespace PPTX
|
||||
lColorIndex._set(node.GetAttribute(_T("hlink"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("hlink"), lColorIndex));
|
||||
}
|
||||
|
||||
void fromXMLW(const XmlUtils::CXmlNode& cnode)
|
||||
{
|
||||
XmlUtils::CXmlNode& node = const_cast<XmlUtils::CXmlNode&> (cnode);
|
||||
|
||||
m_name = node.GetName();
|
||||
|
||||
ColorMap.clear();
|
||||
|
||||
Limit::ColorSchemeIndex lColorIndex;
|
||||
|
||||
lColorIndex._set(node.GetAttribute(_T("w:accent1"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent1"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:accent2"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent2"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:accent3"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent3"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:accent4"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent4"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:accent5"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent5"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:accent6"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("accent6"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:bg1"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("bg1"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:bg2"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("bg2"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:t1"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("tx1"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:t2"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("tx2"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:followedHyperlink"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("folHlink"), lColorIndex));
|
||||
lColorIndex._set(node.GetAttribute(_T("w:hyperlink"))); ColorMap.insert(std::pair<std::wstring,Limit::ColorSchemeIndex>(_T("hlink"), lColorIndex));
|
||||
}
|
||||
|
||||
virtual std::wstring toXML() const
|
||||
{
|
||||
XmlUtils::CAttribute oAttr;
|
||||
|
||||
for (std::map<std::wstring, Limit::ColorSchemeIndex>::const_iterator pPair = ColorMap.begin(); pPair != ColorMap.end(); ++pPair)
|
||||
if (m_name == L"w:clrSchemeMapping")
|
||||
{
|
||||
oAttr.Write(pPair->first, pPair->second.get());
|
||||
for (std::map<std::wstring, Limit::ColorSchemeIndex>::const_iterator pPair = ColorMap.begin(); pPair != ColorMap.end(); ++pPair)
|
||||
{
|
||||
std::wstring att_name = L"w:" + pPair->first;
|
||||
if (pPair->first == L"tx1") att_name = L"w:t1";
|
||||
else if (pPair->first == L"tx2") att_name = L"w:t2";
|
||||
else if (pPair->first == L"folHlink") att_name = L"w:followedHyperlink";
|
||||
else if (pPair->first == L"hlink") att_name = L"w:hyperlink";
|
||||
|
||||
oAttr.Write(att_name, pPair->second.get());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (std::map<std::wstring, Limit::ColorSchemeIndex>::const_iterator pPair = ColorMap.begin(); pPair != ColorMap.end(); ++pPair)
|
||||
{
|
||||
oAttr.Write(pPair->first, pPair->second.get());
|
||||
}
|
||||
}
|
||||
|
||||
return XmlUtils::CreateNode(m_name, oAttr);
|
||||
@ -229,12 +243,9 @@ namespace PPTX
|
||||
pReader->Seek(_e);
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
std::map<std::wstring, Limit::ColorSchemeIndex> ColorMap;
|
||||
|
||||
public:
|
||||
std::wstring m_name;
|
||||
std::wstring m_name;
|
||||
protected:
|
||||
virtual void FillParentPointersForChilds(){};
|
||||
};
|
||||
|
||||
@ -496,13 +496,13 @@ namespace PPTX
|
||||
|
||||
static void HSL2RGB(unsigned char* HSL, unsigned char* RGB)
|
||||
{
|
||||
if ( HSL[1] == 0 )
|
||||
{
|
||||
RGB[0] = HSL[2];
|
||||
RGB[1] = HSL[2];
|
||||
RGB[2] = HSL[2];
|
||||
}
|
||||
else
|
||||
//if ( HSL[1] == 0 )
|
||||
//{
|
||||
// RGB[0] = HSL[2];
|
||||
// RGB[1] = HSL[2];
|
||||
// RGB[2] = HSL[2];
|
||||
//}
|
||||
//else
|
||||
{
|
||||
double H = double(HSL[0])/240.0;
|
||||
double S = double(HSL[1])/240.0;
|
||||
|
||||
@ -53,28 +53,36 @@ namespace PPTX
|
||||
{
|
||||
name = oReader.GetName();
|
||||
|
||||
ReadAttributes( oReader );
|
||||
|
||||
if (XmlUtils::GetNameNoNS(name) == _T("alpha"))
|
||||
{
|
||||
ReadAttributes2( oReader );
|
||||
}
|
||||
else
|
||||
{
|
||||
ReadAttributes( oReader );
|
||||
}
|
||||
}
|
||||
void ReadAttributes2(XmlUtils::CXmlLiteReader& oReader)
|
||||
{
|
||||
nullable_string sTmp;
|
||||
WritingElement_ReadAttributes_Start_No_NS( oReader )
|
||||
WritingElement_ReadAttributes_ReadSingle ( oReader, _T("val"), sTmp)
|
||||
WritingElement_ReadAttributes_End( oReader )
|
||||
WritingElement_ReadAttributes_End_No_NS( oReader )
|
||||
|
||||
if (val.is_init() && sTmp.is_init() && sTmp->find(wchar_t('%')) != -1)
|
||||
*val = (*val) * 1000;
|
||||
if (sTmp.is_init())
|
||||
{
|
||||
val = sTmp.get();
|
||||
if (val.is_init() && std::wstring::npos != sTmp->find(L"%"))
|
||||
{
|
||||
*val = (*val) * 1000;
|
||||
}
|
||||
}
|
||||
}
|
||||
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
||||
{
|
||||
WritingElement_ReadAttributes_Start_No_NS( oReader )
|
||||
WritingElement_ReadAttributes_ReadSingle ( oReader, _T("val"), val)
|
||||
WritingElement_ReadAttributes_End( oReader )
|
||||
WritingElement_ReadAttributes_End_No_NS( oReader )
|
||||
}
|
||||
virtual void fromXML(XmlUtils::CXmlNode& node)
|
||||
{
|
||||
@ -86,7 +94,7 @@ namespace PPTX
|
||||
nullable_string sTmp;
|
||||
node.ReadAttributeBase(L"val", sTmp);
|
||||
|
||||
if (val.is_init() && sTmp.is_init() && sTmp->find(wchar_t('%')) != -1)
|
||||
if (val.is_init() && sTmp.is_init() && std::wstring::npos != sTmp->find(L"%"))
|
||||
*val = (*val) * 1000;
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user