|
|
1.1 root 1: /*
2: * Move a layer to the front of the screen
3: */
4: #include <jerq.h>
5: #include "layer.h"
6:
7: Layer *lfront, *lback;
8:
9: static void
10: Lupfront(l, r, b, f, o)
11: Layer *l, *o;
12: Rectangle r;
13: Bitmap *b;
14: char *f;
15: {
16: if (o != l) {
17: o->someobs = 1;
18: bitblt(o, r, o->obs, r.origin, F_STORE);
19: bitblt(l->obs, r, l, r.origin, F_STORE);
20: }
21: }
22:
23: upfront(lp)
24: register Layer *lp;
25: {
26: if (!lp)
27: return;
28: if (!lp->front) {
29: lp->someobs = lp->nonevis = 0;
30: return;
31: }
32: cursinhibit();
33: /*
34: * Move bits of lp to front
35: */
36: lp->nonevis = 0; /* can't shortcut to whole obscured */
37: if (lp->someobs)
38: layerop(lp, Lupfront, lp->rect);
39: /*
40: * Put lp at front
41: */
42: if(lfront!=lp){
43: if(lback==lp)
44: lback=lp->front;
45: if(lp->back)
46: lp->back->front=lp->front;
47: lp->front->back=lp->back;
48: lfront->front=lp;
49: lp->back=lfront;
50: lp->front=0;
51: lfront=lp;
52: }
53: /*
54: * lp is now at the front, so update nonevis for all layers.
55: * if lp was fully visible before, we can't have changed it, so
56: * don't bother.
57: */
58: if (lp->someobs)
59: setvis();
60: lp->someobs = 0;
61: cursallow();
62: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.