usbloadergx/source/libwiigui/gui_tooltip.cpp
2010-09-24 00:48:03 +00:00

93 lines
2.0 KiB
C++

/****************************************************************************
* 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, int Alpha/*=255*/) :
leftImage(&tooltipLeft), tileImage(&tooltipTile), rightImage(&tooltipRight)
{
text = NULL;
height = leftImage.GetHeight();
leftImage.SetParent(this);
tileImage.SetParent(this);
rightImage.SetParent(this);
leftImage.SetParentAngle(false);
tileImage.SetParentAngle(false);
rightImage.SetParentAngle(false);
SetText(t);
SetAlpha(Alpha);
}
/*
* Destructor for the GuiTooltip class.
*/
GuiTooltip::~GuiTooltip()
{
if (text) delete text;
}
float GuiTooltip::GetScale()
{
float s = scale * scaleDyn;
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();
}