[Orxonox-commit 1879] r6596 - in code/branches/chat: data/gui/layouts src/libraries/network src/orxonox/graphics
smerkli at orxonox.net
smerkli at orxonox.net
Mon Mar 22 15:28:41 CET 2010
Author: smerkli
Date: 2010-03-22 15:28:40 +0100 (Mon, 22 Mar 2010)
New Revision: 6596
Added:
code/branches/chat/data/gui/layouts/ChatBox.layout
code/branches/chat/src/orxonox/graphics/CEGuiSample.h
code/branches/chat/src/orxonox/graphics/ChatBox.h
Modified:
code/branches/chat/src/libraries/network/ChatListener.cc
Log:
Adding chatbox related files
Added: code/branches/chat/data/gui/layouts/ChatBox.layout
===================================================================
--- code/branches/chat/data/gui/layouts/ChatBox.layout (rev 0)
+++ code/branches/chat/data/gui/layouts/ChatBox.layout 2010-03-22 14:28:40 UTC (rev 6596)
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<GUILayout >
+ <Window Type="DefaultWindow" Name="Root" >
+ <Property Name="InheritsAlpha" Value="False" />
+ <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+ <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{1,0},{1,0}}" />
+ <Window Type="TaharezLook/FrameWindow" Name="/ChatBox" >
+ <Property Name="Text" Value="Chat" />
+ <Property Name="TitlebarFont" Value="Commonwealth-10" />
+ <Property Name="InheritsAlpha" Value="False" />
+ <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+ <Property Name="TitlebarEnabled" Value="True" />
+ <Property Name="UnifiedAreaRect" Value="{{0.01,0},{0.03,0},{0.6,0},{0.69375,0}}" />
+ <Window Type="TaharezLook/Listbox" Name="/ChatBox/List" >
+ <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+ <Property Name="UnifiedAreaRect" Value="{{0.02,0},{0.078,0},{0.98,0},{1,-30}}" />
+ </Window>
+ <Window Type="TaharezLook/Editbox" Name="/ChatBox/Text" >
+ <Property Name="Text" Value="Error: you did not register any font or none were valid" />
+ <Property Name="MaxTextLength" Value="1073741823" />
+ <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+ <Property Name="UnifiedAreaRect" Value="{{0.02,0},{1,-30},{0.98,0},{1,-5}}" />
+ </Window>
+ </Window>
+ <Window Type="TaharezLook/Editbox" Name="/ChatBox/History" >
+ <Property Name="Text" Value="5" />
+ <Property Name="MaxTextLength" Value="1073741823" />
+ <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+ <Property Name="UnifiedAreaRect" Value="{{0.77,0},{0.03,0},{0.81,0},{0.1,0}}" />
+ </Window>
+ <Window Type="TaharezLook/StaticText" Name="/ChatBox/HistoryLabel" >
+ <Property Name="Text" Value="History size:" />
+ <Property Name="HorzFormatting" Value="RightAligned" />
+ <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+ <Property Name="UnifiedAreaRect" Value="{{0.65,0},{0.03,0},{0.77,0},{0.1,0}}" />
+ </Window>
+ <Window Type="TaharezLook/StaticText" Name="/ChatBox/FonSizeLabel" >
+ <Property Name="Font" Value="Commonwealth-10" />
+ <Property Name="Text" Value="Font size:" />
+ <Property Name="HorzFormatting" Value="RightAligned" />
+ <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+ <Property Name="UnifiedAreaRect" Value="{{0.65,0},{0.1,0},{0.77,0},{0.17,0}}" />
+ </Window>
+ <Window Type="TaharezLook/Spinner" Name="/ChatBox/FontSize" >
+ <Property Name="Text" Value="10" />
+ <Property Name="StepSize" Value="1" />
+ <Property Name="CurrentValue" Value="10" />
+ <Property Name="MaximumValue" Value="72" />
+ <Property Name="MinimumValue" Value="-32768" />
+ <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+ <Property Name="UnifiedAreaRect" Value="{{0.77,0},{0.1,0},{0.83,0},{0.17,0}}" />
+ </Window>
+ <Window Type="TaharezLook/StaticText" Name="/ChatBox/FontNameLabel" >
+ <Property Name="Font" Value="Commonwealth-10" />
+ <Property Name="Text" Value="Font name:" />
+ <Property Name="HorzFormatting" Value="RightAligned" />
+ <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+ <Property Name="UnifiedAreaRect" Value="{{0.65,0},{0.17,0},{0.77,0},{0.24,0}}" />
+ </Window>
+ <Window Type="TaharezLook/Combobox" Name="/ChatBox/FontName" >
+ <Property Name="Text" Value="ChatBoxFont" />
+ <Property Name="ReadOnly" Value="True" />
+ <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+ <Property Name="UnifiedAreaRect" Value="{{0.77,0},{0.17,0},{0.99,0},{0.45,0}}" />
+ <Property Name="MaxEditTextLength" Value="1073741823" />
+ </Window>
+ </Window>
+</GUILayout>
Modified: code/branches/chat/src/libraries/network/ChatListener.cc
===================================================================
--- code/branches/chat/src/libraries/network/ChatListener.cc 2010-03-22 13:47:10 UTC (rev 6595)
+++ code/branches/chat/src/libraries/network/ChatListener.cc 2010-03-22 14:28:40 UTC (rev 6596)
@@ -35,6 +35,7 @@
{
RegisterRootObject(ChatListener);
}
+
}
Added: code/branches/chat/src/orxonox/graphics/CEGuiSample.h
===================================================================
--- code/branches/chat/src/orxonox/graphics/CEGuiSample.h (rev 0)
+++ code/branches/chat/src/orxonox/graphics/CEGuiSample.h 2010-03-22 14:28:40 UTC (rev 6596)
@@ -0,0 +1,130 @@
+/***********************************************************************
+ filename: CEGuiSample.h
+ created: 24/9/2004
+ author: Paul D Turner
+*************************************************************************/
+/***************************************************************************
+ * Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ ***************************************************************************/
+#ifndef _CEGuiSample_h_
+#define _CEGuiSample_h_
+
+#if (defined( __WIN32__ ) || defined( _WIN32 )) && !defined (CEGUI_STATIC)
+# ifdef CEGUISAMPLE_EXPORTS
+# define CEGUISAMPLE_API __declspec(dllexport)
+# else
+# define CEGUISAMPLE_API __declspec(dllimport)
+# endif
+#else
+# define CEGUISAMPLE_API
+#endif
+
+
+// forward declarations
+class CEGuiBaseApplication;
+class CEGuiRendererSelector;
+
+
+/*!
+\brief
+ This is a base class that is intended to be used for all sample applications.
+ Here we take care of common things such the renderer selection and application
+ startup.
+*/
+class CEGUISAMPLE_API CEGuiSample
+{
+public:
+ /*!
+ \brief
+ Constructor.
+ */
+ CEGuiSample();
+
+
+ /*!
+ \brief
+ Destructor.
+ */
+ virtual ~CEGuiSample();
+
+
+ /*!
+ \brief
+ Application entry point.
+
+ \return
+ code to be returned by the application.
+ */
+ int run();
+
+
+ /*!
+ \brief
+ Sample specific initialisation goes here. This method is called by the application base object created
+ as part of the initialise call.
+
+ \return
+ false if something went wrong.
+ */
+ virtual bool initialiseSample() = 0;
+
+
+ /*!
+ \brief
+ Cleans up resources allocated in the initialiseSample call.
+ */
+ virtual void cleanupSample() = 0;
+
+
+protected:
+ /*!
+ \brief
+ Initialises the sample system, this includes asking the user for a render to use and
+ the subsequent creation of the required systems to support that renderer.
+
+ \return
+ false if anything went wrong.
+ */
+ virtual bool initialise();
+
+
+ /*!
+ \brief
+ Cleans up all resources allocated by the initialise call.
+ */
+ virtual void cleanup();
+
+
+ /*!
+ \brief
+ Output a message to the user in some OS independant way.
+ */
+ void outputExceptionMessage(const char* message) const;
+
+ /*************************************************************************
+ Data fields
+ *************************************************************************/
+ CEGuiRendererSelector* d_rendererSelector; //!< Points to the renderer selector object.
+ CEGuiBaseApplication* d_sampleApp; //!< Pointer to the base application object.
+};
+
+#endif // end of guard _CEGuiSample_h_
Added: code/branches/chat/src/orxonox/graphics/ChatBox.h
===================================================================
--- code/branches/chat/src/orxonox/graphics/ChatBox.h (rev 0)
+++ code/branches/chat/src/orxonox/graphics/ChatBox.h 2010-03-22 14:28:40 UTC (rev 6596)
@@ -0,0 +1,367 @@
+#ifndef _ChatBox_h_
+#define _ChatBox_h_
+
+#include "CEGuiSample.h"
+#include "CEGUI/CEGUI.h"
+#include "CEGUI/CEGUIXMLAttributes.h"
+
+class DemoSample : public CEGuiSample
+{
+public:
+ bool initialiseSample()
+ {
+ using namespace CEGUI;
+ try
+ {
+ // Retrieve the window manager
+ WindowManager& winMgr = WindowManager::getSingleton();
+
+ // Load the TaharezLook scheme and set up the default mouse cursor and font
+ SchemeManager::getSingleton().loadScheme("TaharezLook.scheme");
+ System::getSingleton().setDefaultMouseCursor("TaharezLook", "MouseArrow");
+ if(!FontManager::getSingleton().isFontPresent("Commonwealth-10"))
+ FontManager::getSingleton().createFont("Commonwealth-10.font");
+
+ // Set the GUI Sheet
+ Window* sheet = winMgr.createWindow("DefaultWindow", "root_wnd");
+ System::getSingleton().setGUISheet(sheet);
+
+ // Load a layout
+ Window* guiLayout = winMgr.loadWindowLayout("ChatBox.layout");
+ sheet->addChildWindow(guiLayout);
+
+ // Obtain the handles of some widgets
+ Window* historySize = winMgr.getWindow("/ChatBox/History");
+ Window* fontName = winMgr.getWindow("/ChatBox/FontName");
+ Spinner* fontSize = static_cast<Spinner*>(winMgr.getWindow("/ChatBox/FontSize"));
+ Window* chatText = winMgr.getWindow("/ChatBox/Text");
+
+ // Disable widgets until a valid font is registered
+ fontName->setEnabled(false);
+ fontSize->setEnabled(false);
+ chatText->setEnabled(false);
+
+ // Retrieve the design-specified values
+ mHistorySize = static_cast<size_t>(PropertyHelper::stringToUint(historySize->getText()));
+ mDefaultFontSize = fontSize->getText();
+ mChatFontName = fontName->getText();
+ setHistorySize(mHistorySize);
+ fontName->setText("");
+
+ // Configure the history size
+ // Pressing <ENTER> changes the maximal number of entries within the history Listbox
+ historySize->subscribeEvent(Editbox::EventTextAccepted, Event::Subscriber(&DemoSample::Event_HistorySizeChange, this));
+
+ // Configure the text Editbox
+ // Pressing <ENTER> puts the text into the history Listbox
+ chatText->subscribeEvent(Editbox::EventTextAccepted, Event::Subscriber(&DemoSample::Event_ChatTextAdded, this));
+
+ // Configure the font name Combobox
+ // Selecting a name changes the font used in the history Listbox and the text Editbox
+ fontName->subscribeEvent(Combobox::EventTextChanged, Event::Subscriber(&DemoSample::Event_FontChange, this));
+
+ // Configure the font size Spinner
+ // Selecting a size changes the font size used in the history Listbox and the text Editbox
+ fontSize->subscribeEvent(Spinner::EventValueChanged, Event::Subscriber(&DemoSample::Event_FontChange, this));
+ fontSize->setTextInputMode(Spinner::Integer);
+ fontSize->setMinimumValue(4.0f);
+ fontSize->setMaximumValue(72.0f);
+ fontSize->setStepSize(1.0f);
+ fontSize->setCurrentValue(PropertyHelper::stringToFloat(mDefaultFontSize));
+
+ // Initialize the list of fonts
+ // The first registered font becomes the active font
+ registerFont("Commonwealth", "Commonv2c.ttf");
+ registerFont("DejaVuSans", "DejaVuSans.ttf");
+ registerFont("Iconified", "Iconiv2.ttf");
+ registerFont("MissingFile", "MissingFile.ttf"); // What happens if a font is missing?
+ registerFont("Pixmap Font", "FairChar-30.font"); // And what about a non-Freetype font?
+ }
+ catch(Exception &e)
+ {
+ #if defined( __WIN32__ ) || defined( _WIN32 )
+ MessageBox(NULL, e.getMessage().c_str(), "Error initializing the demo", MB_OK | MB_ICONERROR | MB_TASKMODAL);
+ #else
+ //std::cout << "Error initializing the demo:" << e.getMessage().c_str() << "\n";
+ #endif
+ }
+
+ return true;
+ }
+
+ void cleanupSample(void)
+ {
+ }
+
+ bool Event_HistorySizeChange(const CEGUI::EventArgs& args)
+ {
+ using namespace CEGUI;
+
+ WindowManager& winMgr = WindowManager::getSingleton();
+ CEGUI::Window* historySize = winMgr.getWindow("/ChatBox/History");
+ int size = PropertyHelper::stringToInt( historySize->getText() );
+ setHistorySize(size);
+ return true;
+ }
+
+ bool Event_ChatTextAdded(const CEGUI::EventArgs& args)
+ {
+ using namespace CEGUI;
+
+ WindowManager& winMgr = WindowManager::getSingleton();
+ Editbox* chatText = static_cast<Editbox*> (winMgr.getWindow("/ChatBox/Text"));
+ addChatText(chatText->getText());
+
+ // Clear the text in the Editbox
+ chatText->setText("");
+ return true;
+ }
+
+ bool Event_FontChange(const CEGUI::EventArgs& args)
+ {
+ using namespace CEGUI;
+ WindowManager& winMgr = WindowManager::getSingleton();
+ Window* fontName = winMgr.getWindow("/ChatBox/FontName");
+ String name = fontName->getText();
+
+ Spinner* fontSize = static_cast<Spinner*>(winMgr.getWindow("/ChatBox/FontSize"));
+ String size = PropertyHelper::floatToString(fontSize->getCurrentValue());
+
+ Window* chatText = winMgr.getWindow("/ChatBox/Text");
+ chatText->setText(name + " - " + size);
+
+ changeFont(name, size);
+ return true;
+ }
+
+ void setHistorySize(const size_t& pSize)
+ {
+ using namespace CEGUI;
+
+ if(pSize > 0)
+ {
+ // A better validation would be to enforce a minimal and a maximal size
+ mHistorySize = pSize;
+
+ WindowManager& winMgr = WindowManager::getSingleton();
+ Listbox* chatHistory = static_cast<Listbox*> (winMgr.getWindow("/ChatBox/List"));
+ ListboxItem* chatItem;
+ while(chatHistory->getItemCount() > mHistorySize)
+ {
+ // There are too many items within the history Listbox, purging them one at a time
+ chatItem = chatHistory->getListboxItemFromIndex(0);
+ chatHistory->removeItem(chatItem);
+ }
+ }
+ }
+
+ void addChatText(const CEGUI::String& pText)
+ {
+ using namespace CEGUI;
+
+ WindowManager& winMgr = WindowManager::getSingleton();
+ Listbox* chatHistory = static_cast<Listbox*> (winMgr.getWindow("/ChatBox/List"));
+
+ // If there's text then add it
+ if(pText.size())
+ {
+ // Add the Editbox text to the history Listbox
+ ListboxTextItem* chatItem;
+ if(chatHistory->getItemCount() == mHistorySize)
+ {
+ /* We have reached the capacity of the Listbox so re-use the first Listbox item.
+ This code is a little crafty. By default the ListboxTextItem is created with
+ the auto-delete flag set to true, which results in its automatic deletion when
+ removed from the Listbox. So we change that flag to false, extract the item
+ from the Listbox, change its text, put the auto-delete flag back to true, and
+ finally put the item back into the Listbox. */
+ chatItem = static_cast<ListboxTextItem*>(chatHistory->getListboxItemFromIndex(0));
+ chatItem->setAutoDeleted(false);
+ chatHistory->removeItem(chatItem);
+ chatItem->setAutoDeleted(true);
+ chatItem->setText(pText);
+ }
+ else
+ {
+ // Create a new listbox item
+ chatItem = new ListboxTextItem(pText);
+ }
+ chatHistory->addItem(chatItem);
+ chatHistory->ensureItemIsVisible(chatHistory->getItemCount());
+ }
+ }
+
+ void registerFont(const CEGUI::String& pLogicalName, const CEGUI::String& pFileName)
+ {
+ using namespace CEGUI;
+
+ // Ensure that font names are registered only once
+ if(mFontList.find(pLogicalName) == mFontList.end())
+ {
+ // Test the font so that only valid fonts are available
+ String testFont = mChatFontName;
+ if(mFontList.size() != 0)
+ {
+ // If the list is empty then attempt to create the font using the "real" font name
+ // Otherwise use a "test" font name so as not to corrupt the "real" one
+ testFont += "__test_font__";
+ }
+ Font* font = makeFont(testFont, pFileName, mDefaultFontSize);
+ if(mFontList.size() != 0
+ && FontManager::getSingleton().isFontPresent(testFont))
+ {
+ // Since this was only a test font we destroy it
+ FontManager::getSingleton().destroyFont(testFont);
+ }
+ if(!font)
+ {
+ // This font is invalid
+ if(FontManager::getSingleton().isFontPresent(testFont))
+ return;
+ else
+ return;
+ }
+
+ WindowManager& winMgr = WindowManager::getSingleton();
+ Combobox* fontName = static_cast<Combobox*>(winMgr.getWindow("/ChatBox/FontName"));
+ mFontList[pLogicalName] = pFileName;
+ ListboxTextItem* fontNameItem = new ListboxTextItem(pLogicalName);
+ fontNameItem->setSelectionBrushImage("TaharezLook", "MultiListSelectionBrush");
+ fontName->addItem(fontNameItem);
+ if(fontName->getItemCount() == 1)
+ {
+ // Enable widgets now that at least one valid font has been found
+ Spinner* fontSize = static_cast<Spinner*>(winMgr.getWindow("/ChatBox/FontSize"));
+ Window* chatText = winMgr.getWindow("/ChatBox/Text");
+ fontName->setEnabled(true);
+ fontSize->setEnabled(true);
+ chatText->setEnabled(true);
+
+ // The first registered font becomes the active font
+ fontName->setText(pLogicalName); // This triggers a call to changeFont
+ fontName->setItemSelectState(fontNameItem, true);
+ }
+ }
+ }
+
+protected:
+ CEGUI::Font* makeFont(const CEGUI::String& pFontName, const CEGUI::String& pFileName, const CEGUI::String& pSize)
+ {
+ using namespace CEGUI;
+
+ Font* font;
+ try
+ {
+ if(FontManager::getSingleton().isFontPresent(pFontName))
+ {
+ // The chat font is reused rather than deleted and recreated
+ // every time an attribute changes. For this reason it is
+ // important to use a unique logical name for the font.
+ font = FontManager::getSingleton().getFont(pFontName);
+ font->setProperty("FileName", pFileName);
+ font->setProperty("PointSize", pSize);
+ }
+ else
+ {
+ // This is the first time we make the chat font so we need to create it
+ XMLAttributes xmlAttributes;
+
+ // CEGUIFont.cpp
+ xmlAttributes.add("Name", pFontName);
+ xmlAttributes.add("Filename", pFileName);
+ xmlAttributes.add("ResourceGroup", "");
+ xmlAttributes.add("AutoScaled", "true");
+ xmlAttributes.add("NativeHorzRes", "800");
+ xmlAttributes.add("NativeVertRes", "600");
+
+ // CEGUIXMLAttributes.cpp
+ xmlAttributes.add("Size", pSize);
+ xmlAttributes.add("AntiAlias", "true");
+
+ font = FontManager::getSingleton().createFont("FreeType", xmlAttributes);
+ }
+ font->load();
+ }
+ catch(Exception& e)
+ {
+ // Display the error message in the chat window
+ addChatText(e.getMessage());
+ font = 0;
+ }
+
+ return font;
+ }
+
+ void changeFont(const CEGUI::String& pFontLogicalName, const CEGUI::String& pFontSize)
+ {
+ using namespace CEGUI;
+ WindowManager& winMgr = WindowManager::getSingleton();
+
+ if(!FontManager::getSingleton().isFontPresent(mChatFontName))
+ {
+ addChatText("You must call registerFont() at least once with a valid font");
+ return;
+ }
+
+ FontList::iterator itFontList = mFontList.find(pFontLogicalName);
+ if(itFontList == mFontList.end())
+ {
+ addChatText(pFontLogicalName + " has not been registered");
+ return;
+ }
+
+ // Measure the height of the selected font
+ Font* currentFont = makeFont(mChatFontName, (*itFontList).second, pFontSize);
+ float fontHeight = currentFont->getFontHeight();
+
+ /* Alter the area of the Editbox. The original value is {{0.01,0},{1,-30},{0.99,0},{1,-5}}
+ The value we are altering is the "-30" within the second couplet, defining the position of
+ the upper y coordinate of the Editbox. We base the new value on the position of the lower
+ y coordinate, which is "-5", and the height of the font. To this we add some space "10" to
+ account for the Editbox's border. */
+ Editbox* editBox = static_cast<Editbox*> (winMgr.getWindow("/ChatBox/Text"));
+ URect chatTextArea = editBox->getArea();
+ chatTextArea.d_min.d_y.d_offset = chatTextArea.d_max.d_y.d_offset
+ - fontHeight
+ - 10;
+ editBox->setArea(chatTextArea);
+ editBox->setFont(currentFont);
+
+ /* Alther the area of the Listbox. Here we only need the lower y coordinate. Since this
+ value is the same as the upper y coordinate of the Editbox we do not need to calculate
+ it. We also change the font of the Listbox and call upon handleUpdatedItemData() to
+ update the current Listbox items. Finally we ensure that the last entry is still
+ visible. */
+ Listbox* listBox = static_cast<Listbox*> (winMgr.getWindow("/ChatBox/List"));
+ URect listTextArea = listBox->getArea();
+ listTextArea.d_max.d_y.d_offset = chatTextArea.d_min.d_y.d_offset;
+ listBox->setArea(listTextArea);
+ listBox->setFont(currentFont);
+ listBox->handleUpdatedItemData();
+ size_t itemCount = listBox->getItemCount();
+ if(itemCount)
+ {
+ ListboxItem* currentItem = listBox->getListboxItemFromIndex(itemCount - 1);
+ listBox->ensureItemIsVisible(currentItem);
+ }
+ }
+
+private:
+ // Type of list for registered fonts
+ typedef std::map<CEGUI::String, CEGUI::String> FontList;
+
+ // List of registered fonts
+ FontList mFontList;
+
+ // Maximal number of entries to retain within the Listbox
+ size_t mHistorySize;
+
+ // Logical font name dedicated to the chat box
+ // This allows us to modify the properties of that font and not affect the fonts used elsewhere
+ CEGUI::String mChatFontName;
+
+ // Default font size
+ CEGUI::String mDefaultFontSize;
+};
+
+#endif // _ChatBox_h_
More information about the Orxonox-commit
mailing list