/*============================================================================= -- Sets the caption of the text in the middle. =============================================================================*/ void ButtonCaption::SetCaption(String caption) { mCaption = caption; WeakPtr<Text> text = DynamicPtrCast<Text>(GetChild(IEI_BUTTONCAPTION_TEXT).lock()); if (!text.expired()) { text.lock()->SetText(caption); Font *font = text.lock()->GetFont(); unsigned width = (unsigned)font->GetTextLengthPx(mCaption.GetStd()); unsigned height = (unsigned)font->GetCharHeightPx(); //clip any characters that don't fit inside from the text element while (width > GetWidth()) { mCaption.Remove(mCaption.Size()-1,mCaption.Size()); SetCaption(mCaption); width = (unsigned)font->GetTextLengthPx(mCaption.GetStd()); } //properly center the text text.lock()->SetRelPos( Vector2D<int>((GetWidth()-width)/2, (GetHeight()-height)/2) ); } }