ToolTip.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. GWEN
  3. Copyright (c) 2010 Facepunch Studios
  4. See license in Gwen.h
  5. */
  6. #include "Gwen/ToolTip.h"
  7. #include "Gwen/Utility.h"
  8. using namespace Gwen;
  9. using namespace Gwen::Controls;
  10. namespace ToolTip
  11. {
  12. Base* g_ToolTip = NULL;
  13. void Enable( Controls::Base* pControl )
  14. {
  15. if ( !pControl->GetToolTip() )
  16. return;
  17. g_ToolTip = pControl;
  18. }
  19. void Disable( Controls::Base* pControl )
  20. {
  21. if ( g_ToolTip == pControl )
  22. {
  23. g_ToolTip = NULL;
  24. }
  25. }
  26. void RenderToolTip( Skin::Base* skin )
  27. {
  28. if ( !g_ToolTip ) return;
  29. Gwen::Renderer::Base* render = skin->GetRender();
  30. Gwen::Point pOldRenderOffset = render->GetRenderOffset();
  31. Gwen::Point MousePos = Input::GetMousePosition();
  32. Gwen::Rect Bounds = g_ToolTip->GetToolTip()->GetBounds();
  33. Gwen::Rect rOffset = Gwen::Rect( MousePos.x - Bounds.w * 0.5f, MousePos.y - Bounds.h - 10, Bounds.w, Bounds.h );
  34. rOffset = Utility::ClampRectToRect( rOffset, g_ToolTip->GetCanvas()->GetBounds() );
  35. //Calculate offset on screen bounds
  36. render->AddRenderOffset( rOffset );
  37. render->EndClip();
  38. skin->DrawToolTip( g_ToolTip->GetToolTip() );
  39. g_ToolTip->GetToolTip()->DoRender( skin );
  40. render->SetRenderOffset( pOldRenderOffset );
  41. }
  42. void ControlDeleted( Controls::Base* pControl )
  43. {
  44. Disable( pControl );
  45. }
  46. }