From 291c242beb335520bd669a1f43dc3d11363a9624 Mon Sep 17 00:00:00 2001 From: gotmor Date: Sat, 19 Jan 2008 19:31:53 +0000 Subject: reset set_posy only if requested git-svn-id: http://dzen.googlecode.com/svn/trunk@208 f2baff5b-bf2c-0410-a398-912abdc3d8b2 --- draw.c | 51 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 19 deletions(-) (limited to 'draw.c') diff --git a/draw.c b/draw.c index babbef0..b93ffa4 100644 --- a/draw.c +++ b/draw.c @@ -459,7 +459,7 @@ parse_line(const char *line, int lnr, int align, int reverse, int nodraw) { (dzen.line_height - recth)/2 + recty; px = rectx == 0 ? px : rectx+px; setcolor(pm, px, rectw, lastfg, lastbg, reverse, nobg); - /*printf("R2: px=%d py=%d rectw=%d recth=%d\n", px, + /*printf("R1: setpy=%d px=%d py=%d rectw=%d recth=%d\n", set_posy, px, set_posy ? py : ((int)recty<0 ? dzen.line_height + recty : recty), rectw, recth); */ @@ -508,13 +508,16 @@ parse_line(const char *line, int lnr, int align, int reverse, int nodraw) { case pos: if(tval[0]) { - set_posy = get_pos_vals(tval, &n_posx, &n_posy); + int r=0; + if( (r=get_pos_vals(tval, &n_posx, &n_posy)) == 1 && !set_posy) + set_posy=0; + else + set_posy=1; - if(set_posy != 2) + if(r != 2) px = px+n_posx<0? 0 : px + n_posx; - if(set_posy != 1) + if(r != 1) py += n_posy; - set_posy = set_posy == 3 || set_posy == 2 ? 1 : 0; } else { set_posy = 0; py = (dzen.line_height - dzen.font.height) / 2; @@ -523,13 +526,17 @@ parse_line(const char *line, int lnr, int align, int reverse, int nodraw) { case abspos: if(tval[0]) { - set_posy = get_pos_vals(tval, &n_posx, &n_posy); + int r=0; + if( (r=get_pos_vals(tval, &n_posx, &n_posy)) == 1 && !set_posy) + set_posy=0; + else + set_posy=1; + n_posx = n_posx < 0 ? n_posx*-1 : n_posx; - if(set_posy != 2) + if(r != 2) px = n_posx; - if(set_posy != 1) + if(r != 1) py = n_posy; - set_posy = set_posy == 3 || set_posy == 2 ? 1 : 0; } else { set_posy = 0; py = (dzen.line_height - dzen.font.height) / 2; @@ -664,7 +671,7 @@ parse_line(const char *line, int lnr, int align, int reverse, int nodraw) { (dzen.line_height - recth)/2 + recty; px = (rectx == 0) ? px : rectx+px; setcolor(pm, px, rectw, lastfg, lastbg, reverse, nobg); - /*printf("R2: px=%d py=%d rectw=%d recth=%d\n", px, + /*printf("R2: setpy=%d px=%d py=%d rectw=%d recth=%d\n", set_posy, px, set_posy ? py : ((int)recty<0 ? dzen.line_height + recty : recty), rectw, recth); */ @@ -712,13 +719,16 @@ parse_line(const char *line, int lnr, int align, int reverse, int nodraw) { case pos: if(tval[0]) { - set_posy = get_pos_vals(tval, &n_posx, &n_posy); + int r=0; + if( (r=get_pos_vals(tval, &n_posx, &n_posy)) == 1 && !set_posy) + set_posy=0; + else + set_posy=1; - if(set_posy != 2) + if(r != 2) px = px+n_posx<0? 0 : px + n_posx; - if(set_posy != 1) + if(r != 1) py += n_posy; - set_posy = set_posy == 3 || set_posy == 2 ? 1 : 0; } else { set_posy = 0; py = (dzen.line_height - dzen.font.height) / 2; @@ -727,18 +737,21 @@ parse_line(const char *line, int lnr, int align, int reverse, int nodraw) { case abspos: if(tval[0]) { - set_posy = get_pos_vals(tval, &n_posx, &n_posy); + int r=0; + if( (r=get_pos_vals(tval, &n_posx, &n_posy)) == 1 && !set_posy) + set_posy=0; + else + set_posy=1; + n_posx = n_posx < 0 ? n_posx*-1 : n_posx; - if(set_posy != 2) + if(r != 2) px = n_posx; - if(set_posy != 1) + if(r != 1) py = n_posy; - set_posy = set_posy == 3 || set_posy == 2 ? 1 : 0; } else { set_posy = 0; py = (dzen.line_height - dzen.font.height) / 2; } - break; case ibg: -- cgit v1.2.3-54-g00ecf