mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
автофигуры .. (пока без модификаторов)
git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@55609 954022d7-b5bf-4e40-9824-e11837661b57
This commit is contained in:
committed by
Alexander Trofimov
parent
d25d494c6e
commit
19330ff358
@ -46,6 +46,22 @@ std::wostream & operator << (std::wostream & _Wostream, const length & _Length)
|
||||
_Wostream << _Length.get_value() << _Length.get_unit();
|
||||
return _Wostream;
|
||||
}
|
||||
length operator + (length & _Length1, length & _Length2)
|
||||
{
|
||||
return length(_Length1.get_value() + _Length2.get_value(),_Length1.get_unit()); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> .. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
length operator - (length & _Length1, length & _Length2)
|
||||
{
|
||||
return length(_Length1.get_value() - _Length2.get_value(),_Length1.get_unit()); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> .. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
length operator / (length & _Length1, double val)
|
||||
{
|
||||
return length(_Length1.get_value() / val ,_Length1.get_unit());
|
||||
}
|
||||
length operator * (length & _Length1, double val)
|
||||
{
|
||||
return length(_Length1.get_value() * val ,_Length1.get_unit());
|
||||
}
|
||||
|
||||
length length::parse(const std::wstring & Str)
|
||||
{
|
||||
|
||||
@ -47,6 +47,11 @@ private:
|
||||
std::wostream & operator << (std::wostream & _Wostream, const length::unit _Unit);
|
||||
std::wostream & operator << (std::wostream & _Wostream, const length & _Length);
|
||||
|
||||
length operator + (length & _Length1, length & _Length2);
|
||||
length operator - (length & _Length1, length & _Length2);
|
||||
length operator / (length & _Length1, double val);
|
||||
length operator * (length & _Length1, double val);
|
||||
|
||||
typedef length coordinate;
|
||||
|
||||
}
|
||||
|
||||
@ -398,6 +398,7 @@ void draw_enhanced_geometry_attlist::serialize(CP_ATTR_NODE)
|
||||
{
|
||||
CP_XML_ATTR_OPT(L"draw:type", draw_type_);
|
||||
CP_XML_ATTR_OPT(L"draw:modifiers", draw_modifiers_);
|
||||
CP_XML_ATTR_OPT(L"draw:enhanced-path", draw_enhanced_path_);
|
||||
}
|
||||
// draw:enhanced_geometry
|
||||
const wchar_t * draw_enhanced_geometry::ns = L"draw";
|
||||
|
||||
@ -299,6 +299,7 @@ class draw_enhanced_geometry_attlist
|
||||
public:
|
||||
_CP_OPT(std::wstring) draw_type_;
|
||||
_CP_OPT(std::wstring) draw_modifiers_;
|
||||
_CP_OPT(std::wstring) draw_enhanced_path_;
|
||||
|
||||
void serialize(CP_ATTR_NODE);
|
||||
};
|
||||
|
||||
@ -53,6 +53,12 @@ struct odf_drawing_state
|
||||
flipH = false;
|
||||
flipV = false;
|
||||
tile = false;
|
||||
|
||||
path_ = L"";
|
||||
view_box_ = L"";
|
||||
path_last_command_ = L"";
|
||||
|
||||
fill_ = true; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> .. <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
std::vector<odf_element_state> elements_;
|
||||
|
||||
@ -68,6 +74,12 @@ struct odf_drawing_state
|
||||
bool flipV;
|
||||
bool tile;
|
||||
_CP_OPT(double) rotateAngle;
|
||||
|
||||
std::wstring path_;
|
||||
std::wstring view_box_;
|
||||
std::wstring path_last_command_;
|
||||
|
||||
bool fill_;
|
||||
};
|
||||
|
||||
class odf_drawing_context::Impl
|
||||
@ -169,7 +181,18 @@ void odf_drawing_context::end_drawing()//
|
||||
std::wstring strTransform;
|
||||
if (impl_->current_drawing_state_.rotateAngle)
|
||||
{
|
||||
strTransform = strTransform + std::wstring(L"rotate(") + boost::lexical_cast<std::wstring>(impl_->current_drawing_state_.rotateAngle.get()) + std::wstring(L")");
|
||||
strTransform = std::wstring(L"rotate(") + boost::lexical_cast<std::wstring>(impl_->current_drawing_state_.rotateAngle.get()) + std::wstring(L")");
|
||||
//<2F><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (impl_->current_drawing_state_.svg_x_ && impl_->current_drawing_state_.svg_y_)
|
||||
{
|
||||
strTransform += std::wstring(L" translate(") + boost::lexical_cast<std::wstring>(impl_->current_drawing_state_.svg_x_.get() +
|
||||
(impl_->current_drawing_state_.svg_width_.get()/2))+ std::wstring(L",") +
|
||||
boost::lexical_cast<std::wstring>(impl_->current_drawing_state_.svg_y_.get() +
|
||||
(impl_->current_drawing_state_.svg_height_.get()/2))+ std::wstring(L")") ;
|
||||
}
|
||||
|
||||
impl_->current_drawing_state_.svg_x_ = boost::none;
|
||||
impl_->current_drawing_state_.svg_y_ = boost::none;
|
||||
}
|
||||
if (strTransform.length()>0)
|
||||
frame->common_draw_attlists_.shape_with_text_and_styles_.common_draw_shape_with_styles_attlist_.common_draw_transform_attlist_.draw_transform_ = strTransform;
|
||||
@ -188,19 +211,39 @@ void odf_drawing_context::end_drawing()//
|
||||
shape->common_draw_attlists_.shape_with_text_and_styles_.common_draw_shape_with_styles_attlist_.common_draw_z_index_attlist_.draw_z_index_ = impl_->current_drawing_state_.z_order_;
|
||||
|
||||
std::wstring strTransform;
|
||||
if (impl_->current_drawing_state_.rotateAngle!=0)
|
||||
if (impl_->current_drawing_state_.rotateAngle)
|
||||
{
|
||||
strTransform = strTransform + std::wstring(L"rotate(") + boost::lexical_cast<std::wstring>(impl_->current_drawing_state_.rotateAngle.get()) + std::wstring(L")");
|
||||
strTransform = std::wstring(L"rotate(") + boost::lexical_cast<std::wstring>(impl_->current_drawing_state_.rotateAngle.get()) + std::wstring(L")");
|
||||
//<2F><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (impl_->current_drawing_state_.svg_x_ && impl_->current_drawing_state_.svg_y_)
|
||||
{
|
||||
strTransform += std::wstring(L" translate(") + boost::lexical_cast<std::wstring>(impl_->current_drawing_state_.svg_x_.get() +
|
||||
(impl_->current_drawing_state_.svg_width_.get()/2))+ std::wstring(L",") +
|
||||
boost::lexical_cast<std::wstring>(impl_->current_drawing_state_.svg_y_.get() +
|
||||
(impl_->current_drawing_state_.svg_height_.get()/2))+ std::wstring(L")") ;
|
||||
}
|
||||
|
||||
impl_->current_drawing_state_.svg_x_ = boost::none;
|
||||
impl_->current_drawing_state_.svg_y_ = boost::none;
|
||||
}
|
||||
if (strTransform.length()>0)
|
||||
frame->common_draw_attlists_.shape_with_text_and_styles_.common_draw_shape_with_styles_attlist_.common_draw_transform_attlist_.draw_transform_ = strTransform;
|
||||
shape->common_draw_attlists_.shape_with_text_and_styles_.common_draw_shape_with_styles_attlist_.common_draw_transform_attlist_.draw_transform_ = strTransform;
|
||||
|
||||
shape->common_draw_attlists_.position_.svg_x_ = impl_->current_drawing_state_.svg_x_;
|
||||
shape->common_draw_attlists_.position_.svg_y_ = impl_->current_drawing_state_.svg_y_;
|
||||
shape->common_draw_attlists_.rel_size_.common_draw_size_attlist_.svg_height_ = impl_->current_drawing_state_.svg_height_;
|
||||
shape->common_draw_attlists_.rel_size_.common_draw_size_attlist_.svg_width_ = impl_->current_drawing_state_.svg_width_;
|
||||
|
||||
draw_path* path = dynamic_cast<draw_path*>(impl_->current_drawing_state_.elements_[0].elm.get());
|
||||
if (path)
|
||||
{
|
||||
if (impl_->current_drawing_state_.path_.length()>1)
|
||||
path->draw_path_attlist_.svg_d_ = impl_->current_drawing_state_.path_;
|
||||
if (impl_->current_drawing_state_.view_box_.length()>1)
|
||||
path->draw_path_attlist_.svg_viewbox_ = impl_->current_drawing_state_.view_box_;
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////
|
||||
style* style_ = dynamic_cast<style*>(impl_->current_drawing_state_.elements_[0].style_elm.get());
|
||||
if (style_)
|
||||
{
|
||||
@ -212,6 +255,8 @@ void odf_drawing_context::end_drawing()//
|
||||
if (impl_->current_drawing_state_.flipV)
|
||||
gr_properties->content().style_mirror_ = std::wstring(L"vertical");
|
||||
|
||||
if (impl_->current_drawing_state_.fill_ == false)
|
||||
gr_properties->content().common_draw_fill_attlist_.draw_fill_ = draw_fill::none;
|
||||
//fo:clip
|
||||
//draw:image-opacity
|
||||
}
|
||||
@ -225,11 +270,30 @@ void odf_drawing_context::set_name(std::wstring name)
|
||||
{
|
||||
impl_->current_drawing_state_.name_ = name;
|
||||
}
|
||||
void odf_drawing_context::set_no_fill()
|
||||
{
|
||||
impl_->current_drawing_state_.fill_ = false;
|
||||
}
|
||||
void odf_drawing_context::set_z_order(int id)
|
||||
{
|
||||
impl_->current_drawing_state_.z_order_ = id;
|
||||
|
||||
}
|
||||
void odf_drawing_context::add_path_element(std::wstring command, std::wstring & strE)
|
||||
{
|
||||
if (command != impl_->current_drawing_state_.path_last_command_)
|
||||
{
|
||||
impl_->current_drawing_state_.path_ += command + L" ";
|
||||
impl_->current_drawing_state_.path_last_command_ = command;
|
||||
}
|
||||
|
||||
impl_->current_drawing_state_.path_ += strE + L" ";
|
||||
}
|
||||
|
||||
void odf_drawing_context::set_viewBox(double W, double H)
|
||||
{
|
||||
impl_->current_drawing_state_.view_box_ = std::wstring(L"0 0 ") + boost::lexical_cast<std::wstring>((int)W) + L" " + boost::lexical_cast<std::wstring>((int)H);
|
||||
}
|
||||
void odf_drawing_context::set_flip_H(bool bVal)
|
||||
{
|
||||
impl_->current_drawing_state_.flipH= true;
|
||||
@ -300,23 +364,44 @@ void odf_drawing_context::start_shape(int type, std::wstring & sub_type)
|
||||
impl_->current_drawing_state_.elements_.push_back(state);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
if (sub_type.length()>0 && shape_elm)
|
||||
if (type == 7 && shape_elm) //custom shape
|
||||
{
|
||||
office_element_ptr enhanced_elm;
|
||||
create_element(L"draw", L"enhanced-geometry", enhanced_elm, impl_->odf_context_);
|
||||
|
||||
start_element(enhanced_elm);
|
||||
|
||||
draw_enhanced_geometry* enhanced = dynamic_cast<draw_enhanced_geometry*>(enhanced_elm.get());
|
||||
if (enhanced)
|
||||
{
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_type_ = sub_type;
|
||||
if (sub_type.length()>1)
|
||||
{
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_type_ = sub_type;
|
||||
}
|
||||
if (impl_->current_drawing_state_.path_.length()>1)
|
||||
{
|
||||
enhanced->draw_enhanced_geometry_attlist_.draw_enhanced_path_ =impl_->current_drawing_state_.path_;
|
||||
}
|
||||
if (impl_->current_drawing_state_.view_box_.length()>1)
|
||||
{
|
||||
enhanced->svg_viewbox_ = impl_->current_drawing_state_.view_box_;
|
||||
}
|
||||
}
|
||||
start_element(enhanced_elm);
|
||||
///....
|
||||
|
||||
end_element();
|
||||
}
|
||||
}
|
||||
void odf_drawing_context::end_shape()
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
draw_line* line = dynamic_cast<draw_line*>(impl_->current_level_.back().get());
|
||||
if (line)
|
||||
{
|
||||
line->draw_line_attlist_.svg_x1_ = impl_->current_drawing_state_.svg_x_;
|
||||
line->draw_line_attlist_.svg_y1_ = impl_->current_drawing_state_.svg_y_;
|
||||
line->draw_line_attlist_.svg_x2_ = impl_->current_drawing_state_.svg_x_.get() + impl_->current_drawing_state_.svg_width_.get();
|
||||
line->draw_line_attlist_.svg_y2_ = impl_->current_drawing_state_.svg_y_.get() + impl_->current_drawing_state_.svg_height_.get();
|
||||
}
|
||||
|
||||
end_element();
|
||||
}
|
||||
void odf_drawing_context::start_element(office_element_ptr & elm)
|
||||
@ -353,7 +438,7 @@ bool odf_drawing_context::is_exist_content()
|
||||
|
||||
void odf_drawing_context::finalize(office_element_ptr & root_elm)
|
||||
{
|
||||
for (int i=0; i< impl_->drawing_list_.size()>0; i++)
|
||||
for (int i=0; i< impl_->drawing_list_.size(); i++)
|
||||
{
|
||||
if (impl_->drawing_list_[i].elements_.size() > 0)
|
||||
{
|
||||
@ -366,6 +451,9 @@ office_element_ptr odf_drawing_context::create_shape(int type)
|
||||
office_element_ptr element;
|
||||
switch(type)
|
||||
{
|
||||
case 0:
|
||||
create_element(L"draw", L"frame", element, impl_->odf_context_);
|
||||
break;
|
||||
case 1:
|
||||
create_element(L"draw", L"caption", element, impl_->odf_context_);
|
||||
break;
|
||||
|
||||
@ -48,6 +48,12 @@ public:
|
||||
|
||||
bool is_exist_content();
|
||||
|
||||
//void start_path(int W, int H);
|
||||
//void end_path();
|
||||
|
||||
void add_path_element(std::wstring command, std::wstring & elm);
|
||||
void set_viewBox(double W, double H);
|
||||
|
||||
void finalize(office_element_ptr & root_elm);
|
||||
|
||||
///////////////////////////////////////////////////
|
||||
@ -61,6 +67,8 @@ public:
|
||||
|
||||
void set_rotate(int iVal);
|
||||
|
||||
void set_no_fill();
|
||||
|
||||
private:
|
||||
|
||||
office_element_ptr create_shape(int type);
|
||||
|
||||
@ -13,6 +13,10 @@
|
||||
|
||||
namespace Oox2Odf
|
||||
{
|
||||
static double pt2emu(double Val)
|
||||
{
|
||||
return (Val * 360000 * 2.54) / 72;
|
||||
}
|
||||
Converter::Converter(const std::wstring & path)
|
||||
{
|
||||
std::wstring type = L"spreadsheet";
|
||||
@ -28,7 +32,7 @@ namespace Oox2Odf
|
||||
void Converter::convert()
|
||||
{
|
||||
if (!impl_)return;
|
||||
impl_->convert();
|
||||
impl_->convertDocument();
|
||||
}
|
||||
void Converter::write(const std::wstring & path) const
|
||||
{
|
||||
@ -36,6 +40,61 @@ namespace Oox2Odf
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
void OoxConverter::convert(OOX::WritingElement *oox_unknown)
|
||||
{
|
||||
if (oox_unknown == NULL)return;
|
||||
|
||||
switch(oox_unknown->getType())
|
||||
{
|
||||
case OOX::et_a_prstGeom:
|
||||
{
|
||||
OOX::Drawing::CPresetGeometry2D* pPresetGeom = static_cast<OOX::Drawing::CPresetGeometry2D*>(oox_unknown);
|
||||
convert(pPresetGeom);
|
||||
}break;
|
||||
case OOX::et_a_custGeom:
|
||||
{
|
||||
OOX::Drawing::CCustomGeometry2D* pCustomGeom = static_cast<OOX::Drawing::CCustomGeometry2D*>(oox_unknown);
|
||||
convert(pCustomGeom);
|
||||
}break;
|
||||
case OOX::et_a_lnTo:
|
||||
{
|
||||
OOX::Drawing::CPath2DLineTo* pLineTo = static_cast<OOX::Drawing::CPath2DLineTo*>(oox_unknown);
|
||||
convert(pLineTo);
|
||||
}break;
|
||||
case OOX::et_a_moveTo:
|
||||
{
|
||||
OOX::Drawing::CPath2DMoveTo* pMoveTo = static_cast<OOX::Drawing::CPath2DMoveTo*>(oox_unknown);
|
||||
convert(pMoveTo);
|
||||
}break;
|
||||
case OOX::et_a_arcTo:
|
||||
{
|
||||
OOX::Drawing::CPath2DArcTo* pArcTo = static_cast<OOX::Drawing::CPath2DArcTo*>(oox_unknown);
|
||||
convert(pArcTo);
|
||||
}break;
|
||||
case OOX::et_a_quadBezTo:
|
||||
{
|
||||
OOX::Drawing::CPath2DQuadBezierTo* pQuadBezierTo = static_cast<OOX::Drawing::CPath2DQuadBezierTo*>(oox_unknown);
|
||||
convert(pQuadBezierTo);
|
||||
}break;
|
||||
case OOX::et_a_cubicBezTo:
|
||||
{
|
||||
OOX::Drawing::CPath2DCubicBezierTo* pCubicBezierT = static_cast<OOX::Drawing::CPath2DCubicBezierTo*>(oox_unknown);
|
||||
convert(pCubicBezierT);
|
||||
}break;
|
||||
case OOX::et_a_close:
|
||||
{
|
||||
OOX::Drawing::CPath2DClose* pClose= static_cast<OOX::Drawing::CPath2DClose*>(oox_unknown);
|
||||
convert(pClose);
|
||||
}break;
|
||||
default:
|
||||
{
|
||||
std::wstringstream ss;
|
||||
ss << L"[warning] : no convert element(" << oox_unknown->getType() << L")\n";
|
||||
_CP_LOG(error) << ss.str();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OoxConverter::convert_SpPr(OOX::Drawing::CShapeProperties * oox_spPr)
|
||||
{
|
||||
if (!oox_spPr) return;
|
||||
@ -64,6 +123,8 @@ void OoxConverter::convert_SpPr(OOX::Drawing::CShapeProperties * oox_spPr)
|
||||
if(oox_spPr->m_oSolidFill.IsInit())convert(oox_spPr->m_oSolidFill.GetPointer());break;
|
||||
case OOX::Drawing::filltypeGroup:
|
||||
case OOX::Drawing::filltypeNo:
|
||||
odf_context()->drawing_context().set_no_fill();
|
||||
break;
|
||||
case OOX::Drawing::filltypeUnknown:
|
||||
default: break;
|
||||
}
|
||||
@ -104,26 +165,35 @@ void OoxConverter::convert_CNvPr(OOX::Drawing::CNonVisualDrawingProps * oox_cnvP
|
||||
//nullable<CString> m_sDescr;
|
||||
//nullable<SimpleTypes::COnOff<>> m_oHidden;
|
||||
//nullable<CString> m_sTitle;
|
||||
|
||||
}
|
||||
|
||||
void OoxConverter::convert(OOX::Drawing::CCustomGeometry2D *oox_cust_geom)
|
||||
void OoxConverter::convert/*_CustGeom*/(OOX::Drawing::CCustomGeometry2D *oox_cust_geom)
|
||||
{
|
||||
if (!oox_cust_geom)return;
|
||||
|
||||
//odf_context()->drawing_context().set_shape_type();
|
||||
|
||||
|
||||
|
||||
for (long i=0; i< oox_cust_geom->m_oPthLst.m_arrPath.GetSize();i++)
|
||||
{
|
||||
convert(&oox_cust_geom->m_oPthLst.m_arrPath[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void OoxConverter::convert(OOX::Drawing::CPresetGeometry2D *oox_prst_geom)
|
||||
void OoxConverter::convert/*_PrstGeom*/(OOX::Drawing::CPresetGeometry2D *oox_prst_geom)
|
||||
{
|
||||
if (!oox_prst_geom)return;
|
||||
|
||||
//odf_context()->drawing_context().set_shape_type();
|
||||
//
|
||||
|
||||
}
|
||||
void OoxConverter::convert(OOX::Drawing::CPath2D *oox_geom_path)
|
||||
{
|
||||
if (!oox_geom_path) return;
|
||||
|
||||
odf_context()->drawing_context().set_viewBox(oox_geom_path->m_oW.GetValue(), oox_geom_path->m_oH.GetValue());
|
||||
|
||||
for (long i =0 ; i< oox_geom_path->m_arrItems.GetSize(); i++)
|
||||
{
|
||||
convert(oox_geom_path->m_arrItems[i]);
|
||||
}
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
void OoxConverter::convert(OOX::Drawing::CBlipFillProperties *oox_bitmap_fill)
|
||||
@ -143,5 +213,67 @@ void OoxConverter::convert(OOX::Drawing::CSolidColorFillProperties *oox_solid_fi
|
||||
{
|
||||
if (!oox_solid_fill)return;
|
||||
}
|
||||
void OoxConverter::convert(OOX::Drawing::CPath2DLineTo *oox_geom_path)
|
||||
{
|
||||
if (!oox_geom_path) return;
|
||||
|
||||
std::wstring path_elm = boost::lexical_cast<std::wstring> ( (int)pt2emu(oox_geom_path->m_oPt.m_oX.GetValue())) +
|
||||
std::wstring(L" ")+ boost::lexical_cast<std::wstring> ((int)pt2emu(oox_geom_path->m_oPt.m_oY.GetValue()));
|
||||
|
||||
odf_context()->drawing_context().add_path_element(std::wstring(L"L"), path_elm);
|
||||
}
|
||||
void OoxConverter::convert(OOX::Drawing::CPath2DMoveTo *oox_geom_path)
|
||||
{
|
||||
if (!oox_geom_path) return;
|
||||
|
||||
std::wstring path_elm = boost::lexical_cast<std::wstring> ((int)pt2emu(oox_geom_path->m_oPt.m_oX.GetValue())) +
|
||||
std::wstring(L" ")+ boost::lexical_cast<std::wstring> ((int)pt2emu(oox_geom_path->m_oPt.m_oY.GetValue()));
|
||||
|
||||
odf_context()->drawing_context().add_path_element(std::wstring(L"M"), path_elm);
|
||||
}
|
||||
void OoxConverter::convert(OOX::Drawing::CPath2DArcTo *oox_geom_path)
|
||||
{
|
||||
if (!oox_geom_path) return;
|
||||
|
||||
//std::wstring path_elm = boost::lexical_cast<std::wstring> ((int)pt2emu(oox_geom_path->m_oPt.m_oX.GetValue())) +
|
||||
// std::wstring(L" ")+ boost::lexical_cast<std::wstring> ((int)pt2emu(oox_geom_path->m_oPt.m_oY.GetValue()));
|
||||
//
|
||||
//odf_context()->drawing_context().add_path_element(std::wstring(L"A"), path_elm);
|
||||
}
|
||||
void OoxConverter::convert(OOX::Drawing::CPath2DQuadBezierTo *oox_geom_path)
|
||||
{
|
||||
if (!oox_geom_path) return;
|
||||
|
||||
std::wstring path_elm = boost::lexical_cast<std::wstring> ((int)pt2emu(oox_geom_path->m_oCtrl.m_oX.GetValue())) +
|
||||
std::wstring(L" ") + boost::lexical_cast<std::wstring> ((int)pt2emu(oox_geom_path->m_oCtrl.m_oY.GetValue())) +
|
||||
std::wstring(L" ") + boost::lexical_cast<std::wstring> ((int)pt2emu(oox_geom_path->m_oEnd.m_oX.GetValue())) +
|
||||
std::wstring(L" ") + boost::lexical_cast<std::wstring> ((int)pt2emu(oox_geom_path->m_oEnd.m_oY.GetValue())) ;
|
||||
|
||||
odf_context()->drawing_context().add_path_element(std::wstring(L"S"), path_elm);
|
||||
|
||||
}
|
||||
void OoxConverter::convert(OOX::Drawing::CPath2DCubicBezierTo *oox_geom_path)
|
||||
{
|
||||
if (!oox_geom_path) return;
|
||||
|
||||
std::wstring path_elm = boost::lexical_cast<std::wstring> ((int)pt2emu(oox_geom_path->m_oCtrl1.m_oX.GetValue())) +
|
||||
std::wstring(L" ") + boost::lexical_cast<std::wstring> ((int)pt2emu(oox_geom_path->m_oCtrl1.m_oY.GetValue())) +
|
||||
std::wstring(L" ") + boost::lexical_cast<std::wstring> ((int)pt2emu(oox_geom_path->m_oCtrl2.m_oX.GetValue())) +
|
||||
std::wstring(L" ") + boost::lexical_cast<std::wstring> ((int)pt2emu(oox_geom_path->m_oCtrl2.m_oY.GetValue())) +
|
||||
std::wstring(L" ") + boost::lexical_cast<std::wstring> ((int)pt2emu(oox_geom_path->m_oEnd.m_oX.GetValue())) +
|
||||
std::wstring(L" ") + boost::lexical_cast<std::wstring> ((int)pt2emu(oox_geom_path->m_oEnd.m_oY.GetValue())) ;
|
||||
|
||||
odf_context()->drawing_context().add_path_element(std::wstring(L"C"), path_elm);
|
||||
|
||||
|
||||
}
|
||||
void OoxConverter::convert(OOX::Drawing::CPath2DClose *oox_geom_path)
|
||||
{
|
||||
if (!oox_geom_path) return;
|
||||
|
||||
std::wstring path_elm ;
|
||||
|
||||
odf_context()->drawing_context().add_path_element(std::wstring(L"N"), path_elm);
|
||||
|
||||
}
|
||||
} // namespace Docx2Odt
|
||||
@ -16,6 +16,8 @@ namespace cpdoccore
|
||||
}
|
||||
namespace OOX
|
||||
{
|
||||
class WritingElement;
|
||||
|
||||
namespace Drawing
|
||||
{
|
||||
class CNonVisualDrawingProps;
|
||||
@ -26,6 +28,14 @@ namespace OOX
|
||||
class CGradientFillProperties;
|
||||
class CPatternFillProperties;
|
||||
class CSolidColorFillProperties;
|
||||
class CPath2D;
|
||||
class CPath2DLineTo;
|
||||
class CPath2DMoveTo;
|
||||
class CPath2DArcTo;
|
||||
class CPath2DQuadBezierTo;
|
||||
class CPath2DCubicBezierTo;
|
||||
class CPath2DClose;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -34,23 +44,33 @@ namespace Oox2Odf
|
||||
class OoxConverter
|
||||
{
|
||||
public:
|
||||
virtual void convert() = 0;
|
||||
virtual void convertDocument() = 0;
|
||||
virtual void write(const std::wstring & path) = 0;
|
||||
|
||||
OoxConverter(){}
|
||||
|
||||
virtual cpdoccore::odf::odf_conversion_context* odf_context() = 0;
|
||||
|
||||
void convert(OOX::WritingElement *oox_unknown);
|
||||
|
||||
void convert_CNvPr(OOX::Drawing::CNonVisualDrawingProps* oox_cnvPr);
|
||||
void convert_SpPr(OOX::Drawing::CShapeProperties* oox_spPr);
|
||||
void convert_CNvPr(OOX::Drawing::CNonVisualDrawingProps * oox_cnvPr);
|
||||
void convert_SpPr(OOX::Drawing::CShapeProperties * oox_spPr);
|
||||
|
||||
void convert(OOX::Drawing::CCustomGeometry2D *oox_cust_geom);
|
||||
void convert(OOX::Drawing::CPresetGeometry2D *oox_prst_geom);
|
||||
void convert/*_CustGeom*/(OOX::Drawing::CCustomGeometry2D *oox_cust_geom);
|
||||
void convert/*_PrstGeom*/(OOX::Drawing::CPresetGeometry2D *oox_prst_geom);
|
||||
|
||||
void convert(OOX::Drawing::CBlipFillProperties *oox_bitmap_fill);
|
||||
void convert(OOX::Drawing::CGradientFillProperties *oox_grad_fill);
|
||||
void convert(OOX::Drawing::CPatternFillProperties *oox_pattern_fill);
|
||||
void convert(OOX::Drawing::CSolidColorFillProperties *oox_solid_fill);
|
||||
void convert(OOX::Drawing::CBlipFillProperties *oox_bitmap_fill);
|
||||
void convert(OOX::Drawing::CGradientFillProperties *oox_grad_fill);
|
||||
void convert(OOX::Drawing::CPatternFillProperties *oox_pattern_fill);
|
||||
void convert(OOX::Drawing::CSolidColorFillProperties *oox_solid_fill);
|
||||
void convert(OOX::Drawing::CPath2D *oox_geom_path);
|
||||
void convert(OOX::Drawing::CPath2DLineTo *oox_geom_path);
|
||||
void convert(OOX::Drawing::CPath2DMoveTo *oox_geom_path);
|
||||
void convert(OOX::Drawing::CPath2DArcTo *oox_geom_path);
|
||||
void convert(OOX::Drawing::CPath2DQuadBezierTo *oox_geom_path);
|
||||
void convert(OOX::Drawing::CPath2DCubicBezierTo *oox_geom_path);
|
||||
void convert(OOX::Drawing::CPath2DClose *oox_geom_path);
|
||||
|
||||
};
|
||||
|
||||
class Converter
|
||||
|
||||
@ -33,7 +33,7 @@ odf::odf_conversion_context* DocxConverter::odf_context()
|
||||
{
|
||||
return NULL;//odt_context;
|
||||
}
|
||||
void DocxConverter::convert()
|
||||
void DocxConverter::convertDocument()
|
||||
{
|
||||
if (!docx_document)return;
|
||||
|
||||
|
||||
@ -27,7 +27,7 @@ namespace Oox2Odf
|
||||
public:
|
||||
DocxConverter(const std::wstring & path);
|
||||
|
||||
virtual void convert();
|
||||
virtual void convertDocument();
|
||||
virtual void write(const std::wstring & path);
|
||||
|
||||
virtual odf::odf_conversion_context* odf_context();
|
||||
|
||||
@ -42,7 +42,7 @@ odf::odf_conversion_context* XlsxConverter::odf_context()
|
||||
return ods_context;
|
||||
}
|
||||
|
||||
void XlsxConverter::convert()
|
||||
void XlsxConverter::convertDocument()
|
||||
{
|
||||
if (!xlsx_document)return;
|
||||
if (!output_document)return;
|
||||
@ -987,6 +987,10 @@ void XlsxConverter::convert(OOX::Spreadsheet::CCellAnchor *oox_anchor)
|
||||
{
|
||||
convert(oox_anchor->m_oShape.GetPointer());
|
||||
}
|
||||
else if (oox_anchor->m_oConnShape.IsInit())
|
||||
{
|
||||
convert(oox_anchor->m_oConnShape.GetPointer());
|
||||
}
|
||||
else if (oox_anchor->m_oGraphicFrame.IsInit())//chart
|
||||
{
|
||||
ods_context->drawing_context().start_frame();
|
||||
@ -1029,7 +1033,7 @@ void XlsxConverter::convert(OOX::Spreadsheet::CShape* oox_shape)
|
||||
int type = -1;
|
||||
if (oox_shape->m_oSpPr->m_eGeomType == OOX::Drawing::geomtypeCustom)
|
||||
{
|
||||
type = 6;
|
||||
type = 7;//6???
|
||||
}
|
||||
else if (oox_shape->m_oSpPr->m_eGeomType == OOX::Drawing::geomtypePreset)
|
||||
{
|
||||
@ -1037,34 +1041,83 @@ void XlsxConverter::convert(OOX::Spreadsheet::CShape* oox_shape)
|
||||
{
|
||||
OOX::Drawing::CPresetGeometry2D * geometry = oox_shape->m_oSpPr->m_oPrstGeom.GetPointer();
|
||||
int oox_shape = (int)(geometry->m_oPrst.GetValue());
|
||||
sub_type = Shape_Types_Mapping[oox_shape].first;
|
||||
type = Shape_Types_Mapping[oox_shape].second;
|
||||
sub_type = Shape_Types_Mapping[oox_shape].first;
|
||||
}
|
||||
}
|
||||
else
|
||||
return;
|
||||
|
||||
ods_context->drawing_context().start_shape(type,sub_type );
|
||||
convert_SpPr(oox_shape->m_oSpPr.GetPointer());//<2F><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
if (oox_shape->m_oNvSpPr.IsInit())
|
||||
{
|
||||
convert_SpPr(oox_shape->m_oSpPr.GetPointer());//<2F><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
if (oox_shape->m_oNvSpPr.IsInit())
|
||||
if (oox_shape->m_oNvSpPr->m_oCNvPr.IsInit())
|
||||
{
|
||||
if (oox_shape->m_oNvSpPr->m_oCNvPr.IsInit())
|
||||
{
|
||||
convert_CNvPr(oox_shape->m_oNvSpPr->m_oCNvPr.GetPointer());
|
||||
}
|
||||
|
||||
if (oox_shape->m_oNvSpPr->m_oCNvSpPr.IsInit())
|
||||
{
|
||||
}
|
||||
convert_CNvPr(oox_shape->m_oNvSpPr->m_oCNvPr.GetPointer());
|
||||
}
|
||||
|
||||
|
||||
if (oox_shape->m_oShapeStyle.IsInit())
|
||||
if (oox_shape->m_oNvSpPr->m_oCNvSpPr.IsInit())
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (oox_shape->m_oShapeStyle.IsInit())
|
||||
{
|
||||
}
|
||||
|
||||
ods_context->drawing_context().start_shape(type,sub_type );
|
||||
{
|
||||
}
|
||||
ods_context->drawing_context().end_shape();
|
||||
}
|
||||
|
||||
|
||||
void XlsxConverter::convert(OOX::Spreadsheet::CConnShape* oox_shape)
|
||||
{
|
||||
if (!oox_shape)return;
|
||||
if (!oox_shape->m_oSpPr.IsInit()) return;
|
||||
|
||||
std::wstring sub_type;
|
||||
int type = -1;
|
||||
if (oox_shape->m_oSpPr->m_eGeomType == OOX::Drawing::geomtypeCustom)
|
||||
{
|
||||
type = 7;//6???
|
||||
}
|
||||
else if (oox_shape->m_oSpPr->m_eGeomType == OOX::Drawing::geomtypePreset)
|
||||
{
|
||||
if (oox_shape->m_oSpPr->m_oPrstGeom.IsInit())
|
||||
{
|
||||
OOX::Drawing::CPresetGeometry2D * geometry = oox_shape->m_oSpPr->m_oPrstGeom.GetPointer();
|
||||
int oox_shape = (int)(geometry->m_oPrst.GetValue());
|
||||
type = Shape_Types_Mapping[oox_shape].second;
|
||||
sub_type = Shape_Types_Mapping[oox_shape].first;
|
||||
}
|
||||
}
|
||||
else
|
||||
return;
|
||||
|
||||
convert_SpPr(oox_shape->m_oSpPr.GetPointer());//<2F><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
if (oox_shape->m_oNvConnSpPr.IsInit())
|
||||
{
|
||||
if (oox_shape->m_oNvConnSpPr->m_oCNvPr.IsInit())
|
||||
{
|
||||
convert_CNvPr(oox_shape->m_oNvConnSpPr->m_oCNvPr.GetPointer());
|
||||
}
|
||||
|
||||
if (oox_shape->m_oNvConnSpPr->m_oCNvConnSpPr.IsInit())
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
if (oox_shape->m_oShapeStyle.IsInit())
|
||||
{
|
||||
}
|
||||
ods_context->drawing_context().start_shape(type,sub_type );
|
||||
{
|
||||
}
|
||||
ods_context->drawing_context().end_shape();
|
||||
}
|
||||
|
||||
|
||||
@ -54,7 +54,7 @@ namespace Oox2Odf
|
||||
public:
|
||||
XlsxConverter(const std::wstring & path);
|
||||
|
||||
virtual void convert();
|
||||
virtual void convertDocument();
|
||||
virtual void write(const std::wstring & path);
|
||||
|
||||
virtual odf::odf_conversion_context* odf_context();
|
||||
@ -110,6 +110,7 @@ namespace Oox2Odf
|
||||
|
||||
void convert(OOX::Spreadsheet::CPic* oox_picture);
|
||||
void convert(OOX::Spreadsheet::CShape* oox_shape);
|
||||
void convert(OOX::Spreadsheet::CConnShape* oox_conn_shape);
|
||||
|
||||
};
|
||||
}
|
||||
@ -43,7 +43,7 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"mso-spt41" , 7}, // shapetypeCallout1,
|
||||
{ L"mso-spt42" , 7}, // shapetypeCallout2,
|
||||
{ L"mso-spt43" , 7}, // shapetypeCallout3,
|
||||
{ L"lightning" , 7}, // shapetypeCan,
|
||||
{ L"can" , 7}, // shapetypeCan,
|
||||
{ L"" , 7}, // shapetypeChartPlus,
|
||||
{ L"" , 7}, // shapetypeChartStar,
|
||||
{ L"" , 7}, // shapetypeChartX,
|
||||
@ -127,7 +127,7 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"" , 7}, // shapetypeLeftRightRibbon,
|
||||
{ L"mso-spt182" , 7}, // shapetypeLeftRightUpArrow,
|
||||
{ L"mso-spt89" , 7}, // shapetypeLeftUpArrow,
|
||||
{ L"can" , 7}, // shapetypeLightningBolt,
|
||||
{ L"lightning" , 7}, // shapetypeLightningBolt,
|
||||
{ L"" , 5}, // shapetypeLine,
|
||||
{ L"" , 7}, // shapetypeLineInv,
|
||||
{ L"" , 7}, // shapetypeMathDivide,
|
||||
@ -135,7 +135,7 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"" , 7}, // shapetypeMathMinus,
|
||||
{ L"" , 7}, // shapetypeMathMultiply,
|
||||
{ L"" , 7}, // shapetypeMathNotEqual,
|
||||
{ L"" , 7}, // shapetypeMathPlus,
|
||||
{ L"cross" , 7}, // shapetypeMathPlus,
|
||||
{ L"moon" , 7}, // shapetypeMoon,
|
||||
{ L"" , 7}, // shapetypeNonIsoscelesTrapezoid,
|
||||
{ L"forbidden" , 7}, // shapetypeNoSmoking,
|
||||
@ -147,7 +147,7 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"" , 7}, // shapetypePieWedge,
|
||||
{ L"" , 7}, // shapetypePlaque,
|
||||
{ L"" , 7}, // shapetypePlaqueTabs,
|
||||
{ L"" , 7}, // shapetypePlus,
|
||||
{ L"cross" , 7}, // shapetypePlus,
|
||||
{ L"quad-arrow" , 7}, // shapetypeQuadArrow,
|
||||
{ L"quad-arrow-callout" , 7}, // shapetypeQuadArrowCallout,
|
||||
{ L"rectangle" , 2}, // shapetypeRect,
|
||||
@ -161,7 +161,7 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
|
||||
{ L"" , 7}, // shapetypeRound2DiagRect,
|
||||
{ L"" , 7}, // shapetypeRound2SameRect,
|
||||
{ L"round-rectangle" , 7}, // shapetypeRoundRect,
|
||||
{ L"" , 7}, // shapetypeRtTriangle,
|
||||
{ L"right-triangle" , 7}, // shapetypeRtTriangle,
|
||||
{ L"smiley" , 7}, // shapetypeSmileyFace,
|
||||
{ L"" , 7}, // shapetypeSnip1Rect,
|
||||
{ L"" , 7}, // shapetypeSnip2DiagRect,
|
||||
|
||||
@ -2,6 +2,6 @@
|
||||
//1
|
||||
//2
|
||||
//0
|
||||
//13
|
||||
#define INTVER 1,2,0,13
|
||||
#define STRVER "1,2,0,13\0"
|
||||
//15
|
||||
#define INTVER 1,2,0,15
|
||||
#define STRVER "1,2,0,15\0"
|
||||
|
||||
@ -154,7 +154,11 @@ namespace SimpleTypes
|
||||
{
|
||||
return m_sGuide;
|
||||
}
|
||||
|
||||
|
||||
double GetValue() const
|
||||
{
|
||||
return m_dValue;
|
||||
}
|
||||
private:
|
||||
|
||||
void Parse2(CString &sValue)
|
||||
|
||||
@ -83,6 +83,8 @@ namespace OOX
|
||||
}
|
||||
void CNonVisualDrawingProps::fromXML(XmlUtils::CXmlLiteReader& oReader)
|
||||
{
|
||||
ReadAttributes( oReader );
|
||||
|
||||
m_eType = et_Unknown;
|
||||
CWCharWrapper sName = oReader.GetName();
|
||||
|
||||
|
||||
@ -101,7 +101,9 @@ namespace OOX
|
||||
m_oPicture = oReader;
|
||||
else if (_T("xdr:sp") == sName)
|
||||
m_oShape = oReader;
|
||||
else if (_T("xdr:grpSp") == sName || _T("xdr:cxnSp") == sName || _T("mc:AlternateContent") == sName)
|
||||
else if (_T("xdr:cxnSp") == sName)
|
||||
m_oConnShape = oReader;
|
||||
else if (_T("xdr:grpSp") == sName || _T("mc:AlternateContent") == sName)
|
||||
m_oXml = oReader.GetOuterXml();
|
||||
}
|
||||
}
|
||||
@ -141,6 +143,7 @@ namespace OOX
|
||||
nullable<OOX::Spreadsheet::CGraphicFrame> m_oGraphicFrame;
|
||||
nullable<OOX::Spreadsheet::CPic> m_oPicture;
|
||||
nullable<OOX::Spreadsheet::CShape> m_oShape;
|
||||
nullable<OOX::Spreadsheet::CConnShape> m_oConnShape;
|
||||
nullable<CString> m_oXml;
|
||||
};
|
||||
} //Spreadsheet
|
||||
|
||||
@ -188,6 +188,188 @@ namespace OOX
|
||||
nullable<OOX::Drawing::CShapeStyle> m_oShapeStyle;
|
||||
//txBody (Shape Text Body)
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// 20.5.2.4 cNvCxnSpPr (Non-Visual Connector Shape Drawing Properties)
|
||||
//--------------------------------------------------------------------------------
|
||||
class CConnectionNonVisualConnShapeProps : public WritingElement
|
||||
{
|
||||
public:
|
||||
WritingElementSpreadsheet_AdditionConstructors(CConnectionNonVisualConnShapeProps)
|
||||
CConnectionNonVisualConnShapeProps()
|
||||
{
|
||||
}
|
||||
virtual ~CConnectionNonVisualConnShapeProps()
|
||||
{
|
||||
}
|
||||
|
||||
public:
|
||||
virtual CString toXML() const
|
||||
{
|
||||
return _T("");
|
||||
}
|
||||
virtual void toXML(XmlUtils::CStringWriter& writer) const
|
||||
{
|
||||
}
|
||||
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
|
||||
{
|
||||
ReadAttributes( oReader );
|
||||
|
||||
if ( oReader.IsEmptyNode() )
|
||||
return;
|
||||
|
||||
int nCurDepth = oReader.GetDepth();
|
||||
while( oReader.ReadNextSiblingNode( nCurDepth ) )
|
||||
{
|
||||
CWCharWrapper sName = oReader.GetName();
|
||||
|
||||
sName = oReader.GetName();
|
||||
if ( _T("a:picLocks") == sName )
|
||||
m_oPicLocks = oReader;
|
||||
else if ( _T("a:extLst") == sName )
|
||||
m_oExtLst = oReader;
|
||||
}
|
||||
}
|
||||
|
||||
virtual EElementType getType () const
|
||||
{
|
||||
return et_ConnectionNonVisualConnShapeProps;
|
||||
}
|
||||
|
||||
private:
|
||||
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
||||
{
|
||||
WritingElement_ReadAttributes_Start( oReader )
|
||||
WritingElement_ReadAttributes_ReadSingle( oReader, _T("preferRelativeResize"), m_oPreferRelativeResize )
|
||||
WritingElement_ReadAttributes_End( oReader )
|
||||
}
|
||||
public:
|
||||
EElementType m_eType;
|
||||
// Attributes
|
||||
SimpleTypes::COnOff<SimpleTypes::onoffTrue> m_oPreferRelativeResize;
|
||||
|
||||
// Childs
|
||||
nullable<OOX::Drawing::COfficeArtExtensionList> m_oExtLst;
|
||||
nullable<OOX::Drawing::CPictureLocking> m_oPicLocks;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// 20.5.2.19 nvCxnSpPr (Non-Visual Properties for a Connection Shape)
|
||||
//--------------------------------------------------------------------------------
|
||||
class CConnShapeNonVisual : public WritingElement
|
||||
{
|
||||
public:
|
||||
WritingElementSpreadsheet_AdditionConstructors(CConnShapeNonVisual)
|
||||
CConnShapeNonVisual()
|
||||
{
|
||||
}
|
||||
virtual ~CConnShapeNonVisual()
|
||||
{
|
||||
}
|
||||
|
||||
public:
|
||||
virtual CString toXML() const
|
||||
{
|
||||
return _T("");
|
||||
}
|
||||
virtual void toXML(XmlUtils::CStringWriter& writer) const
|
||||
{
|
||||
}
|
||||
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
|
||||
{
|
||||
ReadAttributes( oReader );
|
||||
|
||||
if ( oReader.IsEmptyNode() )
|
||||
return;
|
||||
|
||||
int nCurDepth = oReader.GetDepth();
|
||||
while( oReader.ReadNextSiblingNode( nCurDepth ) )
|
||||
{
|
||||
CWCharWrapper sName = oReader.GetName();
|
||||
|
||||
if ( _T("xdr:cNvCxnSpPr") == sName )
|
||||
m_oCNvConnSpPr = oReader;
|
||||
else if ( _T("xdr:cNvPr") == sName )
|
||||
m_oCNvPr = oReader;
|
||||
}
|
||||
}
|
||||
|
||||
virtual EElementType getType () const
|
||||
{
|
||||
return et_ConnShapeNonVisual;
|
||||
}
|
||||
|
||||
private:
|
||||
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
||||
{
|
||||
WritingElement_ReadAttributes_Start( oReader )
|
||||
WritingElement_ReadAttributes_End( oReader )
|
||||
}
|
||||
public:
|
||||
EElementType m_eType;
|
||||
// Childs
|
||||
nullable<CConnectionNonVisualConnShapeProps> m_oCNvConnSpPr;
|
||||
nullable<OOX::Drawing::CNonVisualDrawingProps> m_oCNvPr;
|
||||
};
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
//20.5.2.13 cxnSp (Connection Shape)
|
||||
//--------------------------------------------------------------------------------
|
||||
class CConnShape : public WritingElement
|
||||
{
|
||||
public:
|
||||
WritingElementSpreadsheet_AdditionConstructors(CConnShape)
|
||||
CConnShape()
|
||||
{
|
||||
}
|
||||
virtual ~CConnShape()
|
||||
{
|
||||
}
|
||||
|
||||
public:
|
||||
virtual CString toXML() const
|
||||
{
|
||||
return _T("");
|
||||
}
|
||||
virtual void toXML(XmlUtils::CStringWriter& writer) const
|
||||
{
|
||||
}
|
||||
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
|
||||
{
|
||||
ReadAttributes( oReader );
|
||||
|
||||
if ( oReader.IsEmptyNode() )
|
||||
return;
|
||||
|
||||
int nCurDepth = oReader.GetDepth();
|
||||
while( oReader.ReadNextSiblingNode( nCurDepth ) )
|
||||
{
|
||||
CWCharWrapper sName = oReader.GetName();
|
||||
|
||||
if ( _T("xdr:nvCxnSpPr") == sName )
|
||||
m_oNvConnSpPr = oReader;
|
||||
if ( _T("xdr:spPr") == sName )
|
||||
m_oSpPr = oReader;
|
||||
if ( _T("xdr:style") == sName )
|
||||
m_oShapeStyle = oReader; }
|
||||
}
|
||||
|
||||
virtual EElementType getType () const
|
||||
{
|
||||
return et_ConnShape;
|
||||
}
|
||||
|
||||
private:
|
||||
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
||||
{
|
||||
}
|
||||
public:
|
||||
nullable<CConnShapeNonVisual> m_oNvConnSpPr;
|
||||
nullable<OOX::Drawing::CShapeProperties> m_oSpPr;
|
||||
nullable<OOX::Drawing::CShapeStyle> m_oShapeStyle;
|
||||
//txBody (Shape Text Body)
|
||||
};
|
||||
} //Spreadsheet
|
||||
} // namespace OOX
|
||||
|
||||
|
||||
@ -309,7 +309,10 @@ et_alternatecontentfallback,
|
||||
et_ShapeProperties,
|
||||
et_ShapeNonVisual,
|
||||
et_ShapeStyle,
|
||||
et_Shape
|
||||
et_Shape,
|
||||
et_ConnShape,
|
||||
et_ConnShapeNonVisual,
|
||||
et_ConnectionNonVisualConnShapeProps
|
||||
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user