CmGUILabel.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #include "CmGUILabel.h"
  2. #include "CmGUIElementStyle.h"
  3. #include "CmTextSprite.h"
  4. #include "CmGUISkin.h"
  5. namespace CamelotEngine
  6. {
  7. GUILabel::GUILabel(GUIWidget* parent, const String& text, const GUISkin* skin, UINT32 fixedWidth, UINT32 fixedHeight,
  8. bool wordWrap, TextHorzAlign horzAlign, TextVertAlign vertAlign)
  9. :GUIElement(parent, skin), mText(text), mFixedWidth(fixedWidth), mFixedHeight(fixedHeight), mWordWrap(wordWrap),
  10. mHorzAlign(horzAlign), mVertAlign(vertAlign)
  11. {
  12. mStyle = skin->getStyle(getGUITypeName());
  13. mTextSprite = CM_NEW(TextSprite, PoolAlloc) TextSprite();
  14. TEXT_SPRITE_DESC desc;
  15. desc.text = text;
  16. desc.font = mStyle->font;
  17. desc.fontSize = mStyle->fontSize;
  18. desc.width = fixedWidth;
  19. desc.height = fixedHeight;
  20. desc.wordWrap = wordWrap;
  21. desc.clipRect = Rect(0, 0, fixedWidth, fixedHeight);
  22. desc.horzAlign = horzAlign;
  23. desc.vertAlign = vertAlign;
  24. mTextSprite->update(desc);
  25. mBounds = mTextSprite->getBounds();
  26. }
  27. GUILabel::~GUILabel()
  28. {
  29. CM_DELETE(mTextSprite, TextSprite, PoolAlloc);
  30. }
  31. UINT32 GUILabel::getNumRenderElements() const
  32. {
  33. return mTextSprite->getNumRenderElements();
  34. }
  35. const HMaterial& GUILabel::getMaterial(UINT32 renderElementIdx) const
  36. {
  37. return mTextSprite->getMaterial(renderElementIdx);
  38. }
  39. UINT32 GUILabel::getNumQuads(UINT32 renderElementIdx) const
  40. {
  41. return mTextSprite->getNumQuads(renderElementIdx);
  42. }
  43. void GUILabel::fillBuffer(Vector2* vertices, Vector2* uv, UINT32* indices, UINT32 startingQuad, UINT32 maxNumQuads, UINT32 renderElementIdx) const
  44. {
  45. mTextSprite->fillBuffer(vertices, uv, indices, startingQuad, maxNumQuads, renderElementIdx);
  46. }
  47. const String& GUILabel::getGUITypeName()
  48. {
  49. static String typeName = "Label";
  50. return typeName;
  51. }
  52. }