[Python-ogre-commit] SF.net SVN: python-ogre:[790] trunk/python-ogre
Brought to you by:
andy_miller,
roman_yakovenko
From: <and...@us...> - 2008-11-14 07:08:27
|
Revision: 790 http://python-ogre.svn.sourceforge.net/python-ogre/?rev=790&view=rev Author: andy_miller Date: 2008-11-14 07:08:16 +0000 (Fri, 14 Nov 2008) Log Message: ----------- QuickGui updated, NXOgre generator for 0.22, removed info message from doc generation Modified Paths: -------------- trunk/python-ogre/PythonOgreConfig_nt.py trunk/python-ogre/ThirdParty/ogreal/OgreALPrereqs.h trunk/python-ogre/ThirdParty/quickgui/QuickGUIButton.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUICharacter.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUICharacter.h trunk/python-ogre/ThirdParty/quickgui/QuickGUIExportDLL.h trunk/python-ogre/ThirdParty/quickgui/QuickGUIForwardDeclaredDesc.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUIForwardDeclaredDesc.h trunk/python-ogre/ThirdParty/quickgui/QuickGUILabel.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUILabel.h trunk/python-ogre/ThirdParty/quickgui/QuickGUIListTextItem.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUIListTextItem.h trunk/python-ogre/ThirdParty/quickgui/QuickGUIMenu.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUIMenuLabel.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUIMenuLabel.h trunk/python-ogre/ThirdParty/quickgui/QuickGUIProgressBar.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUIProgressBar.h trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialBase.h trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialReader.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialReader.h trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialWriter.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialWriter.h trunk/python-ogre/ThirdParty/quickgui/QuickGUIStringConverter.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUIStringConverter.h trunk/python-ogre/ThirdParty/quickgui/QuickGUITab.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUITab.h trunk/python-ogre/ThirdParty/quickgui/QuickGUITabPage.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUITabPage.h trunk/python-ogre/ThirdParty/quickgui/QuickGUIText.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUIText.h trunk/python-ogre/ThirdParty/quickgui/QuickGUITextAlignment.h trunk/python-ogre/ThirdParty/quickgui/QuickGUITextArea.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUITextArea.h trunk/python-ogre/ThirdParty/quickgui/QuickGUITextBox.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUITextBox.h trunk/python-ogre/ThirdParty/quickgui/QuickGUITitleBar.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUITitleBar.h trunk/python-ogre/ThirdParty/quickgui/QuickGUIToolBar.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUIWindow.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUIWindow.h trunk/python-ogre/code_generators/common_utils/extract_documentation.py trunk/python-ogre/code_generators/nxogre/generate_code.py trunk/python-ogre/code_generators/nxogre/python_nxogre_aliases.h trunk/python-ogre/code_generators/nxogre/python_nxogre_sizeof.h trunk/python-ogre/demos/qgui/Demo_QuickGUI01.py trunk/python-ogre/demos/theora/demo_video.py trunk/python-ogre/environment.py trunk/python-ogre/packages_2.5/ogre/gui/CEGUI/__init__.py trunk/python-ogre/packages_2.5/ogre/renderer/OGRE/sf_OIS.py Removed Paths: ------------- trunk/python-ogre/generated/ Modified: trunk/python-ogre/PythonOgreConfig_nt.py =================================================================== --- trunk/python-ogre/PythonOgreConfig_nt.py 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/PythonOgreConfig_nt.py 2008-11-14 07:08:16 UTC (rev 790) @@ -62,8 +62,8 @@ PATH_plib = os.path.join(PATH_THIRDPARTY, 'plib') PATH_et = os.path.join(PATH_THIRDPARTY, 'et') PATH_caelum = os.path.join(PATH_THIRDPARTY, 'caelum') -PATH_NxOgre= os.path.join(BASE_DIR, 'nxogre', 'NxOgre') -PATH_NxOgre= os.path.join(PATH_THIRDPARTY, 'nxogre') +PATH_NxOgre= os.path.join(BASE_DIR, 'nxogre_0.22') +# # # PATH_NxOgre= os.path.join(PATH_THIRDPARTY, 'nxogre') PATH_NxOgre_09= os.path.join(PATH_THIRDPARTY, 'nxogre_0.9') PATH_watermesh= os.path.join(PATH_THIRDPARTY, 'watermesh') PATH_noise= os.path.join(PATH_THIRDPARTY, 'noise') @@ -162,7 +162,7 @@ PATH_INCLUDE_quickgui = PATH_quickgui PATH_INCLUDE_NxOgre_09= PATH_NxOgre_09 PATH_INCLUDE_NxOgre= os.path.join(PATH_NxOgre, 'include') -PATH_INCLUDE_NxOgre= PATH_NxOgre +# # # PATH_INCLUDE_NxOgre= PATH_NxOgre PATH_INCLUDE_Bullet= os.path.join(PATH_Bullet, 'src') PATH_INCLUDE_freetype= os.path.join(PATH_INCLUDE_quickgui,'FreeType2.3.5') PATH_INCLUDE_betagui = PATH_betagui Modified: trunk/python-ogre/ThirdParty/ogreal/OgreALPrereqs.h =================================================================== --- trunk/python-ogre/ThirdParty/ogreal/OgreALPrereqs.h 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/ogreal/OgreALPrereqs.h 2008-11-14 07:08:16 UTC (rev 790) @@ -42,33 +42,15 @@ #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 # include "AL/al.h" # include "AL/alc.h" -// # include "xram.h" -// # if OGRE_COMPILER == OGRE_COMPILER_MSVC -// # ifdef OGREAL_EXPORT -// # define OgreAL_Export __declspec(dllexport) -// # else -// # define OgreAL_Export __declspec(dllimport) -// # endif -// # else - # define OgreAL_Export -// # endif + # define OgreAL_Export #elif OGRE_COMPILER == OGRE_COMPILER_GNUC # include "al.h" # include "alc.h" -// # if defined(OGREAL_EXPORT) && OGRE_COMP_VER >= 400 -// # define OgreAL_Export __attribute__ ((visibility("default"))) -// # else - # define OgreAL_Export - # endif - // fake EAX/X-RAM - typedef ALenum (*EAXGetBufferMode)(ALuint buffer, ALint *pReserved); - typedef ALboolean (*EAXSetBufferMode)(ALsizei n, ALuint *buffers, ALint value); -// #else // Other Compilers -// # include "al.h" -// # include "alc.h" -// # include "xram.h" -// # define OgreAL_Export -// #endif + # define OgreAL_Export + #endif + + typedef ALenum (*EAXGetBufferMode)(ALuint buffer, ALint *pReserved); + typedef ALboolean (*EAXSetBufferMode)(ALsizei n, ALuint *buffers, ALint value); #ifndef OGREAL_THREADED # define OGREAL_THREADED 0 Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUIButton.cpp =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUIButton.cpp 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUIButton.cpp 2008-11-14 07:08:16 UTC (rev 790) @@ -21,6 +21,7 @@ ButtonDesc::ButtonDesc() : LabelDesc() { + textDesc.horizontalTextAlignment = TEXT_ALIGNMENT_HORIZONTAL_CENTER; } void ButtonDesc::serialize(SerialBase* b) @@ -42,6 +43,8 @@ { Label::_initialize(d); + ButtonDesc* bd = dynamic_cast<ButtonDesc*>(d); + mDesc = dynamic_cast<LabelDesc*>(mWidgetDesc); setSkinType(d->skinTypeName); @@ -68,33 +71,7 @@ void Button::onDraw() { - Brush* brush = Brush::getSingletonPtr(); - - brush->setFilterMode(mDesc->brushFilterMode); - - SkinType* st = mSkinType; - if(!mWidgetDesc->enabled && mWidgetDesc->disabledSkinType != "") - st = SkinTypeManager::getSingleton().getSkinType(getClass(),mWidgetDesc->disabledSkinType); - - brush->drawSkinElement(Rect(mTexturePosition,mWidgetDesc->dimensions.size),st->getSkinElement(mSkinElementName)); - - Ogre::ColourValue prevColor = brush->getColour(); - Rect prevClipRegion = brush->getClipRegion(); - - Rect clipRegion; - clipRegion.size = - Size( - mWidgetDesc->dimensions.size.width - mDesc->padding[PADDING_RIGHT] - mDesc->padding[PADDING_LEFT], - mWidgetDesc->dimensions.size.height - mDesc->padding[PADDING_BOTTOM] - mDesc->padding[PADDING_TOP]); - clipRegion.position = mTexturePosition; - clipRegion.translate(Point(mDesc->padding[PADDING_LEFT],mDesc->padding[PADDING_TOP])); - - brush->setClipRegion(prevClipRegion.getIntersection(clipRegion)); - - mText->draw(clipRegion.position); - - brush->setClipRegion(prevClipRegion); - brush->setColor(prevColor); + Label::onDraw(); } void Button::onMouseEnter(const EventArgs& args) Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUICharacter.cpp =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUICharacter.cpp 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUICharacter.cpp 2008-11-14 07:08:16 UTC (rev 790) @@ -3,7 +3,8 @@ namespace QuickGUI { - Character::Character() {}; + Character::Character( void ) {} ; + Character::Character(Ogre::UTFString::code_point cp, Ogre::FontPtr fp, Ogre::ColourValue cv) : codePoint(cp), fontPtr(fp), Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUICharacter.h =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUICharacter.h 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUICharacter.h 2008-11-14 07:08:16 UTC (rev 790) @@ -56,9 +56,10 @@ /// UV coords of glyph, retreived from Font texture generated by Ogre::Font class. UVRect uvCoords; + Character(); protected: - Character(void); + bool mHighlighted; bool mWhiteSpace; }; Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUIExportDLL.h =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUIExportDLL.h 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUIExportDLL.h 2008-11-14 07:08:16 UTC (rev 790) @@ -4,19 +4,19 @@ #include "OgrePlatform.h" #ifndef _QuickGUIExport - #if defined(OGRE_PLATFORM) - #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 && !defined ( __MINGW32__ ) - # if defined( QUICKGUI_EXPORTS ) - # define _QuickGUIExport __declspec( dllexport ) - # else - # define _QuickGUIExport __declspec( dllimport ) - # endif - #else - # define _QuickGUIExport - #endif - #else +// #if defined(OGRE_PLATFORM) +// #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 && !defined ( __MINGW32__ ) +// # if defined( QUICKGUI_EXPORTS ) +// # define _QuickGUIExport __declspec( dllexport ) +// # else +// # define _QuickGUIExport __declspec( dllimport ) +// # endif +// #else +// # define _QuickGUIExport +// #endif +// #else #define _QuickGUIExport - #endif +// #endif #endif #endif Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUIForwardDeclaredDesc.cpp =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUIForwardDeclaredDesc.cpp 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUIForwardDeclaredDesc.cpp 2008-11-14 07:08:16 UTC (rev 790) @@ -10,21 +10,17 @@ TabPageDesc::TabPageDesc() : PanelDesc() { - for(int i = 0; i < PADDING_COUNT; ++i) - padding[i] = 5.0; - supportScrollBars = false; tabFrontWidth = -1; + verticalTextAlignment = TEXT_ALIGNMENT_VERTICAL_CENTER; } void TabPageDesc::serialize(SerialBase* b) { PanelDesc::serialize(b); - for(int i = 0; i < PADDING_COUNT; ++i) - b->IO(StringConverter::toString(static_cast<Padding>(i)),&padding[i]); - b->IO("TabFrontWidth",&tabFrontWidth); + b->IO("VerticalTextAlignment",&verticalTextAlignment); } TabControlDesc::TabControlDesc() : Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUIForwardDeclaredDesc.h =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUIForwardDeclaredDesc.h 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUIForwardDeclaredDesc.h 2008-11-14 07:08:16 UTC (rev 790) @@ -37,8 +37,8 @@ public: TabPageDesc(); - /// Describes the Padding around Tab's Text - float padding[PADDING_COUNT]; + /// Vertical alignment of text within this widget's client area. + VerticalTextAlignment verticalTextAlignment; /// Describes the Text used in this Label TextDesc textDesc; Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUILabel.cpp =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUILabel.cpp 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUILabel.cpp 2008-11-14 07:08:16 UTC (rev 790) @@ -17,18 +17,14 @@ LabelDesc::LabelDesc() : WidgetDesc() { - for(int i = 0; i < PADDING_COUNT; ++i) - { - padding[i] = 5.0; - } + verticalTextAlignment = TEXT_ALIGNMENT_VERTICAL_CENTER; } void LabelDesc::serialize(SerialBase* b) { WidgetDesc::serialize(b); - for(int i = 0; i < PADDING_COUNT; ++i) - b->IO(StringConverter::toString(static_cast<Padding>(i)),&padding[i]); + b->IO("VerticalTextAlignment",&verticalTextAlignment); textDesc.serialize(b); } @@ -59,29 +55,34 @@ // modify it directly, which is used for serialization. mDesc->textDesc = ld->textDesc; + // Store pointer to SkinType + SkinType* st = mSkinType; + if(!mWidgetDesc->enabled && mWidgetDesc->disabledSkinType != "") + { + st = SkinTypeManager::getSingleton().getSkinType(getClass(),mWidgetDesc->disabledSkinType); + } + + SkinElement* se = st->getSkinElement(mSkinElementName); + if(mDesc->dimensions.size.width == 0) { if(mDesc->textDesc.segments.empty()) mDesc->dimensions.size.width = 50; else - mDesc->dimensions.size.width = ld->padding[PADDING_LEFT] + mDesc->textDesc.getTextWidth() + ld->padding[PADDING_RIGHT]; + mDesc->dimensions.size.width = se->getBorderThickness(BORDER_LEFT) + mDesc->textDesc.getTextWidth() + se->getBorderThickness(BORDER_RIGHT); } if(mDesc->dimensions.size.height == 0) { if(mDesc->textDesc.segments.empty()) mDesc->dimensions.size.height = 20; else - mDesc->dimensions.size.height = ld->padding[PADDING_TOP] + mDesc->textDesc.getTextHeight() + ld->padding[PADDING_BOTTOM]; + mDesc->dimensions.size.height = se->getBorderThickness(BORDER_TOP) + mDesc->textDesc.getTextHeight() + se->getBorderThickness(BORDER_BOTTOM); } - mDesc->textDesc.allottedWidth = ld->dimensions.size.width - (ld->padding[PADDING_LEFT] + ld->padding[PADDING_RIGHT]); + mDesc->verticalTextAlignment = ld->verticalTextAlignment; + mDesc->textDesc.allottedWidth = ld->dimensions.size.width - (se->getBorderThickness(BORDER_LEFT) + se->getBorderThickness(BORDER_RIGHT)); mText = new Text(mDesc->textDesc); - setPadding(PADDING_BOTTOM,ld->padding[PADDING_BOTTOM]); - setPadding(PADDING_LEFT,ld->padding[PADDING_LEFT]); - setPadding(PADDING_RIGHT,ld->padding[PADDING_RIGHT]); - setPadding(PADDING_TOP,ld->padding[PADDING_TOP]); - mCurrentFontName = Text::getFirstAvailableFont()->getName(); mCurrentColourValue = Ogre::ColourValue::White; } @@ -100,12 +101,9 @@ return "Label"; } - float Label::getPadding(Padding p) + HorizontalTextAlignment Label::getHorizontalTextAlignment() { - if(p == PADDING_COUNT) - throw Exception(Exception::ERR_INVALIDPARAMS,"PADDING_COUNT is not a valid parameter!","Label::getPadding"); - - return mDesc->padding[p]; + return mText->getHorizontalTextAlignment(); } Ogre::UTFString Label::getText() @@ -118,6 +116,11 @@ return mText->getVerticalLineSpacing(); } + VerticalTextAlignment Label::getVerticalTextAlignment() + { + return mDesc->verticalTextAlignment; + } + void Label::onDraw() { Brush* brush = Brush::getSingletonPtr(); @@ -135,16 +138,35 @@ Ogre::ColourValue prevColor = brush->getColour(); Rect prevClipRegion = brush->getClipRegion(); - Rect clipRegion; - clipRegion.size = - Size( - mWidgetDesc->dimensions.size.width - mDesc->padding[PADDING_RIGHT] - mDesc->padding[PADDING_LEFT], - mWidgetDesc->dimensions.size.height - mDesc->padding[PADDING_BOTTOM] - mDesc->padding[PADDING_TOP]); - clipRegion.position = mTexturePosition; - clipRegion.translate(Point(mDesc->padding[PADDING_LEFT],mDesc->padding[PADDING_TOP])); + // Center Text Vertically + float textHeight = mText->getTextHeight(); + float yPos = 0; + + switch(mDesc->verticalTextAlignment) + { + case TEXT_ALIGNMENT_VERTICAL_BOTTOM: + yPos = mDesc->dimensions.size.height - st->getSkinElement(mSkinElementName)->getBorderThickness(BORDER_BOTTOM) - textHeight; + break; + case TEXT_ALIGNMENT_VERTICAL_CENTER: + yPos = (mDesc->dimensions.size.height / 2.0) - (textHeight / 2.0); + break; + case TEXT_ALIGNMENT_VERTICAL_TOP: + yPos = st->getSkinElement(mSkinElementName)->getBorderThickness(BORDER_TOP); + break; + } + + // Clip to client dimensions + Rect clipRegion(mClientDimensions); + clipRegion.translate(mTexturePosition); + brush->setClipRegion(prevClipRegion.getIntersection(clipRegion)); + // Adjust Rect to Text drawing region + clipRegion = mClientDimensions; + clipRegion.position.y = yPos; + clipRegion.translate(mTexturePosition); + mText->draw(clipRegion.position); brush->setClipRegion(prevClipRegion); @@ -225,14 +247,17 @@ redraw(); } - void Label::setPadding(Padding p, float distance) + void Label::setHorizontalTextAlignment(HorizontalTextAlignment a) { - if(p == PADDING_COUNT) - throw Exception(Exception::ERR_INVALIDPARAMS,"PADDING_COUNT is not a valid parameter!","Label::setPadding"); + mText->setHorizontalTextAlignment(a); - mDesc->padding[p] = distance; - mText->setAllottedWidth(mWidgetDesc->dimensions.size.width - (mDesc->padding[PADDING_LEFT] + mDesc->padding[PADDING_RIGHT])); + redraw(); + } + void Label::setVerticalTextAlignment(VerticalTextAlignment a) + { + mDesc->verticalTextAlignment = a; + redraw(); } Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUILabel.h =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUILabel.h 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUILabel.h 2008-11-14 07:08:16 UTC (rev 790) @@ -1,7 +1,6 @@ #ifndef QUICKGUILABEL_H #define QUICKGUILABEL_H -#include "QuickGUIPadding.h" #include "QuickGUIWidget.h" #include "QuickGUIText.h" @@ -13,7 +12,8 @@ public: LabelDesc(); - float padding[PADDING_COUNT]; + /// Vertical alignment of text within this widget's client area. + VerticalTextAlignment verticalTextAlignment; /// Describes the Text used in this Label TextDesc textDesc; @@ -59,9 +59,9 @@ */ virtual Ogre::String getClass(); /** - * Gets the distance between a Label border and the text. + * Returns the horizontal alignment of text within this widget's client area. */ - float getPadding(Padding p); + HorizontalTextAlignment getHorizontalTextAlignment(); /** * Gets the text in UTFString form. */ @@ -71,6 +71,10 @@ * are multiple lines of text. */ float getVerticalLineSpacing(); + /** + * Returns the vertical alignment of text within this widget's client area. + */ + VerticalTextAlignment getVerticalTextAlignment(); /** * Sets all characters of the text to the specified color. @@ -117,9 +121,9 @@ */ void setFont(const Ogre::String& fontName, Ogre::UTFString s, bool allOccurrences); /** - * Sets the distance between a Label border and the text. + * Sets the Horizontal alignment of Text as displayed within the Label area. */ - void setPadding(Padding p, float distance); + void setHorizontalTextAlignment(HorizontalTextAlignment a); /** * Sets the text for this object. */ @@ -137,6 +141,10 @@ * are multiple lines of text. */ void setVerticalLineSpacing(float distance); + /** + * Sets the Vertical alignment of Text as displayed within the Label area. + */ + void setVerticalTextAlignment(VerticalTextAlignment a); protected: Label(const Ogre::String& name); Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUIListTextItem.cpp =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUIListTextItem.cpp 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUIListTextItem.cpp 2008-11-14 07:08:16 UTC (rev 790) @@ -17,20 +17,14 @@ ListTextItemDesc::ListTextItemDesc() : ListItemDesc() { - for(int i = 0; i < PADDING_COUNT; ++i) - { - padding[i] = 5.0; - } + verticalTextAlignment = TEXT_ALIGNMENT_VERTICAL_CENTER; } void ListTextItemDesc::serialize(SerialBase* b) { ListItemDesc::serialize(b); - for(int i = 0; i < PADDING_COUNT; ++i) - { - b->IO(StringConverter::toString(static_cast<Padding>(i)),&padding[i]); - } + b->IO("VerticalTextAlignment",&verticalTextAlignment); textDesc.serialize(b); } @@ -60,14 +54,9 @@ // Make a copy of the Text Desc. The Text object will // modify it directly, which is used for serialization. mDesc->textDesc = ltid->textDesc; - + mDesc->verticalTextAlignment = ltid->verticalTextAlignment; mText = new Text(mDesc->textDesc); - setPadding(PADDING_BOTTOM,ltid->padding[PADDING_BOTTOM]); - setPadding(PADDING_LEFT,ltid->padding[PADDING_LEFT]); - setPadding(PADDING_RIGHT,ltid->padding[PADDING_RIGHT]); - setPadding(PADDING_TOP,ltid->padding[PADDING_TOP]); - mCurrentFontName = Text::getFirstAvailableFont()->getName(); mCurrentColourValue = Ogre::ColourValue::White; } @@ -91,14 +80,6 @@ return mText->getText(); } - float ListTextItem::getPadding(Padding p) - { - if(p == PADDING_COUNT) - throw Exception(Exception::ERR_INVALIDPARAMS,"PADDING_COUNT is not a valid parameter!","Label::getPadding"); - - return mDesc->padding[p]; - } - void ListTextItem::onDraw() { Brush* brush = Brush::getSingletonPtr(); @@ -114,21 +95,39 @@ Ogre::ColourValue prevColor = brush->getColour(); Rect prevClipRegion = brush->getClipRegion(); - Rect clipRegion; - clipRegion.size = - Size( - mDesc->dimensions.size.width - mDesc->padding[PADDING_RIGHT], - mDesc->dimensions.size.height - mDesc->padding[PADDING_BOTTOM]); - clipRegion.position = mTexturePosition; - clipRegion.translate(Point(mDesc->padding[PADDING_LEFT],mDesc->padding[PADDING_TOP])); + // Center Text Vertically + float textHeight = mText->getTextHeight(); + float yPos = 0; + + switch(mDesc->verticalTextAlignment) + { + case TEXT_ALIGNMENT_VERTICAL_BOTTOM: + yPos = mDesc->dimensions.size.height - st->getSkinElement(mSkinElementName)->getBorderThickness(BORDER_BOTTOM) - textHeight; + break; + case TEXT_ALIGNMENT_VERTICAL_CENTER: + yPos = (mDesc->dimensions.size.height / 2.0) - (textHeight / 2.0); + break; + case TEXT_ALIGNMENT_VERTICAL_TOP: + yPos = st->getSkinElement(mSkinElementName)->getBorderThickness(BORDER_TOP); + break; + } + + // Clip to client dimensions + Rect clipRegion(mClientDimensions); + clipRegion.translate(mTexturePosition); + brush->setClipRegion(prevClipRegion.getIntersection(clipRegion)); + // Adjust Rect to Text drawing region + clipRegion = mClientDimensions; + clipRegion.position.y = yPos; + clipRegion.translate(mTexturePosition); + mText->draw(clipRegion.position); brush->setClipRegion(prevClipRegion); - - Brush::getSingleton().setColor(prevColor); + brush->setColor(prevColor); } void ListTextItem::setColor(const Ogre::ColourValue& cv) @@ -205,17 +204,6 @@ redraw(); } - void ListTextItem::setPadding(Padding p, float distance) - { - if(p == PADDING_COUNT) - throw Exception(Exception::ERR_INVALIDPARAMS,"PADDING_COUNT is not a valid parameter!","Label::setPadding"); - - mDesc->padding[p] = distance; - mText->setAllottedWidth(mWidgetDesc->dimensions.size.width - (mDesc->padding[PADDING_LEFT] + mDesc->padding[PADDING_RIGHT])); - - redraw(); - } - void ListTextItem::setText(Ogre::UTFString s, Ogre::FontPtr fp, const Ogre::ColourValue& cv) { mText->setText(s,fp,cv); @@ -237,6 +225,6 @@ { ListItem::setWidth(pixelWidth); - mText->setAllottedWidth(mDesc->dimensions.size.width - (mDesc->padding[PADDING_LEFT] + mDesc->padding[PADDING_RIGHT])); + mText->setAllottedWidth(mDesc->dimensions.size.width); } } Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUIListTextItem.h =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUIListTextItem.h 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUIListTextItem.h 2008-11-14 07:08:16 UTC (rev 790) @@ -11,7 +11,8 @@ public: ListTextItemDesc(); - float padding[PADDING_COUNT]; + /// Vertical alignment of text within this widget's client area. + VerticalTextAlignment verticalTextAlignment; /// Describes the Text used in this Label TextDesc textDesc; @@ -55,10 +56,6 @@ */ virtual Ogre::String getClass(); /** - * Gets the distance between a Label border and the text. - */ - float getPadding(Padding p); - /** * Gets the text in UTFString form. */ Ogre::UTFString getText(); @@ -108,10 +105,6 @@ */ void setFont(const Ogre::String& fontName, Ogre::UTFString s, bool allOccurrences); /** - * Sets the distance between a Label border and the text. - */ - void setPadding(Padding p, float distance); - /** * Sets the text for this object. */ void setText(Ogre::UTFString s, Ogre::FontPtr fp, const Ogre::ColourValue& cv); Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUIMenu.cpp =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUIMenu.cpp 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUIMenu.cpp 2008-11-14 07:08:16 UTC (rev 790) @@ -45,7 +45,7 @@ MenuLabel(name), mMenuPanel(NULL) { - mSkinElementName= DEFAULT; + mSkinElementName = DEFAULT; } Menu::~Menu() @@ -62,12 +62,6 @@ setSkinType(d->skinTypeName); MenuDesc* md = dynamic_cast<MenuDesc*>(d); - - mText->setAllottedWidth(md->dimensions.size.width - (md->padding[PADDING_LEFT] + md->padding[PADDING_RIGHT])); - setPadding(PADDING_BOTTOM,md->padding[PADDING_BOTTOM]); - setPadding(PADDING_LEFT,md->padding[PADDING_LEFT]); - setPadding(PADDING_RIGHT,md->padding[PADDING_RIGHT]); - setPadding(PADDING_TOP,md->padding[PADDING_TOP]); mDesc->menuWidth = md->menuWidth; @@ -188,7 +182,8 @@ // Determine position of MenuItem d.dimensions.position.y = mMenuPanel->getNextAvailableYPosition(); d.dimensions.size.width = mMenuPanel->getClientDimensions().size.width; - d.dimensions.size.height = d.textDesc.getTextHeight() + (d.padding[PADDING_TOP] + d.padding[PADDING_BOTTOM]); + SkinElement* se = mSkinType->getSkinElement(mSkinElementName); + d.dimensions.size.height = d.textDesc.getTextHeight() + se->getBorderThickness(BORDER_TOP) + se->getBorderThickness(BORDER_BOTTOM); MenuLabel* newMenuLabel = dynamic_cast<MenuLabel*>(Widget::create("MenuLabel",d)); addChild(newMenuLabel); @@ -207,7 +202,8 @@ // Determine position of Menu d.dimensions.position.y = mMenuPanel->getNextAvailableYPosition(); d.dimensions.size.width = mMenuPanel->getClientDimensions().size.width; - d.dimensions.size.height = d.textDesc.getTextHeight() + (d.padding[PADDING_TOP] + d.padding[PADDING_BOTTOM]); + SkinElement* se = mSkinType->getSkinElement(mSkinElementName); + d.dimensions.size.height = d.textDesc.getTextHeight() + se->getBorderThickness(BORDER_TOP) + se->getBorderThickness(BORDER_BOTTOM); Menu* newMenu = dynamic_cast<Menu*>(Widget::create("Menu",d)); @@ -369,7 +365,7 @@ else p.x = mParentWidget->getScreenPosition().x + mParentWidget->getSize().width - mDesc->subMenuOverlap; - p.y = getScreenPosition().y; + p.y = getScreenPosition().y - mMenuPanel->mSkinType->getSkinElement(mMenuPanel->mSkinElementName)->getBorderThickness(BORDER_TOP); } mMenuPanel->setPosition(p); Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUIMenuLabel.cpp =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUIMenuLabel.cpp 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUIMenuLabel.cpp 2008-11-14 07:08:16 UTC (rev 790) @@ -23,20 +23,16 @@ MenuLabelDesc::MenuLabelDesc() : MenuItemDesc() { - for(int i = 0; i < PADDING_COUNT; ++i) - { - padding[i] = 5.0; - } + verticalTextAlignment = TEXT_ALIGNMENT_VERTICAL_CENTER; + + textDesc.horizontalTextAlignment = TEXT_ALIGNMENT_HORIZONTAL_LEFT; } void MenuLabelDesc::serialize(SerialBase* b) { MenuItemDesc::serialize(b); - for(int i = 0; i < PADDING_COUNT; ++i) - { - b->IO(StringConverter::toString(static_cast<Padding>(i)),&padding[i]); - } + b->IO("VerticalTextAlignment",&verticalTextAlignment); textDesc.serialize(b); } @@ -65,19 +61,16 @@ // modify it directly, which is used for serialization. mDesc->textDesc = mld->textDesc; - mDesc->textDesc.allottedWidth = mld->dimensions.size.width - (mld->padding[PADDING_LEFT] + mld->padding[PADDING_RIGHT]); + setSkinType(d->skinTypeName); + SkinElement* se = mSkinType->getSkinElement(mSkinElementName); + mDesc->textDesc.allottedWidth = mld->dimensions.size.width - (se->getBorderThickness(BORDER_LEFT) + se->getBorderThickness(BORDER_RIGHT)); + if(mText != NULL) delete mText; + mDesc->verticalTextAlignment = mld->verticalTextAlignment; mText = new Text(mDesc->textDesc); - - setPadding(PADDING_BOTTOM,mld->padding[PADDING_BOTTOM]); - setPadding(PADDING_LEFT,mld->padding[PADDING_LEFT]); - setPadding(PADDING_RIGHT,mld->padding[PADDING_RIGHT]); - setPadding(PADDING_TOP,mld->padding[PADDING_TOP]); - - setSkinType(d->skinTypeName); } Widget* MenuLabel::factory(const Ogre::String& widgetName) @@ -94,17 +87,14 @@ return "MenuLabel"; } - float MenuLabel::getPadding(Padding p) + float MenuLabel::getVerticalLineSpacing() { - if(p == PADDING_COUNT) - throw Exception(Exception::ERR_INVALIDPARAMS,"PADDING_COUNT is not a valid parameter!","MenuLabel::getPadding"); - - return mDesc->padding[p]; + return mText->getVerticalLineSpacing(); } - float MenuLabel::getVerticalLineSpacing() + VerticalTextAlignment MenuLabel::getVerticalTextAlignment() { - return mText->getVerticalLineSpacing(); + return mDesc->verticalTextAlignment; } void MenuLabel::onDraw() @@ -122,21 +112,39 @@ Ogre::ColourValue prevColor = brush->getColour(); Rect prevClipRegion = brush->getClipRegion(); - Rect clipRegion; - clipRegion.size = - Size( - mWidgetDesc->dimensions.size.width - mDesc->padding[PADDING_RIGHT] - mDesc->padding[PADDING_LEFT], - mWidgetDesc->dimensions.size.height - mDesc->padding[PADDING_BOTTOM] - mDesc->padding[PADDING_TOP]); - clipRegion.position = mTexturePosition; - clipRegion.translate(Point(mDesc->padding[PADDING_LEFT],mDesc->padding[PADDING_TOP])); + // Center Text Vertically + float textHeight = mText->getTextHeight(); + float yPos = 0; + + switch(mDesc->verticalTextAlignment) + { + case TEXT_ALIGNMENT_VERTICAL_BOTTOM: + yPos = mDesc->dimensions.size.height - st->getSkinElement(mSkinElementName)->getBorderThickness(BORDER_BOTTOM) - textHeight; + break; + case TEXT_ALIGNMENT_VERTICAL_CENTER: + yPos = (mDesc->dimensions.size.height / 2.0) - (textHeight / 2.0); + break; + case TEXT_ALIGNMENT_VERTICAL_TOP: + yPos = st->getSkinElement(mSkinElementName)->getBorderThickness(BORDER_TOP); + break; + } + + // Clip to client dimensions + Rect clipRegion(mClientDimensions); + clipRegion.translate(mTexturePosition); + brush->setClipRegion(prevClipRegion.getIntersection(clipRegion)); + // Adjust Rect to Text drawing region + clipRegion = mClientDimensions; + clipRegion.position.y = yPos; + clipRegion.translate(mTexturePosition); + mText->draw(clipRegion.position); brush->setClipRegion(prevClipRegion); - - Brush::getSingleton().setColor(prevColor); + brush->setColor(prevColor); } void MenuLabel::onMouseButtonUp(const EventArgs& args) @@ -235,17 +243,6 @@ redraw(); } - void MenuLabel::setPadding(Padding p, float distance) - { - if(p == PADDING_COUNT) - throw Exception(Exception::ERR_INVALIDPARAMS,"PADDING_COUNT is not a valid parameter!","MenuLabel::setPadding"); - - mDesc->padding[p] = distance; - mText->setAllottedWidth(mWidgetDesc->dimensions.size.width - (mDesc->padding[PADDING_LEFT] + mDesc->padding[PADDING_RIGHT])); - - redraw(); - } - void MenuLabel::setText(Ogre::UTFString s, Ogre::FontPtr fp, const Ogre::ColourValue& cv) { mText->setText(s,fp,cv); @@ -262,4 +259,11 @@ redraw(); } + + void MenuLabel::setVerticalTextAlignment(VerticalTextAlignment a) + { + mDesc->verticalTextAlignment = a; + + redraw(); + } } Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUIMenuLabel.h =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUIMenuLabel.h 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUIMenuLabel.h 2008-11-14 07:08:16 UTC (rev 790) @@ -1,7 +1,6 @@ #ifndef QUICKGUIMENULABEL_H #define QUICKGUIMENULABEL_H -#include "QuickGUIPadding.h" #include "QuickGUIMenuItem.h" #include "QuickGUIText.h" @@ -13,7 +12,8 @@ public: MenuLabelDesc(); - float padding[PADDING_COUNT]; + /// Vertical alignment of text within this widget's client area. + VerticalTextAlignment verticalTextAlignment; /// Describes the Text used in this Label TextDesc textDesc; @@ -61,14 +61,14 @@ */ virtual Ogre::String getClass(); /** - * Gets the distance between a Label border and the text. - */ - float getPadding(Padding p); - /** * Returns the number of pixels placed between each line of text, if there * are multiple lines of text. */ float getVerticalLineSpacing(); + /** + * Returns the vertical alignment of text within this widget's client area. + */ + VerticalTextAlignment getVerticalTextAlignment(); /** * Sets all characters of the text to the specified color. @@ -115,10 +115,6 @@ */ void setFont(const Ogre::String& fontName, Ogre::UTFString s, bool allOccurrences); /** - * Sets the distance between a Label border and the text. - */ - void setPadding(Padding p, float distance); - /** * Sets the text for this object. */ void setText(Ogre::UTFString s, Ogre::FontPtr fp, const Ogre::ColourValue& cv); @@ -127,6 +123,10 @@ * are multiple lines of text. */ void setVerticalLineSpacing(float distance); + /** + * Sets the Vertical alignment of Text as displayed within the Label area. + */ + void setVerticalTextAlignment(VerticalTextAlignment a); protected: MenuLabel(const Ogre::String& name); Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUIProgressBar.cpp =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUIProgressBar.cpp 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUIProgressBar.cpp 2008-11-14 07:08:16 UTC (rev 790) @@ -25,21 +25,14 @@ layout = PROGRESSBAR_LAYOUT_HORIZONTAL; clippingEdge = PROGRESSBAR_CLIP_LEFT_BOTTOM; progress = 100; - - for(int i = 0; i < PADDING_COUNT; ++i) - { - padding[i] = 5.0; - } + verticalTextAlignment = TEXT_ALIGNMENT_VERTICAL_CENTER; } void ProgressBarDesc::serialize(SerialBase* b) { WidgetDesc::serialize(b); - for(int i = 0; i < PADDING_COUNT; ++i) - { - b->IO(StringConverter::toString(static_cast<Padding>(i)),&padding[i]); - } + b->IO("VerticalTextAlignment",&verticalTextAlignment); textDesc.serialize(b); @@ -74,14 +67,11 @@ // modify it directly, which is used for serialization. mDesc->textDesc = pd->textDesc; - mDesc->textDesc.allottedWidth = pd->dimensions.size.width - (pd->padding[PADDING_LEFT] + pd->padding[PADDING_RIGHT]); + SkinElement* se = mSkinType->getSkinElement(mSkinElementName); + mDesc->textDesc.allottedWidth = pd->dimensions.size.width - (se->getBorderThickness(BORDER_LEFT) + se->getBorderThickness(BORDER_RIGHT)); + mDesc->verticalTextAlignment = pd->verticalTextAlignment; mText = new Text(mDesc->textDesc); - setPadding(PADDING_BOTTOM,pd->padding[PADDING_BOTTOM]); - setPadding(PADDING_LEFT,pd->padding[PADDING_LEFT]); - setPadding(PADDING_RIGHT,pd->padding[PADDING_RIGHT]); - setPadding(PADDING_TOP,pd->padding[PADDING_TOP]); - mCurrentFontName = Text::getFirstAvailableFont()->getName(); mCurrentColourValue = Ogre::ColourValue::White; @@ -166,17 +156,14 @@ return mDesc->fillDirection; } - ProgressBarLayout ProgressBar::setLayout() + HorizontalTextAlignment ProgressBar::getHorizontalTextAlignment() { - return mDesc->layout; + return mText->getHorizontalTextAlignment(); } - float ProgressBar::getPadding(Padding p) + ProgressBarLayout ProgressBar::setLayout() { - if(p == PADDING_COUNT) - throw Exception(Exception::ERR_INVALIDPARAMS,"PADDING_COUNT is not a valid parameter!","ProgressBar::getPadding"); - - return mDesc->padding[p]; + return mDesc->layout; } float ProgressBar::getProgress() @@ -194,6 +181,11 @@ return mText->getVerticalLineSpacing(); } + VerticalTextAlignment ProgressBar::getVerticalTextAlignment() + { + return mDesc->verticalTextAlignment; + } + void ProgressBar::onDraw() { Brush* brush = Brush::getSingletonPtr(); @@ -213,26 +205,45 @@ barRect.translate(mTexturePosition); brush->drawRectangle(barRect,UVRect(0,0,1,1)); - /* Ogre::ColourValue prevColor = brush->getColour(); Rect prevClipRegion = brush->getClipRegion(); - Rect clipRegion; - clipRegion.size = - Size( - mDesc->dimensions.size.width - mDesc->padding[PADDING_RIGHT], - mDesc->dimensions.size.height - mDesc->padding[PADDING_BOTTOM]); - clipRegion.position = mTexturePosition; - clipRegion.translate(Point(mDesc->padding[PADDING_LEFT],mDesc->padding[PADDING_TOP])); + if(mText->empty()) + return; + // Center Text Vertically + + float textHeight = mText->getTextHeight(); + float yPos = 0; + + switch(mDesc->verticalTextAlignment) + { + case TEXT_ALIGNMENT_VERTICAL_BOTTOM: + yPos = mDesc->dimensions.size.height - st->getSkinElement(mSkinElementName)->getBorderThickness(BORDER_BOTTOM) - textHeight; + break; + case TEXT_ALIGNMENT_VERTICAL_CENTER: + yPos = (mDesc->dimensions.size.height / 2.0) - (textHeight / 2.0); + break; + case TEXT_ALIGNMENT_VERTICAL_TOP: + yPos = st->getSkinElement(mSkinElementName)->getBorderThickness(BORDER_TOP); + break; + } + + // Clip to client dimensions + Rect clipRegion(mClientDimensions); + clipRegion.translate(mTexturePosition); + brush->setClipRegion(prevClipRegion.getIntersection(clipRegion)); + // Adjust Rect to Text drawing region + clipRegion = mClientDimensions; + clipRegion.position.y = yPos; + clipRegion.translate(mTexturePosition); + mText->draw(clipRegion.position); brush->setClipRegion(prevClipRegion); - - Brush::getSingleton().setColor(prevColor); - */ + brush->setColor(prevColor); } void ProgressBar::setClippingEdge(ProgressBarClippingEdge e) @@ -323,22 +334,18 @@ redraw(); } - void ProgressBar::setLayout(ProgressBarLayout l) + void ProgressBar::setHorizontalTextAlignment(HorizontalTextAlignment a) { - mDesc->layout = l; + mText->setHorizontalTextAlignment(a); - setProgress(mDesc->progress); + redraw(); } - void ProgressBar::setPadding(Padding p, float distance) + void ProgressBar::setLayout(ProgressBarLayout l) { - if(p == PADDING_COUNT) - throw Exception(Exception::ERR_INVALIDPARAMS,"PADDING_COUNT is not a valid parameter!","ProgressBar::setPadding"); + mDesc->layout = l; - mDesc->padding[p] = distance; - mText->setAllottedWidth(mWidgetDesc->dimensions.size.width - (mDesc->padding[PADDING_LEFT] + mDesc->padding[PADDING_RIGHT])); - - redraw(); + setProgress(mDesc->progress); } void ProgressBar::setProgress(float percent) @@ -542,4 +549,11 @@ redraw(); } + + void ProgressBar::setVerticalTextAlignment(VerticalTextAlignment a) + { + mDesc->verticalTextAlignment = a; + + redraw(); + } } Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUIProgressBar.h =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUIProgressBar.h 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUIProgressBar.h 2008-11-14 07:08:16 UTC (rev 790) @@ -23,7 +23,8 @@ /// Percentage of progress of the bar. (0-100) float progress; - float padding[PADDING_COUNT]; + /// Vertical alignment of text within this widget's client area. + VerticalTextAlignment verticalTextAlignment; /// Describes the Text used in this Label TextDesc textDesc; @@ -107,14 +108,14 @@ */ ProgressBarFillDirection getFillDirection(); /** + * Returns the horizontal alignment of text within this widget's client area. + */ + HorizontalTextAlignment getHorizontalTextAlignment(); + /** * Gets the axis of progress growth, either horizontal or vertical. */ ProgressBarLayout setLayout(); /** - * Gets the distance between a Label border and the text. - */ - float getPadding(Padding p); - /** * Gets the progress of the ProgressBar, that is a visual indicator of percent complete. */ float getProgress(); @@ -127,6 +128,10 @@ * are multiple lines of text. */ float getVerticalLineSpacing(); + /** + * Returns the vertical alignment of text within this widget's client area. + */ + VerticalTextAlignment getVerticalTextAlignment(); /** * Sets the side of the bar texture that is clipped to simulate progress. @@ -181,14 +186,14 @@ */ void setFont(const Ogre::String& fontName, Ogre::UTFString s, bool allOccurrences); /** + * Sets the Horizontal alignment of Text as displayed within the Label area. + */ + void setHorizontalTextAlignment(HorizontalTextAlignment a); + /** * Sets the axis of progress growth, either horizontal or vertical. */ void setLayout(ProgressBarLayout l); /** - * Sets the distance between a Label border and the text. - */ - void setPadding(Padding p, float distance); - /** * Sets the progress of the ProgressBar, that is a visual indicator of percent complete. * NOTE: values above and below 0 will be capped to 0/100%. */ @@ -216,6 +221,10 @@ * are multiple lines of text. */ void setVerticalLineSpacing(float distance); + /** + * Sets the Vertical alignment of Text as displayed within the Label area. + */ + void setVerticalTextAlignment(VerticalTextAlignment a); protected: ProgressBar(const Ogre::String& name); Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialBase.h =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialBase.h 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialBase.h 2008-11-14 07:08:16 UTC (rev 790) @@ -54,9 +54,10 @@ virtual void IO(const Ogre::String& propertyName, VScrollBarButtonLayout* member) = 0; virtual void IO(const Ogre::String& propertyName, HScrollBarButtonLayout* member) = 0; virtual void IO(const Ogre::String& propertyName, Size* member) = 0; - virtual void IO(const Ogre::String& propertyName, TextAlignment* member) = 0; + virtual void IO(const Ogre::String& propertyName, HorizontalTextAlignment* member) = 0; virtual void IO(const Ogre::String& propertyName, HorizontalAnchor* member) = 0; virtual void IO(const Ogre::String& propertyName, VerticalAnchor* member) = 0; + virtual void IO(const Ogre::String& propertyName, VerticalTextAlignment* member) = 0; protected: ScriptDefinition* mCurrentDefinition; Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialReader.cpp =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialReader.cpp 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialReader.cpp 2008-11-14 07:08:16 UTC (rev 790) @@ -302,7 +302,7 @@ } } - void SerialReader::IO(const Ogre::String& propertyName, TextAlignment* member) + void SerialReader::IO(const Ogre::String& propertyName, HorizontalTextAlignment* member) { if(mCurrentDefinition == NULL) throw Exception(Exception::ERR_SERIALIZATION,"SerialReader has not been correctly setup to retrieve properties. (Missing call to SerialReader::begin?)","SerialReader::IO"); @@ -310,7 +310,7 @@ DefinitionProperty* prop = mCurrentDefinition->getProperty(propertyName); Ogre::StringVector sv = prop->getValues(); - *member = StringConverter::parseTextAlignment(sv[0]); + *member = StringConverter::parseHorizontalTextAlignment(sv[0]); } void SerialReader::IO(const Ogre::String& propertyName, HorizontalAnchor* member) @@ -335,6 +335,17 @@ *member = StringConverter::parseVerticalAnchor(sv[0]); } + void SerialReader::IO(const Ogre::String& propertyName, VerticalTextAlignment* member) + { + if(mCurrentDefinition == NULL) + throw Exception(Exception::ERR_SERIALIZATION,"SerialReader has not been correctly setup to retrieve properties. (Missing call to SerialReader::begin?)","SerialReader::IO"); + + DefinitionProperty* prop = mCurrentDefinition->getProperty(propertyName); + Ogre::StringVector sv = prop->getValues(); + + *member = StringConverter::parseVerticalTextAlignment(sv[0]); + } + bool SerialReader::isSerialWriter() { return false; Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialReader.h =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialReader.h 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialReader.h 2008-11-14 07:08:16 UTC (rev 790) @@ -42,9 +42,10 @@ virtual void IO(const Ogre::String& propertyName, VScrollBarButtonLayout* member); virtual void IO(const Ogre::String& propertyName, HScrollBarButtonLayout* member); virtual void IO(const Ogre::String& propertyName, Size* member); - virtual void IO(const Ogre::String& propertyName, TextAlignment* member); + virtual void IO(const Ogre::String& propertyName, HorizontalTextAlignment* member); virtual void IO(const Ogre::String& propertyName, HorizontalAnchor* member); virtual void IO(const Ogre::String& propertyName, VerticalAnchor* member); + virtual void IO(const Ogre::String& propertyName, VerticalTextAlignment* member); bool isSerialWriter(); bool isSerialReader(); Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialWriter.cpp =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialWriter.cpp 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialWriter.cpp 2008-11-14 07:08:16 UTC (rev 790) @@ -291,7 +291,7 @@ mCurrentDefinition->mProperties[propertyName] = newProp; } - void SerialWriter::IO(const Ogre::String& propertyName, TextAlignment* member) + void SerialWriter::IO(const Ogre::String& propertyName, HorizontalTextAlignment* member) { if(mCurrentDefinition == NULL) throw Exception(Exception::ERR_SERIALIZATION,"SerialWriter not setup to write! Did you miss a call to SerialWriter::begin()?","SerialWriter::IO"); @@ -333,6 +333,20 @@ mCurrentDefinition->mProperties[propertyName] = newProp; } + void SerialWriter::IO(const Ogre::String& propertyName, VerticalTextAlignment* member) + { + if(mCurrentDefinition == NULL) + throw Exception(Exception::ERR_SERIALIZATION,"SerialWriter not setup to write! Did you miss a call to SerialWriter::begin()?","SerialWriter::IO"); + + DefinitionProperty* newProp = new DefinitionProperty(propertyName); + newProp->mValues.push_back(StringConverter::toString(*member)); + + if(mCurrentDefinition->mProperties.find(propertyName) != mCurrentDefinition->mProperties.end()) + throw Exception(Exception::ERR_SERIALIZATION,"ScriptDefinition already contains the property \"" + propertyName + "\"!","SerialWriter::IO"); + else + mCurrentDefinition->mProperties[propertyName] = newProp; + } + bool SerialWriter::isSerialWriter() { return true; Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialWriter.h =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialWriter.h 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUISerialWriter.h 2008-11-14 07:08:16 UTC (rev 790) @@ -50,9 +50,10 @@ virtual void IO(const Ogre::String& propertyName, VScrollBarButtonLayout* member); virtual void IO(const Ogre::String& propertyName, HScrollBarButtonLayout* member); virtual void IO(const Ogre::String& propertyName, Size* member); - virtual void IO(const Ogre::String& propertyName, TextAlignment* member); + virtual void IO(const Ogre::String& propertyName, HorizontalTextAlignment* member); virtual void IO(const Ogre::String& propertyName, HorizontalAnchor* member); virtual void IO(const Ogre::String& propertyName, VerticalAnchor* member); + virtual void IO(const Ogre::String& propertyName, VerticalTextAlignment* member); bool isSerialWriter(); bool isSerialReader(); Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUIStringConverter.cpp =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUIStringConverter.cpp 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUIStringConverter.cpp 2008-11-14 07:08:16 UTC (rev 790) @@ -29,16 +29,15 @@ } } - Ogre::String StringConverter::toString(Padding p) + Ogre::String StringConverter::toString(HorizontalTextAlignment a) { - switch(p) + switch(a) { - case PADDING_LEFT: return "PADDING_LEFT"; - case PADDING_RIGHT: return "PADDING_RIGHT"; - case PADDING_TOP: return "PADDING_TOP"; - case PADDING_BOTTOM: return "PADDING_BOTTOM"; + case TEXT_ALIGNMENT_HORIZONTAL_LEFT: return "TEXT_ALIGNMENT_HORIZONTAL_LEFT"; + case TEXT_ALIGNMENT_HORIZONTAL_RIGHT: return "TEXT_ALIGNMENT_HORIZONTAL_RIGHT"; + case TEXT_ALIGNMENT_HORIZONTAL_CENTER: return "TEXT_ALIGNMENT_HORIZONTAL_CENTER"; default: - throw Exception(Exception::ERR_SERIALIZATION,"Padding type does not have a string equivalent! Check if update is needed!","StringConverter::toString"); + throw Exception(Exception::ERR_SERIALIZATION,"HorizontalTextAlignment type does not have a string equivalent! Check if update is needed!","StringConverter::toString"); } } @@ -107,18 +106,6 @@ } } - Ogre::String StringConverter::toString(TextAlignment a) - { - switch(a) - { - case TEXT_ALIGNMENT_LEFT: return "TEXT_ALIGNMENT_LEFT"; - case TEXT_ALIGNMENT_RIGHT: return "TEXT_ALIGNMENT_RIGHT"; - case TEXT_ALIGNMENT_CENTER: return "TEXT_ALIGNMENT_CENTER"; - default: - throw Exception(Exception::ERR_SERIALIZATION,"TextAlignment type does not have a string equivalent! Check if update is needed!","StringConverter::toString"); - } - } - Ogre::String StringConverter::toString(ToolBarItemLayout l) { switch(l) @@ -145,6 +132,18 @@ } } + Ogre::String StringConverter::toString(VerticalTextAlignment a) + { + switch(a) + { + case TEXT_ALIGNMENT_VERTICAL_BOTTOM: return "TEXT_ALIGNMENT_VERTICAL_BOTTOM"; + case TEXT_ALIGNMENT_VERTICAL_CENTER: return "TEXT_ALIGNMENT_VERTICAL_CENTER"; + case TEXT_ALIGNMENT_VERTICAL_TOP: return "TEXT_ALIGNMENT_VERTICAL_TOP"; + default: + throw Exception(Exception::ERR_SERIALIZATION,"VerticalTextAlignment type does not have a string equivalent! Check if update is needed!","StringConverter::toString"); + } + } + Ogre::String StringConverter::toString(WidgetEvent e) { switch(e) @@ -209,14 +208,13 @@ throw Exception(Exception::ERR_SERIALIZATION,"\"" + s + "\" is not a recognized HorizontalAnchor type! (Possible need to update?)","StringConverter::parseHorizontalAnchor"); } - Padding StringConverter::parsePadding(const Ogre::String& s) + HorizontalTextAlignment StringConverter::parseHorizontalTextAlignment(const Ogre::String& s) { - if(s == "PADDING_LEFT") return PADDING_LEFT; - else if(s == "PADDING_RIGHT") return PADDING_RIGHT; - else if(s == "PADDING_TOP") return PADDING_TOP; - else if(s == "PADDING_BOTTOM") return PADDING_BOTTOM; + if(s == "TEXT_ALIGNMENT_HORIZONTAL_LEFT") return TEXT_ALIGNMENT_HORIZONTAL_LEFT; + else if(s == "TEXT_ALIGNMENT_HORIZONTAL_RIGHT") return TEXT_ALIGNMENT_HORIZONTAL_RIGHT; + else if(s == "TEXT_ALIGNMENT_HORIZONTAL_CENTER") return TEXT_ALIGNMENT_HORIZONTAL_CENTER; else - throw Exception(Exception::ERR_SERIALIZATION,"\"" + s + "\" is not a recognized Padding type! (Possible need to update?)","StringConverter::parsePadding"); + throw Exception(Exception::ERR_SERIALIZATION,"\"" + s + "\" is not a recognized HorizontalTextAlignment type! (Possible need to update?)","StringConverter::parseHorizontalTextAlignment"); } VScrollBarButtonLayout StringConverter::parseVScrollBarButtonLayout(const Ogre::String& s) @@ -269,15 +267,6 @@ throw Exception(Exception::ERR_SERIALIZATION,"\"" + s + "\" is not a recognized ProgressBarClippingEdge type! (Possible need to update?)","StringConverter::parseProgressBarClippingEdge"); } - TextAlignment StringConverter::parseTextAlignment(const Ogre::String& s) - { - if(s == "TEXT_ALIGNMENT_LEFT") return TEXT_ALIGNMENT_LEFT; - else if(s == "TEXT_ALIGNMENT_RIGHT") return TEXT_ALIGNMENT_RIGHT; - else if(s == "TEXT_ALIGNMENT_CENTER") return TEXT_ALIGNMENT_CENTER; - else - throw Exception(Exception::ERR_SERIALIZATION,"\"" + s + "\" is not a recognized TextAlignment type! (Possible need to update?)","StringConverter::parseTextAlignment"); - } - ToolBarItemLayout StringConverter::parseToolBarItemLayout(const Ogre::String& s) { if(s == "TOOLBAR_ITEM_LAYOUT_NEGATIVE_TO_POSITIVE") return TOOLBAR_ITEM_LAYOUT_NEGATIVE_TO_POSITIVE; @@ -298,6 +287,15 @@ throw Exception(Exception::ERR_SERIALIZATION,"\"" + s + "\" is not a recognized VerticalAnchor type! (Possible need to update?)","StringConverter::parseVerticalAnchor"); } + VerticalTextAlignment StringConverter::parseVerticalTextAlignment(const Ogre::String& s) + { + if(s == "TEXT_ALIGNMENT_VERTICAL_BOTTOM") return TEXT_ALIGNMENT_VERTICAL_BOTTOM; + else if(s == "TEXT_ALIGNMENT_VERTICAL_CENTER") return TEXT_ALIGNMENT_VERTICAL_CENTER; + else if(s == "TEXT_ALIGNMENT_VERTICAL_TOP") return TEXT_ALIGNMENT_VERTICAL_TOP; + else + throw Exception(Exception::ERR_SERIALIZATION,"\"" + s + "\" is not a recognized VerticalTextAlignment type! (Possible need to update?)","StringConverter::parseVerticalTextAlignment"); + } + WidgetEvent StringConverter::parseWidgetEvent(const Ogre::String& s) { if(s == "WIDGET_EVENT_ENABLED_CHANGED") return WIDGET_EVENT_ENABLED_CHANGED; Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUIStringConverter.h =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUIStringConverter.h 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUIStringConverter.h 2008-11-14 07:08:16 UTC (rev 790) @@ -5,7 +5,6 @@ #include "QuickGUIBrushEnums.h" #include "QuickGUIException.h" #include "QuickGUIExportDLL.h" -#include "QuickGUIPadding.h" #include "QuickGUIProgressBarEnums.h" #include "QuickGUIEventTypes.h" #include "QuickGUIScrollBarButtonLayouts.h" @@ -22,29 +21,29 @@ public: static Ogre::String toString(BrushFilterMode m); static Ogre::String toString(HorizontalAnchor a); - static Ogre::String toString(Padding p); - static Ogre::String toString(VScrollBarButtonLayout l); + static Ogre::String toString(HorizontalTextAlignment a); static Ogre::String toString(HScrollBarButtonLayout l); static Ogre::String toString(ProgressBarFillDirection d); static Ogre::String toString(ProgressBarLayout l); static Ogre::String toString(ProgressBarClippingEdge e); - static Ogre::String toString(TextAlignment a); static Ogre::String toString(ToolBarItemLayout l); static Ogre::String toString(VerticalAnchor a); + static Ogre::String toString(VerticalTextAlignment a); + static Ogre::String toString(VScrollBarButtonLayout l); static Ogre::String toString(WidgetEvent e); static Ogre::String toString(WindowEvent e); static BrushFilterMode parseBrushFilterMode(const Ogre::String& s); static HorizontalAnchor parseHorizontalAnchor(const Ogre::String& s); - static Padding parsePadding(const Ogre::String& s); - static VScrollBarButtonLayout parseVScrollBarButtonLayout(const Ogre::String& s); + static HorizontalTextAlignment parseHorizontalTextAlignment(const Ogre::String& s); static HScrollBarButtonLayout parseHScrollBarButtonLayout(const Ogre::String& s); static ProgressBarFillDirection parseProgressBarFillDirection(const Ogre::String& s); static ProgressBarLayout parseProgressBarLayout(const Ogre::String& s); static ProgressBarClippingEdge parseProgressBarClippingEdge(const Ogre::String& s); - static TextAlignment parseTextAlignment(const Ogre::String& s); static ToolBarItemLayout parseToolBarItemLayout(const Ogre::String& s); static VerticalAnchor parseVerticalAnchor(const Ogre::String& s); + static VerticalTextAlignment parseVerticalTextAlignment(const Ogre::String& s); + static VScrollBarButtonLayout parseVScrollBarButtonLayout(const Ogre::String& s); static WidgetEvent parseWidgetEvent(const Ogre::String& s); static WindowEvent parseWindowEvent(const Ogre::String& s); Modified: trunk/python-ogre/ThirdParty/quickgui/QuickGUITab.cpp =================================================================== --- trunk/python-ogre/ThirdParty/quickgui/QuickGUITab.cpp 2008-11-10 17:16:49 UTC (rev 789) +++ trunk/python-ogre/ThirdParty/quickgui/QuickGUITab.cpp 2008-11-14 07:08:16 UTC (rev 790) @@ -44,9 +44,9 @@ if(mDesc->textDesc.segments.empty()) mDesc->dimensions.size.width = mDesc->frontWidth + 50; else - mDesc->dimensions.size.width = mDesc->frontWidth + mDesc->textDesc.getTextWidth() + mDesc->padding[PADDING_RIGHT]; + mDesc->dimensions.size.width = mDesc->frontWidth + mDesc->textDesc.getTextWidth() + mSkinType->getSkinElement(mSkinElementName)->getBorderThickness(BORDER_RIGHT); - mText->setAllottedWidth(mDesc->textDesc.getTextWidth() + mDesc->padding[PADDING_RIGHT]); + mText->setAllottedWidth(mDesc->textDesc.getTextWidth() + mSkinType->getSkinElement(mSkinElementName)->getBorderThickness(BORDER_RIGHT)); } void Tab::_initialize(WidgetDesc* d) @@ -64,11 +64,6 @@ else mDesc->frontWidth = td->frontWidth; - mDesc->padding[PADDING_LEFT] = td->padding[PADDING_LEFT]; - mDesc->padding[PADDING_RIGHT] = td->padding[PADDING_RIGHT]; - mDesc->padding[PADDING_BOTTOM] = td->padding[PADDING_BOTTOM]; - mDesc->padding[PADDING_TOP] = td->padding[PADDING_TOP]; - // Make a copy of the Text Desc. The Text object will // modify it directly, which is used for serialization. mDesc->textDesc = td->textDesc; @@ -76,14 +71,15 @@ if(mDesc->textDesc.segments.empty()) mDesc->dimensions.size.width = mDesc->frontWidth + 50; else - mDesc->dimensions.size.width = mDesc->frontWidth + mDesc->padding[PADDING_LEFT] + mDesc->textDesc.getTextWidth() + mDesc->padding[PADDING_RIGHT]; + mDesc->dimensions.size.width = mDesc->frontWidth + mSkinType->getSkinElement(MAIN)->getBorderThickness(BORDER_LEFT) + mDesc->textDesc.getTextWidth() + mSkinType->getSkinElement(MAIN)->getBorderThickness(BORDER_RIGHT); if(mDesc->textDesc.segments.empty()) mDesc->dimensions.size.height = 20; else - mDesc->dimensions.size.height = mDesc->padding[PADDING_TOP] + mDesc->textDesc.getTextHeight() + mDesc->padding[PADDING_BOTTOM]; + mDesc->dimensions.size.height = mSkinType->getSkinElement(mSkinElementName)->getBorderThickness(BORDER_TOP) + mDesc->textDesc.getTextHeight() + mSkinType->getSkinElement(mSkinElementName)->getBorderThickness(BORDER_BOTTOM); - mDesc->textDesc.allottedWidth = mDesc->textDesc.getTextWidth() + mDesc->padding[PADDING_RIGHT]; + mDesc->verticalTextAlignment = td->verticalTextAlignment; + mDesc->textDesc.allottedWidth = mDesc->textDesc.getTextWidth() + mSkinType->getSkinElement(mSkinElementName)->getBorderThickness(BORDER_RIGHT); mText = new Text(mDesc->textDesc); mCurrentFontName = Text::get... [truncated message content] |