Minetest  5.4.0
GUIButton Class Reference

#include <guiButton.h>

+ Inheritance diagram for GUIButton:
+ Collaboration diagram for GUIButton:

Classes

struct  ButtonImage
 
struct  ButtonSprite
 

Public Member Functions

 GUIButton (gui::IGUIEnvironment *environment, gui::IGUIElement *parent, s32 id, core::rect< s32 > rectangle, ISimpleTextureSource *tsrc, bool noclip=false)
 constructor More...
 
virtual ~GUIButton ()
 destructor More...
 
virtual bool OnEvent (const SEvent &event) override
 called if an event happened. More...
 
virtual void draw () override
 draws the element and its children More...
 
virtual void setOverrideFont (gui::IGUIFont *font=0) override
 sets another skin independent font. if this is set to zero, the button uses the font of the skin. More...
 
virtual gui::IGUIFont * getOverrideFont () const override
 Gets the override font (if any) More...
 
virtual gui::IGUIFont * getActiveFont () const override
 Get the font which is used right now for drawing. More...
 
virtual void setOverrideColor (video::SColor color)
 Sets another color for the button text. More...
 
virtual video::SColor getOverrideColor (void) const
 Gets the override color. More...
 
virtual void enableOverrideColor (bool enable)
 Sets if the button text should use the override color or the color in the gui skin. More...
 
virtual bool isOverrideColorEnabled (void) const
 Checks if an override color is enabled. More...
 
virtual void setImage (gui::EGUI_BUTTON_IMAGE_STATE state, video::ITexture *image=nullptr, const core::rect< s32 > &sourceRect=core::rect< s32 >(0, 0, 0, 0))
 Sets an image which should be displayed on the button when it is in the given state. More...
 
virtual void setImage (video::ITexture *image=nullptr) override
 Sets an image which should be displayed on the button when it is in normal state. More...
 
virtual void setImage (video::ITexture *image, const core::rect< s32 > &pos) override
 Sets an image which should be displayed on the button when it is in normal state. More...
 
virtual void setPressedImage (video::ITexture *image=nullptr) override
 Sets an image which should be displayed on the button when it is in pressed state. More...
 
virtual void setPressedImage (video::ITexture *image, const core::rect< s32 > &pos) override
 Sets an image which should be displayed on the button when it is in pressed state. More...
 
virtual void setText (const wchar_t *text) override
 Sets the text displayed by the button. More...
 
virtual void setSpriteBank (gui::IGUISpriteBank *bank=0) override
 Sets the sprite bank used by the button. More...
 
virtual void setSprite (gui::EGUI_BUTTON_STATE state, s32 index, video::SColor color=video::SColor(255, 255, 255, 255), bool loop=false, bool scale=false)
 Sets the animated sprite for a specific button state. More...
 
virtual s32 getSpriteIndex (gui::EGUI_BUTTON_STATE state) const
 Get the sprite-index for the given state or -1 when no sprite is set. More...
 
virtual video::SColor getSpriteColor (gui::EGUI_BUTTON_STATE state) const
 Get the sprite color for the given state. Color is only used when a sprite is set. More...
 
virtual bool getSpriteLoop (gui::EGUI_BUTTON_STATE state) const
 Returns if the sprite in the given state does loop. More...
 
virtual bool getSpriteScale (gui::EGUI_BUTTON_STATE state) const
 Returns if the sprite in the given state is scaled. More...
 
virtual void setIsPushButton (bool isPushButton=true) override
 Sets if the button should behave like a push button. More...
 
virtual bool isPushButton () const override
 Checks whether the button is a push button. More...
 
virtual void setPressed (bool pressed=true) override
 Sets the pressed state of the button if this is a pushbutton. More...
 
virtual bool isPressed () const override
 Returns if the button is currently pressed. More...
 
bool isHovered () const
 Returns if this element (or one of its direct children) is hovered. More...
 
virtual void setDrawBorder (bool border=true) override
 Sets if the button should use the skin to draw its border. More...
 
virtual bool isDrawingBorder () const override
 Checks if the button face and border are being drawn. More...
 
virtual void setUseAlphaChannel (bool useAlphaChannel=true) override
 Sets if the alpha channel should be used for drawing images on the button (default is false) More...
 
virtual bool isAlphaChannelUsed () const override
 Checks if the alpha channel should be used for drawing images on the button. More...
 
virtual void setScaleImage (bool scaleImage=true) override
 Sets if the button should scale the button images to fit. More...
 
virtual bool isScalingImage () const override
 Checks whether the button scales the used images. More...
 
