2009-10-01 01:10:58 +02:00
|
|
|
/****************************************************************************
|
|
|
|
* libwiigui
|
|
|
|
*
|
|
|
|
* Tantric 2009
|
|
|
|
*
|
|
|
|
* gui_tooltip.cpp
|
|
|
|
*
|
|
|
|
* GUI class definitions
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
#include "gui.h"
|
|
|
|
|
2010-09-26 10:33:43 +02:00
|
|
|
static GuiImageData tooltipLeft(tooltip_left_png, tooltip_left_png_size);
|
|
|
|
static GuiImageData tooltipTile(tooltip_tile_png, tooltip_left_png_size);
|
|
|
|
static GuiImageData tooltipRight(tooltip_right_png, tooltip_right_png_size);
|
2009-10-01 01:10:58 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Constructor for the GuiTooltip class.
|
|
|
|
*/
|
2010-09-24 02:48:03 +02:00
|
|
|
GuiTooltip::GuiTooltip(const char *t, int Alpha/*=255*/) :
|
|
|
|
leftImage(&tooltipLeft), tileImage(&tooltipTile), rightImage(&tooltipRight)
|
2010-02-09 11:59:55 +01:00
|
|
|
{
|
2010-09-19 01:16:05 +02:00
|
|
|
text = NULL;
|
|
|
|
height = leftImage.GetHeight();
|
2010-09-24 02:48:03 +02:00
|
|
|
leftImage.SetParent(this);
|
|
|
|
tileImage.SetParent(this);
|
|
|
|
rightImage.SetParent(this);
|
|
|
|
leftImage.SetParentAngle(false);
|
|
|
|
tileImage.SetParentAngle(false);
|
|
|
|
rightImage.SetParentAngle(false);
|
|
|
|
SetText(t);
|
|
|
|
SetAlpha(Alpha);
|
2009-10-01 01:10:58 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Destructor for the GuiTooltip class.
|
|
|
|
*/
|
2010-02-09 11:59:55 +01:00
|
|
|
GuiTooltip::~GuiTooltip()
|
|
|
|
{
|
2010-09-24 02:48:03 +02:00
|
|
|
if (text) delete text;
|
2009-10-01 01:10:58 +02:00
|
|
|
}
|
|
|
|
|
2010-02-09 11:59:55 +01:00
|
|
|
float GuiTooltip::GetScale()
|
|
|
|
{
|
2010-09-19 01:16:05 +02:00
|
|
|
float s = scale * scaleDyn;
|
2009-10-01 01:10:58 +02:00
|
|
|
|
2010-09-19 01:16:05 +02:00
|
|
|
return s;
|
2009-10-01 01:10:58 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/* !Sets the text of the GuiTooltip element
|
|
|
|
* !\param t Text
|
|
|
|
*/
|
2010-09-24 02:48:03 +02:00
|
|
|
void GuiTooltip::SetText(const char * t)
|
2010-02-09 11:59:55 +01:00
|
|
|
{
|
2010-09-19 01:16:05 +02:00
|
|
|
LOCK( this );
|
2010-09-24 02:48:03 +02:00
|
|
|
if (text)
|
2010-09-19 01:16:05 +02:00
|
|
|
{
|
|
|
|
delete text;
|
|
|
|
text = NULL;
|
|
|
|
}
|
|
|
|
int tile_cnt = 0;
|
2010-09-24 02:48:03 +02:00
|
|
|
if (t && (text = new GuiText(t, 22, ( GXColor )
|
|
|
|
{ 0, 0, 0, 255})))
|
2010-09-19 01:16:05 +02:00
|
|
|
{
|
2010-09-24 02:48:03 +02:00
|
|
|
text->SetParent(this);
|
|
|
|
tile_cnt = (text->GetTextWidth() - 12) / tileImage.GetWidth();
|
|
|
|
if (tile_cnt < 0) tile_cnt = 0;
|
2010-09-19 01:16:05 +02:00
|
|
|
}
|
2010-09-24 02:48:03 +02:00
|
|
|
tileImage.SetPosition(leftImage.GetWidth(), 0);
|
|
|
|
tileImage.SetTile(tile_cnt);
|
|
|
|
rightImage.SetPosition(leftImage.GetWidth() + tile_cnt * tileImage.GetWidth(), 0);
|
2010-09-19 01:16:05 +02:00
|
|
|
width = leftImage.GetWidth() + tile_cnt * tileImage.GetWidth() + rightImage.GetWidth();
|
2009-10-01 01:10:58 +02:00
|
|
|
}
|
|
|
|
|
2010-09-24 02:48:03 +02:00
|
|
|
void GuiTooltip::SetWidescreen(bool )
|
|
|
|
{
|
|
|
|
}
|
2009-10-01 01:10:58 +02:00
|
|
|
/*
|
|
|
|
* Draw the Tooltip on screen
|
|
|
|
*/
|
2010-02-09 11:59:55 +01:00
|
|
|
void GuiTooltip::Draw()
|
|
|
|
{
|
2010-09-19 01:16:05 +02:00
|
|
|
LOCK( this );
|
2010-09-24 02:48:03 +02:00
|
|
|
if (!this->IsVisible()) return;
|
2009-10-01 01:10:58 +02:00
|
|
|
|
2010-09-19 01:16:05 +02:00
|
|
|
leftImage.Draw();
|
|
|
|
tileImage.Draw();
|
|
|
|
rightImage.Draw();
|
2010-09-24 02:48:03 +02:00
|
|
|
if (text) text->Draw();
|
2009-10-01 01:10:58 +02:00
|
|
|
|
2010-09-19 01:16:05 +02:00
|
|
|
this->UpdateEffects();
|
2009-10-01 01:10:58 +02:00
|
|
|
}
|