Align.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /*
  2. GWEN
  3. Copyright (c) 2010 Facepunch Studios
  4. See license in Gwen.h
  5. */
  6. #pragma once
  7. #ifndef GWEN_ALIGN_H
  8. #define GWEN_ALIGN_H
  9. #include "Gwen/Controls/Base.h"
  10. namespace Gwen
  11. {
  12. namespace Align
  13. {
  14. inline void Center( Controls::Base* ctrl )
  15. {
  16. Controls::Base* parent = ctrl->GetParent();
  17. if ( !parent ) return;
  18. ctrl->SetPos( parent->GetPadding().left + (((parent->Width()-parent->GetPadding().left-parent->GetPadding().right) - ctrl->Width()) / 2),
  19. (parent->Height() - ctrl->Height()) / 2 );
  20. }
  21. inline void AlignLeft( Controls::Base* ctrl )
  22. {
  23. Controls::Base* parent = ctrl->GetParent();
  24. if ( !parent ) return;
  25. ctrl->SetPos( parent->GetPadding().left, ctrl->Y() );
  26. }
  27. inline void CenterHorizontally( Controls::Base* ctrl )
  28. {
  29. Controls::Base* parent = ctrl->GetParent();
  30. if ( !parent ) return;
  31. ctrl->SetPos( parent->GetPadding().left + (((parent->Width()-parent->GetPadding().left-parent->GetPadding().right) - ctrl->Width()) / 2), ctrl->Y() );
  32. }
  33. inline void AlignRight( Controls::Base* ctrl )
  34. {
  35. Controls::Base* parent = ctrl->GetParent();
  36. if ( !parent ) return;
  37. ctrl->SetPos( parent->Width() - ctrl->Width() - parent->GetPadding().right, ctrl->Y() );
  38. }
  39. inline void AlignTop( Controls::Base* ctrl )
  40. {
  41. ctrl->SetPos( ctrl->X(), 0 );
  42. }
  43. inline void CenterVertically( Controls::Base* ctrl )
  44. {
  45. Controls::Base* parent = ctrl->GetParent();
  46. if ( !parent ) return;
  47. ctrl->SetPos( ctrl->X(), (parent->Height() - ctrl->Height()) / 2 );
  48. }
  49. inline void AlignBottom( Controls::Base* ctrl )
  50. {
  51. Controls::Base* parent = ctrl->GetParent();
  52. if ( !parent ) return;
  53. ctrl->SetPos( ctrl->X(), parent->Height() - ctrl->Height() );
  54. }
  55. inline void PlaceBelow( Controls::Base* ctrl, Controls::Base* below, int iBorder = 0 )
  56. {
  57. ctrl->SetPos( ctrl->X(), below->Bottom() + iBorder );
  58. }
  59. }
  60. }
  61. #endif