mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
Compare commits
62 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| af7640e736 | |||
| 292781e6fb | |||
| 9cd97d48b8 | |||
| 579b441edc | |||
| 90f1aa055c | |||
| d75352f1f2 | |||
| eef66b3498 | |||
| b41170a233 | |||
| 5626963bdf | |||
| 643f117a92 | |||
| dd24ca837f | |||
| f555e3f821 | |||
| 07a07a1abd | |||
| 30473ee9b7 | |||
| 8b6e5f17c8 | |||
| 4d0e44c8b6 | |||
| b6b79576a1 | |||
| 1c1223b148 | |||
| 9947f058a9 | |||
| 54f55ad2ac | |||
| e4edb9cca4 | |||
| aacea2f015 | |||
| 1475b2fef9 | |||
| 8e58975095 | |||
| 04550f06ad | |||
| 988423f6e0 | |||
| 2b096f0977 | |||
| 7c0962f834 | |||
| 17423cdcdb | |||
| 5dc512dc3b | |||
| 1393073694 | |||
| 7da761a009 | |||
| 626eb87203 | |||
| 5b0dad3d99 | |||
| 9d3b7b91af | |||
| 01691950b9 | |||
| 9e085c5ae8 | |||
| f55cafa2af | |||
| 17bc27199c | |||
| e436c13fcc | |||
| 8e2c980152 | |||
| ff9ef8f941 | |||
| 0a2401471e | |||
| e55dc5ea75 | |||
| fef30772fd | |||
| 866af012eb | |||
| 8bae2e3255 | |||
| 35113a76ca | |||
| f776bb6c4e | |||
| 8d3e50f8c0 | |||
| 2439106397 | |||
| 8953b74579 | |||
| bd7978e474 | |||
| 95238af0f5 | |||
| e83daf6c91 | |||
| a4cade5a58 | |||
| 4fb284ebee | |||
| 900ed115c7 | |||
| cc31becec1 | |||
| 9b5f052c97 | |||
| 2017a8c692 | |||
| 558c669fb6 |
2
.gitignore
vendored
2
.gitignore
vendored
@ -47,6 +47,8 @@ ASCOfficeXlsFile2/win32/_ASCOfficeXlsFile2_p.c
|
||||
ASCOfficeXlsFile2/win32/dlldata.c
|
||||
OfficeUtils/win32/OfficeUtilsLib/OfficeUtilsLib/ReadMe.txt
|
||||
X2tConverter/**/Makefile.*
|
||||
X2tConverter/ASCOfficePPTXFile/PPTXLib/Linux/PPTXFormatLib/Makefile
|
||||
X2tConverter/Common/DocxFormat/DocxFormatLib/Makefile
|
||||
*.7z
|
||||
*.obj
|
||||
*.pdb
|
||||
|
||||
@ -1071,7 +1071,9 @@ namespace DocFileFormat
|
||||
int cpPic = searchNextTextMark(m_document->Text, cpFieldStart, TextMark::Picture);
|
||||
int cpFieldEnd = searchNextTextMark( m_document->Text, cpFieldStart, TextMark::FieldEndMark );
|
||||
|
||||
if (cpFieldStart < cpPic && cpPic < cpFieldEnd)
|
||||
bool bStartField = _fieldLevels.empty() ? false : (_fieldLevels.back().bBegin && !_fieldLevels.back().bSeparate);
|
||||
|
||||
if (cpFieldStart < cpPic && cpPic < cpFieldEnd && !bStartField)
|
||||
{
|
||||
writeField(text, cpFieldStart, cpFieldEnd);
|
||||
text.clear();
|
||||
|
||||
@ -31,6 +31,7 @@
|
||||
*/
|
||||
|
||||
#include "MainDocumentMapping.h"
|
||||
#include "OfficeDrawing/FillStyleBooleanProperties.h"
|
||||
|
||||
namespace DocFileFormat
|
||||
{
|
||||
@ -83,16 +84,27 @@ namespace DocFileFormat
|
||||
|
||||
if ((m_document->GetOfficeArt()) && (m_document->GetOfficeArt()->GetShapeBackgound()))
|
||||
{
|
||||
bool bFilled = true;
|
||||
m_document->DocProperties->bDisplayBackgroundShape = true;
|
||||
ShapeContainer* pShape = m_document->GetOfficeArt()->GetShapeBackgound();
|
||||
|
||||
m_pXmlWriter->WriteNodeBegin ( L"w:background", TRUE);
|
||||
m_pXmlWriter->WriteAttribute ( L"w:color", L"FFFFFF");
|
||||
m_pXmlWriter->WriteNodeEnd( L"", TRUE, FALSE );
|
||||
|
||||
VMLShapeMapping oVmlWriter (m_context, m_pXmlWriter, NULL, NULL, _caller);
|
||||
pShape->Convert(&oVmlWriter);
|
||||
m_pXmlWriter->WriteNodeEnd (L"w:background");
|
||||
OptionEntryPtr boolFill = pShape->ExtractOption(fillStyleBooleanProperties);
|
||||
|
||||
FillStyleBooleanProperties booleans(boolFill ? boolFill->op : 0);
|
||||
if (booleans.fUsefFilled && !booleans.fFilled)
|
||||
{
|
||||
bFilled = false;
|
||||
}
|
||||
if (bFilled)
|
||||
{
|
||||
m_pXmlWriter->WriteNodeBegin ( L"w:background", TRUE);
|
||||
m_pXmlWriter->WriteAttribute ( L"w:color", L"FFFFFF");
|
||||
m_pXmlWriter->WriteNodeEnd( L"", TRUE, FALSE );
|
||||
|
||||
VMLShapeMapping oVmlWriter (m_context, m_pXmlWriter, NULL, NULL, _caller);
|
||||
pShape->Convert(&oVmlWriter);
|
||||
m_pXmlWriter->WriteNodeEnd (L"w:background");
|
||||
}
|
||||
}
|
||||
|
||||
m_pXmlWriter->WriteNodeBegin( L"w:body", FALSE );
|
||||
|
||||
@ -101,6 +101,24 @@ namespace DocFileFormat
|
||||
return new ShapeContainer( _reader, bodySize, typeCode, version, instance );
|
||||
}
|
||||
|
||||
OptionEntryPtr ExtractOption(const PropertyId & prop) const
|
||||
{
|
||||
OptionEntryPtr ret;
|
||||
for ( size_t i = 0; i < this->Children.size(); ++i )
|
||||
{
|
||||
ShapeOptions* opt = dynamic_cast<ShapeOptions*>( this->Children[i] );
|
||||
|
||||
if ( opt == NULL ) continue;
|
||||
|
||||
std::map<PropertyId, OptionEntryPtr>::iterator pFind = opt->OptionsByID.find(prop);
|
||||
if (pFind != opt->OptionsByID.end())
|
||||
{
|
||||
ret = pFind->second;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
std::vector<OptionEntryPtr> ExtractOptions() const
|
||||
{
|
||||
std::vector<OptionEntryPtr> ret;
|
||||
|
||||
@ -95,7 +95,7 @@ namespace formulasconvert {
|
||||
|
||||
bool odf2oox_converter::Impl::find_first_ref(std::wstring const & expr, std::wstring & table, std::wstring & ref)
|
||||
{
|
||||
boost::wregex re(L"\\[(?:\\$)?([^\\.]+?){0,1}\\.([a-zA-Z\\$]+\\d+)(?::\\.([a-zA-Z]+\\d+)){0,1}\\]");
|
||||
boost::wregex re(L"\\[(?:\\$)?([^\\.]+?){0,1}\\.([\\w^0-9\\$]+\\d+)(?::\\.([\\w^0-9]+\\d+)){0,1}\\]");
|
||||
boost::wsmatch result;
|
||||
bool b = boost::regex_search(expr, result, re);
|
||||
|
||||
@ -211,7 +211,7 @@ namespace formulasconvert {
|
||||
}
|
||||
std::wstring odf2oox_converter::Impl::replace_named_ref_formater1(boost::wsmatch const & what)
|
||||
{
|
||||
boost::wregex complexRef(L"\\${0,1}([^\\.]+?){0,1}\\.(\\${0,1}[a-zA-Z]+\\${0,1}\\d+)(?::\\.(\\${0,1}[a-zA-Z]+\\${0,1}\\d+)){0,1}");
|
||||
boost::wregex complexRef(L"\\${0,1}([^\\.]+?){0,1}\\.(\\${0,1}[\\w^0-9]+\\${0,1}\\d+)(?::\\.(\\${0,1}[\\w^0-9]+\\${0,1}\\d+)){0,1}");
|
||||
|
||||
std::wstring expr = what[1].str();
|
||||
const std::wstring res = boost::regex_replace(
|
||||
@ -235,7 +235,7 @@ namespace formulasconvert {
|
||||
{
|
||||
convert_with_TableName = withTableName;
|
||||
|
||||
boost::wregex complexRef(L"\\[(?:\$)?([^\\.]+?){0,1}\\.(\\${0,1}[a-zA-Z]*\\${0,1}\\d*)(?::(\\${0,1}[^\\.]+?){0,1}\\.(\\${0,1}[a-zA-Z]*\\${0,1}\\d*)){0,1}\\]");
|
||||
boost::wregex complexRef(L"\\[(?:\$)?([^\\.]+?){0,1}\\.(\\${0,1}[\\w^0-9]*\\${0,1}\\d*)(?::(\\${0,1}[^\\.]+?){0,1}\\.(\\${0,1}[\\w^0-9]*\\${0,1}\\d*)){0,1}\\]");
|
||||
/*
|
||||
[ $ Sheet2 . A1 : ( $ Sheet2)? . B5 ]
|
||||
*/
|
||||
@ -252,7 +252,7 @@ namespace formulasconvert {
|
||||
convert_with_TableName = withTableName;
|
||||
|
||||
//boost::wregex complexRef(L"\\${0,1}([^\\.]+?){0,1}\\.(\\${0,1}[a-zA-Z]+\\${0,1}\\d+)(?::\\.(\\${0,1}[a-zA-Z]+\\${0,1}\\d+)){0,1}");
|
||||
boost::wregex complexRef(L"\\${0,1}([^\\.\\s]+?){0,1}\\.(\\${0,1}[a-zA-Z]*\\${0,1}\\d*)(?::\\${0,1}([^\\.\\s]+?){0,1}\\.(\\${0,1}[a-zA-Z]*\\${0,1}\\d*)){0,1}");
|
||||
boost::wregex complexRef(L"\\${0,1}([^\\.\\s]+?){0,1}\\.(\\${0,1}[\\w^0-9]*\\${0,1}\\d*)(?::\\${0,1}([^\\.\\s]+?){0,1}\\.(\\${0,1}[\\w^0-9]*\\${0,1}\\d*)){0,1}");
|
||||
|
||||
const std::wstring res = boost::regex_replace(
|
||||
expr,
|
||||
@ -358,35 +358,52 @@ namespace formulasconvert {
|
||||
|
||||
return L"";
|
||||
}
|
||||
void odf_replace_tmp_back(std::wstring &expr)
|
||||
{
|
||||
XmlUtils::replace_all( expr, L"ТОСHKA", L".");
|
||||
XmlUtils::replace_all( expr, L"VOSKL", L"!");
|
||||
|
||||
XmlUtils::replace_all( expr, L"SCOBCAIN", L"(");
|
||||
XmlUtils::replace_all( expr, L"SCOBCAOUT", L")");
|
||||
|
||||
XmlUtils::replace_all( expr, L"KVADRATIN", L"[");
|
||||
XmlUtils::replace_all( expr, L"KVADRATOUT", L"]");
|
||||
|
||||
XmlUtils::replace_all( expr, L"PROBEL", L" ");
|
||||
XmlUtils::replace_all( expr, L"APOSTROF", L"'");
|
||||
XmlUtils::replace_all( expr, L"KAVYCHKA", L"\"");
|
||||
}
|
||||
void odf_replace_tmp(std::wstring &expr)
|
||||
{
|
||||
XmlUtils::replace_all( expr, L".", L"ТОСHKA");
|
||||
XmlUtils::replace_all( expr, L"!", L"VOSKL");
|
||||
|
||||
XmlUtils::replace_all( expr, L"(", L"SCOBCAIN");
|
||||
XmlUtils::replace_all( expr, L")", L"SCOBCAOUT");
|
||||
|
||||
XmlUtils::replace_all( expr, L"[", L"KVADRATIN");
|
||||
XmlUtils::replace_all( expr, L"]", L"KVADRATOUT");
|
||||
|
||||
XmlUtils::replace_all( expr, L" ", L"PROBEL");
|
||||
XmlUtils::replace_all( expr, L"'", L"APOSTROF");
|
||||
XmlUtils::replace_all( expr, L"\"", L"KAVYCHKA");
|
||||
}
|
||||
std::wstring convert_scobci(boost::wsmatch const & what)
|
||||
{
|
||||
if (what[1].matched)
|
||||
{
|
||||
std::wstring inner = what[1].str();
|
||||
XmlUtils::replace_all( inner, L".", L"ТОСHKA");
|
||||
XmlUtils::replace_all( inner, L"(", L"SCOBCAIN");
|
||||
XmlUtils::replace_all( inner, L")", L"SCOBCAOUT");
|
||||
|
||||
XmlUtils::replace_all( inner, L"[", L"KVADRATIN");
|
||||
XmlUtils::replace_all( inner, L"]", L"KVADRATOUT");
|
||||
|
||||
XmlUtils::replace_all( inner, L" ", L"PROBEL");
|
||||
XmlUtils::replace_all( inner, L"'", L"APOSTROF");
|
||||
odf_replace_tmp(inner);
|
||||
|
||||
return inner;
|
||||
}
|
||||
else if (what[2].matched)
|
||||
{
|
||||
std::wstring inner = what[2].str();
|
||||
XmlUtils::replace_all( inner, L".", L"ТОСHKA");
|
||||
|
||||
XmlUtils::replace_all( inner, L"(", L"SCOBCAIN");
|
||||
XmlUtils::replace_all( inner, L")", L"SCOBCAOUT");
|
||||
|
||||
XmlUtils::replace_all( inner, L"[", L"KVADRATIN");
|
||||
XmlUtils::replace_all( inner, L"]", L"KVADRATOUT");
|
||||
|
||||
XmlUtils::replace_all( inner, L" ", L"PROBEL");
|
||||
XmlUtils::replace_all( inner, L"\"", L"KAVYCHKA");
|
||||
odf_replace_tmp(inner);
|
||||
|
||||
return inner;
|
||||
}
|
||||
else if (what[3].matched)
|
||||
@ -492,9 +509,9 @@ namespace formulasconvert {
|
||||
XmlUtils::replace_all( workstr, L"FDIST(", L"_xlfn.F.DIST(");
|
||||
// ROUNDUP( - тут в oox 2 параметра - разрядность нужно - ,0) - EV Requirements v2.2.3.ods
|
||||
|
||||
int res_find=0;
|
||||
if ((res_find = workstr.find(L"CONCATINATE")) > 0)
|
||||
if (std::wstring::npos != workstr.find(L"CONCATINATE"))
|
||||
{
|
||||
bool l = true;
|
||||
//могут быть частично заданы диапазоны
|
||||
//todooo
|
||||
}
|
||||
@ -509,18 +526,7 @@ namespace formulasconvert {
|
||||
|
||||
|
||||
//-----------------------------------------------------------
|
||||
XmlUtils::replace_all( workstr, L"PROBEL" , L" ");
|
||||
XmlUtils::replace_all( workstr, L"APOSTROF" , L"'");
|
||||
XmlUtils::replace_all( workstr, L"ТОСHKA" , L".");
|
||||
|
||||
XmlUtils::replace_all( workstr, L"SCOBCAIN" , L"(");
|
||||
XmlUtils::replace_all( workstr, L"SCOBCAOUT" , L")");
|
||||
|
||||
XmlUtils::replace_all( workstr, L"KVADRATIN" , L"[");
|
||||
XmlUtils::replace_all( workstr, L"KVADRATOUT", L"]");
|
||||
|
||||
XmlUtils::replace_all( workstr, L"PROBEL" , L" ");
|
||||
XmlUtils::replace_all( workstr, L"KAVYCHKA" , L"\"");
|
||||
odf_replace_tmp_back(workstr);
|
||||
|
||||
return workstr;
|
||||
}
|
||||
|
||||
@ -69,9 +69,42 @@ public:
|
||||
|
||||
bool oox2odf_converter::Impl::isFindBaseCell_ = false;
|
||||
std::wstring oox2odf_converter::Impl::table_name_ = L"";
|
||||
void oox_replace_tmp_back(std::wstring &expr)
|
||||
{
|
||||
XmlUtils::replace_all( expr, L"ТОСHKA", L".");
|
||||
XmlUtils::replace_all( expr, L"VOSKL", L"!");
|
||||
|
||||
XmlUtils::replace_all( expr, L"SCOBCAIN", L"(");
|
||||
XmlUtils::replace_all( expr, L"SCOBCAOUT", L")");
|
||||
|
||||
XmlUtils::replace_all( expr, L"KVADRATIN", L"[");
|
||||
XmlUtils::replace_all( expr, L"KVADRATOUT", L"]");
|
||||
|
||||
XmlUtils::replace_all( expr, L"PROBEL", L" ");
|
||||
XmlUtils::replace_all( expr, L"APOSTROF", L"'");
|
||||
XmlUtils::replace_all( expr, L"KAVYCHKA", L"\"");
|
||||
}
|
||||
|
||||
void oox_replace_tmp(std::wstring &expr)
|
||||
{
|
||||
XmlUtils::replace_all( expr, L".", L"ТОСHKA");
|
||||
XmlUtils::replace_all( expr, L"!", L"VOSKL");
|
||||
|
||||
XmlUtils::replace_all( expr, L"(", L"SCOBCAIN");
|
||||
XmlUtils::replace_all( expr, L")", L"SCOBCAOUT");
|
||||
|
||||
XmlUtils::replace_all( expr, L"[", L"KVADRATIN");
|
||||
XmlUtils::replace_all( expr, L"]", L"KVADRATOUT");
|
||||
|
||||
XmlUtils::replace_all( expr, L" ", L"PROBEL");
|
||||
XmlUtils::replace_all( expr, L"'", L"APOSTROF");
|
||||
XmlUtils::replace_all( expr, L"\"", L"KAVYCHKA");
|
||||
}
|
||||
void oox2odf_converter::Impl::replace_cells_range(std::wstring& expr)
|
||||
{
|
||||
if ((0 == expr.find(L"KAVYCHKA")) && (expr.length() - 8 == expr.rfind(L"KAVYCHKA") ))
|
||||
return;
|
||||
|
||||
boost::wregex re(L"([:$!])+");
|
||||
|
||||
boost::wsmatch result;
|
||||
@ -79,7 +112,7 @@ void oox2odf_converter::Impl::replace_cells_range(std::wstring& expr)
|
||||
|
||||
if (b)
|
||||
{
|
||||
boost::wregex re1(L"(\\$?\\w+\\!)?([a-zA-Z$]*\\d*)\\:?([a-zA-Z$]*\\d*)?");
|
||||
boost::wregex re1(L"(\\$?\\w+\\!)?([\\w^0-9$]*\\d*)\\:?([\\w^0-9$]*\\d*)?");
|
||||
// $ Sheet2 ! $ A1 : $ B5
|
||||
// $ Sheet2 ! $ A : $ A
|
||||
// $ Sheet2 ! $ 1 : $ 1
|
||||
@ -111,8 +144,12 @@ std::wstring oox2odf_converter::Impl::replace_cells_range_formater1(boost::wsmat
|
||||
|
||||
std::wstring c1 = what[2].str();
|
||||
std::wstring c2 = what[3].str();
|
||||
|
||||
if (!c1.empty() || !c2.empty() || !sheet.empty())
|
||||
|
||||
if ((0 == c1.find(L"KAVYCHKA")) && (c1.length() - 8 == c1.rfind(L"KAVYCHKA") ))
|
||||
{
|
||||
return c1;
|
||||
}
|
||||
else if (!c1.empty() || !c2.empty() || !sheet.empty())
|
||||
{
|
||||
XmlUtils::replace_all( sheet, L"!", L"");
|
||||
|
||||
@ -122,9 +159,8 @@ std::wstring oox2odf_converter::Impl::replace_cells_range_formater1(boost::wsmat
|
||||
}
|
||||
if (!sheet.empty() && (std::wstring::npos != c1.find(L"$"))) sheet = L"$" + sheet;
|
||||
|
||||
s = std::wstring(L"[") + sheet + L"." +
|
||||
c1 +
|
||||
(c2.empty() ? L"" : (L":" + sheet + L"." + c2) ) + std::wstring(L"]");
|
||||
|
||||
s = L"[" + sheet + L"." + c1 + (c2.empty() ? L"" : (L":" + sheet + L"." + c2)) + std::wstring(L"]");
|
||||
}
|
||||
return s;
|
||||
}
|
||||
@ -178,27 +214,22 @@ void oox2odf_converter::Impl::replace_named_ref(std::wstring & expr)
|
||||
replace_vertical(workstr);
|
||||
replace_semicolons(workstr);
|
||||
|
||||
std::wstring res1 = boost::regex_replace(
|
||||
workstr,
|
||||
boost::wregex(L"('.*?')|(\".*?\")"),
|
||||
&oox2odf_converter::Impl::convert_scobci, boost::match_default | boost::format_all);
|
||||
|
||||
std::vector<std::wstring> distance;
|
||||
|
||||
boost::algorithm::split(distance,workstr, boost::algorithm::is_any_of(L";"), boost::algorithm::token_compress_on);
|
||||
boost::algorithm::split(distance, res1, boost::algorithm::is_any_of(L";"), boost::algorithm::token_compress_on);
|
||||
|
||||
for (size_t i = 0; i < distance.size(); i++)
|
||||
{
|
||||
std::wstring &d = distance[i];
|
||||
|
||||
XmlUtils::replace_all( d, L"(", L"SCOBCAIN");
|
||||
XmlUtils::replace_all( d, L")", L"SCOBCAOUT");
|
||||
XmlUtils::replace_all( d, L" ", L"PROBEL");
|
||||
XmlUtils::replace_all( d, L"'", L"APOSTROF");
|
||||
XmlUtils::replace_all( d, L"\"", L"KAVYCHKA");
|
||||
|
||||
replace_cells_range(d);
|
||||
|
||||
XmlUtils::replace_all( d, L"SCOBCAIN", L"(");
|
||||
XmlUtils::replace_all( d, L"SCOBCAOUT", L")");
|
||||
XmlUtils::replace_all( d, L"PROBEL", L" ");
|
||||
XmlUtils::replace_all( d, L"APOSTROF", L"'");
|
||||
XmlUtils::replace_all( d, L"KAVYCHKA", L"\"");
|
||||
oox_replace_tmp_back(d);
|
||||
|
||||
out = out + d + std::wstring(L";");
|
||||
}
|
||||
@ -209,11 +240,7 @@ void oox2odf_converter::Impl::replace_named_ref(std::wstring & expr)
|
||||
|
||||
if (table_name_.empty() == false)
|
||||
{
|
||||
XmlUtils::replace_all( table_name_, L"SCOBCAIN", L"(");
|
||||
XmlUtils::replace_all( table_name_, L"SCOBCAOUT", L")");
|
||||
XmlUtils::replace_all( table_name_, L"PROBEL", L" ");
|
||||
XmlUtils::replace_all( table_name_, L"APOSTROF", L"'");
|
||||
XmlUtils::replace_all( table_name_, L"KAVYCHKA", L"\"");
|
||||
oox_replace_tmp_back(table_name_);
|
||||
}
|
||||
}
|
||||
|
||||
@ -370,32 +397,19 @@ std::wstring replace_(boost::wsmatch const & what)
|
||||
|
||||
return L"";
|
||||
}
|
||||
|
||||
std::wstring oox2odf_converter::Impl::convert_scobci(boost::wsmatch const & what)
|
||||
{
|
||||
if (what[1].matched)
|
||||
{
|
||||
std::wstring inner = what[1].str();
|
||||
XmlUtils::replace_all( inner, L"(", L"SCOBCAIN");
|
||||
XmlUtils::replace_all( inner, L")", L"SCOBCAOUT");
|
||||
|
||||
XmlUtils::replace_all( inner, L"[", L"KVADRATIN");
|
||||
XmlUtils::replace_all( inner, L"]", L"KVADRATOUT");
|
||||
|
||||
XmlUtils::replace_all( inner, L" ", L"PROBEL");
|
||||
XmlUtils::replace_all( inner, L"'", L"APOSTROF");
|
||||
oox_replace_tmp(inner);
|
||||
return inner;
|
||||
}
|
||||
else if (what[2].matched)
|
||||
{
|
||||
std::wstring inner = what[2].str();
|
||||
XmlUtils::replace_all( inner, L"(", L"SCOBCAIN");
|
||||
XmlUtils::replace_all( inner, L")", L"SCOBCAOUT");
|
||||
|
||||
XmlUtils::replace_all( inner, L"[", L"KVADRATIN");
|
||||
XmlUtils::replace_all( inner, L"]", L"KVADRATOUT");
|
||||
|
||||
XmlUtils::replace_all( inner, L" ", L"PROBEL");
|
||||
XmlUtils::replace_all( inner, L"\"", L"KAVYCHKA");
|
||||
oox_replace_tmp(inner);
|
||||
return inner;
|
||||
}
|
||||
else if (what[3].matched)
|
||||
@ -444,13 +458,13 @@ std::wstring oox2odf_converter::Impl::convert(const std::wstring& expr)
|
||||
if (is_forbidden1(expr))
|
||||
return L"NULLFORMULA";
|
||||
|
||||
std::wstring workstr = expr;
|
||||
std::wstring workstr = expr;
|
||||
replace_cells_range(workstr);
|
||||
replace_vertical(workstr);
|
||||
replace_semicolons(workstr);
|
||||
return workstr;
|
||||
}
|
||||
// of:=(Formula) -> (Formula)
|
||||
// (Formula) -> of:=(Formula)
|
||||
std::wstring oox2odf_converter::Impl::convert_formula(const std::wstring & expr)
|
||||
{
|
||||
std::wstring workstr = expr;
|
||||
@ -462,9 +476,13 @@ std::wstring oox2odf_converter::Impl::convert_formula(const std::wstring & expr)
|
||||
|
||||
std::wstring res = boost::regex_replace(
|
||||
res1,
|
||||
boost::wregex(L"(?!([a-zA-Z]+\\d*\\())(([a-zA-Z]+\\!)?\\$?[a-zA-Z]*\\$?\\d*(\\:\\$?[a-zA-Z]*\\$?\\d*){0,1})"),
|
||||
boost::wregex(L"(?!([\\w^0-9]+\\d*\\())(([\\w^0-9]+\\!)?\\$?[\\w^0-9]*\\$?\\d*(\\:\\$?[\\w^0-9]*\\$?\\d*){0,1})"),
|
||||
&oox2odf_converter::Impl::replace_arguments, boost::match_default | boost::format_all);
|
||||
|
||||
//SUBTOTAL(109,Expense31[Amount])
|
||||
XmlUtils::replace_all( res, L"[", L"KVADRATIN");
|
||||
XmlUtils::replace_all( res, L"]", L"KVADRATOUT");
|
||||
|
||||
if (res1 == res)
|
||||
{
|
||||
XmlUtils::replace_all( res1, L"KAVYCHKA", L"\""); //IMCONJUGATE_emb.xlsx
|
||||
@ -476,16 +494,7 @@ std::wstring oox2odf_converter::Impl::convert_formula(const std::wstring & expr)
|
||||
boost::match_default | boost::format_all);
|
||||
}
|
||||
|
||||
XmlUtils::replace_all( res, L"SCOBCAIN", L"(");
|
||||
XmlUtils::replace_all( res, L"SCOBCAOUT", L")");
|
||||
|
||||
XmlUtils::replace_all( res, L"KVADRATIN", L"[");
|
||||
XmlUtils::replace_all( res, L"KVADRATOUT", L"]");
|
||||
|
||||
|
||||
XmlUtils::replace_all( res, L"APOSTROF", L"'");
|
||||
|
||||
XmlUtils::replace_all( res, L"KAVYCHKA", L"\"");
|
||||
oox_replace_tmp_back(res);
|
||||
|
||||
replace_vertical(res);
|
||||
replace_semicolons(res);
|
||||
@ -494,17 +503,7 @@ std::wstring oox2odf_converter::Impl::convert_formula(const std::wstring & expr)
|
||||
|
||||
if (table_name_.empty() == false)
|
||||
{
|
||||
XmlUtils::replace_all( table_name_, L"SCOBCAIN", L"(");
|
||||
XmlUtils::replace_all( table_name_, L"SCOBCAOUT", L")");
|
||||
|
||||
XmlUtils::replace_all( table_name_, L"KVADRATIN", L"[");
|
||||
XmlUtils::replace_all( table_name_, L"KVADRATOUT", L"]");
|
||||
|
||||
|
||||
XmlUtils::replace_all( table_name_, L"APOSTROF", L"'");
|
||||
|
||||
XmlUtils::replace_all( table_name_, L"KAVYCHKA", L"\"");
|
||||
XmlUtils::replace_all( table_name_, L"PROBEL", L" ");
|
||||
oox_replace_tmp_back(table_name_);
|
||||
}
|
||||
|
||||
return std::wstring(L"of:=") + res;
|
||||
@ -533,12 +532,7 @@ std::wstring oox2odf_converter::Impl::convert_conditional_formula(const std::wst
|
||||
|
||||
}
|
||||
|
||||
XmlUtils::replace_all( res, L"SCOBCAIN", L"(");
|
||||
XmlUtils::replace_all( res, L"SCOBCAOUT", L")");
|
||||
|
||||
XmlUtils::replace_all( res, L"APOSTROF", L"'");
|
||||
|
||||
XmlUtils::replace_all( res, L"KAVYCHKA", L"\"");
|
||||
oox_replace_tmp_back( res);
|
||||
|
||||
replace_vertical(res);
|
||||
replace_semicolons(res);
|
||||
@ -654,8 +648,6 @@ std::wstring oox2odf_converter::get_table_name()
|
||||
{
|
||||
return impl_->table_name_;
|
||||
}
|
||||
|
||||
|
||||
std::wstring oox2odf_converter::convert_ref(std::wstring const & expr)
|
||||
{
|
||||
std::wstring workstr = expr;
|
||||
|
||||
@ -108,6 +108,8 @@ static const std::wstring _ooxShapeType[]=
|
||||
L"custGeom",//uses sub-sub type,
|
||||
L"polygon",
|
||||
L"roundRect",
|
||||
L"bentConnector3",
|
||||
L"curvedConnector3"
|
||||
};
|
||||
|
||||
|
||||
@ -243,16 +245,16 @@ void oox_serialize_aLst(std::wostream & strm, const std::vector<odf_reader::_pro
|
||||
{
|
||||
names.push_back(L"adj1");
|
||||
}
|
||||
else if (std::wstring::npos != shapeGeomPreset.find(L"decagon"))
|
||||
{
|
||||
names.push_back(L"vf");
|
||||
}
|
||||
else if (std::wstring::npos != shapeGeomPreset.find(L"heptagon") ||
|
||||
std::wstring::npos != shapeGeomPreset.find(L"pentagon"))
|
||||
{
|
||||
names.push_back(L"hf");
|
||||
names.push_back(L"vf");
|
||||
}
|
||||
//else if (std::wstring::npos != shapeGeomPreset.find(L"decagon"))
|
||||
//{
|
||||
// names.push_back(L"vf");
|
||||
//}
|
||||
//else if (std::wstring::npos != shapeGeomPreset.find(L"heptagon") ||
|
||||
// std::wstring::npos != shapeGeomPreset.find(L"pentagon"))
|
||||
//{
|
||||
// names.push_back(L"hf");
|
||||
// names.push_back(L"vf");
|
||||
//}
|
||||
else if (std::wstring::npos != shapeGeomPreset.find(L"hexagon"))
|
||||
{
|
||||
names.push_back(L"adj");
|
||||
@ -418,7 +420,7 @@ void _oox_drawing::serialize_shape(std::wostream & strm)
|
||||
shapeGeomPreset = L"rect";
|
||||
}
|
||||
}
|
||||
else if (sub_type < 10 && sub_type >= 0)
|
||||
else if (sub_type <= 12 && sub_type >= 0)
|
||||
{
|
||||
shapeGeomPreset = _ooxShapeType[sub_type]; //odf -> oox
|
||||
}
|
||||
|
||||
@ -37,9 +37,9 @@
|
||||
namespace cpdoccore {
|
||||
namespace oox {
|
||||
|
||||
oox_bitmap_fill::oox_bitmap_fill() : name_space(L"a"), bStretch(false), bCrop(false), bTile(false), isInternal(true)
|
||||
oox_bitmap_fill::oox_bitmap_fill() : name_space(L"a"), bStretch(false), bCrop(false), bTile(false), isInternal(true), bGrayscale(false)
|
||||
{
|
||||
memset(cropRect,0,sizeof(double)*4);
|
||||
memset(cropRect, 0, sizeof(double)*4);
|
||||
}
|
||||
|
||||
oox_bitmap_fill_ptr oox_bitmap_fill::create(){return boost::make_shared<oox_bitmap_fill>();}
|
||||
@ -189,7 +189,11 @@ void oox_serialize_bitmap_fill(std::wostream & strm, const _oox_fill & val, cons
|
||||
{
|
||||
CP_XML_ATTR2(ns_att + L"amt", (int)(*val.opacity * 1000));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (val.bitmap->bGrayscale)
|
||||
{
|
||||
CP_XML_NODE(ns + L":grayscl");
|
||||
}
|
||||
}
|
||||
if (val.bitmap->bCrop)
|
||||
{
|
||||
|
||||
@ -70,6 +70,7 @@ namespace oox {
|
||||
bool bStretch;
|
||||
bool bCrop;
|
||||
bool bTile;
|
||||
bool bGrayscale;
|
||||
|
||||
double cropRect[4];//0-left, 1 -top, 2- right, 3 - bottom
|
||||
|
||||
|
||||
@ -212,7 +212,7 @@ void pptx_serialize_shape(std::wostream & strm, _pptx_drawing & val)
|
||||
}
|
||||
CP_XML_NODE(L"p:cNvSpPr")//non visual properies (собственно тока 1 там)
|
||||
{
|
||||
if (val.sub_type==1 || val.sub_type==2)CP_XML_ATTR(L"txBox", 1);
|
||||
if (val.sub_type == 1 || val.sub_type == 2)CP_XML_ATTR(L"txBox", 1);
|
||||
CP_XML_NODE(L"a:spLocks")
|
||||
{
|
||||
CP_XML_ATTR(L"noGrp", 1);
|
||||
|
||||
@ -538,8 +538,11 @@ void pptx_slide_context::Impl::process_image(drawing_object_description& obj, _p
|
||||
drawing.fill.bitmap = oox_bitmap_fill::create();
|
||||
drawing.fill.type = 2;
|
||||
|
||||
_CP_OPT(std::wstring) sTextContent;
|
||||
_CP_OPT(std::wstring) sTextContent, sColorMode;
|
||||
|
||||
GetProperty(obj.additional_, L"text-content", sTextContent);
|
||||
GetProperty(obj.additional_, L"color-mode", sColorMode);
|
||||
|
||||
if (sTextContent)//в ms office на картинке нельзя сделать надпись - меняем тип на рект с заливкой картинкой
|
||||
{
|
||||
drawing.type = typeShape;
|
||||
@ -549,6 +552,9 @@ void pptx_slide_context::Impl::process_image(drawing_object_description& obj, _p
|
||||
std::wstring fileName = odfPacket_ + FILE_SEPARATOR_STR + obj.xlink_href_;
|
||||
drawing.fill.bitmap->bCrop = odf_reader::parse_clipping(obj.clipping_string_, fileName, drawing.fill.bitmap->cropRect, NULL);
|
||||
drawing.fill.bitmap->bStretch = true;
|
||||
|
||||
if ((sColorMode) && (*sColorMode == L"greyscale"))
|
||||
drawing.fill.bitmap->bGrayscale = true;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
std::wstring ref;/// это ссылка на выходной внешний объект
|
||||
|
||||
@ -36,8 +36,10 @@
|
||||
#include <vector>
|
||||
#include <boost/lexical_cast.hpp>
|
||||
#include <xml/simple_xml_writer.h>
|
||||
#include "../../../Common/DocxFormat/Source/XML/Utils.h"
|
||||
|
||||
#include "../formulasconvert/formulasconvert.h"
|
||||
|
||||
namespace cpdoccore {
|
||||
namespace oox {
|
||||
|
||||
@ -148,7 +150,10 @@ public:
|
||||
//CP_XML_ATTR(L"aboveAverage" , 0);
|
||||
if (c.rules[j].type == 1)
|
||||
{
|
||||
CP_XML_ATTR(L"type", *c.rules[j].formula_type);
|
||||
if (c.rules[j].formula_type)
|
||||
CP_XML_ATTR(L"type", *c.rules[j].formula_type);
|
||||
else
|
||||
CP_XML_ATTR(L"type", L"cellIs");
|
||||
if ((c.rules[j].formula) && (!c.rules[j].formula->empty()))
|
||||
{
|
||||
CP_XML_NODE(L"formula")
|
||||
@ -177,13 +182,11 @@ public:
|
||||
{
|
||||
c.rules[j].cfvo[k].serialize(CP_XML_STREAM());
|
||||
}
|
||||
if (c.rules[j].color.size() > 0)
|
||||
|
||||
CP_XML_NODE(L"color")
|
||||
{
|
||||
CP_XML_NODE(L"color")
|
||||
{
|
||||
CP_XML_ATTR(L"rgb", c.rules[j].color[0]);
|
||||
}
|
||||
}
|
||||
CP_XML_ATTR(L"rgb", !c.rules[j].color.empty() ? c.rules[j].color[0] : L"FF000000");
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (c.rules[j].type == 3)
|
||||
@ -245,7 +248,7 @@ void xlsx_conditionalFormatting_context::add(std::wstring ref)
|
||||
formulasconvert::odf2oox_converter converter;
|
||||
impl_->conditionalFormattings_.push_back(conditionalFormatting());
|
||||
|
||||
impl_->conditionalFormattings_.back().ref = converter.convert_named_ref(ref, false, L";");
|
||||
impl_->conditionalFormattings_.back().ref = converter.convert_named_ref(ref, false, L" ");
|
||||
}
|
||||
|
||||
void xlsx_conditionalFormatting_context::add_rule(int type)
|
||||
@ -260,7 +263,21 @@ void xlsx_conditionalFormatting_context::set_formula(std::wstring f)
|
||||
int pos = -1;
|
||||
std::wstring val;
|
||||
|
||||
if ( 0 <= (pos = f.find(L"formula-is(")))
|
||||
if ( f == L"unique")
|
||||
{
|
||||
impl_->conditionalFormattings_.back().rules.back().formula_type = L"uniqueValues";
|
||||
impl_->conditionalFormattings_.back().rules.back().formula = L"0";
|
||||
}
|
||||
else if ( f == L"duplicate")
|
||||
{
|
||||
impl_->conditionalFormattings_.back().rules.back().formula_type = L"duplicateValues";
|
||||
impl_->conditionalFormattings_.back().rules.back().formula = L"0";
|
||||
}
|
||||
else if ( f == L"above-average")
|
||||
{
|
||||
impl_->conditionalFormattings_.back().rules.back().formula_type = L"aboveAverage";
|
||||
}
|
||||
else if ( 0 <= (pos = f.find(L"formula-is(")))
|
||||
{
|
||||
impl_->conditionalFormattings_.back().rules.back().formula_type = L"expression";
|
||||
val = f.substr(11, f.size() - 12);
|
||||
@ -292,6 +309,45 @@ void xlsx_conditionalFormatting_context::set_formula(std::wstring f)
|
||||
{
|
||||
impl_->conditionalFormattings_.back().rules.back().formula_type = L"duplicateValues";
|
||||
}
|
||||
else if (0 <= (pos = f.find(L"contains-text")))
|
||||
{
|
||||
impl_->conditionalFormattings_.back().rules.back().formula_type = L"containsText";
|
||||
|
||||
std::wstring text = f.substr(14, f.length() - 15);
|
||||
|
||||
if (std::wstring::npos != text.find(L"IF(") ||
|
||||
std::wstring::npos != text.find(L"AND(") ||
|
||||
std::wstring::npos != text.find(L"NOT(") ||
|
||||
std::wstring::npos != text.find(L"ISERROR(") ||
|
||||
std::wstring::npos != text.find(L"SEARCH("))
|
||||
{
|
||||
impl_->conditionalFormattings_.back().rules.back().text = L"";
|
||||
impl_->conditionalFormattings_.back().rules.back().formula = converter.convert(text);
|
||||
}
|
||||
else if (std::wstring::npos != text.find(L"LEN(TRIM(") &&
|
||||
std::wstring::npos != text.find(L"=0"))
|
||||
{
|
||||
impl_->conditionalFormattings_.back().rules.back().text = L"";
|
||||
impl_->conditionalFormattings_.back().rules.back().formula = L"0";
|
||||
}
|
||||
else
|
||||
{
|
||||
impl_->conditionalFormattings_.back().rules.back().operator_ = L"containsText";
|
||||
if ( 0 == text.find(L"\"") && text.length() - 1 == text.rfind(L"\""))
|
||||
{
|
||||
text = text.substr(1, text.length() - 2);
|
||||
}
|
||||
std::wstring ref = impl_->conditionalFormattings_.back().ref;
|
||||
|
||||
size_t pos;
|
||||
if ((pos = ref.find(L":")) != std::wstring::npos)
|
||||
{
|
||||
ref = ref.substr(0, pos);
|
||||
}
|
||||
impl_->conditionalFormattings_.back().rules.back().text = text;
|
||||
impl_->conditionalFormattings_.back().rules.back().formula = L"NOT(ISERROR(SEARCH(\"" + text + L"\"," + ref + L")))";
|
||||
}
|
||||
}
|
||||
else if (0 <= (pos = f.find(L"top")))
|
||||
{
|
||||
impl_->conditionalFormattings_.back().rules.back().formula_type = L"top10";
|
||||
@ -302,14 +358,10 @@ void xlsx_conditionalFormatting_context::set_formula(std::wstring f)
|
||||
if (0 <= (pos = f.find(L"(")))
|
||||
{
|
||||
val = f.substr(pos + 1, f.length() - pos - 2);
|
||||
impl_->conditionalFormattings_.back().rules.back().rank = boost::lexical_cast<int>(val);
|
||||
if (!val.empty())
|
||||
impl_->conditionalFormattings_.back().rules.back().rank = boost::lexical_cast<int>(val);
|
||||
}
|
||||
}
|
||||
else if (0 <= (pos = f.find(L"contains-text")))
|
||||
{
|
||||
impl_->conditionalFormattings_.back().rules.back().formula_type = L"containsText";
|
||||
impl_->conditionalFormattings_.back().rules.back().text = f.substr(15, f.length() - 17);
|
||||
}
|
||||
else
|
||||
{
|
||||
impl_->conditionalFormattings_.back().rules.back().formula_type = L"cellIs";
|
||||
@ -361,6 +413,8 @@ void xlsx_conditionalFormatting_context::set_formula(std::wstring f)
|
||||
impl_->conditionalFormattings_.back().rules.back().operator_ = L"between";
|
||||
val = f.substr(8, f.length() - 9);
|
||||
|
||||
XmlUtils::replace_all(val, L"(", L"");
|
||||
XmlUtils::replace_all(val, L")", L"");
|
||||
if (0 <= (pos = val.find(L",")))
|
||||
{
|
||||
impl_->conditionalFormattings_.back().rules.back().formula2 = converter.convert_named_expr( val.substr(pos + 1) );
|
||||
@ -398,7 +452,11 @@ void xlsx_conditionalFormatting_context::add_sfv(int type, std::wstring value)
|
||||
|
||||
impl_->conditionalFormattings_.back().rules.back().formula.reset();
|
||||
}
|
||||
else if (!value.empty()) cfvo.val = value;
|
||||
else
|
||||
{
|
||||
if (!value.empty()) cfvo.val = value;
|
||||
else cfvo.val = L"0";
|
||||
}
|
||||
|
||||
impl_->conditionalFormattings_.back().rules.back().cfvo.push_back(cfvo);
|
||||
}
|
||||
|
||||
@ -202,20 +202,25 @@ void xlsx_drawing_context::end_group()
|
||||
{
|
||||
if (impl_->groups_.size() < 1) return;
|
||||
|
||||
_rect & group_rect = impl_->groups_.back()->svg_rect_.get();
|
||||
|
||||
group_rect.cy -= group_rect.y;
|
||||
group_rect.cx -= group_rect.x;
|
||||
|
||||
for (size_t i = 0; i < impl_->groups_.back()->child_objects_.size(); i++)
|
||||
if (impl_->groups_.back()->svg_rect_)
|
||||
{
|
||||
_rect & r = impl_->groups_.back()->child_objects_[i].svg_rect_.get();
|
||||
|
||||
r.y -= group_rect.y;
|
||||
r.x -= group_rect.x;
|
||||
_rect & group_rect = impl_->groups_.back()->svg_rect_.get();
|
||||
|
||||
group_rect.cy -= group_rect.y;
|
||||
group_rect.cx -= group_rect.x;
|
||||
|
||||
for (size_t i = 0; i < impl_->groups_.back()->child_objects_.size(); i++)
|
||||
{
|
||||
if (!impl_->groups_.back()->child_objects_[i].svg_rect_) continue;
|
||||
|
||||
_rect & r = impl_->groups_.back()->child_objects_[i].svg_rect_.get();
|
||||
|
||||
r.y -= group_rect.y;
|
||||
r.x -= group_rect.x;
|
||||
}
|
||||
}
|
||||
|
||||
if (impl_->groups_.back()->in_group_)
|
||||
if (impl_->groups_.back()->in_group_ && impl_->groups_.back()->svg_rect_)
|
||||
{
|
||||
_rect & objct_rect = impl_->groups_.back()->svg_rect_.get();
|
||||
|
||||
@ -251,7 +256,8 @@ void xlsx_drawing_context::start_drawing(std::wstring const & name)
|
||||
|
||||
void xlsx_drawing_context::end_drawing()
|
||||
{
|
||||
if (impl_->object_description_.in_group_)
|
||||
if (impl_->object_description_.in_group_ &&
|
||||
impl_->object_description_.svg_rect_)
|
||||
{
|
||||
_rect & objct_rect = impl_->object_description_.svg_rect_.get();
|
||||
_rect & group_rect = impl_->groups_.back()->svg_rect_.get();
|
||||
@ -533,8 +539,10 @@ void xlsx_drawing_context::process_image(drawing_object_description & obj, _xlsx
|
||||
drawing.fill.bitmap = oox_bitmap_fill::create();
|
||||
drawing.fill.type = 2;
|
||||
}
|
||||
_CP_OPT(std::wstring) sTextContent;
|
||||
GetProperty(obj.additional_,L"text-content",sTextContent);
|
||||
_CP_OPT(std::wstring) sTextContent, sColorMode;
|
||||
|
||||
GetProperty(obj.additional_, L"text-content", sTextContent);
|
||||
GetProperty(obj.additional_, L"color-mode", sColorMode);
|
||||
|
||||
if (sTextContent)//в ms office на картинке нельзя сделать надпись - меняем тип на рект с заливкой картинкой
|
||||
{
|
||||
@ -546,6 +554,9 @@ void xlsx_drawing_context::process_image(drawing_object_description & obj, _xlsx
|
||||
drawing.fill.bitmap->bCrop = odf_reader::parse_clipping(obj.clipping_string_, fileName, drawing.fill.bitmap->cropRect, NULL/*applicationFonts_*/);
|
||||
drawing.fill.bitmap->bStretch = true;
|
||||
|
||||
if ((sColorMode) && (*sColorMode == L"greyscale"))
|
||||
drawing.fill.bitmap->bGrayscale = true;
|
||||
|
||||
std::wstring ref;/// это ссылка на выходной внешний объект
|
||||
bool isMediaInternal = false;
|
||||
|
||||
|
||||
@ -52,6 +52,7 @@ public:
|
||||
std::wstringstream hyperlinks_;
|
||||
std::wstringstream comments_;
|
||||
std::wstringstream sort_;
|
||||
std::wstringstream tableParts_;
|
||||
std::wstringstream autofilter_;
|
||||
std::wstringstream conditionalFormatting_;
|
||||
std::wstringstream picture_background_;
|
||||
@ -99,16 +100,18 @@ std::wostream & xlsx_xml_worksheet::sheetFormat()
|
||||
{
|
||||
return impl_->sheetFormat_;
|
||||
}
|
||||
|
||||
std::wostream & xlsx_xml_worksheet::sheetData()
|
||||
{
|
||||
return impl_->sheetData_;
|
||||
}
|
||||
|
||||
std::wostream & xlsx_xml_worksheet::mergeCells()
|
||||
{
|
||||
return impl_->mergeCells_;
|
||||
}
|
||||
std::wostream & xlsx_xml_worksheet::tableParts()
|
||||
{
|
||||
return impl_->tableParts_;
|
||||
}
|
||||
std::wostream & xlsx_xml_worksheet::conditionalFormatting()
|
||||
{
|
||||
return impl_->conditionalFormatting_;
|
||||
@ -215,6 +218,13 @@ void xlsx_xml_worksheet::write_to(std::wostream & strm)
|
||||
CP_XML_ATTR(L"r:id",impl_->vml_drawingId_);
|
||||
}
|
||||
}
|
||||
if (!impl_->tableParts_.str().empty())
|
||||
{
|
||||
CP_XML_NODE(L"tableParts")
|
||||
{
|
||||
CP_XML_STREAM() << impl_->tableParts_.str();
|
||||
}
|
||||
}
|
||||
if (!impl_->ole_objects_.str().empty())
|
||||
{
|
||||
CP_XML_NODE(L"oleObjects")
|
||||
|
||||
@ -60,6 +60,7 @@ public:
|
||||
std::wostream & drawing();
|
||||
std::wostream & comments();
|
||||
std::wostream & autofilter();
|
||||
std::wostream & tableParts();
|
||||
std::wostream & conditionalFormatting();
|
||||
std::wostream & picture_background();
|
||||
std::wostream & dataValidations();
|
||||
|
||||
@ -244,6 +244,10 @@ void xl_files::write(const std::wstring & RootPath)
|
||||
{
|
||||
charts_files_.set_main_document(get_main_document());
|
||||
charts_files_.write(path);
|
||||
}
|
||||
{
|
||||
table_part_files_.set_main_document(get_main_document());
|
||||
table_part_files_.write(path);
|
||||
}
|
||||
if (drawings_)
|
||||
{
|
||||
@ -322,6 +326,10 @@ void xl_files::add_pivot_table(pivot_table_content_ptr pivot_table)
|
||||
{
|
||||
pivot_table_files_.add_pivot_table(pivot_table);
|
||||
}
|
||||
void xl_files::add_table_part(const std::wstring &content)
|
||||
{
|
||||
table_part_files_.add_table_part(content);
|
||||
}
|
||||
void xl_files::add_jsaProject(const std::string &content)
|
||||
{
|
||||
jsaProject_ = package::simple_element::create(L"jsaProject.bin", content);
|
||||
@ -418,20 +426,42 @@ void xl_pivot_table_files::write(const std::wstring & RootPath)
|
||||
}
|
||||
}
|
||||
//------------------------------------------------------------------------------------------------------
|
||||
void xl_table_part_files::add_table_part(const std::wstring & table_part)
|
||||
{
|
||||
table_parts_.push_back(table_part);
|
||||
}
|
||||
void xl_table_part_files::write(const std::wstring & RootPath)
|
||||
{
|
||||
if (table_parts_.empty()) return;
|
||||
|
||||
std::wstring path = RootPath + FILE_SEPARATOR_STR + L"tables";
|
||||
NSDirectory::CreateDirectory(path.c_str());
|
||||
|
||||
for (size_t i = 0; i < table_parts_.size(); i++)
|
||||
{
|
||||
const std::wstring fileName = std::wstring(L"table") + std::to_wstring(i + 1) + L".xml";
|
||||
content_type * contentTypes = this->get_main_document()->get_content_types_file().content();
|
||||
|
||||
static const std::wstring kWSConType = L"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml";
|
||||
contentTypes->add_override(std::wstring(L"/xl/tables/") + fileName, kWSConType);
|
||||
|
||||
package::simple_element(fileName, table_parts_[i]).write(path);
|
||||
}
|
||||
}
|
||||
//------------------------------------------------------------------------------------------------------
|
||||
void xl_charts_files::add_chart(chart_content_ptr chart)
|
||||
{
|
||||
charts_.push_back(chart);
|
||||
}
|
||||
void xl_charts_files::write(const std::wstring & RootPath)
|
||||
{
|
||||
if (charts_.empty()) return;
|
||||
|
||||
std::wstring path = RootPath + FILE_SEPARATOR_STR + L"charts";
|
||||
NSDirectory::CreateDirectory(path.c_str());
|
||||
|
||||
size_t count = 0;
|
||||
|
||||
for (size_t i = 0; i < charts_.size(); i++)
|
||||
{
|
||||
count++;
|
||||
const std::wstring fileName = std::wstring(L"chart") + std::to_wstring(i + 1) + L".xml";
|
||||
content_type * contentTypes = this->get_main_document()->get_content_types_file().content();
|
||||
|
||||
|
||||
@ -131,7 +131,17 @@ public:
|
||||
|
||||
};
|
||||
|
||||
class xl_table_part_files : public element
|
||||
{
|
||||
public:
|
||||
xl_table_part_files(){}
|
||||
|
||||
void add_table_part(const std::wstring & table_part);
|
||||
virtual void write(const std::wstring & RootPath);
|
||||
|
||||
std::vector<std::wstring> table_parts_;
|
||||
|
||||
};
|
||||
class xl_charts_files : public element
|
||||
{
|
||||
public:
|
||||
@ -244,6 +254,7 @@ public:
|
||||
void add_pivot_table (pivot_table_content_ptr table);
|
||||
void add_jsaProject (const std::string &content);
|
||||
void add_control_props (simple_element_ptr Element);
|
||||
void add_table_part (const std::wstring &content);
|
||||
|
||||
private:
|
||||
rels_files rels_files_;
|
||||
@ -252,7 +263,8 @@ private:
|
||||
xl_pivot_cache_files pivot_cache_files_;
|
||||
xl_pivot_table_files pivot_table_files_;
|
||||
xl_control_props_files control_props_files_;
|
||||
|
||||
xl_table_part_files table_part_files_;
|
||||
|
||||
element_ptr theme_;
|
||||
element_ptr workbook_;
|
||||
|
||||
|
||||
@ -134,10 +134,21 @@ xlsx_table_state::xlsx_table_state(xlsx_conversion_context * Context, std::wstri
|
||||
xlsx_comments_context_ (Context->get_comments_context_handle()),
|
||||
table_column_last_width_(0.0),
|
||||
in_cell(false),
|
||||
bEndTable(false)
|
||||
bEndTable_(false),
|
||||
bRTL_(false)
|
||||
|
||||
{
|
||||
memset(&group_row_,0,sizeof(_group_row));
|
||||
odf_reader::style_table_properties * table_prop = NULL;
|
||||
odf_reader::style_instance * tableStyle = context_->root()->odf_context().styleContainer().style_by_name(table_style_, odf_types::style_family::Table, false);
|
||||
|
||||
if ((tableStyle) && (tableStyle->content()))
|
||||
table_prop = tableStyle->content()->get_style_table_properties();
|
||||
|
||||
if ((table_prop) && (table_prop->content().common_writing_mode_attlist_.style_writing_mode_))
|
||||
{
|
||||
if (table_prop->content().common_writing_mode_attlist_.style_writing_mode_->get_type() == odf_types::writing_mode::RlTb)
|
||||
bRTL_ = true;
|
||||
}
|
||||
}
|
||||
|
||||
void xlsx_table_state::start_column(unsigned int repeated, const std::wstring & defaultCellStyleName)
|
||||
@ -149,6 +160,11 @@ void xlsx_table_state::start_column(unsigned int repeated, const std::wstring &
|
||||
columns_.push_back(repeated);
|
||||
}
|
||||
|
||||
void xlsx_table_state::set_rtl(bool val)
|
||||
{
|
||||
bRTL_ = val;
|
||||
}
|
||||
|
||||
unsigned int xlsx_table_state::columns_count() const
|
||||
{
|
||||
return columns_count_;
|
||||
@ -224,10 +240,10 @@ void xlsx_table_state::start_cell(size_t columnsSpanned, size_t rowsSpanned)
|
||||
xlsx_merge_cells_.add_merge(current_table_column_, current_table_row_, columnsSpanned, rowsSpanned);
|
||||
}
|
||||
|
||||
if ( current_columns_spaned() > 0 )
|
||||
{
|
||||
_CP_LOG << L"[warning] current columns spanned > 0\n";
|
||||
}
|
||||
//if ( current_columns_spaned() > 0 )
|
||||
//{
|
||||
// _CP_LOG << L"[warning] current columns spanned > 0\n";
|
||||
//}
|
||||
|
||||
columns_spanned_num_ = static_cast<int>(columnsSpanned);
|
||||
|
||||
@ -247,10 +263,10 @@ void xlsx_table_state::start_cell(size_t columnsSpanned, size_t rowsSpanned)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (rows_spanned_[current_table_column_].num() > 0)
|
||||
{
|
||||
_CP_LOG << L"[warning] current rows spanned > 0\n";
|
||||
}
|
||||
//if (rows_spanned_[current_table_column_].num() > 0)
|
||||
//{
|
||||
// _CP_LOG << L"[warning] current rows spanned > 0\n";
|
||||
//}
|
||||
rows_spanned_[current_table_column_].num(static_cast<unsigned int>(rowsSpanned));
|
||||
rows_spanned_[current_table_column_].column_spanned(static_cast<unsigned int>(columnsSpanned));
|
||||
for (size_t i = 0; i <= columns_spanned_num_; ++i)
|
||||
@ -421,6 +437,9 @@ void xlsx_table_state::serialize_table_format (std::wostream & strm)
|
||||
{
|
||||
CP_XML_ATTR(L"workbookViewId", 0);
|
||||
|
||||
if (bRTL_)
|
||||
CP_XML_ATTR(L"rightToLeft", 1);
|
||||
|
||||
std::wstring s_col, s_row;
|
||||
for (int i = 0; i < odfContext.Settings().get_table_view_count(0, tableName_); i++)
|
||||
{
|
||||
@ -458,7 +477,6 @@ void xlsx_table_state::serialize_table_format (std::wostream & strm)
|
||||
}
|
||||
}
|
||||
// -showRowColHeaders
|
||||
// -rightToLeft
|
||||
}
|
||||
|
||||
double default_height = (2 * context_->getMaxDigitSize().second * 72. / 96. * 100.) /100.;//in point size.
|
||||
|
||||
@ -53,6 +53,36 @@ typedef _CP_PTR(xlsx_table_state) xlsx_table_state_ptr;
|
||||
class xlsx_data_range;
|
||||
typedef _CP_PTR(xlsx_data_range) xlsx_data_range_ptr;
|
||||
|
||||
class xlsx_data_range_values;
|
||||
typedef _CP_PTR(xlsx_data_range_values) xlsx_data_range_values_ptr;
|
||||
|
||||
class xlsx_data_range_values
|
||||
{
|
||||
public:
|
||||
xlsx_data_range_values(size_t row, size_t col1, size_t col2) : withHeader(false), filter(false), row_header(row), start_column(col1), end_column(col2)
|
||||
{
|
||||
for (size_t i = start_column; i <= end_column; i++)
|
||||
values.push_back(L"");
|
||||
}
|
||||
|
||||
size_t row_header;
|
||||
size_t start_column;
|
||||
size_t end_column;
|
||||
|
||||
bool withHeader;
|
||||
bool filter;
|
||||
|
||||
std::vector<std::wstring> values;
|
||||
|
||||
void set_value(size_t col, size_t row, const std::wstring& value)
|
||||
{
|
||||
while (col - start_column + 1 >= values.size())
|
||||
values.push_back(L"");
|
||||
|
||||
values[col - start_column] = value;
|
||||
}
|
||||
bool in_range(size_t col, size_t row) {return (row_header == row && (col >= start_column && col <= end_column));}
|
||||
};
|
||||
|
||||
class xlsx_data_range
|
||||
{
|
||||
@ -82,6 +112,8 @@ public:
|
||||
xlsx_table_state(xlsx_conversion_context * Context, std::wstring styleName, std::wstring tableName, int tableId);
|
||||
|
||||
std::wstring current_style() const { return table_style_; }
|
||||
|
||||
void set_rtl(bool val);
|
||||
|
||||
void start_column (unsigned int repeated, const std::wstring & defaultCellStyleName);
|
||||
void start_row (const std::wstring & StyleName, const std::wstring & defaultCellStyleName);
|
||||
@ -92,8 +124,8 @@ public:
|
||||
|
||||
void add_empty_row(int count);
|
||||
|
||||
void set_end_table(){ bEndTable = true; }
|
||||
bool get_end_table(){ return bEndTable; }
|
||||
void set_end_table(){ bEndTable_ = true; }
|
||||
bool get_end_table(){ return bEndTable_; }
|
||||
|
||||
std::wstring current_row_style () const;
|
||||
std::wstring default_row_cell_style () const;
|
||||
@ -147,17 +179,18 @@ public:
|
||||
|
||||
struct _group_row
|
||||
{
|
||||
bool enabled;
|
||||
int count;
|
||||
int level;
|
||||
bool collapsed;
|
||||
bool enabled = false;
|
||||
int count = 0;
|
||||
int level = 0;
|
||||
bool collapsed = false;
|
||||
}group_row_;
|
||||
|
||||
friend class xlsx_conversion_context;
|
||||
friend class xlsx_table_context;
|
||||
|
||||
private:
|
||||
bool bEndTable;
|
||||
bool bRTL_;
|
||||
bool bEndTable_;
|
||||
xlsx_conversion_context * context_;
|
||||
|
||||
std::wstring tableName_;
|
||||
|
||||
@ -66,11 +66,11 @@ void xlsx_table_context::start_database_range(std::wstring tableName, std::wstri
|
||||
ref = convert.convert_named_ref(ref);
|
||||
|
||||
std::wstring ref1, ref2;
|
||||
int pos = ref.find(L":");
|
||||
size_t pos = ref.find(L":");
|
||||
|
||||
std::wstring xlsx_table_name;
|
||||
|
||||
if (pos >= 0)
|
||||
if (pos != std::wstring::npos)
|
||||
{
|
||||
xlsx_data_ranges_.push_back(xlsx_data_range_ptr(new xlsx_data_range()));
|
||||
xlsx_data_ranges_.back()->table_name = tableName;
|
||||
@ -90,13 +90,15 @@ void xlsx_table_context::start_database_range(std::wstring tableName, std::wstri
|
||||
|
||||
xlsx_data_ranges_.back()->ref = ref1 + L":" + ref2;
|
||||
|
||||
size_t col, row;
|
||||
size_t col1, col2, row1, row2;
|
||||
|
||||
getCellAddressInv(ref1, col, row);
|
||||
xlsx_data_ranges_.back()->cell_start = std::pair<int, int>(col,row);
|
||||
getCellAddressInv(ref1, col1, row1);
|
||||
xlsx_data_ranges_.back()->cell_start = std::pair<int, int>(col1, row1);
|
||||
|
||||
getCellAddressInv(ref2, col, row);
|
||||
xlsx_data_ranges_.back()->cell_end = std::pair<int, int>(col,row);
|
||||
getCellAddressInv(ref2, col2, row2);
|
||||
xlsx_data_ranges_.back()->cell_end = std::pair<int, int>(col2, row2);
|
||||
|
||||
xlsx_data_ranges_values_.push_back(xlsx_data_range_values_ptr(new xlsx_data_range_values(row1, col1, col2)));
|
||||
}
|
||||
|
||||
if (!xlsx_table_name.empty())
|
||||
@ -117,17 +119,42 @@ void xlsx_table_context::set_database_header (bool val)
|
||||
if (xlsx_data_ranges_.empty()) return;
|
||||
|
||||
xlsx_data_ranges_.back()->withHeader = val;
|
||||
xlsx_data_ranges_values_.back()->withHeader = val;
|
||||
}
|
||||
void xlsx_table_context::set_database_filter (bool val)
|
||||
{
|
||||
if (xlsx_data_ranges_.empty()) return;
|
||||
|
||||
xlsx_data_ranges_.back()->filter = val;
|
||||
xlsx_data_ranges_values_.back()->filter = val;
|
||||
}
|
||||
void xlsx_table_context::end_database_range()
|
||||
{
|
||||
}
|
||||
|
||||
void xlsx_table_context::set_database_range_value(int index, const std::wstring& value)
|
||||
{
|
||||
size_t col = state()->current_column();
|
||||
size_t row = state()->current_row();
|
||||
|
||||
xlsx_data_ranges_values_[index]->set_value(col, row, value);
|
||||
}
|
||||
|
||||
int xlsx_table_context::in_database_range()
|
||||
{
|
||||
int col = state()->current_column();
|
||||
int row = state()->current_row();
|
||||
|
||||
for (size_t i = 0; i < xlsx_data_ranges_values_.size(); i++)
|
||||
{
|
||||
if ((xlsx_data_ranges_values_[i]->withHeader || xlsx_data_ranges_values_[i]->filter)
|
||||
&& xlsx_data_ranges_values_[i]->in_range(col, row))
|
||||
{
|
||||
return (int)i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
void xlsx_table_context::add_database_sort(int field_number, int order)
|
||||
{
|
||||
xlsx_data_ranges_.back()->bySort.push_back(std::pair<int, bool>(field_number, order == 1 ? false : true ));
|
||||
@ -258,6 +285,83 @@ void xlsx_table_context::serialize_sort(std::wostream & _Wostream)
|
||||
xlsx_data_ranges_[it->second]->serialize_sort(_Wostream);
|
||||
}
|
||||
}
|
||||
void xlsx_table_context::serialize_tableParts(std::wostream & _Wostream, rels & Rels)
|
||||
{
|
||||
if (xlsx_data_ranges_.empty()) return;
|
||||
|
||||
std::pair<std::multimap<std::wstring, int>::iterator, std::multimap<std::wstring, int>::iterator> range;
|
||||
|
||||
range = xlsx_data_ranges_map_.equal_range(state()->tableName_);
|
||||
|
||||
for (std::multimap<std::wstring, int>::iterator it = range.first; it != range.second; ++it)
|
||||
{
|
||||
size_t id = xlsx_conversion_context_->get_table_parts_size() + 1;
|
||||
|
||||
std::wstring rId = L"tprtId" + std::to_wstring(id);
|
||||
std::wstring ref = L"../tables/table" + std::to_wstring(id) + L".xml";
|
||||
|
||||
CP_XML_WRITER(_Wostream)
|
||||
{
|
||||
CP_XML_NODE(L"tablePart")
|
||||
{
|
||||
CP_XML_ATTR(L"r:id", rId);
|
||||
}
|
||||
}
|
||||
Rels.add( relationship(rId, L"http://schemas.openxmlformats.org/officeDocument/2006/relationships/table", ref));
|
||||
|
||||
std::wstringstream strm;
|
||||
CP_XML_WRITER(strm)
|
||||
{
|
||||
CP_XML_NODE(L"table")
|
||||
{
|
||||
CP_XML_ATTR(L"xmlns", L"http://schemas.openxmlformats.org/spreadsheetml/2006/main");
|
||||
|
||||
CP_XML_ATTR(L"id", id);
|
||||
CP_XML_ATTR(L"name", xlsx_data_ranges_[it->second]->table_name);
|
||||
CP_XML_ATTR(L"displayName", xlsx_data_ranges_[it->second]->table_name);
|
||||
CP_XML_ATTR(L"ref", xlsx_data_ranges_[it->second]->ref);
|
||||
|
||||
if (xlsx_data_ranges_[it->second]->withHeader == false &&
|
||||
xlsx_data_ranges_[it->second]->filter == false)
|
||||
CP_XML_ATTR(L"headerRowCount", 0);
|
||||
|
||||
CP_XML_ATTR(L"totalsRowCount", 0);
|
||||
CP_XML_ATTR(L"totalsRowShown", 0);
|
||||
|
||||
xlsx_data_ranges_[it->second]->serialize_autofilter(CP_XML_STREAM());
|
||||
xlsx_data_ranges_[it->second]->serialize_sort(CP_XML_STREAM());
|
||||
|
||||
CP_XML_NODE(L"tableColumns")
|
||||
{
|
||||
CP_XML_ATTR(L"count", xlsx_data_ranges_[it->second]->cell_end.first -
|
||||
xlsx_data_ranges_[it->second]->cell_start.first + 1);
|
||||
|
||||
for (int id = 0, i = xlsx_data_ranges_[it->second]->cell_start.first; i <= xlsx_data_ranges_[it->second]->cell_end.first; i++, id++)
|
||||
{
|
||||
CP_XML_NODE(L"tableColumn")
|
||||
{
|
||||
std::wstring column_name = xlsx_data_ranges_values_[it->second]->values[id];
|
||||
if (column_name.empty())
|
||||
{
|
||||
column_name = L"Column_" + std::to_wstring(id + 1);
|
||||
}
|
||||
CP_XML_ATTR(L"id", id + 1);
|
||||
CP_XML_ATTR(L"name", column_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
CP_XML_NODE(L"tableStyleInfo")
|
||||
{
|
||||
CP_XML_ATTR(L"showFirstColumn", 0);
|
||||
CP_XML_ATTR(L"showLastColumn", 0);
|
||||
CP_XML_ATTR(L"showRowStripes", 1);
|
||||
CP_XML_ATTR(L"showColumnStripes", 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
xlsx_conversion_context_->add_table_part(strm.str());
|
||||
}
|
||||
}
|
||||
void xlsx_table_context::serialize_autofilter(std::wostream & _Wostream)
|
||||
{
|
||||
if (xlsx_data_ranges_.empty()) return;
|
||||
|
||||
@ -82,6 +82,7 @@ public:
|
||||
|
||||
unsigned int columns_count();
|
||||
|
||||
void serialize_tableParts (std::wostream & _Wostream, rels & Rels);
|
||||
void serialize_sort (std::wostream & _Wostream);
|
||||
void serialize_autofilter (std::wostream & _Wostream);
|
||||
void serialize_merge_cells (std::wostream & _Wostream);
|
||||
@ -119,15 +120,17 @@ public:
|
||||
void add_database_sort (int field_number, int order);
|
||||
void end_database_range();
|
||||
|
||||
|
||||
int in_database_range();
|
||||
void set_database_range_value(int index, const std::wstring& value);
|
||||
private:
|
||||
xlsx_conversion_context *xlsx_conversion_context_;
|
||||
xlsx_text_context &xlsx_text_context_;
|
||||
|
||||
std::vector<xlsx_table_state_ptr> xlsx_table_states_;
|
||||
std::vector<xlsx_data_range_ptr> xlsx_data_ranges_;
|
||||
std::vector<xlsx_table_state_ptr> xlsx_table_states_;
|
||||
std::vector<xlsx_data_range_ptr> xlsx_data_ranges_;
|
||||
std::vector<xlsx_data_range_values_ptr> xlsx_data_ranges_values_;
|
||||
|
||||
std::multimap<std::wstring, int> xlsx_data_ranges_map_;
|
||||
std::multimap<std::wstring, int> xlsx_data_ranges_map_;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -71,7 +71,7 @@ xlsx_conversion_context::xlsx_conversion_context(odf_reader::odf_document * odfD
|
||||
math_context_ (odf_document_->odf_context().fontContainer(), true),
|
||||
xlsx_style_ (this),
|
||||
|
||||
maxDigitSize_ (std::pair<float,float>(-1.0, -1.0) ),
|
||||
maxDigitSize_ (std::make_pair(-1.f, -1.f) ),
|
||||
default_style_ ( (std::numeric_limits<size_t>::max)() ),
|
||||
mediaitems_ (odf_document_->get_folder()),
|
||||
xlsx_drawing_context_handle_(mediaitems_)
|
||||
@ -201,6 +201,10 @@ void xlsx_conversion_context::end_document()
|
||||
|
||||
output_document_->get_xl_files().add_charts(content);
|
||||
}
|
||||
for (size_t i = 0; i < table_parts_.size(); i++)
|
||||
{
|
||||
output_document_->get_xl_files().add_table_part(table_parts_[i]);
|
||||
}
|
||||
//workbook_content << L"<calcPr iterateCount=\"100\" refMode=\"A1\" iterate=\"false\" iterateDelta=\"0.0001\" />";
|
||||
|
||||
{
|
||||
@ -436,8 +440,9 @@ void xlsx_conversion_context::end_table()
|
||||
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());
|
||||
get_table_context().serialize_tableParts (current_sheet().tableParts(), current_sheet().sheet_rels());
|
||||
//get_table_context().serialize_autofilter (current_sheet().autofilter());
|
||||
//get_table_context().serialize_sort (current_sheet().sort());
|
||||
get_table_context().serialize_merge_cells (current_sheet().mergeCells());
|
||||
get_table_context().serialize_data_validation (current_sheet().dataValidations());
|
||||
|
||||
@ -647,19 +652,36 @@ std::pair<float,float> xlsx_conversion_context::getMaxDigitSize()
|
||||
|
||||
odf_reader::odf_read_context & odfContext = root()->odf_context();
|
||||
|
||||
instances.push_back(odfContext.styleContainer().style_default_by_type(odf_types::style_family::TableCell));
|
||||
instances.push_back(odfContext.styleContainer().style_by_name(L"Default",odf_types::style_family::TableCell,false));
|
||||
|
||||
odf_reader::text_format_properties_content textFormatProperties = calc_text_properties_content(instances);
|
||||
|
||||
if (textFormatProperties.style_font_name_)
|
||||
font_name = textFormatProperties.style_font_name_.get();
|
||||
else if (textFormatProperties.style_font_name_complex_)
|
||||
font_name = textFormatProperties.style_font_name_complex_.get();
|
||||
else if (textFormatProperties.style_font_name_asian_)
|
||||
font_name = textFormatProperties.style_font_name_asian_.get();
|
||||
odf_reader::style_instance *inst = odfContext.styleContainer().style_default_by_type(odf_types::style_family::TableCell);
|
||||
if (inst) instances.push_back(inst);
|
||||
|
||||
inst = odfContext.styleContainer().style_by_name(L"Default", odf_types::style_family::TableCell, false);
|
||||
if (inst) instances.push_back(inst);
|
||||
else
|
||||
font_name = L"Arial";
|
||||
{
|
||||
inst = odfContext.styleContainer().style_by_name(L"Normal", odf_types::style_family::TableCell, false);
|
||||
if (inst) instances.push_back(inst);
|
||||
}
|
||||
|
||||
odf_reader::text_format_properties_content textFormatProperties = calc_text_properties_content(instances);
|
||||
|
||||
if (textFormatProperties.fo_font_family_)
|
||||
font_name = textFormatProperties.fo_font_family_.get();
|
||||
else
|
||||
{
|
||||
std::wstring style_font_name;
|
||||
if (textFormatProperties.style_font_name_) style_font_name = textFormatProperties.style_font_name_.get();
|
||||
else if (textFormatProperties.style_font_name_complex_) style_font_name = textFormatProperties.style_font_name_complex_.get();
|
||||
else if (textFormatProperties.style_font_name_asian_) style_font_name = textFormatProperties.style_font_name_asian_.get();
|
||||
|
||||
odf_reader::fonts_container & fonts = odf_document_->odf_context().fontContainer();
|
||||
odf_reader::font_instance * font = fonts.font_by_style_name(style_font_name);
|
||||
if (font)
|
||||
{
|
||||
font_name = font->name();
|
||||
}
|
||||
}
|
||||
if (font_name.empty()) font_name = L"Arial";
|
||||
|
||||
if ((textFormatProperties.fo_font_size_) && (textFormatProperties.fo_font_size_->get_type() == odf_types::font_size::Length))
|
||||
font_size = (int)(0.5 + textFormatProperties.fo_font_size_->get_length().get_value_unit(odf_types::length::pt));
|
||||
|
||||
@ -160,6 +160,9 @@ public:
|
||||
void add_jsaProject (const std::string &content);
|
||||
|
||||
void add_control_props(const std::wstring & rid, const std::wstring & target, const std::wstring & props);
|
||||
|
||||
void add_table_part(const std::wstring & table) {table_parts_.push_back(table);}
|
||||
size_t get_table_parts_size() {return table_parts_.size();}
|
||||
//------------------------------------------------------------------------------------
|
||||
|
||||
odf_reader::odf_document * root()
|
||||
@ -206,7 +209,8 @@ private:
|
||||
|
||||
std::vector<xlsx_xml_worksheet_ptr> sheets_;
|
||||
std::vector<oox_chart_context_ptr> charts_;
|
||||
|
||||
std::vector<std::wstring> table_parts_;
|
||||
|
||||
std::wstringstream defaultOutput_;
|
||||
std::pair<float,float> maxDigitSize_;
|
||||
num_format_context num_format_context_;
|
||||
|
||||
@ -744,6 +744,9 @@ void process_build_object::visit(chart_title& val)
|
||||
if (val.attlist_.common_draw_position_attlist_.svg_x_)
|
||||
{
|
||||
t.pos_x = val.attlist_.common_draw_position_attlist_.svg_x_->get_value_unit(length::pt);
|
||||
}
|
||||
if (val.attlist_.common_draw_position_attlist_.svg_y_)
|
||||
{
|
||||
t.pos_y = val.attlist_.common_draw_position_attlist_.svg_y_->get_value_unit(length::pt);
|
||||
}
|
||||
t.bEnabled = true;
|
||||
@ -1054,7 +1057,7 @@ void process_build_object::visit(table_table_cell& val)
|
||||
if (cell_cash.empty())
|
||||
cell_cash = cell_val;
|
||||
|
||||
object_odf_context::_cell cell_= {object_odf_context_.current_table_column_, object_odf_context_.current_table_row_, cell_cash};
|
||||
object_odf_context::_cell cell_= {(size_t)object_odf_context_.current_table_column_, (size_t)object_odf_context_.current_table_row_, cell_cash};
|
||||
|
||||
object_odf_context_.cash_values.push_back(cell_);
|
||||
|
||||
|
||||
@ -106,6 +106,13 @@ void common_draw_fill_attlist::add_attributes( const xml::attributes_wc_ptr & At
|
||||
CP_APPLY_ATTR(L"draw:fill-image-width", draw_fill_image_width_);
|
||||
CP_APPLY_ATTR(L"draw:fill-image-height", draw_fill_image_height_);
|
||||
|
||||
CP_APPLY_ATTR(L"draw:color-mode", draw_color_mode_);
|
||||
CP_APPLY_ATTR(L"draw:contrast", draw_contrast_);
|
||||
CP_APPLY_ATTR(L"draw:luminance", draw_luminance_);
|
||||
CP_APPLY_ATTR(L"draw:gamma", draw_gamma_);
|
||||
CP_APPLY_ATTR(L"draw:red", draw_red_);
|
||||
CP_APPLY_ATTR(L"draw:green", draw_green_);
|
||||
CP_APPLY_ATTR(L"draw:blue", draw_blue_);
|
||||
}
|
||||
void common_draw_fill_attlist::serialize(CP_ATTR_NODE)
|
||||
{
|
||||
@ -130,6 +137,13 @@ void common_draw_fill_attlist::serialize(CP_ATTR_NODE)
|
||||
CP_XML_ATTR_OPT(L"draw:fill-image-width", draw_fill_image_width_);
|
||||
CP_XML_ATTR_OPT(L"draw:fill-image-height", draw_fill_image_height_);
|
||||
|
||||
CP_XML_ATTR_OPT(L"draw:color-mode", draw_color_mode_);
|
||||
CP_XML_ATTR_OPT(L"draw:contrast", draw_contrast_);
|
||||
CP_XML_ATTR_OPT(L"draw:luminance", draw_luminance_);
|
||||
CP_XML_ATTR_OPT(L"draw:gamma", draw_gamma_);
|
||||
CP_XML_ATTR_OPT(L"draw:red", draw_red_);
|
||||
CP_XML_ATTR_OPT(L"draw:green", draw_green_);
|
||||
CP_XML_ATTR_OPT(L"draw:blue", draw_blue_);
|
||||
}
|
||||
|
||||
void common_draw_fill_attlist::apply_from(const common_draw_fill_attlist & Other)
|
||||
@ -150,6 +164,14 @@ void common_draw_fill_attlist::apply_from(const common_draw_fill_attlist & Other
|
||||
|
||||
_CP_APPLY_PROP2(draw_fill_image_width_);
|
||||
_CP_APPLY_PROP2(draw_fill_image_height_);
|
||||
|
||||
_CP_APPLY_PROP2(draw_color_mode_);
|
||||
_CP_APPLY_PROP2(draw_contrast_);
|
||||
_CP_APPLY_PROP2(draw_luminance_);
|
||||
_CP_APPLY_PROP2(draw_gamma_);
|
||||
_CP_APPLY_PROP2(draw_red_);
|
||||
_CP_APPLY_PROP2(draw_green_);
|
||||
_CP_APPLY_PROP2(draw_blue_);
|
||||
}
|
||||
|
||||
void common_horizontal_margin_attlist::add_attributes( const xml::attributes_wc_ptr & Attributes )
|
||||
|
||||
@ -111,6 +111,14 @@ public:
|
||||
|
||||
_CP_OPT(length_or_percent) draw_fill_image_width_;
|
||||
_CP_OPT(length_or_percent) draw_fill_image_height_;
|
||||
|
||||
_CP_OPT(std::wstring) draw_color_mode_;
|
||||
_CP_OPT(odf_types::percent) draw_contrast_;
|
||||
_CP_OPT(odf_types::percent) draw_luminance_;
|
||||
_CP_OPT(odf_types::percent) draw_gamma_;
|
||||
_CP_OPT(odf_types::percent) draw_red_;
|
||||
_CP_OPT(odf_types::percent) draw_green_;
|
||||
_CP_OPT(odf_types::percent) draw_blue_;
|
||||
};
|
||||
|
||||
// common-horizontal-margin-attlist
|
||||
|
||||
@ -79,8 +79,8 @@ static const _shape_converter _OO_OOX_custom_shapes[]=
|
||||
{L"up-down-arrow-callout" ,L"upDownArrowCallout" ,0 ,0 ,0 },
|
||||
{L"quad-arrow-callout" ,L"quadArrowCallout" ,0 ,0 ,0 },
|
||||
{L"circular-arrow" ,L"circularArrow" ,0 ,0 ,0 },
|
||||
{L"can" ,L"lightningBolt" ,0 ,0 ,0 },
|
||||
{L"lightning" ,L"can" ,0 ,0 ,0 },
|
||||
{L"can" ,L"can" ,0 ,0 ,0 },
|
||||
{L"lightning" ,L"lightningBolt" ,0 ,0 ,0 },
|
||||
{L"heart" ,L"heart" ,0 ,0 ,0 },
|
||||
{L"sun" ,L"sun" ,1 ,46875 ,12500 },
|
||||
{L"moon" ,L"moon" ,0 ,0 ,0 },
|
||||
@ -222,7 +222,6 @@ static const _shape_converter _OO_OOX_custom_shapes[]=
|
||||
{L"concave-star6" ,L"" ,0 ,0 ,0 },
|
||||
{L"signet" ,L"" ,0 ,0 ,0 },
|
||||
{L"doorplate" ,L"" ,0 ,0 ,0 },
|
||||
|
||||
{L"" ,L"round1Rect" ,0 ,0 ,0 },
|
||||
{L"" ,L"round2DiagRect" ,0 ,0 ,0 },
|
||||
{L"" ,L"snip2DiagRect" ,0 ,0 ,0 },
|
||||
|
||||
@ -475,6 +475,8 @@ void Compute_GraphicFill(const common_draw_fill_attlist & props, const office_el
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((props.draw_color_mode_) && (*props.draw_color_mode_ == L"greyscale"))
|
||||
fill.bitmap->bGrayscale = true;
|
||||
}
|
||||
if (props.draw_fill_gradient_name_)
|
||||
{
|
||||
|
||||
@ -838,12 +838,20 @@ void common_draw_docx_convert(oox::docx_conversion_context & Context, union_comm
|
||||
}
|
||||
if (!drawing->isInline)
|
||||
{
|
||||
drawing->relativeHeight = L"2";
|
||||
drawing->behindDoc = L"0";
|
||||
|
||||
if (((drawing->styleWrap && drawing->styleWrap->get_type() == style_wrap::RunThrough) ||
|
||||
!drawing->styleWrap) && styleRunThrough && styleRunThrough->get_type() == run_through::Background)
|
||||
{
|
||||
drawing->behindDoc = L"1";
|
||||
if (!drawing->styleWrap)
|
||||
drawing->styleWrap = style_wrap(style_wrap::RunThrough);
|
||||
|
||||
}
|
||||
if (!drawing->styleWrap)
|
||||
drawing->styleWrap = style_wrap(style_wrap::Parallel);//у опен офис и мс разные дефолты
|
||||
|
||||
drawing->relativeHeight = L"2";
|
||||
drawing->behindDoc = L"0";
|
||||
|
||||
_CP_OPT(int) zIndex = attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_z_index_;
|
||||
|
||||
if (zIndex)//порядок отрисовки объектов
|
||||
@ -853,13 +861,6 @@ void common_draw_docx_convert(oox::docx_conversion_context & Context, union_comm
|
||||
else
|
||||
drawing->relativeHeight = std::to_wstring( 2 + *zIndex );
|
||||
}
|
||||
|
||||
if (drawing->styleWrap && drawing->styleWrap->get_type() == style_wrap::RunThrough
|
||||
&& styleRunThrough && styleRunThrough->get_type() == run_through::Background)
|
||||
{
|
||||
drawing-> behindDoc = L"1";
|
||||
}
|
||||
|
||||
drawing->margin_rect[0] = GetMargin(graphicProperties, sideLeft);
|
||||
drawing->margin_rect[1] = GetMargin(graphicProperties, sideTop);
|
||||
drawing->margin_rect[2] = GetMargin(graphicProperties, sideRight);
|
||||
@ -873,14 +874,14 @@ void common_draw_docx_convert(oox::docx_conversion_context & Context, union_comm
|
||||
int type = attlists_.rel_size_.style_rel_width_->get_type();
|
||||
|
||||
if (type == odf_types::percent_or_scale::Percent)
|
||||
drawing->pctWidth = attlists_.rel_size_.style_rel_width_->get_percent().get_value();
|
||||
drawing->pctWidth = (int)attlists_.rel_size_.style_rel_width_->get_percent().get_value();
|
||||
}
|
||||
if (attlists_.rel_size_.style_rel_height_ )
|
||||
{
|
||||
int type = attlists_.rel_size_.style_rel_height_->get_type();
|
||||
|
||||
if (type == odf_types::percent_or_scale::Percent)
|
||||
drawing->pctHeight = attlists_.rel_size_.style_rel_height_->get_percent().get_value();
|
||||
drawing->pctHeight = (int)attlists_.rel_size_.style_rel_height_->get_percent().get_value();
|
||||
}
|
||||
|
||||
}
|
||||
@ -1037,7 +1038,9 @@ void draw_shape::docx_convert(oox::docx_conversion_context & Context)
|
||||
drawing.sub_type = sub_type_;
|
||||
drawing.additional = additional_;//сюда могут добавиться свойства ...
|
||||
|
||||
if (drawing.sub_type !=5 )//line
|
||||
if (drawing.sub_type != 5 &&
|
||||
drawing.sub_type != 11 &&
|
||||
drawing.sub_type != 12 )//line, connectors
|
||||
{
|
||||
drawing.additional.push_back(_property(L"text-content", Context.get_drawing_context().get_text_stream_shape()));
|
||||
}
|
||||
|
||||
@ -546,9 +546,9 @@ void draw_enhanced_geometry::find_draw_type_oox()
|
||||
if (!draw_type_oox_index_)
|
||||
{
|
||||
int count = sizeof(_OO_OOX_custom_shapes) / sizeof(_shape_converter);
|
||||
int pos = odf_type.find(L"ooxml-");
|
||||
size_t pos = odf_type.find(L"ooxml-");
|
||||
|
||||
if (pos < 0)
|
||||
if (pos == std::wstring::npos)
|
||||
{
|
||||
for (long i = 0; i< count; i++)
|
||||
{
|
||||
@ -562,7 +562,7 @@ 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)
|
||||
{
|
||||
@ -572,7 +572,7 @@ void draw_enhanced_geometry::find_draw_type_oox()
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((draw_type_oox_index_) && (*draw_type_oox_index_== 179))//L"textBox"
|
||||
if ((draw_type_oox_index_) && (*draw_type_oox_index_== 96))//L"textBox" "mso-spt24"
|
||||
{
|
||||
sub_type_ = 1;//textBox
|
||||
}
|
||||
@ -649,17 +649,15 @@ void draw_connector::add_attributes( const xml::attributes_wc_ptr & Attributes )
|
||||
draw_line_attlist_.add_attributes(Attributes);
|
||||
draw_shape::add_attributes(Attributes);
|
||||
|
||||
sub_type_ = 5; //коннектор - линия, если ломаная (ниже определяется) - то путь
|
||||
sub_type_ = 10; //коннектор - линия, если ломаная (ниже определяется) - то путь
|
||||
|
||||
}
|
||||
void draw_connector::reset_svg_path()
|
||||
{
|
||||
if (!draw_connector_attlist_.svg_d_)
|
||||
{
|
||||
bad_shape_ = true;
|
||||
}
|
||||
else
|
||||
if (draw_connector_attlist_.svg_d_)
|
||||
{
|
||||
sub_type_ = 8;
|
||||
|
||||
std::vector<::svg_path::_polyline> o_Polyline_pt;
|
||||
std::vector<::svg_path::_polyline> o_Polyline_cm;
|
||||
|
||||
@ -707,7 +705,7 @@ void dr3d_scene::add_attributes( const xml::attributes_wc_ptr & Attributes )
|
||||
{
|
||||
draw_shape::add_attributes(Attributes);
|
||||
|
||||
sub_type_ = 10;
|
||||
sub_type_ = 12;
|
||||
|
||||
}
|
||||
//-------------------------------------------------------------------------------------------
|
||||
|
||||
@ -103,6 +103,7 @@ void draw_shape::common_docx_convert(oox::docx_conversion_context & Context)
|
||||
{
|
||||
std::wstring href = fill.bitmap->xlink_href_;
|
||||
fill.bitmap->rId = Context.get_mediaitems().add_or_find(href, oox::typeImage, fill.bitmap->isInternal, href);
|
||||
fill.bitmap->name_space = L"w14";
|
||||
}
|
||||
|
||||
std::wstringstream strm_fill, strm_ln;
|
||||
@ -214,10 +215,18 @@ void draw_path::docx_convert(oox::docx_conversion_context & Context)
|
||||
void draw_connector::docx_convert(oox::docx_conversion_context & Context)
|
||||
{
|
||||
//if (Context.get_drawing_context().get_current_level() >0 )return;
|
||||
|
||||
if (draw_connector_attlist_.draw_type_)
|
||||
{
|
||||
if (*draw_connector_attlist_.draw_type_ == L"curve")
|
||||
{
|
||||
sub_type_ = 11;
|
||||
}
|
||||
}
|
||||
reset_svg_attributes();
|
||||
common_docx_convert(Context);
|
||||
//...
|
||||
reset_svg_path();
|
||||
|
||||
draw_shape::docx_convert(Context);
|
||||
}
|
||||
void draw_polygon::docx_convert(oox::docx_conversion_context & Context)
|
||||
|
||||
@ -298,6 +298,13 @@ void draw_connector::reset_svg_attributes()
|
||||
}
|
||||
void draw_connector::pptx_convert(oox::pptx_conversion_context & Context)
|
||||
{
|
||||
if (draw_connector_attlist_.draw_type_)
|
||||
{
|
||||
if (*draw_connector_attlist_.draw_type_ == L"curve")
|
||||
{
|
||||
sub_type_ = 11;
|
||||
}
|
||||
}
|
||||
reset_svg_attributes();
|
||||
reset_svg_path();
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
@ -211,6 +211,15 @@ void draw_path::xlsx_convert(oox::xlsx_conversion_context & Context)
|
||||
|
||||
void draw_connector::xlsx_convert(oox::xlsx_conversion_context & Context)
|
||||
{
|
||||
if (draw_connector_attlist_.draw_type_)
|
||||
{
|
||||
if (*draw_connector_attlist_.draw_type_ == L"curve")
|
||||
{
|
||||
sub_type_ = 11;
|
||||
}
|
||||
}
|
||||
reset_svg_attributes();
|
||||
|
||||
reset_svg_path();
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
Context.get_drawing_context().start_shape(6);
|
||||
|
||||
@ -122,6 +122,10 @@ void graphic_format_properties::apply_to(std::vector<_property> & properties)
|
||||
if (draw_fit_to_size_) properties.push_back(_property(L"fit-to-size", *draw_fit_to_size_));
|
||||
if (draw_fit_to_contour_) properties.push_back(_property(L"fit-to-contour", *draw_fit_to_contour_));
|
||||
|
||||
if (common_draw_fill_attlist_.draw_color_mode_)
|
||||
{
|
||||
properties.push_back(_property(L"color-mode", *common_draw_fill_attlist_.draw_color_mode_));
|
||||
}
|
||||
if (common_padding_attlist_.fo_padding_)
|
||||
{
|
||||
properties.push_back(_property(L"text-padding-left", common_padding_attlist_.fo_padding_->get_value_unit(length::emu)));
|
||||
|
||||
@ -69,9 +69,23 @@ int table_table_cell_content::xlsx_convert(oox::xlsx_conversion_context & Contex
|
||||
for (size_t i = 0 ; i < elements_.size(); i++)
|
||||
{
|
||||
elements_[i]->xlsx_convert(Context);
|
||||
}
|
||||
}
|
||||
|
||||
const int sharedStrId = Context.get_table_context().end_cell_content();
|
||||
|
||||
int index = Context.get_table_context().in_database_range();
|
||||
|
||||
if (index >= 0)
|
||||
{
|
||||
std::wstringstream strm;
|
||||
for (size_t i = 0 ; i < elements_.size(); i++)
|
||||
{
|
||||
elements_[i]->text_to_stream(strm);
|
||||
}
|
||||
|
||||
Context.get_table_context().set_database_range_value(index, strm.str());
|
||||
|
||||
}
|
||||
return sharedStrId;
|
||||
}
|
||||
|
||||
@ -431,8 +445,8 @@ namespace {
|
||||
// see ECMA-376 page 1768
|
||||
|
||||
double pixToSize(double pixels, double maxDigitSize)
|
||||
{
|
||||
return (int(( pixels - 5)/ maxDigitSize * 100. + 0.5)) /100. * 0.9;
|
||||
{
|
||||
return (int(( pixels /*/ 0.75*/ - 5)/ maxDigitSize * 100. + 0.5)) /100. * 0.9; // * 9525. * 72.0 / (360000.0 * 2.54);
|
||||
}
|
||||
double cmToChars (double cm)
|
||||
{
|
||||
|
||||
@ -125,7 +125,7 @@ void process_paragraph_index(const paragraph_attrs & Attr, oox::docx_conversion_
|
||||
std::wostream & paragraph::text_to_stream(std::wostream & _Wostream) const
|
||||
{
|
||||
CP_SERIALIZE_TEXT(content_);
|
||||
_Wostream << L"\n";
|
||||
//_Wostream << L"\n";
|
||||
return _Wostream;
|
||||
}
|
||||
|
||||
|
||||
@ -96,7 +96,7 @@ HRESULT convert_single(std::wstring srcFileName)
|
||||
|
||||
Oox2Odf::Converter converter(srcTempPath, type, L"C:\\Windows\\Fonts", NULL);
|
||||
|
||||
std::wstring sPassword = L"password";
|
||||
std::wstring sPassword;// = L"password";
|
||||
|
||||
converter.convert();
|
||||
converter.write(dstTempPath, srcTempPath, sPassword, L"hiuh56f56tfy7g");
|
||||
|
||||
@ -42,9 +42,9 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"" , 7}, // shapetypeAccentBorderCallout1 = 0,
|
||||
{ L"" , 7}, // shapetypeAccentBorderCallout2,
|
||||
{ L"" , 7}, // shapetypeAccentBorderCallout3,
|
||||
{ L"mso-spt44" , 7}, // shapetypeAccentCallout1,
|
||||
{ L"mso-spt45" , 7}, // shapetypeAccentCallout2,
|
||||
{ L"mso-spt46" , 7}, // shapetypeAccentCallout3,
|
||||
{ L"" , 7}, // shapetypeAccentCallout1,
|
||||
{ L"" , 7}, // shapetypeAccentCallout2,
|
||||
{ L"" , 7}, // shapetypeAccentCallout3,
|
||||
{ L"actionButtonBackPrevious" , 7}, // shapetypeActionButtonBackPrevious, //mso-spt194
|
||||
{ L"mso-spt196" , 7}, // shapetypeActionButtonBeginning,
|
||||
{ L"mso-spt189" , 7}, // shapetypeActionButtonBlank,
|
||||
@ -58,23 +58,23 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"mso-spt197" , 7}, // shapetypeActionButtonReturn,
|
||||
{ L"mso-spt199" , 7}, // shapetypeActionButtonSound,
|
||||
{ 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"" , 7}, // shapetypeBentArrow,
|
||||
{ L"" , 9}, // shapetypeBentConnector2,
|
||||
{ L"" , 9}, // shapetypeBentConnector3,
|
||||
{ L"" , 9}, // shapetypeBentConnector4,
|
||||
{ L"" , 9}, // shapetypeBentConnector5,
|
||||
{ L"" , 7}, // shapetypeBentUpArrow,
|
||||
{ L"quad-bevel" , 7}, // shapetypeBevel,
|
||||
{ L"" , 7}, // shapetypeBevel,
|
||||
{ L"" , 7}, // shapetypeBlockArc,
|
||||
{ L"mso-spt49" , 7}, // shapetypeBorderCallout1,
|
||||
{ L"mso-spt50" , 7}, // shapetypeBorderCallout2,
|
||||
{ L"mso-spt51" , 7}, // shapetypeBorderCallout3,
|
||||
{ L"brace-pair" , 7}, // shapetypeBracePair,
|
||||
{ L"" , 7}, // shapetypeBorderCallout1,
|
||||
{ L"" , 7}, // shapetypeBorderCallout2,
|
||||
{ L"" , 7}, // shapetypeBorderCallout3,
|
||||
{ L"" , 7}, // shapetypeBracePair,
|
||||
{ L"" , 7}, // shapetypeBracketPair,
|
||||
{ L"mso-spt41" , 7}, // shapetypeCallout1,
|
||||
{ L"mso-spt42" , 7}, // shapetypeCallout2,
|
||||
{ L"mso-spt43" , 7}, // shapetypeCallout3,
|
||||
{ L"can" , 7}, // shapetypeCan,
|
||||
{ L"" , 7}, // shapetypeCallout1,
|
||||
{ L"" , 7}, // shapetypeCallout2,
|
||||
{ L"" , 7}, // shapetypeCallout3,
|
||||
{ L"" , 7}, // shapetypeCan,
|
||||
{ L"" , 7}, // shapetypeChartPlus,
|
||||
{ L"" , 7}, // shapetypeChartStar,
|
||||
{ L"" , 7}, // shapetypeChartX,
|
||||
@ -82,18 +82,18 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"" , 7}, // shapetypeChord,
|
||||
{ L"" , 7}, // shapetypeCircularArrow,
|
||||
{ L"cloud" , 7}, // shapetypeCloud,
|
||||
{ L"cloud-callout" , 7}, // shapetypeCloudCallout,
|
||||
{ L"" , 7}, // shapetypeCloudCallout,
|
||||
{ L"" , 7}, // shapetypeCorner,
|
||||
{ L"" , 7}, // shapetypeCornerTabs,
|
||||
{ L"cube" , 7}, // shapetypeCube,
|
||||
{ L"mso-spt37" , 7}, // shapetypeCurvedConnector2,
|
||||
{ L"mso-spt38" , 7}, // shapetypeCurvedConnector3,
|
||||
{ L"mso-spt39" , 7}, // shapetypeCurvedConnector4,
|
||||
{ L"mso-spt40" , 7}, // shapetypeCurvedConnector5,
|
||||
{ L"" , 7}, // shapetypeCube,
|
||||
{ L"" , 10}, // shapetypeCurvedConnector2,
|
||||
{ L"" , 10}, // shapetypeCurvedConnector3,
|
||||
{ L"" , 10}, // shapetypeCurvedConnector4,
|
||||
{ L"" , 10}, // shapetypeCurvedConnector5,
|
||||
{ L"" , 7}, // shapetypeCurvedDownArrow,
|
||||
{ L"" , 7}, // shapetypeCurvedLeftArrow,
|
||||
{ L"" , 7}, // shapetypeCurvedRightArrow,
|
||||
{ L"mso-spt104" , 7}, // shapetypeCurvedUpArrow,
|
||||
{ L"" , 7}, // shapetypeCurvedUpArrow,
|
||||
{ L"" , 7}, // shapetypeDecagon,
|
||||
{ L"" , 7}, // shapetypeDiagStripe,
|
||||
{ L"" , 7}, // shapetypeDiamond,
|
||||
@ -103,8 +103,8 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"" , 7}, // shapetypeDownArrow,
|
||||
{ L"" , 7}, // shapetypeDownArrowCallout,
|
||||
{ L"ellipse" , 3}, // shapetypeEllipse,
|
||||
{ L"mso-spt107" , 7}, // shapetypeEllipseRibbon,
|
||||
{ L"mso-spt108" , 7}, // shapetypeEllipseRibbon2,
|
||||
{ L"" , 7}, // shapetypeEllipseRibbon,
|
||||
{ L"" , 7}, // shapetypeEllipseRibbon2,
|
||||
{ L"flowchart-alternate-process" , 7}, // shapetypeFlowChartAlternateProcess,
|
||||
{ L"flowchart-collate" , 7}, // shapetypeFlowChartCollate,
|
||||
{ L"flowchart-connector" , 7}, // shapetypeFlowChartConnector,
|
||||
@ -134,23 +134,23 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"flowchart-sort" , 7}, // shapetypeFlowChartSort,
|
||||
{ L"flowchart-summing-junction" , 7}, // shapetypeFlowChartSummingJunction,
|
||||
{ L"flowchart-terminator" , 7}, // shapetypeFlowChartTerminator,
|
||||
{ L"paper" , 7}, // shapetypeFoldedCorner,
|
||||
{ L"" , 7}, // shapetypeFoldedCorner,
|
||||
{ L"" , 7}, // shapetypeFrame,
|
||||
{ L"" , 7}, // shapetypeFunnel,
|
||||
{ L"" , 7}, // shapetypeGear6,
|
||||
{ L"" , 7}, // shapetypeGear9,
|
||||
{ L"" , 7}, // shapetypeHalfFrame,
|
||||
{ L"heart" , 7}, // shapetypeHeart,
|
||||
{ L"" , 7}, // shapetypeHeart,
|
||||
{ L"" , 7}, // shapetypeHeptagon,
|
||||
{ L"hexagon" , 7}, // shapetypeHexagon,
|
||||
{ L"" , 7}, // shapetypeHexagon,
|
||||
{ L"" , 7}, // shapetypeHomePlate,
|
||||
{ L"horizontal-scroll" , 7}, // shapetypeHorizontalScroll,
|
||||
{ L"" , 7}, // shapetypeIrregularSeal1,
|
||||
{ L"" , 7}, // shapetypeIrregularSeal2,
|
||||
{ L"" , 7}, // shapetypeLeftArrow,
|
||||
{ L"" , 7}, // shapetypeLeftArrowCallout,
|
||||
{ L"left-brace" , 7}, // shapetypeLeftBrace,
|
||||
{ L"left-bracket" , 7}, // shapetypeLeftBracket,
|
||||
{ L"" , 7}, // shapetypeLeftBrace,
|
||||
{ L"" , 7}, // shapetypeLeftBracket,
|
||||
{ L"" , 7}, // shapetypeLeftCircularArrow,
|
||||
{ L"" , 7}, // shapetypeLeftRightArrow,
|
||||
{ L"left-right-arrow-callout" , 7}, // shapetypeLeftRightArrowCallout,
|
||||
@ -158,7 +158,7 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"" , 7}, // shapetypeLeftRightRibbon,
|
||||
{ L"" , 7}, // shapetypeLeftRightUpArrow,
|
||||
{ L"" , 7}, // shapetypeLeftUpArrow,
|
||||
{ L"lightning" , 7}, // shapetypeLightningBolt,
|
||||
{ L"" , 7}, // shapetypeLightningBolt,
|
||||
{ L"" , 5}, // shapetypeLine,
|
||||
{ L"" , 7}, // shapetypeLineInv,
|
||||
{ L"" , 7}, // shapetypeMathDivide,
|
||||
@ -167,27 +167,27 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"" , 7}, // shapetypeMathMultiply,
|
||||
{ L"" , 7}, // shapetypeMathNotEqual,
|
||||
{ L"" , 7}, // shapetypeMathPlus,
|
||||
{ L"moon" , 7}, // shapetypeMoon,
|
||||
{ L"" , 7}, // shapetypeMoon,
|
||||
{ L"" , 7}, // shapetypeNonIsoscelesTrapezoid,
|
||||
{ L"forbidden" , 7}, // shapetypeNoSmoking,
|
||||
{ L"" , 7}, // shapetypeNotchedRightArrow,
|
||||
{ L"octagon" , 7}, // shapetypeOctagon,
|
||||
{ L"" , 7}, // shapetypeOctagon,
|
||||
{ L"" , 7}, // shapetypeParallelogram,
|
||||
{ L"pentagon" , 7}, // shapetypePentagon,
|
||||
{ L"" , 7}, // shapetypePentagon,
|
||||
{ L"" , 7}, // shapetypePie,
|
||||
{ L"" , 7}, // shapetypePieWedge,
|
||||
{ L"" , 7}, // shapetypePlaque,
|
||||
{ L"" , 7}, // shapetypePlaqueTabs,
|
||||
{ L"" , 7}, // shapetypePlus,
|
||||
{ L"quad-arrow" , 7}, // shapetypeQuadArrow,
|
||||
{ L"quad-arrow-callout" , 7}, // shapetypeQuadArrowCallout,
|
||||
{ L"" , 7}, // shapetypeQuadArrowCallout,
|
||||
{ L"rectangle" , 2}, // shapetypeRect,
|
||||
{ L"mso-spt53" , 7}, // shapetypeRibbon,
|
||||
{ L"mso-spt54" , 7}, // shapetypeRibbon2,
|
||||
{ L"" , 7}, // shapetypeRibbon,
|
||||
{ L"" , 7}, // shapetypeRibbon2,
|
||||
{ L"" , 7}, // shapetypeRightArrow,
|
||||
{ L"" , 7}, // shapetypeRightArrowCallout,
|
||||
{ L"right-brace" , 7}, // shapetypeRightBrace,
|
||||
{ L"right-bracket" , 7}, // shapetypeRightBracket,
|
||||
{ L"" , 7}, // shapetypeRightBrace,
|
||||
{ L"" , 7}, // shapetypeRightBracket,
|
||||
{ L"" , 7}, // shapetypeRound1Rect,
|
||||
{ L"" , 7}, // shapetypeRound2DiagRect,
|
||||
{ L"" , 7}, // shapetypeRound2SameRect,
|
||||
@ -209,7 +209,7 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"" , 7}, // shapetypeStar6,
|
||||
{ L"" , 7}, // shapetypeStar7,
|
||||
{ L"star8" , 7}, // shapetypeStar8,
|
||||
{ L"mso-spt32" , 9}, // shapetypeStraightConnector1,
|
||||
{ L"" , 5}, // shapetypeStraightConnector1,
|
||||
{ L"striped-right-arrow" , 7}, // shapetypeStripedRightArrow,
|
||||
{ L"" , 7}, // shapetypeSun,
|
||||
{ L"" , 7}, // shapetypeSwooshArrow,
|
||||
@ -223,9 +223,9 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"mso-spt101" , 7}, // shapetypeUturnArrow,
|
||||
{ L"vertical-scroll" , 7}, // shapetypeVerticalScroll,
|
||||
{ L"" , 7}, // shapetypeWave,
|
||||
{ L"round-callout" , 7}, // shapetypeWedgeEllipseCallout,
|
||||
{ L"rectangular-callout" , 7}, // shapetypeWedgeRectCallout,
|
||||
{ L"round-rectangular-callout" , 7}, // shapetypeWedgeRoundRectCallout,
|
||||
{ L"" , 7}, // shapetypeWedgeEllipseCallout,
|
||||
{ L"" , 7}, // shapetypeWedgeRectCallout,
|
||||
{ L"" , 7}, // shapetypeWedgeRoundRectCallout,
|
||||
{ L"mso-spt17" , 7}, // shapetypeBallon,
|
||||
{ L"up-right-arrow" , 7}, // shapetypeRightUpArrow,
|
||||
{ L"fontwork-arch-down-pour" , 7}, // shapetypeTextArchDownPour,
|
||||
|
||||
@ -31,11 +31,336 @@
|
||||
*/
|
||||
#include "../oox_shape_defines.h"
|
||||
|
||||
// shapetypeAccentBorderCallout1,
|
||||
// shapetypeAccentBorderCallout2,
|
||||
// shapetypeAccentBorderCallout3,
|
||||
//+ shapetypeAccentBorderCallout1,
|
||||
//+ shapetypeAccentBorderCallout2,
|
||||
//+ shapetypeAccentBorderCallout3,
|
||||
//+ shapetypeAccentCallout1
|
||||
//+ shapetypeAccentCallout2
|
||||
//+ shapetypeAccentCallout3
|
||||
//+ shapetypeBorderCallout1
|
||||
//+ shapetypeBorderCallout2
|
||||
//+ shapetypeBorderCallout3
|
||||
|
||||
namespace cpdoccore
|
||||
{
|
||||
class oox_shape_AccentCallout1 : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_AccentCallout1()
|
||||
{
|
||||
odf_type_name =L"ooxml-accentCallout1";
|
||||
|
||||
enhanced_path = L"S M ?f0 ?f2 L ?f1 ?f2 ?f1 ?f3 ?f0 ?f3 Z N F M ?f9 ?f2 L ?f9 ?f3 Z N F M ?f9 ?f8 L ?f11 ?f10 N";
|
||||
text_areas = L"?f0 ?f2 ?f1 ?f3";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"18750 -8333 112500 -38333";
|
||||
|
||||
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"?f6 / 21600");
|
||||
add(L"f8", L"?f4 * ?f13 / 100000");
|
||||
add(L"f9", L"?f5 * ?f12 / 100000");
|
||||
add(L"f10", L"?f4 * ?f15 / 100000");
|
||||
add(L"f11", L"?f5 * ?f14 / 100000");
|
||||
add(L"f12", L"$1 / ?f7");
|
||||
add(L"f13", L"$0 / ?f7");
|
||||
add(L"f14", L"$3 / ?f7");
|
||||
add(L"f15", L"$2 / ?f7");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
class oox_shape_AccentCallout2 : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_AccentCallout2()
|
||||
{
|
||||
odf_type_name =L"ooxml-accentCallout2";
|
||||
|
||||
enhanced_path = L"S M ?f0 ?f2 L ?f1 ?f2 ?f1 ?f3 ?f0 ?f3 Z N F M ?f9 ?f2 L ?f9 ?f3 Z N F M ?f9 ?f8 L ?f11 ?f10 ?f13 ?f12 N";
|
||||
text_areas = L"?f0 ?f2 ?f1 ?f3";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"18750 -8333 18750 -16667 112500 -46667";
|
||||
|
||||
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"?f6 / 21600");
|
||||
add(L"f8", L"?f4 * ?f15 / 100000");
|
||||
add(L"f9", L"?f5 * ?f14 / 100000");
|
||||
add(L"f10", L"?f4 * ?f17 / 100000");
|
||||
add(L"f11", L"?f5 * ?f16 / 100000");
|
||||
add(L"f12", L"?f4 * ?f19 / 100000");
|
||||
add(L"f13", L"?f5 * ?f18 / 100000");
|
||||
add(L"f14", L"$1 / ?f7");
|
||||
add(L"f15", L"$0 / ?f7");
|
||||
add(L"f16", L"$3 / ?f7");
|
||||
add(L"f17", L"$2 / ?f7");
|
||||
add(L"f18", L"$5 / ?f7");
|
||||
add(L"f19", L"$4 / ?f7");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
class oox_shape_AccentCallout3 : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_AccentCallout3()
|
||||
{
|
||||
odf_type_name =L"ooxml-accentCallout3";
|
||||
|
||||
enhanced_path = L"S M ?f0 ?f2 L ?f1 ?f2 ?f1 ?f3 ?f0 ?f3 Z N F M ?f9 ?f2 L ?f9 ?f3 Z N F M ?f9 ?f8 L ?f11 ?f10 ?f13 ?f12 ?f15 ?f14 N";
|
||||
text_areas = L"?f0 ?f2 ?f1 ?f3";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"18750 -8333 18750 -16667 100000 -16667 112963 -8333";
|
||||
|
||||
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"?f6 / 21600");
|
||||
add(L"f8", L"?f4 * ?f17 / 100000");
|
||||
add(L"f9", L"?f5 * ?f16 / 100000");
|
||||
add(L"f10", L"?f4 * ?f19 / 100000");
|
||||
add(L"f11", L"?f5 * ?f18 / 100000");
|
||||
add(L"f12", L"?f4 * ?f21 / 100000");
|
||||
add(L"f13", L"?f5 * ?f20 / 100000");
|
||||
add(L"f14", L"?f4 * ?f23 / 100000");
|
||||
add(L"f15", L"?f5 * ?f22 / 100000");
|
||||
add(L"f16", L"$1 / ?f7");
|
||||
add(L"f17", L"$0 / ?f7");
|
||||
add(L"f18", L"$3 / ?f7");
|
||||
add(L"f19", L"$2 / ?f7");
|
||||
add(L"f20", L"$5 / ?f7");
|
||||
add(L"f21", L"$4 / ?f7");
|
||||
add(L"f22", L"$7 / ?f7");
|
||||
add(L"f23", L"$6 / ?f7");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
|
||||
class oox_shape_BorderCallout1 : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_BorderCallout1()
|
||||
{
|
||||
odf_type_name =L"ooxml-borderCallout1";
|
||||
|
||||
enhanced_path = L"M ?f0 ?f2 L ?f1 ?f2 ?f1 ?f3 ?f0 ?f3 Z N F M ?f9 ?f8 L ?f11 ?f10 N";
|
||||
text_areas = L"?f0 ?f2 ?f1 ?f3";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"18750 -8333 112500 -38333";
|
||||
|
||||
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"?f6 / 21600");
|
||||
add(L"f8", L"?f4 * ?f13 / 100000");
|
||||
add(L"f9", L"?f5 * ?f12 / 100000");
|
||||
add(L"f10", L"?f4 * ?f15 / 100000");
|
||||
add(L"f11", L"?f5 * ?f14 / 100000");
|
||||
add(L"f12", L"$1 / ?f7");
|
||||
add(L"f13", L"$0 / ?f7");
|
||||
add(L"f14", L"$3 / ?f7");
|
||||
add(L"f15", L"$2 / ?f7");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
|
||||
class oox_shape_BorderCallout2 : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_BorderCallout2()
|
||||
{
|
||||
odf_type_name =L"ooxml-borderCallout2";
|
||||
|
||||
enhanced_path = L"M ?f0 ?f2 L ?f1 ?f2 ?f1 ?f3 ?f0 ?f3 Z N F M ?f9 ?f8 L ?f11 ?f10 ?f13 ?f12 N";
|
||||
text_areas = L"?f0 ?f2 ?f1 ?f3";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"18750 -8333 18750 -16667 112500 -46667";
|
||||
|
||||
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"?f6 / 21600");
|
||||
add(L"f8", L"?f4 * ?f15 / 100000");
|
||||
add(L"f9", L"?f5 * ?f14 / 100000");
|
||||
add(L"f10", L"?f4 * ?f17 / 100000");
|
||||
add(L"f11", L"?f5 * ?f16 / 100000");
|
||||
add(L"f12", L"?f4 * ?f19 / 100000");
|
||||
add(L"f13", L"?f5 * ?f18 / 100000");
|
||||
add(L"f14", L"$1 / ?f7");
|
||||
add(L"f15", L"$0 / ?f7");
|
||||
add(L"f16", L"$3 / ?f7");
|
||||
add(L"f17", L"$2 / ?f7");
|
||||
add(L"f18", L"$5 / ?f7");
|
||||
add(L"f19", L"$4 / ?f7");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
|
||||
class oox_shape_BorderCallout3 : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_BorderCallout3()
|
||||
{
|
||||
odf_type_name =L"ooxml-borderCallout3";
|
||||
|
||||
enhanced_path = L"M ?f0 ?f2 L ?f1 ?f2 ?f1 ?f3 ?f0 ?f3 Z N F M ?f9 ?f8 L ?f11 ?f10 ?f13 ?f12 ?f15 ?f14 N";
|
||||
text_areas = L"?f0 ?f2 ?f1 ?f3";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"18750 -8333 18750 -16667 100000 -16667 112963 -8333";
|
||||
|
||||
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"?f6 / 21600");
|
||||
add(L"f8", L"?f4 * ?f17 / 100000");
|
||||
add(L"f9", L"?f5 * ?f16 / 100000");
|
||||
add(L"f10", L"?f4 * ?f19 / 100000");
|
||||
add(L"f11", L"?f5 * ?f18 / 100000");
|
||||
add(L"f12", L"?f4 * ?f21 / 100000");
|
||||
add(L"f13", L"?f5 * ?f20 / 100000");
|
||||
add(L"f14", L"?f4 * ?f23 / 100000");
|
||||
add(L"f15", L"?f5 * ?f22 / 100000");
|
||||
add(L"f16", L"$1 / ?f7");
|
||||
add(L"f17", L"$0 / ?f7");
|
||||
add(L"f18", L"$3 / ?f7");
|
||||
add(L"f19", L"$2 / ?f7");
|
||||
add(L"f20", L"$5 / ?f7");
|
||||
add(L"f21", L"$4 / ?f7");
|
||||
add(L"f22", L"$7 / ?f7");
|
||||
add(L"f23", L"$6 / ?f7");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
|
||||
class oox_shape_AccentBorderCallout1 : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_AccentBorderCallout1()
|
||||
{
|
||||
odf_type_name =L"ooxml-accentBorderCallout1";
|
||||
|
||||
enhanced_path = L"M ?f0 ?f2 L ?f1 ?f2 ?f1 ?f3 ?f0 ?f3 Z N F M ?f9 ?f2 L ?f9 ?f3 Z N F M ?f9 ?f8 L ?f11 ?f10 N";
|
||||
text_areas = L"?f0 ?f2 ?f1 ?f3";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"18750 -8333 112500 -38333";
|
||||
|
||||
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"?f6 / 21600");
|
||||
add(L"f8", L"?f4 * ?f13 / 100000");
|
||||
add(L"f9", L"?f5 * ?f12 / 100000");
|
||||
add(L"f10", L"?f4 * ?f15 / 100000");
|
||||
add(L"f11", L"?f5 * ?f14 / 100000");
|
||||
add(L"f12", L"$1 / ?f7");
|
||||
add(L"f13", L"$0 / ?f7");
|
||||
add(L"f14", L"$3 / ?f7");
|
||||
add(L"f15", L"$2 / ?f7");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
class oox_shape_AccentBorderCallout2 : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_AccentBorderCallout2()
|
||||
{
|
||||
odf_type_name =L"ooxml-accentBorderCallout2";
|
||||
|
||||
enhanced_path = L"M ?f0 ?f2 L ?f1 ?f2 ?f1 ?f3 ?f0 ?f3 Z N F M ?f9 ?f2 L ?f9 ?f3 Z N F M ?f9 ?f8 L ?f11 ?f10 ?f13 ?f12 N";
|
||||
text_areas = L"?f0 ?f2 ?f1 ?f3";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"18750 -8333 18750 -16667 112500 -46667";
|
||||
|
||||
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"?f6 / 21600");
|
||||
add(L"f8", L"?f4 * ?f15 / 100000");
|
||||
add(L"f9", L"?f5 * ?f14 / 100000");
|
||||
add(L"f10", L"?f4 * ?f17 / 100000");
|
||||
add(L"f11", L"?f5 * ?f16 / 100000");
|
||||
add(L"f12", L"?f4 * ?f19 / 100000");
|
||||
add(L"f13", L"?f5 * ?f18 / 100000");
|
||||
add(L"f14", L"$1 / ?f7");
|
||||
add(L"f15", L"$0 / ?f7");
|
||||
add(L"f16", L"$3 / ?f7");
|
||||
add(L"f17", L"$2 / ?f7");
|
||||
add(L"f18", L"$5 / ?f7");
|
||||
add(L"f19", L"$4 / ?f7");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
class oox_shape_AccentBorderCallout3 : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_AccentBorderCallout3()
|
||||
{
|
||||
odf_type_name =L"ooxml-accentBorderCallout3";
|
||||
|
||||
enhanced_path = L"M ?f0 ?f2 L ?f1 ?f2 ?f1 ?f3 ?f0 ?f3 Z N F M ?f9 ?f2 L ?f9 ?f3 Z N F M ?f9 ?f8 L ?f11 ?f10 ?f13 ?f12 ?f15 ?f14 N";
|
||||
text_areas = L"?f0 ?f2 ?f1 ?f3";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"18750 -8333 18750 -16667 100000 -16667 112963 -8333";
|
||||
|
||||
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"?f6 / 21600");
|
||||
add(L"f8", L"?f4 * ?f17 / 100000");
|
||||
add(L"f9", L"?f5 * ?f16 / 100000");
|
||||
add(L"f10", L"?f4 * ?f19 / 100000");
|
||||
add(L"f11", L"?f5 * ?f18 / 100000");
|
||||
add(L"f12", L"?f4 * ?f21 / 100000");
|
||||
add(L"f13", L"?f5 * ?f20 / 100000");
|
||||
add(L"f14", L"?f4 * ?f23 / 100000");
|
||||
add(L"f15", L"?f5 * ?f22 / 100000");
|
||||
add(L"f16", L"$1 / ?f7");
|
||||
add(L"f17", L"$0 / ?f7");
|
||||
add(L"f18", L"$3 / ?f7");
|
||||
add(L"f19", L"$2 / ?f7");
|
||||
add(L"f20", L"$5 / ?f7");
|
||||
add(L"f21", L"$4 / ?f7");
|
||||
add(L"f22", L"$7 / ?f7");
|
||||
add(L"f23", L"$6 / ?f7");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
@ -203,14 +203,14 @@ public:
|
||||
_handle h1, h2;
|
||||
|
||||
h1.position = L"?f8 ?f13";
|
||||
h1.y_minimum = L"0";
|
||||
h1.y_maximum = L"100000";
|
||||
h1.x_minimum = L"0";
|
||||
h1.x_maximum = L"100000";
|
||||
|
||||
handles.push_back(h1);
|
||||
|
||||
h2.position = L"0 ?f5";
|
||||
h2.x_minimum = L"0";
|
||||
h2.x_maximum = L"?f1";
|
||||
h2.y_minimum = L"0";
|
||||
h2.y_maximum = L"?f1";
|
||||
handles.push_back(h2);
|
||||
}
|
||||
};
|
||||
@ -608,230 +608,157 @@ public:
|
||||
{
|
||||
odf_type_name = L"ooxml-circularArrow";
|
||||
|
||||
enhanced_path = L"M ?f60 ?f61 G ?f10 ?f12 ?f197 ?f198 L ?f172 ?f173 ?f54 ?f55 ?f174 ?f175 ?f159 ?f160 G ?f13 ?f14 ?f199 ?f200 Z N";
|
||||
text_areas = L"?f193 ?f195 ?f194 ?f196";
|
||||
modifiers = L"12500 515062 20457681 17744048 18489";
|
||||
view_box = L"0 0 0 0";
|
||||
enhanced_path = L"M 534468 1430865 A ?f91 ?f92 ?f93 ?f94 534468 1430865 ?f88 ?f90 W ?f95 ?f96 ?f97 ?f98 534468 1430865 ?f88 ?f90 L 853493 790375 695381 939240 547047 613089 643004 668602 A ?f138 ?f139 ?f140 ?f141 643004 668602 ?f135 ?f137 W ?f142 ?f143 ?f144 ?f145 643004 668602 ?f135 ?f137 Z N";
|
||||
text_areas = L"?f48 ?f50 ?f49 ?f51";
|
||||
view_box = L"0 0 880110 1583055";
|
||||
glue_points = L"?f40 ?f41 ?f42 ?f43 ?f44 ?f45 ?f46 ?f47";
|
||||
|
||||
add(L"f0", L"if(0-$4 ,0,if(25000-$4 ,$4 ,25000))");
|
||||
add(L"f1", L"?f0 *2/1");
|
||||
add(L"f2", L"if(0-$0 ,0,if(?f1 -$0 ,$0 ,?f1 ))");
|
||||
add(L"f3", L"if(1-$2 ,1,if(21599999-$2 ,$2 ,21599999))");
|
||||
add(L"f4", L"if(0-$3 ,0,if(21599999-$3 ,$3 ,21599999))");
|
||||
add(L"f5", L"min(logwidth,logheight)");
|
||||
add(L"f6", L"?f5 *?f2 /100000");
|
||||
add(L"f7", L"?f5 *?f0 /100000");
|
||||
add(L"f8", L"?f6 *1/2");
|
||||
add(L"f9", L"logwidth/2");
|
||||
add(L"f10", L"?f9 +?f8 -?f7 ");
|
||||
add(L"f11", L"logheight/2");
|
||||
add(L"f12", L"?f11 +?f8 -?f7 ");
|
||||
add(L"f13", L"?f10 +0-?f6 ");
|
||||
add(L"f14", L"?f12 +0-?f6 ");
|
||||
add(L"f15", L"?f13 +?f8 -0");
|
||||
add(L"f16", L"?f14 +?f8 -0");
|
||||
add(L"f17", L"?f15 *sin(pi*(?f3 )/10800000)");
|
||||
add(L"f18", L"?f16 *cos(pi*(?f3 )/10800000)");
|
||||
add(L"f19", L"?f15 *(cos(atan2(?f17 ,?f18 )))");
|
||||
add(L"f20", L"?f16 *(sin(atan2(?f17 ,?f18 )))");
|
||||
add(L"f21", L"logwidth/2");
|
||||
add(L"f22", L"?f21 +?f19 -0");
|
||||
add(L"f23", L"logheight/2");
|
||||
add(L"f24", L"?f23 +?f20 -0");
|
||||
add(L"f25", L"min(?f13 ,?f14 )");
|
||||
add(L"f26", L"?f19 *?f19 /1");
|
||||
add(L"f27", L"?f20 *?f20 /1");
|
||||
add(L"f28", L"?f25 *?f25 /1");
|
||||
add(L"f29", L"?f26 +0-?f28 ");
|
||||
add(L"f30", L"?f27 +0-?f28 ");
|
||||
add(L"f31", L"?f29 *?f30 /?f26 ");
|
||||
add(L"f32", L"?f31 *1/?f27 ");
|
||||
add(L"f33", L"1+0-?f32 ");
|
||||
add(L"f34", L"sqrt(?f33 )");
|
||||
add(L"f35", L"?f29 *1/?f19 ");
|
||||
add(L"f36", L"?f35 *1/?f20 ");
|
||||
add(L"f37", L"(1+?f34 )/?f36 ");
|
||||
add(L"f38", L"(10800000*atan2(?f37 ,1))/pi");
|
||||
add(L"f39", L"?f38 +21600000-0");
|
||||
add(L"f40", L"if(?f38 ,?f38 ,?f39 )");
|
||||
add(L"f41", L"?f40 +0-?f3 ");
|
||||
add(L"f42", L"?f41 +21600000-0");
|
||||
add(L"f43", L"if(?f41 ,?f41 ,?f42 )");
|
||||
add(L"f44", L"?f43 +0-10800000");
|
||||
add(L"f45", L"?f43 +0-21600000");
|
||||
add(L"f46", L"if(?f44 ,?f45 ,?f43 )");
|
||||
add(L"f47", L"abs(?f46 )");
|
||||
add(L"f48", L"if(0-$1 ,0,if(?f47 -$1 ,$1 ,?f47 ))");
|
||||
add(L"f49", L"?f3 +?f48 -0");
|
||||
add(L"f50", L"?f15 *sin(pi*(?f49 )/10800000)");
|
||||
add(L"f51", L"?f16 *cos(pi*(?f49 )/10800000)");
|
||||
add(L"f52", L"?f15 *(cos(atan2(?f50 ,?f51 )))");
|
||||
add(L"f53", L"?f16 *(sin(atan2(?f50 ,?f51 )))");
|
||||
add(L"f54", L"?f21 +?f52 -0");
|
||||
add(L"f55", L"?f23 +?f53 -0");
|
||||
add(L"f56", L"?f10 *sin(pi*(?f4 )/10800000)");
|
||||
add(L"f57", L"?f12 *cos(pi*(?f4 )/10800000)");
|
||||
add(L"f58", L"?f10 *(cos(atan2(?f56 ,?f57 )))");
|
||||
add(L"f59", L"?f12 *(sin(atan2(?f56 ,?f57 )))");
|
||||
add(L"f60", L"?f21 +?f58 -0");
|
||||
add(L"f61", L"?f23 +?f59 -0");
|
||||
add(L"f62", L"?f7 *cos(pi*(?f49 )/10800000)");
|
||||
add(L"f63", L"?f7 *sin(pi*(?f49 )/10800000)");
|
||||
add(L"f64", L"?f22 +?f62 -0");
|
||||
add(L"f65", L"?f24 +?f63 -0");
|
||||
add(L"f66", L"?f7 *cos(pi*(?f49 )/10800000)");
|
||||
add(L"f67", L"?f7 *sin(pi*(?f49 )/10800000)");
|
||||
add(L"f68", L"?f22 +0-?f66 ");
|
||||
add(L"f69", L"?f24 +0-?f67 ");
|
||||
add(L"f70", L"?f68 +0-?f21 ");
|
||||
add(L"f71", L"?f69 +0-?f23 ");
|
||||
add(L"f72", L"?f64 +0-?f21 ");
|
||||
add(L"f73", L"?f65 +0-?f23 ");
|
||||
add(L"f74", L"min(?f10 ,?f12 )");
|
||||
add(L"f75", L"?f70 *?f74 /?f10 ");
|
||||
add(L"f76", L"?f71 *?f74 /?f12 ");
|
||||
add(L"f77", L"?f72 *?f74 /?f10 ");
|
||||
add(L"f78", L"?f73 *?f74 /?f12 ");
|
||||
add(L"f79", L"?f77 +0-?f75 ");
|
||||
add(L"f80", L"?f78 +0-?f76 ");
|
||||
add(L"f81", L"sqrt(?f79 *?f79 +?f80 *?f80 +0*0)");
|
||||
add(L"f82", L"?f75 *?f78 /1");
|
||||
add(L"f83", L"?f77 *?f76 /1");
|
||||
add(L"f84", L"?f82 +0-?f83 ");
|
||||
add(L"f85", L"?f74 *?f74 /1");
|
||||
add(L"f86", L"?f81 *?f81 /1");
|
||||
add(L"f87", L"?f85 *?f86 /1");
|
||||
add(L"f88", L"?f84 *?f84 /1");
|
||||
add(L"f89", L"?f87 +0-?f88 ");
|
||||
add(L"f90", L"max(?f89 ,0)");
|
||||
add(L"f91", L"sqrt(?f90 )");
|
||||
add(L"f92", L"?f80 *-1/1");
|
||||
add(L"f93", L"if(?f92 ,-1,1)");
|
||||
add(L"f94", L"?f93 *?f79 /1");
|
||||
add(L"f95", L"?f94 *?f91 /1");
|
||||
add(L"f96", L"?f84 *?f80 /1");
|
||||
add(L"f97", L"(?f96 +?f95 )/?f86 ");
|
||||
add(L"f98", L"?f96 +0-?f95 ");
|
||||
add(L"f99", L"?f98 *1/?f86 ");
|
||||
add(L"f100", L"abs(?f80 )");
|
||||
add(L"f101", L"?f100 *?f91 /1");
|
||||
add(L"f102", L"?f84 *?f79 /-1");
|
||||
add(L"f103", L"(?f102 +?f101 )/?f86 ");
|
||||
add(L"f104", L"?f102 +0-?f101 ");
|
||||
add(L"f105", L"?f104 *1/?f86 ");
|
||||
add(L"f106", L"?f77 +0-?f97 ");
|
||||
add(L"f107", L"?f77 +0-?f99 ");
|
||||
add(L"f108", L"?f78 +0-?f103 ");
|
||||
add(L"f109", L"?f78 +0-?f105 ");
|
||||
add(L"f110", L"sqrt(?f106 *?f106 +?f108 *?f108 +0*0)");
|
||||
add(L"f111", L"sqrt(?f107 *?f107 +?f109 *?f109 +0*0)");
|
||||
add(L"f112", L"?f111 +0-?f110 ");
|
||||
add(L"f113", L"if(?f112 ,?f97 ,?f99 )");
|
||||
add(L"f114", L"if(?f112 ,?f103 ,?f105 )");
|
||||
add(L"f115", L"?f113 *?f10 /?f74 ");
|
||||
add(L"f116", L"?f114 *?f12 /?f74 ");
|
||||
add(L"f117", L"?f21 +?f115 -0");
|
||||
add(L"f118", L"?f23 +?f116 -0");
|
||||
add(L"f119", L"?f70 *?f25 /?f13 ");
|
||||
add(L"f120", L"?f71 *?f25 /?f14 ");
|
||||
add(L"f121", L"?f72 *?f25 /?f13 ");
|
||||
add(L"f122", L"?f73 *?f25 /?f14 ");
|
||||
add(L"f123", L"?f121 +0-?f119 ");
|
||||
add(L"f124", L"?f122 +0-?f120 ");
|
||||
add(L"f125", L"sqrt(?f123 *?f123 +?f124 *?f124 +0*0)");
|
||||
add(L"f126", L"?f119 *?f122 /1");
|
||||
add(L"f127", L"?f121 *?f120 /1");
|
||||
add(L"f128", L"?f126 +0-?f127 ");
|
||||
add(L"f129", L"?f25 *?f25 /1");
|
||||
add(L"f130", L"?f125 *?f125 /1");
|
||||
add(L"f131", L"?f129 *?f130 /1");
|
||||
add(L"f132", L"?f128 *?f128 /1");
|
||||
add(L"f133", L"?f131 +0-?f132 ");
|
||||
add(L"f134", L"max(?f133 ,0)");
|
||||
add(L"f135", L"sqrt(?f134 )");
|
||||
add(L"f136", L"?f93 *?f123 /1");
|
||||
add(L"f137", L"?f136 *?f135 /1");
|
||||
add(L"f138", L"?f128 *?f124 /1");
|
||||
add(L"f139", L"(?f138 +?f137 )/?f130 ");
|
||||
add(L"f140", L"?f138 +0-?f137 ");
|
||||
add(L"f141", L"?f140 *1/?f130 ");
|
||||
add(L"f142", L"abs(?f124 )");
|
||||
add(L"f143", L"?f142 *?f135 /1");
|
||||
add(L"f144", L"?f128 *?f123 /-1");
|
||||
add(L"f145", L"(?f144 +?f143 )/?f130 ");
|
||||
add(L"f146", L"?f144 +0-?f143 ");
|
||||
add(L"f147", L"?f146 *1/?f130 ");
|
||||
add(L"f148", L"?f119 +0-?f139 ");
|
||||
add(L"f149", L"?f119 +0-?f141 ");
|
||||
add(L"f150", L"?f120 +0-?f145 ");
|
||||
add(L"f151", L"?f120 +0-?f147 ");
|
||||
add(L"f152", L"sqrt(?f148 *?f148 +?f150 *?f150 +0*0)");
|
||||
add(L"f153", L"sqrt(?f149 *?f149 +?f151 *?f151 +0*0)");
|
||||
add(L"f154", L"?f153 +0-?f152 ");
|
||||
add(L"f155", L"if(?f154 ,?f139 ,?f141 )");
|
||||
add(L"f156", L"if(?f154 ,?f145 ,?f147 )");
|
||||
add(L"f157", L"?f155 *?f13 /?f25 ");
|
||||
add(L"f158", L"?f156 *?f14 /?f25 ");
|
||||
add(L"f159", L"?f21 +?f157 -0");
|
||||
add(L"f160", L"?f23 +?f158 -0");
|
||||
add(L"f161", L"(10800000*atan2(?f158 ,?f157 ))/pi");
|
||||
add(L"f162", L"?f161 +21600000-0");
|
||||
add(L"f163", L"if(?f161 ,?f161 ,?f162 )");
|
||||
add(L"f164", L"?f4 +0-?f163 ");
|
||||
add(L"f165", L"?f164 +0-21600000");
|
||||
add(L"f166", L"if(?f164 ,?f165 ,?f164 )");
|
||||
add(L"f167", L"?f117 +0-?f159 ");
|
||||
add(L"f168", L"?f118 +0-?f160 ");
|
||||
add(L"f169", L"sqrt(?f167 *?f167 +?f168 *?f168 +0*0)");
|
||||
add(L"f170", L"?f169 *1/2");
|
||||
add(L"f171", L"?f170 +0-?f7 ");
|
||||
add(L"f172", L"if(?f171 ,?f117 ,?f64 )");
|
||||
add(L"f173", L"if(?f171 ,?f118 ,?f65 )");
|
||||
add(L"f174", L"if(?f171 ,?f159 ,?f68 )");
|
||||
add(L"f175", L"if(?f171 ,?f160 ,?f69 )");
|
||||
add(L"f176", L"(10800000*atan2(?f116 ,?f115 ))/pi");
|
||||
add(L"f177", L"?f176 +21600000-0");
|
||||
add(L"f178", L"if(?f176 ,?f176 ,?f177 )");
|
||||
add(L"f179", L"?f178 +0-?f4 ");
|
||||
add(L"f180", L"?f179 +21600000-0");
|
||||
add(L"f181", L"if(?f179 ,?f179 ,?f180 )");
|
||||
add(L"f182", L"?f15 *sin(pi*(?f4 )/10800000)");
|
||||
add(L"f183", L"?f16 *cos(pi*(?f4 )/10800000)");
|
||||
add(L"f184", L"?f15 *(cos(atan2(?f182 ,?f183 )))");
|
||||
add(L"f185", L"?f16 *(sin(atan2(?f182 ,?f183 )))");
|
||||
add(L"f186", L"?f21 +?f184 -0");
|
||||
add(L"f187", L"?f23 +?f185 -0");
|
||||
add(L"f188", L"?f4 +0-5400000");
|
||||
add(L"f189", L"?f49 +5400000-0");
|
||||
add(L"f190", L"?f49 +10800000-0");
|
||||
add(L"f191", L"?f10 *cos(pi*(2700000)/10800000)");
|
||||
add(L"f192", L"?f12 *sin(pi*(2700000)/10800000)");
|
||||
add(L"f193", L"?f21 +0-?f191 ");
|
||||
add(L"f194", L"?f21 +?f191 -0");
|
||||
add(L"f195", L"?f23 +0-?f192 ");
|
||||
add(L"f196", L"?f23 +?f192 -0");
|
||||
add(L"f197", L"(?f4 )/60000.0");
|
||||
add(L"f198", L"(?f181 )/60000.0");
|
||||
add(L"f199", L"(?f163 )/60000.0");
|
||||
add(L"f200", L"(?f166 )/60000.0");
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h;
|
||||
|
||||
h.position = L"?f54 ?f55";
|
||||
handles.push_back(h);
|
||||
|
||||
h.position = L"?f60 ?f61";
|
||||
handles.push_back(h);
|
||||
|
||||
h.position = L"?f117 ?f118";
|
||||
h.r_minimum = L"0";
|
||||
h.r_maximum = L"?f1";
|
||||
handles.push_back(h);
|
||||
|
||||
h.position = L"?f68 ?f69";
|
||||
h.r_minimum = L"0";
|
||||
h.r_maximum = L"25000";
|
||||
handles.push_back(h);
|
||||
add(L"f0", L"10800000");
|
||||
add(L"f1", L"5400000");
|
||||
add(L"f2", L"left");
|
||||
add(L"f3", L"right");
|
||||
add(L"f4", L"top");
|
||||
add(L"f5", L"bottom");
|
||||
add(L"f6", L"?f5 - ?f4");
|
||||
add(L"f7", L"?f3 - ?f2");
|
||||
add(L"f8", L"5419351 / 1725033");
|
||||
add(L"f9", L"180");
|
||||
add(L"f10", L"?f7 / 880110");
|
||||
add(L"f11", L"?f6 / 1583055");
|
||||
add(L"f12", L"695381 - 440055");
|
||||
add(L"f13", L"939240 - 791527");
|
||||
add(L"f14", L"sqrt(?f12 * ?f12 + ?f13 * ?f13 + 0 * 0)");
|
||||
add(L"f15", L"atan2(?f12, ?f13)");
|
||||
add(L"f16", L"?f15 + ?f1");
|
||||
add(L"f17", L"?f16 * ?f9 / ?f0");
|
||||
add(L"f18", L"0 - ?f17");
|
||||
add(L"f19", L"534468 - 440055");
|
||||
add(L"f20", L"1430865 - 791527");
|
||||
add(L"f21", L"sqrt(?f19 * ?f19 + ?f20 * ?f20 + 0 * 0)");
|
||||
add(L"f22", L"atan2(?f19, ?f20)");
|
||||
add(L"f23", L"?f22 + ?f1");
|
||||
add(L"f24", L"?f23 * ?f9 / ?f0");
|
||||
add(L"f25", L"0 - ?f24");
|
||||
add(L"f26", L"756945 - 440055");
|
||||
add(L"f27", L"734520 - 791527");
|
||||
add(L"f28", L"sqrt(?f26 * ?f26 + ?f27 * ?f27 + 0 * 0)");
|
||||
add(L"f29", L"atan2(?f26, ?f27)");
|
||||
add(L"f30", L"?f29 + ?f1");
|
||||
add(L"f31", L"?f30 * ?f9 / ?f0");
|
||||
add(L"f32", L"0 - ?f31");
|
||||
add(L"f33", L"547047 - 440055");
|
||||
add(L"f34", L"613089 - 791527");
|
||||
add(L"f35", L"sqrt(?f33 * ?f33 + ?f34 * ?f34 + 0 * 0)");
|
||||
add(L"f36", L"atan2(?f33, ?f34)");
|
||||
add(L"f37", L"?f36 + ?f1");
|
||||
add(L"f38", L"?f37 * ?f9 / ?f0");
|
||||
add(L"f39", L"0 - ?f38");
|
||||
add(L"f40", L"525840 / ?f10");
|
||||
add(L"f41", L"1372440 / ?f11");
|
||||
add(L"f42", L"853493 / ?f10");
|
||||
add(L"f43", L"790375 / ?f11");
|
||||
add(L"f44", L"695381 / ?f10");
|
||||
add(L"f45", L"939240 / ?f11");
|
||||
add(L"f46", L"547047 / ?f10");
|
||||
add(L"f47", L"613089 / ?f11");
|
||||
add(L"f48", L"215163 / ?f10");
|
||||
add(L"f49", L"664947 / ?f10");
|
||||
add(L"f50", L"318107 / ?f11");
|
||||
add(L"f51", L"1264948 / ?f11");
|
||||
add(L"f52", L"21550000 - 16092125");
|
||||
add(L"f53", L"if(?f52, 16092125, 21550000)");
|
||||
add(L"f54", L"-21550000 - ?f53");
|
||||
add(L"f55", L"if(?f54, -21550000, ?f53)");
|
||||
add(L"f56", L"4895979 + ?f55");
|
||||
add(L"f57", L"4895979 + ?f1");
|
||||
add(L"f58", L"?f57 * ?f8 / ?f0");
|
||||
add(L"f59", L"0 - ?f58");
|
||||
add(L"f60", L"cos(?f59)");
|
||||
add(L"f61", L"0 - ?f60");
|
||||
add(L"f62", L"?f61 * 318045");
|
||||
add(L"f63", L"sin(?f59)");
|
||||
add(L"f64", L"0 - ?f63");
|
||||
add(L"f65", L"?f64 * 669518");
|
||||
add(L"f66", L"sqrt(?f62 * ?f62 + ?f65 * ?f65 + 0 * 0)");
|
||||
add(L"f67", L"318045 * 669518 / ?f66");
|
||||
add(L"f68", L"?f64 * ?f67");
|
||||
add(L"f69", L"534468 - ?f68");
|
||||
add(L"f70", L"?f61 * ?f67");
|
||||
add(L"f71", L"1430865 - ?f70");
|
||||
add(L"f72", L"?f69 - 318045");
|
||||
add(L"f73", L"?f71 - 669518");
|
||||
add(L"f74", L"?f69 + 318045");
|
||||
add(L"f75", L"?f71 + 669518");
|
||||
add(L"f76", L"?f56 + ?f1");
|
||||
add(L"f77", L"?f76 * ?f8 / ?f0");
|
||||
add(L"f78", L"0 - ?f77");
|
||||
add(L"f79", L"cos(?f78)");
|
||||
add(L"f80", L"0 - ?f79");
|
||||
add(L"f81", L"?f80 * 318045");
|
||||
add(L"f82", L"sin(?f78)");
|
||||
add(L"f83", L"0 - ?f82");
|
||||
add(L"f84", L"?f83 * 669518");
|
||||
add(L"f85", L"sqrt(?f81 * ?f81 + ?f84 * ?f84 + 0 * 0)");
|
||||
add(L"f86", L"318045 * 669518 / ?f85");
|
||||
add(L"f87", L"?f83 * ?f86");
|
||||
add(L"f88", L"?f69 + ?f87");
|
||||
add(L"f89", L"?f80 * ?f86");
|
||||
add(L"f90", L"?f71 + ?f89");
|
||||
add(L"f91", L"if(?f55, 534468, ?f72)");
|
||||
add(L"f92", L"if(?f55, 1430865, ?f73)");
|
||||
add(L"f93", L"if(?f55, 534468, ?f74)");
|
||||
add(L"f94", L"if(?f55, 1430865, ?f75)");
|
||||
add(L"f95", L"if(?f55, ?f72, ?f88)");
|
||||
add(L"f96", L"if(?f55, ?f73, ?f90)");
|
||||
add(L"f97", L"if(?f55, ?f74, ?f88)");
|
||||
add(L"f98", L"if(?f55, ?f75, ?f90)");
|
||||
add(L"f99", L"21550000 - -14831828");
|
||||
add(L"f100", L"if(?f99, -14831828, 21550000)");
|
||||
add(L"f101", L"-21550000 - ?f100");
|
||||
add(L"f102", L"if(?f101, -21550000, ?f100)");
|
||||
add(L"f103", L"19727807 + ?f102");
|
||||
add(L"f104", L"19727807 + ?f1");
|
||||
add(L"f105", L"?f104 * ?f8 / ?f0");
|
||||
add(L"f106", L"0 - ?f105");
|
||||
add(L"f107", L"cos(?f106)");
|
||||
add(L"f108", L"0 - ?f107");
|
||||
add(L"f109", L"?f108 * 208032");
|
||||
add(L"f110", L"sin(?f106)");
|
||||
add(L"f111", L"0 - ?f110");
|
||||
add(L"f112", L"?f111 * 559504");
|
||||
add(L"f113", L"sqrt(?f109 * ?f109 + ?f112 * ?f112 + 0 * 0)");
|
||||
add(L"f114", L"208032 * 559504 / ?f113");
|
||||
add(L"f115", L"?f111 * ?f114");
|
||||
add(L"f116", L"643004 - ?f115");
|
||||
add(L"f117", L"?f108 * ?f114");
|
||||
add(L"f118", L"668602 - ?f117");
|
||||
add(L"f119", L"?f116 - 208032");
|
||||
add(L"f120", L"?f118 - 559504");
|
||||
add(L"f121", L"?f116 + 208032");
|
||||
add(L"f122", L"?f118 + 559504");
|
||||
add(L"f123", L"?f103 + ?f1");
|
||||
add(L"f124", L"?f123 * ?f8 / ?f0");
|
||||
add(L"f125", L"0 - ?f124");
|
||||
add(L"f126", L"cos(?f125)");
|
||||
add(L"f127", L"0 - ?f126");
|
||||
add(L"f128", L"?f127 * 208032");
|
||||
add(L"f129", L"sin(?f125)");
|
||||
add(L"f130", L"0 - ?f129");
|
||||
add(L"f131", L"?f130 * 559504");
|
||||
add(L"f132", L"sqrt(?f128 * ?f128 + ?f131 * ?f131 + 0 * 0)");
|
||||
add(L"f133", L"208032 * 559504 / ?f132");
|
||||
add(L"f134", L"?f130 * ?f133");
|
||||
add(L"f135", L"?f116 + ?f134");
|
||||
add(L"f136", L"?f127 * ?f133");
|
||||
add(L"f137", L"?f118 + ?f136");
|
||||
add(L"f138", L"if(?f102, 643004, ?f119)");
|
||||
add(L"f139", L"if(?f102, 668602, ?f120)");
|
||||
add(L"f140", L"if(?f102, 643004, ?f121)");
|
||||
add(L"f141", L"if(?f102, 668602, ?f122)");
|
||||
add(L"f142", L"if(?f102, ?f119, ?f135)");
|
||||
add(L"f143", L"if(?f102, ?f120, ?f137)");
|
||||
add(L"f144", L"if(?f102, ?f121, ?f135)");
|
||||
add(L"f145", L"if(?f102, ?f122, ?f137)");
|
||||
}
|
||||
};
|
||||
class oox_shape_SwooshArrow : public oox_shape
|
||||
@ -990,4 +917,5 @@ public:
|
||||
handles.push_back(h2);
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
@ -35,6 +35,14 @@
|
||||
//+ shapetypeRightArrowCallout
|
||||
//+ shapetypeUpArrowCallout
|
||||
//+ shapetypeDownArrowCallout
|
||||
//+ shapetypeCallout1
|
||||
//+ shapetypeCallout2
|
||||
//- shapetypeCallout3
|
||||
//+ shapetypeWedgeRectCallout
|
||||
//+ shapetypeWedgeRoundRectCallout
|
||||
//+ shapetypeCloudCallout
|
||||
//+ shapetypeWedgeEllipseCallout
|
||||
//+ shapetypeQuadArrowCallout
|
||||
|
||||
namespace cpdoccore
|
||||
{
|
||||
@ -277,5 +285,329 @@ public:
|
||||
handles.push_back(h2);
|
||||
}
|
||||
};
|
||||
class oox_shape_Callout1 : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Callout1()
|
||||
{
|
||||
odf_type_name =L"ooxml-callout1";
|
||||
|
||||
enhanced_path = L"S M ?f0 ?f2 L ?f1 ?f2 ?f1 ?f3 ?f0 ?f3 Z N F M ?f9 ?f8 L ?f11 ?f10 N";
|
||||
text_areas = L"?f0 ?f2 ?f1 ?f3";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"18750 -8333 112500 -38333";
|
||||
|
||||
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"?f6 / 21600");
|
||||
add(L"f8", L"?f4 * ?f13 / 100000");
|
||||
add(L"f9", L"?f5 * ?f12 / 100000");
|
||||
add(L"f10", L"?f4 * ?f15 / 100000");
|
||||
add(L"f11", L"?f5 * ?f14 / 100000");
|
||||
add(L"f12", L"$1 / ?f7");
|
||||
add(L"f13", L"$0 / ?f7");
|
||||
add(L"f14", L"$3 / ?f7");
|
||||
add(L"f15", L"$2 / ?f7");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
class oox_shape_Callout2 : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Callout2()
|
||||
{
|
||||
odf_type_name =L"ooxml-callout2";
|
||||
|
||||
enhanced_path = L"S M ?f0 ?f2 L ?f1 ?f2 ?f1 ?f3 ?f0 ?f3 Z N F M ?f9 ?f8 L ?f11 ?f10 ?f13 ?f12 N";
|
||||
text_areas = L"?f0 ?f2 ?f1 ?f3";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"18750 -8333 18750 -16667 112500 -46667";
|
||||
|
||||
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"?f6 / 21600");
|
||||
add(L"f8", L"?f4 * ?f15 / 100000");
|
||||
add(L"f9", L"?f5 * ?f14 / 100000");
|
||||
add(L"f10", L"?f4 * ?f17 / 100000");
|
||||
add(L"f11", L"?f5 * ?f16 / 100000");
|
||||
add(L"f12", L"?f4 * ?f19 / 100000");
|
||||
add(L"f13", L"?f5 * ?f18 / 100000");
|
||||
add(L"f14", L"$1 / ?f7");
|
||||
add(L"f15", L"$0 / ?f7");
|
||||
add(L"f16", L"$3 / ?f7");
|
||||
add(L"f17", L"$2 / ?f7");
|
||||
add(L"f18", L"$5 / ?f7");
|
||||
add(L"f19", L"$4 / ?f7");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
class oox_shape_CloudCallout : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_CloudCallout()
|
||||
{
|
||||
odf_type_name =L"ooxml-cloudCallout";
|
||||
|
||||
enhanced_path = L"M 1930 7160 C 1530 4490 3400 1970 5270 1970 5860 1950 6470 2210 6970 2600 7450 1390 8340 650 9340 650 10004 690 10710 1050 11210 1700 11570 630 12330 0 13150 0 13840 0 14470 460 14870 1160 15330 440 16020 0 16740 0 17910 0 18900 1130 19110 2710 20240 3150 21060 4580 21060 6220 21060 6720 21000 7200 20830 7660 21310 8460 21600 9450 21600 10460 21600 12750 20310 14680 18650 15010 18650 17200 17370 18920 15770 18920 15220 18920 14700 18710 14240 18310 13820 20240 12490 21600 11000 21600 9890 21600 8840 20790 8210 19510 7620 20000 7930 20290 6240 20290 4850 20290 3570 19280 2900 17640 1300 17600 480 16300 480 14660 480 13900 690 13210 1070 12640 380 12160 0 11210 0 10120 0 8590 840 7330 1930 7160 Z N M 1930 7160 C 1950 7410 2040 7690 2090 7920 F N M 6970 2600 C 7200 2790 7480 3050 7670 3310 F N M 11210 1700 C 11130 1910 11080 2160 11030 2400 F N M 14870 1160 C 14720 1400 14640 1720 14540 2010 F N M 19110 2710 C 19130 2890 19230 3290 19190 3380 F N M 20830 7660 C 20660 8170 20430 8620 20110 8990 F N M 18660 15010 C 18740 14200 18280 12200 17000 11450 F N M 14240 18310 C 14320 17980 14350 17680 14370 17360 F N M 8220 19510 C 8060 19250 7960 18950 7860 18640 F N M 2900 17640 C 3090 17600 3280 17540 3460 17450 F N M 1070 12640 C 1400 12900 1780 13130 2330 13040 F N U ?f17 ?f18 1800 1800 0 23592960 Z N U ?f19 ?f20 1200 1200 0 23592960 Z N U ?f13 ?f14 700 700 0 23592960 Z N";
|
||||
text_areas = L"3000 3320 17110 17330";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"6300 24300";
|
||||
glue_points = L"0 10800 10800 21600 21600 10800 10800 0 ?f13 ?f14";
|
||||
|
||||
add(L"f0", L"$0 -10800");
|
||||
add(L"f1", L"$1 -10800");
|
||||
add(L"f2", L"atan2(?f1 ,?f0 )/(pi/180)");
|
||||
add(L"f3", L"10800*cos(?f2 *(pi/180))");
|
||||
add(L"f4", L"10800*sin(?f2 *(pi/180))");
|
||||
add(L"f5", L"?f3 +10800");
|
||||
add(L"f6", L"?f4 +10800");
|
||||
add(L"f7", L"$0 -?f5 ");
|
||||
add(L"f8", L"$1 -?f6 ");
|
||||
add(L"f9", L"?f7 /3");
|
||||
add(L"f10", L"?f8 /3");
|
||||
add(L"f11", L"?f7 *2/3");
|
||||
add(L"f12", L"?f8 *2/3");
|
||||
add(L"f13", L"$0 ");
|
||||
add(L"f14", L"$1 ");
|
||||
add(L"f15", L"?f3 /12");
|
||||
add(L"f16", L"?f4 /12");
|
||||
add(L"f17", L"?f9 +?f5 -?f15 ");
|
||||
add(L"f18", L"?f10 +?f6 -?f16 ");
|
||||
add(L"f19", L"?f11 +?f5 ");
|
||||
add(L"f20", L"?f12 +?f6 ");
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h1;
|
||||
|
||||
h1.position = L"$0 $1";
|
||||
handles.push_back(h1);
|
||||
}
|
||||
};
|
||||
class oox_shape_WedgeRectCallout : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_WedgeRectCallout()
|
||||
{
|
||||
odf_type_name =L"ooxml-wedgeRectCallout";
|
||||
|
||||
enhanced_path = L"M 0 0 L 0 3590 ?f2 ?f3 0 8970 0 12630 ?f4 ?f5 0 18010 0 21600 3590 21600 ?f6 ?f7 8970 21600 12630 21600 ?f8 ?f9 18010 21600 21600 21600 21600 18010 ?f10 ?f11 21600 12630 21600 8970 ?f12 ?f13 21600 3590 21600 0 18010 0 ?f14 ?f15 12630 0 8970 0 ?f16 ?f17 3590 0 0 0 Z N";
|
||||
text_areas = L"0 0 21600 21600";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"6300 24300";
|
||||
glue_points = L"?f40 ?f41";
|
||||
|
||||
add(L"f0", L"$0 -10800");
|
||||
add(L"f1", L"$1 -10800");
|
||||
add(L"f2", L"if(?f18 ,$0 ,0)");
|
||||
add(L"f3", L"if(?f18 ,$1 ,6280)");
|
||||
add(L"f4", L"if(?f23 ,$0 ,0)");
|
||||
add(L"f5", L"if(?f23 ,$1 ,15320)");
|
||||
add(L"f6", L"if(?f26 ,$0 ,6280)");
|
||||
add(L"f7", L"if(?f26 ,$1 ,21600)");
|
||||
add(L"f8", L"if(?f29 ,$0 ,15320)");
|
||||
add(L"f9", L"if(?f29 ,$1 ,21600)");
|
||||
add(L"f10", L"if(?f32 ,$0 ,21600)");
|
||||
add(L"f11", L"if(?f32 ,$1 ,15320)");
|
||||
add(L"f12", L"if(?f34 ,$0 ,21600)");
|
||||
add(L"f13", L"if(?f34 ,$1 ,6280)");
|
||||
add(L"f14", L"if(?f36 ,$0 ,15320)");
|
||||
add(L"f15", L"if(?f36 ,$1 ,0)");
|
||||
add(L"f16", L"if(?f38 ,$0 ,6280)");
|
||||
add(L"f17", L"if(?f38 ,$1 ,0)");
|
||||
add(L"f18", L"if($0 ,-1,?f19 )");
|
||||
add(L"f19", L"if(?f1 ,-1,?f22 )");
|
||||
add(L"f20", L"abs(?f0 )");
|
||||
add(L"f21", L"abs(?f1 )");
|
||||
add(L"f22", L"?f20 -?f21 ");
|
||||
add(L"f23", L"if($0 ,-1,?f24 )");
|
||||
add(L"f24", L"if(?f1 ,?f22 ,-1)");
|
||||
add(L"f25", L"$1 -21600");
|
||||
add(L"f26", L"if(?f25 ,?f27 ,-1)");
|
||||
add(L"f27", L"if(?f0 ,-1,?f28 )");
|
||||
add(L"f28", L"?f21 -?f20 ");
|
||||
add(L"f29", L"if(?f25 ,?f30 ,-1)");
|
||||
add(L"f30", L"if(?f0 ,?f28 ,-1)");
|
||||
add(L"f31", L"$0 -21600");
|
||||
add(L"f32", L"if(?f31 ,?f33 ,-1)");
|
||||
add(L"f33", L"if(?f1 ,?f22 ,-1)");
|
||||
add(L"f34", L"if(?f31 ,?f35 ,-1)");
|
||||
add(L"f35", L"if(?f1 ,-1,?f22 )");
|
||||
add(L"f36", L"if($1 ,-1,?f37 )");
|
||||
add(L"f37", L"if(?f0 ,?f28 ,-1)");
|
||||
add(L"f38", L"if($1 ,-1,?f39 )");
|
||||
add(L"f39", L"if(?f0 ,-1,?f28 )");
|
||||
add(L"f40", L"$0 ");
|
||||
add(L"f41", L"$1 ");
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h1;
|
||||
|
||||
h1.position = L"$0 $1";
|
||||
handles.push_back(h1);
|
||||
}
|
||||
};
|
||||
|
||||
class oox_shape_WedgeRoundRectCallout : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_WedgeRoundRectCallout()
|
||||
{
|
||||
odf_type_name =L"ooxml-wedgeRoundRectCallout";
|
||||
|
||||
enhanced_path = L"M 3590 0 X 0 3590 L ?f2 ?f3 0 8970 0 12630 ?f4 ?f5 0 18010 Y 3590 21600 L ?f6 ?f7 8970 21600 12630 21600 ?f8 ?f9 18010 21600 X 21600 18010 L ?f10 ?f11 21600 12630 21600 8970 ?f12 ?f13 21600 3590 Y 18010 0 L ?f14 ?f15 12630 0 8970 0 ?f16 ?f17 Z N";
|
||||
text_areas = L"800 800 20800 20800";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"6300 24300";
|
||||
glue_points = L"?f40 ?f41";
|
||||
|
||||
add(L"f0", L"$0 -10800");
|
||||
add(L"f1", L"$1 -10800");
|
||||
add(L"f2", L"if(?f18 ,$0 ,0)");
|
||||
add(L"f3", L"if(?f18 ,$1 ,6280)");
|
||||
add(L"f4", L"if(?f23 ,$0 ,0)");
|
||||
add(L"f5", L"if(?f23 ,$1 ,15320)");
|
||||
add(L"f6", L"if(?f26 ,$0 ,6280)");
|
||||
add(L"f7", L"if(?f26 ,$1 ,21600)");
|
||||
add(L"f8", L"if(?f29 ,$0 ,15320)");
|
||||
add(L"f9", L"if(?f29 ,$1 ,21600)");
|
||||
add(L"f10", L"if(?f32 ,$0 ,21600)");
|
||||
add(L"f11", L"if(?f32 ,$1 ,15320)");
|
||||
add(L"f12", L"if(?f34 ,$0 ,21600)");
|
||||
add(L"f13", L"if(?f34 ,$1 ,6280)");
|
||||
add(L"f14", L"if(?f36 ,$0 ,15320)");
|
||||
add(L"f15", L"if(?f36 ,$1 ,0)");
|
||||
add(L"f16", L"if(?f38 ,$0 ,6280)");
|
||||
add(L"f17", L"if(?f38 ,$1 ,0)");
|
||||
add(L"f18", L"if($0 ,-1,?f19 )");
|
||||
add(L"f19", L"if(?f1 ,-1,?f22 )");
|
||||
add(L"f20", L"abs(?f0 )");
|
||||
add(L"f21", L"abs(?f1 )");
|
||||
add(L"f22", L"?f20 -?f21 ");
|
||||
add(L"f23", L"if($0 ,-1,?f24 )");
|
||||
add(L"f24", L"if(?f1 ,?f22 ,-1)");
|
||||
add(L"f25", L"$1 -21600");
|
||||
add(L"f26", L"if(?f25 ,?f27 ,-1)");
|
||||
add(L"f27", L"if(?f0 ,-1,?f28 )");
|
||||
add(L"f28", L"?f21 -?f20 ");
|
||||
add(L"f29", L"if(?f25 ,?f30 ,-1)");
|
||||
add(L"f30", L"if(?f0 ,?f28 ,-1)");
|
||||
add(L"f31", L"$0 -21600");
|
||||
add(L"f32", L"if(?f31 ,?f33 ,-1)");
|
||||
add(L"f33", L"if(?f1 ,?f22 ,-1)");
|
||||
add(L"f34", L"if(?f31 ,?f35 ,-1)");
|
||||
add(L"f35", L"if(?f1 ,-1,?f22 )");
|
||||
add(L"f36", L"if($1 ,-1,?f37 )");
|
||||
add(L"f37", L"if(?f0 ,?f28 ,-1)");
|
||||
add(L"f38", L"if($1 ,-1,?f39 )");
|
||||
add(L"f39", L"if(?f0 ,-1,?f28 )");
|
||||
add(L"f40", L"$0 ");
|
||||
add(L"f41", L"$1 ");
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h1;
|
||||
|
||||
h1.position = L"$0 $1";
|
||||
handles.push_back(h1);
|
||||
}
|
||||
};
|
||||
class oox_shape_WedgeEllipseCallout : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_WedgeEllipseCallout()
|
||||
{
|
||||
odf_type_name =L"ooxml-wedgeEllipseCallout";
|
||||
|
||||
enhanced_path = L"W 0 0 21600 21600 ?f22 ?f23 ?f18 ?f19 L ?f14 ?f15 Z N";
|
||||
text_areas = L"3200 3200 18400 18400";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"6300 24300";
|
||||
glue_points = L"3160 3160 3160 18440 18440 18440 18440 3160 ?f14 ?f15";
|
||||
|
||||
add(L"f0", L"$0 -10800");
|
||||
add(L"f1", L"$1 -10800");
|
||||
add(L"f2", L"?f0 *?f0 ");
|
||||
add(L"f3", L"?f1 *?f1 ");
|
||||
add(L"f4", L"?f2 +?f3 ");
|
||||
add(L"f5", L"sqrt(?f4 )");
|
||||
add(L"f6", L"?f5 -10800");
|
||||
add(L"f7", L"atan2(?f1 ,?f0 )/(pi/180)");
|
||||
add(L"f8", L"?f7 -10");
|
||||
add(L"f9", L"?f7 +10");
|
||||
add(L"f10", L"10800*cos(?f7 *(pi/180))");
|
||||
add(L"f11", L"10800*sin(?f7 *(pi/180))");
|
||||
add(L"f12", L"?f10 +10800");
|
||||
add(L"f13", L"?f11 +10800");
|
||||
add(L"f14", L"if(?f6 ,$0 ,?f12 )");
|
||||
add(L"f15", L"if(?f6 ,$1 ,?f13 )");
|
||||
add(L"f16", L"10800*cos(?f8 *(pi/180))");
|
||||
add(L"f17", L"10800*sin(?f8 *(pi/180))");
|
||||
add(L"f18", L"?f16 +10800");
|
||||
add(L"f19", L"?f17 +10800");
|
||||
add(L"f20", L"10800*cos(?f9 *(pi/180))");
|
||||
add(L"f21", L"10800*sin(?f9 *(pi/180))");
|
||||
add(L"f22", L"?f20 +10800");
|
||||
add(L"f23", L"?f21 +10800");
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h1;
|
||||
|
||||
h1.position = L"$0 $1";
|
||||
handles.push_back(h1);
|
||||
}
|
||||
};
|
||||
class oox_shape_QuadArrowCallout : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_QuadArrowCallout()
|
||||
{
|
||||
odf_type_name =L"ooxml-quadArrowCallout";
|
||||
|
||||
enhanced_path = L"M ?f0 ?f6 L ?f17 ?f30 ?f17 ?f32 ?f21 ?f32 ?f21 ?f28 ?f25 ?f28 ?f25 ?f17 ?f23 ?f17 ?f9 ?f2 ?f24 ?f17 ?f26 ?f17 ?f26 ?f28 ?f22 ?f28 ?f22 ?f32 ?f20 ?f32 ?f20 ?f30 ?f1 ?f6 ?f20 ?f31 ?f20 ?f33 ?f22 ?f33 ?f22 ?f29 ?f26 ?f29 ?f26 ?f27 ?f24 ?f27 ?f9 ?f3 ?f23 ?f27 ?f25 ?f27 ?f25 ?f29 ?f21 ?f29 ?f21 ?f33 ?f17 ?f33 ?f17 ?f31 Z N";
|
||||
text_areas = L"?f21 ?f28 ?f22 ?f29";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"18515 18515 18515 48123";
|
||||
|
||||
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"?f4 / 2");
|
||||
add(L"f6", L"?f2 + ?f5");
|
||||
add(L"f7", L"?f1 - ?f0");
|
||||
add(L"f8", L"?f7 / 2");
|
||||
add(L"f9", L"?f0 + ?f8");
|
||||
add(L"f10", L"min(?f7, ?f4)");
|
||||
add(L"f11", L"$1");
|
||||
add(L"f12", L"$0");
|
||||
add(L"f13", L"$2");
|
||||
add(L"f14", L"$3");
|
||||
add(L"f15", L"?f10 * ?f11 / 100000");
|
||||
add(L"f16", L"?f10 * ?f12 / 200000");
|
||||
add(L"f17", L"?f10 * ?f13 / 100000");
|
||||
add(L"f18", L"?f7 * ?f14 / 200000");
|
||||
add(L"f19", L"?f4 * ?f14 / 200000");
|
||||
add(L"f20", L"?f1 - ?f17");
|
||||
add(L"f21", L"?f9 - ?f18");
|
||||
add(L"f22", L"?f9 + ?f18");
|
||||
add(L"f23", L"?f9 - ?f15");
|
||||
add(L"f24", L"?f9 + ?f15");
|
||||
add(L"f25", L"?f9 - ?f16");
|
||||
add(L"f26", L"?f9 + ?f16");
|
||||
add(L"f27", L"?f3 - ?f17");
|
||||
add(L"f28", L"?f6 - ?f19");
|
||||
add(L"f29", L"?f6 + ?f19");
|
||||
add(L"f30", L"?f6 - ?f15");
|
||||
add(L"f31", L"?f6 + ?f15");
|
||||
add(L"f32", L"?f6 - ?f16");
|
||||
add(L"f33", L"?f6 + ?f16");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
}
|
||||
@ -33,5 +33,16 @@
|
||||
|
||||
namespace cpdoccore
|
||||
{
|
||||
class oox_shape_StraightConnector1 : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_StraightConnector1()
|
||||
{
|
||||
odf_type_name =L"ooxml-straightConnector1";
|
||||
|
||||
enhanced_path = L"M 0 0 L 21600 21600 N";
|
||||
view_box = L"0 0 21600 21600";
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -314,7 +314,7 @@ public:
|
||||
{
|
||||
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";
|
||||
enhanced_path = L"M ?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";
|
||||
|
||||
@ -31,23 +31,28 @@
|
||||
*/
|
||||
//+ shapetypeArc,
|
||||
//+ shapetypeBevel,
|
||||
//+ shapetypeCan,
|
||||
//+ shapetypeChevron,
|
||||
//+ shapetypeChord,
|
||||
//+ shapetypeCorner,
|
||||
// shapetypeCornerTabs,
|
||||
// shapetypeDecagon,
|
||||
//+ shapetypeCube,
|
||||
//+ shapetypeDecagon,
|
||||
// shapetypeDiagStripe,
|
||||
//+ shapetypeDiamond
|
||||
// shapetypeDodecagon,
|
||||
//+ shapetypeDodecagon,
|
||||
//+ shapetypeDoubleWave,
|
||||
//+ shapetypeFunnel,
|
||||
//+ shapetypeGear6,
|
||||
//+ shapetypeGear9,
|
||||
// shapetypeHalfFrame,
|
||||
// shapetypeHeptagon,
|
||||
//+ shapetypeHeptagon,
|
||||
//+ shapetypeHexagon,
|
||||
//+ shapetypeHomePlate,
|
||||
// shapetypeNonIsoscelesTrapezoid,
|
||||
//+ shapetypeOctagon,
|
||||
//+ shapetypeParallelogram
|
||||
//+ shapetypePentagon,
|
||||
//+ shapetypePie,
|
||||
//+ shapetypePieWedge,
|
||||
//+ shapetypePlaque,
|
||||
@ -58,6 +63,7 @@
|
||||
//+ shapetypeTrapezoid
|
||||
//+ shapetypeBlockArc
|
||||
//+ shapetypeDonut
|
||||
//+ shapetypeFrame
|
||||
|
||||
#include "../oox_shape_defines.h"
|
||||
|
||||
@ -281,55 +287,52 @@ public:
|
||||
odf_type_name =L"ooxml-wave";
|
||||
|
||||
modifiers = L"12500 0";
|
||||
enhanced_path = L"M ?f13 ?f2 C ?f17 ?f4 ?f18 ?f5 ?f15 ?f2 L ?f20 ?f6 C ?f22 ?f8 ?f21 ?f7 ?f19 ?f6 Z N";
|
||||
text_areas = L"?f27 ?f29 ?f28 ?f30";
|
||||
glue_points = L"?f35 ?f10 ?f19 ?f6 ?f28 ?f14 ?f38 ?f6";
|
||||
view_box = L"0 0 0 0";
|
||||
enhanced_path = L"M ?f23 ?f12 C ?f27 ?f14 ?f28 ?f15 ?f25 ?f12 L ?f30 ?f16 C ?f32 ?f18 ?f31 ?f17 ?f29 ?f16 Z N";
|
||||
text_areas = L"?f36 ?f38 ?f37 ?f39";
|
||||
glue_points = L"?f35 ?f12 ?f21 ?f6 ?f34 ?f16 ?f33 ?f6";
|
||||
view_box = L"0 0 21600 21600";
|
||||
|
||||
add(L"f0", L"if(0-$0 ,0,if(20000-$0 ,$0 ,20000))");
|
||||
add(L"f1", L"if(-10000-$1 ,-10000,if(10000-$1 ,$1 ,10000))");
|
||||
add(L"f2", L"logheight*?f0 /100000");
|
||||
add(L"f3", L"?f2 *10/3");
|
||||
add(L"f4", L"?f2 +0-?f3 ");
|
||||
add(L"f5", L"?f2 +?f3 -0");
|
||||
add(L"f6", L"logheight+0-?f2 ");
|
||||
add(L"f7", L"?f6 +0-?f3 ");
|
||||
add(L"f8", L"?f6 +?f3 -0");
|
||||
add(L"f9", L"logwidth*?f1 /100000");
|
||||
add(L"f10", L"logwidth*?f1 /50000");
|
||||
add(L"f11", L"abs(?f9 )");
|
||||
add(L"f12", L"if(?f10 ,0,?f10 )");
|
||||
add(L"f13", L"0+0-?f12 ");
|
||||
add(L"f14", L"if(?f10 ,?f10 ,0)");
|
||||
add(L"f15", L"logwidth+0-?f14 ");
|
||||
add(L"f16", L"(?f12 +?f15 )/3");
|
||||
add(L"f17", L"?f13 +?f16 -0");
|
||||
add(L"f18", L"(?f17 +?f15 )/2");
|
||||
add(L"f19", L"0+?f14 -0");
|
||||
add(L"f20", L"logwidth+?f12 -0");
|
||||
add(L"f21", L"?f19 +?f16 -0");
|
||||
add(L"f22", L"(?f21 +?f20 )/2");
|
||||
add(L"f23", L"logwidth+0-?f11");
|
||||
add(L"f24", L"logwidth/2");
|
||||
add(L"f25", L"?f24 +?f9 -0");
|
||||
add(L"f26", L"?f24 +0-?f9 ");
|
||||
add(L"f27", L"max(?f13 ,?f19 )");
|
||||
add(L"f28", L"min(?f15 ,?f20 )");
|
||||
add(L"f29", L"logheight*?f0 /50000");
|
||||
add(L"f30", L"logheight+0-?f29 ");
|
||||
add(L"f31", L"logheight");
|
||||
add(L"f32", L"logheight/2");
|
||||
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"?f4 / 2");
|
||||
add(L"f6", L"?f2 + ?f5");
|
||||
add(L"f7", L"?f1 - ?f0");
|
||||
add(L"f8", L"?f7 / 2");
|
||||
add(L"f9", L"?f0 + ?f8");
|
||||
add(L"f10", L"$0");
|
||||
add(L"f11", L"$1");
|
||||
add(L"f12", L"?f4 * ?f10 / 100000");
|
||||
add(L"f13", L"?f12 * 10 / 3");
|
||||
add(L"f14", L"?f12 - ?f13");
|
||||
add(L"f15", L"?f12 + ?f13");
|
||||
add(L"f16", L"?f3 - ?f12");
|
||||
add(L"f17", L"?f16 - ?f13");
|
||||
add(L"f18", L"?f16 + ?f13");
|
||||
add(L"f19", L"?f7 * ?f11 / 100000");
|
||||
add(L"f20", L"?f7 * ?f11 / 50000");
|
||||
add(L"f21", L"abs(?f19)");
|
||||
add(L"f22", L"if(?f20, 0, ?f20)");
|
||||
add(L"f23", L"?f0 - ?f22");
|
||||
add(L"f24", L"if(?f20, ?f20, 0)");
|
||||
add(L"f25", L"?f1 - ?f24");
|
||||
add(L"f26", L"(?f22 + ?f25) / 3");
|
||||
add(L"f27", L"?f23 + ?f26");
|
||||
add(L"f28", L"(?f27 + ?f25) / 2");
|
||||
add(L"f29", L"?f0 + ?f24");
|
||||
add(L"f30", L"?f1 + ?f22");
|
||||
add(L"f31", L"?f29 + ?f26");
|
||||
add(L"f32", L"(?f31 + ?f30) / 2");
|
||||
add(L"f33", L"?f1 - ?f21");
|
||||
add(L"f34", L"?f9 + ?f19");
|
||||
add(L"f35", L"?f9 - ?f19");
|
||||
add(L"f36", L"max(?f23, ?f29)");
|
||||
add(L"f37", L"min(?f25, ?f30)");
|
||||
add(L"f38", L"?f4 * ?f10 / 50000");
|
||||
add(L"f39", L"?f3 - ?f38");
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h1, h2;
|
||||
h1.position = L"0 ?f2";
|
||||
h1.y_maximum= L"20000";
|
||||
h1.y_minimum= L"0";
|
||||
handles.push_back(h1);
|
||||
|
||||
h2.position = L"?f25 ?f31";
|
||||
h2.x_maximum= L"10000";
|
||||
h2.x_minimum= L"-10000";
|
||||
handles.push_back(h2);
|
||||
}
|
||||
};
|
||||
class oox_shape_DoubleWave : public oox_shape
|
||||
@ -337,7 +340,7 @@ class oox_shape_DoubleWave : public oox_shape
|
||||
public:
|
||||
oox_shape_DoubleWave()
|
||||
{
|
||||
odf_type_name =L"ooxml-DoubleWave";
|
||||
odf_type_name =L"ooxml-doubleWave";
|
||||
|
||||
modifiers = L"6500 0";
|
||||
enhanced_path = L"M ?f21 ?f10 C ?f25 ?f12 ?f27 ?f13 ?f28 ?f10 ?f29 ?f12 ?f30 ?f13 ?f23 ?f10 L ?f32 ?f14 C ?f37 ?f16 ?f36 ?f15 ?f35 ?f14 ?f34 ?f16 ?f33 ?f15 ?f31 ?f14 Z N";
|
||||
@ -1315,20 +1318,27 @@ public:
|
||||
{
|
||||
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";
|
||||
enhanced_path = L"S M ?f12 ?f12 L ?f13 ?f12 ?f13 ?f14 ?f12 ?f14 Z N S M ?f0 ?f2 L ?f1 ?f2 ?f13 ?f12 ?f12 ?f12 Z N S M ?f0 ?f3 L ?f12 ?f14 ?f13 ?f14 ?f1 ?f3 Z N S M ?f0 ?f2 L ?f12 ?f12 ?f12 ?f14 ?f0 ?f3 Z N S M ?f1 ?f2 L ?f1 ?f3 ?f13 ?f14 ?f13 ?f12 Z N F M ?f0 ?f2 L ?f1 ?f2 ?f1 ?f3 ?f0 ?f3 Z M ?f12 ?f12 L ?f13 ?f12 ?f13 ?f14 ?f12 ?f14 Z M ?f0 ?f2 L ?f12 ?f12 M ?f0 ?f3 L ?f12 ?f14 M ?f1 ?f2 L ?f13 ?f12 M ?f1 ?f3 L ?f13 ?f14 N";
|
||||
text_areas = L"?f2 ?f2 ?f3 ?f4";
|
||||
view_box = L"0 0 0 0";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"12500";
|
||||
glue_points = L"?f13 ?f6 ?f9 ?f14 ?f12 ?f6 ?f9 ?f12";
|
||||
|
||||
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");
|
||||
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"?f4 / 2");
|
||||
add(L"f6", L"?f2 + ?f5");
|
||||
add(L"f7", L"?f1 - ?f0");
|
||||
add(L"f8", L"?f7 / 2");
|
||||
add(L"f9", L"?f0 + ?f8");
|
||||
add(L"f10", L"min(?f7, ?f4)");
|
||||
add(L"f11", L"$0");
|
||||
add(L"f12", L"?f10 * ?f11 / 100000");
|
||||
add(L"f13", L"?f1 - ?f12");
|
||||
add(L"f14", L"?f3 - ?f12");
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h;
|
||||
@ -1540,54 +1550,523 @@ public:
|
||||
handles.push_back(h);
|
||||
}
|
||||
};
|
||||
class oox_shape_bracketPair : public oox_shape
|
||||
class oox_shape_Frame : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_bracketPair()
|
||||
oox_shape_Frame()
|
||||
{
|
||||
odf_type_name =L"ooxml-bracketPair";
|
||||
odf_type_name =L"ooxml-frame";
|
||||
|
||||
//enhanced_path = L"M 0 ?f2 L ?f3 0 L ?f11 ?f4 L ?f2 ?f10 Z S N M ?f2 ?f10 L 0 ?f2 M ?f3 0 L ?f11 ?f4 F N";
|
||||
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 S N M ?f2 ?f10 G ?f2 ?f2 ?f20 ?f21 L 0 ?f2 G ?f2 ?f2 ?f22 ?f23 M ?f3 0 G ?f2 ?f2 ?f24 ?f25 L ?f11 ?f4 G ?f2 ?f2 ?f26 ?f27 F N";
|
||||
text_areas = L"?f5 ?f5 ?f6 ?f7";
|
||||
modifiers = L"12500";
|
||||
enhanced_path = L"M 0 0 L ?f8 0 ?f8 ?f7 0 ?f7 Z M ?f2 ?f2 L ?f2 ?f4 ?f3 ?f4 ?f3 ?f2 Z N";
|
||||
text_areas = L"?f2 ?f2 ?f3 ?f4";
|
||||
view_box = L"0 0 0 0";
|
||||
modifiers = L"23051";
|
||||
|
||||
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");
|
||||
add(L"f20", L"(5400000)/60000.0");
|
||||
add(L"f21", L"(5400000)/60000.0");
|
||||
add(L"f22", L"(10800000)/60000.0");
|
||||
add(L"f23", L"(5400000)/60000.0");
|
||||
add(L"f24", L"(16200000)/60000.0");
|
||||
add(L"f25", L"(5400000)/60000.0");
|
||||
add(L"f26", L"(0)/60000.0");
|
||||
add(L"f27", L"(5400000)/60000.0");
|
||||
/////////////////////////////////////////////////////////
|
||||
_handle h1;
|
||||
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/2");
|
||||
add(L"f6", L"logheight/2");
|
||||
add(L"f7", L"logheight");
|
||||
add(L"f8", L"logwidth");
|
||||
|
||||
h1.position = L"0 ?f2";
|
||||
h1.y_minimum = L"0";
|
||||
h1.y_maximum = L"50000";
|
||||
handles.push_back(h1);
|
||||
_handle h2;
|
||||
|
||||
h2.position = L"?f2 0";
|
||||
h2.y_maximum= L"50000";
|
||||
handles.push_back(h2);
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
|
||||
class oox_shape_Pentagon : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Pentagon()
|
||||
{
|
||||
odf_type_name =L"ooxml-pentagon";
|
||||
|
||||
enhanced_path = L"M ?f34 ?f38 L ?f11 ?f4 ?f37 ?f38 ?f36 ?f39 ?f35 ?f39 Z N";
|
||||
text_areas = L"?f35 ?f40 ?f36 ?f39";
|
||||
view_box = L"0 0 21600 21600";
|
||||
glue_points = L"?f34 ?f38 ?f35 ?f39 ?f36 ?f39 ?f37 ?f38";
|
||||
|
||||
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"?f10 * ?f41 / 100000");
|
||||
add(L"f14", L"?f7 * ?f42 / 100000");
|
||||
add(L"f15", L"?f8 * ?f42 / 100000");
|
||||
add(L"f16", L"1080000 + ?f1");
|
||||
add(L"f17", L"?f16 * ?f12 / ?f0");
|
||||
add(L"f18", L"0 - ?f17");
|
||||
add(L"f19", L"sin(?f18)");
|
||||
add(L"f20", L"0 - ?f19");
|
||||
add(L"f21", L"?f20 * ?f13");
|
||||
add(L"f22", L"18360000 + ?f1");
|
||||
add(L"f23", L"?f22 * ?f12 / ?f0");
|
||||
add(L"f24", L"0 - ?f23");
|
||||
add(L"f25", L"sin(?f24)");
|
||||
add(L"f26", L"0 - ?f25");
|
||||
add(L"f27", L"?f26 * ?f13");
|
||||
add(L"f28", L"cos(?f18)");
|
||||
add(L"f29", L"0 - ?f28");
|
||||
add(L"f30", L"?f29 * ?f14");
|
||||
add(L"f31", L"cos(?f24)");
|
||||
add(L"f32", L"0 - ?f31");
|
||||
add(L"f33", L"?f32 * ?f14");
|
||||
add(L"f34", L"?f11 - ?f21");
|
||||
add(L"f35", L"?f11 - ?f27");
|
||||
add(L"f36", L"?f11 + ?f27");
|
||||
add(L"f37", L"?f11 + ?f21");
|
||||
add(L"f38", L"?f15 - ?f30");
|
||||
add(L"f39", L"?f15 - ?f33");
|
||||
add(L"f40", L"?f38 * ?f27 / ?f21");
|
||||
add(L"f41", L"105146");
|
||||
add(L"f42", L"110557");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
|
||||
class oox_shape_Octagon : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Octagon()
|
||||
{
|
||||
odf_type_name =L"ooxml-octagon";
|
||||
|
||||
modifiers = L"29289";
|
||||
enhanced_path = L"M ?f0 ?f8 L ?f8 ?f2 ?f9 ?f2 ?f1 ?f8 ?f1 ?f10 ?f9 ?f3 ?f8 ?f3 ?f0 ?f10 Z N";
|
||||
text_areas = L"?f11 ?f11 ?f12 ?f13";
|
||||
view_box = L"0 0 21600 21600";
|
||||
glue_points = L"?f1 ?f8 ?f1 ?f10 ?f9 ?f3 ?f8 ?f3 ?f0 ?f10 ?f0 ?f8 ?f8 ?f2 ?f9 ?f2";
|
||||
|
||||
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"?f6 * ?f7 / 100000");
|
||||
add(L"f9", L"?f1 - ?f8");
|
||||
add(L"f10", L"?f3 - ?f8");
|
||||
add(L"f11", L"?f8 / 2");
|
||||
add(L"f12", L"?f1 - ?f11");
|
||||
add(L"f13", L"?f3 - ?f11");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
class oox_shape_Hexagon : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Hexagon()
|
||||
{
|
||||
odf_type_name =L"ooxml-hexagon";
|
||||
|
||||
modifiers = L"28921 115470";
|
||||
enhanced_path = L"M ?f2 ?f8 L ?f15 ?f23 ?f16 ?f23 ?f3 ?f8 ?f16 ?f24 ?f15 ?f24 Z N";
|
||||
text_areas = L"?f33 ?f34 ?f35 ?f36";
|
||||
view_box = L"0 0 21600 21600";
|
||||
glue_points = L"?f16 ?f24 ?f15 ?f24 ?f15 ?f23 ?f16 ?f23";
|
||||
|
||||
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"min(?f9, ?f6)");
|
||||
add(L"f11", L"5419351 / 1725033");
|
||||
add(L"f12", L"50000 * ?f9 / ?f10");
|
||||
add(L"f13", L"$0");
|
||||
add(L"f14", L"?f7 * ?f37 / 100000");
|
||||
add(L"f15", L"?f10 * ?f13 / 100000");
|
||||
add(L"f16", L"?f3 - ?f15");
|
||||
add(L"f17", L"3600000 + ?f1");
|
||||
add(L"f18", L"?f17 * ?f11 / ?f0");
|
||||
add(L"f19", L"0 - ?f18");
|
||||
add(L"f20", L"cos(?f19)");
|
||||
add(L"f21", L"0 - ?f20");
|
||||
add(L"f22", L"?f21 * ?f14");
|
||||
add(L"f23", L"?f8 - ?f22");
|
||||
add(L"f24", L"?f8 + ?f22");
|
||||
add(L"f25", L"?f12 * -1 / 2");
|
||||
add(L"f26", L"?f13 + ?f25");
|
||||
add(L"f27", L"if(?f26, 4, 2)");
|
||||
add(L"f28", L"if(?f26, 3, 2)");
|
||||
add(L"f29", L"if(?f26, ?f25, 0)");
|
||||
add(L"f30", L"(?f13 + ?f29) / ?f25");
|
||||
add(L"f31", L"?f30 * ?f28 / -1");
|
||||
add(L"f32", L"?f27 + ?f31");
|
||||
add(L"f33", L"?f9 * ?f32 / 24");
|
||||
add(L"f34", L"?f6 * ?f32 / 24");
|
||||
add(L"f35", L"?f3 - ?f33");
|
||||
add(L"f36", L"?f5 - ?f34");
|
||||
add(L"f37", L"115470");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
|
||||
class oox_shape_Heptagon : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Heptagon()
|
||||
{
|
||||
odf_type_name =L"ooxml-heptagon";
|
||||
|
||||
enhanced_path = L"M ?f19 ?f26 L ?f20 ?f25 ?f9 ?f2 ?f23 ?f25 ?f24 ?f26 ?f22 ?f27 ?f21 ?f27 Z N";
|
||||
text_areas = L"?f20 ?f25 ?f23 ?f28";
|
||||
view_box = L"0 0 21600 21600";
|
||||
glue_points = L"?f23 ?f25 ?f24 ?f26 ?f22 ?f27 ?f21 ?f27 ?f19 ?f26 ?f20 ?f25";
|
||||
|
||||
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"?f4 / 2");
|
||||
add(L"f6", L"?f2 + ?f5");
|
||||
add(L"f7", L"?f1 - ?f0");
|
||||
add(L"f8", L"?f7 / 2");
|
||||
add(L"f9", L"?f0 + ?f8");
|
||||
add(L"f10", L"?f8 * ?f29 / 100000");
|
||||
add(L"f11", L"?f5 * ?f30 / 100000");
|
||||
add(L"f12", L"?f6 * ?f30 / 100000");
|
||||
add(L"f13", L"?f10 * 97493 / 100000");
|
||||
add(L"f14", L"?f10 * 78183 / 100000");
|
||||
add(L"f15", L"?f10 * 43388 / 100000");
|
||||
add(L"f16", L"?f11 * 62349 / 100000");
|
||||
add(L"f17", L"?f11 * 22252 / 100000");
|
||||
add(L"f18", L"?f11 * 90097 / 100000");
|
||||
add(L"f19", L"?f9 - ?f13");
|
||||
add(L"f20", L"?f9 - ?f14");
|
||||
add(L"f21", L"?f9 - ?f15");
|
||||
add(L"f22", L"?f9 + ?f15");
|
||||
add(L"f23", L"?f9 + ?f14");
|
||||
add(L"f24", L"?f9 + ?f13");
|
||||
add(L"f25", L"?f12 - ?f16");
|
||||
add(L"f26", L"?f12 + ?f17");
|
||||
add(L"f27", L"?f12 + ?f18");
|
||||
add(L"f28", L"?f3 - ?f25");
|
||||
add(L"f29", L"102572");
|
||||
add(L"f30", L"105210");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
class oox_shape_Decagon : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Decagon()
|
||||
{
|
||||
odf_type_name =L"ooxml-decagon";
|
||||
|
||||
enhanced_path = L"M ?f2 ?f8 L ?f26 ?f37 ?f27 ?f36 ?f28 ?f36 ?f29 ?f37 ?f3 ?f8 ?f29 ?f38 ?f28 ?f39 ?f27 ?f39 ?f26 ?f38 Z N";
|
||||
text_areas = L"?f6 ?f14 ?f9 ?f15";
|
||||
view_box = L"0 0 21600 21600";
|
||||
glue_points = L"?f29 ?f37 ?f29 ?f38 ?f28 ?f39 ?f27 ?f39 ?f26 ?f38 ?f26 ?f37 ?f27 ?f36 ?f28 ?f36";
|
||||
|
||||
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"?f7 * ?f40 / 100000");
|
||||
add(L"f14", L"2160000 + ?f1");
|
||||
add(L"f15", L"?f14 * ?f12 / ?f0");
|
||||
add(L"f16", L"0 - ?f15");
|
||||
add(L"f17", L"sin(?f16)");
|
||||
add(L"f18", L"0 - ?f17");
|
||||
add(L"f19", L"?f18 * ?f10");
|
||||
add(L"f20", L"4320000 + ?f1");
|
||||
add(L"f21", L"?f20 * ?f12 / ?f0");
|
||||
add(L"f22", L"0 - ?f21");
|
||||
add(L"f23", L"sin(?f22)");
|
||||
add(L"f24", L"0 - ?f23");
|
||||
add(L"f25", L"?f24 * ?f10");
|
||||
add(L"f26", L"?f11 - ?f19");
|
||||
add(L"f27", L"?f11 - ?f25");
|
||||
add(L"f28", L"?f11 + ?f25");
|
||||
add(L"f29", L"?f11 + ?f19");
|
||||
add(L"f30", L"cos(?f22)");
|
||||
add(L"f31", L"0 - ?f30");
|
||||
add(L"f32", L"?f31 * ?f13");
|
||||
add(L"f33", L"cos(?f16)");
|
||||
add(L"f34", L"0 - ?f33");
|
||||
add(L"f35", L"?f34 * ?f13");
|
||||
add(L"f36", L"?f8 - ?f32");
|
||||
add(L"f37", L"?f8 - ?f35");
|
||||
add(L"f38", L"?f8 + ?f35");
|
||||
add(L"f39", L"?f8 + ?f32");
|
||||
add(L"f40", L"105146");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
class oox_shape_Dodecagon : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Dodecagon()
|
||||
{
|
||||
odf_type_name =L"ooxml-dodecagon";
|
||||
|
||||
enhanced_path = L"M ?f0 ?f11 L ?f6 ?f10 ?f7 ?f2 ?f8 ?f2 ?f9 ?f10 ?f1 ?f11 ?f1 ?f12 ?f9 ?f13 ?f8 ?f3 ?f7 ?f3 ?f6 ?f13 ?f0 ?f12 Z N";
|
||||
text_areas = L"?f6 ?f10 ?f9 ?f13";
|
||||
view_box = L"0 0 21600 21600";
|
||||
glue_points = L"?f9 ?f10 ?f1 ?f11 ?f1 ?f12 ?f9 ?f13 ?f8 ?f3 ?f7 ?f3 ?f6 ?f13 ?f0 ?f12 ?f0 ?f11 ?f6 ?f10 ?f7 ?f2 ?f8 ?f2";
|
||||
|
||||
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"?f5 * 2894 / 21600");
|
||||
add(L"f7", L"?f5 * 7906 / 21600");
|
||||
add(L"f8", L"?f5 * 13694 / 21600");
|
||||
add(L"f9", L"?f5 * 18706 / 21600");
|
||||
add(L"f10", L"?f4 * 2894 / 21600");
|
||||
add(L"f11", L"?f4 * 7906 / 21600");
|
||||
add(L"f12", L"?f4 * 13694 / 21600");
|
||||
add(L"f13", L"?f4 * 18706 / 21600");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
class oox_shape_Cube : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Cube()
|
||||
{
|
||||
odf_type_name =L"ooxml-cube";
|
||||
|
||||
modifiers = L"25000";
|
||||
enhanced_path = L"S M ?f0 ?f8 L ?f12 ?f8 ?f12 ?f3 ?f0 ?f3 Z N S M ?f12 ?f8 L ?f1 ?f2 ?f1 ?f9 ?f12 ?f3 Z N S M ?f0 ?f8 L ?f8 ?f2 ?f1 ?f2 ?f12 ?f8 Z N F M ?f0 ?f8 L ?f8 ?f2 ?f1 ?f2 ?f1 ?f9 ?f12 ?f3 ?f0 ?f3 Z M ?f0 ?f8 L ?f12 ?f8 ?f1 ?f2 M ?f12 ?f8 L ?f12 ?f3 N";
|
||||
text_areas = L"?f0 ?f8 ?f12 ?f3";
|
||||
view_box = L"0 0 21600 21600";
|
||||
glue_points = L"?f14 ?f2 ?f13 ?f8 ?f0 ?f11 ?f13 ?f3 ?f12 ?f11 ?f1 ?f10";
|
||||
|
||||
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"?f6 * ?f7 / 100000");
|
||||
add(L"f9", L"?f3 - ?f8");
|
||||
add(L"f10", L"?f9 / 2");
|
||||
add(L"f11", L"(?f8 + ?f3) / 2");
|
||||
add(L"f12", L"?f1 - ?f8");
|
||||
add(L"f13", L"?f12 / 2");
|
||||
add(L"f14", L"(?f8 + ?f1) / 2");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
class oox_shape_Can : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Can()
|
||||
{
|
||||
odf_type_name =L"ooxml-can";
|
||||
|
||||
modifiers = L"25000";
|
||||
enhanced_path = L"S M ?f2 ?f13 A ?f55 ?f56 ?f57 ?f58 ?f2 ?f13 ?f52 ?f54 W ?f59 ?f60 ?f61 ?f62 ?f2 ?f13 ?f52 ?f54 L ?f3 ?f15 A ?f102 ?f103 ?f104 ?f105 ?f3 ?f15 ?f99 ?f101 W ?f106 ?f107 ?f108 ?f109 ?f3 ?f15 ?f99 ?f101 Z N S M ?f2 ?f13 A ?f130 ?f131 ?f132 ?f133 ?f2 ?f13 ?f127 ?f129 W ?f134 ?f135 ?f136 ?f137 ?f2 ?f13 ?f127 ?f129 Z N F M ?f3 ?f13 A ?f157 ?f158 ?f159 ?f160 ?f3 ?f13 ?f154 ?f156 W ?f161 ?f162 ?f163 ?f164 ?f3 ?f13 ?f154 ?f156 L ?f3 ?f15 A ?f102 ?f103 ?f104 ?f105 ?f3 ?f15 ?f99 ?f101 W ?f106 ?f107 ?f108 ?f109 ?f3 ?f15 ?f99 ?f101 L ?f2 ?f13 N";
|
||||
text_areas = L"?f0 ?f8 ?f12 ?f3";
|
||||
view_box = L"0 0 21600 21600";
|
||||
glue_points = L"?f9 ?f14";
|
||||
|
||||
add(L"f0", L"10800000");
|
||||
add(L"f1", L"5400000");
|
||||
add(L"f2", L"left");
|
||||
add(L"f3", L"right");
|
||||
add(L"f4", L"top");
|
||||
add(L"f5", L"bottom");
|
||||
add(L"f6", L"?f5 - ?f4");
|
||||
add(L"f7", L"?f3 - ?f2");
|
||||
add(L"f8", L"?f7 / 2");
|
||||
add(L"f9", L"?f2 + ?f8");
|
||||
add(L"f10", L"min(?f7, ?f6)");
|
||||
add(L"f11", L"5419351 / 1725033");
|
||||
add(L"f12", L"$0");
|
||||
add(L"f13", L"?f10 * ?f12 / 200000");
|
||||
add(L"f14", L"?f13 + ?f13");
|
||||
add(L"f15", L"?f5 - ?f13");
|
||||
add(L"f16", L"21550000 - -10800000");
|
||||
add(L"f17", L"if(?f16, -10800000, 21550000)");
|
||||
add(L"f18", L"-21550000 - ?f17");
|
||||
add(L"f19", L"if(?f18, -21550000, ?f17)");
|
||||
add(L"f20", L"?f0 + ?f19");
|
||||
add(L"f21", L"?f0 + ?f1");
|
||||
add(L"f22", L"?f21 * ?f11 / ?f0");
|
||||
add(L"f23", L"0 - ?f22");
|
||||
add(L"f24", L"cos(?f23)");
|
||||
add(L"f25", L"0 - ?f24");
|
||||
add(L"f26", L"?f25 * ?f8");
|
||||
add(L"f27", L"sin(?f23)");
|
||||
add(L"f28", L"0 - ?f27");
|
||||
add(L"f29", L"?f28 * ?f13");
|
||||
add(L"f30", L"sqrt(?f26 * ?f26 + ?f29 * ?f29 + 0 * 0)");
|
||||
add(L"f31", L"?f8 * ?f13 / ?f30");
|
||||
add(L"f32", L"?f28 * ?f31");
|
||||
add(L"f33", L"?f2 - ?f32");
|
||||
add(L"f34", L"?f25 * ?f31");
|
||||
add(L"f35", L"?f13 - ?f34");
|
||||
add(L"f36", L"?f33 - ?f8");
|
||||
add(L"f37", L"?f35 - ?f13");
|
||||
add(L"f38", L"?f33 + ?f8");
|
||||
add(L"f39", L"?f35 + ?f13");
|
||||
add(L"f40", L"?f20 + ?f1");
|
||||
add(L"f41", L"?f40 * ?f11 / ?f0");
|
||||
add(L"f42", L"0 - ?f41");
|
||||
add(L"f43", L"cos(?f42)");
|
||||
add(L"f44", L"0 - ?f43");
|
||||
add(L"f45", L"?f44 * ?f8");
|
||||
add(L"f46", L"sin(?f42)");
|
||||
add(L"f47", L"0 - ?f46");
|
||||
add(L"f48", L"?f47 * ?f13");
|
||||
add(L"f49", L"sqrt(?f45 * ?f45 + ?f48 * ?f48 + 0 * 0)");
|
||||
add(L"f50", L"?f8 * ?f13 / ?f49");
|
||||
add(L"f51", L"?f47 * ?f50");
|
||||
add(L"f52", L"?f33 + ?f51");
|
||||
add(L"f53", L"?f44 * ?f50");
|
||||
add(L"f54", L"?f35 + ?f53");
|
||||
add(L"f55", L"if(?f19, ?f2, ?f36)");
|
||||
add(L"f56", L"if(?f19, ?f13, ?f37)");
|
||||
add(L"f57", L"if(?f19, ?f2, ?f38)");
|
||||
add(L"f58", L"if(?f19, ?f13, ?f39)");
|
||||
add(L"f59", L"if(?f19, ?f36, ?f52)");
|
||||
add(L"f60", L"if(?f19, ?f37, ?f54)");
|
||||
add(L"f61", L"if(?f19, ?f38, ?f52)");
|
||||
add(L"f62", L"if(?f19, ?f39, ?f54)");
|
||||
add(L"f63", L"21550000 - ?f0");
|
||||
add(L"f64", L"if(?f63, ?f0, 21550000)");
|
||||
add(L"f65", L"-21550000 - ?f64");
|
||||
add(L"f66", L"if(?f65, -21550000, ?f64)");
|
||||
add(L"f67", L"0 + ?f66");
|
||||
add(L"f68", L"0 + ?f1");
|
||||
add(L"f69", L"?f68 * ?f11 / ?f0");
|
||||
add(L"f70", L"0 - ?f69");
|
||||
add(L"f71", L"cos(?f70)");
|
||||
add(L"f72", L"0 - ?f71");
|
||||
add(L"f73", L"?f72 * ?f8");
|
||||
add(L"f74", L"sin(?f70)");
|
||||
add(L"f75", L"0 - ?f74");
|
||||
add(L"f76", L"?f75 * ?f13");
|
||||
add(L"f77", L"sqrt(?f73 * ?f73 + ?f76 * ?f76 + 0 * 0)");
|
||||
add(L"f78", L"?f8 * ?f13 / ?f77");
|
||||
add(L"f79", L"?f75 * ?f78");
|
||||
add(L"f80", L"?f3 - ?f79");
|
||||
add(L"f81", L"?f72 * ?f78");
|
||||
add(L"f82", L"?f15 - ?f81");
|
||||
add(L"f83", L"?f80 - ?f8");
|
||||
add(L"f84", L"?f82 - ?f13");
|
||||
add(L"f85", L"?f80 + ?f8");
|
||||
add(L"f86", L"?f82 + ?f13");
|
||||
add(L"f87", L"?f67 + ?f1");
|
||||
add(L"f88", L"?f87 * ?f11 / ?f0");
|
||||
add(L"f89", L"0 - ?f88");
|
||||
add(L"f90", L"cos(?f89)");
|
||||
add(L"f91", L"0 - ?f90");
|
||||
add(L"f92", L"?f91 * ?f8");
|
||||
add(L"f93", L"sin(?f89)");
|
||||
add(L"f94", L"0 - ?f93");
|
||||
add(L"f95", L"?f94 * ?f13");
|
||||
add(L"f96", L"sqrt(?f92 * ?f92 + ?f95 * ?f95 + 0 * 0)");
|
||||
add(L"f97", L"?f8 * ?f13 / ?f96");
|
||||
add(L"f98", L"?f94 * ?f97");
|
||||
add(L"f99", L"?f80 + ?f98");
|
||||
add(L"f100", L"?f91 * ?f97");
|
||||
add(L"f101", L"?f82 + ?f100");
|
||||
add(L"f102", L"if(?f66, ?f3, ?f83)");
|
||||
add(L"f103", L"if(?f66, ?f15, ?f84)");
|
||||
add(L"f104", L"if(?f66, ?f3, ?f85)");
|
||||
add(L"f105", L"if(?f66, ?f15, ?f86)");
|
||||
add(L"f106", L"if(?f66, ?f83, ?f99)");
|
||||
add(L"f107", L"if(?f66, ?f84, ?f101)");
|
||||
add(L"f108", L"if(?f66, ?f85, ?f99)");
|
||||
add(L"f109", L"if(?f66, ?f86, ?f101)");
|
||||
add(L"f110", L"21550000 - 21600000");
|
||||
add(L"f111", L"if(?f110, 21600000, 21550000)");
|
||||
add(L"f112", L"-21550000 - ?f111");
|
||||
add(L"f113", L"if(?f112, -21550000, ?f111)");
|
||||
add(L"f114", L"?f0 + ?f113");
|
||||
add(L"f115", L"?f114 + ?f1");
|
||||
add(L"f116", L"?f115 * ?f11 / ?f0");
|
||||
add(L"f117", L"0 - ?f116");
|
||||
add(L"f118", L"cos(?f117)");
|
||||
add(L"f119", L"0 - ?f118");
|
||||
add(L"f120", L"?f119 * ?f8");
|
||||
add(L"f121", L"sin(?f117)");
|
||||
add(L"f122", L"0 - ?f121");
|
||||
add(L"f123", L"?f122 * ?f13");
|
||||
add(L"f124", L"sqrt(?f120 * ?f120 + ?f123 * ?f123 + 0 * 0)");
|
||||
add(L"f125", L"?f8 * ?f13 / ?f124");
|
||||
add(L"f126", L"?f122 * ?f125");
|
||||
add(L"f127", L"?f33 + ?f126");
|
||||
add(L"f128", L"?f119 * ?f125");
|
||||
add(L"f129", L"?f35 + ?f128");
|
||||
add(L"f130", L"if(?f113, ?f2, ?f36)");
|
||||
add(L"f131", L"if(?f113, ?f13, ?f37)");
|
||||
add(L"f132", L"if(?f113, ?f2, ?f38)");
|
||||
add(L"f133", L"if(?f113, ?f13, ?f39)");
|
||||
add(L"f134", L"if(?f113, ?f36, ?f127)");
|
||||
add(L"f135", L"if(?f113, ?f37, ?f129)");
|
||||
add(L"f136", L"if(?f113, ?f38, ?f127)");
|
||||
add(L"f137", L"if(?f113, ?f39, ?f129)");
|
||||
add(L"f138", L"0 + ?f113");
|
||||
add(L"f139", L"?f13 - ?f81");
|
||||
add(L"f140", L"?f139 - ?f13");
|
||||
add(L"f141", L"?f139 + ?f13");
|
||||
add(L"f142", L"?f138 + ?f1");
|
||||
add(L"f143", L"?f142 * ?f11 / ?f0");
|
||||
add(L"f144", L"0 - ?f143");
|
||||
add(L"f145", L"cos(?f144)");
|
||||
add(L"f146", L"0 - ?f145");
|
||||
add(L"f147", L"?f146 * ?f8");
|
||||
add(L"f148", L"sin(?f144)");
|
||||
add(L"f149", L"0 - ?f148");
|
||||
add(L"f150", L"?f149 * ?f13");
|
||||
add(L"f151", L"sqrt(?f147 * ?f147 + ?f150 * ?f150 + 0 * 0)");
|
||||
add(L"f152", L"?f8 * ?f13 / ?f151");
|
||||
add(L"f153", L"?f149 * ?f152");
|
||||
add(L"f154", L"?f80 + ?f153");
|
||||
add(L"f155", L"?f146 * ?f152");
|
||||
add(L"f156", L"?f139 + ?f155");
|
||||
add(L"f157", L"if(?f113, ?f3, ?f83)");
|
||||
add(L"f158", L"if(?f113, ?f13, ?f140)");
|
||||
add(L"f159", L"if(?f113, ?f3, ?f85)");
|
||||
add(L"f160", L"if(?f113, ?f13, ?f141)");
|
||||
add(L"f161", L"if(?f113, ?f83, ?f154)");
|
||||
add(L"f162", L"if(?f113, ?f140, ?f156)");
|
||||
add(L"f163", L"if(?f113, ?f85, ?f154)");
|
||||
add(L"f164", L"if(?f113, ?f141, ?f156)");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -30,6 +30,11 @@
|
||||
*
|
||||
*/
|
||||
//+ shapetypeLeftRightRibbon
|
||||
//+ shapetypeEllipseRibbon
|
||||
//+ shapetypEllipseRibbon2
|
||||
//+ shapetypEllipseRibbon
|
||||
//+ shapetypRibbon
|
||||
//+ shapetypRibbon2
|
||||
namespace cpdoccore
|
||||
{
|
||||
class oox_shape_LeftRightRibbon : public oox_shape
|
||||
@ -108,4 +113,935 @@ public:
|
||||
handles.push_back(h3);
|
||||
}
|
||||
};
|
||||
class oox_shape_EllipseRibbon : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_EllipseRibbon()
|
||||
{
|
||||
odf_type_name =L"ooxml-ellipseRibbon";
|
||||
|
||||
enhanced_path = L"S M ?f0 ?f2 Q ?f23 ?f24 ?f14 ?f22 L ?f13 ?f31 Q ?f8 ?f34 ?f16 ?f31 L ?f15 ?f22 Q ?f25 ?f24 ?f1 ?f2 L ?f17 ?f37 ?f1 ?f35 Q ?f43 ?f42 ?f16 ?f38 L ?f16 ?f39 Q ?f8 ?f44 ?f13 ?f39 L ?f13 ?f38 Q ?f40 ?f42 ?f0 ?f35 L ?f7 ?f37 Z N S M ?f14 ?f45 L ?f14 ?f22 ?f13 ?f31 Q ?f8 ?f34 ?f16 ?f31 L ?f15 ?f22 ?f15 ?f45 Q ?f8 ?f46 ?f14 ?f45 Z N F M ?f0 ?f2 Q ?f23 ?f24 ?f14 ?f22 L ?f13 ?f31 Q ?f8 ?f34 ?f16 ?f31 L ?f15 ?f22 Q ?f25 ?f24 ?f1 ?f2 L ?f17 ?f37 ?f1 ?f35 Q ?f43 ?f42 ?f16 ?f38 L ?f16 ?f39 Q ?f8 ?f44 ?f13 ?f39 L ?f13 ?f38 Q ?f40 ?f42 ?f0 ?f35 L ?f7 ?f37 Z M ?f13 ?f38 L ?f13 ?f31 M ?f16 ?f31 L ?f16 ?f38 M ?f14 ?f22 L ?f14 ?f45 M ?f15 ?f45 L ?f15 ?f22 N";
|
||||
text_areas = L"?f13 ?f26 ?f16 ?f39";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"25000 50000 12500";
|
||||
glue_points = L"?f8 ?f26 ?f7 ?f37 ?f17 ?f37";
|
||||
|
||||
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"?f5 / 2");
|
||||
add(L"f7", L"?f5 / 8");
|
||||
add(L"f8", L"?f0 + ?f6");
|
||||
add(L"f9", L"$0");
|
||||
add(L"f10", L"$1");
|
||||
add(L"f11", L"$2");
|
||||
add(L"f12", L"?f5 * ?f10 / 200000");
|
||||
add(L"f13", L"?f8 - ?f12");
|
||||
add(L"f14", L"?f13 + ?f7");
|
||||
add(L"f15", L"?f1 - ?f14");
|
||||
add(L"f16", L"?f1 - ?f13");
|
||||
add(L"f17", L"?f1 - ?f7");
|
||||
add(L"f18", L"?f4 * ?f11 / 100000");
|
||||
add(L"f19", L"4 * ?f18 / ?f5");
|
||||
add(L"f20", L"?f14 * ?f14 / ?f5");
|
||||
add(L"f21", L"?f14 - ?f20");
|
||||
add(L"f22", L"?f19 * ?f21");
|
||||
add(L"f23", L"?f14 / 2");
|
||||
add(L"f24", L"?f19 * ?f23");
|
||||
add(L"f25", L"?f1 - ?f23");
|
||||
add(L"f26", L"?f4 * ?f9 / 100000");
|
||||
add(L"f27", L"?f26 - ?f18");
|
||||
add(L"f28", L"?f13 * ?f13 / ?f5");
|
||||
add(L"f29", L"?f13 - ?f28");
|
||||
add(L"f30", L"?f19 * ?f29");
|
||||
add(L"f31", L"?f30 + ?f27");
|
||||
add(L"f32", L"?f18 + ?f27 - ?f31");
|
||||
add(L"f33", L"?f32 + ?f18");
|
||||
add(L"f34", L"?f33 + ?f27");
|
||||
add(L"f35", L"?f3 - ?f26");
|
||||
add(L"f36", L"?f18 * 14 / 16");
|
||||
add(L"f37", L"(?f36 + ?f35) / 2");
|
||||
add(L"f38", L"?f30 + ?f35");
|
||||
add(L"f39", L"?f31 + ?f35");
|
||||
add(L"f40", L"?f13 / 2");
|
||||
add(L"f41", L"?f19 * ?f40");
|
||||
add(L"f42", L"?f41 + ?f35");
|
||||
add(L"f43", L"?f1 - ?f40");
|
||||
add(L"f44", L"?f34 + ?f35");
|
||||
add(L"f45", L"?f22 + ?f27");
|
||||
add(L"f46", L"?f26 + ?f26 - ?f45");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
|
||||
class oox_shape_EllipseRibbon2 : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_EllipseRibbon2()
|
||||
{
|
||||
odf_type_name =L"ooxml-ellipseRibbon2";
|
||||
|
||||
enhanced_path = L"S M ?f0 ?f3 Q ?f24 ?f26 ?f14 ?f23 L ?f13 ?f34 Q ?f8 ?f38 ?f16 ?f34 L ?f15 ?f23 Q ?f27 ?f26 ?f1 ?f3 L ?f17 ?f42 ?f1 ?f28 Q ?f51 ?f50 ?f16 ?f44 L ?f16 ?f46 Q ?f8 ?f53 ?f13 ?f46 L ?f13 ?f44 Q ?f47 ?f50 ?f0 ?f28 L ?f7 ?f42 Z N S M ?f14 ?f55 L ?f14 ?f23 ?f13 ?f34 Q ?f8 ?f38 ?f16 ?f34 L ?f15 ?f23 ?f15 ?f55 Q ?f8 ?f57 ?f14 ?f55 Z N F M ?f0 ?f3 L ?f7 ?f42 ?f0 ?f28 Q ?f47 ?f50 ?f13 ?f44 L ?f13 ?f46 Q ?f8 ?f53 ?f16 ?f46 L ?f16 ?f44 Q ?f51 ?f50 ?f1 ?f28 L ?f17 ?f42 ?f1 ?f3 Q ?f27 ?f26 ?f15 ?f23 L ?f16 ?f34 Q ?f8 ?f38 ?f13 ?f34 L ?f14 ?f23 Q ?f24 ?f26 ?f0 ?f3 Z M ?f13 ?f34 L ?f13 ?f44 M ?f16 ?f44 L ?f16 ?f34 M ?f14 ?f55 L ?f14 ?f23 M ?f15 ?f23 L ?f15 ?f55 N";
|
||||
text_areas = L"?f13 ?f46 ?f16 ?f39";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"25000 50000 12500";
|
||||
glue_points = L"?f7 ?f42 ?f8 ?f39 ?f17 ?f42";
|
||||
|
||||
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"?f5 / 2");
|
||||
add(L"f7", L"?f5 / 8");
|
||||
add(L"f8", L"?f0 + ?f6");
|
||||
add(L"f9", L"$0");
|
||||
add(L"f10", L"$1");
|
||||
add(L"f11", L"$2");
|
||||
add(L"f12", L"?f5 * ?f10 / 200000");
|
||||
add(L"f13", L"?f8 - ?f12");
|
||||
add(L"f14", L"?f13 + ?f7");
|
||||
add(L"f15", L"?f1 - ?f14");
|
||||
add(L"f16", L"?f1 - ?f13");
|
||||
add(L"f17", L"?f1 - ?f7");
|
||||
add(L"f18", L"?f4 * ?f11 / 100000");
|
||||
add(L"f19", L"4 * ?f18 / ?f5");
|
||||
add(L"f20", L"?f14 * ?f14 / ?f5");
|
||||
add(L"f21", L"?f14 - ?f20");
|
||||
add(L"f22", L"?f19 * ?f21");
|
||||
add(L"f23", L"?f3 - ?f22");
|
||||
add(L"f24", L"?f14 / 2");
|
||||
add(L"f25", L"?f19 * ?f24");
|
||||
add(L"f26", L"?f3 - ?f25");
|
||||
add(L"f27", L"?f1 - ?f24");
|
||||
add(L"f28", L"?f4 * ?f9 / 100000");
|
||||
add(L"f29", L"?f28 - ?f18");
|
||||
add(L"f30", L"?f13 * ?f13 / ?f5");
|
||||
add(L"f31", L"?f13 - ?f30");
|
||||
add(L"f32", L"?f19 * ?f31");
|
||||
add(L"f33", L"?f32 + ?f29");
|
||||
add(L"f34", L"?f3 - ?f33");
|
||||
add(L"f35", L"?f18 + ?f29 - ?f33");
|
||||
add(L"f36", L"?f35 + ?f18");
|
||||
add(L"f37", L"?f36 + ?f29");
|
||||
add(L"f38", L"?f3 - ?f37");
|
||||
add(L"f39", L"?f3 - ?f28");
|
||||
add(L"f40", L"?f18 * 14 / 16");
|
||||
add(L"f41", L"(?f40 + ?f39) / 2");
|
||||
add(L"f42", L"?f3 - ?f41");
|
||||
add(L"f43", L"?f32 + ?f39");
|
||||
add(L"f44", L"?f3 - ?f43");
|
||||
add(L"f45", L"?f33 + ?f39");
|
||||
add(L"f46", L"?f3 - ?f45");
|
||||
add(L"f47", L"?f13 / 2");
|
||||
add(L"f48", L"?f19 * ?f47");
|
||||
add(L"f49", L"?f48 + ?f39");
|
||||
add(L"f50", L"?f3 - ?f49");
|
||||
add(L"f51", L"?f1 - ?f47");
|
||||
add(L"f52", L"?f37 + ?f39");
|
||||
add(L"f53", L"?f3 - ?f52");
|
||||
add(L"f54", L"?f22 + ?f29");
|
||||
add(L"f55", L"?f3 - ?f54");
|
||||
add(L"f56", L"?f28 + ?f28 - ?f54");
|
||||
add(L"f57", L"?f3 - ?f56");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
|
||||
class oox_shape_Ribbon : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Ribbon()
|
||||
{
|
||||
odf_type_name =L"ooxml-ribbon";
|
||||
|
||||
enhanced_path = L"S M ?f3 ?f5 L ?f24 ?f5 A ?f72 ?f73 ?f74 ?f75 ?f24 ?f5 ?f69 ?f71 W ?f76 ?f77 ?f78 ?f79 ?f24 ?f5 ?f69 ?f71 L ?f20 ?f26 A ?f106 ?f107 ?f108 ?f109 ?f20 ?f26 ?f103 ?f105 W ?f110 ?f111 ?f112 ?f113 ?f20 ?f26 ?f103 ?f105 L ?f21 ?f27 A ?f149 ?f150 ?f151 ?f152 ?f21 ?f27 ?f146 ?f148 W ?f153 ?f154 ?f155 ?f156 ?f21 ?f27 ?f146 ?f148 L ?f25 ?f26 A ?f179 ?f180 ?f181 ?f182 ?f25 ?f26 ?f176 ?f178 W ?f183 ?f184 ?f185 ?f186 ?f25 ?f26 ?f176 ?f178 L ?f4 ?f5 ?f16 ?f29 ?f4 ?f28 ?f19 ?f28 ?f19 ?f31 A ?f226 ?f227 ?f228 ?f229 ?f19 ?f31 ?f223 ?f225 W ?f230 ?f231 ?f232 ?f233 ?f19 ?f31 ?f223 ?f225 L ?f20 ?f6 A ?f256 ?f257 ?f258 ?f259 ?f20 ?f6 ?f253 ?f255 W ?f260 ?f261 ?f262 ?f263 ?f20 ?f6 ?f253 ?f255 L ?f18 ?f28 ?f3 ?f28 ?f10 ?f29 Z N S M ?f22 ?f30 A ?f272 ?f273 ?f274 ?f275 ?f22 ?f30 ?f270 ?f271 W ?f276 ?f277 ?f278 ?f279 ?f22 ?f30 ?f270 ?f271 L ?f20 ?f26 A ?f106 ?f107 ?f108 ?f109 ?f20 ?f26 ?f103 ?f105 W ?f110 ?f111 ?f112 ?f113 ?f20 ?f26 ?f103 ?f105 L ?f22 ?f27 Z M ?f23 ?f30 A ?f319 ?f320 ?f321 ?f322 ?f23 ?f30 ?f316 ?f318 W ?f323 ?f324 ?f325 ?f326 ?f23 ?f30 ?f316 ?f318 L ?f21 ?f26 A ?f332 ?f333 ?f334 ?f335 ?f21 ?f26 ?f330 ?f331 W ?f336 ?f337 ?f338 ?f339 ?f21 ?f26 ?f330 ?f331 L ?f23 ?f27 Z N F M ?f3 ?f5 L ?f24 ?f5 A ?f72 ?f73 ?f74 ?f75 ?f24 ?f5 ?f69 ?f71 W ?f76 ?f77 ?f78 ?f79 ?f24 ?f5 ?f69 ?f71 L ?f20 ?f26 A ?f106 ?f107 ?f108 ?f109 ?f20 ?f26 ?f103 ?f105 W ?f110 ?f111 ?f112 ?f113 ?f20 ?f26 ?f103 ?f105 L ?f21 ?f27 A ?f149 ?f150 ?f151 ?f152 ?f21 ?f27 ?f146 ?f148 W ?f153 ?f154 ?f155 ?f156 ?f21 ?f27 ?f146 ?f148 L ?f25 ?f26 A ?f179 ?f180 ?f181 ?f182 ?f25 ?f26 ?f176 ?f178 W ?f183 ?f184 ?f185 ?f186 ?f25 ?f26 ?f176 ?f178 L ?f4 ?f5 ?f16 ?f29 ?f4 ?f28 ?f19 ?f28 ?f19 ?f31 A ?f226 ?f227 ?f228 ?f229 ?f19 ?f31 ?f223 ?f225 W ?f230 ?f231 ?f232 ?f233 ?f19 ?f31 ?f223 ?f225 L ?f20 ?f6 A ?f256 ?f257 ?f258 ?f259 ?f20 ?f6 ?f253 ?f255 W ?f260 ?f261 ?f262 ?f263 ?f20 ?f6 ?f253 ?f255 L ?f18 ?f28 ?f3 ?f28 ?f10 ?f29 Z M ?f22 ?f30 L ?f22 ?f27 M ?f23 ?f27 L ?f23 ?f30 M ?f18 ?f28 L ?f18 ?f32 M ?f19 ?f32 L ?f19 ?f28 N";
|
||||
text_areas = L"?f18 ?f27 ?f19 ?f6";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"16667 50000";
|
||||
glue_points = L"?f12 ?f27 ?f10 ?f29 ?f16 ?f29";
|
||||
|
||||
add(L"f0", L"16200000");
|
||||
add(L"f1", L"10800000");
|
||||
add(L"f2", L"5400000");
|
||||
add(L"f3", L"left");
|
||||
add(L"f4", L"right");
|
||||
add(L"f5", L"top");
|
||||
add(L"f6", L"bottom");
|
||||
add(L"f7", L"?f6 - ?f5");
|
||||
add(L"f8", L"?f4 - ?f3");
|
||||
add(L"f9", L"?f8 / 2");
|
||||
add(L"f10", L"?f8 / 8");
|
||||
add(L"f11", L"?f8 / 32");
|
||||
add(L"f12", L"?f3 + ?f9");
|
||||
add(L"f13", L"5419351 / 1725033");
|
||||
add(L"f14", L"$0");
|
||||
add(L"f15", L"$1");
|
||||
add(L"f16", L"?f4 - ?f10");
|
||||
add(L"f17", L"?f8 * ?f15 / 200000");
|
||||
add(L"f18", L"?f12 - ?f17");
|
||||
add(L"f19", L"?f12 + ?f17");
|
||||
add(L"f20", L"?f18 + ?f11");
|
||||
add(L"f21", L"?f19 - ?f11");
|
||||
add(L"f22", L"?f18 + ?f10");
|
||||
add(L"f23", L"?f19 - ?f10");
|
||||
add(L"f24", L"?f22 - ?f11");
|
||||
add(L"f25", L"?f23 + ?f11");
|
||||
add(L"f26", L"?f7 * ?f14 / 200000");
|
||||
add(L"f27", L"?f7 * ?f14 / 100000");
|
||||
add(L"f28", L"?f6 - ?f27");
|
||||
add(L"f29", L"?f28 / 2");
|
||||
add(L"f30", L"?f7 * ?f14 / 400000");
|
||||
add(L"f31", L"?f6 - ?f30");
|
||||
add(L"f32", L"?f27 - ?f30");
|
||||
add(L"f33", L"21550000 - ?f1");
|
||||
add(L"f34", L"if(?f33, ?f1, 21550000)");
|
||||
add(L"f35", L"-21550000 - ?f34");
|
||||
add(L"f36", L"if(?f35, -21550000, ?f34)");
|
||||
add(L"f37", L"?f0 + ?f36");
|
||||
add(L"f38", L"?f0 + ?f2");
|
||||
add(L"f39", L"?f38 * ?f13 / ?f1");
|
||||
add(L"f40", L"0 - ?f39");
|
||||
add(L"f41", L"cos(?f40)");
|
||||
add(L"f42", L"0 - ?f41");
|
||||
add(L"f43", L"?f42 * ?f11");
|
||||
add(L"f44", L"sin(?f40)");
|
||||
add(L"f45", L"0 - ?f44");
|
||||
add(L"f46", L"?f45 * ?f30");
|
||||
add(L"f47", L"sqrt(?f43 * ?f43 + ?f46 * ?f46 + 0 * 0)");
|
||||
add(L"f48", L"?f11 * ?f30 / ?f47");
|
||||
add(L"f49", L"?f45 * ?f48");
|
||||
add(L"f50", L"?f24 - ?f49");
|
||||
add(L"f51", L"?f42 * ?f48");
|
||||
add(L"f52", L"?f5 - ?f51");
|
||||
add(L"f53", L"?f50 - ?f11");
|
||||
add(L"f54", L"?f52 - ?f30");
|
||||
add(L"f55", L"?f50 + ?f11");
|
||||
add(L"f56", L"?f52 + ?f30");
|
||||
add(L"f57", L"?f37 + ?f2");
|
||||
add(L"f58", L"?f57 * ?f13 / ?f1");
|
||||
add(L"f59", L"0 - ?f58");
|
||||
add(L"f60", L"cos(?f59)");
|
||||
add(L"f61", L"0 - ?f60");
|
||||
add(L"f62", L"?f61 * ?f11");
|
||||
add(L"f63", L"sin(?f59)");
|
||||
add(L"f64", L"0 - ?f63");
|
||||
add(L"f65", L"?f64 * ?f30");
|
||||
add(L"f66", L"sqrt(?f62 * ?f62 + ?f65 * ?f65 + 0 * 0)");
|
||||
add(L"f67", L"?f11 * ?f30 / ?f66");
|
||||
add(L"f68", L"?f64 * ?f67");
|
||||
add(L"f69", L"?f50 + ?f68");
|
||||
add(L"f70", L"?f61 * ?f67");
|
||||
add(L"f71", L"?f52 + ?f70");
|
||||
add(L"f72", L"if(?f36, ?f24, ?f53)");
|
||||
add(L"f73", L"if(?f36, ?f5, ?f54)");
|
||||
add(L"f74", L"if(?f36, ?f24, ?f55)");
|
||||
add(L"f75", L"if(?f36, ?f5, ?f56)");
|
||||
add(L"f76", L"if(?f36, ?f53, ?f69)");
|
||||
add(L"f77", L"if(?f36, ?f54, ?f71)");
|
||||
add(L"f78", L"if(?f36, ?f55, ?f69)");
|
||||
add(L"f79", L"if(?f36, ?f56, ?f71)");
|
||||
add(L"f80", L"21550000 - -10800000");
|
||||
add(L"f81", L"if(?f80, -10800000, 21550000)");
|
||||
add(L"f82", L"-21550000 - ?f81");
|
||||
add(L"f83", L"if(?f82, -21550000, ?f81)");
|
||||
add(L"f84", L"?f0 + ?f83");
|
||||
add(L"f85", L"?f20 - ?f49");
|
||||
add(L"f86", L"?f26 - ?f51");
|
||||
add(L"f87", L"?f85 - ?f11");
|
||||
add(L"f88", L"?f86 - ?f30");
|
||||
add(L"f89", L"?f85 + ?f11");
|
||||
add(L"f90", L"?f86 + ?f30");
|
||||
add(L"f91", L"?f84 + ?f2");
|
||||
add(L"f92", L"?f91 * ?f13 / ?f1");
|
||||
add(L"f93", L"0 - ?f92");
|
||||
add(L"f94", L"cos(?f93)");
|
||||
add(L"f95", L"0 - ?f94");
|
||||
add(L"f96", L"?f95 * ?f11");
|
||||
add(L"f97", L"sin(?f93)");
|
||||
add(L"f98", L"0 - ?f97");
|
||||
add(L"f99", L"?f98 * ?f30");
|
||||
add(L"f100", L"sqrt(?f96 * ?f96 + ?f99 * ?f99 + 0 * 0)");
|
||||
add(L"f101", L"?f11 * ?f30 / ?f100");
|
||||
add(L"f102", L"?f98 * ?f101");
|
||||
add(L"f103", L"?f85 + ?f102");
|
||||
add(L"f104", L"?f95 * ?f101");
|
||||
add(L"f105", L"?f86 + ?f104");
|
||||
add(L"f106", L"if(?f83, ?f20, ?f87)");
|
||||
add(L"f107", L"if(?f83, ?f26, ?f88)");
|
||||
add(L"f108", L"if(?f83, ?f20, ?f89)");
|
||||
add(L"f109", L"if(?f83, ?f26, ?f90)");
|
||||
add(L"f110", L"if(?f83, ?f87, ?f103)");
|
||||
add(L"f111", L"if(?f83, ?f88, ?f105)");
|
||||
add(L"f112", L"if(?f83, ?f89, ?f103)");
|
||||
add(L"f113", L"if(?f83, ?f90, ?f105)");
|
||||
add(L"f114", L"?f2 + ?f83");
|
||||
add(L"f115", L"?f2 + ?f2");
|
||||
add(L"f116", L"?f115 * ?f13 / ?f1");
|
||||
add(L"f117", L"0 - ?f116");
|
||||
add(L"f118", L"cos(?f117)");
|
||||
add(L"f119", L"0 - ?f118");
|
||||
add(L"f120", L"?f119 * ?f11");
|
||||
add(L"f121", L"sin(?f117)");
|
||||
add(L"f122", L"0 - ?f121");
|
||||
add(L"f123", L"?f122 * ?f30");
|
||||
add(L"f124", L"sqrt(?f120 * ?f120 + ?f123 * ?f123 + 0 * 0)");
|
||||
add(L"f125", L"?f11 * ?f30 / ?f124");
|
||||
add(L"f126", L"?f122 * ?f125");
|
||||
add(L"f127", L"?f21 - ?f126");
|
||||
add(L"f128", L"?f119 * ?f125");
|
||||
add(L"f129", L"?f27 - ?f128");
|
||||
add(L"f130", L"?f127 - ?f11");
|
||||
add(L"f131", L"?f129 - ?f30");
|
||||
add(L"f132", L"?f127 + ?f11");
|
||||
add(L"f133", L"?f129 + ?f30");
|
||||
add(L"f134", L"?f114 + ?f2");
|
||||
add(L"f135", L"?f134 * ?f13 / ?f1");
|
||||
add(L"f136", L"0 - ?f135");
|
||||
add(L"f137", L"cos(?f136)");
|
||||
add(L"f138", L"0 - ?f137");
|
||||
add(L"f139", L"?f138 * ?f11");
|
||||
add(L"f140", L"sin(?f136)");
|
||||
add(L"f141", L"0 - ?f140");
|
||||
add(L"f142", L"?f141 * ?f30");
|
||||
add(L"f143", L"sqrt(?f139 * ?f139 + ?f142 * ?f142 + 0 * 0)");
|
||||
add(L"f144", L"?f11 * ?f30 / ?f143");
|
||||
add(L"f145", L"?f141 * ?f144");
|
||||
add(L"f146", L"?f127 + ?f145");
|
||||
add(L"f147", L"?f138 * ?f144");
|
||||
add(L"f148", L"?f129 + ?f147");
|
||||
add(L"f149", L"if(?f83, ?f21, ?f130)");
|
||||
add(L"f150", L"if(?f83, ?f27, ?f131)");
|
||||
add(L"f151", L"if(?f83, ?f21, ?f132)");
|
||||
add(L"f152", L"if(?f83, ?f27, ?f133)");
|
||||
add(L"f153", L"if(?f83, ?f130, ?f146)");
|
||||
add(L"f154", L"if(?f83, ?f131, ?f148)");
|
||||
add(L"f155", L"if(?f83, ?f132, ?f146)");
|
||||
add(L"f156", L"if(?f83, ?f133, ?f148)");
|
||||
add(L"f157", L"?f2 + ?f36");
|
||||
add(L"f158", L"?f25 - ?f126");
|
||||
add(L"f159", L"?f26 - ?f128");
|
||||
add(L"f160", L"?f158 - ?f11");
|
||||
add(L"f161", L"?f159 - ?f30");
|
||||
add(L"f162", L"?f158 + ?f11");
|
||||
add(L"f163", L"?f159 + ?f30");
|
||||
add(L"f164", L"?f157 + ?f2");
|
||||
add(L"f165", L"?f164 * ?f13 / ?f1");
|
||||
add(L"f166", L"0 - ?f165");
|
||||
add(L"f167", L"cos(?f166)");
|
||||
add(L"f168", L"0 - ?f167");
|
||||
add(L"f169", L"?f168 * ?f11");
|
||||
add(L"f170", L"sin(?f166)");
|
||||
add(L"f171", L"0 - ?f170");
|
||||
add(L"f172", L"?f171 * ?f30");
|
||||
add(L"f173", L"sqrt(?f169 * ?f169 + ?f172 * ?f172 + 0 * 0)");
|
||||
add(L"f174", L"?f11 * ?f30 / ?f173");
|
||||
add(L"f175", L"?f171 * ?f174");
|
||||
add(L"f176", L"?f158 + ?f175");
|
||||
add(L"f177", L"?f168 * ?f174");
|
||||
add(L"f178", L"?f159 + ?f177");
|
||||
add(L"f179", L"if(?f36, ?f25, ?f160)");
|
||||
add(L"f180", L"if(?f36, ?f26, ?f161)");
|
||||
add(L"f181", L"if(?f36, ?f25, ?f162)");
|
||||
add(L"f182", L"if(?f36, ?f26, ?f163)");
|
||||
add(L"f183", L"if(?f36, ?f160, ?f176)");
|
||||
add(L"f184", L"if(?f36, ?f161, ?f178)");
|
||||
add(L"f185", L"if(?f36, ?f162, ?f176)");
|
||||
add(L"f186", L"if(?f36, ?f163, ?f178)");
|
||||
add(L"f187", L"21550000 - ?f2");
|
||||
add(L"f188", L"if(?f187, ?f2, 21550000)");
|
||||
add(L"f189", L"-21550000 - ?f188");
|
||||
add(L"f190", L"if(?f189, -21550000, ?f188)");
|
||||
add(L"f191", L"0 + ?f190");
|
||||
add(L"f192", L"0 + ?f2");
|
||||
add(L"f193", L"?f192 * ?f13 / ?f1");
|
||||
add(L"f194", L"0 - ?f193");
|
||||
add(L"f195", L"cos(?f194)");
|
||||
add(L"f196", L"0 - ?f195");
|
||||
add(L"f197", L"?f196 * ?f11");
|
||||
add(L"f198", L"sin(?f194)");
|
||||
add(L"f199", L"0 - ?f198");
|
||||
add(L"f200", L"?f199 * ?f30");
|
||||
add(L"f201", L"sqrt(?f197 * ?f197 + ?f200 * ?f200 + 0 * 0)");
|
||||
add(L"f202", L"?f11 * ?f30 / ?f201");
|
||||
add(L"f203", L"?f199 * ?f202");
|
||||
add(L"f204", L"?f19 - ?f203");
|
||||
add(L"f205", L"?f196 * ?f202");
|
||||
add(L"f206", L"?f31 - ?f205");
|
||||
add(L"f207", L"?f204 - ?f11");
|
||||
add(L"f208", L"?f206 - ?f30");
|
||||
add(L"f209", L"?f204 + ?f11");
|
||||
add(L"f210", L"?f206 + ?f30");
|
||||
add(L"f211", L"?f191 + ?f2");
|
||||
add(L"f212", L"?f211 * ?f13 / ?f1");
|
||||
add(L"f213", L"0 - ?f212");
|
||||
add(L"f214", L"cos(?f213)");
|
||||
add(L"f215", L"0 - ?f214");
|
||||
add(L"f216", L"?f215 * ?f11");
|
||||
add(L"f217", L"sin(?f213)");
|
||||
add(L"f218", L"0 - ?f217");
|
||||
add(L"f219", L"?f218 * ?f30");
|
||||
add(L"f220", L"sqrt(?f216 * ?f216 + ?f219 * ?f219 + 0 * 0)");
|
||||
add(L"f221", L"?f11 * ?f30 / ?f220");
|
||||
add(L"f222", L"?f218 * ?f221");
|
||||
add(L"f223", L"?f204 + ?f222");
|
||||
add(L"f224", L"?f215 * ?f221");
|
||||
add(L"f225", L"?f206 + ?f224");
|
||||
add(L"f226", L"if(?f190, ?f19, ?f207)");
|
||||
add(L"f227", L"if(?f190, ?f31, ?f208)");
|
||||
add(L"f228", L"if(?f190, ?f19, ?f209)");
|
||||
add(L"f229", L"if(?f190, ?f31, ?f210)");
|
||||
add(L"f230", L"if(?f190, ?f207, ?f223)");
|
||||
add(L"f231", L"if(?f190, ?f208, ?f225)");
|
||||
add(L"f232", L"if(?f190, ?f209, ?f223)");
|
||||
add(L"f233", L"if(?f190, ?f210, ?f225)");
|
||||
add(L"f234", L"?f2 + ?f190");
|
||||
add(L"f235", L"?f20 - ?f126");
|
||||
add(L"f236", L"?f6 - ?f128");
|
||||
add(L"f237", L"?f235 - ?f11");
|
||||
add(L"f238", L"?f236 - ?f30");
|
||||
add(L"f239", L"?f235 + ?f11");
|
||||
add(L"f240", L"?f236 + ?f30");
|
||||
add(L"f241", L"?f234 + ?f2");
|
||||
add(L"f242", L"?f241 * ?f13 / ?f1");
|
||||
add(L"f243", L"0 - ?f242");
|
||||
add(L"f244", L"cos(?f243)");
|
||||
add(L"f245", L"0 - ?f244");
|
||||
add(L"f246", L"?f245 * ?f11");
|
||||
add(L"f247", L"sin(?f243)");
|
||||
add(L"f248", L"0 - ?f247");
|
||||
add(L"f249", L"?f248 * ?f30");
|
||||
add(L"f250", L"sqrt(?f246 * ?f246 + ?f249 * ?f249 + 0 * 0)");
|
||||
add(L"f251", L"?f11 * ?f30 / ?f250");
|
||||
add(L"f252", L"?f248 * ?f251");
|
||||
add(L"f253", L"?f235 + ?f252");
|
||||
add(L"f254", L"?f245 * ?f251");
|
||||
add(L"f255", L"?f236 + ?f254");
|
||||
add(L"f256", L"if(?f190, ?f20, ?f237)");
|
||||
add(L"f257", L"if(?f190, ?f6, ?f238)");
|
||||
add(L"f258", L"if(?f190, ?f20, ?f239)");
|
||||
add(L"f259", L"if(?f190, ?f6, ?f240)");
|
||||
add(L"f260", L"if(?f190, ?f237, ?f253)");
|
||||
add(L"f261", L"if(?f190, ?f238, ?f255)");
|
||||
add(L"f262", L"if(?f190, ?f239, ?f253)");
|
||||
add(L"f263", L"if(?f190, ?f240, ?f255)");
|
||||
add(L"f264", L"?f22 - ?f203");
|
||||
add(L"f265", L"?f30 - ?f205");
|
||||
add(L"f266", L"?f264 - ?f11");
|
||||
add(L"f267", L"?f265 - ?f30");
|
||||
add(L"f268", L"?f264 + ?f11");
|
||||
add(L"f269", L"?f265 + ?f30");
|
||||
add(L"f270", L"?f264 + ?f222");
|
||||
add(L"f271", L"?f265 + ?f224");
|
||||
add(L"f272", L"if(?f190, ?f22, ?f266)");
|
||||
add(L"f273", L"if(?f190, ?f30, ?f267)");
|
||||
add(L"f274", L"if(?f190, ?f22, ?f268)");
|
||||
add(L"f275", L"if(?f190, ?f30, ?f269)");
|
||||
add(L"f276", L"if(?f190, ?f266, ?f270)");
|
||||
add(L"f277", L"if(?f190, ?f267, ?f271)");
|
||||
add(L"f278", L"if(?f190, ?f268, ?f270)");
|
||||
add(L"f279", L"if(?f190, ?f269, ?f271)");
|
||||
add(L"f280", L"21550000 - -5400000");
|
||||
add(L"f281", L"if(?f280, -5400000, 21550000)");
|
||||
add(L"f282", L"-21550000 - ?f281");
|
||||
add(L"f283", L"if(?f282, -21550000, ?f281)");
|
||||
add(L"f284", L"?f1 + ?f283");
|
||||
add(L"f285", L"?f1 + ?f2");
|
||||
add(L"f286", L"?f285 * ?f13 / ?f1");
|
||||
add(L"f287", L"0 - ?f286");
|
||||
add(L"f288", L"cos(?f287)");
|
||||
add(L"f289", L"0 - ?f288");
|
||||
add(L"f290", L"?f289 * ?f11");
|
||||
add(L"f291", L"sin(?f287)");
|
||||
add(L"f292", L"0 - ?f291");
|
||||
add(L"f293", L"?f292 * ?f30");
|
||||
add(L"f294", L"sqrt(?f290 * ?f290 + ?f293 * ?f293 + 0 * 0)");
|
||||
add(L"f295", L"?f11 * ?f30 / ?f294");
|
||||
add(L"f296", L"?f292 * ?f295");
|
||||
add(L"f297", L"?f23 - ?f296");
|
||||
add(L"f298", L"?f289 * ?f295");
|
||||
add(L"f299", L"?f30 - ?f298");
|
||||
add(L"f300", L"?f297 - ?f11");
|
||||
add(L"f301", L"?f299 - ?f30");
|
||||
add(L"f302", L"?f297 + ?f11");
|
||||
add(L"f303", L"?f299 + ?f30");
|
||||
add(L"f304", L"?f284 + ?f2");
|
||||
add(L"f305", L"?f304 * ?f13 / ?f1");
|
||||
add(L"f306", L"0 - ?f305");
|
||||
add(L"f307", L"cos(?f306)");
|
||||
add(L"f308", L"0 - ?f307");
|
||||
add(L"f309", L"?f308 * ?f11");
|
||||
add(L"f310", L"sin(?f306)");
|
||||
add(L"f311", L"0 - ?f310");
|
||||
add(L"f312", L"?f311 * ?f30");
|
||||
add(L"f313", L"sqrt(?f309 * ?f309 + ?f312 * ?f312 + 0 * 0)");
|
||||
add(L"f314", L"?f11 * ?f30 / ?f313");
|
||||
add(L"f315", L"?f311 * ?f314");
|
||||
add(L"f316", L"?f297 + ?f315");
|
||||
add(L"f317", L"?f308 * ?f314");
|
||||
add(L"f318", L"?f299 + ?f317");
|
||||
add(L"f319", L"if(?f283, ?f23, ?f300)");
|
||||
add(L"f320", L"if(?f283, ?f30, ?f301)");
|
||||
add(L"f321", L"if(?f283, ?f23, ?f302)");
|
||||
add(L"f322", L"if(?f283, ?f30, ?f303)");
|
||||
add(L"f323", L"if(?f283, ?f300, ?f316)");
|
||||
add(L"f324", L"if(?f283, ?f301, ?f318)");
|
||||
add(L"f325", L"if(?f283, ?f302, ?f316)");
|
||||
add(L"f326", L"if(?f283, ?f303, ?f318)");
|
||||
add(L"f327", L"?f21 - ?f49");
|
||||
add(L"f328", L"?f327 - ?f11");
|
||||
add(L"f329", L"?f327 + ?f11");
|
||||
add(L"f330", L"?f327 + ?f68");
|
||||
add(L"f331", L"?f86 + ?f70");
|
||||
add(L"f332", L"if(?f36, ?f21, ?f328)");
|
||||
add(L"f333", L"if(?f36, ?f26, ?f88)");
|
||||
add(L"f334", L"if(?f36, ?f21, ?f329)");
|
||||
add(L"f335", L"if(?f36, ?f26, ?f90)");
|
||||
add(L"f336", L"if(?f36, ?f328, ?f330)");
|
||||
add(L"f337", L"if(?f36, ?f88, ?f331)");
|
||||
add(L"f338", L"if(?f36, ?f329, ?f330)");
|
||||
add(L"f339", L"if(?f36, ?f90, ?f331)");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
|
||||
class oox_shape_Ribbon2 : public oox_shape
|
||||
{
|
||||
public:
|
||||
oox_shape_Ribbon2()
|
||||
{
|
||||
odf_type_name =L"ooxml-ribbon2";
|
||||
|
||||
enhanced_path = L"S M ?f3 ?f6 L ?f24 ?f6 A ?f74 ?f75 ?f76 ?f77 ?f24 ?f6 ?f71 ?f73 W ?f78 ?f79 ?f80 ?f81 ?f24 ?f6 ?f71 ?f73 L ?f20 ?f27 A ?f108 ?f109 ?f110 ?f111 ?f20 ?f27 ?f105 ?f107 W ?f112 ?f113 ?f114 ?f115 ?f20 ?f27 ?f105 ?f107 L ?f21 ?f29 A ?f151 ?f152 ?f153 ?f154 ?f21 ?f29 ?f148 ?f150 W ?f155 ?f156 ?f157 ?f158 ?f21 ?f29 ?f148 ?f150 L ?f25 ?f27 A ?f181 ?f182 ?f183 ?f184 ?f25 ?f27 ?f178 ?f180 W ?f185 ?f186 ?f187 ?f188 ?f25 ?f27 ?f178 ?f180 L ?f4 ?f6 ?f16 ?f31 ?f4 ?f30 ?f19 ?f30 ?f19 ?f32 A ?f228 ?f229 ?f230 ?f231 ?f19 ?f32 ?f225 ?f227 W ?f232 ?f233 ?f234 ?f235 ?f19 ?f32 ?f225 ?f227 L ?f20 ?f5 A ?f258 ?f259 ?f260 ?f261 ?f20 ?f5 ?f255 ?f257 W ?f262 ?f263 ?f264 ?f265 ?f20 ?f5 ?f255 ?f257 L ?f18 ?f30 ?f3 ?f30 ?f10 ?f31 Z N S M ?f22 ?f33 A ?f274 ?f275 ?f276 ?f277 ?f22 ?f33 ?f272 ?f273 W ?f278 ?f279 ?f280 ?f281 ?f22 ?f33 ?f272 ?f273 L ?f20 ?f27 A ?f108 ?f109 ?f110 ?f111 ?f20 ?f27 ?f105 ?f107 W ?f112 ?f113 ?f114 ?f115 ?f20 ?f27 ?f105 ?f107 L ?f22 ?f29 Z M ?f23 ?f33 A ?f321 ?f322 ?f323 ?f324 ?f23 ?f33 ?f318 ?f320 W ?f325 ?f326 ?f327 ?f328 ?f23 ?f33 ?f318 ?f320 L ?f21 ?f27 A ?f334 ?f335 ?f336 ?f337 ?f21 ?f27 ?f332 ?f333 W ?f338 ?f339 ?f340 ?f341 ?f21 ?f27 ?f332 ?f333 L ?f23 ?f29 Z N F M ?f3 ?f6 L ?f10 ?f31 ?f3 ?f30 ?f18 ?f30 ?f18 ?f32 A ?f350 ?f351 ?f352 ?f353 ?f18 ?f32 ?f348 ?f349 W ?f354 ?f355 ?f356 ?f357 ?f18 ?f32 ?f348 ?f349 L ?f21 ?f5 A ?f374 ?f375 ?f376 ?f377 ?f21 ?f5 ?f371 ?f373 W ?f378 ?f379 ?f380 ?f381 ?f21 ?f5 ?f371 ?f373 L ?f19 ?f30 ?f19 ?f30 ?f4 ?f30 ?f16 ?f31 ?f4 ?f6 ?f25 ?f6 A ?f387 ?f388 ?f389 ?f390 ?f25 ?f6 ?f385 ?f386 W ?f391 ?f392 ?f393 ?f394 ?f25 ?f6 ?f385 ?f386 L ?f21 ?f27 A ?f334 ?f335 ?f336 ?f337 ?f21 ?f27 ?f332 ?f333 W ?f338 ?f339 ?f340 ?f341 ?f21 ?f27 ?f332 ?f333 L ?f20 ?f29 A ?f397 ?f398 ?f399 ?f400 ?f20 ?f29 ?f395 ?f396 W ?f401 ?f402 ?f403 ?f404 ?f20 ?f29 ?f395 ?f396 L ?f24 ?f27 A ?f410 ?f411 ?f412 ?f413 ?f24 ?f27 ?f408 ?f409 W ?f414 ?f415 ?f416 ?f417 ?f24 ?f27 ?f408 ?f409 Z M ?f22 ?f29 L ?f22 ?f33 M ?f23 ?f33 L ?f23 ?f29 M ?f18 ?f34 L ?f18 ?f30 M ?f19 ?f30 L ?f19 ?f34 N";
|
||||
text_areas = L"?f18 ?f5 ?f19 ?f29";
|
||||
view_box = L"0 0 21600 21600";
|
||||
modifiers = L"16667 50000";
|
||||
glue_points = L"?f10 ?f31 ?f12 ?f29 ?f16 ?f31";
|
||||
|
||||
add(L"f0", L"16200000");
|
||||
add(L"f1", L"10800000");
|
||||
add(L"f2", L"5400000");
|
||||
add(L"f3", L"left");
|
||||
add(L"f4", L"right");
|
||||
add(L"f5", L"top");
|
||||
add(L"f6", L"bottom");
|
||||
add(L"f7", L"?f6 - ?f5");
|
||||
add(L"f8", L"?f4 - ?f3");
|
||||
add(L"f9", L"?f8 / 2");
|
||||
add(L"f10", L"?f8 / 8");
|
||||
add(L"f11", L"?f8 / 32");
|
||||
add(L"f12", L"?f3 + ?f9");
|
||||
add(L"f13", L"5419351 / 1725033");
|
||||
add(L"f14", L"$0");
|
||||
add(L"f15", L"$1");
|
||||
add(L"f16", L"?f4 - ?f10");
|
||||
add(L"f17", L"?f8 * ?f15 / 200000");
|
||||
add(L"f18", L"?f12 - ?f17");
|
||||
add(L"f19", L"?f12 + ?f17");
|
||||
add(L"f20", L"?f18 + ?f11");
|
||||
add(L"f21", L"?f19 - ?f11");
|
||||
add(L"f22", L"?f18 + ?f10");
|
||||
add(L"f23", L"?f19 - ?f10");
|
||||
add(L"f24", L"?f22 - ?f11");
|
||||
add(L"f25", L"?f23 + ?f11");
|
||||
add(L"f26", L"?f7 * ?f14 / 200000");
|
||||
add(L"f27", L"?f6 - ?f26");
|
||||
add(L"f28", L"?f7 * ?f14 / 100000");
|
||||
add(L"f29", L"?f6 - ?f28");
|
||||
add(L"f30", L"?f5 + ?f28");
|
||||
add(L"f31", L"(?f30 + ?f6) / 2");
|
||||
add(L"f32", L"?f7 * ?f14 / 400000");
|
||||
add(L"f33", L"?f6 - ?f32");
|
||||
add(L"f34", L"?f27 - ?f32");
|
||||
add(L"f35", L"21550000 - -10800000");
|
||||
add(L"f36", L"if(?f35, -10800000, 21550000)");
|
||||
add(L"f37", L"-21550000 - ?f36");
|
||||
add(L"f38", L"if(?f37, -21550000, ?f36)");
|
||||
add(L"f39", L"?f2 + ?f38");
|
||||
add(L"f40", L"?f2 + ?f2");
|
||||
add(L"f41", L"?f40 * ?f13 / ?f1");
|
||||
add(L"f42", L"0 - ?f41");
|
||||
add(L"f43", L"cos(?f42)");
|
||||
add(L"f44", L"0 - ?f43");
|
||||
add(L"f45", L"?f44 * ?f11");
|
||||
add(L"f46", L"sin(?f42)");
|
||||
add(L"f47", L"0 - ?f46");
|
||||
add(L"f48", L"?f47 * ?f32");
|
||||
add(L"f49", L"sqrt(?f45 * ?f45 + ?f48 * ?f48 + 0 * 0)");
|
||||
add(L"f50", L"?f11 * ?f32 / ?f49");
|
||||
add(L"f51", L"?f47 * ?f50");
|
||||
add(L"f52", L"?f24 - ?f51");
|
||||
add(L"f53", L"?f44 * ?f50");
|
||||
add(L"f54", L"?f6 - ?f53");
|
||||
add(L"f55", L"?f52 - ?f11");
|
||||
add(L"f56", L"?f54 - ?f32");
|
||||
add(L"f57", L"?f52 + ?f11");
|
||||
add(L"f58", L"?f54 + ?f32");
|
||||
add(L"f59", L"?f39 + ?f2");
|
||||
add(L"f60", L"?f59 * ?f13 / ?f1");
|
||||
add(L"f61", L"0 - ?f60");
|
||||
add(L"f62", L"cos(?f61)");
|
||||
add(L"f63", L"0 - ?f62");
|
||||
add(L"f64", L"?f63 * ?f11");
|
||||
add(L"f65", L"sin(?f61)");
|
||||
add(L"f66", L"0 - ?f65");
|
||||
add(L"f67", L"?f66 * ?f32");
|
||||
add(L"f68", L"sqrt(?f64 * ?f64 + ?f67 * ?f67 + 0 * 0)");
|
||||
add(L"f69", L"?f11 * ?f32 / ?f68");
|
||||
add(L"f70", L"?f66 * ?f69");
|
||||
add(L"f71", L"?f52 + ?f70");
|
||||
add(L"f72", L"?f63 * ?f69");
|
||||
add(L"f73", L"?f54 + ?f72");
|
||||
add(L"f74", L"if(?f38, ?f24, ?f55)");
|
||||
add(L"f75", L"if(?f38, ?f6, ?f56)");
|
||||
add(L"f76", L"if(?f38, ?f24, ?f57)");
|
||||
add(L"f77", L"if(?f38, ?f6, ?f58)");
|
||||
add(L"f78", L"if(?f38, ?f55, ?f71)");
|
||||
add(L"f79", L"if(?f38, ?f56, ?f73)");
|
||||
add(L"f80", L"if(?f38, ?f57, ?f71)");
|
||||
add(L"f81", L"if(?f38, ?f58, ?f73)");
|
||||
add(L"f82", L"21550000 - ?f1");
|
||||
add(L"f83", L"if(?f82, ?f1, 21550000)");
|
||||
add(L"f84", L"-21550000 - ?f83");
|
||||
add(L"f85", L"if(?f84, -21550000, ?f83)");
|
||||
add(L"f86", L"?f2 + ?f85");
|
||||
add(L"f87", L"?f20 - ?f51");
|
||||
add(L"f88", L"?f27 - ?f53");
|
||||
add(L"f89", L"?f87 - ?f11");
|
||||
add(L"f90", L"?f88 - ?f32");
|
||||
add(L"f91", L"?f87 + ?f11");
|
||||
add(L"f92", L"?f88 + ?f32");
|
||||
add(L"f93", L"?f86 + ?f2");
|
||||
add(L"f94", L"?f93 * ?f13 / ?f1");
|
||||
add(L"f95", L"0 - ?f94");
|
||||
add(L"f96", L"cos(?f95)");
|
||||
add(L"f97", L"0 - ?f96");
|
||||
add(L"f98", L"?f97 * ?f11");
|
||||
add(L"f99", L"sin(?f95)");
|
||||
add(L"f100", L"0 - ?f99");
|
||||
add(L"f101", L"?f100 * ?f32");
|
||||
add(L"f102", L"sqrt(?f98 * ?f98 + ?f101 * ?f101 + 0 * 0)");
|
||||
add(L"f103", L"?f11 * ?f32 / ?f102");
|
||||
add(L"f104", L"?f100 * ?f103");
|
||||
add(L"f105", L"?f87 + ?f104");
|
||||
add(L"f106", L"?f97 * ?f103");
|
||||
add(L"f107", L"?f88 + ?f106");
|
||||
add(L"f108", L"if(?f85, ?f20, ?f89)");
|
||||
add(L"f109", L"if(?f85, ?f27, ?f90)");
|
||||
add(L"f110", L"if(?f85, ?f20, ?f91)");
|
||||
add(L"f111", L"if(?f85, ?f27, ?f92)");
|
||||
add(L"f112", L"if(?f85, ?f89, ?f105)");
|
||||
add(L"f113", L"if(?f85, ?f90, ?f107)");
|
||||
add(L"f114", L"if(?f85, ?f91, ?f105)");
|
||||
add(L"f115", L"if(?f85, ?f92, ?f107)");
|
||||
add(L"f116", L"?f0 + ?f85");
|
||||
add(L"f117", L"?f0 + ?f2");
|
||||
add(L"f118", L"?f117 * ?f13 / ?f1");
|
||||
add(L"f119", L"0 - ?f118");
|
||||
add(L"f120", L"cos(?f119)");
|
||||
add(L"f121", L"0 - ?f120");
|
||||
add(L"f122", L"?f121 * ?f11");
|
||||
add(L"f123", L"sin(?f119)");
|
||||
add(L"f124", L"0 - ?f123");
|
||||
add(L"f125", L"?f124 * ?f32");
|
||||
add(L"f126", L"sqrt(?f122 * ?f122 + ?f125 * ?f125 + 0 * 0)");
|
||||
add(L"f127", L"?f11 * ?f32 / ?f126");
|
||||
add(L"f128", L"?f124 * ?f127");
|
||||
add(L"f129", L"?f21 - ?f128");
|
||||
add(L"f130", L"?f121 * ?f127");
|
||||
add(L"f131", L"?f29 - ?f130");
|
||||
add(L"f132", L"?f129 - ?f11");
|
||||
add(L"f133", L"?f131 - ?f32");
|
||||
add(L"f134", L"?f129 + ?f11");
|
||||
add(L"f135", L"?f131 + ?f32");
|
||||
add(L"f136", L"?f116 + ?f2");
|
||||
add(L"f137", L"?f136 * ?f13 / ?f1");
|
||||
add(L"f138", L"0 - ?f137");
|
||||
add(L"f139", L"cos(?f138)");
|
||||
add(L"f140", L"0 - ?f139");
|
||||
add(L"f141", L"?f140 * ?f11");
|
||||
add(L"f142", L"sin(?f138)");
|
||||
add(L"f143", L"0 - ?f142");
|
||||
add(L"f144", L"?f143 * ?f32");
|
||||
add(L"f145", L"sqrt(?f141 * ?f141 + ?f144 * ?f144 + 0 * 0)");
|
||||
add(L"f146", L"?f11 * ?f32 / ?f145");
|
||||
add(L"f147", L"?f143 * ?f146");
|
||||
add(L"f148", L"?f129 + ?f147");
|
||||
add(L"f149", L"?f140 * ?f146");
|
||||
add(L"f150", L"?f131 + ?f149");
|
||||
add(L"f151", L"if(?f85, ?f21, ?f132)");
|
||||
add(L"f152", L"if(?f85, ?f29, ?f133)");
|
||||
add(L"f153", L"if(?f85, ?f21, ?f134)");
|
||||
add(L"f154", L"if(?f85, ?f29, ?f135)");
|
||||
add(L"f155", L"if(?f85, ?f132, ?f148)");
|
||||
add(L"f156", L"if(?f85, ?f133, ?f150)");
|
||||
add(L"f157", L"if(?f85, ?f134, ?f148)");
|
||||
add(L"f158", L"if(?f85, ?f135, ?f150)");
|
||||
add(L"f159", L"?f0 + ?f38");
|
||||
add(L"f160", L"?f25 - ?f128");
|
||||
add(L"f161", L"?f27 - ?f130");
|
||||
add(L"f162", L"?f160 - ?f11");
|
||||
add(L"f163", L"?f161 - ?f32");
|
||||
add(L"f164", L"?f160 + ?f11");
|
||||
add(L"f165", L"?f161 + ?f32");
|
||||
add(L"f166", L"?f159 + ?f2");
|
||||
add(L"f167", L"?f166 * ?f13 / ?f1");
|
||||
add(L"f168", L"0 - ?f167");
|
||||
add(L"f169", L"cos(?f168)");
|
||||
add(L"f170", L"0 - ?f169");
|
||||
add(L"f171", L"?f170 * ?f11");
|
||||
add(L"f172", L"sin(?f168)");
|
||||
add(L"f173", L"0 - ?f172");
|
||||
add(L"f174", L"?f173 * ?f32");
|
||||
add(L"f175", L"sqrt(?f171 * ?f171 + ?f174 * ?f174 + 0 * 0)");
|
||||
add(L"f176", L"?f11 * ?f32 / ?f175");
|
||||
add(L"f177", L"?f173 * ?f176");
|
||||
add(L"f178", L"?f160 + ?f177");
|
||||
add(L"f179", L"?f170 * ?f176");
|
||||
add(L"f180", L"?f161 + ?f179");
|
||||
add(L"f181", L"if(?f38, ?f25, ?f162)");
|
||||
add(L"f182", L"if(?f38, ?f27, ?f163)");
|
||||
add(L"f183", L"if(?f38, ?f25, ?f164)");
|
||||
add(L"f184", L"if(?f38, ?f27, ?f165)");
|
||||
add(L"f185", L"if(?f38, ?f162, ?f178)");
|
||||
add(L"f186", L"if(?f38, ?f163, ?f180)");
|
||||
add(L"f187", L"if(?f38, ?f164, ?f178)");
|
||||
add(L"f188", L"if(?f38, ?f165, ?f180)");
|
||||
add(L"f189", L"21550000 - -5400000");
|
||||
add(L"f190", L"if(?f189, -5400000, 21550000)");
|
||||
add(L"f191", L"-21550000 - ?f190");
|
||||
add(L"f192", L"if(?f191, -21550000, ?f190)");
|
||||
add(L"f193", L"0 + ?f192");
|
||||
add(L"f194", L"0 + ?f2");
|
||||
add(L"f195", L"?f194 * ?f13 / ?f1");
|
||||
add(L"f196", L"0 - ?f195");
|
||||
add(L"f197", L"cos(?f196)");
|
||||
add(L"f198", L"0 - ?f197");
|
||||
add(L"f199", L"?f198 * ?f11");
|
||||
add(L"f200", L"sin(?f196)");
|
||||
add(L"f201", L"0 - ?f200");
|
||||
add(L"f202", L"?f201 * ?f32");
|
||||
add(L"f203", L"sqrt(?f199 * ?f199 + ?f202 * ?f202 + 0 * 0)");
|
||||
add(L"f204", L"?f11 * ?f32 / ?f203");
|
||||
add(L"f205", L"?f201 * ?f204");
|
||||
add(L"f206", L"?f19 - ?f205");
|
||||
add(L"f207", L"?f198 * ?f204");
|
||||
add(L"f208", L"?f32 - ?f207");
|
||||
add(L"f209", L"?f206 - ?f11");
|
||||
add(L"f210", L"?f208 - ?f32");
|
||||
add(L"f211", L"?f206 + ?f11");
|
||||
add(L"f212", L"?f208 + ?f32");
|
||||
add(L"f213", L"?f193 + ?f2");
|
||||
add(L"f214", L"?f213 * ?f13 / ?f1");
|
||||
add(L"f215", L"0 - ?f214");
|
||||
add(L"f216", L"cos(?f215)");
|
||||
add(L"f217", L"0 - ?f216");
|
||||
add(L"f218", L"?f217 * ?f11");
|
||||
add(L"f219", L"sin(?f215)");
|
||||
add(L"f220", L"0 - ?f219");
|
||||
add(L"f221", L"?f220 * ?f32");
|
||||
add(L"f222", L"sqrt(?f218 * ?f218 + ?f221 * ?f221 + 0 * 0)");
|
||||
add(L"f223", L"?f11 * ?f32 / ?f222");
|
||||
add(L"f224", L"?f220 * ?f223");
|
||||
add(L"f225", L"?f206 + ?f224");
|
||||
add(L"f226", L"?f217 * ?f223");
|
||||
add(L"f227", L"?f208 + ?f226");
|
||||
add(L"f228", L"if(?f192, ?f19, ?f209)");
|
||||
add(L"f229", L"if(?f192, ?f32, ?f210)");
|
||||
add(L"f230", L"if(?f192, ?f19, ?f211)");
|
||||
add(L"f231", L"if(?f192, ?f32, ?f212)");
|
||||
add(L"f232", L"if(?f192, ?f209, ?f225)");
|
||||
add(L"f233", L"if(?f192, ?f210, ?f227)");
|
||||
add(L"f234", L"if(?f192, ?f211, ?f225)");
|
||||
add(L"f235", L"if(?f192, ?f212, ?f227)");
|
||||
add(L"f236", L"?f0 + ?f192");
|
||||
add(L"f237", L"?f20 - ?f128");
|
||||
add(L"f238", L"?f5 - ?f130");
|
||||
add(L"f239", L"?f237 - ?f11");
|
||||
add(L"f240", L"?f238 - ?f32");
|
||||
add(L"f241", L"?f237 + ?f11");
|
||||
add(L"f242", L"?f238 + ?f32");
|
||||
add(L"f243", L"?f236 + ?f2");
|
||||
add(L"f244", L"?f243 * ?f13 / ?f1");
|
||||
add(L"f245", L"0 - ?f244");
|
||||
add(L"f246", L"cos(?f245)");
|
||||
add(L"f247", L"0 - ?f246");
|
||||
add(L"f248", L"?f247 * ?f11");
|
||||
add(L"f249", L"sin(?f245)");
|
||||
add(L"f250", L"0 - ?f249");
|
||||
add(L"f251", L"?f250 * ?f32");
|
||||
add(L"f252", L"sqrt(?f248 * ?f248 + ?f251 * ?f251 + 0 * 0)");
|
||||
add(L"f253", L"?f11 * ?f32 / ?f252");
|
||||
add(L"f254", L"?f250 * ?f253");
|
||||
add(L"f255", L"?f237 + ?f254");
|
||||
add(L"f256", L"?f247 * ?f253");
|
||||
add(L"f257", L"?f238 + ?f256");
|
||||
add(L"f258", L"if(?f192, ?f20, ?f239)");
|
||||
add(L"f259", L"if(?f192, ?f5, ?f240)");
|
||||
add(L"f260", L"if(?f192, ?f20, ?f241)");
|
||||
add(L"f261", L"if(?f192, ?f5, ?f242)");
|
||||
add(L"f262", L"if(?f192, ?f239, ?f255)");
|
||||
add(L"f263", L"if(?f192, ?f240, ?f257)");
|
||||
add(L"f264", L"if(?f192, ?f241, ?f255)");
|
||||
add(L"f265", L"if(?f192, ?f242, ?f257)");
|
||||
add(L"f266", L"?f22 - ?f205");
|
||||
add(L"f267", L"?f33 - ?f207");
|
||||
add(L"f268", L"?f266 - ?f11");
|
||||
add(L"f269", L"?f267 - ?f32");
|
||||
add(L"f270", L"?f266 + ?f11");
|
||||
add(L"f271", L"?f267 + ?f32");
|
||||
add(L"f272", L"?f266 + ?f224");
|
||||
add(L"f273", L"?f267 + ?f226");
|
||||
add(L"f274", L"if(?f192, ?f22, ?f268)");
|
||||
add(L"f275", L"if(?f192, ?f33, ?f269)");
|
||||
add(L"f276", L"if(?f192, ?f22, ?f270)");
|
||||
add(L"f277", L"if(?f192, ?f33, ?f271)");
|
||||
add(L"f278", L"if(?f192, ?f268, ?f272)");
|
||||
add(L"f279", L"if(?f192, ?f269, ?f273)");
|
||||
add(L"f280", L"if(?f192, ?f270, ?f272)");
|
||||
add(L"f281", L"if(?f192, ?f271, ?f273)");
|
||||
add(L"f282", L"21550000 - ?f2");
|
||||
add(L"f283", L"if(?f282, ?f2, 21550000)");
|
||||
add(L"f284", L"-21550000 - ?f283");
|
||||
add(L"f285", L"if(?f284, -21550000, ?f283)");
|
||||
add(L"f286", L"?f1 + ?f285");
|
||||
add(L"f287", L"?f1 + ?f2");
|
||||
add(L"f288", L"?f287 * ?f13 / ?f1");
|
||||
add(L"f289", L"0 - ?f288");
|
||||
add(L"f290", L"cos(?f289)");
|
||||
add(L"f291", L"0 - ?f290");
|
||||
add(L"f292", L"?f291 * ?f11");
|
||||
add(L"f293", L"sin(?f289)");
|
||||
add(L"f294", L"0 - ?f293");
|
||||
add(L"f295", L"?f294 * ?f32");
|
||||
add(L"f296", L"sqrt(?f292 * ?f292 + ?f295 * ?f295 + 0 * 0)");
|
||||
add(L"f297", L"?f11 * ?f32 / ?f296");
|
||||
add(L"f298", L"?f294 * ?f297");
|
||||
add(L"f299", L"?f23 - ?f298");
|
||||
add(L"f300", L"?f291 * ?f297");
|
||||
add(L"f301", L"?f33 - ?f300");
|
||||
add(L"f302", L"?f299 - ?f11");
|
||||
add(L"f303", L"?f301 - ?f32");
|
||||
add(L"f304", L"?f299 + ?f11");
|
||||
add(L"f305", L"?f301 + ?f32");
|
||||
add(L"f306", L"?f286 + ?f2");
|
||||
add(L"f307", L"?f306 * ?f13 / ?f1");
|
||||
add(L"f308", L"0 - ?f307");
|
||||
add(L"f309", L"cos(?f308)");
|
||||
add(L"f310", L"0 - ?f309");
|
||||
add(L"f311", L"?f310 * ?f11");
|
||||
add(L"f312", L"sin(?f308)");
|
||||
add(L"f313", L"0 - ?f312");
|
||||
add(L"f314", L"?f313 * ?f32");
|
||||
add(L"f315", L"sqrt(?f311 * ?f311 + ?f314 * ?f314 + 0 * 0)");
|
||||
add(L"f316", L"?f11 * ?f32 / ?f315");
|
||||
add(L"f317", L"?f313 * ?f316");
|
||||
add(L"f318", L"?f299 + ?f317");
|
||||
add(L"f319", L"?f310 * ?f316");
|
||||
add(L"f320", L"?f301 + ?f319");
|
||||
add(L"f321", L"if(?f285, ?f23, ?f302)");
|
||||
add(L"f322", L"if(?f285, ?f33, ?f303)");
|
||||
add(L"f323", L"if(?f285, ?f23, ?f304)");
|
||||
add(L"f324", L"if(?f285, ?f33, ?f305)");
|
||||
add(L"f325", L"if(?f285, ?f302, ?f318)");
|
||||
add(L"f326", L"if(?f285, ?f303, ?f320)");
|
||||
add(L"f327", L"if(?f285, ?f304, ?f318)");
|
||||
add(L"f328", L"if(?f285, ?f305, ?f320)");
|
||||
add(L"f329", L"?f21 - ?f51");
|
||||
add(L"f330", L"?f329 - ?f11");
|
||||
add(L"f331", L"?f329 + ?f11");
|
||||
add(L"f332", L"?f329 + ?f70");
|
||||
add(L"f333", L"?f88 + ?f72");
|
||||
add(L"f334", L"if(?f38, ?f21, ?f330)");
|
||||
add(L"f335", L"if(?f38, ?f27, ?f90)");
|
||||
add(L"f336", L"if(?f38, ?f21, ?f331)");
|
||||
add(L"f337", L"if(?f38, ?f27, ?f92)");
|
||||
add(L"f338", L"if(?f38, ?f330, ?f332)");
|
||||
add(L"f339", L"if(?f38, ?f90, ?f333)");
|
||||
add(L"f340", L"if(?f38, ?f331, ?f332)");
|
||||
add(L"f341", L"if(?f38, ?f92, ?f333)");
|
||||
add(L"f342", L"?f18 - ?f298");
|
||||
add(L"f343", L"?f32 - ?f300");
|
||||
add(L"f344", L"?f342 - ?f11");
|
||||
add(L"f345", L"?f343 - ?f32");
|
||||
add(L"f346", L"?f342 + ?f11");
|
||||
add(L"f347", L"?f343 + ?f32");
|
||||
add(L"f348", L"?f342 + ?f317");
|
||||
add(L"f349", L"?f343 + ?f319");
|
||||
add(L"f350", L"if(?f285, ?f18, ?f344)");
|
||||
add(L"f351", L"if(?f285, ?f32, ?f345)");
|
||||
add(L"f352", L"if(?f285, ?f18, ?f346)");
|
||||
add(L"f353", L"if(?f285, ?f32, ?f347)");
|
||||
add(L"f354", L"if(?f285, ?f344, ?f348)");
|
||||
add(L"f355", L"if(?f285, ?f345, ?f349)");
|
||||
add(L"f356", L"if(?f285, ?f346, ?f348)");
|
||||
add(L"f357", L"if(?f285, ?f347, ?f349)");
|
||||
add(L"f358", L"?f0 + ?f285");
|
||||
add(L"f359", L"?f358 + ?f2");
|
||||
add(L"f360", L"?f359 * ?f13 / ?f1");
|
||||
add(L"f361", L"0 - ?f360");
|
||||
add(L"f362", L"cos(?f361)");
|
||||
add(L"f363", L"0 - ?f362");
|
||||
add(L"f364", L"?f363 * ?f11");
|
||||
add(L"f365", L"sin(?f361)");
|
||||
add(L"f366", L"0 - ?f365");
|
||||
add(L"f367", L"?f366 * ?f32");
|
||||
add(L"f368", L"sqrt(?f364 * ?f364 + ?f367 * ?f367 + 0 * 0)");
|
||||
add(L"f369", L"?f11 * ?f32 / ?f368");
|
||||
add(L"f370", L"?f366 * ?f369");
|
||||
add(L"f371", L"?f129 + ?f370");
|
||||
add(L"f372", L"?f363 * ?f369");
|
||||
add(L"f373", L"?f238 + ?f372");
|
||||
add(L"f374", L"if(?f285, ?f21, ?f132)");
|
||||
add(L"f375", L"if(?f285, ?f5, ?f240)");
|
||||
add(L"f376", L"if(?f285, ?f21, ?f134)");
|
||||
add(L"f377", L"if(?f285, ?f5, ?f242)");
|
||||
add(L"f378", L"if(?f285, ?f132, ?f371)");
|
||||
add(L"f379", L"if(?f285, ?f240, ?f373)");
|
||||
add(L"f380", L"if(?f285, ?f134, ?f371)");
|
||||
add(L"f381", L"if(?f285, ?f242, ?f373)");
|
||||
add(L"f382", L"?f25 - ?f51");
|
||||
add(L"f383", L"?f382 - ?f11");
|
||||
add(L"f384", L"?f382 + ?f11");
|
||||
add(L"f385", L"?f382 + ?f104");
|
||||
add(L"f386", L"?f54 + ?f106");
|
||||
add(L"f387", L"if(?f85, ?f25, ?f383)");
|
||||
add(L"f388", L"if(?f85, ?f6, ?f56)");
|
||||
add(L"f389", L"if(?f85, ?f25, ?f384)");
|
||||
add(L"f390", L"if(?f85, ?f6, ?f58)");
|
||||
add(L"f391", L"if(?f85, ?f383, ?f385)");
|
||||
add(L"f392", L"if(?f85, ?f56, ?f386)");
|
||||
add(L"f393", L"if(?f85, ?f384, ?f385)");
|
||||
add(L"f394", L"if(?f85, ?f58, ?f386)");
|
||||
add(L"f395", L"?f237 + ?f177");
|
||||
add(L"f396", L"?f131 + ?f179");
|
||||
add(L"f397", L"if(?f38, ?f20, ?f239)");
|
||||
add(L"f398", L"if(?f38, ?f29, ?f133)");
|
||||
add(L"f399", L"if(?f38, ?f20, ?f241)");
|
||||
add(L"f400", L"if(?f38, ?f29, ?f135)");
|
||||
add(L"f401", L"if(?f38, ?f239, ?f395)");
|
||||
add(L"f402", L"if(?f38, ?f133, ?f396)");
|
||||
add(L"f403", L"if(?f38, ?f241, ?f395)");
|
||||
add(L"f404", L"if(?f38, ?f135, ?f396)");
|
||||
add(L"f405", L"?f24 - ?f128");
|
||||
add(L"f406", L"?f405 - ?f11");
|
||||
add(L"f407", L"?f405 + ?f11");
|
||||
add(L"f408", L"?f405 + ?f147");
|
||||
add(L"f409", L"?f161 + ?f149");
|
||||
add(L"f410", L"if(?f85, ?f24, ?f406)");
|
||||
add(L"f411", L"if(?f85, ?f27, ?f163)");
|
||||
add(L"f412", L"if(?f85, ?f24, ?f407)");
|
||||
add(L"f413", L"if(?f85, ?f27, ?f165)");
|
||||
add(L"f414", L"if(?f85, ?f406, ?f408)");
|
||||
add(L"f415", L"if(?f85, ?f163, ?f409)");
|
||||
add(L"f416", L"if(?f85, ?f407, ?f408)");
|
||||
add(L"f417", L"if(?f85, ?f165, ?f409)");
|
||||
/////////////////////////////////////////////////////////
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
@ -164,6 +164,10 @@ void draw_g::serialize(std::wostream & _Wostream)
|
||||
{
|
||||
CP_XML_NODE_SIMPLE()
|
||||
{
|
||||
if (!common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_name_)
|
||||
common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_name_ = L"";
|
||||
//брееед ... иначе либра не показывает группу!!!
|
||||
|
||||
common_draw_attlists_.serialize(CP_GET_XML_NODE());
|
||||
|
||||
for (size_t i = 0; i < content_.size(); i++)
|
||||
|
||||
@ -404,13 +404,17 @@ int draw_enhanced_geometry::parsing(_CP_OPT(std::wstring) val)
|
||||
/// draw-enhanced_geometry_attlist
|
||||
void draw_enhanced_geometry_attlist::serialize(CP_ATTR_NODE)
|
||||
{
|
||||
if (draw_modifiers_ && draw_modifiers_->empty())
|
||||
{
|
||||
draw_modifiers_ = boost::none;
|
||||
}
|
||||
CP_XML_ATTR_OPT(L"draw:type", draw_type_);
|
||||
CP_XML_ATTR_OPT(L"drawooo:sub-view-size", draw_sub_view_size_);
|
||||
CP_XML_ATTR_OPT(L"draw:text-areas", draw_text_areas_);
|
||||
CP_XML_ATTR_OPT(L"draw:text-rotate-angle", draw_text_rotate_angle_);
|
||||
CP_XML_ATTR_OPT(L"draw:modifiers", draw_modifiers_);
|
||||
CP_XML_ATTR_OPT(L"drawooo:enhanced-path", draw_enhanced_path_);
|
||||
//CP_XML_ATTR_OPT(L"draw:enhanced-path", draw_enhanced_path_);
|
||||
//CP_XML_ATTR_OPT(L"drawooo:enhanced-path", draw_enhanced_path_);
|
||||
CP_XML_ATTR_OPT(L"draw:enhanced-path", draw_enhanced_path_);
|
||||
CP_XML_ATTR_OPT(L"draw:glue-points", draw_glue_points_);
|
||||
CP_XML_ATTR_OPT(L"draw:mirror-vertical", draw_mirror_vertical_);
|
||||
CP_XML_ATTR_OPT(L"draw:mirror-horizontal", draw_mirror_horizontal_);
|
||||
|
||||
@ -394,7 +394,6 @@ namespace odf_writer
|
||||
|
||||
CP_XML_ATTR(L"office:version", L"1.2");
|
||||
|
||||
CP_XML_NODE(L"office:font-face-decls");
|
||||
if (content)
|
||||
{
|
||||
CP_XML_STREAM() << content->styles_str();
|
||||
|
||||
@ -230,10 +230,11 @@ std::wstring odf_chart_context::Impl::convert_formula(std::wstring oox_formula)
|
||||
else
|
||||
{
|
||||
//open office dont support defined names in chart formula
|
||||
// 7501214.xlsx - частичное заполнение local-table
|
||||
int col = -1, row = -1;
|
||||
utils::parsing_ref( refs[0], col, row);
|
||||
|
||||
if (col < 0 && row < 0)
|
||||
if (col < 0 && row < 0 && (odf_context_->type != SpreadsheetDocument))
|
||||
{
|
||||
local_table_enabled_ = true;
|
||||
//find defined name ????
|
||||
@ -1587,7 +1588,9 @@ void odf_chart_context::set_cash(std::wstring format, std::vector<std::wstring>
|
||||
|
||||
int col1 = -1, col2 = -1, row1 = -1, row2 = -1;
|
||||
|
||||
if (refs.size() < 1) return;
|
||||
if (refs.size() < 1) return;
|
||||
if (refs[0].empty()) return;
|
||||
|
||||
utils::parsing_ref( refs[0], col1, row1);
|
||||
|
||||
if (refs.size() > 1)
|
||||
@ -1694,7 +1697,7 @@ int odf_chart_context::Impl::create_local_table_rows(int curr_row, ods_table_sta
|
||||
|
||||
add = false;
|
||||
|
||||
if (cells[i].row > curr_row + 1 && !header)
|
||||
if (cells[i].row > curr_row + 1/* && !header*/)
|
||||
{
|
||||
office_element_ptr row_elm;
|
||||
|
||||
|
||||
@ -41,6 +41,7 @@
|
||||
#include "odf_conversion_context.h"
|
||||
#include "odf_rels.h"
|
||||
|
||||
#include "styles.h"
|
||||
#include "style_paragraph_properties.h"
|
||||
|
||||
#include "../../DesktopEditor/graphics/pro/Fonts.h"
|
||||
@ -263,33 +264,50 @@ 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"font-face-decls", object.content_styles, this, true);
|
||||
|
||||
for (boost::unordered_map<std::wstring, int>::const_iterator it = object.mapFonts.begin(); it != object.mapFonts.end(); ++it)
|
||||
{
|
||||
office_element_ptr font_elm;
|
||||
create_element(L"style", L"font-face", font_elm, this, true);
|
||||
|
||||
style_font_face* font = dynamic_cast<style_font_face*>(font_elm.get());
|
||||
|
||||
if (font)
|
||||
{
|
||||
font->style_name_ = it->first;
|
||||
font->svg_font_family_ = it->first;
|
||||
|
||||
object.content_styles.back()->add_child_element(font_elm);
|
||||
}
|
||||
}
|
||||
|
||||
object.styles.push_back(object.content_styles.back()); //копия
|
||||
|
||||
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());
|
||||
|
||||
|
||||
if (isRoot)
|
||||
{
|
||||
create_element(L"office", L"font-face-decls", object.styles, this, true);
|
||||
|
||||
create_element(L"office", L"automatic-styles", object.styles, this, true);
|
||||
object.style_context->process_automatic_for_styles(object.styles.back());
|
||||
page_layout_context()->process_automatic_for_styles(object.styles.back());
|
||||
|
||||
create_element(L"office", L"master-styles", object.styles, this, true);
|
||||
page_layout_context()->process_master_styles(object.styles.back());
|
||||
|
||||
create_element(L"office", L"font-face-decls", object.content_styles, this, true);
|
||||
page_layout_context()->process_master_styles(object.styles.back());
|
||||
}
|
||||
|
||||
|
||||
create_element(L"office", L"automatic-styles", object.content_styles, this, true);
|
||||
object.style_context->process_automatic_styles(object.content_styles.back());
|
||||
}
|
||||
|
||||
office_element_ptr odf_conversion_context::start_tabs()
|
||||
{
|
||||
create_element(L"style", L"tab-stops", temporary_.elm, this,true);
|
||||
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)
|
||||
@ -390,5 +408,18 @@ void odf_conversion_context::end_tabs()
|
||||
temporary_.style_name = L"";
|
||||
|
||||
}
|
||||
void odf_conversion_context::add_font(const std::wstring& font_name)
|
||||
{
|
||||
if (objects_.empty())return;
|
||||
|
||||
if (objects_[current_object_].mapFonts.find(font_name) == objects_[current_object_].mapFonts.end())
|
||||
{
|
||||
objects_[current_object_].mapFonts.insert(std::make_pair(font_name, 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
objects_[current_object_].mapFonts[font_name]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -76,6 +76,8 @@ class odf_conversion_context : boost::noncopyable
|
||||
odf_style_context_ptr style_context;
|
||||
odf_settings_context_ptr settings_context;
|
||||
_mediaitems mediaitems;
|
||||
|
||||
boost::unordered_map<std::wstring, int> mapFonts;
|
||||
};
|
||||
|
||||
public:
|
||||
@ -85,6 +87,7 @@ public:
|
||||
virtual ~odf_conversion_context();
|
||||
|
||||
void set_fonts_directory(std::wstring pathFonts);
|
||||
void add_font(const std::wstring & font_name);
|
||||
|
||||
virtual void start_document() = 0 ;
|
||||
virtual void end_document();
|
||||
|
||||
@ -191,6 +191,7 @@ struct odf_drawing_state
|
||||
path_ = L"";
|
||||
view_box_ = L"";
|
||||
path_last_command_ = L"";
|
||||
path_closed_ = false;
|
||||
|
||||
replacement_ = L"";
|
||||
oox_shape_preset_ = -1;
|
||||
@ -199,7 +200,7 @@ struct odf_drawing_state
|
||||
in_group_ = false;
|
||||
text_box_tableframe_= false;
|
||||
|
||||
flipH_ = flipV_ = false;
|
||||
flipH_ = flipV_ = false;
|
||||
|
||||
}
|
||||
std::vector<odf_element_state> elements_;
|
||||
@ -229,6 +230,7 @@ struct odf_drawing_state
|
||||
std::wstring path_;
|
||||
std::wstring view_box_;
|
||||
std::wstring path_last_command_;
|
||||
bool path_closed_;
|
||||
oox_shape_ptr oox_shape_;
|
||||
//----------------------------------------------------------
|
||||
int oox_shape_preset_;
|
||||
@ -346,7 +348,7 @@ void odf_drawing_context::set_background_state(bool Val)
|
||||
void odf_drawing_context::check_anchor()
|
||||
{
|
||||
return;
|
||||
if ((impl_->is_footer_ || impl_->is_header_ || impl_->is_background_) && (impl_->anchor_settings_.run_through_) && (impl_->anchor_settings_.run_through_->get_type() == run_through::Background))
|
||||
if ((/*impl_->is_footer_ || impl_->is_header_ ||*/ impl_->is_background_) && (impl_->anchor_settings_.run_through_) && (impl_->anchor_settings_.run_through_->get_type() == run_through::Background))
|
||||
{
|
||||
set_anchor(anchor_type::Char);
|
||||
//подозрительно на подложку страницы
|
||||
@ -385,6 +387,8 @@ void odf_drawing_context::start_group()
|
||||
//если группа топовая - то данные если не записать - сотруться
|
||||
if (!impl_->current_drawing_state_.name_.empty())
|
||||
group->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_name_ = impl_->current_drawing_state_.name_;
|
||||
else
|
||||
group->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_name_ = L"";
|
||||
if (impl_->current_drawing_state_.z_order_ >= 0)
|
||||
group->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_z_index_ = impl_->current_drawing_state_.z_order_;
|
||||
//if (!impl_->current_drawing_state_.description_.empty())
|
||||
@ -392,7 +396,6 @@ void odf_drawing_context::start_group()
|
||||
if (impl_->current_drawing_state_.hidden_)
|
||||
group->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.drawooo_display_ = L"printer";
|
||||
|
||||
impl_->current_drawing_state_.name_ = L"";
|
||||
impl_->current_drawing_state_.z_order_ = -1;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////
|
||||
@ -427,6 +430,9 @@ void odf_drawing_context::start_group()
|
||||
|
||||
if (group)
|
||||
{
|
||||
if ((impl_->anchor_settings_.anchor_type_) && (impl_->anchor_settings_.anchor_type_->get_type() == anchor_type::Page) && level == 0)
|
||||
impl_->anchor_settings_.anchor_type_ = anchor_type::Paragraph;
|
||||
|
||||
group->common_draw_attlists_.shape_with_text_and_styles_.common_text_anchor_attlist_.type_ = impl_->anchor_settings_.anchor_type_;
|
||||
impl_->anchor_settings_.anchor_type_ = boost::none;
|
||||
}
|
||||
@ -702,8 +708,14 @@ office_element_ptr odf_drawing_context::Impl::create_draw_element(int type)
|
||||
create_element(L"draw", L"polygon", element, odf_context_);
|
||||
break;
|
||||
case 9:
|
||||
case 10:
|
||||
{
|
||||
create_element(L"draw", L"connector", element, odf_context_);
|
||||
break;
|
||||
draw_connector* connector = dynamic_cast<draw_connector*>(element.get());
|
||||
|
||||
if (type == 10) connector->draw_connector_attlist_.draw_type_ = L"curve";
|
||||
else connector->draw_connector_attlist_.draw_type_ = L"standard";
|
||||
}break;
|
||||
case 5000:
|
||||
create_element(L"draw", L"g", element, odf_context_);
|
||||
break;
|
||||
@ -844,7 +856,7 @@ bool odf_drawing_context::change_text_box_2_wordart()
|
||||
if (sz == 2) impl_->root_element_ = draw_elm;
|
||||
return true;
|
||||
}
|
||||
draw_base* s = dynamic_cast<draw_base*>(impl_->current_drawing_state_.elements_.back().elm.get());
|
||||
draw_rect* s = dynamic_cast<draw_rect*>(impl_->current_drawing_state_.elements_.back().elm.get());
|
||||
if (s)
|
||||
{
|
||||
//------------------------------------------------------------------------
|
||||
@ -886,7 +898,7 @@ bool odf_drawing_context::change_text_box_2_wordart()
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
void odf_drawing_context::end_shape()
|
||||
@ -926,6 +938,37 @@ void odf_drawing_context::end_shape()
|
||||
if (line->draw_line_attlist_.svg_y1_ && impl_->current_drawing_state_.svg_height_ && !line->draw_line_attlist_.svg_y2_)
|
||||
line->draw_line_attlist_.svg_y2_ = line->draw_line_attlist_.svg_y1_.get() + impl_->current_drawing_state_.svg_height_.get();
|
||||
|
||||
if (impl_->current_drawing_state_.rotateAngle_)
|
||||
{
|
||||
std::wstring strTransform;
|
||||
|
||||
odf_types::length x11 = odf_types::length((line->draw_line_attlist_.svg_x1_->get_value() + line->draw_line_attlist_.svg_x2_->get_value()) / 2., line->draw_line_attlist_.svg_x2_->get_unit());
|
||||
odf_types::length y11 = odf_types::length((line->draw_line_attlist_.svg_y1_->get_value() + line->draw_line_attlist_.svg_y2_->get_value()) / 2., line->draw_line_attlist_.svg_y2_->get_unit());
|
||||
|
||||
//if (impl_->current_drawing_state_.in_group_)
|
||||
{
|
||||
if (line->draw_line_attlist_.svg_x1_&& line->draw_line_attlist_.svg_y1_)
|
||||
{
|
||||
strTransform += std::wstring(L" translate(-") + boost::lexical_cast<std::wstring>(x11)
|
||||
+ std::wstring(L",-") + boost::lexical_cast<std::wstring>(y11)
|
||||
+ std::wstring(L")" );
|
||||
}
|
||||
|
||||
}
|
||||
strTransform += std::wstring(L"rotate(") + boost::lexical_cast<std::wstring>(impl_->current_drawing_state_.rotateAngle_.get()) + std::wstring(L")");
|
||||
if (line->draw_line_attlist_.svg_x1_&& line->draw_line_attlist_.svg_y1_)
|
||||
{
|
||||
strTransform += std::wstring(L" translate(") + boost::lexical_cast<std::wstring>(x11)
|
||||
+ std::wstring(L",") + boost::lexical_cast<std::wstring>(y11)
|
||||
+ std::wstring(L")" );
|
||||
}
|
||||
if (strTransform.empty() == false)
|
||||
{
|
||||
line->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_transform_ = strTransform;
|
||||
}
|
||||
|
||||
impl_->current_drawing_state_.rotateAngle_ = boost::none;
|
||||
}
|
||||
impl_->current_drawing_state_.svg_height_ = boost::none;
|
||||
impl_->current_drawing_state_.svg_width_ = boost::none;
|
||||
|
||||
@ -1094,6 +1137,11 @@ void odf_drawing_context::end_shape()
|
||||
end_element();
|
||||
}
|
||||
|
||||
bool odf_drawing_context::isCustomClosed()
|
||||
{
|
||||
return impl_->current_drawing_state_.path_closed_;
|
||||
}
|
||||
|
||||
bool odf_drawing_context::isLineShape()
|
||||
{
|
||||
if (impl_->current_level_.empty()) return false;
|
||||
@ -1118,6 +1166,12 @@ bool odf_drawing_context::isLineShape()
|
||||
case 49: //SimpleTypes::shapetypeCurvedConnector4:
|
||||
case 50: //SimpleTypes::shapetypeCurvedConnector5:
|
||||
case 31: //SimpleTypes::shapetypeBracketPair
|
||||
case 30: //SimpleTypes::shapetypeBracePair
|
||||
case 148: //SimpleTypes::shapetypeRightBracket
|
||||
case 111: //SimpleTypes::shapetypeLeftBracket
|
||||
case 147: //SimpleTypes::shapetypeRightBrace
|
||||
case 110: //SimpleTypes::shapetypeLeftBrace
|
||||
case 18: //SimpleTypes::shapetypeArc
|
||||
return true;
|
||||
case 1000:
|
||||
if (impl_->current_graphic_properties->common_draw_fill_attlist_.draw_fill_.get_value_or(draw_fill(draw_fill::solid)).get_type() == draw_fill::none)
|
||||
@ -1224,10 +1278,14 @@ void odf_drawing_context::end_line_properties()
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void odf_drawing_context::set_name(const std::wstring & name)
|
||||
{
|
||||
if (name.empty()) return;
|
||||
|
||||
impl_->current_drawing_state_.name_ = name;
|
||||
}
|
||||
void odf_drawing_context::set_description (const std::wstring & description)
|
||||
{
|
||||
if (description.empty()) return;
|
||||
|
||||
impl_->current_drawing_state_.description_ = description;
|
||||
}
|
||||
void odf_drawing_context::set_hidden (bool bVal)
|
||||
@ -1248,6 +1306,12 @@ void odf_drawing_context::set_opacity(double percent_)
|
||||
break;
|
||||
}
|
||||
}
|
||||
void odf_drawing_context::set_grayscale()
|
||||
{
|
||||
if (!impl_->current_graphic_properties)return;
|
||||
|
||||
impl_->current_graphic_properties->common_draw_fill_attlist_.draw_color_mode_ = L"greyscale";
|
||||
}
|
||||
void odf_drawing_context::set_shadow(int type, std::wstring hexColor, _CP_OPT(double) opacity, double dist_pt, double dist_pt_y )
|
||||
{
|
||||
if (!impl_->current_graphic_properties)return;
|
||||
@ -1317,7 +1381,7 @@ void odf_drawing_context::set_no_fill()
|
||||
switch(impl_->current_drawing_part_)
|
||||
{
|
||||
case Area:
|
||||
if ((impl_->is_footer_ || impl_->is_header_ || impl_->is_background_) &&
|
||||
if ((/*impl_->is_footer_ || impl_->is_header_ ||*/ impl_->is_background_) &&
|
||||
(impl_->current_graphic_properties->common_draw_fill_attlist_.draw_fill_) &&
|
||||
(impl_->current_graphic_properties->common_draw_fill_attlist_.draw_fill_->get_type() == draw_fill::bitmap))
|
||||
{
|
||||
@ -1367,7 +1431,7 @@ void odf_drawing_context::set_solid_fill(std::wstring 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_) &&
|
||||
if ((/*impl_->is_footer_ || impl_->is_header_ ||*/ impl_->is_background_) &&
|
||||
(impl_->current_graphic_properties->common_draw_fill_attlist_.draw_fill_) &&
|
||||
(impl_->current_graphic_properties->common_draw_fill_attlist_.draw_fill_->get_type() == draw_fill::bitmap))
|
||||
{
|
||||
@ -1419,6 +1483,8 @@ void odf_drawing_context::add_path_element(std::wstring command, std::wstring st
|
||||
|
||||
impl_->current_drawing_state_.path_ += strE + L" ";
|
||||
|
||||
if (command == L"Z")
|
||||
impl_->current_drawing_state_.path_closed_ = true;
|
||||
if (command == L"N")
|
||||
impl_->current_drawing_state_.path_last_command_.clear();
|
||||
}
|
||||
@ -2045,14 +2111,24 @@ void odf_drawing_context::set_line_tail(int type, int len, int width)
|
||||
|
||||
impl_->current_graphic_properties->draw_marker_end_ = add_marker_style(type);
|
||||
|
||||
switch(width)
|
||||
if (impl_->current_drawing_state_.svg_width_ && impl_->current_drawing_state_.svg_height_)
|
||||
{
|
||||
case 0://lineendwidthLarge
|
||||
impl_->current_graphic_properties->draw_marker_end_width_ = length(0.4, length::cm); break;
|
||||
case 1://lineendwidthMedium
|
||||
impl_->current_graphic_properties->draw_marker_end_width_ = length(0.3, length::cm); break;
|
||||
case 2://lineendwidthSmall
|
||||
impl_->current_graphic_properties->draw_marker_end_width_ = length(0.2, length::cm); break;
|
||||
double sz_x =impl_->current_drawing_state_.svg_width_->get_value_unit(odf_types::length::pt);
|
||||
double sz_y =impl_->current_drawing_state_.svg_height_->get_value_unit(odf_types::length::pt);
|
||||
|
||||
impl_->current_graphic_properties->draw_marker_end_width_ = length((std::max)(sz_x, sz_y) / 10., odf_types::length::pt);
|
||||
}
|
||||
if (!impl_->current_graphic_properties->draw_marker_end_width_)
|
||||
{
|
||||
switch(width)
|
||||
{
|
||||
case 0://lineendwidthLarge
|
||||
impl_->current_graphic_properties->draw_marker_end_width_ = length(0.4, length::cm); break;
|
||||
case 1://lineendwidthMedium
|
||||
impl_->current_graphic_properties->draw_marker_end_width_ = length(0.3, length::cm); break;
|
||||
case 2://lineendwidthSmall
|
||||
impl_->current_graphic_properties->draw_marker_end_width_ = length(0.2, length::cm); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
void odf_drawing_context::set_line_head(int type, int len, int width)
|
||||
@ -2061,14 +2137,24 @@ void odf_drawing_context::set_line_head(int type, int len, int width)
|
||||
|
||||
impl_->current_graphic_properties->draw_marker_start_ = add_marker_style(type);
|
||||
|
||||
switch(width)
|
||||
if (impl_->current_drawing_state_.svg_width_ && impl_->current_drawing_state_.svg_height_)
|
||||
{
|
||||
case 0://lineendwidthLarge
|
||||
impl_->current_graphic_properties->draw_marker_start_width_ = length(0.4, length::cm); break;
|
||||
case 1://lineendwidthMedium
|
||||
impl_->current_graphic_properties->draw_marker_start_width_ = length(0.3, length::cm); break;
|
||||
case 2://lineendwidthSmall
|
||||
impl_->current_graphic_properties->draw_marker_start_width_ = length(0.2, length::cm); break;
|
||||
double sz_x =impl_->current_drawing_state_.svg_width_->get_value_unit(odf_types::length::pt);
|
||||
double sz_y =impl_->current_drawing_state_.svg_height_->get_value_unit(odf_types::length::pt);
|
||||
|
||||
impl_->current_graphic_properties->draw_marker_start_width_ = length((std::max)(sz_x, sz_y) / 10., odf_types::length::pt);
|
||||
}
|
||||
if (!impl_->current_graphic_properties->draw_marker_start_width_)
|
||||
{
|
||||
switch(width)
|
||||
{
|
||||
case 0://lineendwidthLarge
|
||||
impl_->current_graphic_properties->draw_marker_start_width_ = length(0.4, length::cm); break;
|
||||
case 1://lineendwidthMedium
|
||||
impl_->current_graphic_properties->draw_marker_start_width_ = length(0.3, length::cm); break;
|
||||
case 2://lineendwidthSmall
|
||||
impl_->current_graphic_properties->draw_marker_start_width_ = length(0.2, length::cm); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2391,7 +2477,7 @@ void odf_drawing_context::set_textarea_padding(_CP_OPT(double) & left, _CP_OPT(d
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
void odf_drawing_context::start_image(std::wstring odf_path)
|
||||
{
|
||||
if (impl_->is_footer_ || impl_->is_header_ || impl_->is_background_)
|
||||
if (/*impl_->is_footer_ || impl_->is_header_ ||*/ impl_->is_background_)//AstraIntlCaseStudyFinal0.docx
|
||||
{
|
||||
start_shape(142/*SimpleTypes::shapetypeRect*/);
|
||||
start_bitmap_style();
|
||||
@ -2514,7 +2600,10 @@ void odf_drawing_context::set_text_box_min_size(bool val)
|
||||
if (impl_->current_graphic_properties)
|
||||
{
|
||||
impl_->current_graphic_properties->draw_auto_grow_height_ = true;
|
||||
impl_->current_graphic_properties->draw_auto_grow_width_ = true;
|
||||
//impl_->current_graphic_properties->draw_auto_grow_width_ = true; //Example_2.xlsx
|
||||
|
||||
impl_->current_graphic_properties->draw_fit_to_size_ = false;
|
||||
impl_->current_graphic_properties->style_shrink_to_fit_ = false;
|
||||
}
|
||||
|
||||
if (impl_->current_drawing_state_.elements_.empty()) return;
|
||||
@ -2675,7 +2764,7 @@ void odf_drawing_context::set_text_box_parent_style(std::wstring style_name)
|
||||
|
||||
void odf_drawing_context::end_image()
|
||||
{
|
||||
if (impl_->is_footer_ || impl_->is_header_ || impl_->is_background_)
|
||||
if (/*impl_->is_footer_ || impl_->is_header_ ||*/ impl_->is_background_)
|
||||
{
|
||||
end_bitmap_style();
|
||||
end_shape();
|
||||
|
||||
@ -158,6 +158,8 @@ public:
|
||||
void set_program(std::wstring program);
|
||||
|
||||
bool isLineShape();
|
||||
bool isCustomClosed();
|
||||
|
||||
void corrected_line_fill();
|
||||
|
||||
office_element_ptr & get_root_element();
|
||||
@ -224,6 +226,7 @@ public:
|
||||
//void end_shadow_properties();
|
||||
// пока одной функией ..
|
||||
void set_shadow (int type, std::wstring hexColor, _CP_OPT(double) opacity, double dist_pt, double dist_pt_y = -1);
|
||||
void set_grayscale();
|
||||
|
||||
void set_text (odf_text_context* text_context);
|
||||
void set_textarea_vertical_align(int align);
|
||||
|
||||
@ -185,12 +185,12 @@ void odf_table_context::end_table()
|
||||
//последние объединенные ячейки ..
|
||||
for (size_t i = 0 ; i < impl_->current_table().columns.size(); i++)
|
||||
{
|
||||
impl_->current_table().current_column = i + 1;
|
||||
impl_->current_table().current_column = (int)i + 1;
|
||||
set_cell_row_span_restart();
|
||||
}
|
||||
for (size_t i = 0 ; i < impl_->current_table().rows.size(); i++)
|
||||
{
|
||||
impl_->current_table().current_row = i + 1;
|
||||
impl_->current_table().current_row = (int)i + 1;
|
||||
set_cell_column_span_restart();
|
||||
}
|
||||
style * style_ = dynamic_cast<style *>(impl_->current_table().table.style_elm.get());
|
||||
@ -432,7 +432,7 @@ int odf_table_context::count_columns ()
|
||||
{
|
||||
if (impl_->empty()) return 0;
|
||||
|
||||
return impl_->current_table().columns.size();
|
||||
return (int)impl_->current_table().columns.size();
|
||||
}
|
||||
int odf_table_context::count_rows ()
|
||||
{
|
||||
@ -498,7 +498,7 @@ void odf_table_context::start_cell(office_element_ptr &elm, bool styled)
|
||||
table_table_cell * cell = dynamic_cast<table_table_cell *>(state_row.spanned_column_cell[0].get());
|
||||
if (!cell)return;
|
||||
|
||||
cell->table_table_cell_attlist_extra_.table_number_columns_spanned_ = state_row.spanned_column_cell.size();
|
||||
cell->table_table_cell_attlist_extra_.table_number_columns_spanned_ = (unsigned int)state_row.spanned_column_cell.size();
|
||||
state_row.spanned_column_cell.clear();
|
||||
}
|
||||
|
||||
@ -511,7 +511,7 @@ void odf_table_context::set_cell_column_span_restart()
|
||||
int row = impl_->current_table().current_row - 1;
|
||||
odf_row_state & state = impl_->current_table().rows[row];
|
||||
|
||||
int sz = state.spanned_column_cell.size();
|
||||
unsigned int sz = (unsigned int)state.spanned_column_cell.size();
|
||||
if (sz > 1)
|
||||
{
|
||||
table_table_cell * cell = dynamic_cast<table_table_cell *>(state.spanned_column_cell[0].get());
|
||||
@ -567,7 +567,7 @@ void odf_table_context::set_cell_row_span_restart()
|
||||
int col = impl_->current_table().current_column - 1;
|
||||
odf_column_state & state = impl_->current_table().columns[col];
|
||||
|
||||
int sz = state.spanned_row_cell.size();
|
||||
unsigned int sz = (unsigned int)state.spanned_row_cell.size();
|
||||
|
||||
if (sz > 1)
|
||||
{
|
||||
|
||||
@ -328,28 +328,36 @@ void ods_conversion_context::add_merge_cells(const std::wstring & ref)
|
||||
std::vector<std::wstring> ref_cells;
|
||||
boost::algorithm::split(ref_cells,ref, boost::algorithm::is_any_of(L":"), boost::algorithm::token_compress_on);
|
||||
|
||||
if (ref_cells.size() !=2) return;//тута однозначно .. по правилам оох
|
||||
if (ref_cells.size() != 2) return;//тута однозначно .. по правилам оохml
|
||||
|
||||
int start_col = -1, start_row = -1;
|
||||
int end_col = -1, end_row = -1;
|
||||
|
||||
utils::parsing_ref (ref_cells[0], start_col, start_row);
|
||||
utils::parsing_ref (ref_cells[1], end_col, end_row);
|
||||
utils::parsing_ref (ref_cells[1], end_col, end_row);
|
||||
|
||||
current_table().set_merge_cells(start_col,start_row, end_col, end_row);
|
||||
current_table().set_merge_cells(start_col, start_row, end_col, end_row);
|
||||
|
||||
}
|
||||
|
||||
void ods_conversion_context::start_cell(std::wstring & ref, int xfd_style)
|
||||
{
|
||||
int col = 0, row = 0;
|
||||
utils::parsing_ref ( ref, col,row);
|
||||
int col = 0, row = 0, spanned_rows = 0, spanned_cols = 0;
|
||||
utils::parsing_ref ( ref, col, row);
|
||||
|
||||
if (col > current_table().current_column()+1)
|
||||
bool bCovered = false;
|
||||
bool bSpanned = current_table().isSpannedCell(col, row, spanned_cols, spanned_rows);
|
||||
|
||||
if (!bSpanned)
|
||||
{
|
||||
int repeated = col - current_table().current_column() -1;
|
||||
bCovered = current_table().isCoveredCell(col, row);
|
||||
}
|
||||
|
||||
if (col > current_table().current_column() + 1)
|
||||
{
|
||||
int repeated = col - current_table().current_column() - 1;
|
||||
|
||||
current_table().add_default_cell(repeated);
|
||||
current_table().add_default_cell(repeated);//, bCovered);
|
||||
}
|
||||
|
||||
office_element_ptr style_elm;
|
||||
@ -360,7 +368,7 @@ void ods_conversion_context::start_cell(std::wstring & ref, int xfd_style)
|
||||
if ( xfd_style >=0)
|
||||
{
|
||||
odf_style_state_ptr style_state;
|
||||
styles_context()->find_odf_style_state(xfd_style, style_family::TableCell,style_state, false, true);
|
||||
styles_context()->find_odf_style_state(xfd_style, style_family::TableCell, style_state, false, true);
|
||||
if (style_state)
|
||||
{
|
||||
style_elm = style_state->get_office_element();
|
||||
@ -376,11 +384,26 @@ void ods_conversion_context::start_cell(std::wstring & ref, int xfd_style)
|
||||
}
|
||||
|
||||
office_element_ptr cell_elm;
|
||||
create_element(L"table", L"table-cell",cell_elm,this);
|
||||
|
||||
if (bCovered)
|
||||
{
|
||||
create_element(L"table", L"covered-table-cell", cell_elm, this);
|
||||
}
|
||||
else
|
||||
{
|
||||
create_element(L"table", L"table-cell", cell_elm, this);
|
||||
}
|
||||
|
||||
current_table().start_cell(cell_elm, style_elm);
|
||||
|
||||
current_table().set_cell_format_value(format_value_type);
|
||||
|
||||
if (bSpanned)
|
||||
{
|
||||
current_table().set_cell_spanned(spanned_cols, spanned_rows);
|
||||
}
|
||||
if (!bCovered)
|
||||
{
|
||||
current_table().set_cell_format_value(format_value_type);
|
||||
}
|
||||
}
|
||||
|
||||
void ods_conversion_context::end_cell()
|
||||
@ -412,12 +435,12 @@ void ods_conversion_context::end_columns()
|
||||
//add default last column - ЕСЛИ они не прописаны в исходном (1024 - от балды)
|
||||
//вопрос - если и добавлять то с каким стилем???
|
||||
//if (current_table().current_column() < 1 )
|
||||
// add_column(current_table().current_column()+1,1024,0,true);
|
||||
// add_column(current_table().current_column() + 1,1024, 0, true);
|
||||
//else
|
||||
int repeat = (std::max)(current_table().dimension_columns,1024) - current_table().current_column();
|
||||
int repeat = (std::max)(current_table().dimension_columns, 1024) - current_table().current_column();
|
||||
if (repeat < 0) repeat = 1;
|
||||
|
||||
add_column(current_table().current_column()+1,repeat,0,true);
|
||||
add_column(current_table().current_column() + 1, repeat, 0, true);
|
||||
}
|
||||
void ods_conversion_context::start_rows()
|
||||
{
|
||||
|
||||
@ -68,6 +68,10 @@ void ods_table_context::start_table_part(std::wstring name, std::wstring ref)
|
||||
|
||||
formulasconvert::oox2odf_converter formulas_converter;
|
||||
|
||||
if (std::wstring::npos == ref.find(L"!") )
|
||||
{
|
||||
ref = table_state_list_.back().office_table_name_ + L"!" + ref;
|
||||
}
|
||||
std::wstring odf_range = formulas_converter.convert_named_ref(ref);
|
||||
XmlUtils::replace_all( odf_range, L"[", L"");
|
||||
XmlUtils::replace_all( odf_range, L"]", L"");
|
||||
@ -259,6 +263,7 @@ void ods_table_context::start_table(office_element_ptr & elm)
|
||||
|
||||
void ods_table_context::end_table()
|
||||
{
|
||||
state().check_spanned_cells();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -80,11 +80,20 @@ std::wstring convert_date(const std::wstring & oox_date)
|
||||
boost::gregorian::date date_ = boost::gregorian::date(1900, 1, 1) + boost::gregorian::date_duration(iDate-2);
|
||||
|
||||
////to for example, "1899-12-31T05:37:46.66569
|
||||
std::wstring date_str = boost::lexical_cast<std::wstring>(date_.year())
|
||||
std::wstring date_str;
|
||||
|
||||
try
|
||||
{
|
||||
date_str = boost::lexical_cast<std::wstring>(date_.year())
|
||||
+ L"-" +
|
||||
(date_.month() < 10 ? L"0": L"") + boost::lexical_cast<std::wstring>(date_.month().as_number())
|
||||
+ L"-" +
|
||||
(date_.day() < 10 ? L"0": L"") + boost::lexical_cast<std::wstring>(date_.day());
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
date_str = oox_date;
|
||||
}
|
||||
return date_str;
|
||||
}
|
||||
|
||||
@ -256,7 +265,7 @@ void ods_table_state::add_column(office_element_ptr & elm, unsigned int repeated
|
||||
|
||||
ods_element_state state(elm, repeated, style_name, style_elm, defaut_column_width_, current_level_.size());
|
||||
|
||||
if (repeated > 10000)repeated = 1024;//????
|
||||
//if (repeated > 10000) repeated = 1024;//????
|
||||
|
||||
current_table_column_ += repeated;
|
||||
columns_.push_back(state);
|
||||
@ -335,6 +344,17 @@ void ods_table_state::add_row(office_element_ptr & elm, unsigned int repeated, o
|
||||
{
|
||||
current_table_column_ = 0;
|
||||
current_table_row_ += repeated;
|
||||
current_covered_cols_ = 0;
|
||||
|
||||
for (size_t i = 0; i < current_covered_rows_.size(); ++i)
|
||||
{
|
||||
current_covered_rows_[i].count_rows--;
|
||||
if (current_covered_rows_[i].count_rows <= 0)
|
||||
{
|
||||
current_covered_rows_.erase(current_covered_rows_.begin() + i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
|
||||
current_level_.back()->add_child_element(elm);
|
||||
|
||||
@ -364,6 +384,16 @@ void ods_table_state::add_row_repeated()
|
||||
unsigned int t = rows_.back().repeated;
|
||||
rows_.back().repeated++;
|
||||
current_table_row_++;
|
||||
|
||||
for (size_t i = 0; i < current_covered_rows_.size(); ++i)
|
||||
{
|
||||
current_covered_rows_[i].count_rows--;
|
||||
if (current_covered_rows_[i].count_rows <= 0)
|
||||
{
|
||||
current_covered_rows_.erase(current_covered_rows_.begin() + i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
row->table_table_row_attlist_.table_number_rows_repeated_ = rows_.back().repeated;
|
||||
}
|
||||
void ods_table_state::set_row_hidden(bool Val)
|
||||
@ -471,21 +501,21 @@ void ods_table_state::set_row_default_cell_style(std::wstring & style_name)
|
||||
|
||||
office_element_ptr & ods_table_state::current_row_element()
|
||||
{
|
||||
if (rows_.size()>0)
|
||||
if (false == rows_.empty())
|
||||
return rows_.back().elm;
|
||||
else
|
||||
throw;
|
||||
}
|
||||
office_element_ptr & ods_table_state::current_cell_element()
|
||||
{
|
||||
if (cells_size_ >0)
|
||||
if (cells_size_ > 0)
|
||||
return cells_.back().elm;
|
||||
else
|
||||
throw;
|
||||
}
|
||||
ods_hyperlink_state & ods_table_state::current_hyperlink()
|
||||
{
|
||||
if ((cells_size_ >0 && hyperlinks_.size()>0) && (cells_.back().hyperlink_idx>=0) )
|
||||
if ((cells_size_ >0 && !hyperlinks_.empty()) && (cells_.back().hyperlink_idx >= 0) )
|
||||
{
|
||||
return hyperlinks_[cells_.back().hyperlink_idx];
|
||||
}
|
||||
@ -497,22 +527,24 @@ void ods_table_state::start_cell(office_element_ptr & elm, office_element_ptr &
|
||||
{
|
||||
current_row_element()->add_child_element(elm);
|
||||
|
||||
table_table_cell* cell = dynamic_cast<table_table_cell*>(elm.get());
|
||||
if (cell == NULL)return;
|
||||
|
||||
std::wstring style_name;
|
||||
|
||||
odf_writer::style* style = dynamic_cast<odf_writer::style*>(style_elm.get());
|
||||
if (style)style_name = style->style_name_;
|
||||
else style_name = row_default_cell_style_name_;
|
||||
if (style) style_name = style->style_name_;
|
||||
else style_name = row_default_cell_style_name_;
|
||||
|
||||
if (style_name.length() > 0 && style_name != get_column_default_cell_style(current_column()))
|
||||
table_table_cell* cell = dynamic_cast<table_table_cell*>(elm.get());
|
||||
if (cell && !style_name.empty() && style_name != get_column_default_cell_style(current_column()))
|
||||
{
|
||||
cell->table_table_cell_attlist_.table_style_name_= style_name;
|
||||
cell->table_table_cell_attlist_.table_style_name_ = style_name;
|
||||
}
|
||||
table_covered_table_cell* covered_cell = dynamic_cast<table_covered_table_cell*>(elm.get());
|
||||
if (covered_cell && !style_name.empty() && style_name != get_column_default_cell_style(current_column()))
|
||||
{
|
||||
covered_cell->table_table_cell_attlist_.table_style_name_ = style_name;
|
||||
}
|
||||
|
||||
ods_cell_state state;
|
||||
|
||||
|
||||
state.empty = true;
|
||||
state.elm = elm; state.repeated = 1; state.style_name = style_name; state.style_elm = style_elm;
|
||||
state.row = current_table_row_; state.col = current_table_column_ + 1;
|
||||
@ -523,6 +555,9 @@ void ods_table_state::start_cell(office_element_ptr & elm, office_element_ptr &
|
||||
current_table_column_ += state.repeated;
|
||||
cells_.push_back(state);
|
||||
cells_size_++;
|
||||
|
||||
if (current_covered_cols_ > 0 && covered_cell)
|
||||
current_covered_cols_--;
|
||||
}
|
||||
|
||||
void ods_table_state::set_cell_format_value(office_value_type::type value_type)
|
||||
@ -635,40 +670,133 @@ void ods_table_state::end_comment(odf_text_context *text_context)
|
||||
}
|
||||
}
|
||||
|
||||
void ods_table_state::set_merge_cells(int start_col, int start_row, int end_col, int end_row)
|
||||
void ods_table_state::check_spanned_cells()
|
||||
{
|
||||
//потом можно переделать (оптимизировать) - добавлять мержи при добавлении ячеек
|
||||
//всяко выгоднее хранить данные о мержах, а не шерстить каждый раз ВСЕ ячейки для добавления фенечки
|
||||
//todooo
|
||||
//разобраться когда нужно писать covered_cell
|
||||
if (end_col - start_col < 0)return;
|
||||
if (end_row - start_row < 0)return;
|
||||
|
||||
int spanned_cols = end_col - start_col + 1;
|
||||
int spanned_rows = end_row - start_row + 1;
|
||||
|
||||
if (spanned_cols > 10000)spanned_cols = 1024;
|
||||
|
||||
for (size_t i = 0; i < cells_.size(); ++i)
|
||||
for (std::map<int, std::map<int, _spanned_info>>::iterator it = map_merged_cells.begin(); it != map_merged_cells.end(); ++it)
|
||||
{
|
||||
if (cells_[i].row > end_row) break;
|
||||
for (std::map<int, _spanned_info>::iterator jt = it->second.begin(); jt != it->second.end(); ++jt)
|
||||
{
|
||||
int start_row = it->first;
|
||||
int end_row = it->first + jt->second.spanned_rows;
|
||||
|
||||
if (cells_[i].row >= start_row)
|
||||
{
|
||||
if (cells_[i].col >= start_col)
|
||||
int start_col = jt->first;
|
||||
int end_col = jt->first + jt->second.spanned_cols;
|
||||
|
||||
for (size_t i = 0; i < cells_.size(); ++i)
|
||||
{
|
||||
table_table_cell* cell_elm = dynamic_cast<table_table_cell*>(cells_[i].elm.get());
|
||||
if (cell_elm == NULL)return;
|
||||
if (cells_[i].row > end_row) break;
|
||||
|
||||
cell_elm->table_table_cell_attlist_extra_.table_number_columns_spanned_ = spanned_cols;
|
||||
cell_elm->table_table_cell_attlist_extra_.table_number_rows_spanned_ = spanned_rows;
|
||||
if (cells_[i].row >= start_row)
|
||||
{
|
||||
if (cells_[i].col >= start_col)
|
||||
{
|
||||
table_table_cell* cell_elm = dynamic_cast<table_table_cell*>(cells_[i].elm.get());
|
||||
if (cell_elm == NULL)break;
|
||||
|
||||
break;
|
||||
cell_elm->table_table_cell_attlist_extra_.table_number_columns_spanned_ = jt->second.spanned_cols;
|
||||
cell_elm->table_table_cell_attlist_extra_.table_number_rows_spanned_ = jt->second.spanned_rows;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ods_table_state::set_merge_cells(int start_col, int start_row, int end_col, int end_row)
|
||||
{
|
||||
if (end_col - start_col < 0) return;
|
||||
if (end_row - start_row < 0) return;
|
||||
|
||||
_spanned_info info;
|
||||
|
||||
info.spanned_cols = end_col - start_col + 1;
|
||||
info.spanned_rows = end_row - start_row + 1;
|
||||
|
||||
//if (info.spanned_cols > 10000) info.spanned_cols = 1024;
|
||||
|
||||
std::map<int, std::map<int, _spanned_info>>::iterator pFindRow = map_merged_cells.find(start_row);
|
||||
|
||||
if (pFindRow == map_merged_cells.end())
|
||||
{
|
||||
std::map<int, _spanned_info> mapCols;
|
||||
mapCols.insert(std::make_pair(start_col, info));
|
||||
|
||||
map_merged_cells.insert(std::make_pair(start_row, mapCols));
|
||||
}
|
||||
else
|
||||
{
|
||||
std::map<int, _spanned_info>::iterator pFindCol = pFindRow->second.find(start_col);
|
||||
if (pFindCol == pFindRow->second.end())
|
||||
{
|
||||
pFindRow->second.insert(std::make_pair(start_col, info));
|
||||
|
||||
}
|
||||
//else нереально pFindCol->second.insert(info);
|
||||
}
|
||||
}
|
||||
bool ods_table_state::isSpannedCell(int col, int row, int &spanned_cols, int &spanned_rows )
|
||||
{
|
||||
spanned_cols = spanned_rows = 0;
|
||||
|
||||
std::map<int, std::map<int, _spanned_info>>::iterator pFindRow = map_merged_cells.find(row);
|
||||
|
||||
if (pFindRow != map_merged_cells.end())
|
||||
{
|
||||
std::map<int, _spanned_info>::iterator pFindCol = pFindRow->second.find(col);
|
||||
if (pFindCol != pFindRow->second.end())
|
||||
{
|
||||
spanned_cols = pFindCol->second.spanned_cols;
|
||||
spanned_rows = pFindCol->second.spanned_rows;
|
||||
|
||||
current_covered_cols_ = spanned_cols - 1;
|
||||
|
||||
if (spanned_rows > 1 && current_covered_cols_ > 0)
|
||||
{
|
||||
_covered_info info;
|
||||
info.start_col = current_table_column_;
|
||||
info.count_cols = spanned_cols;
|
||||
|
||||
info.count_rows = spanned_rows - 1;
|
||||
current_covered_rows_.push_back(info);
|
||||
}
|
||||
|
||||
pFindRow->second.erase(pFindCol);
|
||||
|
||||
if (pFindRow->second.empty())
|
||||
{
|
||||
map_merged_cells.erase(pFindRow);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
bool ods_table_state::isCoveredCell( int col, int repeated_cols)
|
||||
{
|
||||
if (current_covered_cols_ > 0) return true;
|
||||
|
||||
for (size_t i = 0; i < current_covered_rows_.size(); i++)
|
||||
{
|
||||
if (current_covered_rows_[i].start_col <= col && col < current_covered_rows_[i].start_col + current_covered_rows_[i].count_cols)
|
||||
{
|
||||
current_covered_cols_ = current_covered_rows_[i].count_cols - (col - current_covered_rows_[i].start_col);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
void ods_table_state::set_cell_spanned(int spanned_cols, int spanned_rows)
|
||||
{
|
||||
table_table_cell* cell = dynamic_cast<table_table_cell*>(cells_.back().elm.get());
|
||||
if (cell == NULL)return;
|
||||
|
||||
cell->table_table_cell_attlist_extra_.table_number_columns_spanned_ = spanned_cols;
|
||||
cell->table_table_cell_attlist_extra_.table_number_rows_spanned_ = spanned_rows;
|
||||
}
|
||||
void ods_table_state::set_cell_formula(std::wstring & formula)
|
||||
{
|
||||
if (formula.length() < 1)return;
|
||||
@ -829,8 +957,8 @@ void ods_table_state::set_cell_array_formula(std::wstring & formula, std::wstrin
|
||||
std::vector<std::wstring> ref_cells;
|
||||
boost::algorithm::split(ref_cells,ref, boost::algorithm::is_any_of(L":"), boost::algorithm::token_compress_on);
|
||||
|
||||
int row_span =0;
|
||||
int col_span =0;
|
||||
int row_span = 0;
|
||||
int col_span = 0;
|
||||
|
||||
if (ref_cells.size() ==2)
|
||||
{
|
||||
@ -850,7 +978,7 @@ void ods_table_state::set_cell_array_formula(std::wstring & formula, std::wstrin
|
||||
row_span = col_span = 1;//???
|
||||
}
|
||||
|
||||
if (col_span >0 && row_span > 0)
|
||||
if (col_span > 0 && row_span > 0)
|
||||
{
|
||||
table_table_cell* cell = dynamic_cast<table_table_cell*>(cells_.back().elm.get());
|
||||
if (cell == NULL)return;
|
||||
@ -1044,7 +1172,7 @@ void ods_table_state::set_cell_value(const std::wstring & value, bool need_cash)
|
||||
|
||||
void ods_table_state::end_cell()
|
||||
{
|
||||
if ( cells_size_ <1)return;
|
||||
if ( cells_size_ < 1)return;
|
||||
|
||||
if (cells_.back().comment_idx >= 0)
|
||||
{
|
||||
@ -1061,6 +1189,8 @@ void ods_table_state::end_cell()
|
||||
|
||||
void ods_table_state::add_default_cell( unsigned int repeated)
|
||||
{
|
||||
if (repeated < 1) return;
|
||||
|
||||
int comment_idx = is_cell_comment(current_table_column_ + 1, current_table_row_, repeated);
|
||||
if (comment_idx >= 0 && repeated > 1)
|
||||
{
|
||||
@ -1075,32 +1205,120 @@ void ods_table_state::add_default_cell( unsigned int repeated)
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
std::map<int, std::map<int, _spanned_info>>::iterator pFindRow = map_merged_cells.find(current_table_row_);
|
||||
|
||||
bool bSpanned = false;
|
||||
if (pFindRow != map_merged_cells.end())
|
||||
{
|
||||
for (std::map<int, _spanned_info>::iterator it = pFindRow->second.begin(); !bSpanned && it != pFindRow->second.end(); ++it)
|
||||
{
|
||||
if (it->first < current_table_column_ + repeated + 1 && it->first >= current_table_column_ + 1)
|
||||
{
|
||||
if (repeated > 1)
|
||||
{
|
||||
//делим на 3 - до, с spanned, после;
|
||||
int c = current_table_column_;
|
||||
|
||||
add_default_cell(it->first - c - 1);
|
||||
add_default_cell(1);
|
||||
add_default_cell(repeated + c + 1 - it->first);
|
||||
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
bSpanned = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool bCovered = false;
|
||||
if (!bSpanned)
|
||||
{
|
||||
for (size_t i = 0; i < current_covered_rows_.size(); i++)
|
||||
{
|
||||
if (current_covered_rows_[i].start_col <= current_table_column_ && current_table_column_ + repeated <= current_covered_rows_[i].start_col + current_covered_rows_[i].count_cols)
|
||||
{
|
||||
current_covered_cols_ = current_covered_rows_[i].start_col + current_covered_rows_[i].count_cols - current_table_column_;
|
||||
bCovered = true;
|
||||
break;
|
||||
}
|
||||
else if (!( current_table_column_ + repeated < current_covered_rows_[i].start_col ||
|
||||
current_table_column_ > current_covered_rows_[i].start_col + current_covered_rows_[i].count_cols))
|
||||
{
|
||||
int c = current_table_column_;
|
||||
int split = current_covered_rows_[i].start_col > current_table_column_ ? current_covered_rows_[i].start_col :
|
||||
current_covered_rows_[i].start_col + current_covered_rows_[i].count_cols;
|
||||
|
||||
if (split != current_table_column_ && split != current_table_column_ + repeated)
|
||||
{
|
||||
add_default_cell(split - c);
|
||||
add_default_cell(repeated + c - split);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
office_element_ptr default_cell_elm;
|
||||
create_element(L"table", L"table-cell", default_cell_elm, context_);
|
||||
if (bCovered)
|
||||
{
|
||||
create_element(L"table", L"covered-table-cell", default_cell_elm, context_);
|
||||
}
|
||||
else
|
||||
{
|
||||
create_element(L"table", L"table-cell", default_cell_elm, context_);
|
||||
}
|
||||
|
||||
current_row_element()->add_child_element(default_cell_elm);
|
||||
|
||||
table_table_cell* cell = dynamic_cast<table_table_cell*>(default_cell_elm.get());
|
||||
if (cell == NULL)return;
|
||||
table_covered_table_cell* covered_cell = dynamic_cast<table_covered_table_cell*>(default_cell_elm.get());
|
||||
|
||||
if (bSpanned)
|
||||
{
|
||||
int spanned_rows = 0, spanned_cols = 0;
|
||||
if (cell && isSpannedCell(current_table_column_, current_table_row_, spanned_cols, spanned_rows))
|
||||
{
|
||||
cell->table_table_cell_attlist_extra_.table_number_columns_spanned_ = spanned_cols;
|
||||
cell->table_table_cell_attlist_extra_.table_number_rows_spanned_ = spanned_rows;
|
||||
}
|
||||
}
|
||||
|
||||
ods_cell_state state;
|
||||
|
||||
state.empty = true;
|
||||
state.elm = default_cell_elm; state.repeated = repeated;
|
||||
state.row=current_table_row_; state.col =current_table_column_+ 1;
|
||||
state.elm = default_cell_elm;
|
||||
state.repeated = repeated;
|
||||
state.row = current_table_row_;
|
||||
state.col = current_table_column_ + 1;
|
||||
|
||||
state.hyperlink_idx = is_cell_hyperlink(state.col, current_table_row_);
|
||||
state.comment_idx = comment_idx;
|
||||
|
||||
cells_.push_back(state);
|
||||
cells_size_++;
|
||||
|
||||
current_table_column_+= state.repeated;
|
||||
current_table_column_ += state.repeated;
|
||||
|
||||
cell->table_table_cell_attlist_.table_number_columns_repeated_ = repeated;
|
||||
if (cell)
|
||||
{
|
||||
cell->table_table_cell_attlist_.table_number_columns_repeated_ = repeated;
|
||||
|
||||
if (row_default_cell_style_name_.length() > 0)
|
||||
cell->table_table_cell_attlist_.table_style_name_ = row_default_cell_style_name_;
|
||||
if (!row_default_cell_style_name_.empty())
|
||||
cell->table_table_cell_attlist_.table_style_name_ = row_default_cell_style_name_;
|
||||
}
|
||||
if (covered_cell)
|
||||
{
|
||||
covered_cell->table_table_cell_attlist_.table_number_columns_repeated_ = repeated;
|
||||
|
||||
if (!row_default_cell_style_name_.empty())
|
||||
covered_cell->table_table_cell_attlist_.table_style_name_ = row_default_cell_style_name_;
|
||||
|
||||
current_covered_cols_ -= repeated;
|
||||
}
|
||||
end_cell();
|
||||
}
|
||||
///////////////////////////////////////////////////
|
||||
@ -1175,18 +1393,18 @@ void ods_table_state::start_conditional_rule(int rule_type)
|
||||
}
|
||||
switch(rule_type)
|
||||
{
|
||||
case 4: condition->attr_.calcext_value_ = L"contains-text( )"; break;
|
||||
case 5: condition->attr_.calcext_value_ = L"is-error"; break;
|
||||
case 6: condition->attr_.calcext_value_ = L"contains-text()"; break;
|
||||
case 8: condition->attr_.calcext_value_ = L"duplicate"; break;
|
||||
case 9: condition->attr_.calcext_value_ = L"formula-is()"; break;
|
||||
case 11: condition->attr_.calcext_value_ = L"not-contains-text( )"; break;
|
||||
case 12: condition->attr_.calcext_value_ = L"is-no-error"; break;
|
||||
case 0: condition->attr_.calcext_value_ = L"above-average"; break;
|
||||
case 1: condition->attr_.calcext_value_ = L"begins-with()"; break;
|
||||
case 4: condition->attr_.calcext_value_ = L"contains-text()"; break;
|
||||
case 5: condition->attr_.calcext_value_ = L"is-error"; break;
|
||||
case 6: condition->attr_.calcext_value_ = L"contains-text()"; break;
|
||||
case 8: condition->attr_.calcext_value_ = L"duplicate"; break;
|
||||
case 9: condition->attr_.calcext_value_ = L"formula-is()"; break;
|
||||
case 11: condition->attr_.calcext_value_ = L"not-contains-text()"; break;
|
||||
case 12: condition->attr_.calcext_value_ = L"is-no-error"; break;
|
||||
case 13: condition->attr_.calcext_value_ = L"not-contains-text()"; break;
|
||||
case 15: condition->attr_.calcext_value_ = L"top-elements()"; break;//bottom-elements ???
|
||||
case 16: condition->attr_.calcext_value_ = L"unique"; break;
|
||||
case 0: /*aboveAverage*/
|
||||
case 1: /*beginsWith*/
|
||||
case 15: condition->attr_.calcext_value_ = L"top-elements()"; break;//bottom-elements ???
|
||||
case 16: condition->attr_.calcext_value_ = L"unique"; break;
|
||||
case 2: /*cellIs*/
|
||||
default: break;
|
||||
}
|
||||
@ -1204,28 +1422,32 @@ void ods_table_state::end_conditional_rule()
|
||||
|
||||
void ods_table_state::set_conditional_formula(std::wstring formula)
|
||||
{
|
||||
calcext_condition* condition = dynamic_cast<calcext_condition*> (current_level_.back().get());
|
||||
calcext_condition* condition = dynamic_cast<calcext_condition*> (current_level_.back().get());
|
||||
|
||||
if (condition)
|
||||
{
|
||||
std::wstring odfFormula = formulas_converter_table.convert_conditional_formula(formula);
|
||||
if (!condition) return;
|
||||
|
||||
std::wstring odfFormula = formulas_converter_table.convert_conditional_formula(formula);
|
||||
|
||||
std::wstring operator_;
|
||||
bool s = false;
|
||||
if (condition->attr_.calcext_value_)//есть опреатор
|
||||
{
|
||||
operator_ = *condition->attr_.calcext_value_;
|
||||
int f = operator_.find(L"(");
|
||||
if (f > 0)
|
||||
{
|
||||
s= true;
|
||||
operator_ = operator_.substr(0,operator_.length() - 2);
|
||||
}
|
||||
}
|
||||
condition->attr_.calcext_value_= operator_ + (s ? L"(": L"") + odfFormula + (s ? L")": L"");
|
||||
std::wstring operator_;
|
||||
bool s = false;
|
||||
bool split = false;
|
||||
|
||||
operator_ = condition->attr_.calcext_value_.get_value_or(L"");
|
||||
|
||||
size_t f_start = operator_.find(L"(");
|
||||
size_t f_end = operator_.rfind(L")");
|
||||
if (f_start != std::wstring::npos && f_end != std::wstring::npos)
|
||||
{
|
||||
if (f_start < f_end - 1) split = true;
|
||||
s = true;
|
||||
operator_ = operator_.substr(0, f_end);
|
||||
}
|
||||
operator_ += (split ? L"," : L"") + odfFormula + (s ? L")" : L"");
|
||||
|
||||
if (std::wstring::npos == operator_.find(L"contains-text") || !split)
|
||||
condition->attr_.calcext_value_= operator_;
|
||||
}
|
||||
void ods_table_state::set_conditional_style_name(std::wstring style_name)
|
||||
void ods_table_state::set_conditional_style_name(const std::wstring &style_name)
|
||||
{
|
||||
calcext_condition* condition = dynamic_cast<calcext_condition*> (current_level_.back().get());
|
||||
calcext_date_is* date_is = dynamic_cast<calcext_date_is*> (current_level_.back().get());
|
||||
@ -1233,6 +1455,29 @@ void ods_table_state::set_conditional_style_name(std::wstring style_name)
|
||||
if (condition) condition->attr_.calcext_apply_style_name_ = style_name;
|
||||
if (date_is) date_is->attr_.calcext_style_ = style_name;
|
||||
}
|
||||
void ods_table_state::set_conditional_text(const std::wstring &text)
|
||||
{
|
||||
calcext_condition* condition = dynamic_cast<calcext_condition*> (current_level_.back().get());
|
||||
|
||||
if ((condition->attr_.calcext_value_) && (std::wstring::npos != condition->attr_.calcext_value_->find(L"contains-text")))
|
||||
{
|
||||
std::wstring operator_;
|
||||
bool s = false;
|
||||
bool split = false;
|
||||
|
||||
operator_ = *condition->attr_.calcext_value_;
|
||||
size_t f_start = operator_.find(L"(");
|
||||
size_t f_end = operator_.rfind(L")");
|
||||
if (f_start != std::wstring::npos && f_end != std::wstring::npos)
|
||||
{
|
||||
if (f_start < f_end - 1) split = true;
|
||||
s = true;
|
||||
operator_ = operator_.substr(0, f_end);
|
||||
}
|
||||
operator_ += (split ? L"," : L"") + std::wstring(L"\"") + text + L"\"" + (s ? L")" : L"");
|
||||
condition->attr_.calcext_value_= operator_;
|
||||
}
|
||||
}
|
||||
void ods_table_state::set_conditional_operator(int _operator)
|
||||
{
|
||||
calcext_condition* condition = dynamic_cast<calcext_condition*> (current_level_.back().get());
|
||||
@ -1240,16 +1485,16 @@ void ods_table_state::set_conditional_operator(int _operator)
|
||||
{
|
||||
switch(_operator)
|
||||
{
|
||||
case 0: condition->attr_.calcext_value_ = L"begins-with()"; break;
|
||||
case 1: condition->attr_.calcext_value_ = L"between()"; break;
|
||||
case 2: condition->attr_.calcext_value_ = L"contains-text()"; break;
|
||||
case 0: condition->attr_.calcext_value_ = L"begins-with()"; break;
|
||||
case 1: condition->attr_.calcext_value_ = L"between()"; break;
|
||||
case 2: condition->attr_.calcext_value_ = L"contains-text()"; break;
|
||||
case 3: condition->attr_.calcext_value_ = L"ends-with()"; break;
|
||||
case 4: condition->attr_.calcext_value_ = L"="; break;
|
||||
case 5: condition->attr_.calcext_value_ = L">"; break;
|
||||
case 4: condition->attr_.calcext_value_ = L"="; break;
|
||||
case 5: condition->attr_.calcext_value_ = L">"; break;
|
||||
case 6: condition->attr_.calcext_value_ = L">="; break;
|
||||
case 7: condition->attr_.calcext_value_ = L"<"; break;
|
||||
case 7: condition->attr_.calcext_value_ = L"<"; break;
|
||||
case 8: condition->attr_.calcext_value_ = L"<="; break;
|
||||
case 9: condition->attr_.calcext_value_ = L"not-between()"; break;
|
||||
case 9: condition->attr_.calcext_value_ = L"not-between()"; break;
|
||||
case 10:condition->attr_.calcext_value_ = L"not-contains-text()"; break;
|
||||
case 11:condition->attr_.calcext_value_ = L"!="; break;
|
||||
}
|
||||
|
||||
@ -277,16 +277,22 @@ public:
|
||||
void set_row_default_cell_style(std::wstring & style_name);
|
||||
void add_row_repeated();
|
||||
|
||||
bool isSpannedCell(int col, int row, int &spanned_cols, int &spanned_rows );
|
||||
bool isCoveredCell(int col, int repeated_cols = 1);
|
||||
|
||||
void start_cell(office_element_ptr & elm ,office_element_ptr & style);
|
||||
void end_cell();
|
||||
void add_default_cell(unsigned int repeated);
|
||||
|
||||
void check_spanned_cells();
|
||||
|
||||
void set_cell_format_value(odf_types::office_value_type::type value_type);
|
||||
void set_cell_type(int type);
|
||||
void set_cell_value(const std::wstring & value, bool need_cash = false);
|
||||
void set_cell_text(odf_text_context *text_context, bool cash_value = false);
|
||||
void set_cell_formula(std::wstring &formula);
|
||||
void set_cell_array_formula(std::wstring & formula, std::wstring ref);
|
||||
void set_cell_spanned(int spanned_cols, int spanned_rows);
|
||||
void add_or_find_cell_shared_formula(std::wstring & formula, std::wstring ref, int ind);
|
||||
|
||||
static std::wstring replace_cell_row(boost::wsmatch const & what);
|
||||
@ -303,8 +309,10 @@ public:
|
||||
void add_conditional_colorscale(int index, _CP_OPT(odf_types::color) color);
|
||||
void set_conditional_databar_color(_CP_OPT(odf_types::color) color);
|
||||
|
||||
void set_conditional_style_name(std::wstring style_name);
|
||||
void set_conditional_style_name(const std::wstring &style_name);
|
||||
void set_conditional_operator(int _operator);
|
||||
|
||||
void set_conditional_text(const std::wstring &text);
|
||||
void end_conditional_rule();
|
||||
void end_conditional_format();
|
||||
void end_conditional_formats();
|
||||
@ -349,13 +357,28 @@ public:
|
||||
std::vector<ods_comment_state> comments_;
|
||||
private:
|
||||
|
||||
struct _spanned_info
|
||||
{
|
||||
int spanned_cols = 0;
|
||||
int spanned_rows = 0;
|
||||
int state = 0;
|
||||
};
|
||||
struct _covered_info
|
||||
{
|
||||
int start_col = 0;
|
||||
int count_cols = 0;
|
||||
|
||||
int count_rows = 0; // от текущей строки
|
||||
};
|
||||
std::vector<_covered_info> current_covered_rows_;
|
||||
int current_covered_cols_;
|
||||
|
||||
odf_conversion_context * context_;
|
||||
|
||||
office_element_ptr office_table_;
|
||||
style* office_table_style_;//??? может хранить как office_element_ptr ???
|
||||
office_element_ptr table_defined_expressions_;
|
||||
|
||||
|
||||
std::wstring row_default_cell_style_name_;
|
||||
|
||||
static int current_table_column_;
|
||||
@ -366,6 +389,8 @@ private:
|
||||
|
||||
std::vector<ods_element_state> columns_;
|
||||
std::vector<ods_element_state> rows_;
|
||||
|
||||
std::map<int, std::map<int, _spanned_info>> map_merged_cells;
|
||||
|
||||
std::vector<office_element_ptr> current_level_;//постоянно меняющийся список уровней ("0-й элемент - сама таблица)
|
||||
|
||||
|
||||
@ -658,6 +658,7 @@ std::map<std::wstring, std::wstring> odt_conversion_context::parse_instr_options
|
||||
|
||||
void odt_conversion_context::add_field_instr(const std::wstring &instr)
|
||||
{
|
||||
if (current_fields.empty()) return;
|
||||
current_fields.back().instrText += instr;
|
||||
}
|
||||
void odt_conversion_context::set_field_instr()
|
||||
@ -824,7 +825,7 @@ void odt_conversion_context::set_field_instr()
|
||||
}
|
||||
void odt_conversion_context::start_field(bool in_span)
|
||||
{
|
||||
if (false == current_fields.empty() && current_fields.back().status == 0)
|
||||
if (false == current_fields.empty() && current_fields.back().status == 0 && current_fields.back().instrText.empty() )
|
||||
return; //start_field из sdt
|
||||
|
||||
_field_state field;
|
||||
|
||||
@ -83,12 +83,17 @@ oox_shape_ptr oox_shape::create(int ooxPrstGeomType)
|
||||
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::shapetypeMoon: return boost::make_shared<oox_shape_moon>();
|
||||
case SimpleTypes::shapetypeLightningBolt: return boost::make_shared<oox_shape_lightningBolt>();
|
||||
case SimpleTypes::shapetypeHeart: return boost::make_shared<oox_shape_heart>();
|
||||
|
||||
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::shapetypeCurvedUpArrow: return boost::make_shared<oox_shape_CurvedUpArrow>();
|
||||
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>();
|
||||
@ -99,6 +104,7 @@ oox_shape_ptr oox_shape::create(int ooxPrstGeomType)
|
||||
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::shapetypeQuadArrowCallout: return boost::make_shared<oox_shape_QuadArrowCallout>();
|
||||
|
||||
case SimpleTypes::shapetypeFunnel: return boost::make_shared<oox_shape_Funnel>();
|
||||
case SimpleTypes::shapetypeGear6: return boost::make_shared<oox_shape_Gear6>();
|
||||
@ -124,7 +130,8 @@ oox_shape_ptr oox_shape::create(int ooxPrstGeomType)
|
||||
case SimpleTypes::shapetypeDonut: return boost::make_shared<oox_shape_Donut>();
|
||||
case SimpleTypes::shapetypeLeftRightRibbon: return boost::make_shared<oox_shape_LeftRightRibbon>();
|
||||
case SimpleTypes::shapetypeWave: return boost::make_shared<oox_shape_Wave>();
|
||||
case SimpleTypes::shapetypeBracketPair: return boost::make_shared<oox_shape_bracketPair>();
|
||||
case SimpleTypes::shapetypeFoldedCorner: return boost::make_shared<oox_shape_FoldedCorner>();
|
||||
case SimpleTypes::shapetypeCan: return boost::make_shared<oox_shape_Can>();
|
||||
|
||||
case SimpleTypes::shapetypeFlowChartExtract: return boost::make_shared<oox_shape_FlowChartExtract>();
|
||||
|
||||
@ -136,6 +143,48 @@ oox_shape_ptr oox_shape::create(int ooxPrstGeomType)
|
||||
case SimpleTypes::shapetypeBentUpArrow: return boost::make_shared<oox_shape_BentUpArrow>();
|
||||
case SimpleTypes::shapetypeLeftRightUpArrow: return boost::make_shared<oox_shape_leftRightUpArrow>();
|
||||
|
||||
case SimpleTypes::shapetypeStraightConnector1: return boost::make_shared<oox_shape_StraightConnector1>();
|
||||
case SimpleTypes::shapetypeFrame: return boost::make_shared<oox_shape_Frame>();
|
||||
case SimpleTypes::shapetypePentagon: return boost::make_shared<oox_shape_Pentagon>();
|
||||
case SimpleTypes::shapetypeOctagon: return boost::make_shared<oox_shape_Octagon>();
|
||||
case SimpleTypes::shapetypeHexagon: return boost::make_shared<oox_shape_Hexagon>();
|
||||
case SimpleTypes::shapetypeHeptagon: return boost::make_shared<oox_shape_Heptagon>();
|
||||
case SimpleTypes::shapetypeDecagon: return boost::make_shared<oox_shape_Decagon>();
|
||||
case SimpleTypes::shapetypeDodecagon: return boost::make_shared<oox_shape_Dodecagon>();
|
||||
case SimpleTypes::shapetypeCube: return boost::make_shared<oox_shape_Cube>();
|
||||
|
||||
case SimpleTypes::shapetypeCallout1: return boost::make_shared<oox_shape_Callout1>();
|
||||
case SimpleTypes::shapetypeCallout2: return boost::make_shared<oox_shape_Callout2>();
|
||||
// case SimpleTypes::shapetypeCallout3: return boost::make_shared<oox_shape_Callout3>();
|
||||
|
||||
case SimpleTypes::shapetypeAccentCallout1: return boost::make_shared<oox_shape_AccentCallout1>();
|
||||
case SimpleTypes::shapetypeAccentCallout2: return boost::make_shared<oox_shape_AccentCallout2>();
|
||||
case SimpleTypes::shapetypeAccentCallout3: return boost::make_shared<oox_shape_AccentCallout3>();
|
||||
|
||||
case SimpleTypes::shapetypeBorderCallout1: return boost::make_shared<oox_shape_BorderCallout1>();
|
||||
case SimpleTypes::shapetypeBorderCallout2: return boost::make_shared<oox_shape_BorderCallout2>();
|
||||
case SimpleTypes::shapetypeBorderCallout3: return boost::make_shared<oox_shape_BorderCallout3>();
|
||||
|
||||
case SimpleTypes::shapetypeAccentBorderCallout1: return boost::make_shared<oox_shape_AccentBorderCallout1>();
|
||||
case SimpleTypes::shapetypeAccentBorderCallout2: return boost::make_shared<oox_shape_AccentBorderCallout2>();
|
||||
case SimpleTypes::shapetypeAccentBorderCallout3: return boost::make_shared<oox_shape_AccentBorderCallout3>();
|
||||
|
||||
case SimpleTypes::shapetypeCloudCallout: return boost::make_shared<oox_shape_CloudCallout>();
|
||||
case SimpleTypes::shapetypeWedgeRectCallout: return boost::make_shared<oox_shape_WedgeRectCallout>();
|
||||
case SimpleTypes::shapetypeWedgeRoundRectCallout: return boost::make_shared<oox_shape_WedgeRoundRectCallout>();
|
||||
case SimpleTypes::shapetypeWedgeEllipseCallout: return boost::make_shared<oox_shape_WedgeEllipseCallout>();
|
||||
|
||||
case SimpleTypes::shapetypeRibbon: return boost::make_shared<oox_shape_Ribbon>();
|
||||
case SimpleTypes::shapetypeRibbon2: return boost::make_shared<oox_shape_Ribbon2>();
|
||||
case SimpleTypes::shapetypeEllipseRibbon: return boost::make_shared<oox_shape_EllipseRibbon>();
|
||||
case SimpleTypes::shapetypeEllipseRibbon2: return boost::make_shared<oox_shape_EllipseRibbon2>();
|
||||
|
||||
case SimpleTypes::shapetypeRightBrace: return boost::make_shared<oox_shape_RightBrace>();
|
||||
case SimpleTypes::shapetypeLeftBrace: return boost::make_shared<oox_shape_LeftBrace>();
|
||||
case SimpleTypes::shapetypeRightBracket: return boost::make_shared<oox_shape_RightBracket>();
|
||||
case SimpleTypes::shapetypeLeftBracket: return boost::make_shared<oox_shape_LeftBracket>();
|
||||
case SimpleTypes::shapetypeBracePair: return boost::make_shared<oox_shape_BracePair>();
|
||||
case SimpleTypes::shapetypeBracketPair: return boost::make_shared<oox_shape_BracketPair>();
|
||||
//case (2001 + SimpleTypes::textshapetypeTextArchDown):
|
||||
//case (2001 + SimpleTypes::textshapetypeTextArchDownPour):
|
||||
//case (2001 + SimpleTypes::textshapetypeTextArchUp):
|
||||
@ -176,7 +225,6 @@ oox_shape_ptr oox_shape::create(int ooxPrstGeomType)
|
||||
//case (2001 + SimpleTypes::textshapetypeTextWave1):
|
||||
//case (2001 + SimpleTypes::textshapetypeTextWave2):
|
||||
//case (2001 + SimpleTypes::textshapetypeTextWave4):
|
||||
//case SimpleTypes::shapetypeStraightConnector1: return boost::make_shared<oox_shape_straightConnector1>();
|
||||
|
||||
default:
|
||||
if (ooxPrstGeomType > 2000) return boost::make_shared<oox_shape_textPlain>();
|
||||
|
||||
@ -125,6 +125,7 @@ void graphic_format_properties::serialize(std::wostream & _Wostream ,const wchar
|
||||
CP_XML_ATTR_OPT(L"draw:fit-to-size", draw_fit_to_size_);
|
||||
CP_XML_ATTR_OPT(L"draw:fit-to-contour", draw_fit_to_contour_);
|
||||
CP_XML_ATTR_OPT(L"draw:ole-draw-aspect", draw_ole_draw_aspect_);
|
||||
CP_XML_ATTR_OPT(L"style:shrink-to-fit", style_shrink_to_fit_);
|
||||
|
||||
CP_XML_ATTR_OPT(L"draw:stroke", draw_stroke_);
|
||||
CP_XML_ATTR_OPT(L"draw:stroke-dash", draw_stroke_dash_);
|
||||
|
||||
@ -93,6 +93,7 @@ public:
|
||||
_CP_OPT(odf_types::Bool) draw_auto_grow_height_;
|
||||
_CP_OPT(odf_types::Bool) draw_auto_grow_width_;
|
||||
|
||||
_CP_OPT(odf_types::Bool) style_shrink_to_fit_;
|
||||
_CP_OPT(odf_types::Bool) draw_fit_to_size_;
|
||||
_CP_OPT(odf_types::Bool) draw_fit_to_contour_;
|
||||
_CP_OPT(std::wstring) draw_wrap_influence_on_position_;
|
||||
|
||||
@ -1371,5 +1371,85 @@ void style_presentation_page_layout::serialize(std::wostream & strm)
|
||||
}
|
||||
}
|
||||
}
|
||||
//-------------------------------------------------------------------------------------------------
|
||||
const wchar_t * office_font_face_decls::ns = L"office";
|
||||
const wchar_t * office_font_face_decls::name = L"font-face-decls";
|
||||
|
||||
void office_font_face_decls::add_child_element( const office_element_ptr & child)
|
||||
{
|
||||
content_.push_back(child);
|
||||
}
|
||||
void office_font_face_decls::create_child_element(const std::wstring & Ns, const std::wstring & Name)
|
||||
{
|
||||
if CP_CHECK_NAME(L"style", L"font-face")
|
||||
{
|
||||
CP_CREATE_ELEMENT(content_);
|
||||
}
|
||||
}
|
||||
void office_font_face_decls::serialize(std::wostream & strm)
|
||||
{
|
||||
CP_XML_WRITER(strm)
|
||||
{
|
||||
CP_XML_NODE_SIMPLE()
|
||||
{
|
||||
for (size_t i = 0; i < content_.size(); i++)
|
||||
{
|
||||
content_[i]->serialize(CP_XML_STREAM());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
const wchar_t * style_font_face::ns = L"style";
|
||||
const wchar_t * style_font_face::name = L"font-face";
|
||||
|
||||
void style_font_face::serialize(std::wostream & strm)
|
||||
{
|
||||
CP_XML_WRITER(strm)
|
||||
{
|
||||
CP_XML_NODE_SIMPLE()
|
||||
{
|
||||
CP_XML_ATTR_OPT(L"style:name", style_name_);
|
||||
CP_XML_ATTR_OPT(L"style:font-adornments", style_font_adornments_);
|
||||
CP_XML_ATTR_OPT(L"style:font-family-generic", style_font_family_generic_);
|
||||
CP_XML_ATTR_OPT(L"style:font-pitch", style_font_pitch_);
|
||||
CP_XML_ATTR_OPT(L"style:font-charset", style_font_charset_);
|
||||
|
||||
CP_XML_ATTR_OPT(L"svg:font-family", svg_font_family_);
|
||||
CP_XML_ATTR_OPT(L"svg:font-style", svg_font_style_);
|
||||
CP_XML_ATTR_OPT(L"svg:font-variant", svg_font_variant_);
|
||||
CP_XML_ATTR_OPT(L"svg:font-weight", svg_font_weight_);
|
||||
CP_XML_ATTR_OPT(L"svg:font-stretch", svg_font_stretch_);
|
||||
CP_XML_ATTR_OPT(L"svg:font-size", svg_font_size_);
|
||||
CP_XML_ATTR_OPT(L"svg:unicode-range", svg_unicode_range_);
|
||||
CP_XML_ATTR_OPT(L"svg:units-per-em", svg_units_per_em_);
|
||||
CP_XML_ATTR_OPT(L"svg:panose-1", svg_panose_1_);
|
||||
CP_XML_ATTR_OPT(L"svg:stemv", svg_stemv_);
|
||||
CP_XML_ATTR_OPT(L"svg:stemh", svg_stemh_);
|
||||
CP_XML_ATTR_OPT(L"svg:slope", svg_slope_);
|
||||
CP_XML_ATTR_OPT(L"svg:cap-height", svg_cap_height_);
|
||||
CP_XML_ATTR_OPT(L"svg:x-height", svg_x_height_);
|
||||
CP_XML_ATTR_OPT(L"svg:accent-height", svg_accent_height_);
|
||||
CP_XML_ATTR_OPT(L"svg:ascent", svg_ascent_);
|
||||
CP_XML_ATTR_OPT(L"svg:descent", svg_descent_);
|
||||
CP_XML_ATTR_OPT(L"svg:widths", svg_widths_);
|
||||
CP_XML_ATTR_OPT(L"svg:bbox", svg_bbox_);
|
||||
CP_XML_ATTR_OPT(L"svg:ideographic", svg_ideographic_);
|
||||
CP_XML_ATTR_OPT(L"svg:alphabetic", svg_alphabetic_);
|
||||
CP_XML_ATTR_OPT(L"svg:mathematical", svg_mathematical_);
|
||||
CP_XML_ATTR_OPT(L"svg:hanging", svg_hanging_);
|
||||
CP_XML_ATTR_OPT(L"svg:v-ideographic", svg_v_ideographic_);
|
||||
CP_XML_ATTR_OPT(L"svg:v-alphabetic", svg_v_alphabetic_);
|
||||
CP_XML_ATTR_OPT(L"svg:v-mathematical", svg_v_mathematical_);
|
||||
CP_XML_ATTR_OPT(L"svg:v-hanging", svg_v_hanging_);
|
||||
CP_XML_ATTR_OPT(L"svg:underline-position", svg_underline_position_);
|
||||
CP_XML_ATTR_OPT(L"svg:underline-thickness", svg_underline_thickness_);
|
||||
CP_XML_ATTR_OPT(L"svg:strikethrough-position", svg_strikethrough_position_);
|
||||
CP_XML_ATTR_OPT(L"svg:strikethrough-thickness", svg_strikethrough_thickness_);
|
||||
CP_XML_ATTR_OPT(L"svg:overline-position", svg_overline_position_);
|
||||
CP_XML_ATTR_OPT(L"svg:overline-thickness", svg_overline_thickness_);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -60,6 +60,12 @@
|
||||
#include "noteclass.h"
|
||||
#include "gradientstyle.h"
|
||||
#include "hatchstyle.h"
|
||||
#include "fontstyle.h"
|
||||
#include "fontvariant.h"
|
||||
#include "fontweight.h"
|
||||
#include "fontstretch.h"
|
||||
#include "fontfamilygeneric.h"
|
||||
#include "fontpitch.h"
|
||||
|
||||
#include "common_attlists.h"
|
||||
|
||||
@ -864,5 +870,87 @@ CP_REGISTER_OFFICE_ELEMENT2(style_presentation_page_layout)
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
|
||||
// style:font-face
|
||||
class style_font_face : public office_element_impl<style_font_face>
|
||||
{
|
||||
public:
|
||||
static const wchar_t * ns;
|
||||
static const wchar_t * name;
|
||||
static const xml::NodeType xml_type = xml::typeElement;
|
||||
static const ElementType type = typeStyleFontFace;
|
||||
|
||||
CPDOCCORE_DEFINE_VISITABLE();
|
||||
|
||||
virtual void serialize(std::wostream & strm);
|
||||
virtual void create_child_element ( const std::wstring & Ns, const std::wstring & Name){}
|
||||
virtual void add_child_element ( const office_element_ptr & child){}
|
||||
//todooo <svg:definition-src> and <svg:font-face-src>
|
||||
|
||||
_CP_OPT(std::wstring) style_name_;
|
||||
_CP_OPT(std::wstring) style_font_adornments_;
|
||||
_CP_OPT(odf_types::font_family_generic) style_font_family_generic_;
|
||||
_CP_OPT(odf_types::font_pitch) style_font_pitch_;
|
||||
_CP_OPT(std::wstring) style_font_charset_;
|
||||
|
||||
_CP_OPT(std::wstring) svg_font_family_;
|
||||
_CP_OPT(odf_types::font_style) svg_font_style_;
|
||||
_CP_OPT(odf_types::font_variant) svg_font_variant_;
|
||||
_CP_OPT(odf_types::font_weight) svg_font_weight_;
|
||||
_CP_OPT(odf_types::font_stretch) svg_font_stretch_;
|
||||
_CP_OPT(odf_types::length) svg_font_size_;
|
||||
_CP_OPT(std::wstring) svg_unicode_range_;
|
||||
_CP_OPT(int) svg_units_per_em_;
|
||||
_CP_OPT(std::wstring) svg_panose_1_;
|
||||
_CP_OPT(int) svg_stemv_;
|
||||
_CP_OPT(int) svg_stemh_;
|
||||
_CP_OPT(int) svg_slope_;
|
||||
_CP_OPT(int) svg_cap_height_;
|
||||
_CP_OPT(int) svg_x_height_;
|
||||
_CP_OPT(int) svg_accent_height_;
|
||||
_CP_OPT(int) svg_ascent_;
|
||||
_CP_OPT(int) svg_descent_;
|
||||
_CP_OPT(std::wstring) svg_widths_;
|
||||
_CP_OPT(std::wstring) svg_bbox_;
|
||||
_CP_OPT(int) svg_ideographic_;
|
||||
_CP_OPT(int) svg_alphabetic_;
|
||||
_CP_OPT(int) svg_mathematical_;
|
||||
_CP_OPT(int) svg_hanging_;
|
||||
_CP_OPT(int) svg_v_ideographic_;
|
||||
_CP_OPT(int) svg_v_alphabetic_;
|
||||
_CP_OPT(int) svg_v_mathematical_;
|
||||
_CP_OPT(int) svg_v_hanging_;
|
||||
_CP_OPT(int) svg_underline_position_;
|
||||
_CP_OPT(int) svg_underline_thickness_;
|
||||
_CP_OPT(int) svg_strikethrough_position_;
|
||||
_CP_OPT(int) svg_strikethrough_thickness_;
|
||||
_CP_OPT(int) svg_overline_position_;
|
||||
_CP_OPT(int) svg_overline_thickness_;
|
||||
|
||||
office_element_ptr_array svg_font_face_uri_;
|
||||
office_element_ptr_array svg_font_face_name_;
|
||||
office_element_ptr svg_definition_src_;
|
||||
|
||||
};
|
||||
CP_REGISTER_OFFICE_ELEMENT2(style_font_face);
|
||||
|
||||
// office-font-face-decls
|
||||
class office_font_face_decls : public office_element_impl<office_font_face_decls>
|
||||
{
|
||||
public:
|
||||
static const wchar_t * ns;
|
||||
static const wchar_t * name;
|
||||
static const xml::NodeType xml_type = xml::typeElement;
|
||||
static const ElementType type = typeOfficeFontFaceDecls;
|
||||
|
||||
CPDOCCORE_DEFINE_VISITABLE();
|
||||
|
||||
virtual void serialize(std::wostream & strm);
|
||||
virtual void create_child_element ( const std::wstring & Ns, const std::wstring & Name);
|
||||
virtual void add_child_element ( const office_element_ptr & child);
|
||||
|
||||
office_element_ptr_array content_;
|
||||
|
||||
};
|
||||
CP_REGISTER_OFFICE_ELEMENT2(office_font_face_decls);
|
||||
}
|
||||
}
|
||||
|
||||
@ -45,6 +45,7 @@
|
||||
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/CxnSp.h"
|
||||
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/SpTree.h"
|
||||
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Table/Table.h"
|
||||
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/AlphaModFix.h"
|
||||
|
||||
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Colors/SrgbClr.h"
|
||||
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Colors/PrstClr.h"
|
||||
@ -371,8 +372,14 @@ void OoxConverter::convert(PPTX::Logic::Pic *oox_picture)
|
||||
XmlUtils::GetInteger(oox_picture->blipFill.srcRect->t.get_value_or(L"0")) * Height /100. / 96.,
|
||||
XmlUtils::GetInteger(oox_picture->blipFill.srcRect->r.get_value_or(L"0")) * Width /100. / 96.,
|
||||
XmlUtils::GetInteger(oox_picture->blipFill.srcRect->b.get_value_or(L"0")) * Height /100. / 96.);
|
||||
}
|
||||
|
||||
}
|
||||
if (oox_picture->blipFill.blip.IsInit())
|
||||
{
|
||||
for (size_t i = 0 ; i < oox_picture->blipFill.blip->Effects.size(); i++)
|
||||
{
|
||||
convert(oox_picture->blipFill.blip->Effects[i].Effect.operator->());
|
||||
}
|
||||
}
|
||||
OoxConverter::convert(&oox_picture->nvPicPr.cNvPr);
|
||||
OoxConverter::convert(&oox_picture->spPr, oox_picture->style.GetPointer());
|
||||
|
||||
@ -513,9 +520,11 @@ void OoxConverter::convert(PPTX::Logic::GrpSpPr *oox_grpSpPr)
|
||||
if (oox_grpSpPr->xfrm->rot.IsInit())
|
||||
odf_context()->drawing_context()->set_group_rotate(oox_grpSpPr->xfrm->rot.get() / 60000.);
|
||||
}
|
||||
|
||||
convert(oox_grpSpPr->EffectList.List.GetPointer());
|
||||
convert(oox_grpSpPr->scene3d.GetPointer());
|
||||
|
||||
//UniFill Fill;
|
||||
//EffectProperties EffectList;
|
||||
//nullable<Scene3d> scene3d;
|
||||
}
|
||||
|
||||
void OoxConverter::convert(PPTX::Logic::SpTree *oox_shape_tree)
|
||||
@ -688,7 +697,7 @@ void OoxConverter::convert(PPTX::Logic::SpPr *oox_spPr, PPTX::Logic::ShapeStyle*
|
||||
|
||||
bool bLine = odf_context()->drawing_context()->isLineShape();
|
||||
|
||||
if (custGeom && !custGeom->cxnLst.empty())
|
||||
if (custGeom && !custGeom->cxnLst.empty() && !odf_context()->drawing_context()->isCustomClosed())
|
||||
bLine = true;
|
||||
|
||||
odf_context()->drawing_context()->start_area_properties();
|
||||
@ -713,23 +722,14 @@ void OoxConverter::convert(PPTX::Logic::SpPr *oox_spPr, PPTX::Logic::ShapeStyle*
|
||||
}
|
||||
odf_context()->drawing_context()->end_line_properties();
|
||||
//-----------------------------------------------------------------------------------------------------------------------------
|
||||
PPTX::Logic::EffectLst* effectLst = NULL;
|
||||
PPTX::Logic::EffectLst* effectLst = dynamic_cast<PPTX::Logic::EffectLst*>(oox_spPr->EffectList.List.GetPointer());
|
||||
|
||||
if (oox_spPr->EffectList.is<PPTX::Logic::EffectLst>())
|
||||
{
|
||||
effectLst = &oox_spPr->EffectList.as<PPTX::Logic::EffectLst>();
|
||||
}
|
||||
|
||||
if (effectLst) convert(effectLst);
|
||||
else if (oox_sp_style) convert(&oox_sp_style->effectRef, 3);
|
||||
|
||||
//convert(oox_spPr->ExtLst.GetPointer());
|
||||
convert(oox_spPr->scene3d.GetPointer());
|
||||
convert(oox_spPr->sp3d.GetPointer());
|
||||
|
||||
//nullable<OOX::Drawing::CEffectContainer> EffectDag;
|
||||
|
||||
//nullable<OOX::Drawing::COfficeArtExtensionList> ExtLst;
|
||||
//nullable<OOX::Drawing::CScene3D> Scene3D;
|
||||
//nullable<OOX::Drawing::CShape3D> Sp3D;
|
||||
//-----------------------------------------------------------------------------------------------------------------------------
|
||||
}
|
||||
|
||||
@ -844,15 +844,72 @@ void OoxConverter::convert(PPTX::Logic::AhPolar *oox_handle)
|
||||
{
|
||||
if (!oox_handle) return;
|
||||
}
|
||||
void OoxConverter::convert(PPTX::Logic::EffectDag *oox_effect_dag)
|
||||
{
|
||||
if (!oox_effect_dag) return;
|
||||
|
||||
//type - sib, value
|
||||
for (size_t i = 0; i < oox_effect_dag->Effects.size(); ++i)
|
||||
{
|
||||
convert(oox_effect_dag->Effects[i].Effect.operator->());
|
||||
}
|
||||
}
|
||||
void OoxConverter::convert(PPTX::Logic::EffectLst *oox_effect_list)
|
||||
{
|
||||
if (!oox_effect_list) return;
|
||||
|
||||
convert(oox_effect_list->blur.GetPointer());
|
||||
convert(oox_effect_list->fillOverlay.GetPointer());
|
||||
convert(oox_effect_list->glow.GetPointer());
|
||||
convert(oox_effect_list->reflection.GetPointer());
|
||||
convert(oox_effect_list->softEdge.GetPointer());
|
||||
convert(oox_effect_list->innerShdw.GetPointer());
|
||||
convert(oox_effect_list->outerShdw.GetPointer());
|
||||
convert(oox_effect_list->prstShdw.GetPointer());
|
||||
}
|
||||
void OoxConverter::convert(PPTX::Logic::AlphaModFix *oox_alpha)
|
||||
{
|
||||
if (oox_alpha == NULL) return;
|
||||
if (false == oox_alpha->amt.IsInit()) return;
|
||||
|
||||
odf_context()->drawing_context()->set_opacity(oox_alpha->amt.get() / 1000.);
|
||||
}
|
||||
void OoxConverter::convert(PPTX::Logic::Blur *oox_effect)
|
||||
{
|
||||
if (oox_effect == NULL) return;
|
||||
|
||||
}
|
||||
void OoxConverter::convert(PPTX::Logic::FillOverlay *oox_effect)
|
||||
{
|
||||
if (oox_effect == NULL) return;
|
||||
|
||||
}
|
||||
void OoxConverter::convert(PPTX::Logic::Reflection *oox_effect)
|
||||
{
|
||||
if (oox_effect == NULL) return;
|
||||
|
||||
}
|
||||
void OoxConverter::convert(PPTX::Logic::Glow *oox_effect)
|
||||
{
|
||||
if (oox_effect == NULL) return;
|
||||
|
||||
}
|
||||
void OoxConverter::convert(PPTX::Logic::SoftEdge *oox_effect)
|
||||
{
|
||||
if (oox_effect == NULL) return;
|
||||
|
||||
}
|
||||
void OoxConverter::convert(PPTX::Logic::Grayscl *oox_effect)
|
||||
{
|
||||
if (oox_effect == NULL) return;
|
||||
|
||||
odf_context()->drawing_context()->set_grayscale();
|
||||
}
|
||||
void OoxConverter::convert(PPTX::Logic::Duotone *oox_effect)
|
||||
{
|
||||
if (oox_effect == NULL) return;
|
||||
|
||||
}
|
||||
void OoxConverter::convert(PPTX::Logic::InnerShdw *oox_shadow)
|
||||
{
|
||||
if (oox_shadow == NULL) return;
|
||||
@ -991,10 +1048,10 @@ void OoxConverter::convert(PPTX::Logic::BlipFill *oox_bitmap_fill)
|
||||
odf_context()->drawing_context()->set_bitmap_link(pathImage);
|
||||
//...
|
||||
}
|
||||
//for (size_t i = 0 ; i < oox_bitmap_fill->blip->m_arrEffects.size(); i++)
|
||||
//{
|
||||
// convert(oox_bitmap_fill->blip->m_arrEffects[i]);
|
||||
//}
|
||||
for (size_t i = 0 ; i < oox_bitmap_fill->blip->Effects.size(); i++)
|
||||
{
|
||||
convert(oox_bitmap_fill->blip->Effects[i].Effect.operator->());
|
||||
}
|
||||
}
|
||||
if (oox_bitmap_fill->srcRect.IsInit() && Width > 0 && Height > 0)//часть изображения
|
||||
{
|
||||
@ -1852,18 +1909,27 @@ void OoxConverter::convert(PPTX::Logic::RunProperties *oox_run_pr, odf_writer::s
|
||||
PPTX::Logic::GradFill* gradFill = NULL;
|
||||
PPTX::Logic::SolidFill* solidFill = NULL;
|
||||
|
||||
if (oox_run_pr->Fill.is<PPTX::Logic::GradFill>())
|
||||
if (oox_run_pr->ln.is_init())
|
||||
{
|
||||
drawing->start_line_properties(true);
|
||||
if (oox_run_pr->ln->Fill.is_init() && oox_run_pr->ln->Fill.getType() == OOX::et_a_solidFill )
|
||||
{
|
||||
solidFill = &oox_run_pr->ln->Fill.as<PPTX::Logic::SolidFill>();
|
||||
}
|
||||
}
|
||||
if (!solidFill && oox_run_pr->Fill.is<PPTX::Logic::GradFill>())
|
||||
{
|
||||
gradFill = &oox_run_pr->Fill.as<PPTX::Logic::GradFill>();
|
||||
}
|
||||
else if (!solidFill && oox_run_pr->Fill.is<PPTX::Logic::SolidFill>())
|
||||
{
|
||||
solidFill = &oox_run_pr->Fill.as<PPTX::Logic::SolidFill>();
|
||||
}
|
||||
|
||||
if (gradFill && !gradFill->GsLst.empty())
|
||||
{
|
||||
convert(&gradFill->GsLst[0].color, hexColorText, opacityText);
|
||||
}
|
||||
if (oox_run_pr->Fill.is<PPTX::Logic::SolidFill>())
|
||||
{
|
||||
solidFill = &oox_run_pr->Fill.as<PPTX::Logic::SolidFill>();
|
||||
}
|
||||
if (solidFill)
|
||||
{
|
||||
convert(&solidFill->Color, hexColorText, opacityText);
|
||||
@ -2293,7 +2359,7 @@ void OoxConverter::convert(PPTX::Logic::StyleRef *style_ref, int type)
|
||||
if (index < 1000)
|
||||
{
|
||||
index -= 1;
|
||||
if ((index >= 0) || (index < (int)theme->themeElements.fmtScheme.fillStyleLst.size()))
|
||||
if (index >= 0 && index < (int)theme->themeElements.fmtScheme.fillStyleLst.size())
|
||||
{
|
||||
fill = &theme->themeElements.fmtScheme.fillStyleLst[index];
|
||||
}
|
||||
@ -2301,7 +2367,7 @@ void OoxConverter::convert(PPTX::Logic::StyleRef *style_ref, int type)
|
||||
else if (index > 1000)
|
||||
{
|
||||
index -= 1001;
|
||||
if ((index >= 0) || (index < (int)theme->themeElements.fmtScheme.bgFillStyleLst.size()))
|
||||
if (index >= 0 && index < (int)theme->themeElements.fmtScheme.bgFillStyleLst.size())
|
||||
{
|
||||
fill = &theme->themeElements.fmtScheme.bgFillStyleLst[index];
|
||||
}
|
||||
@ -2312,15 +2378,15 @@ void OoxConverter::convert(PPTX::Logic::StyleRef *style_ref, int type)
|
||||
else if (type == 2)
|
||||
{
|
||||
index -= 1;
|
||||
if (index >= 0 || index < (int)theme->themeElements.fmtScheme.lnStyleLst.size())
|
||||
if (index >= 0 && index < (int)theme->themeElements.fmtScheme.lnStyleLst.size())
|
||||
{
|
||||
convert(&theme->themeElements.fmtScheme.lnStyleLst[index], nARGB);
|
||||
}
|
||||
}
|
||||
else if (type == 3)
|
||||
else if (type == 3)
|
||||
{
|
||||
index -= 1;
|
||||
if ((index >= 0) || (index < (int)theme->themeElements.fmtScheme.effectStyleLst.size()))
|
||||
if (index >= 0 && index < (int)theme->themeElements.fmtScheme.effectStyleLst.size())
|
||||
{
|
||||
convert(&theme->themeElements.fmtScheme.effectStyleLst[index]);
|
||||
}
|
||||
|
||||
@ -483,9 +483,17 @@ void OoxConverter::convert(OOX::Vml::CFill *vml_fill)
|
||||
odf_context()->drawing_context()->set_gradient_start(*sRgbColor1, no_set);
|
||||
if (sRgbColor2)
|
||||
odf_context()->drawing_context()->set_gradient_end(*sRgbColor2, no_set);
|
||||
else
|
||||
odf_context()->drawing_context()->set_gradient_end(L"#ffffff", no_set);
|
||||
|
||||
if (vml_fill->m_oAngle.IsInit())
|
||||
{
|
||||
odf_context()->drawing_context()->set_gradient_angle(vml_fill->m_oAngle->GetValue() + 90);
|
||||
}
|
||||
if (vml_fill->m_oFocusPosition.IsInit())
|
||||
{
|
||||
odf_context()->drawing_context()->set_gradient_center(vml_fill->m_oFocusPosition->GetX(), vml_fill->m_oFocusPosition->GetY());
|
||||
}
|
||||
|
||||
odf_context()->drawing_context()->end_gradient_style();
|
||||
}break;
|
||||
@ -952,9 +960,9 @@ void OoxConverter::convert(OOX::Vml::CVmlCommonElements *vml_common)
|
||||
delete oRgbColor;
|
||||
}
|
||||
}
|
||||
for (std::vector<OOX::WritingElement*>::iterator it = vml_common->m_arrItems.begin(); it != vml_common->m_arrItems.end(); ++it)
|
||||
for (size_t i = 0; i < vml_common->m_arrItems.size(); ++i)
|
||||
{
|
||||
convert(*it);
|
||||
convert(vml_common->m_arrItems[i]);
|
||||
}
|
||||
|
||||
if (vml_common->m_oFilled.IsInit() && vml_common->m_oFilled->GetValue() == SimpleTypes::booleanFalse)
|
||||
|
||||
@ -61,6 +61,9 @@
|
||||
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/GraphicFrame.h"
|
||||
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Pic.h"
|
||||
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/SmartArt.h"
|
||||
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/AlphaModFix.h"
|
||||
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/Grayscl.h"
|
||||
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/Duotone.h"
|
||||
|
||||
#include "../../../Common/DocxFormat/Source/XlsxFormat/Worksheets/Sparkline.h"
|
||||
#include "../../../OfficeCryptReader/source/CryptTransform.h"
|
||||
@ -373,6 +376,7 @@ void OoxConverter::convert(OOX::WritingElement *oox_unknown)
|
||||
case OOX::et_p_ShapeTree:
|
||||
case OOX::et_a_GroupShape:
|
||||
case OOX::et_w_GroupShape:
|
||||
case OOX::et_lc_LockedCanvas:
|
||||
{
|
||||
convert(dynamic_cast<PPTX::Logic::SpTree *>(oox_unknown));
|
||||
}break;
|
||||
@ -443,14 +447,50 @@ void OoxConverter::convert(OOX::WritingElement *oox_unknown)
|
||||
{
|
||||
convert(dynamic_cast<PPTX::Logic::EffectStyle*>(oox_unknown));
|
||||
}break;
|
||||
//case OOX::et_a_alphaModFix:
|
||||
//{
|
||||
// OOX::Drawing::CAlphaModulateFixedEffect* pAlpha= dynamic_cast<OOX::Drawing::CAlphaModulateFixedEffect*>(oox_unknown);
|
||||
// if (pAlpha)
|
||||
// {
|
||||
// odf_context()->drawing_context()->set_opacity(pAlpha->m_oAmt.GetValue());
|
||||
// }
|
||||
//}break;
|
||||
case OOX::et_a_alphaModFix:
|
||||
{
|
||||
convert(dynamic_cast<PPTX::Logic::AlphaModFix*>(oox_unknown));
|
||||
}break;
|
||||
case OOX::et_a_blur:
|
||||
{
|
||||
convert(dynamic_cast<PPTX::Logic::Blur*>(oox_unknown));
|
||||
}break;
|
||||
case OOX::et_a_fillOverlay:
|
||||
{
|
||||
convert(dynamic_cast<PPTX::Logic::FillOverlay*>(oox_unknown));
|
||||
}break;
|
||||
case OOX::et_a_glow:
|
||||
{
|
||||
convert(dynamic_cast<PPTX::Logic::Glow*>(oox_unknown));
|
||||
}break;
|
||||
case OOX::et_a_innerShdw:
|
||||
{
|
||||
convert(dynamic_cast<PPTX::Logic::InnerShdw*>(oox_unknown));
|
||||
}break;
|
||||
case OOX::et_a_outerShdw:
|
||||
{
|
||||
convert(dynamic_cast<PPTX::Logic::OuterShdw*>(oox_unknown));
|
||||
}break;
|
||||
case OOX::et_a_reflection:
|
||||
{
|
||||
convert(dynamic_cast<PPTX::Logic::Reflection*>(oox_unknown));
|
||||
}break;
|
||||
case OOX::et_a_softEdge:
|
||||
{
|
||||
convert(dynamic_cast<PPTX::Logic::SoftEdge*>(oox_unknown));
|
||||
}break;
|
||||
case OOX::et_a_grayscl:
|
||||
{
|
||||
convert(dynamic_cast<PPTX::Logic::Grayscl*>(oox_unknown));
|
||||
}break;
|
||||
case OOX::et_a_duotone:
|
||||
{
|
||||
convert(dynamic_cast<PPTX::Logic::Duotone*>(oox_unknown));
|
||||
}break;
|
||||
case OOX::et_a_effectDag:
|
||||
{
|
||||
convert(dynamic_cast<PPTX::Logic::EffectDag*>(oox_unknown));
|
||||
}break;
|
||||
case OOX::et_v_imagedata:
|
||||
{
|
||||
convert(dynamic_cast<OOX::Vml::CImageData*>(oox_unknown));
|
||||
|
||||
@ -294,6 +294,7 @@ namespace PPTX
|
||||
class SolidFill;
|
||||
class PattFill;
|
||||
class EffectLst;
|
||||
class EffectDag;
|
||||
class FontRef;
|
||||
class StyleRef;
|
||||
class Ln;
|
||||
@ -328,12 +329,20 @@ namespace PPTX
|
||||
class QuadBezTo;
|
||||
class CubicBezTo;
|
||||
class Close;
|
||||
class AhXY;
|
||||
class AhPolar;
|
||||
class EffectStyle;
|
||||
class InnerShdw;
|
||||
class OuterShdw;
|
||||
class PrstShdw;
|
||||
class AhXY;
|
||||
class AhPolar;
|
||||
class AlphaModFix;
|
||||
class Blur;
|
||||
class FillOverlay;
|
||||
class Glow;
|
||||
class Reflection;
|
||||
class SoftEdge;
|
||||
class Grayscl;
|
||||
class Duotone;
|
||||
}
|
||||
}
|
||||
|
||||
@ -448,12 +457,21 @@ public:
|
||||
void convert(PPTX::Logic::Close *oox_geom_path);
|
||||
void convert(PPTX::Logic::AhXY *oox_handle);
|
||||
void convert(PPTX::Logic::AhPolar *oox_handle);
|
||||
|
||||
void convert(PPTX::Logic::EffectStyle *oox_effect);
|
||||
void convert(PPTX::Logic::EffectLst *oox_effect_list);
|
||||
void convert(PPTX::Logic::EffectDag *oox_effect_dag);
|
||||
void convert(PPTX::Logic::InnerShdw *oox_effect);
|
||||
void convert(PPTX::Logic::OuterShdw *oox_effect);
|
||||
void convert(PPTX::Logic::PrstShdw *oox_effect);
|
||||
|
||||
void convert(PPTX::Logic::AlphaModFix *oox_effect);
|
||||
void convert(PPTX::Logic::Blur *oox_effect);
|
||||
void convert(PPTX::Logic::FillOverlay *oox_effect);
|
||||
void convert(PPTX::Logic::Glow *oox_effect);
|
||||
void convert(PPTX::Logic::Reflection *oox_effect);
|
||||
void convert(PPTX::Logic::SoftEdge *oox_effect);
|
||||
void convert(PPTX::Logic::Grayscl *oox_effect);
|
||||
void convert(PPTX::Logic::Duotone *oox_effect);
|
||||
//.chart............................................................................................................................
|
||||
void convert(OOX::Spreadsheet::CT_ChartSpace *oox_chart);
|
||||
void convert(OOX::Spreadsheet::CT_Title *ct_title);
|
||||
|
||||
@ -1205,7 +1205,8 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_NumDataSource* val)
|
||||
}
|
||||
else if (val->m_numRef)
|
||||
{
|
||||
if (val->m_numRef->m_f)odf_context()->chart_context()->set_series_value_formula(*val->m_numRef->m_f);
|
||||
if (val->m_numRef->m_f)
|
||||
odf_context()->chart_context()->set_series_value_formula(*val->m_numRef->m_f);
|
||||
|
||||
convert(val->m_numRef->m_numCache, false, false);
|
||||
}
|
||||
|
||||
@ -352,6 +352,7 @@ void DocxConverter::convert(OOX::WritingElement *oox_unknown)
|
||||
}break;
|
||||
case OOX::et_w_GroupShape:
|
||||
case OOX::et_p_ShapeTree:
|
||||
case OOX::et_lc_LockedCanvas:
|
||||
{
|
||||
convert(dynamic_cast<PPTX::Logic::SpTree*>(oox_unknown));
|
||||
}break;
|
||||
@ -3000,6 +3001,11 @@ void DocxConverter::convert(OOX::Drawing::CAnchor *oox_anchor)
|
||||
odt_context->drawing_context()->set_wrap_style(odf_types::style_wrap::Parallel);
|
||||
wrap_set = true;
|
||||
}
|
||||
else if (oox_anchor->m_oWrapNone.IsInit())
|
||||
{
|
||||
odt_context->drawing_context()->set_wrap_style(odf_types::style_wrap::None);
|
||||
wrap_set = true;
|
||||
}
|
||||
else if (oox_anchor->m_oAllowOverlap.IsInit())
|
||||
{
|
||||
odt_context->drawing_context()->set_overlap(oox_anchor->m_oAllowOverlap->ToBool());
|
||||
@ -4363,13 +4369,22 @@ bool DocxConverter::convert(OOX::Logic::CTableProperty *oox_table_pr, odf_writer
|
||||
}
|
||||
else if (oox_table_pr->m_oTblLayout.IsInit() && oox_table_pr->m_oTblLayout->m_oType.IsInit())
|
||||
{
|
||||
table_properties->table_format_properties_.common_horizontal_margin_attlist_.fo_margin_left_ = odf_types::length(0,odf_types::length::cm);
|
||||
table_properties->table_format_properties_.common_horizontal_margin_attlist_.fo_margin_left_ = odf_types::length(0, odf_types::length::cm);
|
||||
|
||||
table_properties->table_format_properties_.table_align_ = odf_types::table_align(odf_types::table_align::Left);
|
||||
}
|
||||
//if(oox_table_pr->m_oJc.IsInit() && oox_table_pr->m_oJc->m_oVal.IsInit())
|
||||
//{
|
||||
//}
|
||||
if(oox_table_pr->m_oJc.IsInit() && oox_table_pr->m_oJc->m_oVal.IsInit())
|
||||
{
|
||||
switch(oox_table_pr->m_oJc->m_oVal->GetValue())
|
||||
{
|
||||
case 0: table_properties->table_format_properties_.table_align_ = odf_types::table_align(odf_types::table_align::Center); break;
|
||||
case 2:
|
||||
case 3: table_properties->table_format_properties_.table_align_ = odf_types::table_align(odf_types::table_align::Left); break;
|
||||
case 1:
|
||||
case 4: table_properties->table_format_properties_.table_align_ = odf_types::table_align(odf_types::table_align::Right); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
//nullable<ComplexTypes::Word::COnOff2<SimpleTypes::onoffTrue> > m_oBidiVisual;
|
||||
//nullable<ComplexTypes::Word::CShading > m_oShade;
|
||||
//nullable<ComplexTypes::Word::std::wstring_ > m_oTblCaption;
|
||||
|
||||
@ -1297,7 +1297,8 @@ void PptxConverter::convert(PPTX::Logic::Bg *oox_background)
|
||||
if (oox_background->bgPr.IsInit())
|
||||
{
|
||||
OoxConverter::convert(&oox_background->bgPr->Fill);
|
||||
//EffectProperties EffectList;
|
||||
|
||||
convert(oox_background->bgPr->EffectList.List.GetPointer());
|
||||
//nullable_bool shadeToTitle;
|
||||
}
|
||||
else if (oox_background->bgRef.IsInit())
|
||||
|
||||
@ -43,6 +43,8 @@
|
||||
#include "../../../Common/DocxFormat/Source/XlsxFormat/Pivot/PivotCacheDefinition.h"
|
||||
#include "../../../Common/DocxFormat/Source/XlsxFormat/Pivot/PivotCacheRecords.h"
|
||||
|
||||
#include "../../../Common/DocxFormat/Source/DocxFormat/VmlDrawing.h"
|
||||
|
||||
#include "../OdfFormat/ods_conversion_context.h"
|
||||
|
||||
#include "../OdfFormat/odf_text_context.h"
|
||||
@ -295,6 +297,12 @@ void XlsxConverter::convert(OOX::Spreadsheet::CWorksheet *oox_sheet)
|
||||
}
|
||||
ods_context->end_columns();
|
||||
|
||||
//мержи
|
||||
for (size_t mrg = 0 ; oox_sheet->m_oMergeCells.IsInit() && mrg < oox_sheet->m_oMergeCells->m_arrItems.size(); mrg++)
|
||||
{
|
||||
if (oox_sheet->m_oMergeCells->m_arrItems[mrg]->m_oRef.IsInit())
|
||||
ods_context->add_merge_cells(oox_sheet->m_oMergeCells->m_arrItems[mrg]->m_oRef.get());
|
||||
}
|
||||
//строки
|
||||
if (oox_sheet->m_oSheetData.IsInit() )
|
||||
{
|
||||
@ -311,12 +319,6 @@ void XlsxConverter::convert(OOX::Spreadsheet::CWorksheet *oox_sheet)
|
||||
oox_sheet->m_oSheetData.reset();
|
||||
}
|
||||
|
||||
//мержи
|
||||
for (size_t mrg = 0 ; oox_sheet->m_oMergeCells.IsInit() && mrg < oox_sheet->m_oMergeCells->m_arrItems.size(); mrg++)
|
||||
{
|
||||
if (oox_sheet->m_oMergeCells->m_arrItems[mrg]->m_oRef.IsInit())
|
||||
ods_context->add_merge_cells(oox_sheet->m_oMergeCells->m_arrItems[mrg]->m_oRef.get());
|
||||
}
|
||||
if (oox_sheet->m_oDrawing.IsInit() && oox_sheet->m_oDrawing->m_oId.IsInit())
|
||||
{
|
||||
smart_ptr<OOX::File> oFile = oox_sheet->Find(oox_sheet->m_oDrawing->m_oId->GetValue());
|
||||
@ -1062,12 +1064,12 @@ void XlsxConverter::convert(OOX::Spreadsheet::CSheetViews *oox_sheet_views)
|
||||
{
|
||||
if (!oox_sheet_views)return;
|
||||
|
||||
for (unsigned long i =0; i < oox_sheet_views->m_arrItems.size(); i++)
|
||||
for (size_t i =0; i < oox_sheet_views->m_arrItems.size(); i++)
|
||||
{
|
||||
OOX::Spreadsheet::CSheetView *sheet_view = oox_sheet_views->m_arrItems[i];
|
||||
if (!sheet_view) continue;
|
||||
|
||||
int view_id = sheet_view->m_oWorkbookViewId->GetValue();
|
||||
int view_id = sheet_view->m_oWorkbookViewId.IsInit() ? sheet_view->m_oWorkbookViewId->GetValue() : -1;
|
||||
if (view_id < 0) continue;
|
||||
|
||||
ods_context->start_table_view( view_id );
|
||||
@ -1115,10 +1117,14 @@ void XlsxConverter::convert(OOX::Spreadsheet::CSheetViews *oox_sheet_views)
|
||||
std::wstring ref(selection->m_oActiveCell.get());
|
||||
odf_writer::utils::parsing_ref (ref, ActiveCellX, ActiveCellY);
|
||||
|
||||
if (ActiveCellX >= 0 && ActiveCellY >= 0)
|
||||
if (ActiveCellX > 0 && ActiveCellY > 0)
|
||||
{
|
||||
ods_context->settings_context()->add_property(L"CursorPositionX", L"int", std::to_wstring(ActiveCellX));
|
||||
ods_context->settings_context()->add_property(L"CursorPositionY", L"int", std::to_wstring(ActiveCellY));
|
||||
ods_context->settings_context()->add_property(L"CursorPositionX", L"int", std::to_wstring(ActiveCellX - 1));
|
||||
ods_context->settings_context()->add_property(L"CursorPositionY", L"int", std::to_wstring(ActiveCellY - 1));
|
||||
ods_context->settings_context()->add_property(L"PositionLeft", L"int", std::to_wstring(0));
|
||||
ods_context->settings_context()->add_property(L"PositionRight", L"int", std::to_wstring(0));
|
||||
ods_context->settings_context()->add_property(L"PositionTop", L"int", std::to_wstring(0));
|
||||
ods_context->settings_context()->add_property(L"PositionBottom", L"int", std::to_wstring(ActiveCellY > 30 ? ActiveCellY - 2 : 0));
|
||||
}
|
||||
}
|
||||
if (selection->m_oSqref.IsInit())
|
||||
@ -1474,6 +1480,7 @@ void XlsxConverter::convert(OOX::Spreadsheet::CFont *font, odf_writer::style_tex
|
||||
if ((font->m_oStrike.IsInit()) && (font->m_oStrike->m_oVal.ToBool()))
|
||||
text_properties->content_.style_text_line_through_type_ = odf_types::line_type(odf_types::line_type::Single);
|
||||
|
||||
ods_context->add_font(font_name);
|
||||
ods_context->calculate_font_metrix(font_name, font_size, font_italic, font_bold);
|
||||
}
|
||||
|
||||
@ -1498,12 +1505,12 @@ void XlsxConverter::convert(OOX::Spreadsheet::CFill * fill, odf_writer::style_ta
|
||||
convert(fill->m_oPatternFill->m_oFgColor.GetPointer(),
|
||||
cell_properties->style_table_cell_properties_attlist_.common_background_color_attlist_.fo_background_color_);
|
||||
}
|
||||
else if (fill->m_oPatternFill->m_oBgColor.IsInit())
|
||||
if (fill->m_oPatternFill->m_oBgColor.IsInit() && !cell_properties->style_table_cell_properties_attlist_.common_background_color_attlist_.fo_background_color_)
|
||||
{
|
||||
convert(fill->m_oPatternFill->m_oBgColor.GetPointer(),
|
||||
cell_properties->style_table_cell_properties_attlist_.common_background_color_attlist_.fo_background_color_);
|
||||
}
|
||||
else if (fill->m_oPatternFill->m_oPatternType.IsInit())
|
||||
if (fill->m_oPatternFill->m_oPatternType.IsInit() && !cell_properties->style_table_cell_properties_attlist_.common_background_color_attlist_.fo_background_color_)
|
||||
{
|
||||
switch(fill->m_oPatternFill->m_oPatternType->GetValue())
|
||||
{
|
||||
@ -1759,12 +1766,12 @@ void XlsxConverter::convert(OOX::Spreadsheet::CColor *color, _CP_OPT(odf_types::
|
||||
|
||||
if(color->m_oThemeColor.IsInit() && xlsx_document->m_pTheme.IsInit())
|
||||
{
|
||||
DWORD argb = xlsx_document->m_pTheme->themeElements.clrScheme.GetARGBFromScheme(color->m_oThemeColor->ToString());
|
||||
DWORD bgra = xlsx_document->m_pTheme->themeElements.clrScheme.GetARGBFromScheme(color->m_oThemeColor->ToString());
|
||||
|
||||
ucR = (argb & 0x0000FF);
|
||||
ucB = (argb & 0x00FF00) >> 8;
|
||||
ucG = (argb & 0xFF0000) >> 16;
|
||||
ucA = argb >> 24;
|
||||
ucB = (bgra & 0x0000FF);
|
||||
ucG = (bgra & 0x00FF00) >> 8;
|
||||
ucR = (bgra & 0xFF0000) >> 16;
|
||||
ucA = bgra >> 24;
|
||||
|
||||
result = true;
|
||||
}
|
||||
@ -1983,16 +1990,37 @@ void XlsxConverter::convert(OOX::Spreadsheet::CCellAnchor *oox_anchor)
|
||||
if (!oox_anchor) return;
|
||||
|
||||
//////////////////
|
||||
if (oox_anchor->m_oFrom.IsInit() || oox_anchor->m_oTo.IsInit())
|
||||
if (oox_anchor->m_oFrom.IsInit() || oox_anchor->m_oTo.IsInit() ||
|
||||
oox_anchor->m_oPos.IsInit() || oox_anchor->m_oExt.IsInit())
|
||||
{
|
||||
oox_table_position from={}, to={};
|
||||
|
||||
convert(oox_anchor->m_oFrom.GetPointer(), &from);
|
||||
convert(oox_anchor->m_oTo.GetPointer(), &to);
|
||||
double x1 = 0, y1 = 0, x2 = 0, y2 = 0;
|
||||
|
||||
double x1=0, y1=0, x2=0, y2=0;
|
||||
ods_context->current_table().convert_position(from, x1, y1);
|
||||
ods_context->current_table().convert_position(to, x2, y2);
|
||||
if (oox_anchor->m_oFrom.IsInit())
|
||||
{
|
||||
convert(oox_anchor->m_oFrom.GetPointer(), &from);
|
||||
ods_context->current_table().convert_position(from, x1, y1);
|
||||
}
|
||||
else if (oox_anchor->m_oPos.IsInit())
|
||||
{
|
||||
if (oox_anchor->m_oPos->m_oX.IsInit())
|
||||
x1 = oox_anchor->m_oPos->m_oX->GetValue();
|
||||
if (oox_anchor->m_oPos->m_oY.IsInit())
|
||||
y1 = oox_anchor->m_oPos->m_oY->GetValue();
|
||||
}
|
||||
if (oox_anchor->m_oTo.IsInit())
|
||||
{
|
||||
convert(oox_anchor->m_oTo.GetPointer(), &to);
|
||||
ods_context->current_table().convert_position(to, x2, y2);
|
||||
}
|
||||
else if (oox_anchor->m_oExt.IsInit())
|
||||
{
|
||||
if (oox_anchor->m_oExt->m_oCx.IsInit())
|
||||
x2 = x1 + oox_anchor->m_oExt->m_oCx->GetValue();
|
||||
if (oox_anchor->m_oExt->m_oCy.IsInit())
|
||||
y2 = y1 + oox_anchor->m_oExt->m_oCy->GetValue();
|
||||
}
|
||||
|
||||
ods_context->drawing_context()->set_drawings_rect(x1, y1, x2 - x1, y2 - y1);
|
||||
}
|
||||
@ -2100,10 +2128,77 @@ void XlsxConverter::convert(OOX::Spreadsheet::COleObjects *oox_objects, OOX::Spr
|
||||
odf_ref_image = odf_context()->add_imageobject(pathImage);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
if (!bAnchor || odf_ref_image.empty())
|
||||
if ((!bAnchor || odf_ref_image.empty()) && object->m_oShapeId.IsInit() && (oox_sheet->m_oLegacyDrawing.IsInit()) && (oox_sheet->m_oLegacyDrawing->m_oId.IsInit()))
|
||||
{
|
||||
//from vml drawing or oox drawing
|
||||
//m_oShapeId;
|
||||
//todooo вынести отдельно если понадобится еще для чего
|
||||
OOX::CVmlDrawing *pVmlDrawing = NULL;
|
||||
smart_ptr<OOX::File> oFileV = oox_sheet->Find(oox_sheet->m_oLegacyDrawing->m_oId->GetValue());
|
||||
if (oFileV.IsInit() && OOX::FileTypes::VmlDrawing == oFileV->type())
|
||||
{
|
||||
pVmlDrawing = (OOX::CVmlDrawing*)oFileV.operator->();
|
||||
}
|
||||
OOX::WritingElement* pShapeElem = NULL;
|
||||
std::wstring sShapeId = L"_x0000_s" + std::to_wstring(object->m_oShapeId->GetValue());
|
||||
if (pVmlDrawing)
|
||||
{
|
||||
boost::unordered_map<std::wstring, OOX::CVmlDrawing::_vml_shape>::iterator pFind = pVmlDrawing->m_mapShapes.find(sShapeId);
|
||||
|
||||
if (pFind != pVmlDrawing->m_mapShapes.end())
|
||||
{
|
||||
pShapeElem = pFind->second.pElement;
|
||||
}
|
||||
}
|
||||
OOX::Vml::CShape* pShape = static_cast<OOX::Vml::CShape*>(pShapeElem);
|
||||
|
||||
for(size_t j = 0; (pShape) && (j < pShape->m_arrItems.size()); ++j)
|
||||
{
|
||||
OOX::WritingElement* pChildElemShape = pShape->m_arrItems[j];
|
||||
if(!bAnchor && OOX::et_v_ClientData == pChildElemShape->getType())
|
||||
{
|
||||
OOX::Vml::CClientData* pClientData = static_cast<OOX::Vml::CClientData*>(pChildElemShape);
|
||||
|
||||
SimpleTypes::Spreadsheet::CCellAnchorType<> eAnchorType;
|
||||
OOX::Spreadsheet::CCellAnchor *pCellAnchor = new OOX::Spreadsheet::CCellAnchor(eAnchorType);
|
||||
|
||||
pClientData->toCellAnchor(pCellAnchor);
|
||||
|
||||
oox_table_position from = {}, to = {};
|
||||
convert(pCellAnchor->m_oFrom.GetPointer(), &from);
|
||||
convert(pCellAnchor->m_oTo.GetPointer(), &to);
|
||||
delete pCellAnchor;
|
||||
|
||||
double x1 = 0, y1 = 0, x2 = 0, y2 = 0;
|
||||
ods_context->current_table().convert_position(from, x1, y1);
|
||||
ods_context->current_table().convert_position(to, x2, y2);
|
||||
|
||||
ods_context->drawing_context()->set_drawings_rect(x1, y1, x2 - x1, y2 - y1);
|
||||
}
|
||||
if(OOX::et_v_imagedata == pChildElemShape->getType())
|
||||
{
|
||||
OOX::Vml::CImageData* pImageData = static_cast<OOX::Vml::CImageData*>(pChildElemShape);
|
||||
|
||||
std::wstring sIdImageFileCache;
|
||||
if (pImageData->m_oRelId.IsInit()) sIdImageFileCache = pImageData->m_oRelId->GetValue();
|
||||
else if (pImageData->m_rId.IsInit()) sIdImageFileCache = pImageData->m_rId->GetValue();
|
||||
else if (pImageData->m_rPict.IsInit()) sIdImageFileCache = pImageData->m_rPict->GetValue();
|
||||
|
||||
if (!sIdImageFileCache.empty())
|
||||
{
|
||||
//ищем физический файл ( rId относительно vml_drawing)
|
||||
smart_ptr<OOX::File> pFile = pVmlDrawing->Find(sIdImageFileCache);
|
||||
|
||||
if (pFile.IsInit() && ( OOX::FileTypes::Image == pFile->type()))
|
||||
{
|
||||
OOX::Image* pImageFileCache = static_cast<OOX::Image*>(pFile.operator->());
|
||||
|
||||
if (pImageFileCache && odf_ref_image.empty())
|
||||
{
|
||||
odf_ref_image = odf_context()->add_imageobject(pImageFileCache->filename().GetPath());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
ods_context->drawing_context()->start_drawing();
|
||||
@ -2174,9 +2269,12 @@ void XlsxConverter::convert(OOX::Spreadsheet::CConditionalFormattingRule *oox_co
|
||||
}
|
||||
if (oox_cond_rule->m_oOperator.IsInit())
|
||||
ods_context->current_table().set_conditional_operator(oox_cond_rule->m_oOperator->GetValue());
|
||||
|
||||
if (oox_cond_rule->m_oText.IsInit())
|
||||
ods_context->current_table().set_conditional_text(oox_cond_rule->m_oText.get2());
|
||||
|
||||
for (size_t i=0; i< oox_cond_rule->m_arrItems.size(); i++)
|
||||
convert(oox_cond_rule->m_arrItems[i]);
|
||||
for (size_t i=0; i< oox_cond_rule->m_arrItems.size(); i++)
|
||||
convert(oox_cond_rule->m_arrItems[i]);
|
||||
}
|
||||
ods_context->current_table().end_conditional_rule();
|
||||
}
|
||||
|
||||
@ -34,6 +34,13 @@
|
||||
|
||||
#include <vector>
|
||||
|
||||
#ifndef min
|
||||
#define min(a,b) ((a) < (b) ? (a) : (b))
|
||||
#endif
|
||||
#ifndef max
|
||||
#define max(a,b) ((a) > (b) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
#include <windows.h>
|
||||
#include <gdiplus.h>
|
||||
@ -43,13 +50,6 @@
|
||||
#include "../../../../DesktopEditor/raster/BgraFrame.h"
|
||||
#include "../../../../ASCOfficeOdfFile/src/docx/measuredigits.h"
|
||||
|
||||
#ifndef min
|
||||
#define min(a,b) ((a) < (b) ? (a) : (b))
|
||||
#endif
|
||||
#ifndef max
|
||||
#define max(a,b) ((a) > (b) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
namespace _graphics_utils_
|
||||
{
|
||||
bool GetResolution(const wchar_t* fileName, double & Width, double &Height) //pt
|
||||
@ -144,7 +144,10 @@ namespace _graphics_utils_
|
||||
}
|
||||
double calculate_size_symbol_asc(std::wstring name, double size, bool italic, bool bold , NSFonts::IApplicationFonts *appFonts)
|
||||
{
|
||||
std::pair<float,float> val = cpdoccore::utils::GetMaxDigitSizePixels(name, size, 96., 0 , appFonts);
|
||||
if (name.empty())
|
||||
name = L"Arial";
|
||||
|
||||
std::pair<float,float> val = cpdoccore::utils::GetMaxDigitSizePixels(name, size, 96., 0 , appFonts);
|
||||
|
||||
return val.first;
|
||||
}
|
||||
|
||||
@ -2015,7 +2015,7 @@ void CPPTUserInfo::LoadNoMainMaster(_UINT32 dwMasterID)
|
||||
|
||||
if (pGroup)
|
||||
{
|
||||
LoadGroupShapeContainer(pGroup, NULL, NULL, pLayout, pThemeWrapper, pMasterWrapper);
|
||||
LoadGroupShapeContainer(pGroup, NULL, pTheme, pLayout, pThemeWrapper, pMasterWrapper);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -377,6 +377,10 @@
|
||||
RelativePath="..\..\XlsxSerializerCom\Writer\CSVWriter.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\ASCOfficeDocxFile2\BinReader\CustormXmlWriter.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\ASCOfficeDocxFile2\DocWrapper\DocxSerializer.cpp"
|
||||
>
|
||||
|
||||
@ -666,7 +666,14 @@ namespace PPTX
|
||||
|
||||
std::wstring strValue = strParams.substr(nPosOld, nPosition - nPosOld);
|
||||
|
||||
m_mapSettings.insert(std::pair<std::wstring, std::wstring>(strName, strValue));
|
||||
if (m_mapSettings.find(strName) == m_mapSettings.end())
|
||||
{
|
||||
m_mapSettings.insert(std::make_pair(strName, strValue));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_mapSettings[strName] += L"," + strValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -733,8 +740,14 @@ namespace PPTX
|
||||
if (pData[nPosOld] == WCHAR('.'))
|
||||
strValue = (L"0" + strValue);
|
||||
|
||||
//добавляем через [], а не insert, потому что ключи могут дублироваться(а в предыдущей реализации использовалось последнее значение)
|
||||
m_mapSettings[strName] = strValue;
|
||||
if (m_mapSettings.find(strName) == m_mapSettings.end())
|
||||
{
|
||||
m_mapSettings.insert(std::make_pair(strName, strValue));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_mapSettings[strName] += L"," + strValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2833,7 +2846,8 @@ void CDrawingConverter::doc_LoadShape(PPTX::Logic::SpTreeElem *elem, XmlUtils::C
|
||||
pSpPr->xfrm->flipH = true;
|
||||
else if (pFind->second == L"y")
|
||||
pSpPr->xfrm->flipV = true;
|
||||
else if ((pFind->second == L"xy") || (pFind->second == L"yx") || (pFind->second == L"x y") || (pFind->second == L"y x"))
|
||||
else if ((pFind->second == L"xy") || (pFind->second == L"yx") || (pFind->second == L"x y") || (pFind->second == L"y x")
|
||||
|| (pFind->second == L"y,x") || (pFind->second == L"x,y"))
|
||||
{
|
||||
pSpPr->xfrm->flipH = true;
|
||||
pSpPr->xfrm->flipV = true;
|
||||
@ -2867,7 +2881,8 @@ void CDrawingConverter::doc_LoadShape(PPTX::Logic::SpTreeElem *elem, XmlUtils::C
|
||||
pSpPr->xfrm->flipH = true;
|
||||
else if (pFind->second == L"y")
|
||||
pSpPr->xfrm->flipV = true;
|
||||
else if ((pFind->second == L"xy") || (pFind->second == L"yx") || (pFind->second == L"x y") || (pFind->second == L"y x"))
|
||||
else if ((pFind->second == L"xy") || (pFind->second == L"yx") || (pFind->second == L"x y") || (pFind->second == L"y x")
|
||||
|| (pFind->second == L"y,x") || (pFind->second == L"x,y"))
|
||||
{
|
||||
pSpPr->xfrm->flipH = true;
|
||||
pSpPr->xfrm->flipV = true;
|
||||
@ -3031,7 +3046,8 @@ void CDrawingConverter::doc_LoadGroup(PPTX::Logic::SpTreeElem *result, XmlUtils:
|
||||
pTree->grpSpPr.xfrm->flipH = true;
|
||||
else if (pFind->second == L"y")
|
||||
pTree->grpSpPr.xfrm->flipV = true;
|
||||
else if ((pFind->second == L"xy") || (pFind->second == L"yx") || (pFind->second == L"x y") || (pFind->second == L"y x"))
|
||||
else if ((pFind->second == L"xy") || (pFind->second == L"yx") || (pFind->second == L"x y") || (pFind->second == L"y x")
|
||||
|| (pFind->second == L"y,x") || (pFind->second == L"x,y"))
|
||||
{
|
||||
pTree->grpSpPr.xfrm->flipH = true;
|
||||
pTree->grpSpPr.xfrm->flipV = true;
|
||||
@ -3071,7 +3087,8 @@ void CDrawingConverter::doc_LoadGroup(PPTX::Logic::SpTreeElem *result, XmlUtils:
|
||||
pTree->grpSpPr.xfrm->flipH = true;
|
||||
else if (pFind->second == L"y")
|
||||
pTree->grpSpPr.xfrm->flipV = true;
|
||||
else if ((pFind->second == L"xy") || (pFind->second == L"yx") || (pFind->second == L"x y") || (pFind->second == L"y x"))
|
||||
else if ((pFind->second == L"xy") || (pFind->second == L"yx") || (pFind->second == L"x y") || (pFind->second == L"y x")
|
||||
|| (pFind->second == L"y,x") || (pFind->second == L"x,y"))
|
||||
{
|
||||
pTree->grpSpPr.xfrm->flipH = true;
|
||||
pTree->grpSpPr.xfrm->flipV = true;
|
||||
@ -4752,6 +4769,14 @@ HRESULT CDrawingConverter::SaveObject(LONG lStart, LONG lLength, const std::wstr
|
||||
if(oPic.oleObject.IsInit())
|
||||
{
|
||||
bOle = oPic.oleObject->isValid();
|
||||
if (oPic.oleObject->m_oDxaOrig.IsInit() == false)
|
||||
{
|
||||
oPic.oleObject->m_oDxaOrig = 0;
|
||||
}
|
||||
if (oPic.oleObject->m_oDyaOrig.IsInit() == false)
|
||||
{
|
||||
oPic.oleObject->m_oDyaOrig = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
bool bSignatureLine = false;
|
||||
|
||||
@ -30,8 +30,6 @@
|
||||
*
|
||||
*/
|
||||
#include "EffectProperties.h"
|
||||
#include "EffectLst.h"
|
||||
#include "EffectDag.h"
|
||||
|
||||
namespace PPTX
|
||||
{
|
||||
|
||||
@ -98,6 +98,8 @@ namespace PPTX
|
||||
}
|
||||
virtual void fromPPTY(NSBinPptxRW::CBinaryFileReader* pReader)
|
||||
{
|
||||
pReader->Skip(4); // len
|
||||
BYTE _type = pReader->GetUChar();
|
||||
LONG _e = pReader->GetPos() + pReader->GetLong() + 4;
|
||||
|
||||
ULONG count = pReader->GetULong();
|
||||
|
||||
@ -100,6 +100,8 @@ namespace PPTX
|
||||
}
|
||||
virtual void fromPPTY(NSBinPptxRW::CBinaryFileReader* pReader)
|
||||
{
|
||||
pReader->Skip(4); // len
|
||||
BYTE _type = pReader->GetUChar();
|
||||
LONG _end_rec = pReader->GetPos() + pReader->GetLong() + 4;
|
||||
|
||||
pReader->Skip(1); // start attributes
|
||||
|
||||
@ -126,6 +126,8 @@ namespace PPTX
|
||||
}
|
||||
virtual void fromPPTY(NSBinPptxRW::CBinaryFileReader* pReader)
|
||||
{
|
||||
pReader->Skip(4); // len
|
||||
BYTE _type = pReader->GetUChar();
|
||||
LONG _end_rec = pReader->GetPos() + pReader->GetLong() + 4;
|
||||
|
||||
pReader->Skip(1); // start attributes
|
||||
|
||||
@ -323,7 +323,8 @@ namespace PPTX
|
||||
{
|
||||
m_OleObjectFile = new OOX::OleObject(NULL, true, pReader->m_nDocumentType == XMLWRITER_DOC_TYPE_DOCX);
|
||||
|
||||
std::wstring strOlePath = pReader->GetString(_embed_data_size);
|
||||
BYTE type = pReader->GetUChar();
|
||||
std::wstring strOlePath = pReader->GetString2();
|
||||
m_OleObjectFile->set_filename(strOlePath, false); //temp !!! for ImageManager original file name
|
||||
}
|
||||
else if (embedded_type == 4)
|
||||
|
||||
@ -82,6 +82,7 @@ namespace PPTX
|
||||
}
|
||||
void UniEffect::fromPPTY(NSBinPptxRW::CBinaryFileReader* pReader)
|
||||
{
|
||||
LONG pos = pReader->GetPos();
|
||||
ULONG rec_len = pReader->GetULong();
|
||||
if (0 == rec_len)
|
||||
return;
|
||||
@ -92,11 +93,43 @@ namespace PPTX
|
||||
{
|
||||
case EFFECT_TYPE_ALPHAMODFIX: Effect = new PPTX::Logic::AlphaModFix(); break;
|
||||
case EFFECT_TYPE_DUOTONE: Effect = new PPTX::Logic::Duotone(); break;
|
||||
case EFFECT_TYPE_OUTERSHDW: Effect = new PPTX::Logic::OuterShdw(); break;
|
||||
case EFFECT_TYPE_GLOW: Effect = new PPTX::Logic::Glow(); break;
|
||||
case EFFECT_TYPE_XFRM: Effect = new PPTX::Logic::XfrmEffect(); break;
|
||||
case EFFECT_TYPE_BLUR: Effect = new PPTX::Logic::Blur(); break;
|
||||
case EFFECT_TYPE_PRSTSHDW: Effect = new PPTX::Logic::PrstShdw(); break;
|
||||
case EFFECT_TYPE_INNERSHDW: Effect = new PPTX::Logic::InnerShdw(); break;
|
||||
case EFFECT_TYPE_REFLECTION: Effect = new PPTX::Logic::Reflection(); break;
|
||||
case EFFECT_TYPE_SOFTEDGE: Effect = new PPTX::Logic::SoftEdge(); break;
|
||||
case EFFECT_TYPE_FILLOVERLAY: Effect = new PPTX::Logic::FillOverlay(); break;
|
||||
case EFFECT_TYPE_ALPHACEILING: Effect = new PPTX::Logic::AlphaCeiling(); break;
|
||||
case EFFECT_TYPE_ALPHAFLOOR: Effect = new PPTX::Logic::AlphaFloor(); break;
|
||||
case EFFECT_TYPE_TINTEFFECT: Effect = new PPTX::Logic::TintEffect(); break;
|
||||
case EFFECT_TYPE_RELOFF: Effect = new PPTX::Logic::RelOff(); break;
|
||||
case EFFECT_TYPE_LUM: Effect = new PPTX::Logic::LumEffect(); break;
|
||||
case EFFECT_TYPE_HSL: Effect = new PPTX::Logic::HslEffect(); break;
|
||||
case EFFECT_TYPE_GRAYSCL: Effect = new PPTX::Logic::Grayscl(); break;
|
||||
case EFFECT_TYPE_ALPHAREPL: Effect = new PPTX::Logic::AlphaRepl(); break;
|
||||
case EFFECT_TYPE_ALPHAOUTSET: Effect = new PPTX::Logic::AlphaOutset(); break;
|
||||
case EFFECT_TYPE_ALPHABILEVEL: Effect = new PPTX::Logic::AlphaBiLevel(); break;
|
||||
case EFFECT_TYPE_BILEVEL: Effect = new PPTX::Logic::BiLevel(); break;
|
||||
case EFFECT_TYPE_FILL: Effect = new PPTX::Logic::FillEffect(); break;
|
||||
case EFFECT_TYPE_CLRREPL: Effect = new PPTX::Logic::ClrRepl(); break;
|
||||
case EFFECT_TYPE_CLRCHANGE: Effect = new PPTX::Logic::ClrChange(); break;
|
||||
case EFFECT_TYPE_ALPHAINV: Effect = new PPTX::Logic::AlphaInv(); break;
|
||||
case EFFECT_TYPE_ALPHAMOD: Effect = new PPTX::Logic::AlphaMod(); break;
|
||||
case EFFECT_TYPE_BLEND: Effect = new PPTX::Logic::Blend(); break;
|
||||
}
|
||||
|
||||
pReader->Seek(pos);
|
||||
if (Effect.is_init())
|
||||
{
|
||||
Effect->fromPPTY(pReader);
|
||||
}
|
||||
else
|
||||
{
|
||||
pReader->SkipRecord();
|
||||
}
|
||||
}
|
||||
UniEffect::UniEffect(XmlUtils::CXmlNode& node)
|
||||
{
|
||||
|
||||
@ -87,7 +87,6 @@ namespace PPTX
|
||||
if(is_init())
|
||||
Effect->SetParentPointer(pParent);
|
||||
};
|
||||
private:
|
||||
smart_ptr<WrapperWritingElement> Effect;
|
||||
protected:
|
||||
virtual void FillParentPointersForChilds(){};
|
||||
|
||||
@ -121,8 +121,6 @@ namespace PPTX
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public:
|
||||
smart_ptr<WrapperWritingElement> Fill;
|
||||
enum Type {notInit, noFill, solidFill, gradFill, blipFill, pattFill, grpFill};
|
||||
Type m_type;
|
||||
|
||||
@ -140,7 +140,6 @@ namespace PPTX
|
||||
template<class T> T& as() {return static_cast<T&>(*Path2D);}
|
||||
template<class T> const T& as() const {return static_cast<const T&>(*Path2D);}
|
||||
|
||||
public:
|
||||
smart_ptr<PathBase> Path2D;
|
||||
protected:
|
||||
virtual void FillParentPointersForChilds(){};
|
||||
|
||||
@ -147,8 +147,17 @@ namespace PPTX
|
||||
{
|
||||
std::map<std::wstring, Logic::UniColor>::const_iterator pPair = Scheme.find(str);
|
||||
if (Scheme.end() == pPair)
|
||||
return 0;
|
||||
return pPair->second.GetARGB();
|
||||
{//default color map extension
|
||||
if (str == L"tx1") pPair = Scheme.find(L"dk1");
|
||||
else if (str == L"tx2") pPair = Scheme.find(L"dk2");
|
||||
else if (str == L"bg1") pPair = Scheme.find(L"lt1");
|
||||
else if (str == L"bg2") pPair = Scheme.find(L"lt1");
|
||||
|
||||
if (Scheme.end() == pPair) return 0;
|
||||
else return pPair->second.GetARGB();
|
||||
}
|
||||
else
|
||||
return pPair->second.GetARGB();
|
||||
}
|
||||
virtual DWORD GetBGRAFromScheme(const std::wstring& str)const
|
||||
{
|
||||
|
||||
@ -1094,11 +1094,10 @@ bool RtfParagraphPropsCommand::ExecuteCommand(RtfDocument& oDocument, RtfReader&
|
||||
else
|
||||
{
|
||||
paragraphProps->m_bInTable = 1;
|
||||
if ( PROP_DEF == paragraphProps->m_nItap )
|
||||
if ( PROP_DEF == paragraphProps->m_nItap)
|
||||
paragraphProps->m_nItap = 1;
|
||||
}
|
||||
}
|
||||
COMMAND_RTF_BOOL( "intbl", paragraphProps->m_bInTable, sCommand, hasParameter, parameter )
|
||||
else if ( "itap" == sCommand && hasParameter)
|
||||
{
|
||||
//if (parameter == 0 && paragraphProps->m_bInTable && paragraphProps->m_nItap > 0)
|
||||
@ -2340,6 +2339,32 @@ bool RtfOldListReader::ExecuteCommand( RtfDocument& oDocument, RtfReader& oReade
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
void RtfParagraphPropDestination::EndRows(RtfReader& oReader)
|
||||
{
|
||||
RtfTableRowPtr oNewTableRow ( new RtfTableRow() );
|
||||
oNewTableRow->m_oProperty = oReader.m_oState->m_oRowProperty;
|
||||
|
||||
for( int k = (int)aCells.size() - 1; k >= 0 ; k-- )
|
||||
{
|
||||
if ( aCellItaps[k] == nCurItap )
|
||||
{
|
||||
oNewTableRow->InsertItem( aCells[k], 0 );
|
||||
|
||||
aCells.erase(aCells.begin() + k);
|
||||
aCellItaps.erase(aCellItaps.begin() + k);
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
//для каждого cell в row добавляем их свойства
|
||||
for( int i = 0; i < oNewTableRow->GetCount() && i < oNewTableRow->m_oProperty.GetCount() ; i++ )
|
||||
{
|
||||
oNewTableRow->operator [](i)->m_oProperty = oNewTableRow->m_oProperty[i];
|
||||
}
|
||||
//Добавляем временный row
|
||||
aRows.push_back( oNewTableRow );
|
||||
aRowItaps.push_back( nCurItap );
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------
|
||||
void RtfParagraphPropDestination::AddItem( RtfParagraphPtr oItem, RtfReader& oReader, bool bEndCell, bool bEndRow )
|
||||
@ -2351,6 +2376,8 @@ void RtfParagraphPropDestination::AddItem( RtfParagraphPtr oItem, RtfReader& oRe
|
||||
{
|
||||
if ( nCurItap > 0 ) //Если до этого были только параграфы в таблицах - завершаем таблицу
|
||||
{
|
||||
if (bEndRow) EndRows(oReader); //ê¡ñ¿ó¿ñπá½∞¡á∩ »α«úαá¼¼á.rtf
|
||||
|
||||
RtfTablePtr oNewTable ( new RtfTable() );
|
||||
oNewTable->m_oProperty = oCurRowProperty;
|
||||
|
||||
@ -2416,30 +2443,10 @@ void RtfParagraphPropDestination::AddItem( RtfParagraphPtr oItem, RtfReader& oRe
|
||||
aItaps.push_back( oItem->m_oProperty.m_nItap );
|
||||
}
|
||||
nCurItap = oItem->m_oProperty.m_nItap;
|
||||
//закончилась строка
|
||||
|
||||
if ( bEndRow )
|
||||
{
|
||||
RtfTableRowPtr oNewTableRow ( new RtfTableRow() );
|
||||
oNewTableRow->m_oProperty = oReader.m_oState->m_oRowProperty;
|
||||
|
||||
for( int k = (int)aCells.size() - 1; k >= 0 ; k-- )
|
||||
{
|
||||
if ( aCellItaps[k] == nCurItap )
|
||||
{
|
||||
oNewTableRow->InsertItem( aCells[k], 0 );
|
||||
|
||||
aCells.erase(aCells.begin() + k);
|
||||
aCellItaps.erase(aCellItaps.begin() + k);
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
//для каждого cell в row добавляем их свойства
|
||||
for( int i = 0; i < (int)oNewTableRow->GetCount() && i < oNewTableRow->m_oProperty.GetCount() ; i++ )
|
||||
oNewTableRow->operator [](i)->m_oProperty = oNewTableRow->m_oProperty[i];
|
||||
//Добавляем временный row
|
||||
aRows.push_back( oNewTableRow );
|
||||
aRowItaps.push_back( nCurItap );
|
||||
EndRows(oReader);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -1656,6 +1656,7 @@ public:
|
||||
|
||||
void Finalize( RtfReader& oReader);
|
||||
|
||||
void EndRows(RtfReader& oReader);
|
||||
void ExecuteNumberChar( RtfDocument& oDocument, RtfReader& oReader, RtfAbstractReader& oAbstrReader, int nWinChar, int nMacChar )
|
||||
{
|
||||
RtfFont oFont;
|
||||
|
||||
@ -70,7 +70,7 @@ HRESULT convert_single(std::wstring srcFileName)
|
||||
std::wstring dstPath;
|
||||
|
||||
bool bMacros = true;
|
||||
hr = ConvertXls2Xlsx(srcFileName, dstTempPath, L"2222", L"C:\\Windows\\Fonts", L"C:\\Windows\\Temp", NULL, bMacros);
|
||||
hr = ConvertXls2Xlsx(srcFileName, dstTempPath, L"password", L"C:\\Windows\\Fonts", L"C:\\Windows\\Temp", NULL, bMacros);
|
||||
|
||||
if (bMacros)
|
||||
{
|
||||
|
||||
@ -1,17 +0,0 @@
|
||||
QMAKE_CXX.INCDIRS = \
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\INCLUDE" \
|
||||
"C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.10240.0\\ucrt" \
|
||||
"C:\\Program Files (x86)\\Windows Kits\\8.1\\include\\shared" \
|
||||
"C:\\Program Files (x86)\\Windows Kits\\8.1\\include\\um" \
|
||||
"C:\\Program Files (x86)\\Windows Kits\\8.1\\include\\winrt"
|
||||
QMAKE_CXX.LIBDIRS = \
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\LIB\\amd64" \
|
||||
"C:\\Program Files (x86)\\Windows Kits\\10\\lib\\10.0.10240.0\\ucrt\\x64" \
|
||||
"C:\\Program Files (x86)\\Windows Kits\\8.1\\lib\\winv6.3\\um\\x64"
|
||||
QMAKE_CXX.QT_COMPILER_STDCXX = 199711L
|
||||
QMAKE_CXX.QMAKE_MSC_VER = 1900
|
||||
QMAKE_CXX.QMAKE_MSC_FULL_VER = 190024210
|
||||
QMAKE_CXX.COMPILER_MACROS = \
|
||||
QT_COMPILER_STDCXX \
|
||||
QMAKE_MSC_VER \
|
||||
QMAKE_MSC_FULL_VER
|
||||
@ -26,7 +26,10 @@ core_linux {
|
||||
|
||||
core_mac {
|
||||
LIBS += -L$$CORE_V8_PATH_LIBS -lv8_base -lv8_libplatform -lv8_libbase -lv8_snapshot -lv8_libsampler
|
||||
LIBS += -L$$CORE_V8_PATH_LIBS/third_party/icu -licui18n -licuuc
|
||||
|
||||
#LIBS += -L$$CORE_V8_PATH_LIBS/third_party/icu -licui18n -licuuc
|
||||
LIBS += $$CORE_V8_PATH_LIBS/third_party/icu/libicui18n.a
|
||||
LIBS += $$CORE_V8_PATH_LIBS/third_party/icu/libicuuc.a
|
||||
|
||||
QMAKE_CXXFLAGS += -Wall -Wno-inconsistent-missing-override
|
||||
QMAKE_CFLAGS += -Wall -Wno-inconsistent-missing-override
|
||||
|
||||
@ -704,7 +704,7 @@ namespace ComplexTypes
|
||||
std::wstring sResult;
|
||||
|
||||
if ( m_sVal.IsInit() )
|
||||
sResult += XmlUtils::EncodeXmlString(m_sVal.get(), false);
|
||||
sResult += m_sVal.get();
|
||||
|
||||
return sResult;
|
||||
}
|
||||
|
||||
@ -4106,10 +4106,16 @@ namespace SimpleTypes
|
||||
|
||||
void ReadValue_Rotation(std::wstring& sValue)
|
||||
{
|
||||
m_oValue.dValue = sValue.empty() ? 0 : _wtof(sValue.c_str() );
|
||||
m_oValue.dValue = sValue.empty() ? 0 : _wtof(sValue.c_str() );
|
||||
|
||||
if (sValue.find(_T("fd")) != -1)
|
||||
m_oValue.dValue /= 6000;
|
||||
if (sValue.find(_T("fd")) != std::wstring::npos)
|
||||
{
|
||||
m_oValue.dValue /= 6000.;
|
||||
}
|
||||
else if (sValue.find(_T("f")) == sValue.length() - 1)
|
||||
{
|
||||
m_oValue.dValue /= 65536.;
|
||||
}
|
||||
}
|
||||
|
||||
void ReadValue_Double(std::wstring& sValue)
|
||||
|
||||
@ -357,6 +357,8 @@ namespace OOX
|
||||
et_dsp_cNvPr,
|
||||
et_dsp_txXfrm,
|
||||
|
||||
et_lc_LockedCanvas, // <lc:lockedCanvas>
|
||||
|
||||
et_graphicFrame, // <...:graphicFrame>
|
||||
et_pic, // <...:pic>
|
||||
et_cxnSp, // <...:cxnSp>
|
||||
|
||||
@ -262,7 +262,7 @@ std::wstring COfficeFileFormatChecker::getDocumentID (const std::wstring & _file
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( false == isOpenOfficeFormatFile(fileName, sDocumentID))
|
||||
if ( false == isOpenOfficeFormatFile(fileName, documentID))
|
||||
{
|
||||
NSFile::CFileBinary file;
|
||||
if (!file.OpenFile(fileName))
|
||||
@ -275,12 +275,13 @@ std::wstring COfficeFileFormatChecker::getDocumentID (const std::wstring & _file
|
||||
file.ReadFile(buffer, MIN_SIZE_BUFFER, dwReadBytes);
|
||||
file.CloseFile();
|
||||
|
||||
if (isPdfFormatFile(buffer, (int)dwReadBytes, sDocumentID) )
|
||||
if (isPdfFormatFile(buffer, (int)dwReadBytes, documentID) )
|
||||
{
|
||||
nFileType = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF;
|
||||
}
|
||||
}
|
||||
}
|
||||
sDocumentID = documentID;
|
||||
|
||||
return documentID;
|
||||
}
|
||||
|
||||
@ -1,9 +1,31 @@
|
||||
|
||||
VERSION = $$cat(version.txt)
|
||||
|
||||
PRODUCT_VERSION = $$(PRODUCT_VERSION)
|
||||
BUILD_NUMBER = $$(BUILD_NUMBER)
|
||||
|
||||
!isEmpty(PRODUCT_VERSION){
|
||||
!isEmpty(BUILD_NUMBER){
|
||||
VERSION = $${PRODUCT_VERSION}.$${BUILD_NUMBER}
|
||||
}
|
||||
}
|
||||
|
||||
DEFINES += INTVER=$$VERSION
|
||||
|
||||
QMAKE_TARGET_COMPANY = $$cat(copyright.txt)
|
||||
QMAKE_TARGET_COPYRIGHT = $$cat(copyright.txt) (c) 2018
|
||||
PUBLISHER_NAME = $$(PUBLISHER_NAME)
|
||||
isEmpty(PUBLISHER_NAME){
|
||||
PUBLISHER_NAME = $$cat(copyright.txt)
|
||||
}
|
||||
|
||||
win32 {
|
||||
CURRENT_YEAR = $$system("echo %Date:~6,4%")
|
||||
}
|
||||
|
||||
!win32 {
|
||||
CURRENT_YEAR = $$system(date +%Y)
|
||||
}
|
||||
|
||||
QMAKE_TARGET_COMPANY = $$PUBLISHER_NAME
|
||||
QMAKE_TARGET_COPYRIGHT = Copyright (C) $${PUBLISHER_NAME} $${CURRENT_YEAR}. All rights reserved
|
||||
|
||||
# CONFIGURATION
|
||||
CONFIG(debug, debug|release) {
|
||||
@ -17,6 +39,16 @@ win32 {
|
||||
CONFIG += core_windows
|
||||
}
|
||||
|
||||
DST_ARCH=$$QMAKE_TARGET.arch
|
||||
isEqual(QT_MAJOR_VERSION, 5) {
|
||||
DST_ARCH=$$QT_ARCH
|
||||
# QT_ARCH uses 'i386' instead of 'x86',
|
||||
# so map that value back to what we expect.
|
||||
equals(DST_ARCH, i386) {
|
||||
DST_ARCH=x86
|
||||
}
|
||||
}
|
||||
|
||||
win32:contains(QMAKE_TARGET.arch, x86_64): {
|
||||
CONFIG += core_win_64
|
||||
}
|
||||
@ -34,6 +66,11 @@ linux-g++:!contains(QMAKE_HOST.arch, x86_64): {
|
||||
message("linux-32")
|
||||
CONFIG += core_linux_32
|
||||
}
|
||||
linux-g++:contains(DST_ARCH, arm): {
|
||||
message("arm")
|
||||
CONFIG += core_linux_arm
|
||||
DEFINES += LINUX_ARM
|
||||
}
|
||||
}
|
||||
|
||||
linux-g++-64 {
|
||||
@ -93,6 +130,9 @@ core_linux_64 {
|
||||
core_mac_64 {
|
||||
CORE_BUILDS_PLATFORM_PREFIX = mac_64
|
||||
}
|
||||
core_linux_arm {
|
||||
CORE_BUILDS_PLATFORM_PREFIX = arm
|
||||
}
|
||||
|
||||
core_debug {
|
||||
CORE_BUILDS_CONFIGURATION_PREFIX = debug
|
||||
|
||||
@ -1 +1 @@
|
||||
2.4.550.0
|
||||
2.4.556.0
|
||||
|
||||
@ -1194,6 +1194,8 @@ public:
|
||||
std::wstring sPrW = NSFile::GetProcessPath();
|
||||
std::string sPrA = U_TO_UTF8(sPrW);
|
||||
|
||||
m_pAllocator = NULL;
|
||||
|
||||
#ifndef V8_OS_XP
|
||||
v8::V8::InitializeICUDefaultLocation(sPrA.c_str());
|
||||
v8::V8::InitializeExternalStartupData(sPrA.c_str());
|
||||
@ -1213,7 +1215,8 @@ public:
|
||||
v8::V8::Dispose();
|
||||
v8::V8::ShutdownPlatform();
|
||||
delete m_platform;
|
||||
delete m_pAllocator;
|
||||
if (m_pAllocator)
|
||||
delete m_pAllocator;
|
||||
}
|
||||
|
||||
v8::ArrayBuffer::Allocator* getAllocator()
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user