1 /*
2 * ui_sin_cos_radius.h
3 * DIN Is Noise is copyright (c) 2006-2021 Jagannathan Sampath
4 * For more information, please visit http://dinisnoise.org/
5 */
6 
7 #ifndef __UI_SIN_COS_RADIUS
8 #define __UI_SIN_COS_RADIUS
9 
10 #include "options_list.h"
11 #include "button.h"
12 #include "sine.h"
13 #include "cosine.h"
14 #include "constant_radius.h"
15 #include "custom_periodic.h"
16 #include "curve_editor.h"
17 
18 struct ui_sin_cos_radius_listener {
sin_cos_radius_optionedui_sin_cos_radius_listener19   virtual void sin_cos_radius_optioned () {}
sin_cos_radius_editedui_sin_cos_radius_listener20   virtual void sin_cos_radius_edited () {}
21 };
22 
23 struct ui_sin_cos_radius : widget, option_listener, click_listener, curve_listener {
24 
25   // functions sin, cos and radius
26   funktion *pf_sin, *pf_cos, *pf_radius;
27 
28   // standard functions for sin, cos and radius
29   sine st_sin;
30   cosine st_cos;
31   constant_radius st_radius;
32 
33   // custom functions for sin cos and radius
34   custom_periodic cp_sin, cp_cos, cp_rad;
35 
36   curve_editor sin_ed, cos_ed, rad_ed; // sin cos and radius editor
37 
38   options_list ol_sin, ol_cos, ol_radius;
39   button b_sin, b_cos, b_radius;
40 
41   std::string fname;
42 
43   ui_sin_cos_radius (
44       ui_sin_cos_radius_listener* _lis,
45       const std::string& scr_fname,
46       const std::string& cp_sin_fname,
47       const std::string& cp_cos_fname,
48       const std::string& cp_rad_fname,
49       const std::string& sin_ed_fname,
50       const std::string& cos_ed_fname,
51       const std::string& rad_ed_fname,
52       int _inc_radius = 1);
53   ~ui_sin_cos_radius ();
54 
55   void load ();
56   void save ();
57   void setup ();
58   int handle_input ();
59   void draw ();
60   void set_pos (int x, int y);
61 
62   ui_sin_cos_radius_listener* lis;
63   void picked (label& l, int dir);
64   void clicked (button& b);
65 
66   int sin, cos, radius;
67   int inc_radius;
68 
69   void edit_sin ();
70   void edit_cos ();
71   void edit_radius ();
72   void edited (curve_editor* e, int i);
73 
74   void set_option (label& lbl, const std::string& text, funktion** pf, funktion* pfv, button& bt, int vis);
75 
76 };
77 
78 #endif
79 
80 
81 
82