Commit f311550e authored by Elen.Subbotina's avatar Elen.Subbotina Committed by Alexander Trofimov

(1.2.0.120): ASCOfficeOdfFileW


git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@57670 954022d7-b5bf-4e40-9824-e11837661b57
parent d90dc24c
...@@ -33,6 +33,8 @@ namespace odf ...@@ -33,6 +33,8 @@ namespace odf
bool is_started; bool is_started;
int state;
}; };
class odf_comment_context::Impl class odf_comment_context::Impl
...@@ -71,6 +73,7 @@ void odf_comment_context::start_comment(office_element_ptr &elm, int oox_id) ...@@ -71,6 +73,7 @@ void odf_comment_context::start_comment(office_element_ptr &elm, int oox_id)
impl_->comments_.back().odf_name = L"comment_" + boost::lexical_cast<std::wstring>(oox_id); impl_->comments_.back().odf_name = L"comment_" + boost::lexical_cast<std::wstring>(oox_id);
impl_->comments_.back().is_started = false; impl_->comments_.back().is_started = false;
impl_->comments_.back().state = 1;
office_annotation* comm = dynamic_cast<office_annotation*>(elm.get()); office_annotation* comm = dynamic_cast<office_annotation*>(elm.get());
if (!comm)return; if (!comm)return;
...@@ -90,6 +93,8 @@ void odf_comment_context::end_comment(office_element_ptr &elm, int oox_id) ...@@ -90,6 +93,8 @@ void odf_comment_context::end_comment(office_element_ptr &elm, int oox_id)
comm->office_annotation_attr_.name_ = impl_->comments_[i].odf_name; comm->office_annotation_attr_.name_ = impl_->comments_[i].odf_name;
impl_->comments_[i].state = 2;//stoped
impl_->comments_[i].elements_.push_back(elm); impl_->comments_[i].elements_.push_back(elm);
return; return;
} }
...@@ -104,14 +109,17 @@ void odf_comment_context::end_comment_content() ...@@ -104,14 +109,17 @@ void odf_comment_context::end_comment_content()
{ {
impl_->comments_.back().is_started = false; impl_->comments_.back().is_started = false;
} }
bool odf_comment_context::find_by_id(int oox_id) int odf_comment_context::find_by_id(int oox_id)
{ {
for(long i=0; i < impl_->comments_.size(); i++) for(long i=0; i < impl_->comments_.size(); i++)
{ {
if (impl_->comments_[i].oox_id == oox_id) return true; if (impl_->comments_[i].oox_id == oox_id)
{
return impl_->comments_[i].state;
}
} }
return false; return 0;
} }
std::wstring odf_comment_context::find_name_by_id(int oox_id) std::wstring odf_comment_context::find_name_by_id(int oox_id)
{ {
......
...@@ -23,9 +23,9 @@ public: ...@@ -23,9 +23,9 @@ public:
void set_styles_context(odf_style_context* styles_context); void set_styles_context(odf_style_context* styles_context);
bool find_by_id(int oox_id); int find_by_id(int oox_id);
bool is_started(); bool is_started();// for content
void start_comment(office_element_ptr &elm, int oox_id); void start_comment(office_element_ptr &elm, int oox_id);
void end_comment(office_element_ptr & elm, int oox_id); void end_comment(office_element_ptr & elm, int oox_id);
......
...@@ -304,7 +304,7 @@ void odf_drawing_context::clear() ...@@ -304,7 +304,7 @@ void odf_drawing_context::clear()
void odf_drawing_context::start_drawing() void odf_drawing_context::start_drawing()
{ {
impl_->current_drawing_state_.clear(); //impl_->current_drawing_state_.clear();
if (impl_->current_level_.size() < 1) if (impl_->current_level_.size() < 1)
{ {
...@@ -710,6 +710,13 @@ void odf_drawing_context::end_shape() ...@@ -710,6 +710,13 @@ void odf_drawing_context::end_shape()
void odf_drawing_context::start_frame() void odf_drawing_context::start_frame()
{ {
impl_->create_draw_base(0); impl_->create_draw_base(0);
if (impl_->current_graphic_properties)
{
impl_->anchor_settings_.run_through_ = run_through(run_through::Background);
impl_->anchor_settings_.style_wrap_ = style_wrap(style_wrap::RunThrough);
impl_->current_graphic_properties->content().common_background_color_attlist_.fo_background_color_ = odf::background_color(odf::background_color::Transparent);
}
} }
void odf_drawing_context::end_frame() void odf_drawing_context::end_frame()
...@@ -838,8 +845,12 @@ void odf_drawing_context::set_solid_fill(std::wstring hexColor) ...@@ -838,8 +845,12 @@ void odf_drawing_context::set_solid_fill(std::wstring hexColor)
} }
void odf_drawing_context::set_z_order(int id) void odf_drawing_context::set_z_order(int id)
{ {
impl_->current_drawing_state_.z_order_ = id; if (id < 0)
id = 0x7fffffff + id;
if (impl_->current_drawing_state_.in_group)
impl_->current_drawing_state_.z_order_ = 0x7fffffff - id;
else
impl_->current_drawing_state_.z_order_ = id;
} }
void odf_drawing_context::add_path_element(std::wstring command, std::wstring & strE) void odf_drawing_context::add_path_element(std::wstring command, std::wstring & strE)
{ {
...@@ -917,6 +928,15 @@ void odf_drawing_context::set_drawings_rect(_CP_OPT(double) x_pt, _CP_OPT(double ...@@ -917,6 +928,15 @@ void odf_drawing_context::set_drawings_rect(_CP_OPT(double) x_pt, _CP_OPT(double
impl_->anchor_settings_.svg_width_ = length(length(*width_pt,length::pt).get_value_unit(length::cm),length::cm); impl_->anchor_settings_.svg_width_ = length(length(*width_pt,length::pt).get_value_unit(length::cm),length::cm);
} }
} }
void odf_drawing_context::set_object_background(bool Val)
{
if (Val)impl_->anchor_settings_.run_through_ = run_through(run_through::Background);
}
void odf_drawing_context::set_object_foreground(bool Val)
{
if (Val)impl_->anchor_settings_.run_through_ = run_through(run_through::Foreground);
}
void odf_drawing_context::set_margin_left (double valPt) void odf_drawing_context::set_margin_left (double valPt)
{ {
impl_->anchor_settings_.fo_margin_left_ = length(length(valPt,length::pt).get_value_unit(length::cm),length::cm); impl_->anchor_settings_.fo_margin_left_ = length(length(valPt,length::pt).get_value_unit(length::cm),length::cm);
...@@ -1031,10 +1051,7 @@ void odf_drawing_context::set_wrap_style(style_wrap::type type) ...@@ -1031,10 +1051,7 @@ void odf_drawing_context::set_wrap_style(style_wrap::type type)
} }
void odf_drawing_context::set_overlap (bool val) void odf_drawing_context::set_overlap (bool val)
{ {
//if (val) impl_->anchor_settings_.run_through_ = run_through(run_through::Background); if (val) impl_->anchor_settings_.style_wrap_ = style_wrap(style_wrap::RunThrough);//??
//else impl_->anchor_settings_.run_through_ = run_through(run_through::Foreground);
if (val) impl_->anchor_settings_.style_wrap_ = style_wrap(style_wrap::RunThrough);
} }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void odf_drawing_context::set_group_position(double x, double y, double ch_x, double ch_y) void odf_drawing_context::set_group_position(double x, double y, double ch_x, double ch_y)
...@@ -1181,7 +1198,7 @@ void odf_drawing_context::set_line_tail(int type, int len, int width) ...@@ -1181,7 +1198,7 @@ void odf_drawing_context::set_line_tail(int type, int len, int width)
{ {
if (!impl_->current_graphic_properties)return; if (!impl_->current_graphic_properties)return;
impl_->current_graphic_properties->content().draw_marker_start_ = add_marker_style(type); impl_->current_graphic_properties->content().draw_marker_end_ = add_marker_style(type);
switch(width) switch(width)
{ {
...@@ -1197,7 +1214,7 @@ void odf_drawing_context::set_line_head(int type, int len, int width) ...@@ -1197,7 +1214,7 @@ void odf_drawing_context::set_line_head(int type, int len, int width)
{ {
if (!impl_->current_graphic_properties)return; if (!impl_->current_graphic_properties)return;
impl_->current_graphic_properties->content().draw_marker_end_ = add_marker_style(type); impl_->current_graphic_properties->content().draw_marker_start_ = add_marker_style(type);
switch(width) switch(width)
{ {
...@@ -1438,32 +1455,17 @@ void odf_drawing_context::start_text_box() ...@@ -1438,32 +1455,17 @@ void odf_drawing_context::start_text_box()
start_frame(); start_frame();
// Frame - :(
style* style_ = dynamic_cast<style*>(impl_->current_drawing_state_.elements_.back().style_elm.get());
if (style_)
{
style_->style_parent_style_name_ = L"Frame";
}
if (impl_->current_graphic_properties)
{
impl_->anchor_settings_.run_through_ = run_through(run_through::Foreground);
impl_->anchor_settings_.style_wrap_ = style_wrap(style_wrap::RunThrough);
impl_->current_graphic_properties->content().common_background_color_attlist_.fo_background_color_ = odf::background_color(odf::background_color::Transparent);
}
office_element_ptr text_box_elm; office_element_ptr text_box_elm;
create_element(L"draw", L"text-box", text_box_elm, impl_->odf_context_); create_element(L"draw", L"text-box", text_box_elm, impl_->odf_context_);
start_element(text_box_elm); start_element(text_box_elm);
start_area_properties(); if (impl_->is_footer_header_ ==false)
set_no_fill(); set_text_box_parent_style(L"Frame");
end_area_properties();
} }
void odf_drawing_context::set_text_box_min_size(double w_pt, double h_pt) void odf_drawing_context::set_text_box_min_size(double w_pt, double h_pt)
{ {
if (impl_->current_drawing_state_.elements_.size() < 1) return;
draw_text_box* draw = dynamic_cast<draw_text_box*>(impl_->current_drawing_state_.elements_.back().elm.get()); draw_text_box* draw = dynamic_cast<draw_text_box*>(impl_->current_drawing_state_.elements_.back().elm.get());
if (draw) if (draw)
...@@ -1473,6 +1475,22 @@ void odf_drawing_context::set_text_box_min_size(double w_pt, double h_pt) ...@@ -1473,6 +1475,22 @@ void odf_drawing_context::set_text_box_min_size(double w_pt, double h_pt)
} }
} }
void odf_drawing_context::set_text_box_parent_style(std::wstring style_name)
{
if (impl_->current_drawing_state_.elements_.size() < 1) return;
// Frame -
style* style_ = dynamic_cast<style*>(impl_->current_drawing_state_.elements_[0].style_elm.get()); // ""
if (style_)
{
if (style_name.length() > 0)
style_->style_parent_style_name_ = style_name;
else
style_->style_parent_style_name_ = boost::none;
}
}
void odf_drawing_context::end_image() void odf_drawing_context::end_image()
{ {
end_element(); end_element();
......
...@@ -38,6 +38,9 @@ public: ...@@ -38,6 +38,9 @@ public:
void set_anchor (int type);//anchor_type void set_anchor (int type);//anchor_type
void set_object_background(bool Val);
void set_object_foreground(bool Val);
void set_vertical_rel(int from); void set_vertical_rel(int from);
void set_vertical_pos(int align); void set_vertical_pos(int align);
void set_vertical_pos(double offset_pt); void set_vertical_pos(double offset_pt);
...@@ -77,6 +80,7 @@ public: ...@@ -77,6 +80,7 @@ public:
void start_text_box(); void start_text_box();
void set_text_box_min_size(double w_pt, double h_pt); void set_text_box_min_size(double w_pt, double h_pt);
void set_text_box_parent_style(std::wstring style_name);
void end_text_box(); void end_text_box();
void start_object(std::wstring name); void start_object(std::wstring name);
......
...@@ -287,6 +287,8 @@ void odf_page_layout_context::set_page_border(std::wstring top, std::wstring lef ...@@ -287,6 +287,8 @@ void odf_page_layout_context::set_page_border(std::wstring top, std::wstring lef
} }
else else
{ {
props->style_page_layout_properties_attlist_.common_border_attlist_.fo_border_ = boost::none;
if (bottom.length() >0 )props->style_page_layout_properties_attlist_.common_border_attlist_.fo_border_bottom_ = bottom; if (bottom.length() >0 )props->style_page_layout_properties_attlist_.common_border_attlist_.fo_border_bottom_ = bottom;
if (top.length() >0 ) props->style_page_layout_properties_attlist_.common_border_attlist_.fo_border_top_ = top; if (top.length() >0 ) props->style_page_layout_properties_attlist_.common_border_attlist_.fo_border_top_ = top;
if (left.length() >0 ) props->style_page_layout_properties_attlist_.common_border_attlist_.fo_border_left_ = left; if (left.length() >0 ) props->style_page_layout_properties_attlist_.common_border_attlist_.fo_border_left_ = left;
......
...@@ -499,33 +499,42 @@ void odt_conversion_context::end_run() ...@@ -499,33 +499,42 @@ void odt_conversion_context::end_run()
} }
bool odt_conversion_context::start_comment(int oox_comm_id) bool odt_conversion_context::start_comment(int oox_comm_id)
{ {
bool added = comment_context_.find_by_id(oox_comm_id); int comm_state = comment_context_.find_by_id(oox_comm_id);
if (added == false) if (comm_state == 0)
{ {
office_element_ptr comm_elm; office_element_ptr comm_elm;
create_element(L"office", L"annotation",comm_elm,this); create_element(L"office", L"annotation",comm_elm,this);
comment_context_.start_comment(comm_elm, oox_comm_id); comment_context_.start_comment(comm_elm, oox_comm_id);
text_context()->current_level_.back().elm->add_child_element(comm_elm); if (text_context()->current_level_.size() > 0)
text_context()->current_level_.back().elm->add_child_element(comm_elm);
odf_element_state state={comm_elm, L"", office_element_ptr(),text_context()->current_level_.size()}; odf_element_state state={comm_elm, L"", office_element_ptr(),text_context()->current_level_.size()};
text_context()->current_level_.push_back(state); text_context()->current_level_.push_back(state);
//current_level_.back()->add_child_element(comm_elm);
//current_level_.push_back(comm_elm); return false; //
} }
return added; return true;
} }
void odt_conversion_context::start_comment_content() void odt_conversion_context::start_comment_content()
{ {
comment_context_.start_comment_content(); comment_context_.start_comment_content();
office_element_ptr & root_comm_element = text_context()->current_level_.back().elm;
start_text_context();
text_context()->start_element(root_comm_element);
} }
void odt_conversion_context::end_comment_content() void odt_conversion_context::end_comment_content()
{ {
if (comment_context_.is_started()) if (comment_context_.is_started())
{ {
comment_context_.end_comment_content(); comment_context_.end_comment_content();
text_context()->end_element();
end_text_context();
text_context()->current_level_.pop_back(); text_context()->current_level_.pop_back();
} }
} }
...@@ -540,9 +549,8 @@ void odt_conversion_context::end_comment(int oox_comm_id) ...@@ -540,9 +549,8 @@ void odt_conversion_context::end_comment(int oox_comm_id)
comment_context_.end_comment(comm_elm, oox_comm_id); comment_context_.end_comment(comm_elm, oox_comm_id);
//current_level_.back()->add_child_element(comm_elm); if (text_context()->current_level_.size() > 0)
odf_element_state state={comm_elm, L"", office_element_ptr(),text_context()->current_level_.size()}; text_context()->current_level_.back().elm->add_child_element(comm_elm);
text_context()->current_level_.push_back(state);
} }
} }
void odt_conversion_context::start_image(std::wstring & image_file_name) void odt_conversion_context::start_image(std::wstring & image_file_name)
......
...@@ -55,6 +55,7 @@ void OoxConverter::convert(OOX::Vml::CShapeType *vml_shape_type) ...@@ -55,6 +55,7 @@ void OoxConverter::convert(OOX::Vml::CShapeType *vml_shape_type)
{ {
odf_context()->drawing_context()->set_position(vml_shape_type->m_oCoordSize->GetX(), vml_shape_type->m_oCoordSize->GetY()); odf_context()->drawing_context()->set_position(vml_shape_type->m_oCoordSize->GetX(), vml_shape_type->m_oCoordSize->GetY());
} }
//m_oPreferRelative//
for (long i=0 ; i < vml_shape_type->m_arrItems.GetSize();i++) for (long i=0 ; i < vml_shape_type->m_arrItems.GetSize();i++)
{ {
...@@ -87,7 +88,7 @@ void OoxConverter::convert(SimpleTypes::Vml::CCssStyle *vml_style) ...@@ -87,7 +88,7 @@ void OoxConverter::convert(SimpleTypes::Vml::CCssStyle *vml_style)
break; break;
case SimpleTypes::Vml::cssptMarginBottom: case SimpleTypes::Vml::cssptMarginBottom:
//odf_context()->drawing_context()->set_margin_bottom(vml_style->m_arrProperties[i].get_Value().oValue.dValue); //odf_context()->drawing_context()->set_margin_bottom(vml_style->m_arrProperties[i].get_Value().oValue.dValue);
x = vml_style->m_arrProperties[i].get_Value().oValue.dValue; //x = vml_style->m_arrProperties[i].get_Value().oValue.dValue;
break; break;
case SimpleTypes::Vml::cssptMarginLeft: case SimpleTypes::Vml::cssptMarginLeft:
//odf_context()->drawing_context()->set_margin_left (vml_style->m_arrProperties[i].get_Value().oValue.dValue); //odf_context()->drawing_context()->set_margin_left (vml_style->m_arrProperties[i].get_Value().oValue.dValue);
...@@ -141,6 +142,20 @@ void OoxConverter::convert(SimpleTypes::Vml::CCssStyle *vml_style) ...@@ -141,6 +142,20 @@ void OoxConverter::convert(SimpleTypes::Vml::CCssStyle *vml_style)
case SimpleTypes::Vml::cssmsoposverrelLine: odf_context()->drawing_context()->set_vertical_rel(2); break; case SimpleTypes::Vml::cssmsoposverrelLine: odf_context()->drawing_context()->set_vertical_rel(2); break;
} }
break; break;
case SimpleTypes::Vml::cssptZIndex:
{
if (vml_style->m_arrProperties[i].get_Value().oZIndex.eType == SimpleTypes::Vml::csszindextypeOrder)
odf_context()->drawing_context()->set_z_order(vml_style->m_arrProperties[i].get_Value().oZIndex.nOrder);
}break;
case SimpleTypes::Vml::cssptPosition:
{
switch (vml_style->m_arrProperties[i].get_Value().ePosition)
{
case SimpleTypes::Vml::csspositionStatic: break;
case SimpleTypes::Vml::csspositionAbsolute: break;
case SimpleTypes::Vml::csspositionRelative: break;
}
}break;
} }
} }
odf_context()->drawing_context()->set_drawings_rect(x, y, width_pt, height_pt); odf_context()->drawing_context()->set_drawings_rect(x, y, width_pt, height_pt);
......
...@@ -1102,6 +1102,7 @@ void OoxConverter::convert(OOX::Drawing::CLineSpacing* oox_spacing, odf::length ...@@ -1102,6 +1102,7 @@ void OoxConverter::convert(OOX::Drawing::CLineSpacing* oox_spacing, odf::length
length_or_percent = odf::length_or_percent(length); length_or_percent = odf::length_or_percent(length);
} }
} }
void OoxConverter::convert(OOX::Drawing::CParagraph *oox_paragraph) void OoxConverter::convert(OOX::Drawing::CParagraph *oox_paragraph)
{ {
if (!oox_paragraph)return; if (!oox_paragraph)return;
......
...@@ -957,6 +957,8 @@ void DocxConverter::convert(OOX::Logic::CTblBorders *oox_border, odf::style_tabl ...@@ -957,6 +957,8 @@ void DocxConverter::convert(OOX::Logic::CTblBorders *oox_border, odf::style_tabl
} }
else else
{ {
table_cell_properties->style_table_cell_properties_attlist_.common_border_attlist_.fo_border_ = boost::none;
if (bottom.length() >0 )table_cell_properties->style_table_cell_properties_attlist_.common_border_attlist_.fo_border_bottom_ = bottom; if (bottom.length() >0 )table_cell_properties->style_table_cell_properties_attlist_.common_border_attlist_.fo_border_bottom_ = bottom;
if (top.length() >0 ) table_cell_properties->style_table_cell_properties_attlist_.common_border_attlist_.fo_border_top_ = top; if (top.length() >0 ) table_cell_properties->style_table_cell_properties_attlist_.common_border_attlist_.fo_border_top_ = top;
if (left.length() >0 ) table_cell_properties->style_table_cell_properties_attlist_.common_border_attlist_.fo_border_left_ = left; if (left.length() >0 ) table_cell_properties->style_table_cell_properties_attlist_.common_border_attlist_.fo_border_left_ = left;
...@@ -983,6 +985,8 @@ void DocxConverter::convert(OOX::Logic::CTcBorders *oox_border, odf::style_tabl ...@@ -983,6 +985,8 @@ void DocxConverter::convert(OOX::Logic::CTcBorders *oox_border, odf::style_tabl
} }
else else
{ {
table_cell_properties->style_table_cell_properties_attlist_.common_border_attlist_.fo_border_ = boost::none;
if (bottom.length() >0 )table_cell_properties->style_table_cell_properties_attlist_.common_border_attlist_.fo_border_bottom_ = bottom; if (bottom.length() >0 )table_cell_properties->style_table_cell_properties_attlist_.common_border_attlist_.fo_border_bottom_ = bottom;
if (top.length() >0 ) table_cell_properties->style_table_cell_properties_attlist_.common_border_attlist_.fo_border_top_ = top; if (top.length() >0 ) table_cell_properties->style_table_cell_properties_attlist_.common_border_attlist_.fo_border_top_ = top;
if (left.length() >0 ) table_cell_properties->style_table_cell_properties_attlist_.common_border_attlist_.fo_border_left_ = left; if (left.length() >0 ) table_cell_properties->style_table_cell_properties_attlist_.common_border_attlist_.fo_border_left_ = left;
...@@ -1019,6 +1023,8 @@ void DocxConverter::convert(OOX::Logic::CPBdr *oox_border, odf::style_paragraph_ ...@@ -1019,6 +1023,8 @@ void DocxConverter::convert(OOX::Logic::CPBdr *oox_border, odf::style_paragraph_
} }
else else
{ {
paragraph_properties->content().common_border_attlist_.fo_border_ = boost::none;
if (bottom.length() >0 )paragraph_properties->content().common_border_attlist_.fo_border_bottom_ = bottom; if (bottom.length() >0 )paragraph_properties->content().common_border_attlist_.fo_border_bottom_ = bottom;
if (top.length() >0 ) paragraph_properties->content().common_border_attlist_.fo_border_top_ = top; if (top.length() >0 ) paragraph_properties->content().common_border_attlist_.fo_border_top_ = top;
if (left.length() >0 ) paragraph_properties->content().common_border_attlist_.fo_border_left_ = left; if (left.length() >0 ) paragraph_properties->content().common_border_attlist_.fo_border_left_ = left;
...@@ -1077,9 +1083,12 @@ void DocxConverter::convert(ComplexTypes::Word::CPageBorder *borderProp, std::ws ...@@ -1077,9 +1083,12 @@ void DocxConverter::convert(ComplexTypes::Word::CPageBorder *borderProp, std::ws
border_style << L" solid"; border_style << L" solid";
break; break;
case SimpleTypes::bordervalueNone: case SimpleTypes::bordervalueNone:
case SimpleTypes::bordervalueNil:
odf_border_prop == L"none"; odf_border_prop == L"none";
return; return;
break; break;
default:
border_style << L" solid";
} }
}else border_style << L" solid"; }else border_style << L" solid";
/////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////
...@@ -1132,6 +1141,7 @@ void DocxConverter::convert(ComplexTypes::Word::CBorder *borderProp, std::wstrin ...@@ -1132,6 +1141,7 @@ void DocxConverter::convert(ComplexTypes::Word::CBorder *borderProp, std::wstrin
border_style << L" solid"; border_style << L" solid";
break; break;
case SimpleTypes::bordervalueNone: case SimpleTypes::bordervalueNone:
case SimpleTypes::bordervalueNil:
odf_border_prop == L"none"; odf_border_prop == L"none";
return; return;
break; break;
...@@ -1450,6 +1460,8 @@ void DocxConverter::convert(OOX::Logic::CPicture* oox_pic) ...@@ -1450,6 +1460,8 @@ void DocxConverter::convert(OOX::Logic::CPicture* oox_pic)
} }
else else
{ {
//odf_context()->drawing_context()->set_anchor(odf::anchor_type::Char);
if (oox_pic->m_oShape.IsInit()) if (oox_pic->m_oShape.IsInit())
OoxConverter::convert(oox_pic->m_oShape->m_oStyle.GetPointer()); OoxConverter::convert(oox_pic->m_oShape->m_oStyle.GetPointer());
...@@ -1565,6 +1577,23 @@ void DocxConverter::convert(OOX::Drawing::CAnchor *oox_anchor) ...@@ -1565,6 +1577,23 @@ void DocxConverter::convert(OOX::Drawing::CAnchor *oox_anchor)
_CP_OPT(double) width, height; _CP_OPT(double) width, height;
_CP_OPT(double) x, y; _CP_OPT(double) x, y;
if (oox_anchor->m_oBehindDoc.IsInit())
{
if (oox_anchor->m_oBehindDoc->ToBool())
{
odt_context->drawing_context()->set_object_background(true);
}
else
{
//z - order foreground
}
}
else
{
//always ??? foreground ????
odt_context->drawing_context()->set_object_foreground(true);
}
if (oox_anchor->m_oExtent.IsInit()) //size if (oox_anchor->m_oExtent.IsInit()) //size
{ {
width = oox_anchor->m_oExtent->m_oCx.ToPoints(); width = oox_anchor->m_oExtent->m_oCx.ToPoints();
...@@ -1624,6 +1653,7 @@ void DocxConverter::convert(OOX::Drawing::CAnchor *oox_anchor) ...@@ -1624,6 +1653,7 @@ void DocxConverter::convert(OOX::Drawing::CAnchor *oox_anchor)
{ {
odt_context->drawing_context()->set_overlap(oox_anchor->m_oAllowOverlap->ToBool()); odt_context->drawing_context()->set_overlap(oox_anchor->m_oAllowOverlap->ToBool());
} }
OoxConverter::convert(oox_anchor->m_oDocPr.GetPointer());
convert(oox_anchor->m_oGraphic.GetPointer()); convert(oox_anchor->m_oGraphic.GetPointer());
} }
void DocxConverter::convert(OOX::Drawing::CInline *oox_inline) void DocxConverter::convert(OOX::Drawing::CInline *oox_inline)
...@@ -1648,8 +1678,10 @@ void DocxConverter::convert(OOX::Drawing::CInline *oox_inline) ...@@ -1648,8 +1678,10 @@ void DocxConverter::convert(OOX::Drawing::CInline *oox_inline)
if (oox_inline->m_oDistR.IsInit())odt_context->drawing_context()->set_margin_right(oox_inline->m_oDistR->ToPoints()); if (oox_inline->m_oDistR.IsInit())odt_context->drawing_context()->set_margin_right(oox_inline->m_oDistR->ToPoints());
if (oox_inline->m_oDistB.IsInit())odt_context->drawing_context()->set_margin_bottom(oox_inline->m_oDistB->ToPoints()); if (oox_inline->m_oDistB.IsInit())odt_context->drawing_context()->set_margin_bottom(oox_inline->m_oDistB->ToPoints());
OoxConverter::convert(oox_inline->m_oDocPr.GetPointer());
convert(oox_inline->m_oGraphic.GetPointer()); convert(oox_inline->m_oGraphic.GetPointer());
} }
void DocxConverter::convert(OOX::Drawing::CGraphic *oox_graphic) void DocxConverter::convert(OOX::Drawing::CGraphic *oox_graphic)
{ {
if (oox_graphic == NULL)return; if (oox_graphic == NULL)return;
...@@ -1817,11 +1849,11 @@ void DocxConverter::convert(OOX::Logic::CShape *oox_shape) ...@@ -1817,11 +1849,11 @@ void DocxConverter::convert(OOX::Logic::CShape *oox_shape)
type = 2000; //textBox type = 2000; //textBox
} }
if (type == SimpleTypes::shapetypeRect && oox_shape->m_oTxBody.IsInit() && oox_shape->m_oTxBodyProperties.IsInit() /*&& //if (type == SimpleTypes::shapetypeRect && oox_shape->m_oTxBody.IsInit() && oox_shape->m_oTxBodyProperties.IsInit() /*&&
oox_shape->m_oTxBodyProperties->m_eAutoFitType == OOX::Drawing::textautofitShape*/) // oox_shape->m_oTxBodyProperties->m_eAutoFitType == OOX::Drawing::textautofitShape*/)
{ //{
type = 2000;// , , ... // type = 2000;// , , ...
} //}
if (type < 0)return; if (type < 0)return;
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
if (type == 2000) odt_context->drawing_context()->start_text_box(); if (type == 2000) odt_context->drawing_context()->start_text_box();
...@@ -2210,7 +2242,7 @@ void DocxConverter::convert(OOX::Logic::CCommentReference* oox_comm_ref) ...@@ -2210,7 +2242,7 @@ void DocxConverter::convert(OOX::Logic::CCommentReference* oox_comm_ref)
bool added = odt_context->start_comment(oox_comm_id); bool added = odt_context->start_comment(oox_comm_id);
if (added == false) if (added == false) //
{ {
// RangeStart // RangeStart
convert_comment(oox_comm_id); convert_comment(oox_comm_id);
...@@ -2280,7 +2312,7 @@ void DocxConverter::convert(OOX::Logic::CTbl *oox_table) ...@@ -2280,7 +2312,7 @@ void DocxConverter::convert(OOX::Logic::CTbl *oox_table)
convert(oox_table->m_oTableProperties, styled_table ); convert(oox_table->m_oTableProperties, styled_table );
if(oox_table->m_oTableProperties && oox_table->m_oTableProperties->m_oTblpPr.IsInit() && if(oox_table->m_oTableProperties && oox_table->m_oTableProperties->m_oTblpPr.IsInit() &&
(oox_table->m_oTableProperties->m_oTblpPr->m_oTblpX.IsInit() && oox_table->m_oTableProperties->m_oTblpPr->m_oTblpY.IsInit())) (oox_table->m_oTableProperties->m_oTblpPr->m_oTblpX.IsInit() || oox_table->m_oTableProperties->m_oTblpPr->m_oTblpY.IsInit()))
{ {
in_frame = true; in_frame = true;
odt_context->start_paragraph(); odt_context->start_paragraph();
...@@ -2288,16 +2320,46 @@ void DocxConverter::convert(OOX::Logic::CTbl *oox_table) ...@@ -2288,16 +2320,46 @@ void DocxConverter::convert(OOX::Logic::CTbl *oox_table)
odt_context->drawing_context()->set_anchor(odf::anchor_type::Paragraph); odt_context->drawing_context()->set_anchor(odf::anchor_type::Paragraph);
_CP_OPT(double) width, height, x, y ; _CP_OPT(double) width, height, x, y ;
x = oox_table->m_oTableProperties->m_oTblpPr->m_oTblpX->ToPoints(); if (oox_table->m_oTableProperties->m_oTblpPr->m_oTblpX.IsInit())
y = oox_table->m_oTableProperties->m_oTblpPr->m_oTblpY->ToPoints(); x = oox_table->m_oTableProperties->m_oTblpPr->m_oTblpX->ToPoints();
if (oox_table->m_oTableProperties->m_oTblpPr->m_oTblpY.IsInit())
y = oox_table->m_oTableProperties->m_oTblpPr->m_oTblpY->ToPoints();
odt_context->drawing_context()->set_drawings_rect(x, y, width, height); odt_context->drawing_context()->set_drawings_rect(x, y, width, height);
if (oox_table->m_oTableProperties->m_oTblpPr->m_oVertAnchor.IsInit())
{
switch(oox_table->m_oTableProperties->m_oTblpPr->m_oVertAnchor->GetValue())
{
case SimpleTypes::vanchorMargin: odt_context->drawing_context()->set_vertical_rel(6); break;
case SimpleTypes::vanchorPage: odt_context->drawing_context()->set_vertical_rel(5); break;
case SimpleTypes::vanchorText: odt_context->drawing_context()->set_vertical_rel(0); break;
}
}
if (oox_table->m_oTableProperties->m_oTblpPr->m_oHorzAnchor.IsInit())
{
switch(oox_table->m_oTableProperties->m_oTblpPr->m_oHorzAnchor->GetValue())
{
case SimpleTypes::hanchorMargin: odt_context->drawing_context()->set_horizontal_rel(2); break;
case SimpleTypes::hanchorPage: odt_context->drawing_context()->set_horizontal_rel(6); break;
case SimpleTypes::hanchorText: odt_context->drawing_context()->set_horizontal_rel(0); break;
}
}
if (oox_table->m_oTableProperties->m_oTblpPr->m_oRightFromText.IsInit())
{
odt_context->drawing_context()->set_horizontal_pos(oox_table->m_oTableProperties->m_oTblpPr->m_oRightFromText->ToPoints());
}
if (oox_table->m_oTableProperties->m_oTblpPr->m_oTopFromText.IsInit())
{
odt_context->drawing_context()->set_vertical_pos(oox_table->m_oTableProperties->m_oTblpPr->m_oTopFromText->ToPoints());
}
odt_context->drawing_context()->start_drawing(); odt_context->drawing_context()->start_drawing();
odt_context->drawing_context()->start_text_box(); odt_context->drawing_context()->start_text_box();
odt_context->drawing_context()->set_name(L"TableFrame"); odt_context->drawing_context()->set_z_order(0x7fffffff-1);
odt_context->drawing_context()->set_no_fill(); odt_context->drawing_context()->set_text_box_parent_style(L"Frame");
odt_context->drawing_context()->set_name(L"TableFrame");
odt_context->start_text_context(); odt_context->start_text_context();
} }
......
...@@ -2,6 +2,6 @@ ...@@ -2,6 +2,6 @@
//1 //1
//2 //2
//0 //0
//118 //120
#define INTVER 1,2,0,118 #define INTVER 1,2,0,120
#define STRVER "1,2,0,118\0" #define STRVER "1,2,0,120\0"
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment