void GuiScrollbar::onDraw(sf::RenderTarget& window)
{
    drawStretched(window, rect, "gui/ScrollbarBackground");
    
    int range = (max_value - min_value);
    float move_height = (rect.height - rect.width * 2);
    float bar_size = move_height * value_size / range;
    if (bar_size > move_height)
        bar_size = move_height;
    drawStretched(window, sf::FloatRect(rect.left, rect.top + rect.width + move_height * value / range, rect.width, bar_size), "gui/ScrollbarSelection", sf::Color::White);
}
void GuiTextEntry::onDraw(sf::RenderTarget& window)
{
    if (focus)
        drawStretched(window, rect, "gui/TextEntryBackground.focused", selectColor(colorConfig.text_entry.background));
    else
        drawStretched(window, rect, "gui/TextEntryBackground", selectColor(colorConfig.text_entry.background));
    bool typing_indicator = focus;
    const float blink_rate = 0.530;
    if (blink_clock.getElapsedTime().asSeconds() < blink_rate)
        typing_indicator = false;
    if (blink_clock.getElapsedTime().asSeconds() > blink_rate * 2.0f)
        blink_clock.restart();
    drawText(window, sf::FloatRect(rect.left + 16, rect.top, rect.width, rect.height), text + (typing_indicator ? "_" : ""), ACenterLeft, text_size, main_font, selectColor(colorConfig.text_entry.forground));
}
void GuiButton::onDraw(sf::RenderTarget& window)
{
    sf::Color color = selectColor(colorConfig.button.background);
    sf::Color text_color = selectColor(colorConfig.button.forground);
    
    if (!enabled)
        drawStretched(window, rect, "gui/ButtonBackground.disabled", color);
    else if (active)
        drawStretched(window, rect, "gui/ButtonBackground.active", color);
    else if (hover)
        drawStretched(window, rect, "gui/ButtonBackground.hover", color);
    else
        drawStretched(window, rect, "gui/ButtonBackground", color);

    if (icon_name != "")
    {
        sf::FloatRect text_rect = rect;
        sf::Sprite icon;
        EGuiAlign text_align = ACenterLeft;
        textureManager.setTexture(icon, icon_name);
        float scale = rect.height / icon.getTextureRect().height * 0.8;
        icon.setScale(scale, scale);
        switch(icon_alignment)
        {
        case ACenterLeft:
        case ATopLeft:
        case ABottomLeft:
            icon.setPosition(rect.left + rect.height / 2, rect.top + rect.height / 2);
            text_rect.left = rect.left + rect.height;
            break;
        default:
            icon.setPosition(rect.left + rect.width - rect.height / 2, rect.top + rect.height / 2);
            text_rect.width = rect.width - rect.height;
            text_align = ACenterRight;
        }
        icon.setColor(text_color);
        window.draw(icon);
        drawText(window, text_rect, text, text_align, text_size, main_font, text_color);
    }else{
        drawText(window, rect, text, ACenter, text_size, main_font, text_color);
    }
}
示例#4
0
void GuiTextEntry::onDraw(sf::RenderTarget& window)
{
    drawStretched(window, rect, "gui/TextEntryBackground", selectColor(colorConfig.text_entry.background));
    drawText(window, sf::FloatRect(rect.left + 16, rect.top, rect.width, rect.height), text + (focus ? "_" : ""), ACenterLeft, text_size, main_font, selectColor(colorConfig.text_entry.forground));
}
示例#5
0
void GuiSlider::onDraw(sf::RenderTarget& window)
{
    drawStretched(window, rect, "gui/SliderBackground", selectColor(colorConfig.slider.background));

    sf::Color color = selectColor(colorConfig.slider.forground);

    if (rect.width > rect.height)
    {
        float x;

        for(TSnapPoint& point : snap_points)
        {
            x = rect.left + (rect.width - rect.height) * (point.value - min_value) / (max_value - min_value);

            sf::Sprite snap_sprite;
            textureManager.setTexture(snap_sprite, "gui/SliderTick");
            snap_sprite.setRotation(90);
            snap_sprite.setPosition(x + rect.height / 2, rect.top + rect.height / 2);
            snap_sprite.setScale(rect.height / snap_sprite.getTextureRect().width, rect.height / snap_sprite.getTextureRect().width);
            snap_sprite.setColor(selectColor(colorConfig.slider.background));
            window.draw(snap_sprite);
        }
        x = rect.left + (rect.width - rect.height) * (value - min_value) / (max_value - min_value);

        sf::Sprite sprite;
        textureManager.setTexture(sprite, "gui/SliderKnob");
        sprite.setOrigin(0, 0);
        sprite.setPosition(x, rect.top);
        sprite.setScale(rect.height / sprite.getTextureRect().width, rect.height / sprite.getTextureRect().width);
        sprite.setColor(color);
        window.draw(sprite);
    }else{
        float y;
        for(TSnapPoint& point : snap_points)
        {
            y = rect.top + (rect.height - rect.width) * (point.value - min_value) / (max_value - min_value);

            sf::Sprite snap_sprite;
            textureManager.setTexture(snap_sprite, "gui/SliderTick");
            snap_sprite.setOrigin(0, 0);
            snap_sprite.setPosition(rect.left, y);
            snap_sprite.setScale(rect.width / snap_sprite.getTextureRect().width, rect.width / snap_sprite.getTextureRect().width);
            snap_sprite.setColor(selectColor(colorConfig.slider.background));
            window.draw(snap_sprite);
        }
        y = rect.top + (rect.height - rect.width) * (value - min_value) / (max_value - min_value);

        sf::Sprite sprite;
        textureManager.setTexture(sprite, "gui/SliderKnob");
        sprite.setOrigin(0, 0);
        sprite.setPosition(rect.left, y);
        sprite.setScale(rect.width / sprite.getTextureRect().width, rect.width / sprite.getTextureRect().width);
        sprite.setColor(color);
        window.draw(sprite);
    }
    
    if (overlay_label)
    {
        overlay_label->setText(string(value, 0));
    }
}