diff -u /sys/src/cmd/acme/acme.c acme/acme.c--- /sys/src/cmd/acme/acme.c Sun Oct 21 04:51:43 2018+++ acme/acme.c Sun Oct 28 22:47:07 2018@@ -8,6 +8,7 @@ #include <frame.h> #include <fcall.h> #include <plumb.h>+#include <theme.h> #include "dat.h" #include "fns.h" /* for generating syms in mkfile only: */@@ -226,6 +227,7 @@ } } flushimage(display, 1);+ themeend(); acmeerrorinit(); threadcreate(keyboardthread, nil, STACK);@@ -865,19 +867,21 @@ Rectangle r; Image *tmp; + themeinit("acme");+ /* Blue */- tagcols[BACK] = allocimagemix(display, DPalebluegreen, DWhite);- tagcols[HIGH] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, DPalegreygreen);- tagcols[BORD] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, DPurpleblue);- tagcols[TEXT] = display->black;- tagcols[HTEXT] = display->black;+ tagcols[BACK] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("cmdback", 0xFFFFD4FF));+ tagcols[HIGH] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("cmdhigh", DPalegreygreen));+ tagcols[BORD] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("cmdbord", DPurpleblue));+ tagcols[TEXT] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("cmdtext", DBlack));+ tagcols[HTEXT] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("cmdhtext", DBlack)); /* Yellow */- textcols[BACK] = allocimagemix(display, DPaleyellow, DWhite);- textcols[HIGH] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, DDarkyellow);- textcols[BORD] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, DYellowgreen);- textcols[TEXT] = display->black;- textcols[HTEXT] = display->black;+ textcols[BACK] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("mainback", 0xFFFFD4FF));+ textcols[HIGH] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("mainhigh", DDarkyellow));+ textcols[BORD] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("mainbord", DYellowgreen));+ textcols[TEXT] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("maintext", DBlack));+ textcols[HTEXT] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("mainhtext", DBlack)); if(button){ freeimage(button);diff -u /sys/src/cmd/acme/cols.c acme/cols.c--- /sys/src/cmd/acme/cols.c Sun Oct 21 04:51:43 2018+++ acme/cols.c Sun Oct 28 22:57:43 2018@@ -8,16 +8,23 @@ #include <frame.h> #include <fcall.h> #include <plumb.h>+#include <theme.h> #include "dat.h" #include "fns.h" +Image *background;+ void colinit(Column *c, Rectangle r) { Rectangle r1; Text *t; - draw(screen, r, display->white, nil, ZP);+ if(background == nil){+ background = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("background", DBlack));+ }++ draw(screen, r, background, nil, ZP); c->r = r; c->w = nil; c->nw = 0;@@ -134,7 +141,7 @@ c->nw--; c->w = realloc(c->w, c->nw*sizeof(Window*)); if(c->nw == 0){- draw(screen, r, display->white, nil, ZP);+ draw(screen, r, background, nil, ZP); return; } if(i == c->nw){ /* extend last window down */@@ -183,6 +190,7 @@ Window *w; clearmouse();+ draw(screen, r, background, nil, ZP); r1 = r; r1.max.y = r1.min.y + c->tag.font->height; textresize(&c->tag, r1);diff -u /sys/src/cmd/acme/mkfile acme/mkfile--- /sys/src/cmd/acme/mkfile Sun Oct 21 04:51:43 2018+++ acme/mkfile Sun Oct 28 22:47:07 2018@@ -36,7 +36,7 @@ </sys/src/cmd/mkone -$O.out: /$objtype/lib/libframe.a /$objtype/lib/libdraw.a /$objtype/lib/libthread.a+$O.out: /$objtype/lib/libframe.a /$objtype/lib/libdraw.a /$objtype/lib/libthread.a /$objtype/lib/libtheme.a edit.$O ecmd.$O elog.$O: edit.h diff -u /sys/src/cmd/acme/rows.c acme/rows.c--- /sys/src/cmd/acme/rows.c Sun Oct 21 04:51:43 2018+++ acme/rows.c Sun Oct 28 22:47:07 2018@@ -9,16 +9,23 @@ #include <fcall.h> #include <bio.h> #include <plumb.h>+#include <theme.h> #include "dat.h" #include "fns.h" +Image *background;+ void rowinit(Row *row, Rectangle r) { Rectangle r1; Text *t; - draw(screen, r, display->white, nil, ZP);+ if(background == nil){+ background = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("background", DBlack));+ }++ draw(screen, r, background, nil, ZP); row->r = r; row->col = nil; row->ncol = 0;@@ -63,7 +70,7 @@ r = d->r; if(Dx(r) < 100) return nil;- draw(screen, r, display->white, nil, ZP);+ draw(screen, r, background, nil, ZP); r1 = r; r1.max.x = min(x, r.max.x-50); if(Dx(r1) < 50)@@ -178,7 +185,7 @@ p.x = c->r.max.x-80-Scrollwid; r = d->r; r.max.x = c->r.max.x;- draw(screen, r, display->white, nil, ZP);+ draw(screen, r, background, nil, ZP); r.max.x = p.x; colresize(d, r); r = c->r;@@ -210,7 +217,7 @@ row->ncol--; row->col = realloc(row->col, row->ncol*sizeof(Column*)); if(row->ncol == 0){- draw(screen, r, display->white, nil, ZP);+ draw(screen, r, background, nil, ZP); return; } if(i == row->ncol){ /* extend last column right */
diff -u /sys/src/cmd/acme/acme.c acme/acme.c
--- /sys/src/cmd/acme/acme.c Sun Oct 21 04:51:43 2018
+++ acme/acme.c Sun Oct 28 22:47:07 2018
@@ -8,6 +8,7 @@
#include <frame.h>
#include <fcall.h>
#include <plumb.h>
+#include <theme.h>
#include "dat.h"
#include "fns.h"
/* for generating syms in mkfile only: */
@@ -226,6 +227,7 @@
}
}
flushimage(display, 1);
+ themeend();
acmeerrorinit();
threadcreate(keyboardthread, nil, STACK);
@@ -865,19 +867,21 @@
Rectangle r;
Image *tmp;
+ themeinit("acme");
+
/* Blue */
- tagcols[BACK] = allocimagemix(display, DPalebluegreen, DWhite);
- tagcols[HIGH] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, DPalegreygreen);
- tagcols[BORD] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, DPurpleblue);
- tagcols[TEXT] = display->black;
- tagcols[HTEXT] = display->black;
+ tagcols[BACK] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("cmdback", 0xFFFFD4FF));
+ tagcols[HIGH] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("cmdhigh", DPalegreygreen));
+ tagcols[BORD] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("cmdbord", DPurpleblue));
+ tagcols[TEXT] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("cmdtext", DBlack));
+ tagcols[HTEXT] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("cmdhtext", DBlack));
/* Yellow */
- textcols[BACK] = allocimagemix(display, DPaleyellow, DWhite);
- textcols[HIGH] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, DDarkyellow);
- textcols[BORD] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, DYellowgreen);
- textcols[TEXT] = display->black;
- textcols[HTEXT] = display->black;
+ textcols[BACK] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("mainback", 0xFFFFD4FF));
+ textcols[HIGH] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("mainhigh", DDarkyellow));
+ textcols[BORD] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("mainbord", DYellowgreen));
+ textcols[TEXT] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("maintext", DBlack));
+ textcols[HTEXT] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("mainhtext", DBlack));
if(button){
freeimage(button);
diff -u /sys/src/cmd/acme/cols.c acme/cols.c
--- /sys/src/cmd/acme/cols.c Sun Oct 21 04:51:43 2018
+++ acme/cols.c Sun Oct 28 22:57:43 2018
@@ -8,16 +8,23 @@
#include <frame.h>
#include <fcall.h>
#include <plumb.h>
+#include <theme.h>
#include "dat.h"
#include "fns.h"
+Image *background;
+
void
colinit(Column *c, Rectangle r)
{
Rectangle r1;
Text *t;
- draw(screen, r, display->white, nil, ZP);
+ if(background == nil){
+ background = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("background", DBlack));
+ }
+
+ draw(screen, r, background, nil, ZP);
c->r = r;
c->w = nil;
c->nw = 0;
@@ -134,7 +141,7 @@
c->nw--;
c->w = realloc(c->w, c->nw*sizeof(Window*));
if(c->nw == 0){
- draw(screen, r, display->white, nil, ZP);
+ draw(screen, r, background, nil, ZP);
return;
}
if(i == c->nw){ /* extend last window down */
@@ -183,6 +190,7 @@
Window *w;
clearmouse();
+ draw(screen, r, background, nil, ZP);
r1 = r;
r1.max.y = r1.min.y + c->tag.font->height;
textresize(&c->tag, r1);
diff -u /sys/src/cmd/acme/mkfile acme/mkfile
--- /sys/src/cmd/acme/mkfile Sun Oct 21 04:51:43 2018
+++ acme/mkfile Sun Oct 28 22:47:07 2018
@@ -36,7 +36,7 @@
</sys/src/cmd/mkone
-$O.out: /$objtype/lib/libframe.a /$objtype/lib/libdraw.a /$objtype/lib/libthread.a
+$O.out: /$objtype/lib/libframe.a /$objtype/lib/libdraw.a /$objtype/lib/libthread.a /$objtype/lib/libtheme.a
edit.$O ecmd.$O elog.$O: edit.h
diff -u /sys/src/cmd/acme/rows.c acme/rows.c
--- /sys/src/cmd/acme/rows.c Sun Oct 21 04:51:43 2018
+++ acme/rows.c Sun Oct 28 22:47:07 2018
@@ -9,16 +9,23 @@
#include <fcall.h>
#include <bio.h>
#include <plumb.h>
+#include <theme.h>
#include "dat.h"
#include "fns.h"
+Image *background;
+
void
rowinit(Row *row, Rectangle r)
{
Rectangle r1;
Text *t;
- draw(screen, r, display->white, nil, ZP);
+ if(background == nil){
+ background = allocimage(display, Rect(0,0,1,1), screen->chan, 1, themeget("background", DBlack));
+ }
+
+ draw(screen, r, background, nil, ZP);
row->r = r;
row->col = nil;
row->ncol = 0;
@@ -63,7 +70,7 @@
r = d->r;
if(Dx(r) < 100)
return nil;
- draw(screen, r, display->white, nil, ZP);
+ draw(screen, r, background, nil, ZP);
r1 = r;
r1.max.x = min(x, r.max.x-50);
if(Dx(r1) < 50)
@@ -178,7 +185,7 @@
p.x = c->r.max.x-80-Scrollwid;
r = d->r;
r.max.x = c->r.max.x;
- draw(screen, r, display->white, nil, ZP);
+ draw(screen, r, background, nil, ZP);
r.max.x = p.x;
colresize(d, r);
r = c->r;
@@ -210,7 +217,7 @@
row->ncol--;
row->col = realloc(row->col, row->ncol*sizeof(Column*));
if(row->ncol == 0){
- draw(screen, r, display->white, nil, ZP);
+ draw(screen, r, background, nil, ZP);
return;
}
if(i == row->ncol){ /* extend last column right */