virtual bool getClickShiftState () const
 Get if the shift key was pressed in last EGET_BUTTON_CLICKED event. More...
 
virtual bool getClickControlState () const
 Get if the control key was pressed in last EGET_BUTTON_CLICKED event. More...
 
virtual void serializeAttributes (io::IAttributes *out, io::SAttributeReadWriteOptions *options) const override
 Writes attributes of the element. More...
 
virtual void deserializeAttributes (io::IAttributes *in, io::SAttributeReadWriteOptions *options) override
 Reads attributes of the element. More...
 
void setColor (video::SColor color)
 
void setFromState ()
 Set element properties from a StyleSpec corresponding to the button state. More...
 
virtual void setFromStyle (const StyleSpec &style)
 Set element properties from a StyleSpec. More...
 
void setStyles (const std::array< StyleSpec, StyleSpec::NUM_STATES > &styles)
 Set the styles used for each state. More...
 

Static Public Member Functions

static GUIButtonaddButton (gui::IGUIEnvironment *environment, const core::rect< s32 > &rectangle, ISimpleTextureSource *tsrc, IGUIElement *parent, s32 id, const wchar_t *text, const wchar_t *tooltiptext=L"")
 Do not drop returned handle. More...
 

Protected Member Functions

void drawSprite (gui::EGUI_BUTTON_STATE state, u32 startTime, const core::position2di &center)
 
gui::EGUI_BUTTON_IMAGE_STATE getImageState (bool pressed) const
 
ISimpleTextureSourcegetTextureSource ()
 
gui::EGUI_BUTTON_IMAGE_STATE getImageState (bool pressed, const ButtonImage *images) const
 

Private Attributes

ButtonSprite ButtonSprites [gui::EGBS_COUNT]
 
gui::IGUISpriteBank * SpriteBank
 
ButtonImage ButtonImages [gui::EGBIS_COUNT]
 
std::array< StyleSpec, StyleSpec::NUM_STATESStyles
 
gui::IGUIFont * OverrideFont
 
bool OverrideColorEnabled
 
video::SColor OverrideColor
 
u32 ClickTime
 
u32 HoverTime
 
u32 FocusTime
 
bool ClickShiftState
 
bool ClickControlState
 
bool IsPushButton
 
bool Pressed
 
bool UseAlphaChannel
 
bool DrawBorder
 
bool ScaleImage
 
video::SColor Colors [4]
 
bool WasHovered = false
 
ISimpleTextureSourceTSrc
 
gui::IGUIStaticText * StaticText
 
core::rect< s32 > BgMiddle
 
core::rect< s32 > Padding
 
core::vector2d< s32 > ContentOffset
 
video::SColor BgColor
 

Constructor & Destructor Documentation

◆ GUIButton()

GUIButton::GUIButton ( gui::IGUIEnvironment *  environment,
gui::IGUIElement *  parent,
s32  id,
core::rect< s32 >  rectangle,
ISimpleTextureSource tsrc,
bool  noclip = false 
)

constructor

References Colors, and StaticText.

Referenced by addButton().

+ Here is the caller graph for this function:

◆ ~GUIButton()

GUIButton::~GUIButton ( )
virtual

destructor

References OverrideFont, and SpriteBank.

Member Function Documentation

◆ addButton()

GUIButton * GUIButton::addButton ( gui::IGUIEnvironment *  environment,
const core::rect< s32 > &  rectangle,
ISimpleTextureSource tsrc,
IGUIElement *  parent,
s32  id,
const wchar_t *  text,
const wchar_t *  tooltiptext = L"" 
)
static

Do not drop returned handle.

References GUIButton(), and setText().

Referenced by GUIFormSpecMenu::parseButton(), GUIConfirmRegistration::regenerateGui(), GUIFormSpecMenu::regenerateGui(), GUIKeyChangeMenu::regenerateGui(), GUIPasswordChange::regenerateGui(), and GUIVolumeChange::regenerateGui().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ deserializeAttributes()

void GUIButton::deserializeAttributes ( io::IAttributes *  in,
io::SAttributeReadWriteOptions *  options = 0 
)
overridevirtual

Reads attributes of the element.

References IsPushButton, Pressed, setDrawBorder(), setImage(), setPressedImage(), setScaleImage(), and setUseAlphaChannel().

+ Here is the call graph for this function:

◆ draw()

void GUIButton::draw ( )
overridevirtual

draws the element and its children

