From 9284313d17ba906de449c6d39ef3ddacb6c73791 Mon Sep 17 00:00:00 2001 From: Hugues Ross Date: Mon, 9 Dec 2019 15:06:51 -0500 Subject: Refactor to centralize GUIButton styling/rendering code (#9090) --- src/gui/guiButtonImage.h | 59 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/gui/guiButtonImage.h (limited to 'src/gui/guiButtonImage.h') diff --git a/src/gui/guiButtonImage.h b/src/gui/guiButtonImage.h new file mode 100644 index 000000000..15901ee5d --- /dev/null +++ b/src/gui/guiButtonImage.h @@ -0,0 +1,59 @@ +/* +Minetest +Copyright (C) 2013 celeron55, Perttu Ahola + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include "guiButton.h" +#include "IGUIButton.h" + +using namespace irr; + +class GUIButtonImage : public GUIButton +{ +public: + //! constructor + GUIButtonImage(gui::IGUIEnvironment *environment, gui::IGUIElement *parent, + s32 id, core::rect rectangle, bool noclip = false); + + virtual bool OnEvent(const SEvent& event) override; + + void setForegroundImage(gui::EGUI_BUTTON_IMAGE_STATE state, + video::ITexture *image = nullptr, + const core::rect &sourceRect = core::rect(0, 0, 0, 0)); + + void setForegroundImage(video::ITexture *image = nullptr); + void setForegroundImage(video::ITexture *image, const core::rect &pos); + + void setPressedForegroundImage(video::ITexture *image = nullptr); + void setPressedForegroundImage(video::ITexture *image, const core::rect &pos); + + void setHoveredForegroundImage(video::ITexture *image = nullptr); + void setHoveredForegroundImage(video::ITexture *image, const core::rect &pos); + + virtual void setFromStyle(const StyleSpec &style, ISimpleTextureSource *tsrc) override; + + virtual void setScaleImage(bool scaleImage=true) override; + + //! Do not drop returned handle + static GUIButtonImage *addButton(gui::IGUIEnvironment *environment, + const core::rect &rectangle, IGUIElement *parent, s32 id, + const wchar_t *text, const wchar_t *tooltiptext = L""); + +private: + ButtonImage m_foreground_images[gui::EGBIS_COUNT]; + gui::IGUIImage *m_image; +}; -- cgit v1.2.3