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); } }
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)); }
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)); } }