|
|
1.1 root 1: #include <jerq.h>
2: #include "layer.h"
3:
4: extern int blitdir;
5:
6: static Point delta;
7:
8: extern bitblt(), lblt();
9:
10: static void
11: srcop(sl, r, sb, fp, op)
12: Layer *sl;
13: Rectangle r;
14: Bitmap *sb;
15: register struct {
16: Bitmap *db;
17: Code code;
18: } *fp;
19: Obscured *op;
20: {
21: bitblt(sb, r, fp->db, add(r.origin, delta), fp->code);
22: }
23:
24: static void
25: destop(dl, r, db, fp, op)
26: Layer *dl;
27: Rectangle r;
28: Bitmap *db;
29: register struct {
30: Layer *sl;
31: Code code;
32: Point delta;
33: } *fp;
34: Obscured *op;
35: {
36: layerop(fp->sl, srcop, rsubp(r, delta), db, fp->code);
37: }
38:
39: void
40: lbitblt(sl, rect, dl, pt, f)
41: Layer *sl, *dl;
42: Rectangle rect;
43: Point pt;
44: Code f;
45: {
46: delta = sub(pt, rect.origin);
47: blitdir = ( (delta.x <= 0)? 0 : 1 ) + ( (delta.y <= 0)? 0 : 2 );
48: /*
49: check for degenerate cases
50: */
51: if(sl->someobs == sl->nonevis){
52: (*((dl->someobs != dl->nonevis)? lblt:bitblt))
53: (sl->nonevis?sl->obs:(Bitmap *)sl, rect,
54: dl->nonevis?dl->obs:(Bitmap *)dl, pt, f);
55: return;
56: }
57:
58: layerop(dl, destop, raddp(rect, delta), sl, f);
59: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.