1 #include "colorpicker_string.qh"
5 entity makeXonoticColorpickerString(string theCvar, string theDefaultCvar)
8 me = NEW(XonoticColorpickerString);
9 me.configureXonoticColorpickerString(me, theCvar, theDefaultCvar);
13 void XonoticColorpickerString_configureXonoticColorpickerString(entity me, string theCvar, string theDefaultCvar)
15 me.configureImage(me, me.image);
16 me.cvarName = (theCvar) ? theCvar : string_null;
20 void XonoticColorpickerString_loadCvars(entity me)
25 if(substring(me.cvarName, -1, 1) == "_")
27 me.prevcoords = color_hslimage(
28 eX * cvar(strcat(me.cvarName, "red")) +
29 eY * cvar(strcat(me.cvarName, "green")) +
30 eZ * cvar(strcat(me.cvarName, "blue")),
34 me.prevcoords = color_hslimage(stov(cvar_string(me.cvarName)), me.imagemargin);
37 void XonoticColorpickerString_saveCvars(entity me)
42 if(substring(me.cvarName, -1, 1) == "_")
44 vector v = hslimage_color(me.prevcoords, me.imagemargin);
45 cvar_set(strcat(me.cvarName, "red"), ftos(v.x));
46 cvar_set(strcat(me.cvarName, "green"), ftos(v.y));
47 cvar_set(strcat(me.cvarName, "blue"), ftos(v.z));
50 cvar_set(me.cvarName, sprintf("%v", hslimage_color(me.prevcoords, me.imagemargin)));
53 METHOD(XonoticColorpickerString, mousePress, bool(XonoticColorpickerString this, vector pos))
55 this.mouseDrag(this, pos);
59 float XonoticColorpickerString_mouseDrag(entity me, vector coords)
64 margin = me.imagemargin;
65 if(coords.x >= margin.x)
66 if(coords.y >= margin.y)
67 if(coords.x <= 1 - margin.x)
68 if(coords.y <= 1 - margin.y)
70 me.prevcoords = coords;
77 float XonoticColorpickerString_mouseRelease(entity me, vector coords)
79 m_play_click_sound(MENU_SOUND_SLIDE);
80 me.mouseDrag(me, coords);
84 void XonoticColorpickerString_draw(entity me)
89 draw_alpha *= me.disabledAlpha;
91 SUPER(XonoticColorpickerString).draw(me);
94 sz = draw_PictureSize(strcat(me.src, "_selected"));
95 sz = globalToBoxSize(sz, draw_scale);
98 draw_Picture(me.imgOrigin + me.prevcoords - 0.5 * sz, strcat(me.src, "_selected"), sz, '1 1 1', 1);