References BgColor, BgMiddle, ButtonImages, ClickTime, Colors, draw2DImage9Slice(), DrawBorder, drawSprite(), FocusTime, getImageState(), HoverTime, isHovered(), Pressed, ScaleImage, setFromState(), SpriteBank, UseAlphaChannel, and WasHovered.

+ Here is the call graph for this function:

◆ drawSprite()

void GUIButton::drawSprite ( gui::EGUI_BUTTON_STATE  state,
u32  startTime,
const core::position2di &  center 
)
protected

References ButtonSprites, GUIButton::ButtonSprite::Color, porting::getTimeMs(), GUIButton::ButtonSprite::Loop, and SpriteBank.

Referenced by draw().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ enableOverrideColor()

void GUIButton::enableOverrideColor ( bool  enable)
virtual

Sets if the button text should use the override color or the color in the gui skin.

References OverrideColorEnabled.

◆ getActiveFont()

IGUIFont * GUIButton::getActiveFont ( ) const
overridevirtual

Get the font which is used right now for drawing.

References OverrideFont.

Referenced by GUIButtonItemImage::GUIButtonItemImage().

+ Here is the caller graph for this function:

◆ getClickControlState()

virtual bool GUIButton::getClickControlState ( ) const
inlinevirtual

Get if the control key was pressed in last EGET_BUTTON_CLICKED event.

◆ getClickShiftState()

virtual bool GUIButton::getClickShiftState ( ) const
inlinevirtual

Get if the shift key was pressed in last EGET_BUTTON_CLICKED event.

◆ getImageState() [1/2]

EGUI_BUTTON_IMAGE_STATE GUIButton::getImageState ( bool  pressed) const
protected

References ButtonImages.

Referenced by draw().

+ Here is the caller graph for this function:

◆ getImageState() [2/2]

EGUI_BUTTON_IMAGE_STATE GUIButton::getImageState ( bool  pressed,
const ButtonImage images 
) const
protected

References isHovered().

+ Here is the call graph for this function:

◆ getOverrideColor()

video::SColor GUIButton::getOverrideColor ( void  ) const
virtual

Gets the override color.

References OverrideColor.

◆ getOverrideFont()

IGUIFont * GUIButton::getOverrideFont ( ) const
overridevirtual

Gets the override font (if any)

References OverrideFont.

◆ getSpriteColor()

video::SColor GUIButton::getSpriteColor ( gui::EGUI_BUTTON_STATE  state) const
virtual

Get the sprite color for the given state. Color is only used when a sprite is set.

References ButtonSprites.

◆ getSpriteIndex()

s32 GUIButton::getSpriteIndex ( gui::EGUI_BUTTON_STATE  state) const
virtual

Get the sprite-index for the given state or -1 when no sprite is set.

References ButtonSprites.

◆ getSpriteLoop()

bool GUIButton::getSpriteLoop ( gui::EGUI_BUTTON_STATE  state) const
virtual

Returns if the sprite in the given state does loop.

References ButtonSprites.

◆ getSpriteScale()

bool GUIButton::getSpriteScale ( gui::EGUI_BUTTON_STATE  state) const
virtual

Returns if the sprite in the given state is scaled.

References ButtonSprites.

◆ getTextureSource()

ISimpleTextureSource* GUIButton::getTextureSource ( )
inlineprotected

Referenced by setFromStyle(), and GUIButtonImage::setFromStyle().

+ Here is the caller graph for this function:

◆ isAlphaChannelUsed()

bool GUIButton::isAlphaChannelUsed ( ) const
overridevirtual

Checks if the alpha channel should be used for drawing images on the button.

Returns if the alpha channel should be used for drawing images on the button.

References UseAlphaChannel.

◆ isDrawingBorder()

bool GUIButton::isDrawingBorder ( ) const
overridevirtual

Checks if the button face and border are being drawn.

References DrawBorder.

◆ isHovered()

bool GUIButton::isHovered ( ) const

Returns if this element (or one of its direct children) is hovered.

Referenced by draw(), getImageState(), and setFromState().

+ Here is the caller graph for this function:

◆ isOverrideColorEnabled()

bool GUIButton::isOverrideColorEnabled ( void  ) const
virtual

Checks if an override color is enabled.

References OverrideColorEnabled.

◆ isPressed()

bool GUIButton::isPressed ( ) const
overridevirtual

Returns if the button is currently pressed.

References Pressed.

Referenced by setFromState(), and setFromStyle().

+ Here is the caller graph for this function:

◆ isPushButton()

bool GUIButton::isPushButton ( ) const
overridevirtual

Checks whether the button is a push button.

