[657] | 1 | /************************************************************************
|
---|
| 2 | filename: CEGUIRenderableFrame.h
|
---|
| 3 | created: 14/4/2004
|
---|
| 4 | author: Paul D Turner
|
---|
| 5 |
|
---|
| 6 | purpose: Interface to RenderableFrame UI construct
|
---|
| 7 | *************************************************************************/
|
---|
| 8 | /*************************************************************************
|
---|
| 9 | Crazy Eddie's GUI System (http://www.cegui.org.uk)
|
---|
| 10 | Copyright (C)2004 - 2005 Paul D Turner (paul@cegui.org.uk)
|
---|
| 11 |
|
---|
| 12 | This library is free software; you can redistribute it and/or
|
---|
| 13 | modify it under the terms of the GNU Lesser General Public
|
---|
| 14 | License as published by the Free Software Foundation; either
|
---|
| 15 | version 2.1 of the License, or (at your option) any later version.
|
---|
| 16 |
|
---|
| 17 | This library is distributed in the hope that it will be useful,
|
---|
| 18 | but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
| 19 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
---|
| 20 | Lesser General Public License for more details.
|
---|
| 21 |
|
---|
| 22 | You should have received a copy of the GNU Lesser General Public
|
---|
| 23 | License along with this library; if not, write to the Free Software
|
---|
| 24 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
---|
| 25 | *************************************************************************/
|
---|
| 26 | #ifndef _CEGUIRenderableFrame_h_
|
---|
| 27 | #define _CEGUIRenderableFrame_h_
|
---|
| 28 |
|
---|
| 29 | #include "CEGUIBase.h"
|
---|
| 30 | #include "CEGUIRenderableElement.h"
|
---|
| 31 |
|
---|
| 32 |
|
---|
| 33 | // Start of CEGUI namespace section
|
---|
| 34 | namespace CEGUI
|
---|
| 35 | {
|
---|
| 36 | /*!
|
---|
| 37 | \brief
|
---|
| 38 | Enumeration of positions for a frame.
|
---|
| 39 | */
|
---|
| 40 | enum FrameLocation
|
---|
| 41 | {
|
---|
| 42 | Invalid, // Value reserved to indicate some invalid or unknown location.
|
---|
| 43 | TopLeftCorner, // Top-Left corner of a frame / rectangle.
|
---|
| 44 | TopRightCorner, // Top-Right corner of a frame / rectangle.
|
---|
| 45 | BottomLeftCorner, // Bottom-Left corner of a frame / rectangle.
|
---|
| 46 | BottomRightCorner, // Bottom-Right corner of a frame / rectangle.
|
---|
| 47 | LeftEdge, // Left edge of a frame / rectangle.
|
---|
| 48 | TopEdge, // Top edge of a frame / rectangle.
|
---|
| 49 | RightEdge, // Right edge of a frame / rectangle.
|
---|
| 50 | BottomEdge // Bottom edge of a frame / rectangle.
|
---|
| 51 | };
|
---|
| 52 |
|
---|
| 53 |
|
---|
| 54 | /*!
|
---|
| 55 | \brief
|
---|
| 56 | A higher order GUI entity that represents a renderable frame.
|
---|
| 57 |
|
---|
| 58 | This class is intended to be used where a (usually top-level) GUI element needs to draw a frame that is constructed from
|
---|
| 59 | a collection of Images. It is possible to specify the image to use for each of the four corners, which are placed appropriately
|
---|
| 60 | at their natural size, and the images for the four edges, which are stretched to cover the area between any corner images. Any
|
---|
| 61 | of the Images may be omitted, in which case that part of the frame is not drawn. If the GUI element uses only one image for its
|
---|
| 62 | frame (usually stretched over the entire area of the element) then a better choice would be to use a RenderableImage, or perform the
|
---|
| 63 | rendering directly instead.
|
---|
| 64 | */
|
---|
| 65 | class CEGUIEXPORT RenderableFrame : public RenderableElement
|
---|
| 66 | {
|
---|
| 67 | public:
|
---|
| 68 | /*************************************************************************
|
---|
| 69 | Construction / Destruction
|
---|
| 70 | *************************************************************************/
|
---|
| 71 | /*!
|
---|
| 72 | \brief
|
---|
| 73 | Default constructor for RenderableFrame
|
---|
| 74 | */
|
---|
| 75 | RenderableFrame(void);
|
---|
| 76 |
|
---|
| 77 |
|
---|
| 78 | /*!
|
---|
| 79 | \brief
|
---|
| 80 | Destructor for RenderableFrame
|
---|
| 81 | */
|
---|
| 82 | virtual ~RenderableFrame(void);
|
---|
| 83 |
|
---|
| 84 |
|
---|
| 85 | /*!
|
---|
| 86 | \brief
|
---|
| 87 | specify the Image objects to use for each part of the frame. A NULL may be used to omit any part.
|
---|
| 88 |
|
---|
| 89 | \param topleft
|
---|
| 90 | Pointer to an Image object to render as the top-left corner of the frame. Specify NULL to omit this part of the frame.
|
---|
| 91 |
|
---|
| 92 | \param topright
|
---|
| 93 | Pointer to an Image object to render as the top-right corner of the frame. Specify NULL to omit this part of the frame.
|
---|
| 94 |
|
---|
| 95 | \param bottomleft
|
---|
| 96 | Pointer to an Image object to render as the bottom-left corner of the frame. Specify NULL to omit this part of the frame.
|
---|
| 97 |
|
---|
| 98 | \param bottomright
|
---|
| 99 | Pointer to an Image object to render as the bottom-right corner of the frame. Specify NULL to omit this part of the frame.
|
---|
| 100 |
|
---|
| 101 | \param left
|
---|
| 102 | Pointer to an Image object to render as the left edge of the frame. Specify NULL to omit this part of the frame.
|
---|
| 103 |
|
---|
| 104 | \param top
|
---|
| 105 | Pointer to an Image object to render as the top edge of the frame. Specify NULL to omit this part of the frame.
|
---|
| 106 |
|
---|
| 107 | \param right
|
---|
| 108 | Pointer to an Image object to render as the right edge of the frame. Specify NULL to omit this part of the frame.
|
---|
| 109 |
|
---|
| 110 | \param bottom
|
---|
| 111 | Pointer to an Image object to render as the bottom edge of the frame. Specify NULL to omit this part of the frame.
|
---|
| 112 |
|
---|
| 113 | \return
|
---|
| 114 | Nothing
|
---|
| 115 | */
|
---|
| 116 | void setImages(const Image* topleft, const Image* topright, const Image* bottomleft, const Image* bottomright, const Image* left, const Image* top, const Image* right, const Image* bottom);
|
---|
| 117 |
|
---|
| 118 |
|
---|
| 119 | /*!
|
---|
| 120 | \brief
|
---|
| 121 | Set the Image to use for the specified location of the frame.
|
---|
| 122 |
|
---|
| 123 | \param location
|
---|
| 124 | One of the FrameLocation enumerated values specifying the image to be returned.
|
---|
| 125 |
|
---|
| 126 | \param image
|
---|
| 127 | Pointer to the Image to use for the frame location specified in \a location. May be NULL to indicate the
|
---|
| 128 | frame component is not required.
|
---|
| 129 |
|
---|
| 130 | \return
|
---|
| 131 | Nothing.
|
---|
| 132 | */
|
---|
| 133 | void setImageForLocation(FrameLocation location, const Image* image);
|
---|
| 134 |
|
---|
| 135 |
|
---|
| 136 |
|
---|
| 137 | /*!
|
---|
| 138 | \brief
|
---|
| 139 | Return the Image being used for the specified location of the frame.
|
---|
| 140 |
|
---|
| 141 | \param location
|
---|
| 142 | One of the FrameLocation enumerated values specifying the image to be returned.
|
---|
| 143 |
|
---|
| 144 | \return
|
---|
| 145 | Pointer to the Image object currently set for the frame location specified in \a location. May return NULL if no
|
---|
| 146 | Image is set for the requested position.
|
---|
| 147 | */
|
---|
| 148 | const Image* getImageForLocation(FrameLocation location) const;
|
---|
| 149 |
|
---|
| 150 |
|
---|
| 151 | protected:
|
---|
| 152 | /*************************************************************************
|
---|
| 153 | Implementation functions
|
---|
| 154 | *************************************************************************/
|
---|
| 155 | /*!
|
---|
| 156 | \brief
|
---|
| 157 | Renders the imagery for a RenderableFrame element.
|
---|
| 158 |
|
---|
| 159 | \param position
|
---|
| 160 | Vector3 object describing the final rendering position for the object.
|
---|
| 161 |
|
---|
| 162 | \param clip_rect
|
---|
| 163 | Rect object describing the clipping area for the rendering. No rendering will be performed outside this area.
|
---|
| 164 |
|
---|
| 165 | \return
|
---|
| 166 | Nothing.
|
---|
| 167 | */
|
---|
| 168 | void draw_impl(const Vector3& position, const Rect& clip_rect) const;
|
---|
| 169 |
|
---|
| 170 |
|
---|
| 171 | /*************************************************************************
|
---|
| 172 | Implementation Data
|
---|
| 173 | *************************************************************************/
|
---|
| 174 | // image pointers
|
---|
| 175 | const Image* d_topleft; //!< Image to draw for the top-left corner.
|
---|
| 176 | const Image* d_topright; //!< Image to draw for the top-right corner.
|
---|
| 177 | const Image* d_bottomleft; //!< Image to draw for the bottom-left corner.
|
---|
| 178 | const Image* d_bottomright; //!< Image to draw for the bottom-right corner.
|
---|
| 179 | const Image* d_left; //!< Image to draw for the left edge.
|
---|
| 180 | const Image* d_right; //!< Image to draw for the right edge.
|
---|
| 181 | const Image* d_top; //!< Image to draw for the top edge.
|
---|
| 182 | const Image* d_bottom; //!< Image to draw for the bottom edge.
|
---|
| 183 | };
|
---|
| 184 |
|
---|
| 185 | } // End of CEGUI namespace section
|
---|
| 186 |
|
---|
| 187 |
|
---|
| 188 | #endif // end of guard _CEGUIRenderableFrame_h_
|
---|