diff options
author | gotmor <gotmor@f2baff5b-bf2c-0410-a398-912abdc3d8b2> | 2008-07-20 09:35:35 +0000 |
---|---|---|
committer | gotmor <gotmor@f2baff5b-bf2c-0410-a398-912abdc3d8b2> | 2008-07-20 09:35:35 +0000 |
commit | b4dcac06dbbcbc2e0f6120c8237f8dadb6702a14 (patch) | |
tree | ec2c65ecb89f76cd27c6ea1ffdd9bb5beab3cd63 | |
parent | 5af455b173d217f77f0b04d11048ac32678a1ee9 (diff) | |
download | dzen-b4dcac06dbbcbc2e0f6120c8237f8dadb6702a14.tar.gz dzen-b4dcac06dbbcbc2e0f6120c8237f8dadb6702a14.zip |
refactored get_rect_vals() and get_circle_vals()
git-svn-id: http://dzen.googlecode.com/svn/trunk@227 f2baff5b-bf2c-0410-a398-912abdc3d8b2
-rw-r--r-- | draw.c | 59 |
1 files changed, 10 insertions, 49 deletions
@@ -190,60 +190,19 @@ setcolor(Drawable *pm, int x, int width, long tfg, long tbg, int reverse, int no } -static void +static int get_rect_vals(char *s, int *w, int *h, int *x, int *y) { - int i, j; - char buf[ARGLEN]; - *w=*h=*x=*y=0; - - - for(i=0; s[i] && s[i] != 'x' && i<ARGLEN; i++) { - buf[i] = s[i]; - } - buf[i] = '\0'; - *w = atoi(buf); - - - for(j=0, ++i; s[i] && s[i] != '+' && s[i] != '-' && i<ARGLEN; j++, i++) - buf[j] = s[i]; - buf[j] = '\0'; - *h = atoi(buf); - - if(s[i]) { - j=0; - buf[j] = s[i]; ++j; - for(++i; s[i] && s[i] != '+' && s[i] != '-' && j<ARGLEN; j++, i++) { - buf[j] = s[i]; - } - buf[j] = '\0'; - *x = atoi(buf); - if(s[i]) { - *y = atoi(s+i); - } - } + return sscanf(s, "%5dx%5d%5d%5d", w, h, x, y); } static int get_circle_vals(char *s, int *d, int *a) { int i, ret; - char buf[128]; *d=*a=ret=0; - for(i=0; s[i] && i<128; i++) { - if(s[i] == '+' || s[i] == '-') { - ret=1; - break; - } else - buf[i]=s[i]; - } - - buf[i+1]='\0'; - *d=atoi(buf); - *a=atoi(s+i); - - return ret; + return sscanf(s, "%5d%5d", d, a); } static int @@ -535,22 +494,23 @@ parse_line(const char *line, int lnr, int align, int reverse, int nodraw) { rectx = get_circle_vals(tval, &rectw, &recth); setcolor(&pm, px, rectw, lastfg, lastbg, reverse, nobg); XFillArc(dzen.dpy, pm, dzen.tgc, px, set_posy ? py :(dzen.line_height - rectw)/2, - rectw, rectw, 90*64, rectx?recth*64:64*360); + rectw, rectw, 90*64, rectx>1?recth*64:64*360); px += !pos_is_fixed ? rectw : 0; break; case circleo: rectx = get_circle_vals(tval, &rectw, &recth); + printf("t: %s -- w: %d h: %d\n", tval, rectw, recth); setcolor(&pm, px, rectw, lastfg, lastbg, reverse, nobg); XDrawArc(dzen.dpy, pm, dzen.tgc, px, set_posy ? py : (dzen.line_height - rectw)/2, - rectw, rectw, 90*64, rectx?recth*64:64*360); + rectw, rectw, 90*64, rectx>1?recth*64:64*360); px += !pos_is_fixed ? rectw : 0; break; case pos: if(tval[0]) { int r=0; - r = get_pos_vals(tval, &n_posx, &n_posy); + r = get_pos_vals(tval, &n_posx, &n_posy); if( (r == 1 && !set_posy)) set_posy=0; else if (r == 5) { @@ -775,15 +735,16 @@ parse_line(const char *line, int lnr, int align, int reverse, int nodraw) { rectx = get_circle_vals(tval, &rectw, &recth); setcolor(&pm, px, rectw, lastfg, lastbg, reverse, nobg); XFillArc(dzen.dpy, pm, dzen.tgc, px, set_posy ? py :(dzen.line_height - rectw)/2, - rectw, rectw, 90*64, rectx?recth*64:64*360); + rectw, rectw, 90*64, rectx>1?recth*64:64*360); px += !pos_is_fixed ? rectw : 0; break; case circleo: rectx = get_circle_vals(tval, &rectw, &recth); + printf("t: %s -- w: %d h: %d\n", tval, rectw, recth); setcolor(&pm, px, rectw, lastfg, lastbg, reverse, nobg); XDrawArc(dzen.dpy, pm, dzen.tgc, px, set_posy ? py : (dzen.line_height - rectw)/2, - rectw, rectw, 90*64, rectx?recth*64:64*360); + rectw, rectw, 90*64, rectx>1?recth*64:64*360); px += !pos_is_fixed ? rectw : 0; break; |