[Balder-cvs] SF.net SVN: balder: [87] src/menu
Status: Beta
Brought to you by:
holomorph
From: <col...@us...> - 2007-11-30 20:16:26
|
Revision: 87 http://balder.svn.sourceforge.net/balder/?rev=87&view=rev Author: colalord Date: 2007-11-30 12:16:26 -0800 (Fri, 30 Nov 2007) Log Message: ----------- 19 Nov-2007 - Reuben add widgetskinnedcheckbox.cpp/h and menuskin.png Modified Paths: -------------- Balder2D-Win-README.txt Balder2D-Win.cbp history.txt include/menu/gamesetup.h src/menu/gamesetup.cpp Added Paths: ----------- bin/menu/menuskin.png include/menu/widgetskinnedcheckbox.h src/menu/widgetskinnedcheckbox.cpp Modified: Balder2D-Win-README.txt =================================================================== --- Balder2D-Win-README.txt 2007-11-19 19:07:56 UTC (rev 86) +++ Balder2D-Win-README.txt 2007-11-30 20:16:26 UTC (rev 87) @@ -128,22 +128,14 @@ 14. There is no DLL file for this library. ================================================================================== -Building & Installing Boost Libraries --------------------------------------- - 1. For a complete description on how to install Boost go to: http://www.boost.org/more/getting_started.html - 2. or continue here by downloading "boost_1_33_1.zip" or later from: http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=8041 - 3. Download "boost-jam-3.1.11-1-ntx86.zip" or later from: http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=72941 - 4. Extract all of the files to "C:\tmp\". - 5. Run the MSYS shell. - 6. Type: cd /c/tmp/boost-jam-3.1.11-1-ntx86 - 7. Type (copying "bjam.exe" to the MSYS %PATH% directory): cp bjam.exe /usr/local/bin/ - 8. Type: cd /c/tmp/boost_1_33_1/ - 9. Type: bjam.exe -sTOOLS=mingw boost_filesystem - 10. MSYS will start building the Boost File System libraries. - 11. Type: cp bin/boost/libs/filesystem/build/libboost_filesystem.lib/mingw/release/libboost_filesystem-mgw-1_33_1.lib /usr/local/lib/ - 12. Type: cp boost /usr/local/include/ -r - 13. There is no DLL file for this library. +Building & Installing PhysFS Libraries +--------------------------------------- + 1. CMakeCache.txt + line 137: CMAKE_USE_RELATIVE_PATHS:BOOL=ON + 2. platforms/windows.c + rem out lines 334 - 340 + ================================================================================== Installing Guichan Libraries ----------------------------- Modified: Balder2D-Win.cbp =================================================================== --- Balder2D-Win.cbp 2007-11-19 19:07:56 UTC (rev 86) +++ Balder2D-Win.cbp 2007-11-30 20:16:26 UTC (rev 87) @@ -70,6 +70,7 @@ <Unit filename="include\menu\skinnedbuttonwidget.h" /> <Unit filename="include\menu\soundvideo.h" /> <Unit filename="include\menu\submenu.h" /> + <Unit filename="include\menu\widgetskinnedcheckbox.h" /> <Unit filename="include\player.h" /> <Unit filename="include\powerup.h" /> <Unit filename="include\powerupfactory.h" /> @@ -110,6 +111,7 @@ <Unit filename="src\menu\skinnedbuttonwidget.cpp" /> <Unit filename="src\menu\soundvideo.cpp" /> <Unit filename="src\menu\submenu.cpp" /> + <Unit filename="src\menu\widgetskinnedcheckbox.cpp" /> <Unit filename="src\player.cpp" /> <Unit filename="src\powerup.cpp" /> <Unit filename="src\powerupfactory.cpp" /> Added: bin/menu/menuskin.png =================================================================== (Binary files differ) Property changes on: bin/menu/menuskin.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: history.txt =================================================================== --- history.txt 2007-11-19 19:07:56 UTC (rev 86) +++ history.txt 2007-11-30 20:16:26 UTC (rev 87) @@ -4,6 +4,9 @@ History entries are in reverse chronological order (newest entries first). 19 Nov-2007 + - Reuben add widgetskinnedcheckbox.cpp/h and menuskin.png + +19 Nov-2007 - Reuben removed ending slashes from the python search paths because they cause an issue with python when it goes to import modules. Modified: include/menu/gamesetup.h =================================================================== --- include/menu/gamesetup.h 2007-11-19 19:07:56 UTC (rev 86) +++ include/menu/gamesetup.h 2007-11-30 20:16:26 UTC (rev 87) @@ -27,7 +27,8 @@ { class SampleMapWidget; class MapListModel; -class SkinnedButtonWidget; +class SkinnedButtonWidget; +class WidgetSkinnedCheckBox; class GameSetupMenu:public SubMenu { @@ -43,7 +44,7 @@ gcn::DropDown* mapDropDown; gcn::ScrollArea* mapScrollArea; gcn::ListBox* mapListBox; - gcn::CheckBox* scoreLimitSelector; + WidgetSkinnedCheckBox* scoreLimitSelector; gcn::CheckBox* timeLimitSelector; gcn::CheckBox* lifeLimitSelector; NumberField* scoreLimitValue; Added: include/menu/widgetskinnedcheckbox.h =================================================================== --- include/menu/widgetskinnedcheckbox.h (rev 0) +++ include/menu/widgetskinnedcheckbox.h 2007-11-30 20:16:26 UTC (rev 87) @@ -0,0 +1,58 @@ +/*************************************************************************** + * Copyright (C) 2006 by Bjorn Hansen * + * hol...@us... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef BALDERWIDGETSKINNEDCHECKBOX_H +#define BALDERWIDGETSKINNEDCHECKBOX_H + +#define checkboxUnChecked 0 +#define checkboxChecked 1 +#define widgetFocused 2 + +#include <guichan/widgets/checkbox.hpp> +#include "../balder2dtypes.h" + +namespace Balder +{ + /** + * A check box with a skin applied to it's surface. + */ + class WidgetSkinnedCheckBox: public gcn::CheckBox + { + public: + // Constructor and Destructor. + WidgetSkinnedCheckBox(std::string, std::string, unsigned int = 0, bool = false); + ~WidgetSkinnedCheckBox(); + + // Inherited from gcn::Widget + virtual void draw(gcn::Graphics* graphics); + virtual void drawBorder(gcn::Graphics* graphics); + + private: + // Skin Variables. + SDL_Surface* skinFrameStrip; + std::string skinFileName; + unsigned int skinStripLocation; + + // Button Variables. + unsigned int checkboxState; + }; +} + +#endif // BALDERWIDGETSKINNEDCHECKBOX_H Modified: src/menu/gamesetup.cpp =================================================================== --- src/menu/gamesetup.cpp 2007-11-19 19:07:56 UTC (rev 86) +++ src/menu/gamesetup.cpp 2007-11-30 20:16:26 UTC (rev 87) @@ -20,7 +20,8 @@ #include "menu/gamesetup.h" #include "configmanager.h" -#include "menu/samplemapwidget.h" +#include "menu/samplemapwidget.h" +#include "menu/widgetskinnedcheckbox.h" #include "menu/maplistmodel.h" using namespace Balder; @@ -48,9 +49,10 @@ int score = ConfigManager::GetIntValue("GameSetup", "ScoreLimit"); int time = ConfigManager::GetIntValue("GameSetup", "TimeLimit"); int life = ConfigManager::GetIntValue("GameSetup", "LifeLimit"); - scoreLimitSelector = new gcn::CheckBox("Maximum Score", score > 0); + scoreLimitSelector = new WidgetSkinnedCheckBox("Maximum Score", "menu/menuskin.png", 0, score > 0); + scoreLimitSelector->setHeight(32); scoreLimitSelector->setActionEventId("toggleScoreLimit"); - scoreLimitSelector->addActionListener(this); + scoreLimitSelector->addActionListener(this); timeLimitSelector = new gcn::CheckBox("Time (minutes)", time > 0); timeLimitSelector->setActionEventId("toggleTimeLimit"); timeLimitSelector->addActionListener(this); Added: src/menu/widgetskinnedcheckbox.cpp =================================================================== --- src/menu/widgetskinnedcheckbox.cpp (rev 0) +++ src/menu/widgetskinnedcheckbox.cpp 2007-11-30 20:16:26 UTC (rev 87) @@ -0,0 +1,86 @@ +/*************************************************************************** + * Copyright (C) 2006 by Bjorn Hansen * + * hol...@us... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include <guichan/exception.hpp> +#include <guichan/sdl/sdlgraphics.hpp> +#include <guichan/font.hpp> +#include <SDL/SDL.h> +#include <SDL/SDL_image.h> +#include "menu/widgetskinnedcheckbox.h" +#include "imageloader.h" +using namespace Balder; + +WidgetSkinnedCheckBox::WidgetSkinnedCheckBox(std::string cbC, std::string sFN, unsigned int sSL, bool cbS): + gcn::CheckBox(cbC, cbS), skinFileName(sFN), skinStripLocation(sSL), checkboxState(cbS) +{ + setBorderSize(0); + + // Load Skin Frame Strip from File. + skinFrameStrip = ImageLoader::LoadImage(skinFileName.c_str()); + if (skinFrameStrip == 0) { + throw "could not load checkbox skin!"; + } +} + +WidgetSkinnedCheckBox::~WidgetSkinnedCheckBox() +{ + if (skinFrameStrip != 0) { + SDL_FreeSurface(skinFrameStrip); + } +} + +void WidgetSkinnedCheckBox::draw(gcn::Graphics* graphics) +{ + // get screen that the menu is drawn on. + SDL_Surface *screen = dynamic_cast<gcn::SDLGraphics*>(graphics)->getTarget(); + + // get location of the widget on the menu screen. + int x,y; + gcn::Widget::getAbsolutePosition(x,y); + + if (!isMarked()) { + checkboxState = checkboxUnChecked; + } + else { + checkboxState = checkboxChecked; + } + + if (isFocused()) { + checkboxState += widgetFocused; + } + + // draw widget onto menu screen at widget location. + SDL_Rect rectSrc = {checkboxState*getHeight(), skinStripLocation, getHeight(), getHeight()}; + SDL_Rect rectDest = {x, y, /*width is ignored*/0, /*height is ignored*/0}; + SDL_BlitSurface(skinFrameStrip, &rectSrc, screen, &rectDest); + + // Need to draw caption label to the right of the checkbox. + // Align label to the right of the checkbox. + int textX = getHeight() + 5; + int textY = getHeight() / 2 - getFont()->getHeight() / 2; + + graphics->setFont(getFont()); + graphics->drawText(getCaption(), textX, textY, gcn::Graphics::LEFT); +} + +void WidgetSkinnedCheckBox::drawBorder(gcn::Graphics* graphics) +{ + // Borders are not drawn for skinned buttons. +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |