summaryrefslogtreecommitdiff
path: root/slideshow/source/inc/viewlayer.hxx
diff options
context:
space:
mode:
authorOliver Bolte <obo@openoffice.org>2007-07-17 14:19:50 +0000
committerOliver Bolte <obo@openoffice.org>2007-07-17 14:19:50 +0000
commit1ca7bb11061ec62e8ddca2c5a96d0a75c22a15da (patch)
tree5d8b19c0efd092c2fdf0676f34602054c00f8555 /slideshow/source/inc/viewlayer.hxx
parenteb1fd751b1650c8848a81b2074c62bccda9d11ea (diff)
INTEGRATION: CWS presfixes12 (1.4.12); FILE MERGED
2007/04/30 07:24:13 thb 1.4.12.5: #i37778# Added extra transformation query method, to account for the fact that sprite positioning and static shape positioning might have different offsets. 2007/02/25 01:10:28 thb 1.4.12.4: #i37778# Cleared up error handling a lot: no longer quenching RuntimeExceptions; reporting assertions in the debug case; ViewLayer now reports resized sprite (which needs re-render from all shapes); fixed missing subset area reduction for glyph-level animations; added return of resize state from Layer::commitLayerBounds(); adapted unit tests to corrected behaviour 2007/02/13 14:33:13 thb 1.4.12.3: #i37778# Split up View::clear() into clear() and clearAll() method, to facilitate local, clip-region based slide updates 2007/02/06 17:18:15 thb 1.4.12.2: #i37778# Moved clear() method from View to ViewLayer (also sprites need to be cleared); fixed a few more cases of local code style violations; removed redundant inline keywords; finished Layer/LayerManager rework (Layer now represents ViewLayers, shapes and rendering are fully under LayerManager control); made shape comparator reusable 2007/01/29 14:02:32 thb 1.4.12.1: Issue number: #i37778# Larger slideshow refactoring. Wrote design and coding style manifest, and adapted the code to actually conform to this. In detail: - cleaned up ownership/disposable/weak_ptr story. removed hacks and explicit Disposable implementations, where workaround were available - removed object mutices, where superfluous - reworked EventMultiplexer (using templatized listener class now), added more events. EventMultiplexer now serves as a true blackboard - reworked directory structure: disjunct parts are now physically separated into directories, instantiation happens via factories & abstract interfaces - added CursorManager, to make setting mouse cursor less hackish - reworked DrawShape, to implement SeparateListener pattern - reworked IntrinsicAnimationActivity, to avoid cyclic references - modified hyperlink & shape cursor handling to communicate via EventMultiplexer - renamed & cleaned up files (presentation.cxx now named slideshowimpl.cxx, etc.) - added first version of the z-order fix to layer/layermanager - cleaned up include guards and include syntax
Diffstat (limited to 'slideshow/source/inc/viewlayer.hxx')
-rw-r--r--slideshow/source/inc/viewlayer.hxx139
1 files changed, 110 insertions, 29 deletions
diff --git a/slideshow/source/inc/viewlayer.hxx b/slideshow/source/inc/viewlayer.hxx
index 7e0b9053dd23..97eac0d17980 100644
--- a/slideshow/source/inc/viewlayer.hxx
+++ b/slideshow/source/inc/viewlayer.hxx
@@ -4,9 +4,9 @@
*
* $RCSfile: viewlayer.hxx,v $
*
- * $Revision: 1.4 $
+ * $Revision: 1.5 $
*
- * last change: $Author: kz $ $Date: 2006-12-13 16:07:55 $
+ * last change: $Author: obo $ $Date: 2007-07-17 15:19:50 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -33,16 +33,25 @@
*
************************************************************************/
-#ifndef _SLIDESHOW_VIEWLAYER_HXX
-#define _SLIDESHOW_VIEWLAYER_HXX
-
-#include <cppcanvas/spritecanvas.hxx>
-
-#include <basegfx/range/b2irectangle.hxx>
+#ifndef INCLUDED_SLIDESHOW_VIEWLAYER_HXX
+#define INCLUDED_SLIDESHOW_VIEWLAYER_HXX
+#include <sal/config.h>
#include <boost/shared_ptr.hpp>
-namespace basegfx { class B1DRange; class B2DRange; }
+namespace basegfx
+{
+ class B1DRange;
+ class B2DRange;
+ class B2DVector;
+ class B2DHomMatrix;
+ class B2DPolyPolygon;
+}
+namespace cppcanvas
+{
+ class Canvas;
+ class CustomSprite;
+}
/* Definition of ViewLayer interface */
@@ -51,52 +60,124 @@ namespace slideshow
{
namespace internal
{
+ class View;
+
class ViewLayer
{
public:
virtual ~ViewLayer() {}
+ /** Query whether layer displays on given view.
+
+ @return true, if this layer displays on the given
+ view.
+ */
+ virtual bool isOnView(boost::shared_ptr<View> const& rView) const = 0;
+
/** Get the associated canvas of this layer.
The canvas returned by this method must not change, as
long as this object is alive.
*/
- virtual ::cppcanvas::CanvasSharedPtr getCanvas() const = 0;
+ virtual boost::shared_ptr< cppcanvas::Canvas > getCanvas() const = 0;
+
+ /** Clear the clipped view layer area
+
+ This method clears the area inside the clip polygon,
+ if none is set, the transformed unit rectangle of the
+ view.
+ */
+ virtual void clear() const = 0;
+
+ /** Clear the complete view
+
+ This method clears the full view area (not only the
+ transformed unit rectangle, or within the clip). If
+ this ViewLayer represents the background layer, the
+ whole XSlideShowView is cleared. If this ViewLayer is
+ implemented using sprites (i.e. one of the upper
+ layers), the sprite is cleared to fully transparent.
+ */
+ virtual void clearAll() const = 0;
/** Create a sprite for this layer
@param rSpriteSizePixel
Sprite size in device pixel
- @return the sprite, or NULL on failure (or if this canvas
- does not support sprites)
+ @param nPriority
+ Sprite priority. This value determines the priority of
+ this sprite, relative to all other sprites of this
+ ViewLayer. The higher the priority, the closer to the
+ foreground the sprite will be.
+
+ @return the sprite, or NULL on failure (or if this
+ canvas does not support sprites).
*/
- virtual ::cppcanvas::CustomSpriteSharedPtr createSprite( const ::basegfx::B2DSize& rSpriteSizePixel ) const = 0;
+ virtual boost::shared_ptr< cppcanvas::CustomSprite >
+ createSprite( const basegfx::B2DVector& rSpriteSizePixel,
+ double nPriority ) const = 0;
- /** Compute a sprite priority relative to this layer.
+ /** Set the layer priority range
- @param nSpritePrio
- Priority of the Sprite within this layer
+ This method influences the relative priority of this
+ layer, i.e. the z position in relation to other layers
+ on the parent view. The higher the priority range, the
+ further in front the layer resides.
- @return absolute sprite priority, to be set at a ::cppcanvas::Sprite
+ @param rRange
+ Priority range, must be in the range [0,1]
*/
- virtual double getSpritePriority( double nSpritePrio ) const = 0;
-
- /** Set the layer priority
+ virtual void setPriority( const basegfx::B1DRange& rRange ) = 0;
+
+ /** Get the overall view transformation.
+
+ This method should <em>not</em> simply return the
+ underlying canvas' transformation, but rather provide
+ a layer above that. This enables clients of the
+ slideshow to set their own user space transformation
+ at the canvas, whilst the slideshow adds their
+ transformation on top of that. Concretely, this method
+ returns the user transform (implicitely calculated
+ from the setViewSize() method), combined with the view
+ transformation.
+ */
+ virtual basegfx::B2DHomMatrix getTransformation() const = 0;
- This method influences the relative priority of this
- layer, i.e. the z position in relation to other layers on
- the parent view. The higher the priority, the further in front
- the layer resides.
+ /** Get the overall view transformation.
- @param nPrio
- Priority, must be in the range [0,1]
+ Same transformation as with getTransformation(), only
+ that you can safely use this one to position sprites
+ on screen (no ViewLayer offsets included whatsoever).
*/
- virtual void setPriority( double nPrio ) = 0;
+ virtual basegfx::B2DHomMatrix getSpriteTransformation() const = 0;
+
+ /** Set clipping on this view layer.
+
+ @param rClip
+ Clip poly-polygon to set. The polygon is interpreted
+ in the user coordinate system, i.e. the view layer has
+ the size as given by setViewSize() on its
+ corresponding View.
+ */
+ virtual void setClip( const basegfx::B2DPolyPolygon& rClip ) = 0;
+
+ /** Resize this view layer.
+
+ @param rArea
+ New area to cover. The area is interpreted in the user
+ coordinate system, i.e. relative to the size as given
+ by setViewSize() on the corresponding View.
+
+ @return true, if layer was actually resized (which
+ invalidates its content)
+ */
+ virtual bool resize( const basegfx::B2DRange& rArea ) = 0;
+
};
- typedef ::boost::shared_ptr< ViewLayer > ViewLayerSharedPtr;
+ typedef boost::shared_ptr< ViewLayer > ViewLayerSharedPtr;
}
}
-#endif /* _SLIDESHOW_VIEWLAYER_HXX */
+#endif /* INCLUDED_SLIDESHOW_VIEWLAYER_HXX */