usbloadergx/source/libwiigui/gui_tooltip.cpp

91 lines
1.9 KiB
C++
Raw Normal View History

/****************************************************************************
* libwiigui
*
* Tantric 2009
*
* gui_tooltip.cpp
*
* GUI class definitions
***************************************************************************/
#include "gui.h"
static GuiImageData tooltipLeft(tooltip_left_png);
static GuiImageData tooltipTile(tooltip_tile_png);
static GuiImageData tooltipRight(tooltip_right_png);
/**
* Constructor for the GuiTooltip class.
*/
GuiTooltip::GuiTooltip(const char *t)
:
leftImage(&tooltipLeft), tileImage(&tooltipTile), rightImage(&tooltipRight)
{
text = NULL;
height = leftImage.GetHeight();
leftImage.SetParent(this);
tileImage.SetParent(this);
rightImage.SetParent(this);
SetText(t);
}
/*
* Destructor for the GuiTooltip class.
*/
GuiTooltip::~GuiTooltip()
{
if(text) delete text;
}
float GuiTooltip::GetScale()
{
float s = scale * scaleDyn;
// if(parentElement)
// s *= parentElement->GetScale();
return s;
}
/* !Sets the text of the GuiTooltip element
* !\param t Text
*/
void GuiTooltip::SetText(const char * t)
{
LOCK(this);
if(text)
{
delete text;
text = NULL;
}
int tile_cnt = 0;
if(t && (text = new GuiText(t, 22, (GXColor){0, 0, 0, 255})))
{
text->SetParent(this);
tile_cnt = (text->GetTextWidth()-12) /tileImage.GetWidth();
if(tile_cnt < 0) tile_cnt = 0;
}
tileImage.SetPosition(leftImage.GetWidth(), 0);
tileImage.SetTile(tile_cnt);
rightImage.SetPosition(leftImage.GetWidth() + tile_cnt * tileImage.GetWidth(), 0);
width = leftImage.GetWidth() + tile_cnt * tileImage.GetWidth() + rightImage.GetWidth();
}
void GuiTooltip::SetWidescreen(bool){}
/*
* Draw the Tooltip on screen
*/
void GuiTooltip::Draw()
{
LOCK(this);
if(!this->IsVisible()) return;
leftImage.Draw();
tileImage.Draw();
rightImage.Draw();
if(text) text->Draw();
this->UpdateEffects();
}