//! adds an button. The returned pointer must not be dropped. IGUIButton* CGUIEnvironment::addButton(const core::rect<s32>& rectangle, IGUIElement* parent, s32 id, const wchar_t* text) { IGUIButton* button = new CGUIButton(this, parent ? parent : this, id, rectangle); if (text) button->setText(text); button->drop(); return button; }
//! Adds a button to the tool bar IGUIButton* CGUIToolBar::addButton(SINT32 id, const wchar_t* text, const wchar_t* tooltiptext, ITexture* img, ITexture* pressed, bool isPushButton, bool useAlphaChannel) { ButtonX += 3; rect<SINT32> rectangle(ButtonX, 2, ButtonX + 1, 3); if (img) { const dimension2du &size = img->getOriginalSize(); rectangle.LowerRightCorner.x = rectangle.UpperLeftCorner.x + size.Width + 8; rectangle.LowerRightCorner.y = rectangle.UpperLeftCorner.y + size.Height + 6; } if (text) { IGUISkin* skin = Environment->getSkin(); IGUIFont * font = skin->getFont(EGDF_BUTTON); if (font) { dimension2d<UINT32> dim = font->getDimension(text); if ((SINT32)dim.Width > rectangle.getWidth()) rectangle.LowerRightCorner.x = rectangle.UpperLeftCorner.x + dim.Width + 8; if ((SINT32)dim.Height > rectangle.getHeight()) rectangle.LowerRightCorner.y = rectangle.UpperLeftCorner.y + dim.Height + 6; } } ButtonX += rectangle.getWidth(); IGUIButton* button = new CGUIButton(Environment, this, id, rectangle); button->drop(); if (text) button->setText(text); if (tooltiptext) button->setToolTipText(tooltiptext); if (img) button->setImage(img); if (pressed) button->setPressedImage(pressed); if (isPushButton) button->setIsPushButton(isPushButton); if (useAlphaChannel) button->setUseAlphaChannel(useAlphaChannel); return button; }