diff options
| author | JustSomePwner <crotchyalt@gmail.com> | 2018-08-30 14:01:54 +0200 |
|---|---|---|
| committer | JustSomePwner <crotchyalt@gmail.com> | 2018-08-30 14:01:54 +0200 |
| commit | 7ccb819f867493f8ec202ea3b39c94c198c64584 (patch) | |
| tree | 94622e61af0ff359e3d6689cf274d74f60b2492a /loader/ui_progressbar.h | |
| parent | 564d979b79e8a5aaa5014eba0ecd36c61575934f (diff) | |
first
Diffstat (limited to 'loader/ui_progressbar.h')
| -rw-r--r-- | loader/ui_progressbar.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/loader/ui_progressbar.h b/loader/ui_progressbar.h new file mode 100644 index 0000000..33bcf65 --- /dev/null +++ b/loader/ui_progressbar.h @@ -0,0 +1,44 @@ +#pragma once
+#include "ui_base_item.h"
+
+namespace ui
+{
+ class c_progress_bar : public base_item {
+ public:
+ c_progress_bar( int x, int y, int w, float* progress ) :
+ base_item( x, y, w, 4, xors( "PROGRESS_BAR" ) ),
+ m_progress( progress ) { }
+
+
+ virtual void render( ) override {
+ static const clr_t col_start = clr_t( 231, 105, 105, 255 );
+ static const clr_t col_end = clr_t( 0xf4, 0x7c, 0xa8, 255 );
+
+ int x = get_relative_x( );
+ int y = get_relative_y( );
+
+ ui_draw_rect( x, y, m_width, m_height, ui_get_disabled_col( ) );
+
+ if( *m_progress > 0.001f ) {
+ int fill = *m_progress * m_width;
+
+ bool reverse = false;
+ for( int i{ }; i < fill; ++i ) {
+ float progress = std::fmod( float( i ) / fill - ( anim_time ), 1.f );
+ if( progress == 1.0f ) reverse = true;
+ if( reverse ) {
+ progress = 1.0f - progress;
+ }
+
+ clr_t col = clr_t::blend( col_start, col_end, progress );
+
+
+ ui_draw_rect( x + i, y, 1, m_height, col );
+ }
+ }
+ }
+
+ private:
+ float* m_progress;
+ };
+}
\ No newline at end of file |
