/**************************************************************************** * 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(); }