summaryrefslogtreecommitdiff
path: root/src/gui/button.cpp
diff options
context:
space:
mode:
authorBjørn Lindeijer <bjorn@lindeijer.nl>2009-04-07 23:47:57 +0200
committerBjørn Lindeijer <bjorn@lindeijer.nl>2009-04-07 23:52:46 +0200
commitd69d85f06fa6dc22ac4c7789e4140e32d119a7f1 (patch)
tree1d2311bfdba616136d0ac26f8cbe9ab73c88f0e4 /src/gui/button.cpp
parent303c1f69761e90b83d4809e911f7785ec66b46aa (diff)
downloadmana-d69d85f06fa6dc22ac4c7789e4140e32d119a7f1.tar.gz
mana-d69d85f06fa6dc22ac4c7789e4140e32d119a7f1.tar.bz2
mana-d69d85f06fa6dc22ac4c7789e4140e32d119a7f1.tar.xz
mana-d69d85f06fa6dc22ac4c7789e4140e32d119a7f1.zip
Moved basic widgets into the gui/widgets directory
In an attempt to make the GUI code a little more structured, basic widgets are now put in gui/widgets. Many includes were also cleaned up.
Diffstat (limited to 'src/gui/button.cpp')
-rw-r--r--src/gui/button.cpp180
1 files changed, 0 insertions, 180 deletions
diff --git a/src/gui/button.cpp b/src/gui/button.cpp
deleted file mode 100644
index a08d383b..00000000
--- a/src/gui/button.cpp
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * The Mana World
- * Copyright (C) 2004 The Mana World Development Team
- *
- * This file is part of The Mana World.
- *
- * 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
- * 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/font.hpp>
-
-#include "button.h"
-#include "palette.h"
-
-#include "../configuration.h"
-#include "../graphics.h"
-
-#include "../resources/image.h"
-#include "../resources/resourcemanager.h"
-
-#include "../utils/dtor.h"
-
-int Button::mInstances = 0;
-float Button::mAlpha = 1.0;
-
-enum{
- BUTTON_STANDARD, // 0
- BUTTON_HIGHLIGHTED, // 1
- BUTTON_PRESSED, // 2
- BUTTON_DISABLED, // 3
- BUTTON_COUNT // 4 - Must be last.
-};
-
-struct ButtonData
-{
- char const *file;
- int gridX;
- int gridY;
-};
-
-static ButtonData const data[BUTTON_COUNT] = {
- { "graphics/gui/button.png", 0, 0 },
- { "graphics/gui/buttonhi.png", 9, 4 },
- { "graphics/gui/buttonpress.png", 16, 19 },
- { "graphics/gui/button_disabled.png", 25, 23 }
-};
-
-ImageRect Button::button[BUTTON_COUNT];
-
-Button::Button()
-{
- init();
-}
-
-Button::Button(const std::string &caption, const std::string &actionEventId,
- gcn::ActionListener *listener):
- gcn::Button(caption)
-{
- init();
- setActionEventId(actionEventId);
-
- if (listener)
- addActionListener(listener);
-}
-
-void Button::init()
-{
- setFrameSize(0);
-
- if (mInstances == 0)
- {
- // Load the skin
- ResourceManager *resman = ResourceManager::getInstance();
- Image *btn[BUTTON_COUNT];
-
- int a, x, y, mode;
-
- for (mode = 0; mode < BUTTON_COUNT; mode++)
- {
- btn[mode] = resman->getImage(data[mode].file);
- a = 0;
- for (y = 0; y < 3; y++)
- {
- for (x = 0; x < 3; x++)
- {
- button[mode].grid[a] = btn[mode]->getSubImage(
- data[x].gridX, data[y].gridY,
- data[x + 1].gridX - data[x].gridX + 1,
- data[y + 1].gridY - data[y].gridY + 1);
- button[mode].grid[a]->setAlpha(mAlpha);
- a++;
- }
- }
- btn[mode]->decRef();
- }
- }
- mInstances++;
-}
-
-Button::~Button()
-{
- mInstances--;
-
- if (mInstances == 0)
- {
- for (int mode = 0; mode < BUTTON_COUNT; mode++)
- {
- for_each(button[mode].grid, button[mode].grid + 9, dtor<Image*>());
- }
- }
-}
-
-void Button::draw(gcn::Graphics *graphics)
-{
- int mode;
-
- if (!isEnabled())
- mode = BUTTON_DISABLED;
- else if (isPressed())
- mode = BUTTON_PRESSED;
- else if (mHasMouse || isFocused())
- mode = BUTTON_HIGHLIGHTED;
- else
- mode = BUTTON_STANDARD;
-
- if (config.getValue("guialpha", 0.8) != mAlpha)
- {
- mAlpha = config.getValue("guialpha", 0.8);
- for (int a = 0; a < 9; a++)
- {
- button[BUTTON_DISABLED].grid[a]->setAlpha(mAlpha);
- button[BUTTON_PRESSED].grid[a]->setAlpha(mAlpha);
- button[BUTTON_HIGHLIGHTED].grid[a]->setAlpha(mAlpha);
- button[BUTTON_STANDARD].grid[a]->setAlpha(mAlpha);
- }
- }
-
- static_cast<Graphics*>(graphics)->
- drawImageRect(0, 0, getWidth(), getHeight(), button[mode]);
-
- graphics->setColor(guiPalette->getColor(Palette::TEXT));
-
- int textX;
- int textY = getHeight() / 2 - getFont()->getHeight() / 2;
-
- switch (getAlignment())
- {
- case gcn::Graphics::LEFT:
- textX = 4;
- break;
- case gcn::Graphics::CENTER:
- textX = getWidth() / 2;
- break;
- case gcn::Graphics::RIGHT:
- textX = getWidth() - 4;
- break;
- default:
- throw GCN_EXCEPTION("Button::draw. Unknown alignment.");
- }
-
- graphics->setFont(getFont());
-
- if (isPressed())
- graphics->drawText(getCaption(), textX + 1, textY + 1, getAlignment());
- else
- graphics->drawText(getCaption(), textX, textY, getAlignment());
-}