diff options
Diffstat (limited to 'props.c')
-rw-r--r-- | props.c | 94 |
1 files changed, 85 insertions, 9 deletions
@@ -22,34 +22,89 @@ allspace(char *r) } PropVal -defbackground(void) +defcolour(int gtag, int ptag) { PropVal v; - v.colour = mkcolour(DWhite); + ulong col = DTransparent; + + switch(ptag){ + case Pbackground: + switch(gtag){ + case Gcontainer: + col = DWhite; + break; + case Gtextbox: + col = 0xFFFFEAFF; + break; + } + break; + case Pbordercolour: + switch(gtag){ + case Gtextbox: + col = DYellowgreen; + break; + default: + col = DRed; + break; + } + break; + case Ptextcolour: + col = DBlack; + break; + } + + v.colour = mkcolour(col); return v; } PropVal -defspacing(void) +defspacing(int gtag, int ptag) { PropVal v; v.spacing = emalloc(sizeof(Spacing)); + + int space = 0; + + switch(ptag){ + case Pborder: + switch(gtag){ + case Gtextbox: + space = 4; + break; + } + break; + case Ppadding: + switch(gtag){ + case Gtextbox: + space = 2; + break; + } + break; + } + v.spacing->up = v.spacing->down = v.spacing->left = v.spacing->right = space; return v; } PropVal -deforientation(void) +deforientation(int gtag, int ptag) { + USED(gtag); + USED(ptag); + PropVal v; v.orientation = Horizontal; return v; } PropVal -defbordercolour(void) +deftext(int gtag, int ptag) { + USED(gtag); + USED(ptag); + PropVal v; - v.colour = mkcolour(DRed); + v.text = emalloc(sizeof(Rune)); + v.text[0] = 0; return v; } @@ -90,6 +145,15 @@ printorientation(PropVal p) } char * +printtext(PropVal p) +{ + char *str = smprint("%S", p.text); + if(str == nil) + sysfatal("smprint failed"); + return str; +} + +char * parsecolour(char *str, PropVal *p) { char *r; @@ -151,6 +215,16 @@ parseorientation(char *str, PropVal *p) return nil; } +char * +parsetext(char *str, PropVal *p) +{ + Rune *rstr = runesmprint("%s", str); + if(rstr == nil) + sysfatal("runesmprint failed"); + (*p).text = rstr; + return nil; +} + PropVal getprop(GuiElement *g, int tag) { @@ -180,12 +254,14 @@ setprop(GuiElement *g, int tag, PropVal val) } PropSpec propspecs[Pmax] = { - [Pbackground] = {"background", defbackground, printcolour, parsecolour}, + [Pbackground] = {"background", defcolour, printcolour, parsecolour}, [Pborder] = {"border", defspacing, printspacing, parsespacing}, [Pmargin] = {"margin", defspacing, printspacing, parsespacing}, [Ppadding] = {"padding", defspacing, printspacing, parsespacing}, [Porientation] = {"orientation", deforientation, printorientation, parseorientation}, - [Pbordercolour] = {"bordercolour", defbordercolour, printcolour, parsecolour}, + [Pbordercolour] = {"bordercolour", defcolour, printcolour, parsecolour}, + [Ptext] = {"text", deftext, printtext, parsetext}, + [Ptextcolour] = {"textcolour", defcolour, printcolour, parsecolour}, }; -int baseprops[nbaseprops] = {Pborder, Pmargin, Ppadding, Pbordercolour};
\ No newline at end of file +int baseprops[nbaseprops] = {Pbackground, Pborder, Pmargin, Ppadding, Pbordercolour};
\ No newline at end of file |