From b6c997706d8d2e70902dc6312215beef28b402a4 Mon Sep 17 00:00:00 2001 From: Brett Weiland Date: Thu, 6 Aug 2020 21:58:14 -0500 Subject: [PATCH] modified: src/color.c modified: src/color.h --- bin/color | Bin 17704 -> 17704 bytes src/color.c | 71 ++++++++++++++++++++++++++++++++-------------------- src/color.h | 3 ++- 3 files changed, 46 insertions(+), 28 deletions(-) diff --git a/bin/color b/bin/color index 7e1993123b8dbf84eb30d3e94f045f301b35003d..ea55d486304d65e729f5664d9bb7da4e87f5ccfc 100755 GIT binary patch delta 2421 zcmb7G4NOy46n^jV(;thkDroubqX8|5v@%3w!%d?1y-vbJhELoF#&%Nh- z=lkxt_r41k&e9jo(ii2lvV*0>Uk8g9)47T^Mw+(a&GeN;`gCbFV{sz$UA%3XER4EB zg$9ky*k6}#JaXRmg)hMTv5>tSM^VTd_oiryL-@|3K&+=kgZO^jw^-Z!)eAxJY-Qg<<5`6h=V8cAMp7>?twwSErry zO)GDfkK7>n5u9>r@&m~8Z^R`K@ND}_3Qn;YXQc3( z2^w09s}fc==Wr(EH&hxna@L~`#JfW;L7(pk6Vt=(EHC8_)m0oP^K|&4lCt z(dP2uD3NC+e%fS}IOl*=K1rNwS>R6B`` zSwd8a2vP_s1Nj@c#(HNRrvpU%K?zbv%yqXNj6sJ_EcI?U{EU?8K1sIP)k_TZo-y!g z81|KdBN!LM8M{Cxrlyd4+CBlEV2Mq-uDvR8_CLIBq$ zr|!HHnIq4oIrt&?>?dXLC4>GqAOo}{4SD9F-5#MKv^r~KJ}*9Y0x!|*W6n61iQyngx#{H-R9K@)gLlb!KfEJaya{eTs*w!Xmnr-Crbs^e~fca(j5 z0LC#lW3e_dn@M|$D-ySA&47T7ZHjOs@0uupld|rQQ zT)l?@O0lgW{C$$9dG!;(b_{^4hk{o(Ymj$4Vd8POLb~`u1f!>q*-fxwz!lDL?t+dz z69q}Gu)?{@6<*4^$KfGq=_LdLjMxuXL)7CY?5+UKi-VC=@Ld;&0KrAcsx)~7)kmXq z*IHx9#|ZDfc*^7ynIFgS>13VmOIX2w9e(*3{yBLKU5phe#mt|h7^Q4`eaRT)xPDNN zbb{XW^7W1Hy28sFc9236p=+!mMHE2is1pAQF^%TnYj`kad6s@=u~aZ+YG3-1*F6kX zNl({Xu&N;4jxVNaX&Ej~En*C#_*iNNb8HlUmTD|=!g;ihoCAFO7@PLow0Enw`0F%^ zGVR&S-!<*t%#WLPnfS@w$h+!1xGT42y+E#q^1zi4X49^I#L2OmTUTqYZ?YUIQe-wM zcZz+v*q4euRMtHz2=}1LpxjUXN6P{14ruQ~0~!jqbGfXewx-BvFdD2@;-YXbw<0RD zUWp%YnR($yg3tucwvZqk1l#gh5IVu`27*4Yov<6jU;}V3$(5>liPxuRCvpHcfScMV zQxlT`EgxDFZb@HJ_A5kh1DG-`RG(%x#KlJaM5|PHKInYhr1Vv8AAZX4G1IYV8Ngfdr6&AE+c1?ophGm!=i?Sm7`9ZQqV{ r6Efyb9NuEeRkmrR7-*d`l>zMylR**rPl+yFtFWg_5WCM*`hfWd#D`fv delta 2021 zcmb7FYfKbZ6uvVHvb=T{vx~btmSM9Z&HQrifrP4tJa#Iz-S*rnUV2OuLAr{~Tri}hb8xpU4v z-*+DO+&g!=4>8?`m~&bt!L38eiB$8mi?8ZzL3c$ z>A8b{KxDBW2MhvDfdjGC$q4ylSbPizjCRm5b5$O~{z{2E@8YTSJIa`gRB04l{P365 zOGT~EqKbh#@33;``^8H*U_XMCF}bumxB@UWhJzo!Do!OWirB1A z*@`1J+f%j@HLNR_=nb>VPyeF^!+yPD_dB#$yn)4m(3?@jVZusl<|U#?XRbss*s+zy z)THf^ny??@?l7jZ>5qwMEMWxljq$k-zNs1aHnh3xJ#G(=Md98PNGf(oRP?MatST%o z;GMX)u%@tr-|B7v29gzqmWrN;<7!|i)XHXH=v9VEVYIv3`1)Oya{r7)+zQiiR>_0*hLb-<_+uxiJUT9*~=0cG-t4zByz`WVfRX8Mq0jY zI1ZskE_bjIbItuB&$ui<;PlD2!TNyPJP3O1%{a0qEuXC!C;QTtX9>W73U?`6sTLZT zuLn9k4W@AtPRnC|dZ=VrF-}U;U+nM;Clqp5Hx;5FDWVI(cZ2=HIThcqxbqlN}_h3#J1~vQWDpB4Q`uZs|F!o-&XKOT<32Z1|jl= z*~r$8k;(LQyHB#UuYnhLkORag#kbG(NvWK`z-)hCJ9yE}Kb``wZ)+x6h z>wP6Whs0QN=H#e8@RFa7iABtZyjC;2DS>GC#Z?ey@PRDffsr)=d-XrYLg222(F%if^9AG% zp98y!2$wy(n7=E_yI^we9`qFCnftPQ0%QV^`$2AjW)6X*jX z1UZvEr-K2PdVr8qr$4|hNuHtE$Rx#SQ3jayz$k~BYyX4SMDgQ*zYVFp+Nbtz~O1 zL2E&23`nw}xPU?AWU*0`f^hI;@h=Rsk?b$=g7HyF73;DD%jeHvsK>I>QidJMB=0Ra zoUp}6lOp8RlC-jQ@d*ZXT1$49-DK*6t6mt7V^1fMWzK?xT1y18koTNR$@;~5a?8ob UPyd;j@&)lYTP5M3v;0r?UxD{?4*&oF diff --git a/src/color.c b/src/color.c index ad21919..81702b3 100644 --- a/src/color.c +++ b/src/color.c @@ -12,43 +12,43 @@ int add_color(update_info *color, int key) { - XFreeColors(color->display, color->colormap, &color->background.pixel, 1, 0); + XFreeColors(color->display, color->colormap, &color->background->pixel, 1, 0); switch(key){ case X_Q_KEY: - color->background.red += color->channel_step; + color->background->red += color->channel_step; break; case X_W_KEY: - color->background.green += color->channel_step; - printf("%i\n", color->background.green); + color->background->green += color->channel_step; break; case X_E_KEY: - color->background.blue += color->channel_step; + color->background->blue += color->channel_step; break; case X_A_KEY: - color->background.red -= color->channel_step; + color->background->red -= color->channel_step; break; case X_S_KEY: - color->background.green -= color->channel_step; + color->background->green -= color->channel_step; break; case X_D_KEY: - color->background.blue -= color->channel_step; + color->background->blue -= color->channel_step; break; default: printf("what the actual fuck is wrong with your program you cunt\n"); break; } - XAllocColor(color->display, color->colormap, &color->background); + XAllocColor(color->display, color->colormap, color->background); + printf("Pixel:\t%x\nR:\t%x\nG:\t%x\nB:\t%x\n", color->background->pixel, color->background->red, color->background->green, color->background->blue); } -int redraw_display(update_info *display_summary, XTextItem *text_prompt, GC *gc, unsigned int textpos_y) { +void redraw_display(update_info *display_summary, XTextItem *text_prompt, GC *gc, unsigned int textpos_y) { XFreeColors(display_summary->display, display_summary->colormap, &display_summary->foreground.pixel, 1, 0); - display_summary->foreground.red = 0xffff - display_summary->background.red; - display_summary->foreground.green = 0xffff - display_summary->background.green; - display_summary->foreground.blue = 0xffff - display_summary->background.blue; + display_summary->foreground.red = 0xffff - display_summary->background->red; + display_summary->foreground.green = 0xffff - display_summary->background->green; + display_summary->foreground.blue = 0xffff - display_summary->background->blue; XAllocColor(display_summary->display, display_summary->colormap, &display_summary->foreground); + XClearWindow(display_summary->display, display_summary->window); - printf("%i\n", display_summary->background.pixel); - XSetWindowBackground(display_summary->display, display_summary->window, display_summary->background.pixel); + XSetWindowBackground(display_summary->display, display_summary->window, display_summary->background->pixel); XSetForeground(display_summary->display, *gc, display_summary->foreground.pixel); XDrawText(display_summary->display, display_summary->window, *gc, TEXT_CORNER_OFFSET, textpos_y, text_prompt, 1); @@ -56,7 +56,9 @@ int redraw_display(update_info *display_summary, XTextItem *text_prompt, GC *gc, int main(void) { - char text_prompt_buffer[PROMPT_BUFSIZE] = "Q/W/E increases R/G/B. A/S/D decreases R/G/B. Enter allows exact value. Press Escape to dismiss."; + char text_prompt_buffer[PROMPT_BUFSIZE] = "Q/W/E, A/S/D for RGB channels. [Enter] begins rgb prompt, [Space] for 24 bit integers, [Enter] for hex. Seperate channels with \"/\""; + + char rgb_split_seperations[3][3]; Display *display; Window window; @@ -77,7 +79,6 @@ int main(void) { unsigned int textpos_y; - XFontStruct* font; XWindowAttributes win_info; @@ -104,6 +105,13 @@ int main(void) { XAllocColor(display, colormap, &background_color); XAllocColor(display, colormap, &foreground_color); + + XFreeColors(display, colormap, &background_color.pixel, 1, 0); + XParseColor(display, colormap, "rgb:0/0/ff", &background_color); + XAllocColor(display, colormap, &background_color); + + XFreeColors(display, colormap, &background_color.pixel, 1, 0); + XAllocColor(display, colormap, &background_color); @@ -142,7 +150,7 @@ int main(void) { .window = window, .display = display, .colormap = colormap, - .background = background_color, + .background = &background_color, .foreground = foreground_color, .channel_step = color_step }; @@ -154,6 +162,7 @@ int main(void) { if(is_prompt) { XClearWindow(display, window); text_buffer_space = PROMPT_BUFSIZE - text_prompt.nchars; + printf("%i\n", event.xkey.keycode); switch(event.xkey.keycode) { case X_BACKSPACE: if(text_buffer_space < PROMPT_BUFSIZE) { @@ -166,14 +175,21 @@ int main(void) { break; case X_ENTER_KEY: text_prompt_buffer[text_prompt.nchars + 1] = '\0'; - XFreeColors(display, colormap, background_color.pixel, 1, NULL); + XFreeColors(display, colormap, &background_color.pixel, 1, 0); XParseColor(display, colormap, text_prompt_buffer, &background_color); - background_color.red = 60000; XAllocColor(display, colormap, &background_color); is_prompt = 0; text_prompt.nchars = 0; redraw_display(&display_summary, &text_prompt, &text_prompt_gc, textpos_y); break; + case X_SHIFT_KEY: + XFreeColors(display, colormap, &background_color.pixel, 1, 0); + str + background_color.red = + background_color.green = + background_color.blue = + + printf("Pixel:\t%x\nR:\t%x\nG:\t%x\nB:\t%x\n", background_color.pixel, background_color.red, background_color.green, background_color.blue); default: if(text_buffer_space > 0) { text_prompt.nchars += XLookupString(&event.xkey, text_prompt_buffer + text_prompt.nchars, text_buffer_space, NULL, NULL); @@ -189,16 +205,17 @@ int main(void) { text_prompt.nchars = 4; strcpy(text_prompt_buffer, "rgb:"); break; - case X_Q_KEY: //if anyone is reading this, on a scale from 1-10, - case X_W_KEY: //just how ugly is this? - case X_E_KEY: //I don't know why, but it feels gross. - case X_A_KEY: //to be fair, most of this code is just for me. - case X_S_KEY: //otherwise, it'd be way cleaner. + case X_ESCAPE_KEY: + text_prompt.nchars = 0; + break; + case X_Q_KEY: // if anyone is reading this, on a scale from 1-10, + case X_W_KEY: // just how ugly is this? + case X_E_KEY: // I don't know why, but it feels gross. + case X_A_KEY: // to be fair, most of this code is just for me. + case X_S_KEY: // otherwise, it'd be way cleaner. case X_D_KEY: add_color(&display_summary, event.xkey.keycode); break; - case X_ESCAPE_KEY: - text_prompt.nchars = 0; default: break; } diff --git a/src/color.h b/src/color.h index ac81a01..388e703 100644 --- a/src/color.h +++ b/src/color.h @@ -3,6 +3,7 @@ #define X_ENTER_KEY 36 #define X_BACKSPACE 22 #define X_ESCAPE_KEY 9 +#define X_SHIFT_KEY 36 #define X_Q_KEY 24 #define X_W_KEY 25 @@ -18,7 +19,7 @@ typedef struct { Window window; Display *display; Colormap colormap; - XColor background; + XColor *background; XColor foreground; unsigned int channel_step; } update_info;