usbloadergx/source/libwiigui/gui_tooltip.cpp
dimok321 8943592d0e *Fixed several theme images being not loaded. Made all recourses from SVN now themable (sounds/fonts/images). They only have to be in the same folder as the theme images.
*Ignore sector size of wbfs partitions in MBR (some lazy Partition Manager don't change it). Reading it from the partition header now.
*Several small bug fixes and cleanups
*Fixed "Bannersound + BG Music after it" mode
*Updated language files
2011-01-08 12:35:41 +00:00

101 lines
2.3 KiB
C++

/****************************************************************************
* libwiigui
*
* Tantric 2009
*
* gui_tooltip.cpp
*
* GUI class definitions
***************************************************************************/
#include "gui.h"
#include "themes/CTheme.h"
/**
* Constructor for the GuiTooltip class.
*/
GuiTooltip::GuiTooltip(const char *t, int Alpha/*=255*/)
{
tooltipLeft = Resources::GetImageData("tooltip_left.png");
tooltipTile = Resources::GetImageData("tooltip_tile.png");
tooltipRight = Resources::GetImageData("tooltip_right.png");
leftImage = new GuiImage(tooltipLeft);
tileImage = new GuiImage(tooltipTile);
rightImage = new GuiImage(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;
delete tooltipLeft;
delete tooltipTile;
delete tooltipRight;
delete leftImage;
delete tileImage;
delete rightImage;
}
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();
}