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

(1.0.1.164): ASCOfficeOdfFile

дополнены и расширены переходы между слайдами в презентациях
версия stable

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@53574 954022d7-b5bf-4e40-9824-e11837661b57
parent a79fde44
#pragma once #pragma once
//1 //1
//0 //0
//0 //1
//163 //164
#define INTVER 1,0,0,163 #define INTVER 1,0,1,164
#define STRVER "1,0,0,163\0" #define STRVER "1,0,1,164\0"
...@@ -481,6 +481,14 @@ ...@@ -481,6 +481,14 @@
RelativePath=".\src\odf\chartsymbol.h" RelativePath=".\src\odf\chartsymbol.h"
> >
</File> </File>
<File
RelativePath=".\src\odf\clockvalue.cpp"
>
</File>
<File
RelativePath=".\src\odf\clockvalue.h"
>
</File>
<File <File
RelativePath=".\src\odf\color.cpp" RelativePath=".\src\odf\color.cpp"
> >
...@@ -785,6 +793,14 @@ ...@@ -785,6 +793,14 @@
RelativePath=".\src\odf\shadowtype.h" RelativePath=".\src\odf\shadowtype.h"
> >
</File> </File>
<File
RelativePath=".\src\odf\smil_transitiontype.cpp"
>
</File>
<File
RelativePath=".\src\odf\smil_transitiontype.h"
>
</File>
<File <File
RelativePath=".\src\odf\stylefamily.cpp" RelativePath=".\src\odf\stylefamily.cpp"
> >
......
...@@ -47,12 +47,6 @@ public: ...@@ -47,12 +47,6 @@ public:
void start_office_presentation(); void start_office_presentation();
void end_office_presentation(); void end_office_presentation();
//void start_paragraph(const std::wstring & styleName);
//void end_paragraph();
//void start_span(const std::wstring & styleName);
//void end_span();
bool start_page(const std::wstring & pageName, bool start_page(const std::wstring & pageName,
const std::wstring & pageStyleName, const std::wstring & pageStyleName,
const std::wstring & pageLayoutName, const std::wstring & pageLayoutName,
...@@ -89,21 +83,9 @@ public: ...@@ -89,21 +83,9 @@ public:
pptx_table_context & get_table_context(){return pptx_table_context_;} pptx_table_context & get_table_context(){return pptx_table_context_;}
// num_format_context & get_num_format_context() { return num_format_context_; }
// xlsx_defined_names & get_xlsx_defined_names() { return xlsx_defined_names_; }
// xlsx_table_metrics & get_table_metrics();
// xlsx_drawing_context & get_drawing_context();
// xlsx_drawing_context_handle & get_drawing_context_handle();
//
// xlsx_comments_context & get_comments_context();
//xlsx_comments_context_handle & get_comments_context_handle();
mediaitems & get_mediaitems() { return pptx_slide_context_.get_mediaitems(); } mediaitems & get_mediaitems() { return pptx_slide_context_.get_mediaitems(); }
//void start_hyperlink(const std::wstring & styleName);// //void start_hyperlink(const std::wstring & styleName);
//void end_hyperlink(std::wstring const & href); //void end_hyperlink(std::wstring const & href);
void process_master_pages(); void process_master_pages();
......
...@@ -28,10 +28,13 @@ public: ...@@ -28,10 +28,13 @@ public:
struct _transition struct _transition
{ {
bool Enabled; bool Enabled;
std::wstring Speed;
int Time;
std::wstring Type; std::wstring Type;
std::wstring Direction;
_CP_OPT(std::wstring) Speed;
_CP_OPT(int) Time;
_CP_OPT(std::wstring) Dir;
_CP_OPT(std::wstring) Param;
bool onClick;
}; };
Impl(const std::wstring & odfPacket) : mediaitems_(odfPacket),odfPacket_(odfPacket) Impl(const std::wstring & odfPacket) : mediaitems_(odfPacket),odfPacket_(odfPacket)
...@@ -93,7 +96,9 @@ public: ...@@ -93,7 +96,9 @@ public:
pptx_drawings_ = pptx_drawings::create(); pptx_drawings_ = pptx_drawings::create();
memset(&transition_,0,sizeof(_transition)); transition_.Enabled = false;
transition_.Speed = boost::none;
transition_.onClick = true;
} }
size_t next_rId() size_t next_rId()
...@@ -133,21 +138,31 @@ void pptx_slide_context::start_slide_animation() ...@@ -133,21 +138,31 @@ void pptx_slide_context::start_slide_animation()
impl_->transition_.Enabled = true; impl_->transition_.Enabled = true;
//default //default
impl_->transition_.Speed = L"med";
impl_->transition_.Type = L"wipe"; impl_->transition_.Type = L"wipe";
impl_->transition_.Time = boost::none;
impl_->transition_.Dir = boost::none;
impl_->transition_.Param = boost::none;
//speed & onClick
}
void pptx_slide_context::set_transitionFilter(std::wstring & type,_CP_OPT(std::wstring) & dir,_CP_OPT(std::wstring) & dop,_CP_OPT(int) & time)
{
impl_->transition_.Type = type;
impl_->transition_.Time = time; // ( oo )
impl_->transition_.Dir = dir;
impl_->transition_.Param = dop;
} }
// !!!!
void pptx_slide_context::set_animation_duration(int dur) void pptx_slide_context::set_transitionAction(bool val)
{ {
impl_->transition_.Time = dur; impl_->transition_.onClick = val;
} }
//smil_direction_,smil_type_,smil_subtype_,smil_mode_,color);
void pptx_slide_context::set_transitionFilter( _CP_OPT(std::wstring) direction, void pptx_slide_context::set_transitionSpeed(std::wstring val)
_CP_OPT(std::wstring) type,
_CP_OPT(std::wstring) subtype,
_CP_OPT(std::wstring) mode,
_CP_OPT(std::wstring) fade_color)
{ {
if (val == L"medium")impl_->transition_.Speed=L"med";
else impl_->transition_.Speed= val;//fast / slow
} }
...@@ -542,22 +557,34 @@ void pptx_slide_context::serialize_animations(std::wostream & strm) ...@@ -542,22 +557,34 @@ void pptx_slide_context::serialize_animations(std::wostream & strm)
{ {
CP_XML_NODE(L"p:transition") CP_XML_NODE(L"p:transition")
{ {
if (impl_->transition_.Time>0) if (impl_->transition_.Speed)
{ {
CP_XML_ATTR(L"spd",impl_->transition_.Speed); CP_XML_ATTR(L"spd",impl_->transition_.Speed.get());
} }
if (impl_->transition_.Time >0) if (impl_->transition_.Time)
{ {
CP_XML_ATTR(L"advTm",impl_->transition_.Time); CP_XML_ATTR(L"advTm",impl_->transition_.Time.get());
} }
CP_XML_ATTR(L"advClick", impl_->transition_.onClick);
CP_XML_NODE(std::wstring(L"p:" + impl_->transition_.Type)) CP_XML_NODE(std::wstring(L"p:" + impl_->transition_.Type))
{ {
if (!impl_->transition_.Direction.empty()) if (impl_->transition_.Dir)
{
CP_XML_ATTR(L"dir",impl_->transition_.Dir.get());
}
if (impl_->transition_.Param)
{ {
CP_XML_ATTR(L"dir",impl_->transition_.Direction); if (impl_->transition_.Type == L"wheel")
CP_XML_ATTR(L"spokes",impl_->transition_.Param.get());
if (impl_->transition_.Type == L"fade")
CP_XML_ATTR(L"thruBlk",impl_->transition_.Param.get());
if (impl_->transition_.Type == L"split")
CP_XML_ATTR(L"orient",impl_->transition_.Param.get());
} }
} }
//p:sndAc
} }
} }
//CP_XML_NODE(L"p:timing")- p:par //CP_XML_NODE(L"p:timing")- p:par
......
...@@ -16,7 +16,7 @@ struct _oox_fill; ...@@ -16,7 +16,7 @@ struct _oox_fill;
class pptx_slide_context class pptx_slide_context
{ {
public: public:
pptx_slide_context(pptx_conversion_context & Context/*, pptx_text_context & textCotnext*/); pptx_slide_context(pptx_conversion_context & Context);
void start_slide(); void start_slide();
void end_slide(){} void end_slide(){}
...@@ -24,9 +24,9 @@ public: ...@@ -24,9 +24,9 @@ public:
void start_slide_animation(); void start_slide_animation();
void end_slide_animation(){} void end_slide_animation(){}
void set_animation_duration(int dur); void set_transitionFilter(std::wstring & type,_CP_OPT(std::wstring) & dir, _CP_OPT(std::wstring) & dop, _CP_OPT(int) & time);
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_transitionAction(bool val);
void set_transitionSpeed(std::wstring val);
/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////
void set_rect(double width_pt, double height_pt, double x_pt, double y_pt); void set_rect(double width_pt, double height_pt, double x_pt, double y_pt);
......
...@@ -90,6 +90,7 @@ void anim_transition_filter_attlist::add_attributes( const xml::attributes_wc_pt ...@@ -90,6 +90,7 @@ void anim_transition_filter_attlist::add_attributes( const xml::attributes_wc_pt
CP_APPLY_ATTR(L"smil:type", smil_type_); CP_APPLY_ATTR(L"smil:type", smil_type_);
CP_APPLY_ATTR(L"smil:fadeColor", smil_fadeColor_); CP_APPLY_ATTR(L"smil:fadeColor", smil_fadeColor_);
CP_APPLY_ATTR(L"smil:mode", smil_mode_); CP_APPLY_ATTR(L"smil:mode", smil_mode_);
CP_APPLY_ATTR(L"smil:dur", smil_dur_);
} }
...@@ -104,17 +105,189 @@ void anim_transitionFilter::add_attributes( const xml::attributes_wc_ptr & Attri ...@@ -104,17 +105,189 @@ void anim_transitionFilter::add_attributes( const xml::attributes_wc_ptr & Attri
void anim_transitionFilter::pptx_convert(oox::pptx_conversion_context & Context) void anim_transitionFilter::pptx_convert(oox::pptx_conversion_context & Context)
{ {
if (common_anim_smil_attlist_.smil_dur_) _CP_OPT(std::wstring) color;
_CP_OPT(std::wstring) dir;
_CP_OPT(int) time;
std::wstring type;
_CP_OPT(std::wstring) param;
if (anim_transition_filter_attlist_.smil_dur_)
{ {
Context.get_slide_context().set_animation_duration(5000/*common_anim_smil_attlist_.smil_dur_*/);//*1000); time = anim_transition_filter_attlist_.smil_dur_->get_value();
//need parsing ~ 3s
} }
_CP_OPT(std::wstring) color; if (anim_transition_filter_attlist_.smil_fadeColor_)
if (smil_fadeColor_) {
color =anim_transition_filter_attlist_.smil_fadeColor_->get_hex_value();
}
smil_transition_type::type transition_type;
if (anim_transition_filter_attlist_.smil_type_)
{
transition_type = anim_transition_filter_attlist_.smil_type_->get_type();
}
switch(transition_type)
{
case smil_transition_type::barnVeeWipe:
type = L"split";
break;
case smil_transition_type::irisWipe:
if ((anim_transition_filter_attlist_.smil_subtype_) && (anim_transition_filter_attlist_.smil_subtype_.get()==L"diamond"))
type = L"diamond";
else
type = L"zoom";
break;
case smil_transition_type::miscDiagonalWipe:
if ((anim_transition_filter_attlist_.smil_subtype_) && (anim_transition_filter_attlist_.smil_subtype_.get()==L"doubleDiamond"))
type = L"diamond";
else
type = L"zoom";
break;
case smil_transition_type::ellipseWipe:
case smil_transition_type::eyeWipe:
type = L"circle";
break;
case smil_transition_type::roundRectWipe:
type = L"zoom";
break;
case smil_transition_type::fourBoxWipe:
case smil_transition_type::triangleWipe:
case smil_transition_type::arrowHeadWipe:
case smil_transition_type::pentagonWipe:
case smil_transition_type::hexagonWipe:
case smil_transition_type::starWipe:
case smil_transition_type::miscShapeWipe:
type = L"plus";
break;
case smil_transition_type::pinWheelWipe:
param = L"2";
case smil_transition_type::clockWipe:
case smil_transition_type::singleSweepWipe: //
case smil_transition_type::doubleFanWipe: //
type = L"wheel";
if ((anim_transition_filter_attlist_.smil_subtype_) && (anim_transition_filter_attlist_.smil_subtype_.get()==L"oneBlade")) param = L"1";
if ((anim_transition_filter_attlist_.smil_subtype_) && (anim_transition_filter_attlist_.smil_subtype_.get()==L"threeBlade"))param = L"3";
if ((anim_transition_filter_attlist_.smil_subtype_) && (anim_transition_filter_attlist_.smil_subtype_.get()==L"fourBlade")) param = L"4";
if ((anim_transition_filter_attlist_.smil_subtype_) && (anim_transition_filter_attlist_.smil_subtype_.get()==L"eightBlade"))param = L"8";
break;
case smil_transition_type::fanWipe:
type = L"wedge";
break;
case smil_transition_type::fade:
type = L"fade";
param = L"1";
break;
case smil_transition_type::checkerBoardWipe:
type = L"checker";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"across") dir = L"horz";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"down") dir = L"vert";
break;
case smil_transition_type::blindsWipe:
type = L"blinds";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"vertical") dir = L"vert";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"horizontal") dir = L"horz";
break;
case smil_transition_type::diagonalWipe:
case smil_transition_type::waterfallWipe:
type = L"strips";
if (anim_transition_filter_attlist_.smil_subtype_)
{
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"horizontalLeft") dir = L"rd";
else if(anim_transition_filter_attlist_.smil_subtype_.get()==L"horizontalRight")dir = L"lu";
else if(anim_transition_filter_attlist_.smil_subtype_.get()==L"verticalRight") dir = L"ld";
else dir = L"ru";
}
break;
case smil_transition_type::dissolve:
type = L"dissolve";
break;
case smil_transition_type::randomBarWipe:
type = L"randomBar";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"vertical") dir = L"vert";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"horizontal") dir = L"horz";
break;
case smil_transition_type::pushWipe:
type = L"push";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"combVertical") {type = L"comb"; dir = L"vert";};
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"combHorizontal") {type = L"comb"; dir = L"horz";};
break;
case smil_transition_type::slideWipe:
type = L"pull";
break;
case smil_transition_type::boxWipe:
type = L"cover";
break;
case smil_transition_type::barnDoorWipe:
type = L"split";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"vertical") param = L"vert";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"horizontal") param = L"horz";
break;
case smil_transition_type::barWipe:
type = L"wipe";
if (anim_transition_filter_attlist_.smil_subtype_)
{ {
color = smil_fadeColor_->get_hex_value(); if (anim_transition_filter_attlist_.smil_subtype_.get()==L"fromTopLeft") {type = L"strips"; dir = L"rd";}
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"fromBottomLeft") {type = L"strips"; dir = L"ru";}
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"fromTopRight") {type = L"strips"; dir = L"ld";}
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"fromBottomRight"){type = L"strips"; dir = L"lu";}
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"fadeOverColor") {type = L"fade"; param = L"0";}
}
break;
///////////////////////////////////////////////////////
case smil_transition_type::bowTieWipe:
case smil_transition_type::veeWipe:
case smil_transition_type::zigZagWipe:
case smil_transition_type::barnZigZagWipe:
case smil_transition_type::doubleSweepWipe:
case smil_transition_type::saloonDoorWipe:
case smil_transition_type::windshieldWipe:
case smil_transition_type::snakeWipe:
case smil_transition_type::spiralWipe:
case smil_transition_type::parallelSnakesWipe:
case smil_transition_type::boxSnakesWipe:
break;
//////////////////////////////////////////////////////
}
if (anim_transition_filter_attlist_.smil_subtype_)
{
if (!dir)
{
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"leftToRight")
{
if ((anim_transition_filter_attlist_.smil_direction_) && (anim_transition_filter_attlist_.smil_direction_.get()==L"reverse"))dir = L"l";
else dir = L"r";
}
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"topToBottom")
{
if ((anim_transition_filter_attlist_.smil_direction_) && (anim_transition_filter_attlist_.smil_direction_.get()==L"reverse"))dir = L"u";
else dir = L"d";
} }
Context.get_slide_context().set_transitionFilter(smil_direction_,smil_type_,smil_subtype_,smil_mode_,color);
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"fromTop") dir = L"d";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"fromLeft") dir = L"r";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"fromRight") dir = L"l";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"fromBottom") dir = L"u";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"topRight") dir = L"ld";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"bottomLeft") dir = L"lu";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"bottomRight") dir = L"ru";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"topLeft") dir = L"rd";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"fromTopLeft") dir = L"rd";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"fromBottomLeft") dir = L"ru";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"fromTopRight") dir = L"ld";
if (anim_transition_filter_attlist_.smil_subtype_.get()==L"fromBottomRight")dir = L"lu";
}
if (!dir && (anim_transition_filter_attlist_.smil_direction_) && (anim_transition_filter_attlist_.smil_direction_.get()==L"reverse"))
dir = L"in";
}
Context.get_slide_context().set_transitionFilter(type , dir, param , time);
} }
......
...@@ -7,6 +7,8 @@ ...@@ -7,6 +7,8 @@
#include "office_elements.h" #include "office_elements.h"
#include "office_elements_create.h" #include "office_elements_create.h"
#include "common_attlists.h"
#include "smil_transitiontype.h"
namespace cpdoccore { namespace cpdoccore {
namespace odf { namespace odf {
...@@ -72,11 +74,11 @@ public: ...@@ -72,11 +74,11 @@ public:
_CP_OPT(std::wstring) smil_direction_; _CP_OPT(std::wstring) smil_direction_;
_CP_OPT(std::wstring) smil_subtype_; _CP_OPT(std::wstring) smil_subtype_;
_CP_OPT(std::wstring) smil_type_; _CP_OPT(smil_transition_type) smil_type_;
_CP_OPT(std::wstring) smil_dur_;
_CP_OPT(std::wstring) smil_mode_; _CP_OPT(std::wstring) smil_mode_;
_CP_OPT(color) smil_fadeColor; _CP_OPT(color) smil_fadeColor_;
} _CP_OPT(clockvalue) smil_dur_;
};
//anim:transitionFilter //anim:transitionFilter
class anim_transitionFilter : public office_element_impl<anim_transitionFilter> class anim_transitionFilter : public office_element_impl<anim_transitionFilter>
...@@ -95,6 +97,7 @@ public: ...@@ -95,6 +97,7 @@ public:
private: private:
virtual void add_child_element( xml::sax * Reader, const ::std::wstring & Ns, const ::std::wstring & Name){}
virtual void add_attributes( const xml::attributes_wc_ptr & Attributes ); virtual void add_attributes( const xml::attributes_wc_ptr & Attributes );
......
#include "precompiled_cpodf.h"
#include "clockvalue.h"
#include <iostream>
#include <sstream>
#include <lexical_cast.h>
#include <cpdoccore/CPAssert.h>
namespace cpdoccore { namespace odf {
static bool parseTime(const std::wstring & Time, double & Hours, double & Minutes, double & Seconds, int & Ms)
{
try
{
boost::match_results<std::wstring::const_iterator> res;
//Full clock values:
// 02:30:03 = 2 hours, 30 minutes and 3 seconds
// 50:00:10.25 = 50 hours, 10 seconds and 250 milliseconds
boost::wregex r1 (L"([\\d]+):([\\d]+):([\\d+(\\.\\d{0,})?]+)");
if (boost::regex_match(Time, res, r1))
{
Hours = boost::lexical_cast<int>(res[1].str());
Minutes = boost::lexical_cast<int>(res[2].str());
Seconds = boost::lexical_cast<double>(res[3].str());
return true;
}
//Partial clock value:
// 02:33 = 2 minutes and 33 seconds
// 00:10.5 = 10.5 seconds = 10 seconds and 500 milliseconds
std::wstring Time2 = L"00:10.5";
boost::wregex r2 (L"([\\d]+):([\\d+(\\.\\d{0,})?]+)");
if (boost::regex_match(Time, res, r2))
{
Minutes = boost::lexical_cast<int>(res[1].str());
Seconds = boost::lexical_cast<double>(res[2].str());
return true;
}
//Timecount values:
// 3.2h = 3.2 hours = 3 hours and 12 minutes
// 45min = 45 minutes
// 30s = 30 seconds
// 5ms = 5 milliseconds
// 12.467 = 12 seconds and 467 milliseconds
boost::wregex r3 (L"([\\d+(\\.\\d{0,})?]+)([A-Za-z]{0,})");
if (boost::regex_match(Time, res, r3))
{
if (!res[2].str().empty())
{
std::wstring n = res[2].str();
std::transform(n.begin(), n.end(), n.begin(), ::tolower);
if (n == L"h")
{
Hours = boost::lexical_cast<double>(res[1].str());
}
else if (n == L"min")
{
Minutes = boost::lexical_cast<double>(res[1].str());
}
else if (n == L"s")
{
Seconds = boost::lexical_cast<double>(res[1].str());
}
else if (n == L"ms")
{
Ms = boost::lexical_cast<int>(res[1].str());
}
}
else
Seconds = boost::lexical_cast<double>(res[1].str());
return true;
}
}
catch(...)
{
}
return false;
}
clockvalue clockvalue::parse(const std::wstring & Str)
{
int v=0;
int ms=0;
double h=0,m=0,s =0;
bool res = parseTime(Str,h,m,s,ms);
v = (((h*60)+m)*60+s)*1000+ms;
return clockvalue(v);
}
} }
#pragma once
#include <iosfwd>
#include <string>
#include "odfattributes.h"
namespace cpdoccore { namespace odf {
class clockvalue
{
public:
public:
clockvalue(int ms = 0) : value_(ms)
{}
int get_value() const
{
return value_;
}
static clockvalue parse(const std::wstring & Str);
private:
int value_;//in ms
};
}
APPLY_PARSE_XML_ATTRIBUTES(odf::clockvalue);
}
#ifndef _CPDOCCORE_ODF_COLOR_H_ #pragma once
#define _CPDOCCORE_ODF_COLOR_H_
#include <iosfwd> #include <iosfwd>
#include <string> #include <string>
...@@ -35,5 +34,3 @@ std::wostream & operator << (std::wostream & _Wostream, const color & _Color); ...@@ -35,5 +34,3 @@ std::wostream & operator << (std::wostream & _Wostream, const color & _Color);
APPLY_PARSE_XML_ATTRIBUTES(odf::color); APPLY_PARSE_XML_ATTRIBUTES(odf::color);
} }
#endif
...@@ -482,7 +482,7 @@ void common_anim_smil_attlist::add_attributes( const xml::attributes_wc_ptr & At ...@@ -482,7 +482,7 @@ void common_anim_smil_attlist::add_attributes( const xml::attributes_wc_ptr & At
//CP_APPLY_ATTR(L"smil:direction", smil_direction_); //CP_APPLY_ATTR(L"smil:direction", smil_direction_);
// CP_APPLY_ATTR(L"smil:subtype", smil_subtype_); // CP_APPLY_ATTR(L"smil:subtype", smil_subtype_);
// CP_APPLY_ATTR(L"smil:type", smil_type_); // CP_APPLY_ATTR(L"smil:type", smil_type_);
CP_APPLY_ATTR(L"smil:dur", smil_dur_); //CP_APPLY_ATTR(L"smil:dur", smil_dur_);
} }
// //
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include "presentationclass.h" #include "presentationclass.h"
#include "xlink.h" #include "xlink.h"
#include "drawfill.h" #include "drawfill.h"
#include "clockvalue.h"
#define _CP_APPLY_PROP(A, B) \ #define _CP_APPLY_PROP(A, B) \
if (B) \ if (B) \
...@@ -802,14 +803,14 @@ public: ...@@ -802,14 +803,14 @@ public:
//_CP_APPLY_PROP(smil_direction_, Other.smil_direction_); //_CP_APPLY_PROP(smil_direction_, Other.smil_direction_);
//_CP_APPLY_PROP(smil_subtype_, Other.smil_subtype_); //_CP_APPLY_PROP(smil_subtype_, Other.smil_subtype_);
//_CP_APPLY_PROP(smil_type_, Other.smil_type_); //_CP_APPLY_PROP(smil_type_, Other.smil_type_);
_CP_APPLY_PROP(smil_dur_, Other.smil_dur_); // _CP_APPLY_PROP(smil_dur_, Other.smil_dur_);
} }
public: public:
//_CP_OPT(std::wstring) smil_direction_; //_CP_OPT(std::wstring) smil_direction_;
//_CP_OPT(std::wstring) smil_subtype_; //_CP_OPT(std::wstring) smil_subtype_;
//_CP_OPT(std::wstring) smil_type_; //_CP_OPT(std::wstring) smil_type_;
_CP_OPT(std::wstring) smil_dur_; //_CP_OPT(std::wstring) smil_dur_;
//_CP_OPT(color) smil_fadeColor; //_CP_OPT(color) smil_fadeColor;
......
...@@ -117,6 +117,22 @@ void draw_page::pptx_convert(oox::pptx_conversion_context & Context) ...@@ -117,6 +117,22 @@ void draw_page::pptx_convert(oox::pptx_conversion_context & Context)
oox::_oox_fill fill; oox::_oox_fill fill;
Compute_GraphicFill(properties->content().common_draw_fill_attlist_, Context.root()->odf_context().drawStyles() ,fill); Compute_GraphicFill(properties->content().common_draw_fill_attlist_, Context.root()->odf_context().drawStyles() ,fill);
Context.get_slide_context().add_background(fill); Context.get_slide_context().add_background(fill);
//÷àñòü ñâîéñòâ ïåðåõîäîâ ìåæäó ñëàéäàìè òóòà
if (properties->content().presentation_transition_type_)
{
if (properties->content().presentation_transition_type_.get() == L"automatic" ||
properties->content().presentation_transition_type_.get() == L"semi-automatic")
{
Context.get_slide_context().set_transitionAction(false);
}else
Context.get_slide_context().set_transitionAction(true);//manual (default)
}
if (properties->content().presentation_transition_speed_)
{
Context.get_slide_context().set_transitionSpeed(properties->content().presentation_transition_speed_.get());
}
} }
} }
} }
......
#ifndef _CPDOCCORE_LENGTH_H_
#define _CPDOCCORE_LENGTH_H_
#ifdef _MSC_VER
#pragma once #pragma once
#endif
#include <iosfwd> #include <iosfwd>
#include <string> #include <string>
...@@ -60,4 +55,3 @@ APPLY_PARSE_XML_ATTRIBUTES(odf::length); ...@@ -60,4 +55,3 @@ APPLY_PARSE_XML_ATTRIBUTES(odf::length);
} }
#endif
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
#include "paragraph_elements.h" #include "paragraph_elements.h"
#include "text_elements.h" #include "text_elements.h"
#include "anim_elements.h"
#include "table_calculation_settings.h" #include "table_calculation_settings.h"
#include "number_style.h" #include "number_style.h"
......
#include "precompiled_cpodf.h"
#include "smil_transitiontype.h"
#include <ostream>
namespace cpdoccore { namespace odf {
smil_transition_type smil_transition_type::parse(const std::wstring & Str)
{
std::wstring tmp = Str;
boost::algorithm::to_lower(tmp);
if(tmp == L"barwipe") return smil_transition_type( barWipe );
else if(tmp == L"boxwipe") return smil_transition_type( boxWipe );
else if(tmp == L"fourboxwipe") return smil_transition_type( fourBoxWipe );
else if(tmp == L"barndoorwipe") return smil_transition_type( barnDoorWipe );
else if(tmp == L"diagonalwipe") return smil_transition_type( diagonalWipe );
else if(tmp == L"bowtiewipe") return smil_transition_type( bowTieWipe );
else if(tmp == L"miscdiagonalwipe") return smil_transition_type( miscDiagonalWipe );
else if(tmp == L"veewipe") return smil_transition_type( veeWipe );
else if(tmp == L"barnveewipe") return smil_transition_type( barnVeeWipe );
else if(tmp == L"zigzagwipe") return smil_transition_type( zigZagWipe );
else if(tmp == L"barnzigzagwipe") return smil_transition_type( barnZigZagWipe );
else if(tmp == L"iriswipe") return smil_transition_type( irisWipe);
else if(tmp == L"trianglewipe") return smil_transition_type( triangleWipe);
else if(tmp == L"arrowheadwipe") return smil_transition_type( arrowHeadWipe );
else if(tmp == L"pentagonwipe") return smil_transition_type( pentagonWipe );
else if(tmp == L"hexagonwipe") return smil_transition_type( hexagonWipe );
else if(tmp == L"ellipsewipe") return smil_transition_type( ellipseWipe );
else if(tmp == L"eyewipe") return smil_transition_type( eyeWipe );
else if(tmp == L"roundrectwipe") return smil_transition_type( roundRectWipe );
else if(tmp == L"starwipe") return smil_transition_type( starWipe );
else if(tmp == L"miscshapewipe") return smil_transition_type( miscShapeWipe );
else if(tmp == L"clockwipe") return smil_transition_type( clockWipe );
else if(tmp == L"pinwheelwipe") return smil_transition_type( pinWheelWipe );
else if(tmp == L"singlesweepwipe") return smil_transition_type( singleSweepWipe);
else if(tmp == L"fanwipe") return smil_transition_type( fanWipe );
else if(tmp == L"doublefanwipe") return smil_transition_type( doubleFanWipe );
else if(tmp == L"doublesweepwipe") return smil_transition_type( doubleSweepWipe );
else if(tmp == L"saloondoorwipe") return smil_transition_type( saloonDoorWipe );
else if(tmp == L"windshieldwipe") return smil_transition_type( windshieldWipe );
else if(tmp == L"snakewipe") return smil_transition_type( snakeWipe );
else if(tmp == L"spiralwipe") return smil_transition_type( spiralWipe );
else if(tmp == L"parallelsnakeswipe")return smil_transition_type( parallelSnakesWipe );
else if(tmp == L"boxsnakeswipe") return smil_transition_type( boxSnakesWipe );
else if(tmp == L"waterfallwipe") return smil_transition_type( waterfallWipe );
else if(tmp == L"pushwipe") return smil_transition_type( pushWipe );
else if(tmp == L"slidewipe") return smil_transition_type( slideWipe );
else if(tmp == L"fade") return smil_transition_type( fade );
else if(tmp == L"checkerboardwipe") return smil_transition_type( checkerBoardWipe);
else if(tmp == L"blindswipe") return smil_transition_type( blindsWipe);
else if(tmp == L"dissolve") return smil_transition_type( dissolve);
else if(tmp == L"randombarwipe") return smil_transition_type( randomBarWipe);
else
{
return smil_transition_type( barWipe );
}
}
} }
#pragma once
#include <string>
#include "odfattributes.h"
namespace cpdoccore { namespace odf {
class smil_transition_type
{
public:
enum type
{
barWipe,
boxWipe,
fourBoxWipe,
barnDoorWipe,
diagonalWipe,
bowTieWipe,
miscDiagonalWipe,
veeWipe,
barnVeeWipe,
zigZagWipe,
barnZigZagWipe,
irisWipe,
triangleWipe,
arrowHeadWipe,
pentagonWipe,
hexagonWipe,
ellipseWipe,
eyeWipe,
roundRectWipe,
starWipe,
miscShapeWipe,
clockWipe,
pinWheelWipe,
singleSweepWipe,
fanWipe,
doubleFanWipe,
doubleSweepWipe,
saloonDoorWipe,
windshieldWipe,
snakeWipe,
spiralWipe,
parallelSnakesWipe,
boxSnakesWipe,
waterfallWipe,
pushWipe,
slideWipe,
fade,
checkerBoardWipe,
blindsWipe,
dissolve,
randomBarWipe
};
smil_transition_type() {}
smil_transition_type(type _Type) : type_(_Type)
{}
type get_type() const
{
return type_;
};
static smil_transition_type parse(const std::wstring & Str);
private:
type type_;
};
std::wostream & operator << (std::wostream & _Wostream, const smil_transition_type & _Val);
}
APPLY_PARSE_XML_ATTRIBUTES(odf::smil_transition_type);
}
...@@ -71,11 +71,16 @@ void style_drawing_page_properties::add_child_element( xml::sax * Reader, const ...@@ -71,11 +71,16 @@ void style_drawing_page_properties::add_child_element( xml::sax * Reader, const
void drawing_page_properties::add_attributes( const xml::attributes_wc_ptr & Attributes ) void drawing_page_properties::add_attributes( const xml::attributes_wc_ptr & Attributes )
{ {
common_draw_fill_attlist_.add_attributes(Attributes); common_draw_fill_attlist_.add_attributes(Attributes);
anim_transition_filter_attlist_.add_attributes(Attributes);
CP_APPLY_ATTR(L"draw:fill-image-height", draw_fill_image_height_); CP_APPLY_ATTR(L"draw:fill-image-height", draw_fill_image_height_);
CP_APPLY_ATTR(L"draw:fill-image-width", draw_fill_image_width_); CP_APPLY_ATTR(L"draw:fill-image-width", draw_fill_image_width_);
CP_APPLY_ATTR(L"draw:background-size", draw_background_size_); CP_APPLY_ATTR(L"draw:background-size", draw_background_size_);
CP_APPLY_ATTR(L"presentation:transition-type", presentation_transition_type_);
CP_APPLY_ATTR(L"presentation:transition-style", presentation_transition_style_);
CP_APPLY_ATTR(L"presentation:transition-speed", presentation_transition_speed_);
} }
void drawing_page_properties::apply_from(const drawing_page_properties & Other) void drawing_page_properties::apply_from(const drawing_page_properties & Other)
{ {
......
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
#include "office_elements_create.h" #include "office_elements_create.h"
#include "presentationclass.h" #include "presentationclass.h"
#include "anim_elements.h"
#include "drawfill.h" #include "drawfill.h"
namespace cpdoccore { namespace cpdoccore {
...@@ -51,14 +53,16 @@ public: ...@@ -51,14 +53,16 @@ public:
void apply_from(const drawing_page_properties & Other); void apply_from(const drawing_page_properties & Other);
common_draw_fill_attlist common_draw_fill_attlist_; common_draw_fill_attlist common_draw_fill_attlist_;
anim_transition_filter_attlist anim_transition_filter_attlist_;
_CP_OPT(length) draw_fill_image_height_; _CP_OPT(length) draw_fill_image_height_;
_CP_OPT(length) draw_fill_image_width_; _CP_OPT(length) draw_fill_image_width_;
_CP_OPT(std::wstring) draw_background_size_;//"border" or "full" _CP_OPT(std::wstring) draw_background_size_;//"border" or "full"
//_CP_OPT(std::wstring) presentation_transition_type_;
//presentation:transition-style _CP_OPT(std::wstring)presentation_transition_type_;//manual, automatic, semi-automatic ( )
//presentation:transition-speed _CP_OPT(std::wstring)presentation_transition_style_;//none, fade, move, uncover,clockwise, .... smil
_CP_OPT(std::wstring)presentation_transition_speed_;//slow, medium, fast
//presentation:display-footer //presentation:display-footer
//presentation:display-page-number //presentation:display-page-number
......
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