2009-10-01 01:10:58 +02:00
|
|
|
/****************************************************************************
|
|
|
|
* libwiigui
|
|
|
|
*
|
|
|
|
* Tantric 2009
|
|
|
|
*
|
|
|
|
* gui_tooltip.cpp
|
|
|
|
*
|
|
|
|
* GUI class definitions
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
#include "gui.h"
|
|
|
|
|
2010-09-19 01:16:05 +02:00
|
|
|
static GuiImageData tooltipLeft( tooltip_left_png );
|
|
|
|
static GuiImageData tooltipTile( tooltip_tile_png );
|
|
|
|
static GuiImageData tooltipRight( tooltip_right_png );
|
2009-10-01 01:10:58 +02:00
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Constructor for the GuiTooltip class.
|
|
|
|
*/
|
2010-09-19 01:16:05 +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();
|
|
|
|
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-19 01:16:05 +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-19 01:16:05 +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 );
|
|
|
|
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();
|
2009-10-01 01:10:58 +02:00
|
|
|
}
|
|
|
|
|
2010-09-19 01:16:05 +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 );
|
|
|
|
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();
|
|
|
|
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
|
|
|
}
|