diff options
author | Andrei Karas <akaras@inbox.ru> | 2013-09-30 18:43:40 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2013-09-30 18:43:40 +0300 |
commit | 112058d7208f9a48a14d943e560b3b703647653a (patch) | |
tree | 8123b89ceee53577733f32fe15880fe7538ec473 /src/gui/widgets/tab.cpp | |
parent | 64781090e80fa93a43ce37f0705bbb1cf22ed8bf (diff) | |
download | plus-112058d7208f9a48a14d943e560b3b703647653a.tar.gz plus-112058d7208f9a48a14d943e560b3b703647653a.tar.bz2 plus-112058d7208f9a48a14d943e560b3b703647653a.tar.xz plus-112058d7208f9a48a14d943e560b3b703647653a.zip |
move tabs into tabs directory.
Diffstat (limited to 'src/gui/widgets/tab.cpp')
-rw-r--r-- | src/gui/widgets/tab.cpp | 346 |
1 files changed, 0 insertions, 346 deletions
diff --git a/src/gui/widgets/tab.cpp b/src/gui/widgets/tab.cpp deleted file mode 100644 index 8c974cf97..000000000 --- a/src/gui/widgets/tab.cpp +++ /dev/null @@ -1,346 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2008-2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2013 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * 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, see <http://www.gnu.org/licenses/>. - */ - -#include "gui/widgets/tab.h" - -#include "client.h" -#include "graphicsvertexes.h" - -#include "gui/widgets/label.h" -#include "gui/widgets/tabbedarea.h" - -#include "debug.h" - -int Tab::mInstances = 0; -float Tab::mAlpha = 1.0; - -enum -{ - TAB_STANDARD = 0, // 0 - TAB_HIGHLIGHTED, // 1 - TAB_SELECTED, // 2 - TAB_UNUSED, // 3 - TAB_COUNT // 4 - Must be last. -}; - -static std::string const data[TAB_COUNT] = -{ - "tab.xml", - "tab_highlighted.xml", - "tab_selected.xml", - "tab_unused.xml" -}; - -Skin *Tab::tabImg[TAB_COUNT]; - -Tab::Tab(const Widget2 *const widget) : - gcn::BasicContainer(), - Widget2(widget), - gcn::MouseListener(), - gcn::WidgetListener(), - mLabel(new Label(this)), - mTabbedArea(nullptr), - mTabColor(&getThemeColor(Theme::TAB)), - mTabOutlineColor(&getThemeColor(Theme::TAB_OUTLINE)), - mTabHighlightedColor(&getThemeColor(Theme::TAB_HIGHLIGHTED)), - mTabHighlightedOutlineColor(&getThemeColor( - Theme::TAB_HIGHLIGHTED_OUTLINE)), - mTabSelectedColor(&getThemeColor(Theme::TAB_SELECTED)), - mTabSelectedOutlineColor(&getThemeColor(Theme::TAB_SELECTED_OUTLINE)), - mFlashColor(&getThemeColor(Theme::TAB_FLASH)), - mFlashOutlineColor(&getThemeColor(Theme::TAB_FLASH_OUTLINE)), - mPlayerFlashColor(&getThemeColor(Theme::TAB_PLAYER_FLASH)), - mPlayerFlashOutlineColor(&getThemeColor(Theme::TAB_PLAYER_FLASH_OUTLINE)), - mFlash(0), - mVertexes(new ImageCollection), - mImage(nullptr), - mMode(0), - mRedraw(true), - mHasMouse(false) -{ - init(); -} - -Tab::~Tab() -{ - if (gui) - gui->removeDragged(this); - - mInstances--; - if (mInstances == 0 && Theme::instance()) - { - Theme *const theme = Theme::instance(); - for (int mode = 0; mode < TAB_COUNT; mode ++) - theme->unload(tabImg[mode]); - } - - delete mLabel; - mLabel = nullptr; - - if (mImage) - { - mImage->decRef(); - mImage = nullptr; - } - delete mVertexes; - mVertexes = nullptr; -} - -void Tab::init() -{ - addMouseListener(this); - setFocusable(false); - setFrameSize(0); - mFlash = 0; - - addWidgetListener(this); - - if (mInstances == 0) - { - // Load the skin - Theme *const theme = Theme::instance(); - if (theme) - { - for (int mode = 0; mode < TAB_COUNT; mode ++) - tabImg[mode] = theme->load(data[mode], "tab.xml"); - } - updateAlpha(); - } - mInstances++; - - add(mLabel); - - const Skin *const skin = tabImg[TAB_STANDARD]; - if (!skin) - return; - const int padding = skin->getPadding(); - - mLabel->setPosition(padding, padding); -} - -void Tab::updateAlpha() -{ - const float alpha = std::max(client->getGuiAlpha(), - Theme::instance()->getMinimumOpacity()); - - if (alpha != mAlpha) - { - mAlpha = alpha; - for (int a = 0; a < 9; a++) - { - for (int t = 0; t < TAB_COUNT; t++) - { - Skin *const skin = tabImg[t]; - if (skin) - { - const ImageRect &rect = skin->getBorder(); - Image *const image = rect.grid[a]; - if (image) - image->setAlpha(mAlpha); - } - } - } - } -} - -void Tab::draw(gcn::Graphics *graphics) -{ - BLOCK_START("Tab::draw") - int mode = TAB_STANDARD; - - // check which type of tab to draw - if (mTabbedArea) - { - if (mTabbedArea->isTabSelected(this)) - { - mLabel->setForegroundColorAll(*mTabSelectedColor, - *mTabSelectedOutlineColor); - mode = TAB_SELECTED; - // if tab is selected, it doesnt need to highlight activity - mFlash = 0; - } - else if (mHasMouse) - { - mLabel->setForegroundColorAll(*mTabHighlightedColor, - *mTabHighlightedOutlineColor); - mode = TAB_HIGHLIGHTED; - } - else - { - mLabel->setForegroundColorAll(*mTabColor, *mTabOutlineColor); - } - - switch (mFlash) - { - case 1: - mLabel->setForegroundColorAll(*mFlashColor, - *mFlashOutlineColor); - break; - case 2: - mLabel->setForegroundColorAll(*mPlayerFlashColor, - *mPlayerFlashOutlineColor); - break; - default: - break; - } - } - - const Skin *const skin = tabImg[mode]; - if (!skin) - { - BLOCK_END("Tab::draw") - return; - } - - updateAlpha(); - - Graphics *const g = static_cast<Graphics*>(graphics); - - if (skin) - { - // draw tab - if (openGLMode != RENDER_SAFE_OPENGL) - { - const ImageRect &rect = skin->getBorder(); - if (mRedraw || mode != mMode || g->getRedraw()) - { - mMode = mode; - mRedraw = false; - mVertexes->clear(); - g->calcWindow(mVertexes, 0, 0, - mDimension.width, mDimension.height, rect); - - if (mImage) - { - const Skin *const skin1 = tabImg[TAB_STANDARD]; - if (skin1) - { - const int padding = skin1->getPadding(); - g->calcTile(mVertexes, mImage, padding, padding); - } - } - } - - g->drawTile(mVertexes); - } - else - { - g->drawImageRect(0, 0, - mDimension.width, mDimension.height, skin->getBorder()); - if (mImage) - { - const Skin *const skin1 = tabImg[TAB_STANDARD]; - if (skin1) - { - const int padding = skin1->getPadding(); - g->drawImage(mImage, padding, padding); - } - } - } - } - - drawChildren(graphics); - BLOCK_END("Tab::draw") -} - -void Tab::widgetResized(const gcn::Event &event A_UNUSED) -{ - mRedraw = true; -} - -void Tab::widgetMoved(const gcn::Event &event A_UNUSED) -{ - mRedraw = true; -} - -void Tab::setLabelFont(gcn::Font *const font) -{ - if (!mLabel) - return; - - mLabel->setFont(font); - mLabel->adjustSize(); - adjustSize(); -} - - -void Tab::adjustSize() -{ - const Skin *const skin = tabImg[TAB_STANDARD]; - if (!skin) - return; - const int pad2 = skin->getPadding() * 2; - - if (mImage) - { - const SDL_Rect &rect = mImage->mBounds; - setSize(rect.w + pad2, rect.h + pad2); - } - else - { - setSize(mLabel->getWidth() + pad2, - mLabel->getHeight() + pad2); - } - - if (mTabbedArea) - mTabbedArea->adjustTabPositions(); -} - -void Tab::setTabbedArea(TabbedArea* tabbedArea) -{ - mTabbedArea = tabbedArea; -} - -TabbedArea* Tab::getTabbedArea() const -{ - return mTabbedArea; -} - -void Tab::setCaption(const std::string &caption) -{ - mLabel->setCaption(caption); - mLabel->adjustSize(); - adjustSize(); -} - -void Tab::setImage(Image *const image) -{ - if (mImage) - mImage->decRef(); - mImage = image; - adjustSize(); -} - -const std::string &Tab::getCaption() const -{ - return mLabel->getCaption(); -} - -void Tab::mouseEntered(gcn::MouseEvent& mouseEvent A_UNUSED) -{ - mHasMouse = true; -} - -void Tab::mouseExited(gcn::MouseEvent& mouseEvent A_UNUSED) -{ - mHasMouse = false; -} |