Returns whether the button is a push button.

References IsPushButton.

Referenced by setIsPushButton().

+ Here is the caller graph for this function:

◆ isScalingImage()

bool GUIButton::isScalingImage ( ) const
overridevirtual

Checks whether the button scales the used images.

Returns whether the button scale the used images.

References ScaleImage.

Referenced by GUIButtonImage::GUIButtonImage().

+ Here is the caller graph for this function:

◆ OnEvent()

bool GUIButton::OnEvent ( const SEvent &  event)
overridevirtual

called if an event happened.

References ClickControlState, ClickShiftState, FocusTime, porting::getTimeMs(), HoverTime, IsPushButton, Pressed, and setPressed().

+ Here is the call graph for this function:

◆ serializeAttributes()

void GUIButton::serializeAttributes ( io::IAttributes *  out,
io::SAttributeReadWriteOptions *  options = 0 
) const
overridevirtual

◆ setColor()

void GUIButton::setColor ( video::SColor  color)

References BgColor, and Colors.

Referenced by setFromStyle().

+ Here is the caller graph for this function:

◆ setDrawBorder()

void GUIButton::setDrawBorder ( bool  border = true)
overridevirtual

Sets if the button should use the skin to draw its border.

References DrawBorder.

Referenced by deserializeAttributes(), and setFromStyle().

+ Here is the caller graph for this function:

◆ setFromState()

void GUIButton::setFromState ( )

Set element properties from a StyleSpec corresponding to the button state.

References StyleSpec::getStyleFromStatePropagation(), isHovered(), isPressed(), setFromStyle(), StyleSpec::STATE_DEFAULT, StyleSpec::STATE_HOVERED, StyleSpec::STATE_PRESSED, and Styles.

Referenced by draw(), setPressed(), and setStyles().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setFromStyle()

void GUIButton::setFromStyle ( const StyleSpec style)
virtual

◆ setImage() [1/3]

virtual void GUIButton::setImage ( gui::EGUI_BUTTON_IMAGE_STATE  state,
video::ITexture *  image = nullptr,
const core::rect< s32 > &  sourceRect = core::rect< s32 >(0, 0, 0, 0) 
)
virtual

Sets an image which should be displayed on the button when it is in the given state.

Referenced by deserializeAttributes(), setFromStyle(), setImage(), and setPressedImage().

+ Here is the caller graph for this function:

◆ setImage() [2/3]

void GUIButton::setImage ( video::ITexture *  image,
const core::rect< s32 > &  pos 
)
overridevirtual

Sets an image which should be displayed on the button when it is in normal state.

References setImage().

+ Here is the call graph for this function:

◆ setImage() [3/3]

void GUIButton::setImage ( video::ITexture *  image = nullptr)
overridevirtual

Sets an image which should be displayed on the button when it is in normal state.

References setImage().

+ Here is the call graph for this function:

◆ setIsPushButton()

void GUIButton::setIsPushButton ( bool  isPushButton = true)
overridevirtual

Sets if the button should behave like a push button.

Which means it can be in two states: Normal or Pressed. With a click on the button, the user can change the state of the button.

References isPushButton(), and IsPushButton.

+ Here is the call graph for this function:

◆ setOverrideColor()

void GUIButton::setOverrideColor ( video::SColor  color)
virtual

Sets another color for the button text.

Sets another color for the text.

References OverrideColor, OverrideColorEnabled, and StaticText.

Referenced by setFromStyle().

+ Here is the caller graph for this function:

◆ setOverrideFont()

void GUIButton::setOverrideFont ( gui::IGUIFont *  font = 0)
overridevirtual

sets another skin independent font. if this is set to zero, the button uses the font of the skin.

References OverrideFont, and StaticText.

Referenced by setFromStyle().

+ Here is the caller graph for this function:

◆ setPressed()

void GUIButton::setPressed ( bool  pressed = true)
overridevirtual

Sets the pressed state of the button if this is a pushbutton.

References ClickTime, porting::getTimeMs(), Pressed, and setFromState().

Referenced by OnEvent().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setPressedImage() [1/2]

void GUIButton::setPressedImage ( video::ITexture *  image,
const core::rect< s32 > &  pos 
)
overridevirtual

Sets an image which should be displayed on the button when it is in pressed state.

References setImage().

+ Here is the call graph for this function:

◆ setPressedImage() [2/2]

void GUIButton::setPressedImage ( video::ITexture *  image = nullptr)
overridevirtual

Sets an image which should be displayed on the button when it is in pressed state.

References setImage().

