| /************************************************************** |
| * |
| * 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 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #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; |
| class B2DVector; |
| class B2DHomMatrix; |
| class B2DPolyPolygon; |
| } |
| namespace cppcanvas |
| { |
| class Canvas; |
| class CustomSprite; |
| } |
| |
| |
| /* Definition of ViewLayer interface */ |
| |
| 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 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 |
| |
| @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 boost::shared_ptr< cppcanvas::CustomSprite > |
| createSprite( const basegfx::B2DVector& rSpriteSizePixel, |
| double nPriority ) const = 0; |
| |
| /** Set the layer priority range |
| |
| 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. |
| |
| @param rRange |
| Priority range, must be in the range [0,1] |
| */ |
| 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; |
| |
| /** Get the overall view transformation. |
| |
| Same transformation as with getTransformation(), only |
| that you can safely use this one to position sprites |
| on screen (no ViewLayer offsets included whatsoever). |
| */ |
| 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; |
| } |
| } |
| |
| #endif /* INCLUDED_SLIDESHOW_VIEWLAYER_HXX */ |