12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- 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);
- }
|