From 36e22e83a1ca3106d6ef3fbb6ba066a447a65601 Mon Sep 17 00:00:00 2001 From: Jacobo Aragunde PĂ©rez Date: Tue, 6 May 2014 12:45:54 +0200 Subject: oox: preserve camera rotation on shape 3D effects. Camera options in shape 3D effects can have rotation settings like in the following example: This patch preserves the a:rot tag and its attributes using the shape grab bag. We created the class Scene3DRotationPropertiesContext to be piled on top of a Scene3DPropertiesContext and process the contents of the child item. It also adds a unit test for this case. Change-Id: Id6bf58ad05fe5b49061619b6750ed0658badc9af --- include/oox/drawingml/scene3dcontext.hxx | 11 +++++++++++ include/oox/drawingml/shape3dproperties.hxx | 8 ++++++++ 2 files changed, 19 insertions(+) (limited to 'include') diff --git a/include/oox/drawingml/scene3dcontext.hxx b/include/oox/drawingml/scene3dcontext.hxx index bbee4e677b9f..82af76eba44b 100644 --- a/include/oox/drawingml/scene3dcontext.hxx +++ b/include/oox/drawingml/scene3dcontext.hxx @@ -27,6 +27,17 @@ namespace oox { namespace drawingml { struct Shape3DProperties; +class Scene3DRotationPropertiesContext : public ::oox::core::ContextHandler2 +{ +public: + Scene3DRotationPropertiesContext( ::oox::core::ContextHandler2Helper& rParent, RotationProperties& rRotationProperties ) throw(); + + ::oox::core::ContextHandlerRef onCreateContext( ::sal_Int32 Element, const ::oox::AttributeList& rAttribs ) SAL_OVERRIDE; + +private: + RotationProperties& mrRotationProperties; +}; + class Scene3DPropertiesContext : public ::oox::core::ContextHandler2 { public: diff --git a/include/oox/drawingml/shape3dproperties.hxx b/include/oox/drawingml/shape3dproperties.hxx index 9d89753867ab..efce9e0d0566 100644 --- a/include/oox/drawingml/shape3dproperties.hxx +++ b/include/oox/drawingml/shape3dproperties.hxx @@ -36,6 +36,13 @@ namespace drawingml { +struct RotationProperties +{ + OptValue< sal_Int32 > mnLatitude; + OptValue< sal_Int32 > mnLongitude; + OptValue< sal_Int32 > mnRevolution; +}; + struct Shape3DProperties { OptValue< sal_Int32 > mnPreset; @@ -43,6 +50,7 @@ struct Shape3DProperties OptValue< float > mfZoom; OptValue< sal_Int32 > mnLightRigDirection; OptValue< sal_Int32 > mnLightRigType; + RotationProperties maCameraRotation; /** Overwrites all members that are explicitly set in rSourceProps. */ void assignUsed( const Shape3DProperties& rSourceProps ); -- cgit