shithub: riscv

Download patch

ref: a8e4b50cb21072c4699291cbeb243e074ff000f1
parent: ec737b6a2e464330946d5800841a1e631cd36acd
author: Sigrid <ftrvxmtrx@gmail.com>
date: Sat May 23 16:41:20 EDT 2020

paint: change colors in the palette with button 3

--- a/sys/man/1/paint
+++ b/sys/man/1/paint
@@ -13,6 +13,8 @@
 down buttons 1 or 2 for foreground or background color.  The canvas
 may be moved with button 3.  Colors and brush sizes may be selected by
 clicking on the palette at the bottom of the screen with buttons 1 or 2.
+Clicking button 3 on the palette allows changing a color by entering its
+hex value.
 .PP
 If the optional
 .I file
--- a/sys/src/cmd/paint.c
+++ b/sys/src/cmd/paint.c
@@ -515,6 +515,10 @@
 int
 hitpal(Mouse m)
 {
+	int i;
+	u32int c;
+	char buf[16], *e;
+
 	if(ptinrect(m.xy, penr)){
 		if(m.buttons & 7){
 			brush = ((m.xy.x - penr.min.x) * NBRUSH) / Dx(penr);
@@ -525,7 +529,8 @@
 	if(ptinrect(m.xy, palr)){
 		Image *col;
 
-		col = pal[(m.xy.x - palr.min.x) * nelem(pal) / Dx(palr)];
+		i = (m.xy.x - palr.min.x) * nelem(pal) / Dx(palr);
+		col = pal[i];
 		switch(m.buttons & 7){
 		case 1:
 			ink = col;
@@ -535,6 +540,18 @@
 			back = col;
 			drawpal();
 			update(nil);
+			break;
+		case 4:
+			snprint(buf, sizeof(buf), "%06x", c64[i]);
+			if(eenter("Hex", buf, sizeof(buf), &m) == 6){
+				c = strtoll(buf, &e, 16);
+				if(*e == 0){
+					c64[i] = c;
+					freeimage(pal[i]);
+					pal[i] = allocimage(display, Rect(0, 0, 1, 1), RGB24, 1, c<<8|0xff);
+					drawpal();
+				}
+			}
 			break;
 		}
 		return 1;