#ifdef INTERFACE CLASS(VoretColorpickerString) EXTENDS(Image) METHOD(VoretColorpickerString, configureVoretColorpickerString, void(entity, string, string)) METHOD(VoretColorpickerString, mousePress, float(entity, vector)) METHOD(VoretColorpickerString, mouseRelease, float(entity, vector)) METHOD(VoretColorpickerString, mouseDrag, float(entity, vector)) ATTRIB(VoretColorpickerString, cvarName, string, string_null) ATTRIB(VoretColorpickerString, prevcoords, vector, '0 0 0') ATTRIB(VoretColorpickerString, image, string, SKINGFX_COLORPICKER) ATTRIB(VoretColorpickerString, imagemargin, vector, SKINMARGIN_COLORPICKER) ATTRIB(VoretColorpickerString, focusable, float, 1) METHOD(VoretColorpickerString, draw, void(entity)) ATTRIB(VoretColorpickerString, disabledAlpha, float, 0.3) ENDCLASS(VoretColorpickerString) entity makeVoretColorpickerString(string theCvar, string theDefaultCvar); #endif #ifdef IMPLEMENTATION entity makeVoretColorpickerString(string theCvar, string theDefaultCvar) { entity me; me = spawnVoretColorpickerString(); me.configureVoretColorpickerString(me, theCvar, theDefaultCvar); return me; } void configureVoretColorpickerStringVoretColorpickerString(entity me, string theCvar, string theDefaultCvar) { me.cvarName = theCvar; me.configureImage(me, me.image); if(cvar_string(theCvar) != "") me.prevcoords = color_hslimage(stov(cvar_string(theCvar)), me.imagemargin); else // use default me.prevcoords = color_hslimage(stov(cvar_string(theDefaultCvar)), me.imagemargin); } float mousePressVoretColorpickerString(entity me, vector coords) { me.mouseDrag(me, coords); return 1; } float mouseDragVoretColorpickerString(entity me, vector coords) { if(me.disabled) return 0; vector margin; margin = me.imagemargin; if(coords_x >= margin_x) if(coords_y >= margin_y) if(coords_x <= 1 - margin_x) if(coords_y <= 1 - margin_y) { me.prevcoords = coords; } return 1; } float mouseReleaseVoretColorpickerString(entity me, vector coords) { me.mouseDrag(me, coords); return 1; } void drawVoretColorpickerString(entity me) { float save; save = draw_alpha; if(me.disabled) draw_alpha *= me.disabledAlpha; drawImage(me); vector sz; sz = draw_PictureSize(strcat(me.src, "_selected")); sz = globalToBoxSize(sz, draw_scale); if(!me.disabled) { cvar_set(me.cvarName, sprintf("%v", hslimage_color(me.prevcoords, me.imagemargin))); draw_Picture(me.imgOrigin + me.prevcoords - 0.5 * sz, strcat(me.src, "_selected"), sz, '1 1 1', 1); } draw_alpha = save; } #endif