void IconButton::draw(DrawingContext& drawingContext) { //Update slidy button effect updateSlidyButtonEffect(); // Draw the button std::shared_ptr<const Material> material = nullptr; // Determine button color if (!isEnabled()) { material = std::make_shared<const Material>(nullptr, DISABLED_BUTTON_COLOUR, true); } else if (_mouseOver) { material = std::make_shared<const Material>(nullptr, HOVER_BUTTON_COLOUR, true); } else { material = std::make_shared<const Material>(nullptr, DEFAULT_BUTTON_COLOUR, true); } material->apply(); _gameEngine->getUIManager()->drawQuad2d(getDerivedBounds()); // Draw icon int iconSize = getHeight() - 4; material = std::make_shared<const Material>(_icon.get_ptr(), _iconTint, true); _gameEngine->getUIManager()->drawImage(Point2f(getDerivedPosition().x() + getWidth() - getHeight() - 2, getDerivedPosition().y() + 2), Vector2f(iconSize, iconSize), material); // Draw text on left side in button if (_buttonTextRenderer) { _buttonTextRenderer->render(getDerivedPosition().x() + 5, getDerivedPosition().y() + (getHeight() - _buttonTextHeight) / 2); } }
void IconButton::draw() { //Update slidy button effect updateSlidyButtonEffect(); auto &renderer = Ego::Renderer::get(); // Draw the button renderer.getTextureUnit().setActivated(nullptr); //Determine button color if(!isEnabled()) { renderer.setColour( DISABLED_BUTTON_COLOUR ); } else if(_mouseOver) { renderer.setColour( HOVER_BUTTON_COLOUR ); } else { renderer.setColour( DEFAULT_BUTTON_COLOUR ); } struct Vertex { float x, y; }; auto vb = _gameEngine->getUIManager()->_vertexBuffer; Vertex *v = static_cast<Vertex *>(vb->lock()); v->x = getX(); v->y = getY(); v++; v->x = getX(); v->y = getY() + getHeight(); v++; v->x = getX() + getWidth(); v->y = getY() + getHeight(); v++; v->x = getX() + getWidth(); v->y = getY(); vb->unlock(); renderer.render(*vb, Ego::PrimitiveType::Quadriliterals, 0, 4); //Draw icon int iconSize = getHeight()-4; draw_icon_texture(_icon.get_ptr(), getX() + getWidth() - getHeight()-2, getY()+2, 0xFF, 0, iconSize); //Draw text on left side in button if(!_buttonText.empty()) { int textWidth, textHeight; _gameEngine->getUIManager()->getDefaultFont()->getTextSize(_buttonText, &textWidth, &textHeight); _gameEngine->getUIManager()->getDefaultFont()->drawText(_buttonText, getX() + 5, getY() + (getHeight()-textHeight)/2); } }