Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/tutoriallevel2/src/modules/notifications/NotificationQueueCEGUI.h @ 8448

Last change on this file since 8448 was 8448, checked in by dafrick, 13 years ago

Extending NotificationQueueCEGUI.

File size: 7.0 KB
Line 
1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
3 *                    > www.orxonox.net <
4 *
5 *
6 *   License notice:
7 *
8 *   This program is free software; you can redistribute it and/or
9 *   modify it under the terms of the GNU General Public License
10 *   as published by the Free Software Foundation; either version 2
11 *   of the License, or (at your option) any later version.
12 *
13 *   This program is distributed in the hope that it will be useful,
14 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
15 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 *   GNU General Public License for more details.
17 *
18 *   You should have received a copy of the GNU General Public License
19 *   along with this program; if not, write to the Free Software
20 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21 *
22 *   Author:
23 *      Damian 'Mozork' Frick
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29/**
30    @file NotificationQueueCEGUI.h
31    @brief Definition of the NotificationQueueCEGUI class.
32    @ingroup Notifications
33*/
34
35#ifndef _NotificationOueueCEGUI_H__
36#define _NotificationOueueCEGUI_H__
37
38#include "notifications/NotificationsPrereqs.h"
39
40#include <string>
41#include "util/Math.h"
42
43#include "NotificationManager.h"
44
45#include "NotificationQueue.h"
46
47namespace orxonox // tolua_export
48{ // tolua_export
49
50    /**
51    @brief
52        Displays @ref orxonox::Notification "Notifications" using CEGUI.
53
54        Apart form the parameters inherited by the @ref orxonox::NotificationQueue "NotificationQueue", there are some more parameters that influence the behavior of the NotificationQueueCEGUI:
55        - @b displaySize The size of the window that displays the NotificationQueue.
56        - @b position The position if the window that displays the NotificationQueue.
57        - @b alignment The horizontal alignment of the displayed Notifications.
58        - @b fontSize The font size of the displayed Notifications.
59        - @b fontColor The font color of the displayed Notifications.
60
61    @author
62        Damian 'Mozork' Frick
63
64    @see NotificationQueue
65    @ingroup Notifications
66    */
67    class _NotificationsExport NotificationQueueCEGUI // tolua_export
68        : public NotificationQueue
69    { // tolua_export
70
71        public:
72            NotificationQueueCEGUI(const std::string& name, const std::string& senders = NotificationListener::ALL, unsigned int size = NotificationQueue::DEFAULT_SIZE, unsigned int displayTime = NotificationQueue::DEFAULT_DISPLAY_TIME);
73            virtual ~NotificationQueueCEGUI();
74
75            void destroy(bool noGraphics = false); // Destroys the NotificationQueue.
76
77            /**
78            @brief Set the size of the window that displays the NotificationQueue.
79            @param size A vector whose first component is the relative width of the window (a value between 0 and 1) and whose second component is the absolute width in pixels (additional to the relative width, can be negative). The height is set such that exactly as many Notifications fit as is the maximum size of the NotificationQueue (in terms of the number of Notifications).
80            */
81            inline void setDisplaySize(const Vector2& size)
82                { this->setDisplaySize(Vector4(size.x, size.y, 0.0, 0.0)); }
83            void setDisplaySize(const Vector4& size); // Set the size of the window that displays the NotificationQueue.
84            /**
85            @brief Get the size of the window that displays the NotificationQueue.
86            @return Returns a vector with the display size.
87            */
88            inline const Vector4& getDisplaySize(void) const
89                { return this->displaySize_; }
90
91            void setPosition(const Vector4& position); // Set the position of the window that displays the NotificationQueue.
92            /**
93            @brief Get the position of the window that displays the NotificationQueue.
94            @return Returns a vector with the position.
95            */
96            inline const Vector4& getPosition(void) const
97                { return this->position_; }
98
99            void setAlignment(const std::string& alignment); // Set the horizontal alignment of the Notifications text.
100            /**
101            @brief Get the horizontal alignment of the Notifications text.
102            @return Returns a string with the horizontal alignment property.
103            */
104            inline const std::string& getAlignment(void)
105                { return this->alignment_; }
106
107            void setFontSize(unsigned int size); // Set the font size of the text displayed by this NotificationQueue.
108            /**
109            @brief Get the font size of the text displayed by this NotificationQueue.
110            @return Returns the font size.
111            */
112            inline unsigned int getFontSize(void)
113                { return this->fontSize_; }
114
115            void setFontColor(const Vector4& color); // Set the font color if the text displayed by this NotificationQueue.
116            /**
117            @brief Get the font color of the text displayed by this NotificationQueue.
118            @return Returns a vector with the components being RGBA, with values from 0 to 1.
119            */
120            inline const Vector4& getFontColor(void) const
121                { return this->fontColor_; }
122            /**
123            @brief Get the font color of the text displayed by this NotificationQueue.
124            @return Returns a string with the ARGB values in hexadecimal format.
125            */
126            inline const std::string& getFontColorStr(void) const
127                { return this->fontColorStr_; }
128
129            static NotificationQueueCEGUI* getQueue(const std::string& name); // tolua_export
130           
131        protected:
132            virtual void notificationPushed(Notification* notification); // Is called by the NotificationQueue when a notification was pushed
133            virtual void notificationPopped(void); // Is called by the NotificationQueue when a notification was popped.
134            virtual void notificationRemoved(unsigned int index); // Is called when a notification was removed.
135           
136            virtual void clear(bool noGraphics = false); // Clears the NotificationQueue by removing all NotificationContainers.
137           
138        private:
139            Vector4 displaySize_; //!< The size of the window that displays the NotificationQueue.
140            Vector4 position_; //!< The position of the window that displays the NotificationQueue.
141            std::string alignment_; //!< The horizontal alignment of the Notifications text.
142            unsigned int fontSize_; //!< The font size of the Notifications text.
143            Vector4 fontColor_; //!< The font color of the Notifications text as a vector, in RGBA form, with values from 0 to 1.
144            std::string fontColorStr_; //!< The font color of the Notifications text as a string with the ARGB hexadecimal values.
145           
146            void create(void); // Creates the NotificationQueue in lua.
147
148    }; // tolua_export
149
150} // tolua_export
151
152#endif /* _NotificationQueueCEGUI_H__ */
Note: See TracBrowser for help on using the repository browser.