コード例 #1
0
ファイル: IconButton.cpp プロジェクト: dreamsxin/egoboo
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);
    }
}
コード例 #2
0
ファイル: IconButton.cpp プロジェクト: italoalesil/egoboo
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);
    }
}