aboutsummaryrefslogtreecommitdiffstats
path: root/gadgets
diff options
context:
space:
mode:
authorgotmor <gotmor@f2baff5b-bf2c-0410-a398-912abdc3d8b2>2008-01-01 16:52:03 +0000
committergotmor <gotmor@f2baff5b-bf2c-0410-a398-912abdc3d8b2>2008-01-01 16:52:03 +0000
commitc7c43d5aa76084ffc4a3ecd35a5f7121ea627185 (patch)
treee8061a2c05d1227877016f3ec05e8f11a5d36cf5 /gadgets
parent8796cce6b7ffa33609baea1c5d55c2bd984ae880 (diff)
downloaddzen-c7c43d5aa76084ffc4a3ecd35a5f7121ea627185.tar.gz
dzen-c7c43d5aa76084ffc4a3ecd35a5f7121ea627185.zip
improved vertical bar handling in case of '-ss 0'
git-svn-id: http://dzen.googlecode.com/svn/trunk@187 f2baff5b-bf2c-0410-a398-912abdc3d8b2
Diffstat (limited to 'gadgets')
-rw-r--r--gadgets/gdbar.c33
1 files changed, 22 insertions, 11 deletions
diff --git a/gadgets/gdbar.c b/gadgets/gdbar.c
index 80f2948..9ff213d 100644
--- a/gadgets/gdbar.c
+++ b/gadgets/gdbar.c
@@ -43,14 +43,14 @@ pbar(const char* label, double perc, int maxc, int height, int segw, int segh, i
double l;
- l = perc * ((mode ? (double)(maxc-2) : (double) maxc) / 100);
- if((int)(l + 0.5) >= (int)l)
- l += 0.5;
- if((int)(perc + 0.5) >= (int)perc)
- rp = (int)(perc + 0.5);
+ if(mode == vertical)
+ l = perc * ((double)height / 100);
else
- rp = (int)perc;
+ l = perc * ((mode == outlined ? (double)(maxc-2) : (double) maxc) / 100);
+
+ l=(int)(l + 0.5) >= (int)l ? l+0.5 : l;
+ rp=(int)(perc + 0.5) >= (int)perc ? (int)(perc + 0.5) : (int)perc;
if(mode == outlined)
printf("%s%3d%% ^ib(1)^fg(%s)^ro(%dx%d)^p(%d)^fg(%s)^r(%dx%d)^p(%d)^ib(0)^fg()%s",
@@ -62,13 +62,24 @@ pbar(const char* label, double perc, int maxc, int height, int segw, int segh, i
segs = height / (segh + segb);
segsa = rp * segs / 100;
+
printf("%s^ib(1)", label ? label : "");
- for(i=0; i < segs; i++) {
- if(i<segsa)
- printf("^fg(%s)^p(-%d)^r(%dx%d+%d-%d')", fg, i?segw:0, segw, segh, 0, (segh+segb)*(i+1));
- else
- printf("^fg(%s)^p(-%d)^r(%dx%d+%d-%d')", bg, i?segw:0, segw, segh, 0, (segh+segb)*(i+1));
+ /* in case of no spacing, we draw just 2 rectangles */
+ if(segb == 0) {
+ printf("^fg(%s)^r(%dx%d+%d-%d)^fg(%s)^p(-%d)^r(%dx%d+%d-%d)",
+ bg,
+ segw, height, 0, height+1,
+ fg, segw,
+ segw, (int)l, 0, (int)l+1
+ );
+ } else {
+ for(i=0; i < segs; i++) {
+ if(i<segsa)
+ printf("^fg(%s)^p(-%d)^r(%dx%d+%d-%d')", fg, i?segw:0, segw, segh, 0, (segh+segb)*(i+1));
+ else
+ printf("^fg(%s)^p(-%d)^r(%dx%d+%d-%d')", bg, i?segw:0, segw, segh, 0, (segh+segb)*(i+1));
+ }
}
printf("^ib(0)^fg()%s", pnl ? "\n" : "");
}