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

анимации (переходы)

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@53515 954022d7-b5bf-4e40-9824-e11837661b57
parent 4313ee1c
......@@ -1672,6 +1672,14 @@
RelativePath=".\src\odf\all_elements.h"
>
</File>
<File
RelativePath=".\src\odf\anim_elements.cpp"
>
</File>
<File
RelativePath=".\src\odf\anim_elements.h"
>
</File>
<File
RelativePath=".\src\odf\chart_build_oox.cpp"
>
......
......@@ -448,14 +448,17 @@ void pptx_conversion_context::end_page()
}
get_slide_context().serialize_background(current_slide().Background());
get_slide_context().serialize(current_slide().Data());
get_slide_context().serialize_objects(current_slide().Data());
get_slide_context().serialize_animations(current_slide().Timing());
get_slide_context().dump_rels(current_slide().Rels());//hyperlinks, mediaitems, ...
get_slide_context().end_slide();
}
void pptx_conversion_context::end_layout()
{
get_slide_context().serialize(current_layout().Data());
get_slide_context().serialize_objects(current_layout().Data());
get_slide_context().dump_rels(current_layout().Rels());//hyperlinks, mediaitems, ...
get_slide_context().end_slide();
......@@ -475,8 +478,7 @@ std::pair<int,int> pptx_conversion_context::add_author_comments(std::wstring aut
void pptx_conversion_context::end_master()
{
get_slide_context().serialize_background(current_master().Background(),true);
get_slide_context().serialize(current_master().Data());
get_slide_context().serialize_objects(current_master().Data());
get_slide_context().serialize_HeaderFooter(current_master().DataExtra());
get_slide_context().dump_rels(current_master().Rels());//hyperlinks, mediaitems, ...
......
......@@ -42,6 +42,10 @@ std::wostream & pptx_xml_slide::Background()
{
return slideBackground_;
}
std::wostream & pptx_xml_slide::Timing()
{
return slideTiming_;
}
rels & pptx_xml_slide::Rels()
{
return rels_;
......@@ -68,6 +72,7 @@ void pptx_xml_slide::write_to(std::wostream & strm)
CP_XML_STREAM() << slideData_.str();
}
}
CP_XML_STREAM() << slideTiming_.str();
//CP_XML_NODE(L"p:clrMapOvr")
//{
// CP_XML_NODE(L"a:masterClrMapping");
......
......@@ -24,9 +24,9 @@ public:
std::wostream & Data();
std::wostream & Background();
rels & Rels();
std::wostream & Timing();
//slideTiming
rels & Rels();
void write_to(std::wostream & strm);
......@@ -36,6 +36,7 @@ private:
std::wstring name_;
std::wstringstream slideData_;
std::wstringstream slideBackground_;
std::wstringstream slideTiming_;
std::wstring rId_;
rels rels_;
......
......@@ -24,6 +24,16 @@ typedef _CP_PTR(pptx_drawings) pptx_drawings_ptr;
class pptx_slide_context::Impl
{
public:
struct _transition
{
bool Enabled;
std::wstring Speed;
int Time;
std::wstring Type;
std::wstring Direction;
};
Impl(const std::wstring & odfPacket) : mediaitems_(odfPacket),odfPacket_(odfPacket)
{
clear();
......@@ -38,6 +48,8 @@ public:
_CP_OPT(_oox_fill) background_fill_;
_transition transition_;
bool header, footer, date_time, slideNum;
void add_drawing(_pptx_drawing const & d,
......@@ -80,6 +92,8 @@ public:
rId_ = 1;
pptx_drawings_ = pptx_drawings::create();
memset(&transition_,0,sizeof(_transition));
}
size_t next_rId()
......@@ -108,11 +122,36 @@ pptx_slide_context::pptx_slide_context(pptx_conversion_context & Context)
}
void pptx_slide_context::start_slide()
{
impl_->clear();
impl_->clear(); // objects
hlinks_size_ = 0;
default_set();
default_set(); //for current object
}
/////////////////////////////////////////////////////////////////////////////////////////////////
void pptx_slide_context::start_slide_animation()
{
impl_->transition_.Enabled = true;
//default
impl_->transition_.Speed = L"med";
impl_->transition_.Type = L"wipe";
}
// !!!!
void pptx_slide_context::set_animation_duration(int dur)
{
impl_->transition_.Time = dur;
}
//smil_direction_,smil_type_,smil_subtype_,smil_mode_,color);
void pptx_slide_context::set_transitionFilter( _CP_OPT(std::wstring) direction,
_CP_OPT(std::wstring) type,
_CP_OPT(std::wstring) subtype,
_CP_OPT(std::wstring) mode,
_CP_OPT(std::wstring) fade_color)
{
}
/////////////////////////////////////////////////////////////////////////////////////////////////
void pptx_slide_context::default_set()
{
impl_->object_description_.xlink_href_ = L"";
......@@ -131,7 +170,6 @@ void pptx_slide_context::default_set()
impl_->object_description_.fill_.clear();
}
void pptx_slide_context::set_placeHolder_type(std::wstring typeHolder)
{
if (typeHolder == L"ftr") impl_->footer= true;
......@@ -145,11 +183,13 @@ void pptx_slide_context::set_placeHolder_idx(int idx)
{
impl_->object_description_.additional_.push_back(odf::_property(L"PlaceHolderIdx",idx));
}
void pptx_slide_context::set_rect(double width_pt, double height_pt, double x_pt, double y_pt)
{
_rect r = {width_pt,height_pt,x_pt,y_pt};
impl_->object_description_.svg_rect_= r;
}
void pptx_slide_context::set_rotate(double angle)
{
set_property(odf::_property(L"svg:rotate",angle));
......@@ -176,6 +216,7 @@ void pptx_slide_context::set_translate(double x_pt, double y_pt)
impl_->object_description_.svg_rect_= r;
}
}
void pptx_slide_context::set_scale(double cx_pt, double cy_pt)
{
if (impl_->object_description_.svg_rect_)
......@@ -187,28 +228,34 @@ void pptx_slide_context::set_scale(double cx_pt, double cy_pt)
impl_->object_description_.svg_rect_= r;
}
}
void pptx_slide_context::set_anchor(std::wstring anchor, double x_pt, double y_pt)
{
impl_->object_description_.anchor_ = anchor;
impl_->object_description_.anchor_x_ = x_pt;
impl_->object_description_.anchor_y_ = y_pt;
}
void pptx_slide_context::set_property(odf::_property p)
{
impl_->object_description_.additional_.push_back(p);
}
std::vector<odf::_property> & pptx_slide_context::get_properties()
{
return impl_->object_description_.additional_;
}
void pptx_slide_context::set_clipping(std::wstring & str)
{
impl_->object_description_.clipping_string_= str;
}
void pptx_slide_context::set_fill(_oox_fill & fill)
{
impl_->object_description_.fill_= fill;
}
std::wstring pptx_slide_context::add_hyperlink(std::wstring const & ref,bool object)
{
++hlinks_size_;
......@@ -219,6 +266,7 @@ std::wstring pptx_slide_context::add_hyperlink(std::wstring const & ref,bool obj
return hId;
}
void pptx_slide_context::add_background(_oox_fill & fill)
{
if (fill.bitmap)
......@@ -232,20 +280,24 @@ void pptx_slide_context::add_background(_oox_fill & fill)
impl_->background_fill_ = fill;
}
void pptx_slide_context::set_name(std::wstring const & name)
{
impl_->object_description_.draw_name_ = name;
}
void pptx_slide_context::start_shape(int type)
{
impl_->object_description_.type_ = type; //2,3...
}
void pptx_slide_context::start_image(std::wstring const & path)
{
impl_->object_description_.xlink_href_ = path;
impl_->object_description_.type_ = 0; //frame
}
void pptx_slide_context::start_table()
{
impl_->object_description_.type_ = 0; //frame
......@@ -256,6 +308,7 @@ void pptx_slide_context::start_chart(std::wstring const & path)
impl_->object_description_.xlink_href_ = path;
impl_->object_description_.type_ = 0; //frame
}
void pptx_slide_context::end_shape()
{
impl_->shapes_.push_back(impl_->object_description_);
......@@ -272,15 +325,18 @@ void pptx_slide_context::end_chart()
impl_->charts_.push_back(impl_->object_description_);
default_set();
}
void pptx_slide_context::end_table()
{
impl_->tables_.push_back(impl_->object_description_);
default_set();
}
bool pptx_slide_context::empty() const
{
return impl_->empty();
}
void pptx_slide_context::process_drawings()
{
process_shapes();
......@@ -288,6 +344,7 @@ void pptx_slide_context::process_drawings()
process_tables();
process_charts();
}
void pptx_slide_context::process_images()
{
using boost::filesystem::wpath;
......@@ -355,6 +412,7 @@ void pptx_slide_context::process_charts()
impl_->add_drawing(drawing, isMediaInternal, drawing.chartId, ref, mediaitems::typeChart);
}
}
void pptx_slide_context::process_tables()
{
using boost::filesystem::wpath;
......@@ -393,6 +451,7 @@ void pptx_slide_context::process_common_properties(drawing_object_description &
drawing.fill = pic.fill_;
}
void pptx_slide_context::process_shapes()
{
int PlaceHolderIndex = 1;
......@@ -434,10 +493,12 @@ void pptx_slide_context::process_shapes()
impl_->add_drawing(drawing, isMediaInternal, rId, ref, mediaitems::typeShape);
}
}
void pptx_slide_context::dump_rels(rels & Rels)
{
impl_->get_drawings()->dump_rels(Rels);
}
mediaitems & pptx_slide_context::get_mediaitems()
{
return impl_->get_mediaitems();
......@@ -471,6 +532,40 @@ void pptx_slide_context::serialize_background(std::wostream & strm, bool always)
}
}
}
void pptx_slide_context::serialize_animations(std::wostream & strm)
{
CP_XML_WRITER(strm)
{
if (impl_->transition_.Enabled)
{
CP_XML_NODE(L"p:transition")
{
if (impl_->transition_.Time>0)
{
CP_XML_ATTR(L"spd",impl_->transition_.Speed);
}
if (impl_->transition_.Time >0)
{
CP_XML_ATTR(L"advTm",impl_->transition_.Time);
}
CP_XML_NODE(std::wstring(L"p:" + impl_->transition_.Type))
{
if (!impl_->transition_.Direction.empty())
{
CP_XML_ATTR(L"dir",impl_->transition_.Direction);
}
}
}
}
//CP_XML_NODE(L"p:timing")- p:par
//{
//}
}
}
void pptx_slide_context::serialize_HeaderFooter(std::wostream & strm)
{
if (!impl_->header && !impl_->footer && !impl_->date_time && !impl_->slideNum)return;
......@@ -486,7 +581,8 @@ void pptx_slide_context::serialize_HeaderFooter(std::wostream & strm)
}
}
}
void pptx_slide_context::serialize(std::wostream & strm)
void pptx_slide_context::serialize_objects(std::wostream & strm)
{
int next_id = impl_->next_rId();
......
......@@ -20,6 +20,12 @@ public:
void start_slide();
void end_slide(){}
////////////////////////////////////////////////////////////////////////////////////////
void start_slide_animation();
void end_slide_animation(){}
void set_animation_duration(int dur);
void set_transitionFilter(_CP_OPT(std::wstring),_CP_OPT(std::wstring),_CP_OPT(std::wstring),_CP_OPT(std::wstring),_CP_OPT(std::wstring));
///////////////////////////////////////////////////////////////////////////////////////////
void set_rect(double width_pt, double height_pt, double x_pt, double y_pt);
......@@ -54,9 +60,10 @@ public:
bool empty() const;
//////////////////////////////////////////////////////////////////////////////////////////////
void serialize(std::wostream & strm);
void serialize_objects(std::wostream & strm);
void serialize_HeaderFooter(std::wostream & strm);
void serialize_background(std::wostream & strm, bool always=false);
void serialize_animations(std::wostream & strm);
void dump_rels(rels & Rels);
......
#include "precompiled_cpodf.h"
#include "anim_elements.h"
#include <boost/make_shared.hpp>
#include <cpdoccore/xml/xmlchar.h>
#include <cpdoccore/xml/serialize.h>
#include <cpdoccore/xml/attributes.h>
#include <boost/lexical_cast.hpp>
#include "serialize_elements.h"
#include "odfcontext.h"
#include <cpdoccore/odf/odf_document.h>
#include "draw_common.h"
#include <cpdoccore/xml/simple_xml_writer.h>
namespace cpdoccore {
namespace odf {
///////////////////////////////////////////////////////////////////////////////////////////////////////
const wchar_t * anim_par::ns = L"anim";
const wchar_t * anim_par::name = L"par";
void anim_par::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
}
void anim_par::pptx_convert(oox::pptx_conversion_context & Context)
{
if (anim_par_)
{
Context.get_slide_context().start_slide_animation();
anim_par_->pptx_convert(Context); // ( )
Context.get_slide_context().end_slide_animation();
}
///////////////////////// .. ( - , - )
//slide_context().animation_context().start_sequence();
BOOST_FOREACH(const office_element_ptr& elm, anim_seq_array_)
{
elm->pptx_convert(Context);
}
//slide_context().animation_context().end_sequence();
/////////////////////////////////////////////////////////////////
// -
BOOST_FOREACH(const office_element_ptr& elm, content_)
{
elm->pptx_convert(Context);
}
}
void anim_par::add_child_element( xml::sax * Reader, const ::std::wstring & Ns, const ::std::wstring & Name)
{
if CP_CHECK_NAME(L"anim", L"par")
CP_CREATE_ELEMENT(anim_par_);
else if CP_CHECK_NAME(L"anim", L"seq")
CP_CREATE_ELEMENT(anim_seq_array_);// 1 - ( )
else
CP_CREATE_ELEMENT(content_);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////
const wchar_t * anim_seq::ns = L"anim";
const wchar_t * anim_seq::name = L"seq";
void anim_seq::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
}
void anim_seq::pptx_convert(oox::pptx_conversion_context & Context)
{
BOOST_FOREACH(const office_element_ptr& elm, anim_par_array_)
{
elm->pptx_convert(Context);
}
}
void anim_seq::add_child_element( xml::sax * Reader, const ::std::wstring & Ns, const ::std::wstring & Name)
{
if CP_CHECK_NAME(L"anim", L"par")
CP_CREATE_ELEMENT(anim_par_array_);
}
////////////////////////////////////////////////////////////////
void anim_transition_filter_attlist::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
CP_APPLY_ATTR(L"smil:direction", smil_direction_);
CP_APPLY_ATTR(L"smil:subtype", smil_subtype_);
CP_APPLY_ATTR(L"smil:type", smil_type_);
CP_APPLY_ATTR(L"smil:fadeColor", smil_fadeColor_);
CP_APPLY_ATTR(L"smil:mode", smil_mode_);
}
const wchar_t * anim_transitionFilter::ns = L"anim";
const wchar_t * anim_transitionFilter::name = L"transitionFilter";
void anim_transitionFilter::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
common_anim_smil_attlist_.add_attributes(Attributes);
anim_transition_filter_attlist_.add_attributes(Attributes);
}
void anim_transitionFilter::pptx_convert(oox::pptx_conversion_context & Context)
{
if (common_anim_smil_attlist_.smil_dur_)
{
Context.get_slide_context().set_animation_duration(5000/*common_anim_smil_attlist_.smil_dur_*/);//*1000);
//need parsing ~ 3s
}
_CP_OPT(std::wstring) color;
if (smil_fadeColor_)
{
color = smil_fadeColor_->get_hex_value();
}
Context.get_slide_context().set_transitionFilter(smil_direction_,smil_type_,smil_subtype_,smil_mode_,color);
}
////////////////////////////////////////////////////////////////
}
}
#pragma once
#include <cpdoccore/CPOptional.h>
#include <cpdoccore/xml/xmlelement.h>
#include <cpdoccore/xml/nodetype.h>
#include "office_elements.h"
#include "office_elements_create.h"
namespace cpdoccore {
namespace odf {
//anim:par
class anim_par : public office_element_impl<anim_par>//
{
public:
static const wchar_t * ns;
static const wchar_t * name;
static const xml::NodeType xml_type = xml::typeElement;
static const ElementType type = typeAnimPar;
CPDOCCORE_DEFINE_VISITABLE();
office_element_ptr anim_par_;
office_element_ptr_array anim_seq_array_;
office_element_ptr_array content_;
virtual void pptx_convert(oox::pptx_conversion_context & Context);
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);
};
CP_REGISTER_OFFICE_ELEMENT2(anim_par);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//anim:seq
class anim_seq : public office_element_impl<anim_seq>//
{
public:
static const wchar_t * ns;
static const wchar_t * name;
static const xml::NodeType xml_type = xml::typeElement;
static const ElementType type = typeAnimSeq;
CPDOCCORE_DEFINE_VISITABLE();
office_element_ptr_array anim_par_array_;
virtual void pptx_convert(oox::pptx_conversion_context & Context);
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);
};
CP_REGISTER_OFFICE_ELEMENT2(anim_seq);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//anim:iterate
//class anim_iterate : public office_element_impl<anim_iterate>//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------------------------------/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//anim-transition-filter-attlist
class anim_transition_filter_attlist
{
public:
void add_attributes( const xml::attributes_wc_ptr & Attributes );
_CP_OPT(std::wstring) smil_direction_;
_CP_OPT(std::wstring) smil_subtype_;
_CP_OPT(std::wstring) smil_type_;
_CP_OPT(std::wstring) smil_dur_;
_CP_OPT(std::wstring) smil_mode_;
_CP_OPT(color) smil_fadeColor;
}
//anim:transitionFilter
class anim_transitionFilter : public office_element_impl<anim_transitionFilter>
{
public:
static const wchar_t * ns;
static const wchar_t * name;
static const xml::NodeType xml_type = xml::typeElement;
static const ElementType type = typeAnimTransitionFilter;
CPDOCCORE_DEFINE_VISITABLE();
virtual void pptx_convert(oox::pptx_conversion_context & Context);
///////////////////////////////////////////////////////////
common_anim_smil_attlist common_anim_smil_attlist_;
anim_transition_filter_attlist anim_transition_filter_attlist_;
private:
virtual void add_attributes( const xml::attributes_wc_ptr & Attributes );
};
CP_REGISTER_OFFICE_ELEMENT2(anim_transitionFilter);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//anim:audio
//anim:command
}
}
......@@ -475,7 +475,17 @@ void common_presentation_attlist::add_attributes( const xml::attributes_wc_ptr &
CP_APPLY_ATTR(L"presentation:style-name", style_name_);
CP_APPLY_ATTR(L"presentation:placeholder", presentation_placeholder_);
}
//////////////////////////////////////////////////////////////////////////////////////////////////
void common_anim_smil_attlist::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
//CP_APPLY_ATTR(L"smil:direction", smil_direction_);
// CP_APPLY_ATTR(L"smil:subtype", smil_subtype_);
// CP_APPLY_ATTR(L"smil:type", smil_type_);
CP_APPLY_ATTR(L"smil:dur", smil_dur_);
}
//
}
}
......@@ -790,5 +790,30 @@ public:
_CP_OPT(bool) presentation_placeholder_;
};
// common-anim-smil-attlist
class common_anim_smil_attlist
{
public:
void add_attributes( const xml::attributes_wc_ptr & Attributes );
void apply_from(const common_anim_smil_attlist & Other)
{
//_CP_APPLY_PROP(smil_direction_, Other.smil_direction_);
//_CP_APPLY_PROP(smil_subtype_, Other.smil_subtype_);
//_CP_APPLY_PROP(smil_type_, Other.smil_type_);
_CP_APPLY_PROP(smil_dur_, Other.smil_dur_);
}
public:
//_CP_OPT(std::wstring) smil_direction_;
//_CP_OPT(std::wstring) smil_subtype_;
//_CP_OPT(std::wstring) smil_type_;
_CP_OPT(std::wstring) smil_dur_;
//_CP_OPT(color) smil_fadeColor;
};
}
}
......@@ -198,7 +198,7 @@ static const _shape_converter _OO_OOX_custom_shapes[]=
{L"circle" ,L"ellipse" ,0 ,0 ,0 },
{L"circle-pie" ,L"pie" ,0 ,0 ,0 },
{L"frame" ,L"frame" ,0 ,0 ,0 },
{L"cloud" ,L"cload" ,0 ,0 ,0 },
{L"cloud" ,L"cloud" ,0 ,0 ,0 },
{L"up-right-arrow" ,L"rightUpArrow" ,0 ,0 ,0 },
{L"col-502ad400" ,L"bevel" ,0 ,0 ,0 },
{L"col-60da8460" ,L"bevel" ,0 ,0 ,0 },
......
......@@ -23,6 +23,8 @@ namespace odf {
void draw_page_attr::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
CP_APPLY_ATTR(L"draw:id", draw_id_);
CP_APPLY_ATTR(L"draw:name", draw_name_);
CP_APPLY_ATTR(L"draw:style-name", draw_style_name_);
......@@ -40,6 +42,9 @@ const wchar_t * draw_page::name = L"page";
void draw_page::add_child_element( xml::sax * Reader, const ::std::wstring & Ns, const ::std::wstring & Name)
{
if CP_CHECK_NAME(L"anim", L"par")
CP_CREATE_ELEMENT(animation_);
else
CP_CREATE_ELEMENT(content_);
}
......@@ -115,12 +120,18 @@ void draw_page::pptx_convert(oox::pptx_conversion_context & Context)
}
}
}
//ñíà÷àëà àíèìàøêè .. ïîòîìó ÷òî îáúåêòû èñïîëüçóþò àíèìàöèþ íå íàíàïðÿìóþ (êàê áû ) à ñ îáùåé êó÷è
//animation_context íà slide_context çàâåñòè
if (animation_)
{
animation_->pptx_convert(Context);
}
/////////////////////////
BOOST_FOREACH(const office_element_ptr& elm, content_)
{
elm->pptx_convert(Context);
}
if (draw_page_attr_.use_footer_name_)//from master_page
{
std::wstring name = L"footer:" + *draw_page_attr_.use_footer_name_;
......@@ -168,7 +179,6 @@ void presentation_date_time_decl::pptx_convert(oox::pptx_conversion_context & Co
{
Context.get_text_context().add_text(text_);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////
}
}
......@@ -20,6 +20,7 @@ public:
public:
_CP_OPT(std::wstring) draw_name_;
_CP_OPT(std::wstring) draw_id_;
_CP_OPT(std::wstring) draw_style_name_;
_CP_OPT(std::wstring) page_layout_name_;
......@@ -48,6 +49,8 @@ private:
private:
office_element_ptr_array content_;
office_element_ptr animation_;
draw_page_attr draw_page_attr_;
};
......@@ -103,5 +106,6 @@ private:
};
CP_REGISTER_OFFICE_ELEMENT2(presentation_date_time_decl);
}
}
......@@ -42,6 +42,8 @@ void draw_shape::add_child_element( xml::sax * Reader, const ::std::wstring & Ns
}
void draw_shape::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
CP_APPLY_ATTR(L"draw:id", draw_id_);// draw_shape_attlist_???
common_draw_attlists_.shape_with_text_and_styles_.add_attributes(Attributes);
common_draw_attlists_.position_.add_attributes(Attributes);
common_draw_attlists_.rel_size_.add_attributes(Attributes);
......
......@@ -52,6 +52,8 @@ public:
draw_shape_attlist draw_shape_attlist_;
_CP_OPT(std::wstring) draw_id_;//
office_element_ptr_array content_;
CPDOCCORE_DEFINE_VISITABLE();
......
......@@ -33,6 +33,7 @@
#include "paragraph_elements.h"
#include "text_elements.h"
#include "anim_elements.h"
#include "table_calculation_settings.h"
#include "number_style.h"
......
......@@ -199,6 +199,10 @@ enum ElementType
typePresentationFooterDecl,
typePresentationDateTimeDecl,
typeAnimPar,
typeAnimSeq,
typeAnimTransitionFilter,
typeStyleGraphicPropertis,
typeStyleDrawGradient,
typeStyleDrawFillImage,
......
......@@ -35,7 +35,6 @@ void office_presentation::add_child_element( xml::sax * Reader, const ::std::wst
void office_presentation::add_text(const std::wstring & Text)
{
// TODO : error
}
void office_presentation::add_attributes( const xml::attributes_wc_ptr & Attributes )
......
......@@ -10,7 +10,6 @@
namespace cpdoccore {
namespace odf {
/// \class office_presentation
/// \brief office:presentation
class office_presentation : public office_element_impl<office_presentation>
{
......
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