diff options
Diffstat (limited to 'src/interface/Button.cpp')
| -rw-r--r-- | src/interface/Button.cpp | 237 |
1 files changed, 0 insertions, 237 deletions
diff --git a/src/interface/Button.cpp b/src/interface/Button.cpp deleted file mode 100644 index a2ecf8f..0000000 --- a/src/interface/Button.cpp +++ /dev/null @@ -1,237 +0,0 @@ -#include <iostream> -#include "interface/Button.h" -#include "graphics/Graphics.h" -#include "Engine.h" -#include "Misc.h" - -namespace ui { - -Button::Button(Point position, Point size, std::string buttonText, std::string toolTip): - Component(position, size), - ButtonText(buttonText), - isMouseInside(false), - isButtonDown(false), - isTogglable(false), - toggle(false), - actionCallback(NULL), - Enabled(true), - toolTip(toolTip) -{ - TextPosition(); -} - -void Button::TextPosition() -{ - buttonDisplayText = ButtonText; - if(buttonDisplayText.length()) - { - if(Graphics::textwidth((char *)buttonDisplayText.c_str()) > Size.X - (Appearance.icon? 22 : 0)) - { - int position = Graphics::textwidthx((char *)buttonDisplayText.c_str(), Size.X - (Appearance.icon? 38 : 22)); - buttonDisplayText = buttonDisplayText.erase(position, buttonDisplayText.length()-position); - buttonDisplayText += "..."; - } - } - - Component::TextPosition(buttonDisplayText); -} - -void Button::SetIcon(Icon icon) -{ - Appearance.icon = icon; - TextPosition(); -} - -void Button::SetText(std::string buttonText) -{ - ButtonText = buttonText; - TextPosition(); -} - -void Button::SetTogglable(bool togglable) -{ - toggle = false; - isTogglable = togglable; -} - -bool Button::GetTogglable() -{ - return isTogglable; -} - -TPT_NO_INLINE bool Button::GetToggleState() -{ - return toggle; -} - -TPT_NO_INLINE void Button::SetToggleState(bool state) -{ - toggle = state; -} - -void Button::Draw(const Point& screenPos) -{ - if(!drawn) - { - TextPosition(); - drawn = true; - } - Graphics * g = ui::Engine::Ref().g; - Point Position = screenPos; - ui::Colour bgColour(0, 0, 0); - - ui::Colour textColour = Appearance.TextInactive; - ui::Colour borderColour = Appearance.BorderInactive; - ui::Colour backgroundColour = Appearance.BackgroundInactive; - - if(Enabled) - { - if(isButtonDown || (isTogglable && toggle)) - { - textColour = Appearance.TextActive; - borderColour = Appearance.BorderActive; - backgroundColour = Appearance.BackgroundActive; - } - else if (isMouseInside) - { - textColour = Appearance.TextHover; - borderColour = Appearance.BorderHover; - backgroundColour = Appearance.BackgroundHover; - } - else - { - textColour = Appearance.TextInactive; - borderColour = Appearance.BorderInactive; - backgroundColour = Appearance.BackgroundInactive; - } - } - else - { - textColour = Appearance.TextDisabled; - borderColour = Appearance.BorderDisabled; - backgroundColour = Appearance.BackgroundDisabled; - } - - bgColour = Appearance.BackgroundInactive; - g->fillrect(Position.X+1, Position.Y+1, Size.X-2, Size.Y-2, backgroundColour.Red, backgroundColour.Green, backgroundColour.Blue, backgroundColour.Alpha); - if(Appearance.Border == 1) - g->drawrect(Position.X, Position.Y, Size.X, Size.Y, borderColour.Red, borderColour.Green, borderColour.Blue, borderColour.Alpha); - else - { - if(Appearance.Border.Top) - g->draw_line(Position.X, Position.Y, Position.X+Size.X-1, Position.Y, borderColour.Red, borderColour.Green, borderColour.Blue, borderColour.Alpha); - if(Appearance.Border.Bottom) - g->draw_line(Position.X, Position.Y+Size.Y-1, Position.X+Size.X-1, Position.Y+Size.Y-1, borderColour.Red, borderColour.Green, borderColour.Blue, borderColour.Alpha); - if(Appearance.Border.Left) - g->draw_line(Position.X, Position.Y, Position.X, Position.Y+Size.Y-1, borderColour.Red, borderColour.Green, borderColour.Blue, borderColour.Alpha); - if(Appearance.Border.Right) - g->draw_line(Position.X+Size.X-1, Position.Y, Position.X+Size.X-1, Position.Y+Size.Y-1, borderColour.Red, borderColour.Green, borderColour.Blue, borderColour.Alpha); - } - g->drawtext(Position.X+textPosition.X, Position.Y+textPosition.Y, buttonDisplayText, textColour.Red, textColour.Green, textColour.Blue, textColour.Alpha); - - bool iconInvert = (backgroundColour.Blue + (3*backgroundColour.Green) + (2*backgroundColour.Red))>544?true:false; - - if(Appearance.icon) - { - if(Enabled) - if(isButtonDown || (isTogglable && toggle)) - { - g->draw_icon(Position.X+iconPosition.X, Position.Y+iconPosition.Y, Appearance.icon, 255, iconInvert); - } - else - { - g->draw_icon(Position.X+iconPosition.X, Position.Y+iconPosition.Y, Appearance.icon, 255, iconInvert); - } - else - g->draw_icon(Position.X+iconPosition.X, Position.Y+iconPosition.Y, Appearance.icon, 180, iconInvert); - } -} - -void Button::OnMouseUnclick(int x, int y, unsigned int button) -{ - if(button == 1) - { - if(isButtonDown) - { - isButtonDown = false; - DoAction(); - } - } - else if(button == 3) - { - if(isAltButtonDown) - { - isAltButtonDown = false; - DoAltAction(); - } - } -} - -void Button::OnMouseClick(int x, int y, unsigned int button) -{ - if(!Enabled) - return; - if(button == 1) - { - if(isTogglable) - { - toggle = !toggle; - } - isButtonDown = true; - } - else if(button == 3) - { - isAltButtonDown = true; - } -} - -void Button::OnMouseEnter(int x, int y) -{ - isMouseInside = true; - if(!Enabled) - return; - if(actionCallback) - actionCallback->MouseEnterCallback(this); - if(toolTip.length()>0 && GetParentWindow()) - { - GetParentWindow()->ToolTip(this, ui::Point(x, y), toolTip); - } -} - - -void Button::OnMouseLeave(int x, int y) -{ - isMouseInside = false; - isButtonDown = false; -} - -void Button::DoAction() -{ - if(!Enabled) - return; - if(actionCallback) - actionCallback->ActionCallback(this); -} - -void Button::DoAltAction() -{ - if(!Enabled) - return; - if(actionCallback) - actionCallback->AltActionCallback(this); -} - -void Button::SetActionCallback(ButtonAction * action) -{ - if(actionCallback) - delete actionCallback; - actionCallback = action; -} - -Button::~Button() -{ - if(actionCallback) - delete actionCallback; -} - -} /* namespace ui */ |
