diff options
author | Oliver Bolte <obo@openoffice.org> | 2007-07-17 14:19:50 +0000 |
---|---|---|
committer | Oliver Bolte <obo@openoffice.org> | 2007-07-17 14:19:50 +0000 |
commit | 1ca7bb11061ec62e8ddca2c5a96d0a75c22a15da (patch) | |
tree | 5d8b19c0efd092c2fdf0676f34602054c00f8555 /slideshow/source/inc/viewlayer.hxx | |
parent | eb1fd751b1650c8848a81b2074c62bccda9d11ea (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.hxx | 139 |
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 */ |