usbloadergx/source/libwiigui/gui_tooltip.cpp

92 lines
2.1 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, 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();
}