use a default value on the colorpicker_string
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / colorpicker_string.c
1 #ifdef INTERFACE
2 CLASS(XonoticColorpickerString) EXTENDS(Image)
3         METHOD(XonoticColorpickerString, configureXonoticColorpickerString, void(entity, string, string))
4         METHOD(XonoticColorpickerString, mousePress, float(entity, vector))
5         METHOD(XonoticColorpickerString, mouseRelease, float(entity, vector))
6         METHOD(XonoticColorpickerString, mouseDrag, float(entity, vector))
7         ATTRIB(XonoticColorpickerString, cvarName, string, string_null)
8         ATTRIB(XonoticColorpickerString, prevcoords, vector, '0 0 0')
9         ATTRIB(XonoticColorpickerString, image, string, SKINGFX_COLORPICKER)
10         ATTRIB(XonoticColorpickerString, imagemargin, vector, SKINMARGIN_COLORPICKER)
11         ATTRIB(XonoticColorpickerString, focusable, float, 1)
12         METHOD(XonoticColorpickerString, draw, void(entity))
13         ATTRIB(XonoticColorpickerString, disabledAlpha, float, 0.3)
14 ENDCLASS(XonoticColorpickerString)
15 entity makeXonoticColorpickerString(string theCvar, string theDefaultCvar);
16 #endif
17
18 #ifdef IMPLEMENTATION
19 entity makeXonoticColorpickerString(string theCvar, string theDefaultCvar)
20 {
21         entity me;
22         me = spawnXonoticColorpickerString();
23         me.configureXonoticColorpickerString(me, theCvar, theDefaultCvar);
24         return me;
25 }
26
27 void XonoticColorpickerString_configureXonoticColorpickerString(entity me, string theCvar, string theDefaultCvar)
28 {
29         me.cvarName = theCvar;
30         me.configureImage(me, me.image);
31         if(cvar_string(theCvar) != "")
32                 me.prevcoords = color_hslimage(stov(cvar_string(theCvar)), me.imagemargin);
33         else // use default
34                 me.prevcoords = color_hslimage(stov(cvar_string(theDefaultCvar)), me.imagemargin);
35 }
36
37 float XonoticColorpickerString_mousePress(entity me, vector coords)
38 {
39         me.mouseDrag(me, coords);
40         return 1;
41 }
42
43 float XonoticColorpickerString_mouseDrag(entity me, vector coords)
44 {
45         if(me.disabled)
46                 return 0;
47         vector margin;
48         margin = me.imagemargin;
49         if(coords_x >= margin_x)
50         if(coords_y >= margin_y)
51         if(coords_x <= 1 - margin_x)
52         if(coords_y <= 1 - margin_y)
53         {
54                 me.prevcoords = coords;
55         }
56
57         return 1;
58 }
59
60 float XonoticColorpickerString_mouseRelease(entity me, vector coords)
61 {
62         me.mouseDrag(me, coords);
63         return 1;
64 }
65
66 void XonoticColorpickerString_draw(entity me)
67 {
68         float save;
69         save = draw_alpha;
70         if(me.disabled)
71                 draw_alpha *= me.disabledAlpha;
72
73         SUPER(XonoticColorpickerString).draw(me);
74
75         vector sz;
76         sz = draw_PictureSize(strcat(me.src, "_selected"));
77         sz = globalToBoxSize(sz, draw_scale);
78
79         if(!me.disabled)
80         {
81                 cvar_set(me.cvarName, sprintf("%v", hslimage_color(me.prevcoords, me.imagemargin)));
82                 draw_Picture(me.imgOrigin + me.prevcoords - 0.5 * sz, strcat(me.src, "_selected"), sz, '1 1 1', 1);
83         }
84         draw_alpha = save;
85 }
86 #endif