Commit ceb2c786 authored by ElenaSubbotina's avatar ElenaSubbotina

Merge branch 'develop' of https://github.com/ONLYOFFICE/core into develop

parents 26cedc30 c0f29521
......@@ -82,8 +82,6 @@ void text_tracked_context::start_changes_content()
void text_tracked_context::end_changes_content()
{
docx_context_.finish_run(); //0106GS-GettingStartedWithWriter_el.odt - удаленный заголовок
current_state_.content.push_back(changes_stream_.str());
docx_context_.set_delete_text_state (false);
......@@ -132,6 +130,7 @@ text_tracked_context::_state & text_tracked_context::get_tracked_change(std::wst
//----------------------------------------------------------------------------------------------------------------
docx_conversion_context::docx_conversion_context(odf_reader::odf_document * OdfDocument) :
mediaitems_ (OdfDocument->get_folder() ),
next_dump_page_properties_ (false),
page_break_ (false),
page_break_after_ (false),
......@@ -152,8 +151,7 @@ docx_conversion_context::docx_conversion_context(odf_reader::odf_document * OdfD
delayed_converting_ (false),
process_headers_footers_ (false),
process_comment_ (false),
mediaitems_ (OdfDocument->get_folder() ),
math_context_ (OdfDocument->odf_context().fontContainer(), false),
math_context_ (false),
odf_document_ (OdfDocument)
{
streams_man_ = streams_man::create(temp_stream_);
......@@ -835,20 +833,13 @@ void docx_conversion_context::docx_serialize_paragraph_style(std::wostream & str
//in_styles = true -> styles.xml
//почему то конструкция <pPr><rPr/></pPr><rPr/> "не работает" в части в rPr в ms2010 )
{
bool in_drawing = false;
if (get_drawing_context().get_current_shape() || get_drawing_context().get_current_frame())
{
in_drawing = true;
}
std::wstringstream & paragraph_style = get_styles_context().paragraph_nodes();
std::wstringstream & run_style = get_styles_context().text_style();
CP_XML_WRITER(strm)
{
//Tutor_Charlotte_Tutor_the_Entire_World_.odt
if (get_section_context().dump_.empty() == false && (!ParentId.empty() || get_section_context().get().is_dump_ || in_header_)
&& !get_table_context().in_table() && !in_drawing)
&& !get_table_context().in_table())
{//две подряд секции или если стиль определен и в заголовки нельзя пихать !!!
CP_XML_NODE(L"w:pPr")
{
......@@ -863,7 +854,7 @@ void docx_conversion_context::docx_serialize_paragraph_style(std::wostream & str
{
CP_XML_NODE(L"w:pPr")
{
if ( !get_table_context().in_table() && !in_drawing)
if ( !get_table_context().in_table() )
{
CP_XML_STREAM() << get_section_context().dump_;
get_section_context().dump_.clear();
......
......@@ -268,7 +268,7 @@ void docx_serialize_shape_child(std::wostream & strm, _docx_drawing & val)
{
CP_XML_ATTR(L"txBox", 1);
}
if (val.inGroup == false && val.sub_type != 1 && val.sub_type != 2)
if (val.inGroup == false)
{
CP_XML_NODE(L"a:spLocks")
{
......@@ -437,6 +437,8 @@ void docx_serialize_wps(std::wostream & strm, _docx_drawing & val)
{
std::wstring relativeFrom = L"margin";
if (val.styleHorizontalRel) relativeFrom =val.styleHorizontalRel->get_type_str();
if (relativeFrom == L"column") relativeFrom = L"margin";
CP_XML_ATTR(L"relativeFrom", relativeFrom);
......@@ -506,10 +508,8 @@ void docx_serialize_wps(std::wostream & strm, _docx_drawing & val)
}
if (val.pctHeight)
{
std::wstring relativeFrom = L"margin";
if (val.styleVerticalRel)relativeFrom = val.styleVerticalRel->get_type_str();
if (relativeFrom == L"paragraph") relativeFrom = L"margin";
std::wstring relativeFrom = L"paragraph";
if (val.styleVerticalRel)relativeFrom = val.styleVerticalRel->get_type_str();
CP_XML_NODE(L"wp14:sizeRelV")
{
......
......@@ -97,12 +97,9 @@ void headers_footers::dump_rels(rels & Rels) const//внешние релсы
}
}
bool headers_footers::write_sectPr(const std::wstring & StyleName, bool next_page/*not used*/, std::wostream & _Wostream)
bool headers_footers::write_sectPr(const std::wstring & StyleName, std::wostream & _Wostream) const
{
if (!instances_.count(StyleName)) return false;
if (last_write_style_ == StyleName) return true;
last_write_style_ = StyleName;
if (!instances_.count(StyleName))return false;
bool first = false, left = false;
bool res = false;
......
......@@ -49,8 +49,7 @@ namespace oox {
class headers_footers
{
public:
headers_footers() : size_(0) {}
headers_footers() : size_(0),enable_write_(false){}
enum Type { header, footer, headerLeft, footerLeft, headerFirst, footerFirst, none };
std::wstring add(const std::wstring & StyleName, const std::wstring & Content, Type type,rels &_rels);
......@@ -67,17 +66,18 @@ public:
};
void dump_rels(rels & Rels) const;
bool write_sectPr(const std::wstring & StyleName, bool next_page, std::wostream & _Wostream);
bool write_sectPr(const std::wstring & StyleName, std::wostream & _Wostream) const;
typedef boost::shared_ptr<instance> instance_ptr;
typedef std::vector<instance_ptr> instances_array;
typedef boost::unordered_map<std::wstring, instances_array> instances_map;
const instances_map & instances() const { return instances_; }
const instances_map & instances() const { return instances_; }
private:
std::wstring last_write_style_;
bool get_enable_write(){return enable_write_;}
void set_enable_write(bool val){enable_write_ = val;}
private:
bool enable_write_;
static std::wstring create_id(size_t i);
static std::wstring create_name(size_t i, Type _Type);
instances_map instances_;
......
......@@ -144,7 +144,7 @@ void styles_context::docx_serialize_table_style(std::wostream & strm, std::wstri
}
namespace oox
{
math_context::math_context(odf_reader::fonts_container & fonts, bool graphic) : base_font_size_(12), fonts_container_(fonts)
math_context::math_context(bool graphic) : base_font_size_(12)
{
graphRPR_ = graphic;
......
......@@ -44,7 +44,6 @@ namespace odf_reader
{
class style_instance;
class style_text_properties;
class fonts_container;
typedef boost::shared_ptr<style_text_properties> style_text_properties_ptr;
};
......@@ -91,7 +90,7 @@ namespace oox {
class math_context : boost::noncopyable
{
public:
math_context(odf_reader::fonts_container & fonts, bool graphic = false);
math_context(bool graphic = false);
void start();
std::wstring end();
......@@ -100,7 +99,6 @@ namespace oox {
std::wstringstream & math_style_stream() { return math_style_stream_; }
odf_reader::fonts_container & fonts_container_;
int base_font_size_;
odf_reader::style_text_properties_ptr text_properties_;
......
......@@ -61,16 +61,16 @@ namespace package
class pptx_document;
}
pptx_conversion_context::pptx_conversion_context( odf_reader::odf_document * odfDocument)
:output_document_ (NULL)
,odf_document_ (odfDocument)
,pptx_text_context_ (odf_document_->odf_context(), *this)
,pptx_table_context_ (*this)
,pptx_comments_context_ (comments_context_handle_)
,pptx_slide_context_ (*this/*, pptx_text_context_*/)
,math_context_ (odf_document_->odf_context().fontContainer(), true)
,last_idx_placeHolder (1)
,last_uniq_big_id (1)
pptx_conversion_context::pptx_conversion_context( odf_reader::odf_document * odfDocument):
output_document_(NULL)
,odf_document_(odfDocument)
,pptx_text_context_(odf_document_->odf_context(),*this)
,pptx_table_context_(*this)
,pptx_comments_context_(comments_context_handle_)
,pptx_slide_context_(*this/*, pptx_text_context_*/)
,math_context_(true)
,last_idx_placeHolder(1)
,last_uniq_big_id(1)
{
applicationFonts_ = new CApplicationFonts();
}
......
......@@ -66,7 +66,7 @@ xlsx_conversion_context::xlsx_conversion_context(odf_reader::odf_document * odfD
num_format_context_ (odf_document_->odf_context()),
xlsx_text_context_ (odf_document_->odf_context().styleContainer()),
xlsx_table_context_ (this, xlsx_text_context_),
math_context_ (odf_document_->odf_context().fontContainer(), true),
math_context_ (true),
xlsx_style_ (this),
maxDigitSize_ (std::pair<float,float>(-1.0, -1.0) ),
......
......@@ -52,10 +52,10 @@ static const _shape_converter _OO_OOX_custom_shapes[]=
{L"hexagon" ,L"hexagon" ,0 ,0 ,0 },
{L"octagon" ,L"octagon" ,0 ,0 ,0 },
{L"star4" ,L"star4" ,1 ,0 ,50000 },
{L"star5" ,L"star5" ,0 ,0 ,50000 },//??? 19098 неверно
{L"star5" ,L"star5" ,1 ,0 ,50000 },
{L"star8" ,L"star8" ,1 ,0 ,50000 },
{L"star24" ,L"star24" ,1 ,0 ,50000 },
{L"star6" ,L"star6" ,0 ,0 ,50000 },
{L"star6" ,L"star6" ,1 ,0 ,50000 },
{L"star12" ,L"star12" ,1 ,0 ,50000 },
{L"round-rectangle" ,L"roundRect" ,0 ,0 ,0 },
{L"ellipse" ,L"ellipse" ,0 ,0 ,0 },
......@@ -137,7 +137,6 @@ static const _shape_converter _OO_OOX_custom_shapes[]=
{L"mso-spt14" ,L"thickArrow" ,0 ,0 ,0 },
{L"mso-spt17" ,L"Balloon" ,0 ,0 ,0 },
{L"mso-spt18" ,L"irregularSeal1" ,0 ,0 ,0 },
{L"mso-spt19" ,L"rect" ,0 ,0 ,0 },
{L"mso-spt24" ,L"textBox" ,0 ,0 ,0 },
{L"mso-spt25" ,L"" ,0 ,0 ,0 },
{L"mso-spt26" ,L"" ,0 ,0 ,0 },
......
......@@ -230,11 +230,7 @@ void draw_path::add_attributes( const xml::attributes_wc_ptr & Attributes )
}
void draw_path::reset_svg_path()
{
if (!draw_path_attlist_.svg_d_)
{
bad_shape_ = true;
}
else
if (draw_path_attlist_.svg_d_)
{
std::vector<svg_path::_polyline> o_Polyline_pt;
std::vector<svg_path::_polyline> o_Polyline_cm;
......@@ -290,11 +286,7 @@ void draw_polygon::add_attributes( const xml::attributes_wc_ptr & Attributes )
}
void draw_polygon::reset_polygon_path()
{
if (!draw_polygon_attlist_.draw_points_)
{
bad_shape_ = true;
}
else
if (draw_polygon_attlist_.draw_points_)
{
std::vector<svg_path::_polyline> o_Polyline_pt;
std::vector<svg_path::_polyline> o_Polyline_cm;
......@@ -346,11 +338,7 @@ void draw_polyline::add_attributes( const xml::attributes_wc_ptr & Attributes )
}
void draw_polyline::reset_polyline_path()
{
if (!draw_polyline_attlist_.draw_points_)
{
bad_shape_ = true;
}
else
if (draw_polyline_attlist_.draw_points_)
{
std::vector<svg_path::_polyline> o_Polyline_pt;
std::vector<svg_path::_polyline> o_Polyline_cm;
......@@ -613,11 +601,7 @@ void draw_connector::add_attributes( const xml::attributes_wc_ptr & Attributes )
}
void draw_connector::reset_svg_path()
{
if (!draw_connector_attlist_.svg_d_)
{
bad_shape_ = true;
}
else
if (draw_connector_attlist_.svg_d_)
{
std::vector<svg_path::_polyline> o_Polyline_pt;
std::vector<svg_path::_polyline> o_Polyline_cm;
......
......@@ -292,7 +292,7 @@ void math_mstyle::oox_convert(oox::math_context & Context)
{
CP_XML_NODE(L"m:ctrlPr")
{
Context.text_properties_->content().oox_convert(CP_XML_STREAM(), Context.graphRPR_, Context.fonts_container_);
Context.text_properties_->content().oox_convert(CP_XML_STREAM(), Context.graphRPR_);
}
}
}
......@@ -317,7 +317,7 @@ void math_mstyle::oox_convert(oox::math_context & Context)
{
CP_XML_NODE(L"m:ctrlPr")
{
Context.text_properties_->content().oox_convert(CP_XML_STREAM(), Context.graphRPR_, Context.fonts_container_);
Context.text_properties_->content().oox_convert(CP_XML_STREAM(), Context.graphRPR_);
}
}
}
......
......@@ -94,10 +94,8 @@ void math_mtr::oox_convert(oox::math_context & Context)
strm << L"<m:mr>";
for (int i = 0; i < content_.size(); i++)
{
strm << L"<m:e>";
office_math_element* math_element = dynamic_cast<office_math_element*>(content_[i].get());
math_element->oox_convert(Context);
strm << L"</m:e>";
}
strm << L"</m:mr>";
}
......
......@@ -114,7 +114,7 @@ void math_mi::oox_convert(oox::math_context & Context)
}
}
Context.text_properties_->content().oox_convert(CP_XML_STREAM(), Context.graphRPR_, Context.fonts_container_);
Context.text_properties_->content().oox_convert(CP_XML_STREAM(), Context.graphRPR_);
CP_XML_NODE(L"m:t")
{
......@@ -162,7 +162,7 @@ void math_mo::oox_convert(oox::math_context & Context)
{
// + доп стили текста ... todoooo
Context.text_properties_->content().oox_convert(CP_XML_STREAM(), Context.graphRPR_, Context.fonts_container_);
Context.text_properties_->content().oox_convert(CP_XML_STREAM(), Context.graphRPR_);
CP_XML_NODE(L"m:t")
{
......@@ -203,7 +203,7 @@ void math_mn::oox_convert(oox::math_context & Context)
{
// + доп стили текста ... todoooo
Context.text_properties_->content().oox_convert(CP_XML_STREAM(), Context.graphRPR_, Context.fonts_container_);
Context.text_properties_->content().oox_convert(CP_XML_STREAM(), Context.graphRPR_);
CP_XML_NODE(L"m:t")
{
......
......@@ -128,6 +128,8 @@ void office_body::docx_convert(oox::docx_conversion_context & Context)
if (content_)
content_->docx_convert(Context);
Context.get_headers_footers().set_enable_write(true);
if (!Context.get_section_context().dump_.empty() && !Context.get_table_context().in_table())
{
Context.output_stream() << Context.get_section_context().dump_;
......
......@@ -276,20 +276,18 @@ void text_format_properties_content::pptx_convert_as_list(oox::pptx_conversion_c
{
std::wstring w_font = (fo_font_family_ ? *fo_font_family_: L"");
if (w_font.empty())
if (w_font.length() < 1)
{
std::wstring w_ascii = (style_font_name_ ? *style_font_name_ : L"");
std::wstring w_eastAsia = (style_font_name_asian_ ? *style_font_name_asian_ : L"");
std::wstring w_cs = (style_font_name_complex_ ? *style_font_name_complex_ : L"");
std::wstring w_ascii = (style_font_name_ ? *style_font_name_: L"");
std::wstring w_eastAsia = (style_font_name_asian_ ? *style_font_name_asian_: L"");
std::wstring w_cs = (style_font_name_complex_ ? *style_font_name_complex_: L"");
fonts_container & fonts = Context.root()->odf_context().fontContainer();
font_instance * font = fonts.font_by_style_name(w_ascii);
if (font == NULL) font = fonts.font_by_style_name(w_eastAsia);
if (font == NULL) font = fonts.font_by_style_name(w_cs);
if (font)
w_font = font->name();
font_instance * font = fonts.font_by_style_name(w_ascii);
if (font == NULL)font = fonts.font_by_style_name(w_eastAsia);
if (font == NULL)font = fonts.font_by_style_name(w_cs);
if (font)w_font = font->name();
//'Arial' глючит
removeCharsFromString(w_font, _T("'"));
......@@ -854,38 +852,22 @@ void text_format_properties_content::docx_convert(oox::docx_conversion_context &
if (style_font_name_ || style_font_name_asian_ || style_font_name_complex_ || fo_font_family_)
{
fonts_container & fonts = Context.root()->odf_context().fontContainer();
std::wstring w_eastAsia;
std::wstring w_hAnsi;
std::wstring w_cs;
std::wstring w_ascii = w_hAnsi = w_cs = (fo_font_family_ ? *fo_font_family_ : L"");
std::wstring w_ascii = w_hAnsi = w_cs = (style_font_name_ ? *style_font_name_: L"");
if (style_font_name_complex_)
{
font_instance * font = fonts.font_by_style_name(*style_font_name_complex_);
if (font)
w_cs = font->name();
}
if (style_font_name_asian_)
{
font_instance * font = fonts.font_by_style_name(*style_font_name_asian_);
if (font)
w_eastAsia = font->name();
}
if (style_font_name_)
{
font_instance * font = fonts.font_by_style_name(*style_font_name_);
if (font)
w_ascii = w_hAnsi = font->name();
}
_rPr << L"<w:rFonts ";
if (!w_ascii.empty())
_rPr << L"w:ascii=\"" << w_ascii <<"\" ";
if (!w_hAnsi.empty())
_rPr << L"w:hAnsi=\"" << w_hAnsi <<"\" ";
if (!w_eastAsia.empty())
_rPr << L"w:eastAsia=\"" << w_eastAsia <<"\" ";
if (!w_cs.empty())
_rPr << L"w:cs=\"" << w_cs <<"\" ";
_rPr << L"<w:rFonts";
if (!w_ascii.empty()) _rPr << L" w:ascii=\"" << w_ascii <<"\"";
if (!w_hAnsi.empty()) _rPr << L" w:hAnsi=\"" << w_hAnsi <<"\"";
if (!w_eastAsia.empty()) _rPr << L" w:eastAsia=\"" << w_eastAsia <<"\"";
if (!w_cs.empty()) _rPr << L" w:cs=\"" << w_cs <<"\"";
_rPr << L"/>";
_rPr << L" />";
}
_CP_OPT(color) color_text = fo_color_;
......@@ -992,12 +974,12 @@ void text_format_properties_content::docx_convert(oox::docx_conversion_context &
}
void text_format_properties_content::oox_convert (std::wostream & _rPr, bool graphic, fonts_container & fonts)
void text_format_properties_content::oox_convert (std::wostream & _rPr, bool graphic)
{
const int W = process_font_weight (fo_font_weight_);
const int fontStyle = process_font_style (fo_font_style_);
const int WCs = process_font_weight (style_font_weight_complex_);
if (graphic)
{
_rPr << L"<a:rPr";
......@@ -1342,33 +1324,19 @@ void text_format_properties_content::oox_convert (std::wostream & _rPr, bool gra
std::wstring w_eastAsia;
std::wstring w_hAnsi;
std::wstring w_cs;
std::wstring w_ascii = w_hAnsi = w_cs = (fo_font_family_ ? *fo_font_family_ : L"");
if (style_font_name_complex_)
{
font_instance * font = fonts.font_by_style_name(*style_font_name_complex_);
if (font)
w_cs = font->name();
}
if (style_font_name_asian_)
{
font_instance * font = fonts.font_by_style_name(*style_font_name_asian_);
if (font)
w_eastAsia = font->name();
}
if (style_font_name_)
{
font_instance * font = fonts.font_by_style_name(*style_font_name_);
if (font)
w_ascii = w_hAnsi = font->name();
}
std::wstring w_ascii = w_hAnsi = w_cs = (style_font_name_ ? *style_font_name_: L"");
_rPr << L"<w:rFonts";
if (!w_ascii.empty()) _rPr << L" w:ascii=\"" << w_ascii <<"\"";
if (!w_hAnsi.empty()) _rPr << L" w:hAnsi=\"" << w_hAnsi <<"\"";
if (!w_eastAsia.empty()) _rPr << L" w:eastAsia=\"" << w_eastAsia <<"\"";
if (!w_cs.empty()) _rPr << L" w:cs=\"" << w_cs <<"\"";
_rPr << L"/>";
_rPr << L"<w:rFonts ";
if (!w_ascii.empty())
_rPr << L"w:ascii=\"" << w_ascii <<"\" ";
if (!w_hAnsi.empty())
_rPr << L"w:hAnsi=\"" << w_hAnsi <<"\" ";
if (!w_eastAsia.empty())
_rPr << L"w:eastAsia=\"" << w_eastAsia <<"\" ";
if (!w_cs.empty())
_rPr << L"w:cs=\"" << w_cs <<"\" ";
_rPr << L" />";
}
_CP_OPT(color) color_text = fo_color_;
......
......@@ -69,7 +69,6 @@ namespace cpdoccore {
namespace odf_reader {
class style_instance;
class fonts_container;
// 15.4
class text_format_properties_content : public oox::conversion_element
......@@ -80,8 +79,7 @@ public:
void docx_convert (oox::docx_conversion_context & Context);
void pptx_convert (oox::pptx_conversion_context & Context);
void pptx_convert_as_list (oox::pptx_conversion_context & Context);
void oox_convert (std::wostream & stream, bool graphic, fonts_container & fonts);
void oox_convert (std::wostream & stream, bool graphic);
void apply_from (const text_format_properties_content & Other);
void apply_to (std::vector<_property> & properties);
......
......@@ -1134,14 +1134,14 @@ void style_page_layout_properties_attlist::docx_convert_serialize(std::wostream
CP_XML_NODE(L"w:pgMar")
{
CP_XML_ATTR(L"w:header" , process_page_margin(common_vertical_margin_attlist_.fo_margin_top_ ) );
CP_XML_ATTR(L"w:footer" , process_page_margin(common_vertical_margin_attlist_.fo_margin_bottom_ ) );
CP_XML_ATTR(L"w:gutter" , 0 );
CP_XML_ATTR(L"w:left" , process_page_margin(common_horizontal_margin_attlist_.fo_margin_left_ , margin_left_length) );
CP_XML_ATTR(L"w:right" , process_page_margin(common_horizontal_margin_attlist_.fo_margin_right_, margin_right_length) );
CP_XML_ATTR(L"w:top" , process_page_margin(common_vertical_margin_attlist_.fo_margin_top_ , Context.get_header_footer_context().header()) );
CP_XML_ATTR(L"w:bottom" , process_page_margin(common_vertical_margin_attlist_.fo_margin_bottom_ , Context.get_header_footer_context().footer()) );
CP_XML_ATTR(L"w:header" , process_page_margin(common_vertical_margin_attlist_.fo_margin_top_ ) );
CP_XML_ATTR(L"w:footer" , process_page_margin(common_vertical_margin_attlist_.fo_margin_bottom_ ) );
CP_XML_ATTR(L"w:gutter" , 0 );
}
}
......@@ -1286,17 +1286,19 @@ void style_page_layout_properties::docx_convert_serialize(std::wostream & strm,
{
Context.process_section( CP_XML_STREAM(), columns);
bool next_page = Context.is_next_dump_page_properties();
CP_XML_NODE(L"w:type")
{
if (next_page) CP_XML_ATTR(L"w:val", L"nextPage");
else CP_XML_ATTR(L"w:val", L"continuous");
if (Context.is_next_dump_page_properties())
{
CP_XML_ATTR(L"w:val", L"nextPage");
}else
{
CP_XML_ATTR(L"w:val", L"continuous");
}
}
std::wstring masterPageName = Context.get_master_page_name();
bool res = Context.get_headers_footers().write_sectPr(masterPageName, next_page, strm);
bool res = Context.get_headers_footers().write_sectPr(masterPageName, strm);
if (res == false)
{
// default???
......@@ -1306,7 +1308,7 @@ void style_page_layout_properties::docx_convert_serialize(std::wostream & strm,
Context.remove_page_properties();
Context.add_page_properties(masterPageNameLayout);
bool res = Context.get_headers_footers().write_sectPr(masterPageName, next_page, strm);
bool res = Context.get_headers_footers().write_sectPr(masterPageName, strm);
}
oox::section_context::_section & section = Context.get_section_context().get();
......
......@@ -137,14 +137,7 @@ typedef std::map<std::wstring, oox::text_tracked_context::_state>::iterator map_
int process_paragraph_attr(const paragraph_attrs & Attr, oox::docx_conversion_context & Context)
{
bool in_drawing = false;
if (Context.get_drawing_context().get_current_shape() || Context.get_drawing_context().get_current_frame())
{
in_drawing = true;
}
if (!Attr.text_style_name_.empty())
if (!Attr.text_style_name_.empty())
{
if (style_instance * styleInst =
Context.root()->odf_context().styleContainer().style_by_name(Attr.text_style_name_.style_name(), style_family::Paragraph, Context.process_headers_footers_)
......@@ -187,7 +180,7 @@ int process_paragraph_attr(const paragraph_attrs & Attr, oox::docx_conversion_co
Context.end_automatic_style();
Context.push_text_properties(styleContent->get_style_text_properties());
return 1;
return 1;
}
}
else
......@@ -195,10 +188,9 @@ int process_paragraph_attr(const paragraph_attrs & Attr, oox::docx_conversion_co
const std::wstring id = Context.styles_map_.get( styleInst->name(), styleInst->type() );
Context.output_stream() << L"<w:pPr>";
//todooo причесать
if (!Context.get_section_context().dump_.empty()
&& !Context.get_table_context().in_table()
&& (Context.get_process_note() == oox::docx_conversion_context::noNote)
&& !in_drawing)
if (!Context.get_section_context().dump_.empty() &&
!Context.get_table_context().in_table() &&
(Context.get_process_note() == oox::docx_conversion_context::noNote))
{
if (Context.is_paragraph_header() )
{
......@@ -244,10 +236,9 @@ int process_paragraph_attr(const paragraph_attrs & Attr, oox::docx_conversion_co
}
}
}
if (!Context.get_section_context().dump_.empty()
&& !Context.get_table_context().in_table()
&& (Context.get_process_note() == oox::docx_conversion_context::noNote)
&& !in_drawing)
if (!Context.get_section_context().dump_.empty() &&
!Context.get_table_context().in_table() &&
(Context.get_process_note() == oox::docx_conversion_context::noNote))
{
Context.output_stream() << L"<w:pPr>";
Context.output_stream() << Context.get_section_context().dump_;
......@@ -370,18 +361,18 @@ void paragraph::docx_convert(oox::docx_conversion_context & Context)
{
const std::wstring & styleName = attrs_.text_style_name_.style_name();
bool in_drawing = false;
bool drawing = false;
if (Context.get_drawing_context().get_current_shape() || Context.get_drawing_context().get_current_frame())
{
in_drawing = true;
drawing = true;
}
bool bIsNewParagraph = true;
bool is_empty = content_.empty();
if (Context.get_paragraph_state() && (Context.get_process_note() == oox::docx_conversion_context::noNote) && !in_drawing)
if (Context.get_paragraph_state() && (Context.get_process_note() == oox::docx_conversion_context::noNote) && !drawing)
{//вложеннные элементы ... или после графики embedded_linux_kernel_and_drivers_labs_zh_TW.odt
bIsNewParagraph = false;
......@@ -434,6 +425,8 @@ void paragraph::docx_convert(oox::docx_conversion_context & Context)
Context.remove_page_properties();
Context.add_page_properties(masterPageNameLayout);
Context.set_page_break(true);
is_empty = false;
}
......@@ -460,8 +453,7 @@ void paragraph::docx_convert(oox::docx_conversion_context & Context)
if (Context.get_page_break())
{
if (Context.process_headers_footers_ == false)
//_Wostream << L"<w:lastRenderedPageBreak/>";
_Wostream << L"<w:br w:type=\"page\"/>";
_Wostream << L"<w:lastRenderedPageBreak/>";
Context.set_page_break(false);
}
elm->docx_convert(Context);
......@@ -490,7 +482,7 @@ void paragraph::docx_convert(oox::docx_conversion_context & Context)
is_empty = false;
Context.add_new_run(_T(""));
_Wostream << L"<w:br w:type=\"page\"/>";
_Wostream << L"<w:br w:type=\"page\" />";
Context.finish_run();
}
......@@ -975,39 +967,9 @@ void text_table_index::add_child_element( xml::sax * Reader, const std::wstring
const wchar_t * text_illustration_index::ns = L"text";
const wchar_t * text_illustration_index::name = L"illustration-index";
void text_illustration_index::afterCreate()
{
if (document_context * context = getContext())
{
if (paragraph * lastPar = context->get_last_paragraph())
{
lastPar->set_next_section(true);
}
}
}
void text_illustration_index::afterReadContent()
{
if (document_context * context = getContext())
{
if (paragraph * lastPar = context->get_last_paragraph())
{
lastPar->set_next_end_section(true);
}
}
}
void text_illustration_index::docx_convert(oox::docx_conversion_context & Context)
{
std::wstring current_page_properties = Context.get_page_properties();
Context.get_section_context().add_section(
text_section_attr_.text_name_,
text_section_attr_.text_style_name_.get_value_or(style_ref()).style_name(),
current_page_properties
);
Context.add_page_properties(current_page_properties);
if (text_index_body_)
if (text_index_body_)
text_index_body_->docx_convert(Context);
}
......@@ -1035,77 +997,8 @@ void text_illustration_index::add_child_element( xml::sax * Reader, const std::w
{
CP_CREATE_ELEMENT(text_index_body_);
}
// todooo text-illustration-index-source
}
// text:alphabetical-index
//////////////////////////////////////////////////////////////////////////////////////////////////
const wchar_t * text_alphabetical_index::ns = L"text";
const wchar_t * text_alphabetical_index::name = L"alphabetical-index";
void text_alphabetical_index::afterCreate()
{
if (document_context * context = getContext())
{
if (paragraph * lastPar = context->get_last_paragraph())
{
lastPar->set_next_section(true);
}
}
}
void text_alphabetical_index::afterReadContent()
{
if (document_context * context = getContext())
{
if (paragraph * lastPar = context->get_last_paragraph())
{
lastPar->set_next_end_section(true);
}
}
}
void text_alphabetical_index::docx_convert(oox::docx_conversion_context & Context)
{
std::wstring current_page_properties = Context.get_page_properties();
Context.get_section_context().add_section(
text_section_attr_.text_name_,
text_section_attr_.text_style_name_.get_value_or(style_ref()).style_name(),
current_page_properties
);
Context.add_page_properties(current_page_properties);
if (text_index_body_)
text_index_body_->docx_convert(Context);
}
void text_alphabetical_index::pptx_convert(oox::pptx_conversion_context & Context)
{
if (text_index_body_)
text_index_body_->pptx_convert(Context);
}
std::wostream & text_alphabetical_index::text_to_stream(std::wostream & _Wostream) const
{
CP_SERIALIZE_TEXT(text_index_body_);
return _Wostream;
}
void text_alphabetical_index::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
text_section_attr_.add_attributes( Attributes );
}
void text_alphabetical_index::add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name)
{
if CP_CHECK_NAME(L"text", L"index-body")
{
CP_CREATE_ELEMENT(text_index_body_);
}
// todooo text-alphabetical-index-source
// TODO text-illustration-index-source
}
//--------------------------------------------------------------------------------------------------------
// text:tracked-changes
const wchar_t * text_tracked_changes::ns = L"text";
......
......@@ -360,9 +360,6 @@ public:
static const ElementType type = typeTextIllustrationIndex;
CPDOCCORE_DEFINE_VISITABLE();
virtual void afterCreate();
virtual void afterReadContent();
void docx_convert(oox::docx_conversion_context & Context);
void pptx_convert(oox::pptx_conversion_context & Context) ;
......@@ -380,36 +377,6 @@ public:
};
CP_REGISTER_OFFICE_ELEMENT2(text_illustration_index);
//---------------------------------------------------------------------------------------------------
class text_alphabetical_index : public text_content_impl<text_alphabetical_index>
{
public:
static const wchar_t * ns;
static const wchar_t * name;
static const xml::NodeType xml_type = xml::typeElement;
static const ElementType type = typeTextAlphabeticalIndex;
CPDOCCORE_DEFINE_VISITABLE();
virtual void afterCreate();
virtual void afterReadContent();
void docx_convert(oox::docx_conversion_context & Context);
void pptx_convert(oox::pptx_conversion_context & Context) ;
virtual std::wostream & text_to_stream(std::wostream & _Wostream) const;
private:
virtual void add_attributes( const xml::attributes_wc_ptr & Attributes );
virtual void add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name);
public:
text_section_attr text_section_attr_;
office_element_ptr text_alphabetical_index_source_;
office_element_ptr text_index_body_;
};
CP_REGISTER_OFFICE_ELEMENT2(text_alphabetical_index);
//---------------------------------------------------------------------------------------------------
class text_index_body : public text_content_impl<text_index_body>
......
......@@ -116,7 +116,7 @@ namespace OOX
}
virtual void toXML(NSStringUtils::CStringBuilder& writer) const
{
if(m_oName.IsInit())
if(m_oName.IsInit() && m_arrItems.size() > 0)
{
writer.WriteString(_T("<tableStyle"));
WritingStringNullableAttrEncodeXmlString(L"name", m_oName, m_oName.get());
......@@ -249,4 +249,4 @@ namespace OOX
} //Spreadsheet
} // namespace OOX
#endif // OOX_TABLESTYLES_FILE_INCLUDE_H_
#endif // OOX_TABLESTYLES_FILE_INCLUDE_H_
\ No newline at end of file
......@@ -744,12 +744,13 @@
#define ASC_MENU_EVENT_TYPE_ERROR 500
#define ASC_MENU_EVENT_TYPE_COLOR_SCHEMES 2404 // CAscColorSchemes
#define ASC_MENU_EVENT_TYPE_CHANGE_COLOR_SCHEME 2415 // SET(int)
#define ASC_COAUTH_EVENT_TYPE_PARTICIPANTS_CHANGED 20101
#define ASC_COAUTH_EVENT_TYPE_LOST_CONNECTION 20102
#define ASC_COAUTH_EVENT_TYPE_DROP_CONNECTION 20103
#define ASC_MENU_EVENT_TYPE_COLOR_SCHEMES 2404 // CAscColorSchemes
#define ASC_MENU_EVENT_TYPE_CHANGE_COLOR_SCHEME 2415 // SET(int)
#define ASC_MENU_EVENT_TYPE_AUTH_PARTICIPANTS_CHANGED 2416
#define ASC_MENU_EVENT_TYPE_LOST_CONNECTION 2420
#define ASC_MENU_EVENT_TYPE_DROP_CONNECTION 2421
#define ASC_COAUTH_EVENT_TYPE_INSERT_URL_IMAGE 21000
......
......@@ -46,7 +46,7 @@
//#define ONLINE_WORD_TO_PDF
//#define TO_PDF
#define TO_HTML_RENDERER
//#define ONLY_TEXT
#define ONLY_TEXT
int main(int argc, char *argv[])
{
......@@ -97,7 +97,7 @@ int main(int argc, char *argv[])
//std::wstring sFile = L"D:\\bankomats.xps";
//std::wstring sFile = L"\\\\kirillov8\\_Office\\DJVU\\Основы разработки приложений на платформе Microsoft .NET Framework. Учебный курс Microsoft экзамен 70-536.djvu";
//std::wstring sFile = L"D:\\TESTFILES\\Алгоритмы - построение и анализ.djvu";
std::wstring sFile = L"D:\\knopk5_0.pdf";
std::wstring sFile = L"D:\\TESTFILES\\PDF 1-7 (756p).pdf";
std::wstring sDst = L"D:\\test\\Document";
//std::wstring sFile = L"/home/oleg/activex/Android intro(2p).pdf";
......@@ -170,7 +170,5 @@ int main(int argc, char *argv[])
oRenderer.SaveToFile(L"/home/oleg/activex/1/1.pdf");
#endif
RELEASEOBJECT(pReader);
return 0;
}
......@@ -13,28 +13,19 @@ ifeq ($(OS),Windows_NT)
endif
else
UNAME_S := $(shell uname -s)
UNAME_P := $(shell uname -p)
ifeq ($(UNAME_S),Linux)
PLATFORM := linux
SHARED_EXT := .so*
SHELL_EXT := .sh
LIB_EXT := .a
MAKE := make -j $(shell grep -c ^processor /proc/cpuinfo)
ifeq ($(UNAME_P),x86_64)
ARCHITECTURE := 64
endif
ifneq ($(filter %86,$(UNAME_P)),)
ARCHITECTURE := 32
endif
endif
ifeq ($(UNAME_S),Darwin)
PLATFORM := mac
UNAME_P := $(shell uname -p)
ifeq ($(UNAME_P),x86_64)
ARCHITECTURE := 64
SHARED_EXT := .dylib*
SHELL_EXT := .sh
LIB_EXT := .a
MAKE := make -j $(shell sysctl -n hw.ncpu)
endif
ifneq ($(filter %86,$(UNAME_P)),)
ARCHITECTURE := 32
endif
endif
......
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