|
|
- #if CFACTS_PATCH
- void
- getfacts(Monitor *m, int msize, int ssize, float *mf, float *sf, int *mr, int *sr)
- {
- unsigned int n;
- float mfacts = 0, sfacts = 0;
- int mtotal = 0, stotal = 0;
- Client *c;
-
- for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++)
- if (n < m->nmaster)
- mfacts += c->cfact;
- else
- sfacts += c->cfact;
-
- for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++)
- if (n < m->nmaster)
- mtotal += msize * (c->cfact / mfacts);
- else
- stotal += ssize * (c->cfact / sfacts);
-
- *mf = mfacts; // total factor of master area
- *sf = sfacts; // total factor of stack area
- *mr = msize - mtotal; // the remainder (rest) of pixels after a cfacts master split
- *sr = ssize - stotal; // the remainder (rest) of pixels after a cfacts stack split
- }
- #else
- void
- getfacts(Monitor *m, int msize, int ssize, float *mf, float *sf, int *mr, int *sr)
- {
- unsigned int n;
- float mfacts, sfacts;
- int mtotal = 0, stotal = 0;
- Client *c;
-
- for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++);
- mfacts = MIN(n, m->nmaster);
- sfacts = n - m->nmaster;
-
- for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++)
- if (n < m->nmaster)
- mtotal += msize / mfacts;
- else
- stotal += ssize / sfacts;
-
- *mf = mfacts; // total factor of master area
- *sf = sfacts; // total factor of stack area
- *mr = msize - mtotal; // the remainder (rest) of pixels after an even master split
- *sr = ssize - stotal; // the remainder (rest) of pixels after an even stack split
- }
- #endif // CFACTS_PATCH
|