This commit is contained in:
Elena.Subbotina
2023-10-04 20:29:20 +03:00
parent 83f280d739
commit aa80101cf6
7 changed files with 192 additions and 157 deletions

View File

@ -1820,7 +1820,7 @@ namespace SimpleTypes
{ {
relfromvBottomMargin = 0, relfromvBottomMargin = 0,
relfromvInsideMargin = 1, relfromvInsideMargin = 1,
relfromvLine = 2, relfromvLine = 2,
relfromvMargin = 3, relfromvMargin = 3,
relfromvOutsideMargin = 4, relfromvOutsideMargin = 4,
relfromvPage = 5, relfromvPage = 5,

View File

@ -3218,7 +3218,7 @@ void DocxConverter::convert(OOX::Logic::CDrawing *oox_drawing)
} }
odt_context->end_drawing_context(); odt_context->end_drawing_context();
} }
void DocxConverter::convert(OOX::Drawing::CAnchor *oox_anchor) void DocxConverter::convert(OOX::Drawing::CAnchor* oox_anchor)
{ {
if (oox_anchor == NULL)return; if (oox_anchor == NULL)return;
@ -3230,18 +3230,18 @@ void DocxConverter::convert(OOX::Drawing::CAnchor *oox_anchor)
width = oox_anchor->m_oExtent->m_oCx.ToPoints(); width = oox_anchor->m_oExtent->m_oCx.ToPoints();
height = oox_anchor->m_oExtent->m_oCy.ToPoints(); height = oox_anchor->m_oExtent->m_oCy.ToPoints();
} }
if (oox_anchor->m_oDistL.IsInit())odt_context->drawing_context()->set_margin_left (oox_anchor->m_oDistL->ToPoints()); if (oox_anchor->m_oDistL.IsInit())odt_context->drawing_context()->set_margin_left(oox_anchor->m_oDistL->ToPoints());
if (oox_anchor->m_oDistT.IsInit())odt_context->drawing_context()->set_margin_top (oox_anchor->m_oDistT->ToPoints()); if (oox_anchor->m_oDistT.IsInit())odt_context->drawing_context()->set_margin_top(oox_anchor->m_oDistT->ToPoints());
if (oox_anchor->m_oDistR.IsInit())odt_context->drawing_context()->set_margin_right (oox_anchor->m_oDistR->ToPoints()); if (oox_anchor->m_oDistR.IsInit())odt_context->drawing_context()->set_margin_right(oox_anchor->m_oDistR->ToPoints());
if (oox_anchor->m_oDistB.IsInit())odt_context->drawing_context()->set_margin_bottom (oox_anchor->m_oDistB->ToPoints()); if (oox_anchor->m_oDistB.IsInit())odt_context->drawing_context()->set_margin_bottom(oox_anchor->m_oDistB->ToPoints());
odt_context->drawing_context()->set_drawings_rect(x, y, width, height); odt_context->drawing_context()->set_drawings_rect(x, y, width, height);
_CP_OPT(int) anchor_type_x, anchor_type_y; _CP_OPT(int) anchor_type_x, anchor_type_y;
bool bBackground = oox_anchor->m_oBehindDoc.IsInit() ? oox_anchor->m_oBehindDoc->ToBool(): false; bool bBackground = oox_anchor->m_oBehindDoc.IsInit() ? oox_anchor->m_oBehindDoc->ToBool() : false;
bool bThrough = oox_anchor->m_oAllowOverlap.IsInit() ? oox_anchor->m_oAllowOverlap->ToBool(): false; bool bThrough = oox_anchor->m_oAllowOverlap.IsInit() ? oox_anchor->m_oAllowOverlap->ToBool() : false;
if (oox_anchor->m_oPositionV.IsInit() && oox_anchor->m_oPositionV->m_oRelativeFrom.IsInit()) if (oox_anchor->m_oPositionV.IsInit() && oox_anchor->m_oPositionV->m_oRelativeFrom.IsInit())
{ {
@ -3249,16 +3249,25 @@ void DocxConverter::convert(OOX::Drawing::CAnchor *oox_anchor)
odt_context->drawing_context()->set_vertical_rel(vert_rel); odt_context->drawing_context()->set_vertical_rel(vert_rel);
if ( oox_anchor->m_oPositionV->m_oAlign.IsInit()) if (oox_anchor->m_oPositionV->m_oAlign.IsInit())
odt_context->drawing_context()->set_vertical_pos(oox_anchor->m_oPositionV->m_oAlign->GetValue()); odt_context->drawing_context()->set_vertical_pos(oox_anchor->m_oPositionV->m_oAlign->GetValue());
else if (oox_anchor->m_oPositionV->m_oPosOffset.IsInit()) else if (oox_anchor->m_oPositionV->m_oPosOffset.IsInit())
{ {
switch(vert_rel) // relfromvBottomMargin = 0,
// relfromvInsideMargin = 1,
// relfromvLine = 2,
// relfromvMargin = 3,
// relfromvOutsideMargin = 4,
// relfromvPage = 5,
// relfromvParagraph = 6,
// relfromvTopMargin = 7
switch (vert_rel)
{ {
case 3: case 2: anchor_type_x = anchor_type::Char; break;
case 6: anchor_type_y = anchor_type::Paragraph; break; case 5: anchor_type_y = anchor_type::Page; break;
case 5: anchor_type_y = anchor_type::Page; break; case 3:
case 6: anchor_type_y = anchor_type::Paragraph; break;
} }
odt_context->drawing_context()->set_vertical_pos(oox_anchor->m_oPositionV->m_oPosOffset->ToPoints()); odt_context->drawing_context()->set_vertical_pos(oox_anchor->m_oPositionV->m_oPosOffset->ToPoints());
} }
@ -3269,26 +3278,41 @@ void DocxConverter::convert(OOX::Drawing::CAnchor *oox_anchor)
{ {
int horiz_rel = oox_anchor->m_oPositionH->m_oRelativeFrom->GetValue(); int horiz_rel = oox_anchor->m_oPositionH->m_oRelativeFrom->GetValue();
odt_context->drawing_context()->set_horizontal_rel(horiz_rel); odt_context->drawing_context()->set_horizontal_rel(horiz_rel);
if (oox_anchor->m_oPositionH->m_oAlign.IsInit()) if (oox_anchor->m_oPositionH->m_oAlign.IsInit())
odt_context->drawing_context()->set_horizontal_pos(oox_anchor->m_oPositionH->m_oAlign->GetValue()); odt_context->drawing_context()->set_horizontal_pos(oox_anchor->m_oPositionH->m_oAlign->GetValue());
else if (oox_anchor->m_oPositionH->m_oPosOffset.IsInit()) else if (oox_anchor->m_oPositionH->m_oPosOffset.IsInit())
{ {
odt_context->drawing_context()->set_horizontal_pos(oox_anchor->m_oPositionH->m_oPosOffset->ToPoints()); odt_context->drawing_context()->set_horizontal_pos(oox_anchor->m_oPositionH->m_oPosOffset->ToPoints());
switch(horiz_rel) // relfromhCharacter = 0,
// relfromhColumn = 1,
// relfromhInsideMargin = 2,
// relfromhLeftMargin = 3,
// relfromhMargin = 4,
// relfromhOutsideMargin = 5,
// relfromhPage = 6,
// relfromhRightMargin = 7
switch (horiz_rel)
{ {
case 1: case 0: anchor_type_x = anchor_type::Char; break;
case 2: anchor_type_x = anchor_type::Paragraph; break; case 1: anchor_type_x = anchor_type::Frame; break;
case 6: anchor_type_x = anchor_type::Page; break; case 4:
case 2: anchor_type_x = anchor_type::Paragraph; break;
case 6: anchor_type_x = anchor_type::Page; break;
} }
} }
else else
odt_context->drawing_context()->set_horizontal_pos(SimpleTypes::alignhLeft); odt_context->drawing_context()->set_horizontal_pos(SimpleTypes::alignhLeft);
} }
if ( (anchor_type_x && anchor_type_y) && (*anchor_type_x == *anchor_type_y)) if (anchor_type_x && anchor_type_y)
odt_context->drawing_context()->set_anchor(*anchor_type_x); {
if (*anchor_type_x == *anchor_type_y)
odt_context->drawing_context()->set_anchor(*anchor_type_x);
else if (*anchor_type_x == anchor_type::Frame && *anchor_type_y == anchor_type::Paragraph)
odt_context->drawing_context()->set_anchor(anchor_type::Char);
}
bool wrap_set = false; bool wrap_set = false;
if (oox_anchor->m_oWrapSquare.IsInit()) if (oox_anchor->m_oWrapSquare.IsInit())

View File

@ -549,34 +549,40 @@ void odf_drawing_context::set_anchor_drawing()
if (impl_->current_level_.empty()) return; if (impl_->current_level_.empty()) return;
if (!impl_->current_level_.back().bDrawElement) return; if (!impl_->current_level_.back().bDrawElement) return;
if (!impl_->current_level_.back().graphic_properties) return; if (!impl_->current_level_.back().graphic_properties) return;
impl_->current_level_.back().graphic_properties->common_vertical_pos_attlist_.style_vertical_pos_ = impl_->anchor_settings_.style_vertical_pos_;
impl_->current_level_.back().graphic_properties->common_horizontal_pos_attlist_.style_horizontal_pos_ = impl_->anchor_settings_.style_horizontal_pos_;
impl_->current_level_.back().graphic_properties->common_vertical_rel_attlist_.style_vertical_rel_ = impl_->anchor_settings_.style_vertical_rel_;
impl_->current_level_.back().graphic_properties->common_horizontal_rel_attlist_.style_horizontal_rel_ = impl_->anchor_settings_.style_horizontal_rel_;
impl_->current_level_.back().graphic_properties->common_horizontal_margin_attlist_.fo_margin_left_ = impl_->anchor_settings_.fo_margin_left_;
impl_->current_level_.back().graphic_properties->common_vertical_margin_attlist_.fo_margin_top_ = impl_->anchor_settings_.fo_margin_top_;
impl_->current_level_.back().graphic_properties->common_horizontal_margin_attlist_.fo_margin_right_ = impl_->anchor_settings_.fo_margin_right_;
impl_->current_level_.back().graphic_properties->common_vertical_margin_attlist_.fo_margin_bottom_ = impl_->anchor_settings_.fo_margin_bottom_;
impl_->current_level_.back().graphic_properties->style_run_through_ = impl_->anchor_settings_.run_through_; set_anchor_drawing(impl_->current_level_.back().graphic_properties);
}
void odf_drawing_context::set_anchor_drawing(graphic_format_properties *graphic_properties)
{
int index = impl_->current_drawing_state_.index_base < 0 ? 0 : impl_->current_drawing_state_.index_base; int index = impl_->current_drawing_state_.index_base < 0 ? 0 : impl_->current_drawing_state_.index_base;
draw_base* draw = impl_->current_drawing_state_.elements_.empty() ? NULL : dynamic_cast<draw_base*>(impl_->current_drawing_state_.elements_[index].elm.get()); draw_base* draw = impl_->current_drawing_state_.elements_.empty() ? NULL : dynamic_cast<draw_base*>(impl_->current_drawing_state_.elements_[index].elm.get());
if (draw && !impl_->current_drawing_state_.in_group_) if (draw && !impl_->current_drawing_state_.in_group_)
{ {
draw->common_draw_attlists_.shape_with_text_and_styles_.common_text_anchor_attlist_.type_ = impl_->anchor_settings_.anchor_type_; draw->common_draw_attlists_.shape_with_text_and_styles_.common_text_anchor_attlist_.type_ = impl_->anchor_settings_.anchor_type_;
} }
else // libra падает else if (graphic_properties) // libra падает
{ {
impl_->current_level_.back().graphic_properties->style_wrap_ = impl_->anchor_settings_.style_wrap_; graphic_properties->style_wrap_ = impl_->anchor_settings_.style_wrap_;
impl_->current_level_.back().graphic_properties->style_wrap_contour_ = impl_->anchor_settings_.style_wrap_contour_; graphic_properties->style_wrap_contour_ = impl_->anchor_settings_.style_wrap_contour_;
impl_->current_level_.back().graphic_properties->style_wrap_contour_mode_ = impl_->anchor_settings_.style_wrap_contour_mode_; graphic_properties->style_wrap_contour_mode_ = impl_->anchor_settings_.style_wrap_contour_mode_;
impl_->current_level_.back().graphic_properties->style_number_wrapped_paragraphs_ = impl_->anchor_settings_.style_number_wrapped_paragraphs_; graphic_properties->style_number_wrapped_paragraphs_ = impl_->anchor_settings_.style_number_wrapped_paragraphs_;
} }
if (!graphic_properties) return;
graphic_properties->common_vertical_pos_attlist_.style_vertical_pos_ = impl_->anchor_settings_.style_vertical_pos_;
graphic_properties->common_horizontal_pos_attlist_.style_horizontal_pos_ = impl_->anchor_settings_.style_horizontal_pos_;
graphic_properties->common_vertical_rel_attlist_.style_vertical_rel_ = impl_->anchor_settings_.style_vertical_rel_;
graphic_properties->common_horizontal_rel_attlist_.style_horizontal_rel_ = impl_->anchor_settings_.style_horizontal_rel_;
graphic_properties->common_horizontal_margin_attlist_.fo_margin_left_ = impl_->anchor_settings_.fo_margin_left_;
graphic_properties->common_vertical_margin_attlist_.fo_margin_top_ = impl_->anchor_settings_.fo_margin_top_;
graphic_properties->common_horizontal_margin_attlist_.fo_margin_right_ = impl_->anchor_settings_.fo_margin_right_;
graphic_properties->common_vertical_margin_attlist_.fo_margin_bottom_ = impl_->anchor_settings_.fo_margin_bottom_;
graphic_properties->style_run_through_ = impl_->anchor_settings_.run_through_;
} }
void odf_drawing_context::end_drawing() void odf_drawing_context::end_drawing()
{ {
@ -911,7 +917,6 @@ bool odf_drawing_context::change_text_box_2_wordart()
} }
} }
//---------------------------------------------- //----------------------------------------------
odf_element_state state = impl_->current_drawing_state_.elements_[sz_state - 2]; odf_element_state state = impl_->current_drawing_state_.elements_[sz_state - 2];
state.elm = draw_elm; state.elm = draw_elm;
@ -929,6 +934,10 @@ bool odf_drawing_context::change_text_box_2_wordart()
impl_->current_drawing_state_.oox_shape_preset_ = 2031;//plain text impl_->current_drawing_state_.oox_shape_preset_ = 2031;//plain text
if (sz == 2) impl_->root_element_ = draw_elm; if (sz == 2) impl_->root_element_ = draw_elm;
set_anchor_drawing(impl_->current_graphic_properties);
return true; return true;
} }
draw_rect* s = dynamic_cast<draw_rect*>(impl_->current_drawing_state_.elements_.back().elm.get()); draw_rect* s = dynamic_cast<draw_rect*>(impl_->current_drawing_state_.elements_.back().elm.get());
@ -974,9 +983,10 @@ bool odf_drawing_context::change_text_box_2_wordart()
impl_->current_drawing_state_.oox_shape_preset_ = 2031;//plain text impl_->current_drawing_state_.oox_shape_preset_ = 2031;//plain text
if (sz == 1) impl_->root_element_ = draw_elm; if (sz == 1) impl_->root_element_ = draw_elm;
set_anchor_drawing(impl_->current_graphic_properties);
return true; return true;
} }
return false; return false;
} }
@ -1957,7 +1967,7 @@ void odf_drawing_context::set_horizontal_rel(int from)
switch(from) switch(from)
{ {
case 0: type = horizontal_rel::Char; break; // relfromhCharacter = 0, case 0: type = horizontal_rel::Char; break; // relfromhCharacter = 0,
case 1: type = horizontal_rel::Paragraph; break; // relfromhColumn = 1, case 1: type = horizontal_rel::Char; break; // relfromhColumn = 1,
case 2: type = horizontal_rel::Paragraph; break; // relfromhInsideMargin = 2, ??? case 2: type = horizontal_rel::Paragraph; break; // relfromhInsideMargin = 2, ???
case 3: type = horizontal_rel::PageStartMargin; break; // relfromhLeftMargin = 3, case 3: type = horizontal_rel::PageStartMargin; break; // relfromhLeftMargin = 3,
case 4: type = horizontal_rel::PageContent; break; // relfromhMargin = 4, ??? //ParagraphStartMargin case 4: type = horizontal_rel::PageContent; break; // relfromhMargin = 4, ??? //ParagraphStartMargin

View File

@ -116,6 +116,7 @@ public:
void end_drawing_background(odf_types::common_draw_fill_attlist & common_draw_attlist); void end_drawing_background(odf_types::common_draw_fill_attlist & common_draw_attlist);
void set_anchor_drawing(); void set_anchor_drawing();
void set_anchor_drawing(graphic_format_properties* graphic_properties);
size_t get_group_level(); size_t get_group_level();
void start_group(); void start_group();

View File

@ -67,6 +67,10 @@ public:
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeOfficeMetaInitialCreator; static const ElementType type = typeOfficeMetaInitialCreator;
virtual ElementType get_type() const
{
return type;
}
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
CP_REGISTER_OFFICE_ELEMENT2(meta_initial_creator); CP_REGISTER_OFFICE_ELEMENT2(meta_initial_creator);
@ -78,6 +82,10 @@ public:
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeOfficeMetaKeyword; static const ElementType type = typeOfficeMetaKeyword;
virtual ElementType get_type() const
{
return type;
}
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
CP_REGISTER_OFFICE_ELEMENT2(meta_keyword); CP_REGISTER_OFFICE_ELEMENT2(meta_keyword);
@ -89,6 +97,10 @@ public:
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeOfficeMetaCreationDate; static const ElementType type = typeOfficeMetaCreationDate;
virtual ElementType get_type() const
{
return type;
}
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
CP_REGISTER_OFFICE_ELEMENT2(meta_creation_date); CP_REGISTER_OFFICE_ELEMENT2(meta_creation_date);
@ -100,6 +112,10 @@ public:
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeOfficeMetaGenerator; static const ElementType type = typeOfficeMetaGenerator;
virtual ElementType get_type() const
{
return type;
}
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
CP_REGISTER_OFFICE_ELEMENT2(meta_generator); CP_REGISTER_OFFICE_ELEMENT2(meta_generator);
@ -111,6 +127,10 @@ public:
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeOfficeMetaTemplate; static const ElementType type = typeOfficeMetaTemplate;
virtual ElementType get_type() const
{
return type;
}
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
CP_REGISTER_OFFICE_ELEMENT2(meta_template); CP_REGISTER_OFFICE_ELEMENT2(meta_template);
@ -122,6 +142,10 @@ public:
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeOfficeMetaEditingCycles; static const ElementType type = typeOfficeMetaEditingCycles;
virtual ElementType get_type() const
{
return type;
}
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
CP_REGISTER_OFFICE_ELEMENT2(meta_editing_cycles); CP_REGISTER_OFFICE_ELEMENT2(meta_editing_cycles);
@ -134,6 +158,10 @@ public:
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeDcCreator; static const ElementType type = typeDcCreator;
virtual ElementType get_type() const
{
return type;
}
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
CP_REGISTER_OFFICE_ELEMENT2(dc_creator); CP_REGISTER_OFFICE_ELEMENT2(dc_creator);
@ -145,6 +173,10 @@ public:
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeDcDescription; static const ElementType type = typeDcDescription;
virtual ElementType get_type() const
{
return type;
}
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
CP_REGISTER_OFFICE_ELEMENT2(dc_description); CP_REGISTER_OFFICE_ELEMENT2(dc_description);
@ -156,6 +188,10 @@ public:
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeDcLanguage; static const ElementType type = typeDcLanguage;
virtual ElementType get_type() const
{
return type;
}
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
CP_REGISTER_OFFICE_ELEMENT2(dc_language); CP_REGISTER_OFFICE_ELEMENT2(dc_language);
@ -167,6 +203,10 @@ public:
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeDcDate; static const ElementType type = typeDcDate;
virtual ElementType get_type() const
{
return type;
}
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
CP_REGISTER_OFFICE_ELEMENT2(dc_date); CP_REGISTER_OFFICE_ELEMENT2(dc_date);
@ -178,6 +218,10 @@ public:
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeDcTitle; static const ElementType type = typeDcTitle;
virtual ElementType get_type() const
{
return type;
}
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
CP_REGISTER_OFFICE_ELEMENT2(dc_title); CP_REGISTER_OFFICE_ELEMENT2(dc_title);
@ -189,6 +233,10 @@ public:
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeDcSubject; static const ElementType type = typeDcSubject;
virtual ElementType get_type() const
{
return type;
}
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
CP_REGISTER_OFFICE_ELEMENT2(dc_subject); CP_REGISTER_OFFICE_ELEMENT2(dc_subject);

View File

@ -95,14 +95,12 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeOfficeChangeInfo; static const ElementType type = typeOfficeChangeInfo;
virtual void create_child_element(const std::wstring & Ns, const std::wstring & Name); virtual void create_child_element(const std::wstring & Ns, const std::wstring & Name);
virtual void add_child_element( const office_element_ptr & child_element); virtual void add_child_element( const office_element_ptr & child_element);
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
private: private:
office_element_ptr dc_date_; office_element_ptr dc_date_;
office_element_ptr dc_creator_; office_element_ptr dc_creator_;

View File

@ -130,14 +130,12 @@ public:
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
_CP_OPT(std::wstring) text_style_name_; _CP_OPT(std::wstring) text_style_name_;
_CP_OPT(odf_types::Bool) text_continue_numbering_; _CP_OPT(odf_types::Bool) text_continue_numbering_;
office_element_ptr text_list_header_; office_element_ptr text_list_header_;
office_element_ptr_array text_list_items_; office_element_ptr_array text_list_items_;
}; };
CP_REGISTER_OFFICE_ELEMENT2(text_list); CP_REGISTER_OFFICE_ELEMENT2(text_list);
//--------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------
@ -147,15 +145,13 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextSoftPageBreak; static const ElementType type = typeTextSoftPageBreak;
virtual void create_child_element(const std::wstring & Ns, const std::wstring & Name){} virtual void create_child_element(const std::wstring & Ns, const std::wstring & Name){}
virtual void add_child_element( const office_element_ptr & child_element){} virtual void add_child_element( const office_element_ptr & child_element){}
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
CP_REGISTER_OFFICE_ELEMENT2(text_soft_page_break); CP_REGISTER_OFFICE_ELEMENT2(text_soft_page_break);
class text_section_attr class text_section_attr
@ -178,7 +174,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextSection; static const ElementType type = typeTextSection;
virtual void create_child_element(const std::wstring & Ns, const std::wstring & Name); virtual void create_child_element(const std::wstring & Ns, const std::wstring & Name);
@ -190,9 +186,7 @@ public:
office_element_ptr text_section_source_; office_element_ptr text_section_source_;
office_element_ptr_array content_; office_element_ptr_array content_;
}; };
CP_REGISTER_OFFICE_ELEMENT2(text_section); CP_REGISTER_OFFICE_ELEMENT2(text_section);
class text_section_source_attr class text_section_source_attr
@ -215,7 +209,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextSectionSource; static const ElementType type = typeTextSectionSource;
virtual void create_child_element(const std::wstring & Ns, const std::wstring & Name); virtual void create_child_element(const std::wstring & Ns, const std::wstring & Name);
@ -234,7 +228,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextTableOfContent; static const ElementType type = typeTextTableOfContent;
@ -266,8 +260,7 @@ public:
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
office_element_ptr_array index_content_main_; office_element_ptr_array index_content_main_;
}; };
CP_REGISTER_OFFICE_ELEMENT2(text_index_body); CP_REGISTER_OFFICE_ELEMENT2(text_index_body);
@ -288,8 +281,7 @@ public:
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
text_section_attr text_section_attr_; text_section_attr text_section_attr_;
office_element_ptr_array index_content_main_; office_element_ptr_array index_content_main_;
}; };
CP_REGISTER_OFFICE_ELEMENT2(text_index_title); CP_REGISTER_OFFICE_ELEMENT2(text_index_title);
@ -300,9 +292,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextUnknownChange; static const ElementType type = typeTextUnknownChange;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name); virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name);
virtual void add_child_element ( const office_element_ptr & child_element); virtual void add_child_element ( const office_element_ptr & child_element);
@ -321,11 +311,10 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextInsertion; static const ElementType type = typeTextInsertion;
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
CP_REGISTER_OFFICE_ELEMENT2(text_insertion); CP_REGISTER_OFFICE_ELEMENT2(text_insertion);
//--------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------
@ -335,11 +324,10 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextDeletion; static const ElementType type = typeTextDeletion;
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
CP_REGISTER_OFFICE_ELEMENT2(text_deletion); CP_REGISTER_OFFICE_ELEMENT2(text_deletion);
//--------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------
@ -349,12 +337,11 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextFormatChange; static const ElementType type = typeTextFormatChange;
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
_CP_OPT(std::wstring) text_style_name_; //не по снецификации ... но КАК сохранить то что было изменено в формате????? _CP_OPT(std::wstring) text_style_name_; //не по снецификации ... но КАК сохранить то что было изменено в формате?????
}; };
CP_REGISTER_OFFICE_ELEMENT2(text_format_change); CP_REGISTER_OFFICE_ELEMENT2(text_format_change);
@ -365,8 +352,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextTrackedChanges; static const ElementType type = typeTextTrackedChanges;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name); virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name);
virtual void add_child_element ( const office_element_ptr & child_element); virtual void add_child_element ( const office_element_ptr & child_element);
@ -385,8 +371,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextChangedRegion; static const ElementType type = typeTextChangedRegion;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name); virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name);
virtual void add_child_element ( const office_element_ptr & child_element); virtual void add_child_element ( const office_element_ptr & child_element);
@ -403,19 +388,16 @@ class text_add_change : public office_element_impl<text_add_change>
{ {
public: public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextChange;
static const ElementType type = typeTextChange;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){} virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){}
virtual void add_child_element ( const office_element_ptr & child_element) {} virtual void add_child_element ( const office_element_ptr & child_element) {}
virtual void serialize(std::wostream & _Wostream) = 0; virtual void serialize(std::wostream & _Wostream) = 0;
_CP_OPT(std::wstring) text_change_id_; _CP_OPT(std::wstring) text_change_id_;
}; };
//--------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------
@ -425,7 +407,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextChange; static const ElementType type = typeTextChange;
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
@ -438,7 +420,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextChangeStart; static const ElementType type = typeTextChangeStart;
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
@ -451,7 +433,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextChangeEnd; static const ElementType type = typeTextChangeEnd;
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
@ -465,9 +447,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextTableIndex; static const ElementType type = typeTextTableIndex;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name); virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name);
virtual void add_child_element ( const office_element_ptr & child_element); virtual void add_child_element ( const office_element_ptr & child_element);
@ -489,9 +469,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextIllustrationIndex; static const ElementType type = typeTextIllustrationIndex;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name); virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name);
virtual void add_child_element ( const office_element_ptr & child_element); virtual void add_child_element ( const office_element_ptr & child_element);
@ -513,9 +491,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextAlphabeticalIndex; static const ElementType type = typeTextAlphabeticalIndex;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name); virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name);
virtual void add_child_element ( const office_element_ptr & child_element); virtual void add_child_element ( const office_element_ptr & child_element);
@ -523,8 +499,8 @@ public:
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
odf_types::section_attlists section_attr_; odf_types::section_attlists section_attr_;
office_element_ptr alphabetical_index_source_; office_element_ptr alphabetical_index_source_;
office_element_ptr index_body_; office_element_ptr index_body_;
}; };
CP_REGISTER_OFFICE_ELEMENT2(text_alphabetical_index); CP_REGISTER_OFFICE_ELEMENT2(text_alphabetical_index);
@ -537,9 +513,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextUserIndex; static const ElementType type = typeTextUserIndex;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name); virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name);
virtual void add_child_element ( const office_element_ptr & child_element); virtual void add_child_element ( const office_element_ptr & child_element);
@ -547,8 +521,8 @@ public:
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
odf_types::section_attlists section_attr_; odf_types::section_attlists section_attr_;
office_element_ptr user_index_source_; office_element_ptr user_index_source_;
office_element_ptr index_body_; office_element_ptr index_body_;
}; };
CP_REGISTER_OFFICE_ELEMENT2(text_user_index); CP_REGISTER_OFFICE_ELEMENT2(text_user_index);
@ -561,9 +535,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextBibliography; static const ElementType type = typeTextBibliography;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name); virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name);
virtual void add_child_element ( const office_element_ptr & child_element); virtual void add_child_element ( const office_element_ptr & child_element);
@ -571,8 +543,8 @@ public:
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
odf_types::section_attlists section_attr_; odf_types::section_attlists section_attr_;
office_element_ptr bibliography_source_; office_element_ptr bibliography_source_;
office_element_ptr index_body_; office_element_ptr index_body_;
}; };
CP_REGISTER_OFFICE_ELEMENT2(text_bibliography); CP_REGISTER_OFFICE_ELEMENT2(text_bibliography);
//------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------
@ -603,8 +575,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextCommonEntryTemplate; static const ElementType type = typeTextCommonEntryTemplate;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name); virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name);
virtual void add_child_element ( const office_element_ptr & child_element); virtual void add_child_element ( const office_element_ptr & child_element);
@ -624,8 +595,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextBibliographyEntryTemplate; static const ElementType type = typeTextBibliographyEntryTemplate;
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
@ -639,8 +609,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextIndexTitleTemplate; static const ElementType type = typeTextIndexTitleTemplate;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){} virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){}
virtual void add_child_element ( const office_element_ptr & child_element){} virtual void add_child_element ( const office_element_ptr & child_element){}
@ -660,8 +629,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextSequenceDecl; static const ElementType type = typeTextSequenceDecl;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){} virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){}
virtual void add_child_element ( const office_element_ptr & child_element){} virtual void add_child_element ( const office_element_ptr & child_element){}
@ -682,8 +650,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextSequenceDecls; static const ElementType type = typeTextSequenceDecls;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name); virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name);
virtual void add_child_element ( const office_element_ptr & child_element); virtual void add_child_element ( const office_element_ptr & child_element);
@ -702,8 +669,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextTableOfContentSource; static const ElementType type = typeTextTableOfContentSource;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name); virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name);
virtual void add_child_element ( const office_element_ptr & child_element); virtual void add_child_element ( const office_element_ptr & child_element);
@ -732,8 +698,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextTableOfContentEntryTemplate; static const ElementType type = typeTextTableOfContentEntryTemplate;
}; };
CP_REGISTER_OFFICE_ELEMENT2(text_table_of_content_entry_template); CP_REGISTER_OFFICE_ELEMENT2(text_table_of_content_entry_template);
//--------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------
@ -745,7 +710,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextIndexEntryBibliography; static const ElementType type = typeTextIndexEntryBibliography;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){} virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){}
@ -753,8 +718,8 @@ public:
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
_CP_OPT(std::wstring) style_name_; _CP_OPT(std::wstring) style_name_;
_CP_OPT(std::wstring) bibliography_data_field_; _CP_OPT(std::wstring) bibliography_data_field_;
}; };
CP_REGISTER_OFFICE_ELEMENT2(text_index_entry_bibliography); CP_REGISTER_OFFICE_ELEMENT2(text_index_entry_bibliography);
//--------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------
@ -766,8 +731,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextIndexEntryChapter; static const ElementType type = typeTextIndexEntryChapter;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){} virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){}
virtual void add_child_element ( const office_element_ptr & child_element){} virtual void add_child_element ( const office_element_ptr & child_element){}
@ -784,8 +748,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextIndexEntryLinkEnd; static const ElementType type = typeTextIndexEntryLinkEnd;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){} virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){}
virtual void add_child_element ( const office_element_ptr & child_element){} virtual void add_child_element ( const office_element_ptr & child_element){}
@ -802,8 +765,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextIndexEntryLinkStart; static const ElementType type = typeTextIndexEntryLinkStart;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){} virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){}
virtual void add_child_element ( const office_element_ptr & child_element){} virtual void add_child_element ( const office_element_ptr & child_element){}
@ -820,8 +782,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextIndexEntryPageNumber; static const ElementType type = typeTextIndexEntryPageNumber;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){} virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){}
virtual void add_child_element ( const office_element_ptr & child_element){} virtual void add_child_element ( const office_element_ptr & child_element){}
@ -838,8 +799,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextIndexEntrySpan; static const ElementType type = typeTextIndexEntrySpan;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){} virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){}
virtual void add_child_element ( const office_element_ptr & child_element){} virtual void add_child_element ( const office_element_ptr & child_element){}
@ -856,11 +816,10 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextIndexEntryTabStop; static const ElementType type = typeTextIndexEntryTabStop;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){}
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){} virtual void add_child_element ( const office_element_ptr & child_element){}
virtual void add_child_element ( const office_element_ptr & child_element){}
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
@ -874,11 +833,10 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextIndexEntryText; static const ElementType type = typeTextIndexEntryText;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){}
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name){} virtual void add_child_element ( const office_element_ptr & child_element){}
virtual void add_child_element ( const office_element_ptr & child_element){}
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
}; };
@ -892,16 +850,15 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextIllustrationIndexSource; static const ElementType type = typeTextIllustrationIndexSource;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name);
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name); virtual void add_child_element ( const office_element_ptr & child_element);
virtual void add_child_element ( const office_element_ptr & child_element);
virtual void serialize(std::wostream & _Wostream); virtual void serialize(std::wostream & _Wostream);
_CP_OPT(std::wstring) caption_sequence_name_; _CP_OPT(std::wstring) caption_sequence_name_;
_CP_OPT(std::wstring) caption_sequence_format_; _CP_OPT(std::wstring) caption_sequence_format_;
_CP_OPT(odf_types::Bool) relative_tab_stop_position_; _CP_OPT(odf_types::Bool) relative_tab_stop_position_;
_CP_OPT(odf_types::Bool) use_caption_; _CP_OPT(odf_types::Bool) use_caption_;
@ -920,8 +877,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextIllustrationIndexEntryTemplate; static const ElementType type = typeTextIllustrationIndexEntryTemplate;
}; };
CP_REGISTER_OFFICE_ELEMENT2(text_illustration_index_entry_template); CP_REGISTER_OFFICE_ELEMENT2(text_illustration_index_entry_template);
//--------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------
@ -933,8 +889,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextUserIndexSource; static const ElementType type = typeTextUserIndexSource;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name); virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name);
virtual void add_child_element ( const office_element_ptr & child_element); virtual void add_child_element ( const office_element_ptr & child_element);
@ -968,8 +923,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextUserIndexEntryTemplate; static const ElementType type = typeTextUserIndexEntryTemplate;
}; };
CP_REGISTER_OFFICE_ELEMENT2(text_user_index_entry_template); CP_REGISTER_OFFICE_ELEMENT2(text_user_index_entry_template);
//--------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------
@ -1020,7 +974,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextAlphabeticalIndexEntryTemplate; static const ElementType type = typeTextAlphabeticalIndexEntryTemplate;
}; };
CP_REGISTER_OFFICE_ELEMENT2(text_alphabetical_index_entry_template); CP_REGISTER_OFFICE_ELEMENT2(text_alphabetical_index_entry_template);
@ -1033,7 +987,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextTableIndexSource; static const ElementType type = typeTextTableIndexSource;
virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name); virtual void create_child_element (const std::wstring & Ns, const std::wstring & Name);
@ -1061,7 +1015,7 @@ public:
static const wchar_t * ns; static const wchar_t * ns;
static const wchar_t * name; static const wchar_t * name;
static const ElementType type = typeTextTableIndexEntryTemplate; static const ElementType type = typeTextTableIndexEntryTemplate;
}; };
CP_REGISTER_OFFICE_ELEMENT2(text_table_index_entry_template); CP_REGISTER_OFFICE_ELEMENT2(text_table_index_entry_template);