gameui

diff include/widget.h @ 3:f1014234dece

transitions in gui elements are awesome :)
author John Tsiombikas <nuclear@member.fsf.org>
date Fri, 21 Mar 2014 03:37:16 +0200
parents e5b1525084f7
children e0916bb20b7f
line diff
     1.1 --- a/include/widget.h	Thu Mar 20 07:03:58 2014 +0200
     1.2 +++ b/include/widget.h	Fri Mar 21 03:37:16 2014 +0200
     1.3 @@ -1,18 +1,12 @@
     1.4  #ifndef GAMEUI_WIDGET_H_
     1.5  #define GAMEUI_WIDGET_H_
     1.6  
     1.7 +#include "vec.h"
     1.8 +#include "event.h"
     1.9 +
    1.10  namespace gameui {
    1.11  
    1.12 -class Vec2 {
    1.13 -public:
    1.14 -	float x, y;
    1.15 -
    1.16 -	Vec2() : x(0), y(0) {}
    1.17 -	Vec2(float xx, float yy) : x(xx), y(yy) {}
    1.18 -};
    1.19 -
    1.20 -class BBox {
    1.21 -public:
    1.22 +struct BBox {
    1.23  	Vec2 bmin, bmax;
    1.24  };
    1.25  
    1.26 @@ -20,44 +14,65 @@
    1.27  
    1.28  class Widget {
    1.29  private:
    1.30 -	WidgetImpl *impl;
    1.31 +	WidgetImpl *widget;
    1.32 +
    1.33 +	void set_type_string(const char *type_str);
    1.34  
    1.35  public:
    1.36 -	enum VisState {
    1.37 -		VST_HIDDEN,
    1.38 -		VST_EASEIN,
    1.39 -		VST_VISIBLE,
    1.40 -		VST_EASEOUT
    1.41 -	};
    1.42 -	enum ActiveState {
    1.43 -		AST_INACTIVE,
    1.44 -		AST_EASEIN,
    1.45 -		AST_ACTIVE,
    1.46 -		AST_EASEOUT
    1.47 -	};
    1.48 -
    1.49  	Widget();
    1.50  	virtual ~Widget();
    1.51  
    1.52  	virtual void show();
    1.53  	virtual void hide();
    1.54  	virtual float get_visibility() const;
    1.55 +	virtual bool is_visible() const;
    1.56  
    1.57  	virtual void activate();
    1.58  	virtual void deactivate();
    1.59  	virtual float get_active() const;
    1.60 +	virtual bool is_active() const;
    1.61 +
    1.62 +	virtual void press();
    1.63 +	virtual void release();
    1.64 +	virtual float get_pressed() const;
    1.65 +	virtual bool is_pressed() const;
    1.66 +
    1.67 +	virtual void mousein();
    1.68 +	virtual void mouseout();
    1.69 +	virtual float get_under_mouse() const;
    1.70 +	virtual bool is_under_mouse() const;
    1.71 +
    1.72 +	virtual void set_position(float x, float y);
    1.73 +	virtual void set_position(const Vec2 &pos);
    1.74 +	virtual const Vec2 &get_position() const;
    1.75 +
    1.76 +	virtual void set_size(float x, float y);
    1.77 +	virtual void set_size(const Vec2 &size);
    1.78 +	virtual const Vec2 get_size() const;
    1.79  
    1.80  	virtual const BBox &get_box() const;
    1.81 -	virtual const Vec2 &get_position() const;
    1.82 -	virtual const Vec2 &get_size() const;
    1.83  
    1.84  	virtual bool hit_test(const Vec2 &pt) const;
    1.85  
    1.86 -	virtual void draw() const = 0;
    1.87 +	virtual void draw() const;
    1.88 +
    1.89 +	// low level events
    1.90 +	virtual void on_mouse_button(const ButtonEvent &ev);
    1.91 +	virtual void on_mouse_motion(const MotionEvent &ev);
    1.92 +	virtual void on_mouse_focus(const FocusEvent &ev);
    1.93 +	virtual void on_key(const KeyEvent &ev);
    1.94 +
    1.95 +	// high level events
    1.96 +	virtual void on_click();
    1.97 +	virtual void on_double_click();
    1.98 +	virtual void on_change();
    1.99 +	//virtual void on_drag_move(int bn, const Vec2 &pt);
   1.100 +	//virtual void on_drag_release(int bn, const Vec2 &pt);
   1.101 +
   1.102 +	// event dispatcher
   1.103 +	virtual void handle_event(const Event &ev);
   1.104  };
   1.105  
   1.106 -long get_cur_time();
   1.107 -
   1.108  }
   1.109  
   1.110  #endif	// GAMEUI_WIDGET_H_