Slider.h 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /******************************************************************************/
  2. const_mem_addr STRUCT(Slider , GuiObj) // Gui Slider !! must be stored in constant memory address !!
  3. //{
  4. GuiSkinPtr skin; // skin override, default=null (if set to null then current value of 'Gui.skin' is used)
  5. // manage
  6. Slider& del ( ); // delete
  7. Slider& create( ); // create
  8. Slider& create(C Rect &rect ) {create() .rect(rect); return T;} // create and set initial values
  9. Slider& create(C Rect &rect, Flt value) {create().set(value).rect(rect); return T;} // create and set initial values
  10. Slider& create(C Slider &src ); // create from 'src'
  11. // get / set
  12. Flt operator()( )C {return _value;} // get value (0..1)
  13. Slider & set (Flt value, SET_MODE mode=SET_DEFAULT); // set value (0..1)
  14. GuiSkin* getSkin ( )C {return skin ? skin() : Gui.skin();} // get actual skin
  15. Slider& func(void (*func)(Ptr user), Ptr user=null, Bool immediate=true); // set function called when value has changed, with 'user' as its parameter
  16. T1(TYPE) Slider& func(void (*func)(TYPE *user), TYPE *user , Bool immediate=true) {return T.func((void(*)(Ptr))func, user, immediate);} // set function called when value has changed, with 'user' as its parameter
  17. T1(TYPE) Slider& func(void (*func)(TYPE &user), TYPE &user , Bool immediate=true) {return T.func((void(*)(Ptr))func, &user, immediate);} // set function called when value has changed, with 'user' as its parameter
  18. Slider& focusable(Bool on); Bool focusable()C {return _focusable;} // set/get if can catch keyboard focus, default=false
  19. // operations
  20. virtual Slider& rect(C Rect &rect); C Rect& rect()C {return super::rect();} // set/get rectangle
  21. // main
  22. virtual GuiObj* test (C GuiPC &gpc, C Vec2 &pos, GuiObj* &mouse_wheel); // test if 'pos' screen position intersects with the object, by returning pointer to object or its children upon intersection and null in case no intersection, 'mouse_wheel' may be modified upon intersection either to the object or its children or null
  23. virtual void update(C GuiPC &gpc); // update object
  24. virtual void draw (C GuiPC &gpc); // draw object
  25. #if EE_PRIVATE
  26. void zero();
  27. void call();
  28. #endif
  29. ~Slider() {del();}
  30. Slider();
  31. #if !EE_PRIVATE
  32. private:
  33. #endif
  34. Bool _vertical, _focusable, _func_immediate;
  35. Flt _value, _lit;
  36. Ptr _func_user;
  37. void (*_func)(Ptr user);
  38. protected:
  39. virtual Bool save(File &f, CChar *path=null)C;
  40. virtual Bool load(File &f, CChar *path=null) ;
  41. };
  42. /******************************************************************************/