Referenced by deserializeAttributes().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setScaleImage()

void GUIButton::setScaleImage ( bool  scaleImage = true)
overridevirtual

Sets if the button should scale the button images to fit.

Sets if the images should be scaled to fit the button.

Reimplemented in GUIButtonImage.

References ScaleImage.

Referenced by deserializeAttributes(), setFromStyle(), and GUIButtonImage::setScaleImage().

+ Here is the caller graph for this function:

◆ setSprite()

void GUIButton::setSprite ( gui::EGUI_BUTTON_STATE  state,
s32  index,
video::SColor  color = video::SColor(255,255,255,255),
bool  loop = false,
bool  scale = false 
)
virtual

Sets the animated sprite for a specific button state.

Parameters
indexNumber of the sprite within the sprite bank, use -1 for no sprite
stateState of the button to set the sprite for
indexThe sprite number from the current sprite bank
colorThe color of the sprite

References ButtonSprites.

◆ setSpriteBank()

void GUIButton::setSpriteBank ( gui::IGUISpriteBank *  bank = 0)
overridevirtual

Sets the sprite bank used by the button.

References SpriteBank.

◆ setStyles()

void GUIButton::setStyles ( const std::array< StyleSpec, StyleSpec::NUM_STATES > &  styles)

Set the styles used for each state.

References setFromState(), and Styles.

Referenced by GUIFormSpecMenu::parseButton(), GUIFormSpecMenu::parseImageButton(), and GUIFormSpecMenu::parseItemImageButton().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setText()

void GUIButton::setText ( const wchar_t *  text)
overridevirtual

Sets the text displayed by the button.

References StaticText.

Referenced by addButton(), GUIButtonImage::addButton(), and GUIButtonItemImage::addButton().

+ Here is the caller graph for this function:

◆ setUseAlphaChannel()

void GUIButton::setUseAlphaChannel ( bool  useAlphaChannel = true)
overridevirtual

Sets if the alpha channel should be used for drawing images on the button (default is false)

References UseAlphaChannel.

Referenced by deserializeAttributes(), and setFromStyle().

+ Here is the caller graph for this function:

Member Data Documentation

◆ BgColor

video::SColor GUIButton::BgColor
private

Referenced by draw(), setColor(), and setFromStyle().

◆ BgMiddle

core::rect<s32> GUIButton::BgMiddle
private

Referenced by draw(), and setFromStyle().

◆ ButtonImages

ButtonImage GUIButton::ButtonImages[gui::EGBIS_COUNT]
private

◆ ButtonSprites

ButtonSprite GUIButton::ButtonSprites[gui::EGBS_COUNT]
private

◆ ClickControlState

bool GUIButton::ClickControlState
private

Referenced by OnEvent().

◆ ClickShiftState

bool GUIButton::ClickShiftState
private

Referenced by OnEvent().

◆ ClickTime

u32 GUIButton::ClickTime
private

Referenced by draw(), and setPressed().

◆ Colors

video::SColor GUIButton::Colors[4]
private

◆ ContentOffset

core::vector2d<s32> GUIButton::ContentOffset
private

Referenced by setFromStyle().

◆ DrawBorder

bool GUIButton::DrawBorder
private

◆ FocusTime

u32 GUIButton::FocusTime
private

Referenced by draw(), and OnEvent().

◆ HoverTime

u32 GUIButton::HoverTime
private

Referenced by draw(), and OnEvent().

◆ IsPushButton

bool GUIButton::IsPushButton
private

◆ OverrideColor

video::SColor GUIButton::OverrideColor
private

◆ OverrideColorEnabled

bool GUIButton::OverrideColorEnabled
private

◆ OverrideFont

gui::IGUIFont* GUIButton::OverrideFont
private

◆ Padding

core::rect<s32> GUIButton::Padding
private

Referenced by setFromStyle().

◆ Pressed

bool GUIButton::Pressed
private

◆ ScaleImage

bool GUIButton::ScaleImage
private

◆ SpriteBank

gui::IGUISpriteBank* GUIButton::SpriteBank
private

◆ StaticText

gui::IGUIStaticText* GUIButton::StaticText
private

◆ Styles

std::array<StyleSpec, StyleSpec::NUM_STATES> GUIButton::Styles
private

◆ TSrc

ISimpleTextureSource* GUIButton::TSrc
private

◆ UseAlphaChannel

bool GUIButton::UseAlphaChannel
private

◆ WasHovered

bool GUIButton::WasHovered = false
private

Referenced by draw().


The documentation for this class was generated from the following files: