PolyScreenLabel.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*
  2. * PolyScreenLabel.cpp
  3. * TAU
  4. *
  5. * Created by Ivan Safrin on 3/16/08.
  6. * Copyright 2008 __MyCompanyName__. All rights reserved.
  7. *
  8. */
  9. #include "PolyScreenLabel.h"
  10. using namespace Polycode;
  11. ScreenLabel::ScreenLabel(String fontName, String text, int size, int amode) : ScreenShape(ScreenShape::SHAPE_RECT,1,1) {
  12. label = new Label(CoreServices::getInstance()->getFontManager()->getFontByName(fontName), text, size, amode);
  13. texture = NULL;
  14. setText(text);
  15. mesh->getPolygon(0)->flipUVY();
  16. positionMode = POSITION_TOPLEFT;
  17. dropShadowImage = NULL;
  18. colorAffectsChildren = false;
  19. }
  20. ScreenLabel::~ScreenLabel() {
  21. }
  22. Label *ScreenLabel::getLabel() {
  23. return label;
  24. }
  25. void ScreenLabel::addDropShadow(Color color, Number size, Number offsetX, Number offsetY) {
  26. Image *labelImage = new Image(label);
  27. labelImage->fastBlur(size);
  28. dropShadowImage = new ScreenImage(labelImage);
  29. addChild(dropShadowImage);
  30. dropShadowImage->setColor(color);
  31. dropShadowImage->setPositionMode(POSITION_TOPLEFT);
  32. dropShadowImage->setPosition(offsetX, offsetY);
  33. dropShadowImage->getMesh()->getPolygon(0)->flipUVY();
  34. }
  35. String ScreenLabel::getText() {
  36. return label->getText();
  37. }
  38. void ScreenLabel::setText(String newText) {
  39. label->setText(newText);
  40. if(texture) {
  41. CoreServices::getInstance()->getMaterialManager()->deleteTexture(texture);
  42. }
  43. texture = NULL;
  44. if(!label->getFont())
  45. return;
  46. if(!label->getFont()->isValid())
  47. return;
  48. texture = CoreServices::getInstance()->getMaterialManager()->createTextureFromImage(label);
  49. width = label->getWidth();
  50. height = label->getHeight();
  51. setShapeSize(width, height);
  52. }