shithub: da

Download patch

ref: 6379f646f2688d198d28d30e34006c6cea0e3571
parent: ab2f400e8b8b52bab59a5d0ced217807f2aa2e3c
author: glenda <glenda@krsna>
date: Wed Aug 20 17:30:18 EDT 2025

more-slight-cleans

--- a/da.c
+++ b/da.c
@@ -198,10 +198,12 @@
 int boxat(Point p);
 
 static ulong palette[] = {
-	0x2ECC71FF, 0x34495EFF, 0x95A5A6FF, 0xE67E22FF,
-	0xF39C12FF, 0x3498DBFF, 0x7F8C8DFF, 0x1ABC9CFF,
-	0xE74C3CFF, 0x9B59B6FF, 0xF1C40FFF, 0xECF0F1FF,
-	0x2C3E50FF, 0x16A085FF, 0xD35400FF, 0x27AE60FF
+	0xFF69B4FF, 0x00BFFFFF, 0x00FF00FF, 0xFFD700FF,
+	0xFF8C00FF, 0x9400D3FF, 0xFF7F50FF, 0x00FFFFFF,
+	0xFF1493FF, 0x4B0082FF, 0xDC143CFF, 0x40E0D0FF,
+	0xFFD700FF, 0x87CEEBFF, 0xB22222FF, 0x00FA9AFF
+
+
 };
 
 ConfigField config_fields[] = {
@@ -331,462 +333,462 @@
 };
 
 char *classic_emotions[] = {
-    ":-)",
-    ":-D",
-    ";-)",
-    ":-P"
+	":-)",
+	":-D",
+	";-)",
+	":-P"
 };
 
 char *bear_moods[] = {
-    "(o.o)",
-    "(^.^)",
-    "(*.*)",
-    "(-.-)zzz"
+	"(o.o)",
+	"(^.^)",
+	"(*.*)",
+	"(-.-)zzz"
 };
 
 char *bunny_hop[] = {
-    "(\\(\\",
-    "( -.-)(",
-    "o(\")(\")o",
-    "(\")_(\")"
+	"(\\(\\",
+	"( -.-)(",
+	"o(\")(\")o",
+	"(\")_(\")"
 };
 
 char *robot_faces[] = {
-    "[o_o]",
-    "[O_O]",
-    "[^_^]",
-    "[x_x]"
+	"[o_o]",
+	"[O_O]",
+	"[^_^]",
+	"[x_x]"
 };
 
 char *owl_looks[] = {
-    "(O,O)",
-    "(o,o)",
-    "(0,0)",
-    "(@,@)"
+	"(O,O)",
+	"(o,o)",
+	"(0,0)",
+	"(@,@)"
 };
 
 char *fish_swim[] = {
-    "><>",
-    "<><",
-    "><(((o>",
-    "<o)))><"
+	"><>",
+	"<><",
+	"><(((o>",
+	"<o)))><"
 };
 
 char *music_notes[] = {
-    "d(^_^)b",
-    "q(^_^)p",
-    "b(^_^)d",
-    "p(^_^)q"
+	"d(^_^)b",
+	"q(^_^)p",
+	"b(^_^)d",
+	"p(^_^)q"
 };
 
 char *wizard_cast[] = {
-    "(o)===*",
-    "*(===o)",
-    "~(o)~===*",
-    "*===~(o)~"
+	"(o)===*",
+	"*(===o)",
+	"~(o)~===*",
+	"*===~(o)~"
 };
 
 char *table_flip[] = {
-    "(o_o)",
-    "(o_O)",
-    "(O_O)",
-    "(x_x)===___"
+	"(o_o)",
+	"(o_O)",
+	"(O_O)",
+	"(x_x)===___"
 };
 
 char *love_hearts[] = {
-    "<3",
-    "</3",
-    "<3<3<3",
-    "~<3~"
+	"<3",
+	"</3",
+	"<3<3<3",
+	"~<3~"
 };
 
 char *stick_figure[] = {
-    "o/",
-    "\\o",
-    "|o|",
-    "_o_"
+	"o/",
+	"\\o",
+	"|o|",
+	"_o_"
 };
 
 char *cool_shades[] = {
-    "B-)",
-    "8-)",
-    "B-D",
-    "8-D"
+	"B-)",
+	"8-)",
+	"B-D",
+	"8-D"
 };
 
 char *space_invaders[] = {
-    "/o\\",
-    "\\o/",
-    "|o|",
-    "-o-"
+	"/o\\",
+	"\\o/",
+	"|o|",
+	"-o-"
 };
 
 char *bat_fly[] = {
-    "^v^",
-    "vVv",
-    "^V^",
-    "VvV"
+	"^v^",
+	"vVv",
+	"^V^",
+	"VvV"
 };
 
 char *spider_crawl[] = {
-    "//\\\\(oo)//\\\\",
-    "//\\\\(  )//\\\\",
-    "\\\\//(..)\\\\//",
-    "\\\\//()\\\\//",
+	"//\\\\(oo)//\\\\",
+	"//\\\\(  )//\\\\",
+	"\\\\//(..)\\\\//",
+	"\\\\//()\\\\//",
 };
 
 char *boxing[] = {
-    "(o_o)-Q",
-    "Q-(o_o)",
-    "Q-(>_<)-Q",
-    "(^o^)9"
+	"(o_o)-Q",
+	"Q-(o_o)",
+	"Q-(>_<)-Q",
+	"(^o^)9"
 };
 
 char *flex_arms[] = {
-    "o==[]::::::>",
-    "@==[]::::::>",
-    "O==[]::::::>",
-    "*==[]::::::>"
+	"o==[]::::::>",
+	"@==[]::::::>",
+	"O==[]::::::>",
+	"*==[]::::::>"
 };
 
 char *crab_walk[] = {
-    "V(o_o)V",
-    "V(._.)V",
-    "V(^_^)V",
-    "V(*_*)V"
+	"V(o_o)V",
+	"V(._.)V",
+	"V(^_^)V",
+	"V(*_*)V"
 };
 
 char *penguin[] = {
-    "<(^_^)>",
-    "<('_')>",
-    "<(o_o)>",
-    "<(._.)>"
+	"<(^_^)>",
+	"<('_')>",
+	"<(o_o)>",
+	"<(._.)>"
 };
 
 char *excited[] = {
-    "\\(^o^)/",
-    "~(^o^)~",
-    "*(^o^)*",
-    "/(^o^)\\"
+	"\\(^o^)/",
+	"~(^o^)~",
+	"*(^o^)*",
+	"/(^o^)\\"
 };
 
 char *ghosts[] = {
-    "~(o.o)~",
-    "~(O.O)~",
-    "~(x.x)~",
-    "~(-.-)~"
+	"~(o.o)~",
+	"~(O.O)~",
+	"~(x.x)~",
+	"~(-.-)~"
 };
 
 char *zombies[] = {
-    "[x_x]",
-    "[X_X]",
-    "]x_x[",
-    "]X_X["
+	"[x_x]",
+	"[X_X]",
+	"]x_x[",
+	"]X_X["
 };
 
 char *snails[] = {
-    "@__)",
-    "(__@",
-    "@__]",
-    "[__@"
+	"@__)",
+	"(__@",
+	"@__]",
+	"[__@"
 };
 
 char *ufo[] = {
-    "<o>",
-    "=<o>=",
-    "==<o>==",
-    "=<o>="
+	"<o>",
+	"=<o>=",
+	"==<o>==",
+	"=<o>="
 };
 
 char *rockets[] = {
-    "=>",
-    "==>",
-    "===>",
-    "===>"
+	"=>",
+	"==>",
+	"===>",
+	"===>"
 };
 
 char *weather[] = {
-    "* * *",
-    "' ' '",
-    ". . .",
-    "~ ~ ~"
+	"* * *",
+	"' ' '",
+	". . .",
+	"~ ~ ~"
 };
 
 char *math_dance[] = {
-    "+(^_^)+",
-    "-(^_^)-",
-    "*(^_^)*",
-    "/(^_^)/"
+	"+(^_^)+",
+	"-(^_^)-",
+	"*(^_^)*",
+	"/(^_^)/"
 };
 
 char *pacman[] = {
-    "C",
-    "c",
-    "<",
-    "("
+	"C",
+	"c",
+	"<",
+	"("
 };
 
 char *dice[] = {
-    "[1]",
-    "[2]",
-    "[3]",
-    "[4]"
+	"[1]",
+	"[2]",
+	"[3]",
+	"[4]"
 };
 
 char *stars[] = {
-    "*",
-    "+",
-    "x",
-    "."
+	"*",
+	"+",
+	"x",
+	"."
 };
 
 char *arrows[] = {
-    "->",
-    "-->",
-    "--->",
-    "---->"
+	"->",
+	"-->",
+	"--->",
+	"---->"
 };
 
 char *code_brackets[] = {
-    "{^_^}",
-    "[^_^]",
-    "(^_^)",
-    "<^_^>"
+	"{^_^}",
+	"[^_^]",
+	"(^_^)",
+	"<^_^>"
 };
 
 char *swords[] = {
-    "o==|::::>",
-    "<::::|==o",
-    "o==|::::>",
-    "<::::|==o"
+	"o==|::::>",
+	"<::::|==o",
+	"o==|::::>",
+	"<::::|==o"
 };
 
 char *dragon[] = {
-    ">=<>",
-    ">==<>",
-    ">===<>",
-    ">====<>"
+	">=<>",
+	">==<>",
+	">===<>",
+	">====<>"
 };
 
 char *butterfly[] = {
-    "}i{",
-    "}I{",
-    "}!{",
-    "}|{"
+	"}i{",
+	"}I{",
+	"}!{",
+	"}|{"
 };
 
 char *skulls[] = {
-    "8-X",
-    "8-(",
-    "X-X",
-    "x-x"
+	"8-X",
+	"8-(",
+	"X-X",
+	"x-x"
 };
 
 char *money[] = {
-    "[$]",
-    "[$$]",
-    "[$$$]",
-    "[$$$$]"
+	"[$]",
+	"[$$]",
+	"[$$$]",
+	"[$$$$]"
 };
 
 char *flower[] = {
-    "@}->--",
-    "@}>---",
-    "@}>----",
-    "@}>-----"
+	"@}->--",
+	"@}>---",
+	"@}>----",
+	"@}>-----"
 };
 
 char *chess[] = {
-    "|\\*",
-    "|\\#",
-    "|\\+",
-    "|\\@"
+	"|\\*",
+	"|\\#",
+	"|\\+",
+	"|\\@"
 };
 
 char *lenny[] = {
-    "( *_*)",  
-    "( o_o)",    
-    "( ^_^)",
-    "( >_>)"
+	"( *_*)",  
+	"( o_o)",    
+	"( ^_^)",
+	"( >_>)"
 };
 
 char *minimal[] = {
-    "._.",
-    "o_o",
-    "^_^",
-    "-_-"
+	"._.",
+	"o_o",
+	"^_^",
+	"-_-"
 };
 
 char *surprised[] = {
-    "o.o",
-    "O.O",
-    "0.0",
-    "@.@"
+	"o.o",
+	"O.O",
+	"0.0",
+	"@.@"
 };
 
 char *winking[] = {
-    ";)",
-    ";]",
-    ";D",
-    ";P"
+	";)",
+	";]",
+	";D",
+	";P"
 };
 
 char *nyan[] = {
-    "=^.^=",
-    "=^.o=",
-    "=o.^=",
-    "=o.o="
+	"=^.^=",
+	"=^.o=",
+	"=o.^=",
+	"=o.o="
 };
 
 char *keyboard_smash[] = {
-    "asdf",
-    "jkl;",
-    "qwer",
-    "zxcv"
+	"asdf",
+	"jkl;",
+	"qwer",
+	"zxcv"
 };
 
 char *binary[] = {
-    "0101",
-    "1010",
-    "1100",
-    "0011"
+	"0101",
+	"1010",
+	"1100",
+	"0011"
 };
 
 char *waves[] = {
-    "~~~~~",
-    "^^^^^",
-    "vvvvv",
-    "~v~v~"
+	"~~~~~",
+	"^^^^^",
+	"vvvvv",
+	"~v~v~"
 };
 
 void 
 save_da(char *file)
 {
-    int fd, i;
-    Biobuf *b;
-    
-    fd = create(file, OWRITE, 0644);
-    if(fd < 0){
-        fprint(2, "cannot create %s: %r\n", file);
-        return;
-    }
-    
-    b = Bfdopen(fd, OWRITE);
-    
-    Bprint(b, "count %d\n", canvas.nboxes);
-    
-    
-    Bprint(b, "positions\n");
-    for(i = 0; i < canvas.nboxes; i++){
-        Bprint(b, "%d %d\n", 
-            canvas.boxes.pos[i].x, 
-            canvas.boxes.pos[i].y);
-    }
-    
-    Bprint(b, "types\n");
-    for(i = 0; i < canvas.nboxes; i++){
-        Bprint(b, "%d\n", canvas.boxes.type[i]);
-    }
-    
-    Bprint(b, "colors\n");
-    for(i = 0; i < canvas.nboxes; i++){
-        Bprint(b, "%d\n", canvas.boxes.color_idx[i]);
-    }
-    
-    Bterm(b);
-    close(fd);
+	int fd, i;
+	Biobuf *b;
+	
+	fd = create(file, OWRITE, 0644);
+	if(fd < 0){
+		fprint(2, "cannot create %s: %r\n", file);
+		return;
+	}
+	
+	b = Bfdopen(fd, OWRITE);
+	
+	Bprint(b, "count %d\n", canvas.nboxes);
+	
+	
+	Bprint(b, "positions\n");
+	for(i = 0; i < canvas.nboxes; i++){
+		Bprint(b, "%d %d\n", 
+			canvas.boxes.pos[i].x, 
+			canvas.boxes.pos[i].y);
+	}
+	
+	Bprint(b, "types\n");
+	for(i = 0; i < canvas.nboxes; i++){
+		Bprint(b, "%d\n", canvas.boxes.type[i]);
+	}
+	
+	Bprint(b, "colors\n");
+	for(i = 0; i < canvas.nboxes; i++){
+		Bprint(b, "%d\n", canvas.boxes.color_idx[i]);
+	}
+	
+	Bterm(b);
+	close(fd);
 }
 
 void 
 load_da(char *file)
 {
-    Biobuf *b;
-    char *line;
-    char *fields[10];
-    int nf, i;
-    enum { NONE, POSITIONS, TYPES, COLORS } section = NONE;
-    int idx = 0;
-    int count = 0;
-    
-    b = Bopen(file, OREAD);
-    if(b == nil){
-        fprint(2, "cannot open %s: %r\n", file);
-        return;
-    }
-    
-    memset(&canvas.boxes, 0, sizeof(canvas.boxes));
-    canvas.nboxes = 0;
-    canvas.selected = -1;
-    canvas.current_color = 8;
-    init_emoji();
-    
-    while((line = Brdline(b, '\n')) != nil){
-        line[Blinelen(b)-1] = '\0';
-        
-        if(line[0] == '#' || line[0] == '\0')
-            continue;
-        
-        nf = tokenize(line, fields, nelem(fields));
-        if(nf == 0) continue;
-        
+	Biobuf *b;
+	char *line;
+	char *fields[10];
+	int nf, i;
+	enum { NONE, POSITIONS, TYPES, COLORS } section = NONE;
+	int idx = 0;
+	int count = 0;
+	
+	b = Bopen(file, OREAD);
+	if(b == nil){
+		fprint(2, "cannot open %s: %r\n", file);
+		return;
+	}
+	
+	memset(&canvas.boxes, 0, sizeof(canvas.boxes));
+	canvas.nboxes = 0;
+	canvas.selected = -1;
+	canvas.current_color = 8;
+	init_emoji();
+	
+	while((line = Brdline(b, '\n')) != nil){
+		line[Blinelen(b)-1] = '\0';
+		
+		if(line[0] == '#' || line[0] == '\0')
+			continue;
+		
+		nf = tokenize(line, fields, nelem(fields));
+		if(nf == 0) continue;
+		
 		if(strcmp(fields[0], "count") == 0 && nf >= 2){
-            count = atoi(fields[1]);
-            if(count > MAXBOXES) count = MAXBOXES;
-        } else if(strcmp(fields[0], "positions") == 0){
-            section = POSITIONS;
-            idx = 0;
-        } else if(strcmp(fields[0], "types") == 0){
-            section = TYPES;
-            idx = 0;
-        } else if(strcmp(fields[0], "colors") == 0){
-            section = COLORS;
-            idx = 0;
-        } else {
-            switch(section){
-            case POSITIONS:
-                if(nf >= 2 && idx < count){
-                    canvas.boxes.pos[idx] = Pt(atoi(fields[0]), atoi(fields[1]));
-                    idx++;
-                }
-                break;
-                
-            case TYPES:
-                if(nf >= 1 && idx < count){
-                    canvas.boxes.type[idx] = atoi(fields[0]);
-                    idx++;
-                }
-                break;
-                
-            case COLORS:
-                if(nf >= 1 && idx < count){
-                    canvas.boxes.color_idx[idx] = atoi(fields[0]);
-                    idx++;
-                }
-                break;
-            }
-        }
-    }
-    
-    canvas.nboxes = count;
-    
-    for(i = 0; i < canvas.nboxes; i++){
-        Point p = canvas.boxes.pos[i];
-        if(canvas.boxes.type[i] == T_BIGBOX){
-            canvas.boxes.r[i] = Rect(p.x, p.y,
-                p.x + config.bigbox_width,
-                p.y + config.bigbox_height);
-        } else {
-            canvas.boxes.r[i] = Rect(p.x, p.y,
-                p.x + config.box_width,
-                p.y + config.box_height);
-        }
-        canvas.boxes.selected[i] = 0;  // Clear selection on load
-    }
-    
-    Bterm(b);
-    redraw();
-}
-
+			count = atoi(fields[1]);
+			if(count > MAXBOXES) count = MAXBOXES;
+		} else if(strcmp(fields[0], "positions") == 0){
+			section = POSITIONS;
+			idx = 0;
+		} else if(strcmp(fields[0], "types") == 0){
+			section = TYPES;
+			idx = 0;
+		} else if(strcmp(fields[0], "colors") == 0){
+			section = COLORS;
+			idx = 0;
+		} else {
+			switch(section){
+			case POSITIONS:
+				if(nf >= 2 && idx < count){
+					canvas.boxes.pos[idx] = Pt(atoi(fields[0]), atoi(fields[1]));
+					idx++;
+				}
+				break;
+				
+			case TYPES:
+				if(nf >= 1 && idx < count){
+					canvas.boxes.type[idx] = atoi(fields[0]);
+					idx++;
+				}
+				break;
+				
+			case COLORS:
+				if(nf >= 1 && idx < count){
+					canvas.boxes.color_idx[idx] = atoi(fields[0]);
+					idx++;
+				}
+				break;
+			}
+		}
+	}
+	
+	canvas.nboxes = count;
+	
+	for(i = 0; i < canvas.nboxes; i++){
+		Point p = canvas.boxes.pos[i];
+		if(canvas.boxes.type[i] == T_BIGBOX){
+			canvas.boxes.r[i] = Rect(p.x, p.y,
+				p.x + config.bigbox_width,
+				p.y + config.bigbox_height);
+		} else {
+			canvas.boxes.r[i] = Rect(p.x, p.y,
+				p.x + config.box_width,
+				p.y + config.box_height);
+		}
+		canvas.boxes.selected[i] = 0;  // Clear selection on load
+	}
+	
+	Bterm(b);
+	redraw();
+}
+
 void
 save_config(char *path)
 {
@@ -877,7 +879,6 @@
 
 		for(cf = config_fields; cf->name != nil; cf++) {
 			if(strcmp(fields[0], cf->name) == 0) {
-				/* Process based on type */
 				switch(cf->type) {
 				case CFG_INT:
 					*(int*)cf->ptr = atoi(fields[1]);
@@ -1015,103 +1016,103 @@
 void 
 cleanup(void)
 {
-    int i;
-    for(i = 0; i < 16; i++) {
-        if(colors[i])
-            freeimage(colors[i]);
-    }
+	int i;
+	for(i = 0; i < 16; i++) {
+		if(colors[i])
+			freeimage(colors[i]);
+	}
 }
 
 void
 cmd_set_color(int idx)
 {
-    if(idx >= 0 && idx < 16) {
-        canvas.current_color = idx;
-        if(canvas.selected >= 0 && canvas.selected < canvas.nboxes) {
-            canvas.boxes.color_idx[canvas.selected] = idx;
-        }
-        canvas.needredraw = 1;
-    }
+	if(idx >= 0 && idx < 16) {
+		canvas.current_color = idx;
+		if(canvas.selected >= 0 && canvas.selected < canvas.nboxes) {
+			canvas.boxes.color_idx[canvas.selected] = idx;
+		}
+		canvas.needredraw = 1;
+	}
 }
 void 
 cmd_toggle_boxtype(void)
 {
-    canvas.next_box_type = !canvas.next_box_type;
-    canvas.needredraw = 1;
+	canvas.next_box_type = !canvas.next_box_type;
+	canvas.needredraw = 1;
 }
 
 int 
 boxat(Point p)
 {
-    int i;
-    for(i = canvas.nboxes - 1; i >= 0; i--){
-        if(ptinrect(p, canvas.boxes.r[i]))
-            return i;
-    }
-    return -1;
+	int i;
+	for(i = canvas.nboxes - 1; i >= 0; i--){
+		if(ptinrect(p, canvas.boxes.r[i]))
+			return i;
+	}
+	return -1;
 }
 
 int 
 addbox(Point p)
 {
-    int idx;
-    if(canvas.nboxes >= MAXBOXES)
-        return -1;
-    
-    idx = canvas.nboxes;
-    
-    if(canvas.gridsnap) {
-        p.x = (p.x / canvas.gridsize) * canvas.gridsize;
-        p.y = (p.y / canvas.gridsize) * canvas.gridsize;
-    }
-    
-    canvas.boxes.pos[idx] = p;
-    canvas.boxes.type[idx] = canvas.next_box_type;
-    canvas.boxes.color_idx[idx] = canvas.current_color;
-    canvas.boxes.selected[idx] = 0;
-    
-    if(canvas.boxes.type[idx] == T_BIGBOX) {
-        canvas.boxes.r[idx] = Rect(p.x, p.y, 
-            p.x + config.bigbox_width,
-            p.y + config.bigbox_height);
-    } else {
-        canvas.boxes.r[idx] = Rect(p.x, p.y,
-            p.x + config.box_width,
-            p.y + config.box_height);
-    }
-    
-    return canvas.nboxes++;
+	int idx;
+	if(canvas.nboxes >= MAXBOXES)
+		return -1;
+	
+	idx = canvas.nboxes;
+	
+	if(canvas.gridsnap) {
+		p.x = (p.x / canvas.gridsize) * canvas.gridsize;
+		p.y = (p.y / canvas.gridsize) * canvas.gridsize;
+	}
+	
+	canvas.boxes.pos[idx] = p;
+	canvas.boxes.type[idx] = canvas.next_box_type;
+	canvas.boxes.color_idx[idx] = canvas.current_color;
+	canvas.boxes.selected[idx] = 0;
+	
+	if(canvas.boxes.type[idx] == T_BIGBOX) {
+		canvas.boxes.r[idx] = Rect(p.x, p.y, 
+			p.x + config.bigbox_width,
+			p.y + config.bigbox_height);
+	} else {
+		canvas.boxes.r[idx] = Rect(p.x, p.y,
+			p.x + config.box_width,
+			p.y + config.box_height);
+	}
+	
+	return canvas.nboxes++;
 }
 
 void 
 delbox(int i)
 {
-    int last;
-    if(i < 0 || i >= canvas.nboxes)
-        return;
-    
-    last = canvas.nboxes - 1;
-    
-    if(i != last) {
-        canvas.boxes.pos[i] = canvas.boxes.pos[last];
-        canvas.boxes.r[i] = canvas.boxes.r[last];
-        canvas.boxes.type[i] = canvas.boxes.type[last];
-        canvas.boxes.selected[i] = canvas.boxes.selected[last];
-        canvas.boxes.color_idx[i] = canvas.boxes.color_idx[last];
-    }
-    
-    canvas.nboxes--;
+	int last;
+	if(i < 0 || i >= canvas.nboxes)
+		return;
+	
+	last = canvas.nboxes - 1;
+	
+	if(i != last) {
+		canvas.boxes.pos[i] = canvas.boxes.pos[last];
+		canvas.boxes.r[i] = canvas.boxes.r[last];
+		canvas.boxes.type[i] = canvas.boxes.type[last];
+		canvas.boxes.selected[i] = canvas.boxes.selected[last];
+		canvas.boxes.color_idx[i] = canvas.boxes.color_idx[last];
+	}
+	
+	canvas.nboxes--;
 }
 
 void
 draw_box(int idx, Image *dst)
 {
-    Image *bg = colors[canvas.boxes.color_idx[idx]];
-    
-    if(canvas.boxes.selected[idx])
-        bg = boxselected;
-    
-    draw(dst, canvas.boxes.r[idx], bg, nil, ZP);
+	Image *bg = colors[canvas.boxes.color_idx[idx]];
+	
+	if(canvas.boxes.selected[idx])
+		bg = boxselected;
+	
+	draw(dst, canvas.boxes.r[idx], bg, nil, ZP);
 }
 
 void
@@ -1140,26 +1141,26 @@
 void
 draw_fnol(void)
 {
-    Rectangle r;
-    int w = 400;
-    int h = 64;
-    Point center = Pt(screen->r.min.x + Dx(screen->r)/2,
-              screen->r.min.y + Dy(screen->r)/2);
+	Rectangle r;
+	int w = 400;
+	int h = 64;
+	Point center = Pt(screen->r.min.x + Dx(screen->r)/2,
+			  screen->r.min.y + Dy(screen->r)/2);
 
-    r = Rect(center.x - w/2, center.y - h/2,
-         center.x + w/2, center.y + h/2);
+	r = Rect(center.x - w/2, center.y - h/2,
+		 center.x + w/2, center.y + h/2);
 
-    draw(screen, r,cbg, nil, ZP); 
-    border(screen, r, 2, cfg, ZP);
+	draw(screen, r,cbg, nil, ZP); 
+	border(screen, r, 2, cfg, ZP);
 
-    char *title = canvas.save_mode == 1 ? "Save As:" : "Open File:";
-    string(screen, Pt(r.min.x + 10, r.min.y + 5),
-        cfg, ZP, font, title); 
+	char *title = canvas.save_mode == 1 ? "Save As:" : "Open File:";
+	string(screen, Pt(r.min.x + 10, r.min.y + 5),
+		cfg, ZP, font, title); 
 
-    char display[256];
-    snprint(display, sizeof(display), "%s_", canvas.fnbuf);
-    string(screen, Pt(r.min.x + 10, r.min.y + 20),
-        cfg, ZP, font, display); 
+	char display[256];
+	snprint(display, sizeof(display), "%s_", canvas.fnbuf);
+	string(screen, Pt(r.min.x + 10, r.min.y + 20),
+		cfg, ZP, font, display); 
 }
 
 void
@@ -1179,26 +1180,26 @@
 void 
 draw_all(void)
 {
-    int i;
-    for(i = 0; i < canvas.nboxes; i++) {
-        if(canvas.boxes.type[i] == T_BOX) {
-            Image *color = colors[canvas.boxes.color_idx[i]];
-            draw(screen, canvas.boxes.r[i], color, nil, ZP);
-        }
-    }
-    
-    for(i = 0; i < canvas.nboxes; i++) {
-        if(canvas.boxes.type[i] == T_BIGBOX) {
-            Image *color = colors[canvas.boxes.color_idx[i]];
-            draw(screen, canvas.boxes.r[i], color, nil, ZP);
-        }
-    }
-    
-    for(i = 0; i < canvas.nboxes; i++) {
-        if(canvas.boxes.selected[i]) {
-            border(screen, canvas.boxes.r[i], 2, boxselected, ZP);
-        }
-    }
+	int i;
+	for(i = 0; i < canvas.nboxes; i++) {
+		if(canvas.boxes.type[i] == T_BOX) {
+			Image *color = colors[canvas.boxes.color_idx[i]];
+			draw(screen, canvas.boxes.r[i], color, nil, ZP);
+		}
+	}
+	
+	for(i = 0; i < canvas.nboxes; i++) {
+		if(canvas.boxes.type[i] == T_BIGBOX) {
+			Image *color = colors[canvas.boxes.color_idx[i]];
+			draw(screen, canvas.boxes.r[i], color, nil, ZP);
+		}
+	}
+	
+	for(i = 0; i < canvas.nboxes; i++) {
+		if(canvas.boxes.selected[i]) {
+			border(screen, canvas.boxes.r[i], 2, boxselected, ZP);
+		}
+	}
 }
 
 void
@@ -1286,225 +1287,224 @@
 	apply_config();
 	validate_config();
 	canvas.needredraw = 1;
-	fprint(2, "Configuration reloaded from %s\n", CONFIG_FILE);
 }
 
 void
 cmd_cycle_emoji(void)
 {
-    static int emoji_set = 0;
-    int i;
-    
-    emoji_set = (emoji_set + 1) % 51;  /* total emoji sets */
-    
-    switch(emoji_set) {
-    case 0:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = rcc_style[i];
-        break;
-    case 1:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = kirby_dance[i];
-        break;
-    case 2:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = lambda_dance[i];
-        break;
-    case 3:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = dancing_guy[i];
-        break;
-    case 4:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = happy_faces[i];
-        break;
-    case 5:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = classic_emotions[i];
-        break;
-    case 6:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = bear_moods[i];
-        break;
-    case 7:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = bunny_hop[i];
-        break;
-    case 8:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = robot_faces[i];
-        break;
-    case 9:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = owl_looks[i];
-        break;
-    case 10:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = fish_swim[i];
-        break;
-    case 11:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = music_notes[i];
-        break;
-    case 12:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = wizard_cast[i];
-        break;
-    case 13:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = table_flip[i];
-        break;
-    case 14:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = love_hearts[i];
-        break;
-    case 15:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = stick_figure[i];
-        break;
-    case 16:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = cool_shades[i];
-        break;
-    case 17:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = space_invaders[i];
-        break;
-    case 18:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = bat_fly[i];
-        break;
-    case 19:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = spider_crawl[i];
-        break;
-    case 20:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = boxing[i];
-        break;
-    case 21:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = flex_arms[i];
-        break;
-    case 22:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = crab_walk[i];
-        break;
-    case 23:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = penguin[i];
-        break;
-    case 24:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = excited[i];
-        break;
-    case 25:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = ghosts[i];
-        break;
-    case 26:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = zombies[i];
-        break;
-    case 27:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = snails[i];
-        break;
-    case 28:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = ufo[i];
-        break;
-    case 29:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = rockets[i];
-        break;
-    case 30:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = weather[i];
-        break;
-    case 31:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = math_dance[i];
-        break;
-    case 32:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = pacman[i];
-        break;
-    case 33:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = dice[i];
-        break;
-    case 34:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = stars[i];
-        break;
-    case 35:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = arrows[i];
-        break;
-    case 36:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = code_brackets[i];
-        break;
-    case 37:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = swords[i];
-        break;
-    case 38:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = dragon[i];
-        break;
-    case 39:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = butterfly[i];
-        break;
-    case 40:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = skulls[i];
-        break;
-    case 41:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = money[i];
-        break;
-    case 42:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = flower[i];
-        break;
-    case 43:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = chess[i];
-        break;
-    case 44:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = minimal[i];
-        break;
-    case 45:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = surprised[i];
-        break;
-    case 46:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = winking[i];
-        break;
-    case 47:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = nyan[i];
-        break;
-    case 48:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = keyboard_smash[i];
-        break;
-    case 49:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = binary[i];
-        break;
-    case 50:
-        for(i = 0; i < 4; i++)
-            canvas.emoji_frames[i] = waves[i];
-        break;
-    }
+	static int emoji_set = 0;
+	int i;
+	
+	emoji_set = (emoji_set + 1) % 51;  /* total emoji sets */
+	
+	switch(emoji_set) {
+	case 0:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = rcc_style[i];
+		break;
+	case 1:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = kirby_dance[i];
+		break;
+	case 2:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = lambda_dance[i];
+		break;
+	case 3:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = dancing_guy[i];
+		break;
+	case 4:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = happy_faces[i];
+		break;
+	case 5:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = classic_emotions[i];
+		break;
+	case 6:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = bear_moods[i];
+		break;
+	case 7:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = bunny_hop[i];
+		break;
+	case 8:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = robot_faces[i];
+		break;
+	case 9:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = owl_looks[i];
+		break;
+	case 10:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = fish_swim[i];
+		break;
+	case 11:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = music_notes[i];
+		break;
+	case 12:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = wizard_cast[i];
+		break;
+	case 13:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = table_flip[i];
+		break;
+	case 14:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = love_hearts[i];
+		break;
+	case 15:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = stick_figure[i];
+		break;
+	case 16:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = cool_shades[i];
+		break;
+	case 17:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = space_invaders[i];
+		break;
+	case 18:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = bat_fly[i];
+		break;
+	case 19:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = spider_crawl[i];
+		break;
+	case 20:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = boxing[i];
+		break;
+	case 21:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = flex_arms[i];
+		break;
+	case 22:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = crab_walk[i];
+		break;
+	case 23:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = penguin[i];
+		break;
+	case 24:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = excited[i];
+		break;
+	case 25:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = ghosts[i];
+		break;
+	case 26:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = zombies[i];
+		break;
+	case 27:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = snails[i];
+		break;
+	case 28:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = ufo[i];
+		break;
+	case 29:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = rockets[i];
+		break;
+	case 30:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = weather[i];
+		break;
+	case 31:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = math_dance[i];
+		break;
+	case 32:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = pacman[i];
+		break;
+	case 33:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = dice[i];
+		break;
+	case 34:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = stars[i];
+		break;
+	case 35:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = arrows[i];
+		break;
+	case 36:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = code_brackets[i];
+		break;
+	case 37:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = swords[i];
+		break;
+	case 38:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = dragon[i];
+		break;
+	case 39:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = butterfly[i];
+		break;
+	case 40:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = skulls[i];
+		break;
+	case 41:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = money[i];
+		break;
+	case 42:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = flower[i];
+		break;
+	case 43:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = chess[i];
+		break;
+	case 44:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = minimal[i];
+		break;
+	case 45:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = surprised[i];
+		break;
+	case 46:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = winking[i];
+		break;
+	case 47:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = nyan[i];
+		break;
+	case 48:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = keyboard_smash[i];
+		break;
+	case 49:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = binary[i];
+		break;
+	case 50:
+		for(i = 0; i < 4; i++)
+			canvas.emoji_frames[i] = waves[i];
+		break;
+	}
 
-    canvas.needredraw = 1;
+	canvas.needredraw = 1;
 }
 
 void
@@ -1517,18 +1517,18 @@
 void
 enterfnm(int sm, int dp)
 {
-    canvas.current_mode = 1;
-    canvas.fnkey = 1;
-    canvas.save_mode = sm; 
+	canvas.current_mode = 1;
+	canvas.fnkey = 1;
+	canvas.save_mode = sm; 
 
-    if (dp) {
-        strcpy(canvas.fnbuf, config.default_save_path);
-        canvas.fnpos = strlen(canvas.fnbuf);
-    } else {
-        canvas.fnbuf[0] = '\0';
-        canvas.fnpos = 0;
-    }
-    canvas.needredraw = 1;
+	if (dp) {
+		strcpy(canvas.fnbuf, config.default_save_path);
+		canvas.fnpos = strlen(canvas.fnbuf);
+	} else {
+		canvas.fnbuf[0] = '\0';
+		canvas.fnpos = 0;
+	}
+	canvas.needredraw = 1;
 }
 
 void cmd_save(void)      { enterfnm(1, 1); }
@@ -1583,21 +1583,21 @@
 {
 	Command *cmd;	
 	if(key >= '0' && key <= '9') {
-        cmd_set_color(key - '0'); 
-        return;
-    }
-    
-    if(key >= 'a' && key <= 'f') {
-        cmd_set_color(10 + (key - 'a'));  
-        return;
-    }
+		cmd_set_color(key - '0'); 
+		return;
+	}
+	
+	if(key >= 'a' && key <= 'f') {
+		cmd_set_color(10 + (key - 'a'));  
+		return;
+	}
 
-    for(cmd = commands; cmd->action; cmd++) {
-        if(cmd->key == key) {
-            cmd->action();
-            return;
-        }
-    }
+	for(cmd = commands; cmd->action; cmd++) {
+		if(cmd->key == key) {
+			cmd->action();
+			return;
+		}
+	}
 }
 
 void
@@ -1643,56 +1643,56 @@
 void
 norm_mouse(Mouse m)
 {
-    int i, j;
-    if(m.buttons & 1){
+	int i, j;
+	if(m.buttons & 1){
 		j = boxat(m.xy);
 		if(j >= 0){
 			return;
 		} else {
 			i = addbox(m.xy);
-        	if(i >= 0){
-	            canvas.selected = i;
-	            canvas.needredraw = 1;
+			if(i >= 0){
+				canvas.selected = i;
+				canvas.needredraw = 1;
 			}
-        }
-    }
-    
+		}
+	}
+	
 	if(m.buttons & 2){ 
-        i = boxat(m.xy);
-        if(i >= 0){
-            canvas.selected = i;
-            int type = canvas.boxes.type[i];
-            int width = (type == T_BIGBOX) ? config.bigbox_width : config.box_width;
-            int height = (type == T_BIGBOX) ? config.bigbox_height : config.box_height;
-            canvas.boxes.selected[i] = 1;
-            
-            while(m.buttons & 2){
-                Point new_pos = subpt(m.xy, Pt(width/2, height/2));
-                if(canvas.gridsnap){
-                    new_pos.x = (new_pos.x / canvas.gridsize) * canvas.gridsize;
-                    new_pos.y = (new_pos.y / canvas.gridsize) * canvas.gridsize;
-                }
-                canvas.boxes.pos[i] = new_pos;
-                canvas.boxes.r[i] = Rect(new_pos.x, new_pos.y,
-                    new_pos.x + width, new_pos.y + height);
-                redraw();
-                m = emouse();
-            }
-            canvas.boxes.selected[i] = 0;
-            canvas.needredraw = 1;
-        }
-    }
-    
-    if(m.buttons & 4){ 
-        i = boxat(m.xy);
-        if(i >= 0){
-            delbox(i);
-            if(canvas.selected == i)
-                canvas.selected = -1;
-            canvas.needredraw = 1;
-        }
-    }
-}
+		i = boxat(m.xy);
+		if(i >= 0){
+			canvas.selected = i;
+			int type = canvas.boxes.type[i];
+			int width = (type == T_BIGBOX) ? config.bigbox_width : config.box_width;
+			int height = (type == T_BIGBOX) ? config.bigbox_height : config.box_height;
+			canvas.boxes.selected[i] = 1;
+			
+			while(m.buttons & 2){
+				Point new_pos = subpt(m.xy, Pt(width/2, height/2));
+				if(canvas.gridsnap){
+					new_pos.x = (new_pos.x / canvas.gridsize) * canvas.gridsize;
+					new_pos.y = (new_pos.y / canvas.gridsize) * canvas.gridsize;
+				}
+				canvas.boxes.pos[i] = new_pos;
+				canvas.boxes.r[i] = Rect(new_pos.x, new_pos.y,
+					new_pos.x + width, new_pos.y + height);
+				redraw();
+				m = emouse();
+			}
+			canvas.boxes.selected[i] = 0;
+			canvas.needredraw = 1;
+		}
+	}
+	
+	if(m.buttons & 4){ 
+		i = boxat(m.xy);
+		if(i >= 0){
+			delbox(i);
+			if(canvas.selected == i)
+				canvas.selected = -1;
+			canvas.needredraw = 1;
+		}
+	}
+}
 
 void
 fn_mouse(Mouse m)
@@ -1703,10 +1703,10 @@
 void
 ctl_addbox(char **args, int nargs)
 {
-    USED(nargs);  
-    Point p = Pt(atoi(args[0]), atoi(args[1]));
-    addbox(p);
-    canvas.needredraw = 1;
+	USED(nargs);  
+	Point p = Pt(atoi(args[0]), atoi(args[1]));
+	addbox(p);
+	canvas.needredraw = 1;
 }
 
 void
--