commit
a047e3721c
2 changed files with 75 additions and 2 deletions
@ -0,0 +1,66 @@ |
||||
void |
||||
fibonacci(Monitor *mon, int s) { |
||||
unsigned int i, n, nx, ny, nw, nh; |
||||
Client *c; |
||||
|
||||
for(n = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next), n++); |
||||
if(n == 0) |
||||
return; |
||||
|
||||
nx = mon->wx; |
||||
ny = 0; |
||||
nw = mon->ww; |
||||
nh = mon->wh; |
||||
|
||||
for(i = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next)) { |
||||
if((i % 2 && nh / 2 > 2 * c->bw) |
||||
|| (!(i % 2) && nw / 2 > 2 * c->bw)) { |
||||
if(i < n - 1) { |
||||
if(i % 2) |
||||
nh /= 2; |
||||
else |
||||
nw /= 2; |
||||
if((i % 4) == 2 && !s) |
||||
nx += nw; |
||||
else if((i % 4) == 3 && !s) |
||||
ny += nh; |
||||
} |
||||
if((i % 4) == 0) { |
||||
if(s) |
||||
ny += nh; |
||||
else |
||||
ny -= nh; |
||||
} |
||||
else if((i % 4) == 1) |
||||
nx += nw; |
||||
else if((i % 4) == 2) |
||||
ny += nh; |
||||
else if((i % 4) == 3) { |
||||
if(s) |
||||
nx += nw; |
||||
else |
||||
nx -= nw; |
||||
} |
||||
if(i == 0) |
||||
{ |
||||
if(n != 1) |
||||
nw = mon->ww * mon->mfact; |
||||
ny = mon->wy; |
||||
} |
||||
else if(i == 1) |
||||
nw = mon->ww - nw; |
||||
i++; |
||||
} |
||||
resize(c, nx, ny, nw - 2 * c->bw, nh - 2 * c->bw, False); |
||||
} |
||||
} |
||||
|
||||
void |
||||
dwindle(Monitor *mon) { |
||||
fibonacci(mon, 1); |
||||
} |
||||
|
||||
void |
||||
spiral(Monitor *mon) { |
||||
fibonacci(mon, 0); |
||||
} |
Loading…
Reference in new issue