Add ui::progress_bar

This commit is contained in:
Nikita Lisitsa 2022-03-07 21:47:27 +03:00
parent ad53fdd7a4
commit 390df41f30
4 changed files with 39 additions and 0 deletions

View file

@ -14,6 +14,7 @@
#include <psemek/ui/slider.hpp>
#include <psemek/ui/spinbox.hpp>
#include <psemek/ui/scroller.hpp>
#include <psemek/ui/progress_bar.hpp>
#include <psemek/gfx/texture.hpp>
@ -45,6 +46,7 @@ namespace psemek::ui
// 3 - right
virtual std::shared_ptr<button> make_arrow_button(int direction);
virtual std::shared_ptr<scroller> make_scroller();
virtual std::shared_ptr<progress_bar> make_progress_bar();
virtual ~element_factory() {}
};

View file

@ -0,0 +1,22 @@
#pragma once
#include <psemek/ui/element.hpp>
#include <psemek/ui/label.hpp>
namespace psemek::ui
{
struct progress_bar
: element
{
virtual float value() const { return value_; }
virtual void set_value(float value);
virtual struct label * label() { return nullptr; }
virtual struct label const * label() const { return nullptr; }
private:
float value_ = 0.f;
};
}

View file

@ -119,4 +119,6 @@ namespace psemek::ui
std::shared_ptr<scroller> element_factory::make_scroller() { return nullptr; }
std::shared_ptr<progress_bar> element_factory::make_progress_bar() { return nullptr; }
}

View file

@ -0,0 +1,13 @@
#include <psemek/ui/progress_bar.hpp>
#include <psemek/geom/interval.hpp>
namespace psemek::ui
{
void progress_bar::set_value(float value)
{
value_ = geom::clamp(value, {0.f, 1.f});
}
}