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

git-svn-id:...

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@52861 954022d7-b5bf-4e40-9824-e11837661b57
parent 3102d178
......@@ -1406,6 +1406,14 @@
RelativePath=".\src\docx\mediaitems_utils.h"
>
</File>
<File
RelativePath=".\src\docx\oox_conversion_context.cpp"
>
</File>
<File
RelativePath=".\src\docx\oox_conversion_context.h"
>
</File>
<File
RelativePath=".\src\docx\oox_drawing.cpp"
>
......@@ -1430,10 +1438,6 @@
RelativePath=".\src\docx\oox_package.h"
>
</File>
<File
RelativePath=".\src\docx\ooxconversioncontext.h"
>
</File>
<File
RelativePath=".\src\docx\ooxtablerowspanned.h"
>
......
......@@ -52,7 +52,8 @@ void docx_conversion_context::add_element_to_run()
odf::style_text_properties_ptr textProp = this->current_text_properties();
get_styles_context().start();
textProp->content().docx_convert(*this);
get_styles_context().write_text_style( *this );
get_styles_context().docx_serialize_text_style( output_stream());
}
}
......@@ -505,21 +506,45 @@ void docx_conversion_context::start_process_style_content()
styles_context_.start();
}
void docx_conversion_context::process_page_properties()
void docx_conversion_context::process_page_properties(std::wostream & strm)
{
if (is_next_dump_page_properties())
{
const std::wstring pageProperties = get_page_properties();
root()->odf_context().pageLayoutContainer().page_layout_by_name(pageProperties)->docx_convert(*this);
root()->odf_context().pageLayoutContainer().page_layout_by_name(pageProperties)->docx_convert_serialize(strm,*this);
}
}
void docx_conversion_context::end_process_style_content()
{
styles_context_.write_paragraph_style(*this, automatic_parent_style_);
docx_serialize_paragraph_style(output_stream(), automatic_parent_style_);
if (automatic_parent_style_.empty())
styles_context_.write_text_style(*this);
styles_context_.docx_serialize_text_style( output_stream());
}
void docx_conversion_context::docx_serialize_paragraph_style(std::wostream & strm, const std::wstring & ParentId)
{
std::wstringstream & paragraph_style = get_styles_context().paragraph_style();
if (!paragraph_style.str().empty() || !ParentId.empty())
{
CP_XML_WRITER(strm)
{
CP_XML_NODE(L"w:pPr")
{
process_page_properties(CP_XML_STREAM());//????????
if (!ParentId.empty())
{
CP_XML_NODE(L"w:pStyle")
{
CP_XML_ATTR(L"w:val", ParentId);
}
}
CP_XML_STREAM() << paragraph_style.str();
docx_serialize_list_properties(CP_XML_STREAM());
}
}
}
}
void docx_conversion_context::start_automatic_style(const std::wstring & ParentId)
......@@ -609,65 +634,6 @@ bool docx_conversion_context::is_next_dump_page_properties()
}
void styles_context::start()
{
text_style_.str( std::wstring() );
text_style_.clear();
paragraph_style_.str( std::wstring() );
paragraph_style_.clear();
table_style_.str( std::wstring() );
table_style_.clear();
}
std::wostream & styles_context::text_style()
{
return text_style_;
}
std::wostream & styles_context::paragraph_style()
{
return paragraph_style_;
}
std::wostream & styles_context::table_style()
{
return table_style_;
}
void styles_context::write_text_style(docx_conversion_context & Context)
{
std::wostream & _Wostream = Context.output_stream();
if (!text_style_.str().empty())
_Wostream << L"<w:rPr>" << text_style_.str() << L"</w:rPr>";
}
void styles_context::write_paragraph_style(docx_conversion_context & Context, const std::wstring & ParentId)
{
std::wostream & _Wostream = Context.output_stream();
if (!paragraph_style_.str().empty() || !ParentId.empty())
{
_Wostream << L"<w:pPr>";
Context.process_page_properties();
if (!ParentId.empty())
_Wostream << L"<w:pStyle w:val=\"" << ParentId << "\" />";
_Wostream << paragraph_style_.str();
Context.write_list_properties();
_Wostream << L"</w:pPr>";
}
}
void styles_context::write_table_style(docx_conversion_context & Context)
{
std::wostream & _Wostream = Context.output_stream();
if (!table_style_.str().empty())
{
_Wostream << L"<w:tblPr>";
_Wostream << table_style_.str();
_Wostream << L"</w:tblPr>";
}
}
void docx_conversion_context::start_text_list_style(const std::wstring & StyleName)
{
......@@ -743,18 +709,28 @@ void docx_conversion_context::end_list_item()
{
}
void docx_conversion_context::write_list_properties()
void docx_conversion_context::docx_serialize_list_properties(std::wostream & strm)
{
if (!list_style_stack_.empty())
{
if (first_element_list_item_)
{
const int id = root()->odf_context().listStyleContainer().id_by_name( current_list_style() );
//const int id = list_context_.id_by_name( current_list_style() );
output_stream() << L"<w:numPr>";
output_stream() << L"<w:ilvl w:val=\"" << (list_style_stack_.size() - 1) << "\" />";
output_stream() << L"<w:numId w:val=\"" << id << "\" />";
output_stream() << L"</w:numPr>";
CP_XML_WRITER(strm)
{
CP_XML_NODE(L"w:numPr")
{
CP_XML_NODE(L"w:ilvl")
{
CP_XML_ATTR(L"w:val", (list_style_stack_.size() - 1));
}
CP_XML_NODE(L"w:numId")
{
CP_XML_ATTR(L"w:val", id );
}
}
}
first_element_list_item_ = false;
}
}
......
......@@ -12,7 +12,7 @@
#include "docx_table_context.h"
#include "../odf/noteclass.h"
#include "ooxconversioncontext.h"
#include "oox_conversion_context.h"
#include "oox_chart_context.h"
namespace cpdoccore {
......@@ -83,24 +83,6 @@ private:
class styles_context : boost::noncopyable
{
public:
void start();
std::wostream & text_style();
std::wostream & paragraph_style();
std::wostream & table_style();
void write_text_style(docx_conversion_context & Context);
void write_paragraph_style(docx_conversion_context & Context, const std::wstring & ParentId);
void write_table_style(docx_conversion_context & Context);
private:
std::wstringstream text_style_;
std::wstringstream paragraph_style_;
std::wstringstream table_style_;
};
class drawing_context : boost::noncopyable
{
public:
......@@ -409,7 +391,7 @@ public:
void process_fonts();
void process_list_styles();
void process_page_properties();
void process_page_properties(std::wostream & strm);
void process_headers_footers();
void process_comments();
......@@ -456,7 +438,10 @@ public:
const std::wstring current_list_style() const;
void start_list_item(bool restart = false);
void end_list_item();
void write_list_properties();
void docx_serialize_list_properties(std::wostream & strm);
void docx_serialize_paragraph_style(std::wostream & strm, const std::wstring & ParentId);
std::wstring find_list_rename(const std::wstring & ListStyleName) const;
drawing_context & get_drawing_context() { return drawing_context_; }
......
#include "precompiled_cpodf.h"
#include "oox_conversion_context.h"
#include <boost/foreach.hpp>
#include <iostream>
#include <cpdoccore/xml/utils.h>
#include <cpdoccore/odf/odf_document.h>
#include <cpdoccore/xml/simple_xml_writer.h>
namespace cpdoccore {
namespace oox {
void styles_context::start()
{
text_style_.str( std::wstring() );
text_style_.clear();
paragraph_style_.str( std::wstring() );
paragraph_style_.clear();
table_style_.str( std::wstring() );
table_style_.clear();
list_style_.str( std::wstring() );
list_style_.clear();
}
std::wostream & styles_context::text_style()
{
return text_style_;
}
std::wstringstream & styles_context::paragraph_style()
{
return paragraph_style_;
}
std::wostream & styles_context::table_style()
{
return table_style_;
}
std::wostream & styles_context::list_style()
{
return list_style_;
}
void styles_context::docx_serialize_text_style(std::wostream & strm)
{
if (!text_style_.str().empty())
{
CP_XML_WRITER(strm)
{
CP_XML_NODE(L"w:rPr")
{
CP_XML_STREAM() << text_style_.str();
}
}
}
}
void styles_context::docx_serialize_table_style(std::wostream & strm)
{
if (!table_style_.str().empty())
{
CP_XML_WRITER(strm)
{
CP_XML_NODE(L"w:tblPr")
{
CP_XML_STREAM() << table_style_.str();
}
}
}
}
}
}
\ No newline at end of file
#ifndef _CPDOCCORE_OOX_CONVERSION_CONTEXT_H_INCLUDED_
#define _CPDOCCORE_OOX_CONVERSION_CONTEXT_H_INCLUDED_
#ifdef _MSC_VER
#pragma once
#endif
#include <iosfwd>
#include <boost/shared_ptr.hpp>
......@@ -30,7 +25,27 @@ private:
std::wostream & stream_;
};
class styles_context : boost::noncopyable
{
public:
void start();
std::wostream & text_style();
std::wstringstream & paragraph_style();
std::wostream & table_style();
std::wostream & list_style();
void docx_serialize_text_style(std::wostream & strm);
void docx_serialize_table_style(std::wostream & strm);
private:
std::wstringstream list_style_;
std::wstringstream text_style_;
std::wstringstream paragraph_style_;
std::wstringstream table_style_;
};
}
}
#endif
......@@ -31,9 +31,10 @@ namespace package
pptx_conversion_context::
pptx_conversion_context(::cpdoccore::oox::package::pptx_document * outputDocument,
::cpdoccore::odf::odf_document * odfDocument): output_document_(outputDocument),
odf_document_(odfDocument),
pptx_text_context_(odf_document_->odf_context())
::cpdoccore::odf::odf_document * odfDocument):
output_document_(outputDocument)
,odf_document_(odfDocument)
,pptx_text_context_(odf_document_->odf_context(),*this)
,pptx_slide_context_(*this/*, pptx_text_context_*/)
{
}
......
......@@ -2,7 +2,6 @@
#include <boost/noncopyable.hpp>
#include <boost/shared_ptr.hpp>
#include "ooxconversioncontext.h"
#include "pptx_text_context.h"
#include "pptx_slide_context.h"
......
......@@ -33,8 +33,6 @@ void pptx_serialize_text(std::wostream & strm, const std::vector<odf::_property>
CP_XML_NODE(L"p:txBody")
{
CP_XML_NODE(L"a:bodyPr");
CP_XML_NODE(L"a:lstStyle");
if (strTextContent)
{
......
......@@ -310,18 +310,9 @@ void pptx_xml_presentation::write_to(std::wostream & strm)
CP_XML_STREAM() << notesSlidesSize_.str();
CP_XML_NODE(L"p:defaultTextStyle")
CP_XML_NODE(L"p:defaultTextStyle")//??
{
CP_XML_NODE(L"a:defPPr");
//CP_XML_NODE(L"a:lvl1pPr");
//CP_XML_NODE(L"a:lvl2pPr");
//CP_XML_NODE(L"a:lvl3pPr");
//CP_XML_NODE(L"a:lvl4pPr");
//CP_XML_NODE(L"a:lvl5pPr");
//CP_XML_NODE(L"a:lvl6pPr");
//CP_XML_NODE(L"a:lvl7pPr");
//CP_XML_NODE(L"a:lvl8pPr");
//CP_XML_NODE(L"a:lvl9pPr");
}
}
}
......
......@@ -22,8 +22,10 @@ namespace oox {
class pptx_text_context::Impl: boost::noncopyable
{
public:
Impl(odf::odf_read_context & odf_context_);
Impl(odf::odf_read_context & odf_context_, pptx_conversion_context & pptx_context_);
public:
styles_context & get_styles_context() { return styles_context_; }
void add_text(const std::wstring & text);
void start_paragraph(const std::wstring & styleName);
......@@ -33,9 +35,6 @@ public:
void end_span();
std::wstring end_span2();
void start_comment_content();
std::wstring end_comment_content();
void start_drawing_content();
std::wstring end_drawing_content();
......@@ -51,15 +50,16 @@ public:
void start_list_item(bool restart = false);
void end_list_item();
private:
styles_context styles_context_;
odf::odf_read_context & odf_context_ ;
std::wstring hyperlink_hId;
bool in_comment;
bool in_span;
bool in_paragraph;
odf::styles_container * local_styles_ptr_;
void write_rPr(std::wostream & strm);
......@@ -85,15 +85,19 @@ private:
//
boost::unordered_map<std::wstring, std::wstring> list_style_renames_;
void write_list_styles(std::wostream & strm);
void write_list_properties(std::wostream & strm);
std::wstring find_list_rename(const std::wstring & ListStyleName);
std::wstring current_list_style();
///////////////////////////
pptx_conversion_context & pptx_context_;
};
pptx_text_context::Impl::Impl(odf::odf_read_context & odf_contxt_): paragraphs_cout_(0),odf_context_(odf_contxt_),
in_comment(false),in_paragraph(false),in_span(false)
pptx_text_context::Impl::Impl(odf::odf_read_context & odf_contxt_, pptx_conversion_context & pptx_contxt_):
odf_context_(odf_contxt_), pptx_context_(pptx_contxt_),
paragraphs_cout_(0),in_paragraph(false),in_span(false)
{
new_list_style_number_=0;
}
......@@ -193,19 +197,20 @@ void pptx_text_context::Impl::ApplyTextProperties(std::wstring style,odf::text_f
void pptx_text_context::Impl::write_pPr(std::wostream & strm)
{
CP_XML_WRITER(strm)
{
CP_XML_NODE(L"a:pPr")
{
//...
if (styles_paragraph_.length()>0)
{
if (odf::style_instance * styleInst= odf_context_.styleContainer().style_by_name(styles_paragraph_, odf::style_family::Paragraph,false) )
{
CP_XML_WRITER(strm)
{
CP_XML_NODE(L"w:pPr")
{
//...
write_list_properties(strm);
}
}
write_list_properties(strm);
}
}
}
......@@ -325,19 +330,7 @@ void pptx_text_context::Impl::dump_run()
hyperlink_hId =L"";
}
void pptx_text_context::Impl::start_comment_content()
{
paragraphs_cout_ = 0;
run_.str(std::wstring());
text_.str(std::wstring());
paragraph_.str(std::wstring());
styles_paragraph_ = L"";
styles_span_ = L"";
in_comment = true;
}
void pptx_text_context::Impl::start_drawing_content()
{
paragraphs_cout_ = 0;
......@@ -348,26 +341,17 @@ void pptx_text_context::Impl::start_drawing_content()
styles_paragraph_ = L"";
styles_span_ = L"";
}
std::wstring pptx_text_context::Impl::end_comment_content()
{
std::wstring comment = dump_paragraph();
paragraphs_cout_ = 0;
get_styles_context().start();
run_.str(std::wstring());
paragraph_.str(std::wstring());
text_.str(std::wstring());
styles_paragraph_ = L"";
styles_span_=L"";
in_comment = false;
return comment;
}
std::wstring pptx_text_context::Impl::end_drawing_content()
{
std::wstring draw_text= dump_paragraph();
std::wstringstream str_styles;
write_list_styles(str_styles);
str_styles << dump_paragraph();
paragraphs_cout_ = 0;
......@@ -378,7 +362,7 @@ std::wstring pptx_text_context::Impl::end_drawing_content()
styles_paragraph_ = L"";
styles_span_=L"";
return draw_text;
return str_styles.str();
}
void pptx_text_context::Impl::start_list_item(bool restart)
{
......@@ -415,7 +399,7 @@ void pptx_text_context::Impl::start_list(const std::wstring & StyleName, bool Co
void pptx_text_context::Impl::end_list()
{
list_style_stack_.pop_back();
///list_style_stack_.pop_back(); .. lstStyles -
}
std::wstring pptx_text_context::Impl::current_list_style()
......@@ -458,11 +442,47 @@ void pptx_text_context::Impl::write_list_properties(std::wostream & strm)
}
}
}
void pptx_text_context::Impl::write_list_styles(std::wostream & strm)//defaults style paragraph & lists
{
odf::list_style_container & list_styles = odf_context_.listStyleContainer();
if (list_styles.empty())
return;
get_styles_context().start();
CP_XML_WRITER(strm)
{
CP_XML_NODE(L"a:lstStyle")
{
//defPPr
//...
//list levels 0 - 8
BOOST_FOREACH(std::wstring & st_name, list_style_stack_ )
{
odf::text_list_style * s = list_styles.list_style_by_name(st_name);
BOOST_FOREACH(odf::office_element_ptr & elm, s->get_content())
{
elm->pptx_convert(pptx_context_);
}
}
CP_XML_STREAM() << get_styles_context().list_style();
}
}
list_style_stack_.clear();
}
///////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////
pptx_text_context::pptx_text_context(odf::odf_read_context & odf_context_): impl_(new pptx_text_context::Impl(odf_context_))
pptx_text_context::pptx_text_context(odf::odf_read_context & odf_context_, pptx_conversion_context & pptx_context_):
impl_(new pptx_text_context::Impl(odf_context_,pptx_context_))
{}
......@@ -520,18 +540,6 @@ void pptx_text_context::end_list()
{
return impl_->end_list();
}
std::wstring pptx_text_context::end_comment_content()
{
return impl_->end_comment_content();
}
void pptx_text_context::start_comment_content()
{
return impl_->start_comment_content();
}
void pptx_text_context::start_drawing_content()
{
return impl_->start_drawing_content();
......@@ -549,7 +557,10 @@ std::wstring pptx_text_context::end_drawing_content()
return impl_->end_drawing_content();
}
styles_context & pptx_text_context::get_styles_context()
{
return impl_->get_styles_context() ;
}
}
}
......@@ -7,6 +7,7 @@
#include <cpdoccore/xml/attributes.h>
#include "oox_conversion_context.h"
namespace cpdoccore {
namespace odf
......@@ -22,7 +23,7 @@ class pptx_conversion_context;
class pptx_text_context: boost::noncopyable
{
public:
pptx_text_context(odf::odf_read_context & odf_context_);
pptx_text_context(odf::odf_read_context & odf_context_, pptx_conversion_context & pptx_contxt_);
~pptx_text_context();
void set_local_styles_container(odf::styles_container* local_styles_);
......@@ -53,7 +54,10 @@ public:
void start_list_item(bool restart = false);
void end_list_item();
styles_context & get_styles_context();
private:
class Impl;
_CP_SCOPED_PTR(Impl) impl_;
......
......@@ -3,7 +3,7 @@
#include <boost/noncopyable.hpp>
#include <boost/shared_ptr.hpp>
#include "ooxconversioncontext.h"
#include "oox_conversion_context.h"
#include "xlsx_textcontext.h"
#include "xlsx_tablecontext.h"
......
......@@ -122,7 +122,6 @@ void list_header::docx_convert(oox::docx_conversion_context & Context)
void list_header::pptx_convert(oox::pptx_conversion_context & Context)
{
bool restart = false;
//Context.start_list_item(restart);
//
......@@ -131,7 +130,6 @@ void list_header::pptx_convert(oox::pptx_conversion_context & Context)
elm->pptx_convert(Context);
}
//Context.end_list_item();
}
......
......@@ -282,7 +282,7 @@ style_page_layout_properties * page_layout_instance::properties() const
return dynamic_cast<style_page_layout_properties *>(style_page_layout_->style_page_layout_properties_.get());
}
void page_layout_instance::docx_convert(oox::docx_conversion_context & Context)
void page_layout_instance::docx_convert_serialize(std::wostream & strm, oox::docx_conversion_context & Context)
{
const style_header_style * headerStyle = dynamic_cast<style_header_style *>(style_page_layout_->style_header_style_.get());
const style_footer_style * footerStyle = dynamic_cast<style_footer_style *>(style_page_layout_->style_footer_style_.get());
......@@ -306,7 +306,7 @@ void page_layout_instance::docx_convert(oox::docx_conversion_context & Context)
Context.get_header_footer_context().set_footer(bottom);
}
properties()->docx_convert(Context);
properties()->docx_convert_serialize(strm, Context);
}
void page_layout_instance::pptx_convert(oox::pptx_conversion_context & Context)
{
......
......@@ -155,7 +155,7 @@ public:
const std::wstring & name() const;
style_page_layout_properties * properties() const;
void docx_convert(oox::docx_conversion_context & Context);
void docx_convert_serialize(std::wostream & strm, oox::docx_conversion_context & Context);
void pptx_convert(oox::pptx_conversion_context & Context);
const style_page_layout * style_page_layout_;
......
......@@ -74,7 +74,9 @@ void office_body::docx_convert(oox::docx_conversion_context & Context)
Context.get_headers_footers().set_enable_write(true);
if (page_layout_instance * lastPageLayout = Context.root()->odf_context().pageLayoutContainer().page_layout_by_name(Context.get_page_properties()))
lastPageLayout->docx_convert(Context);
{
lastPageLayout->docx_convert_serialize(Context.output_stream(), Context);
}
Context.end_body();
}
......
......@@ -140,7 +140,7 @@ std::wstring process_margin(const _CP_OPT(length_or_percent) & margin, double Mu
void paragraph_format_properties::docx_convert(oox::docx_conversion_context & Context)
{
std::wostream & _pPr = Context.get_styles_context().paragraph_style();
std::wstringstream & _pPr = Context.get_styles_context().paragraph_style();
if (style_writing_mode_)
{
......@@ -450,7 +450,7 @@ void paragraph_format_properties::docx_convert(oox::docx_conversion_context & Co
void style_tab_stops::docx_convert(oox::docx_conversion_context & Context)
{
std::wostream & _pPr = Context.get_styles_context().paragraph_style();
std::wstringstream & _pPr = Context.get_styles_context().paragraph_style();
if (style_tab_stops_.size())
{
......@@ -463,7 +463,8 @@ void style_tab_stops::docx_convert(oox::docx_conversion_context & Context)
void style_tab_stop::docx_convert(oox::docx_conversion_context & Context)
{
std::wostream & _pPr = Context.get_styles_context().paragraph_style();
std::wstringstream & _pPr = Context.get_styles_context().paragraph_style();
_pPr << L"<w:tab ";
_pPr << L"w:pos=\"" << (int)( 20.0 * style_position_.get_value_unit(length::pt) ) << "\" ";
......
......@@ -301,10 +301,14 @@ int text_format_properties_content::process_font_style(const optional<font_style
}
return 0;
}
void text_format_properties_content::pptx_convert(oox::pptx_conversion_context & Context)
{
std::wostream & _rPr = Context.get_text_context().get_styles_context().text_style();
std::wstringstream & _pPr = Context.get_text_context().get_styles_context().paragraph_style();
}
void text_format_properties_content::docx_convert(oox::docx_conversion_context & Context)
{
std::wostream & _rPr = Context.get_styles_context().text_style();
std::wostream & _pPr = Context.get_styles_context().paragraph_style();
// to paragraph properties
......@@ -316,6 +320,7 @@ void text_format_properties_content::docx_convert(oox::docx_conversion_context &
_pPr << L"<w:suppressAutoHyphens w:val=\"true\" />";
}
std::wostream & _rPr = Context.get_styles_context().text_style();
if (Context.rtl())
{
_rPr << L"<w:rtl w:val=\"true\" />";
......@@ -927,6 +932,11 @@ void style_text_properties::docx_convert(oox::docx_conversion_context & Context)
text_format_properties_content_.docx_convert(Context);
}
void style_text_properties::pptx_convert(oox::pptx_conversion_context & Context)
{
text_format_properties_content_.pptx_convert(Context);
}
}
}
......@@ -46,6 +46,7 @@ public:
void add_attributes( const xml::attributes_wc_ptr & Attributes );
void docx_convert(oox::docx_conversion_context & Context);
void pptx_convert(oox::pptx_conversion_context & Context);
void apply_from(const text_format_properties_content & Other);
void apply_to(std::vector<_property> & properties);
......@@ -283,6 +284,8 @@ public:
CPDOCCORE_DEFINE_VISITABLE();
void docx_convert(oox::docx_conversion_context & Context);
void pptx_convert(oox::pptx_conversion_context & Context);
const text_format_properties_content & content() const { return text_format_properties_content_; } ;
text_format_properties_content & content() { return text_format_properties_content_; } ;
......
......@@ -772,10 +772,8 @@ std::wstring process_page_margin(const _CP_OPT(length_or_percent) & Val, const _
}
void style_page_layout_properties_attlist::docx_convert(oox::docx_conversion_context & Context)
void style_page_layout_properties_attlist::docx_convert_serialize(std::wostream & strm, oox::docx_conversion_context & Context)
{
std::wostream & strm = Context.output_stream();
if (fo_page_width_ || fo_page_height_ || style_print_orientation_)
{
std::wstring w_w = L"";
......@@ -863,12 +861,12 @@ void style_page_layout_properties_attlist::pptx_convert(oox::pptx_conversion_con
std::wstring w_orient = L"custom";
//if (w && h)
//{
// double ratio = (double)w/(double)h;
// if (abs(ratio - 16./9.)<0.01) w_orient = L"screen16x9";
// if (abs(ratio - 4./3.)<0.01) w_orient = L"screen4x3";
//}
if (w && h)
{
double ratio = (double)w/(double)h;
if (abs(ratio - 16./9.)<0.01) w_orient = L"screen16x9";
if (abs(ratio - 4./3.)<0.01) w_orient = L"screen4x3";
}
strm << L"<p:sldSz ";
if (!w_h.empty())
......@@ -925,7 +923,8 @@ void style_page_layout_properties::add_child_element( xml::sax * Reader, const :
{
style_page_layout_properties_elements_.add_child_element(Reader, Ns, Name, getContext());
}
void style_page_layout_properties::docx_convert(oox::docx_conversion_context & Context)
void style_page_layout_properties::docx_convert_serialize(std::wostream & strm, oox::docx_conversion_context & Context)
{
if (Context.get_drawing_context().get_current_level()>0) return;
......@@ -936,12 +935,16 @@ void style_page_layout_properties::docx_convert(oox::docx_conversion_context & C
return;
}
std::wostream & strm = Context.output_stream();
strm << L"<w:sectPr>";
CP_XML_WRITER(strm)
{
CP_XML_NODE(L"w:sectPr")
{
if (!Context.get_section_context().empty())
{
strm << L"<w:type w:val=\"continuous\" />";
CP_XML_NODE(L"w:type")
{
CP_XML_ATTR(L"w:val","continuous");
}
const std::wstring & secStyleName = Context.get_section_context().get().Style;
if (const style_instance * secStyle =
Context.root()->odf_context().styleContainer().style_by_name(secStyleName, style_family::Section,Context.process_headers_footers_))
......@@ -954,7 +957,13 @@ void style_page_layout_properties::docx_convert(oox::docx_conversion_context & C
{
if (columns->fo_column_count_ && *columns->fo_column_count_ > 1)
{
strm << L"<w:cols w:equalWidth=\"true\" w:num=\"" << *columns->fo_column_count_ << L"\" w:sep=\"true\" w:space=\"0\" />";
CP_XML_NODE(L"w:cols")
{
CP_XML_ATTR(L"w:equalWidth", L"true");
CP_XML_ATTR(L"w:num", *columns->fo_column_count_);
CP_XML_ATTR(L"w:sep",true);
CP_XML_ATTR(L"w:space",0);
}
}
}
}
......@@ -963,12 +972,13 @@ void style_page_layout_properties::docx_convert(oox::docx_conversion_context & C
}
else
{
if (!Context.get_section_context().get_after_section())
CP_XML_NODE(L"w:type")
{
strm << L"<w:type w:val=\"nextPage\" />";
}
if (!Context.get_section_context().get_after_section())
CP_XML_ATTR(L"w:val", L"nextPage");
else
strm << L"<w:type w:val=\"continuous\" />";
CP_XML_ATTR(L"w:val", L"continuous");
}
}
{
......@@ -983,10 +993,9 @@ void style_page_layout_properties::docx_convert(oox::docx_conversion_context & C
bool res = Context.get_headers_footers().write_sectPr(masterPageName, strm);
}
}
style_page_layout_properties_attlist_.docx_convert(Context);
strm << L"</w:sectPr>";
style_page_layout_properties_attlist_.docx_convert_serialize(strm, Context);
}
}
}
void style_page_layout_properties::pptx_convert(oox::pptx_conversion_context & Context)
{
......
......@@ -792,7 +792,7 @@ class style_page_layout_properties_attlist
public:
void add_attributes( const xml::attributes_wc_ptr & Attributes );
void docx_convert(oox::docx_conversion_context & Context);
void docx_convert_serialize(std::wostream & strm, oox::docx_conversion_context & Context);
void pptx_convert(oox::pptx_conversion_context & Context);
public:
......@@ -934,7 +934,7 @@ public:
static const ElementType type = typeStylePageLayout;
CPDOCCORE_DEFINE_VISITABLE();
void docx_convert(oox::docx_conversion_context & Context);
void docx_convert_serialize(std::wostream & strm, oox::docx_conversion_context & Context);
void pptx_convert(oox::pptx_conversion_context & Context);
const style_page_layout_properties_attlist & get_style_page_layout_properties_attlist() const
......
This diff is collapsed.
#ifndef _CPDOCCORE_ODF_OFFCIE_STYLES_LIST_H_
#define _CPDOCCORE_ODF_OFFCIE_STYLES_LIST_H_
#pragma once
#include <iosfwd>
#include <string>
......@@ -170,6 +169,7 @@ public:
CPDOCCORE_DEFINE_VISITABLE();
void docx_convert(oox::docx_conversion_context & Context);
void pptx_convert(oox::pptx_conversion_context & Context);
private:
virtual void add_attributes( const xml::attributes_wc_ptr & Attributes );
......@@ -216,6 +216,7 @@ public:
CPDOCCORE_DEFINE_VISITABLE();
void docx_convert(oox::docx_conversion_context & Context) ;
void pptx_convert(oox::pptx_conversion_context & Context) ;
private:
virtual void add_attributes( const xml::attributes_wc_ptr & Attributes );
......@@ -233,5 +234,3 @@ CP_REGISTER_OFFICE_ELEMENT2(text_list_level_style_bullet);
} }
#endif
......@@ -127,7 +127,7 @@ void table_table::docx_convert(oox::docx_conversion_context & Context)
if (inst && inst->content())
inst->content()->docx_convert(Context);
Context.get_styles_context().write_table_style(Context);
Context.get_styles_context().docx_serialize_table_style(_Wostream);
_Wostream << L"<w:tblGrid>";
table_columns_and_groups_.docx_convert(Context);
......
......@@ -102,7 +102,6 @@ void process_paragraph_drop_cap_attr(const paragraph_attrs & Attr, oox::docx_con
int process_paragraph_attr(const paragraph_attrs & Attr, oox::docx_conversion_context & Context)
{
std::wostream & _Wostream = Context.output_stream();
if (!Attr.text_style_name_.empty())
{
if (style_instance * styleInst
......@@ -129,10 +128,11 @@ int process_paragraph_attr(const paragraph_attrs & Attr, oox::docx_conversion_co
else
{
const std::wstring id = Context.get_style_map().get( styleInst->name(), styleInst->type() );
std::wostream & _Wostream = Context.output_stream();
_Wostream << L"<w:pPr>";
Context.process_page_properties();
Context.process_page_properties(_Wostream);
_Wostream << L"<w:pStyle w:val=\"" << id << L"\" />";
Context.write_list_properties();
Context.docx_serialize_list_properties(_Wostream);
_Wostream << L"</w:pPr>";
return 2;
}
......
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