1 /*
2 * label_field.h
3 * DIN Is Noise is copyright (c) 2006-2021 Jagannathan Sampath
4 * DIN Is Noise is released under GNU Public License 2.0
5 * For more information, please visit https://dinisnoise.org/
6 */
7 
8 
9 #ifndef __label_field
10 #define __label_field
11 
12 #include "label.h"
13 #include "field.h"
14 #include <string>
15 
16 struct label_field : widget {
17 
18   label lbl;
19   field fld;
20 
21 	label_field (int x = 0, int y = 0) {
22     lbl.add_child (this);
23 		lbl.add_child (&fld);
24 	}
25 
updatelabel_field26 	void update () {
27 		set_pos (posx, posy);
28 		lbl.update ();
29 		fld.update ();
30 	}
31 
set_poslabel_field32 	void set_pos (int x, int y) {
33 		widget::set_pos (x, y);
34 		lbl.set_pos (x, y);
35 		advance_right (x, lbl);
36 		fld.set_pos (x, y);
37 		set_extents (lbl.extents.left, lbl.extents.bottom, fld.extents.right, fld.extents.top);
38 	}
39 
handle_inputlabel_field40 	int handle_input () {
41 		int t = lbl.handle_input ();
42 		t |= fld.handle_input ();
43 		return t;
44 	}
45 
drawlabel_field46 	void draw () {
47 		lbl.draw ();
48 		fld.draw ();
49 	}
50 
set_colorlabel_field51 	void set_color (float r, float g, float b) {
52 		lbl.set_color (r, g, b);
53 		fld.set_color (r, g, b);
54 	}
55 
set_colorlabel_field56 	void set_color (unsigned char r, unsigned char g, unsigned char b) {
57 		lbl.set_color (r, g, b);
58 		fld.set_color (r, g, b);
59 	}
60 
get_colorlabel_field61 	const color& get_color () const {return lbl.clr;}
62 
set_labellabel_field63   void set_label (const std::string& l) {
64     lbl.set_text (l);
65 		set_pos (posx, posy);
66     set_name (l);
67   }
68 
set_textlabel_field69   void set_text (const std::string& f) {
70     fld.set_text (f);
71 		set_extents (lbl.extents.left, lbl.extents.bottom, fld.extents.right, fld.extents.top);
72   }
73 
set_listenerlabel_field74   void set_listener (change_listener<field>* l) {
75     fld.change_lsnr = l;
76   }
77 
78 	void set_moveable (int m, int mc = 0, int* pmb = &lmb) {
79 		lbl.set_moveable (m, mc, pmb);
80 	}
81 
82 };
83 
84 #endif
85