diff options
author | Zolnai Tamás <tamas.zolnai@collabora.com> | 2014-04-16 08:26:48 +0200 |
---|---|---|
committer | Zolnai Tamás <tamas.zolnai@collabora.com> | 2014-04-16 09:29:11 +0200 |
commit | 728acd3390ebcf546765f33b750f3c5f784d7aa3 (patch) | |
tree | e30ec993ed61633e26f1bdf91880cec22898fc20 /slideshow | |
parent | 77be5e9064134fa0b559537433d57b6c0c646fa5 (diff) |
Revertion of changes related to ExternalShapeBase
This reverts commits:
50b60c5508b3ba5a0b8dc05eac511d7edaa5a343
0ae0301d1cd6e690473f932411ca880c20f45e13
2a594eb22bfed62fdbcef51a56c2c180bea0283f
Got some suggestions that the deleted things can be usefull.
Diffstat (limited to 'slideshow')
-rw-r--r-- | slideshow/source/engine/animationnodes/animationcommandnode.cxx | 2 | ||||
-rw-r--r-- | slideshow/source/engine/animationnodes/animationcommandnode.hxx | 5 | ||||
-rw-r--r-- | slideshow/source/engine/shapes/appletshape.cxx | 26 | ||||
-rw-r--r-- | slideshow/source/engine/shapes/externalshapebase.cxx | 43 | ||||
-rw-r--r-- | slideshow/source/engine/shapes/externalshapebase.hxx (renamed from slideshow/source/inc/externalshapebase.hxx) | 32 | ||||
-rw-r--r-- | slideshow/source/engine/shapes/mediashape.cxx | 27 | ||||
-rw-r--r-- | slideshow/source/inc/externalmediashape.hxx | 85 |
7 files changed, 178 insertions, 42 deletions
diff --git a/slideshow/source/engine/animationnodes/animationcommandnode.cxx b/slideshow/source/engine/animationnodes/animationcommandnode.cxx index 53f9c8cad9b3..c7cbf0969268 100644 --- a/slideshow/source/engine/animationnodes/animationcommandnode.cxx +++ b/slideshow/source/engine/animationnodes/animationcommandnode.cxx @@ -49,7 +49,7 @@ AnimationCommandNode::AnimationCommandNode( uno::Reference<animations::XAnimatio uno::Reference< drawing::XShape > xShape( mxCommandNode->getTarget(), uno::UNO_QUERY ); ShapeSharedPtr pShape( getContext().mpSubsettableShapeManager->lookupShape( xShape ) ); - mpShape = ::boost::dynamic_pointer_cast< ExternalShapeBase >( pShape ); + mpShape = ::boost::dynamic_pointer_cast< ExternalMediaShape >( pShape ); } void AnimationCommandNode::dispose() diff --git a/slideshow/source/engine/animationnodes/animationcommandnode.hxx b/slideshow/source/engine/animationnodes/animationcommandnode.hxx index 9d8f278cb49f..3ce5f23f5374 100644 --- a/slideshow/source/engine/animationnodes/animationcommandnode.hxx +++ b/slideshow/source/engine/animationnodes/animationcommandnode.hxx @@ -20,10 +20,9 @@ #define INCLUDED_SLIDESHOW_ANIMATIONCOMMANDNODE_HXX #include "basecontainernode.hxx" -#include "externalshapebase.hxx" +#include "externalmediashape.hxx" #include "soundplayer.hxx" #include "com/sun/star/animations/XCommand.hpp" -#include <boost/shared_ptr.hpp> namespace slideshow { namespace internal { @@ -50,7 +49,7 @@ private: virtual bool hasPendingAnimation() const SAL_OVERRIDE; private: - boost::shared_ptr< ExternalShapeBase > mpShape; + ExternalMediaShapeSharedPtr mpShape; ::com::sun::star::uno::Reference< ::com::sun::star::animations::XCommand > mxCommandNode; }; diff --git a/slideshow/source/engine/shapes/appletshape.cxx b/slideshow/source/engine/shapes/appletshape.cxx index d9fc316ba008..f5de6d81a68c 100644 --- a/slideshow/source/engine/shapes/appletshape.cxx +++ b/slideshow/source/engine/shapes/appletshape.cxx @@ -79,12 +79,6 @@ namespace slideshow sal_Size nNumPropEntries, const SlideShowContext& rContext ); // throw ShapeLoadFailedException; - virtual void play() SAL_OVERRIDE; - virtual void stop() SAL_OVERRIDE; - virtual void pause() SAL_OVERRIDE; - virtual bool isPlaying() const SAL_OVERRIDE; - virtual void setMediaTime(double) SAL_OVERRIDE; - private: // View layer methods @@ -102,6 +96,11 @@ namespace slideshow virtual bool implRender( const ::basegfx::B2DRange& rCurrBounds ) const SAL_OVERRIDE; virtual void implViewChanged( const UnoViewSharedPtr& rView ) SAL_OVERRIDE; virtual void implViewsChanged() SAL_OVERRIDE; + virtual bool implStartIntrinsicAnimation() SAL_OVERRIDE; + virtual bool implEndIntrinsicAnimation() SAL_OVERRIDE; + virtual bool implPauseIntrinsicAnimation() SAL_OVERRIDE; + virtual bool implIsIntrinsicAnimationPlaying() const SAL_OVERRIDE; + virtual void implSetIntrinsicAnimationTime(double) SAL_OVERRIDE; const OUString maServiceName; const char** mpPropCopyTable; @@ -251,7 +250,7 @@ namespace slideshow - void AppletShape::play() + bool AppletShape::implStartIntrinsicAnimation() { ::std::for_each( maViewAppletShapes.begin(), maViewAppletShapes.end(), @@ -259,37 +258,42 @@ namespace slideshow _1, ::boost::cref( getBounds() ))); mbIsPlaying = true; + + return true; } - void AppletShape::stop() + bool AppletShape::implEndIntrinsicAnimation() { ::std::for_each( maViewAppletShapes.begin(), maViewAppletShapes.end(), ::boost::mem_fn( &ViewAppletShape::endApplet ) ); mbIsPlaying = false; + + return true; } - void AppletShape::pause() + bool AppletShape::implPauseIntrinsicAnimation() { // TODO(F1): any way of temporarily disabling/deactivating // applets? + return true; } - bool AppletShape::isPlaying() const + bool AppletShape::implIsIntrinsicAnimationPlaying() const { return mbIsPlaying; } - void AppletShape::setMediaTime(double) + void AppletShape::implSetIntrinsicAnimationTime(double) { // No way of doing this, or? } diff --git a/slideshow/source/engine/shapes/externalshapebase.cxx b/slideshow/source/engine/shapes/externalshapebase.cxx index 05ad628bc9f5..00c0766df8a5 100644 --- a/slideshow/source/engine/shapes/externalshapebase.cxx +++ b/slideshow/source/engine/shapes/externalshapebase.cxx @@ -73,13 +73,11 @@ namespace slideshow virtual bool enableAnimations() SAL_OVERRIDE { - mrBase.play(); - return true; + return mrBase.implStartIntrinsicAnimation(); } virtual bool disableAnimations() SAL_OVERRIDE { - mrBase.stop(); - return true; + return mrBase.implEndIntrinsicAnimation(); } ExternalShapeBase& mrBase; @@ -128,6 +126,43 @@ namespace slideshow return mxShape; } + + + void ExternalShapeBase::play() + { + implStartIntrinsicAnimation(); + } + + + + void ExternalShapeBase::stop() + { + implEndIntrinsicAnimation(); + } + + + + void ExternalShapeBase::pause() + { + implPauseIntrinsicAnimation(); + } + + + + bool ExternalShapeBase::isPlaying() const + { + return implIsIntrinsicAnimationPlaying(); + } + + + + void ExternalShapeBase::setMediaTime(double fTime) + { + implSetIntrinsicAnimationTime(fTime); + } + + + bool ExternalShapeBase::update() const { return render(); diff --git a/slideshow/source/inc/externalshapebase.hxx b/slideshow/source/engine/shapes/externalshapebase.hxx index 67a1c2e03ed4..4de13609c8d0 100644 --- a/slideshow/source/inc/externalshapebase.hxx +++ b/slideshow/source/engine/shapes/externalshapebase.hxx @@ -22,11 +22,11 @@ #include <vector> +#include "externalmediashape.hxx" #include "unoview.hxx" #include "subsettableshapemanager.hxx" #include "slideshowexceptions.hxx" #include "slideshowcontext.hxx" -#include "shape.hxx" namespace slideshow @@ -44,7 +44,7 @@ namespace slideshow (including mutual overdraw). It therefore reports yes for the isBackgroundDetached() question. */ - class ExternalShapeBase : public Shape + class ExternalShapeBase : public ExternalMediaShape { public: /** Create a shape for the given XShape for an external shape @@ -67,16 +67,12 @@ namespace slideshow // animation methods - /// override in derived class to play external viewer - virtual void play() = 0; - /// override in derived class to stop external viewer - virtual void stop() = 0; - /// override in derived class to pause external viewer - virtual void pause() = 0; - /// override in derived class to return status of animation - virtual bool isPlaying() const = 0; - /// override in derived class to set media time - virtual void setMediaTime(double) = 0; + + virtual void play() SAL_OVERRIDE; + virtual void stop() SAL_OVERRIDE; + virtual void pause() SAL_OVERRIDE; + virtual bool isPlaying() const SAL_OVERRIDE; + virtual void setMediaTime(double) SAL_OVERRIDE; // render methods @@ -111,6 +107,18 @@ namespace slideshow /// override in derived class to resize virtual void implViewsChanged() = 0; + /// override in derived class to start external viewer + virtual bool implStartIntrinsicAnimation() = 0; + /// override in derived class to stop external viewer + virtual bool implEndIntrinsicAnimation() = 0; + /// override in derived class to pause external viewer + virtual bool implPauseIntrinsicAnimation() = 0; + /// override in derived class to return status of animation + virtual bool implIsIntrinsicAnimationPlaying() const = 0; + /// override in derived class to set media time + virtual void implSetIntrinsicAnimationTime(double) = 0; + + /// The associated XShape ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > mxShape; diff --git a/slideshow/source/engine/shapes/mediashape.cxx b/slideshow/source/engine/shapes/mediashape.cxx index 83f3df8451ac..f50e84b408aa 100644 --- a/slideshow/source/engine/shapes/mediashape.cxx +++ b/slideshow/source/engine/shapes/mediashape.cxx @@ -65,12 +65,6 @@ namespace slideshow double nPrio, const SlideShowContext& rContext ); // throw ShapeLoadFailedException; - virtual void play() SAL_OVERRIDE; - virtual void stop() SAL_OVERRIDE; - virtual void pause() SAL_OVERRIDE; - virtual bool isPlaying() const SAL_OVERRIDE; - virtual void setMediaTime(double) SAL_OVERRIDE; - private: // View layer methods @@ -88,6 +82,11 @@ namespace slideshow virtual bool implRender( const ::basegfx::B2DRange& rCurrBounds ) const SAL_OVERRIDE; virtual void implViewChanged( const UnoViewSharedPtr& rView ) SAL_OVERRIDE; virtual void implViewsChanged() SAL_OVERRIDE; + virtual bool implStartIntrinsicAnimation() SAL_OVERRIDE; + virtual bool implEndIntrinsicAnimation() SAL_OVERRIDE; + virtual bool implPauseIntrinsicAnimation() SAL_OVERRIDE; + virtual bool implIsIntrinsicAnimationPlaying() const SAL_OVERRIDE; + virtual void implSetIntrinsicAnimationTime(double) SAL_OVERRIDE; /// the list of active view shapes (one for each registered view layer) typedef ::std::vector< ViewMediaShapeSharedPtr > ViewMediaShapeVector; @@ -217,47 +216,53 @@ namespace slideshow - void MediaShape::play() + bool MediaShape::implStartIntrinsicAnimation() { ::std::for_each( maViewMediaShapes.begin(), maViewMediaShapes.end(), ::boost::mem_fn( &ViewMediaShape::startMedia ) ); mbIsPlaying = true; + + return true; } - void MediaShape::stop() + bool MediaShape::implEndIntrinsicAnimation() { ::std::for_each( maViewMediaShapes.begin(), maViewMediaShapes.end(), ::boost::mem_fn( &ViewMediaShape::endMedia ) ); mbIsPlaying = false; + + return true; } - void MediaShape::pause() + bool MediaShape::implPauseIntrinsicAnimation() { ::std::for_each( maViewMediaShapes.begin(), maViewMediaShapes.end(), ::boost::mem_fn( &ViewMediaShape::pauseMedia ) ); mbIsPlaying = false; + + return true; } - bool MediaShape::isPlaying() const + bool MediaShape::implIsIntrinsicAnimationPlaying() const { return mbIsPlaying; } - void MediaShape::setMediaTime(double fTime) + void MediaShape::implSetIntrinsicAnimationTime(double fTime) { ::std::for_each( maViewMediaShapes.begin(), maViewMediaShapes.end(), diff --git a/slideshow/source/inc/externalmediashape.hxx b/slideshow/source/inc/externalmediashape.hxx new file mode 100644 index 000000000000..c55d0ba1f570 --- /dev/null +++ b/slideshow/source/inc/externalmediashape.hxx @@ -0,0 +1,85 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef INCLUDED_SLIDESHOW_EXTERNALMEDIASHAPE_HXX +#define INCLUDED_SLIDESHOW_EXTERNALMEDIASHAPE_HXX + +#include <boost/shared_ptr.hpp> + +#include "shape.hxx" + + +namespace slideshow +{ + namespace internal + { + /** Represents a shape containing media (video, sound). + + This interface adds media handling methods to a shape. It + allows starting/stopping and pausing playback. + */ + class ExternalMediaShape : public Shape + { + public: + // Animation methods + + + /** Notify the Shape that it should start with playback + + This method enters playback mode on all registered + views. It makes the media initially visible (for videos). + */ + virtual void play() = 0; + + /** Notify the Shape that it should stop playback + + This method leaves playback mode on all registered + views. The media is then rewound to the start, and + removed from screen (for videos) + */ + virtual void stop() = 0; + + /** Notify the Shape that it should pause playback + + This method stops playback on all registered + views. The media stays visible (for videos) + */ + virtual void pause() = 0; + + /** Query whether the media is currently playing. + */ + virtual bool isPlaying() const = 0; + + /** Set media time in seconds. + + @param fTime + Time in seconds of the media time line, that should now be + presented + */ + virtual void setMediaTime(double fTime) = 0; + }; + + typedef ::boost::shared_ptr< ExternalMediaShape > ExternalMediaShapeSharedPtr; + + } +} + +#endif /* INCLUDED_SLIDESHOW_EXTERNALMEDIASHAPE_HXX */ + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |