|
|
1.1 root 1: #include <u.h>
2: #include <libc.h>
3: #include <libg.h>
4: #include <gnot.h>
5:
6: void
7: gbitbltclip(void *vp)
8: {
9: int dx, dy;
10: int i;
11: struct{
12: GBitmap *dm;
13: Point p;
14: GBitmap *sm;
15: Rectangle r;
16: Fcode f;
17: }*bp;
18:
19: bp = vp;
20: dx = Dx(bp->r);
21: dy = Dy(bp->r);
22: if(bp->p.x < bp->dm->clipr.min.x){
23: i = bp->dm->clipr.min.x-bp->p.x;
24: bp->r.min.x += i;
25: bp->p.x += i;
26: dx -= i;
27: }
28: if(bp->p.y < bp->dm->clipr.min.y){
29: i = bp->dm->clipr.min.y-bp->p.y;
30: bp->r.min.y += i;
31: bp->p.y += i;
32: dy -= i;
33: }
34: if(bp->p.x+dx > bp->dm->clipr.max.x)
35: bp->r.max.x -= bp->p.x+dx-bp->dm->clipr.max.x;
36: if(bp->p.y+dy > bp->dm->clipr.max.y)
37: bp->r.max.y -= bp->p.y+dy-bp->dm->clipr.max.y;
38: if(bp->r.min.x < bp->sm->clipr.min.x){
39: i = bp->sm->clipr.min.x-bp->r.min.x;
40: bp->p.x += i;
41: bp->r.min.x += i;
42: }
43: if(bp->r.min.y < bp->sm->clipr.min.y){
44: i = bp->sm->clipr.min.y-bp->r.min.y;
45: bp->p.y += i;
46: bp->r.min.y += i;
47: }
48: if(bp->r.max.x > bp->sm->clipr.max.x)
49: bp->r.max.x = bp->sm->clipr.max.x;
50: if(bp->r.max.y > bp->sm->clipr.max.y)
51: bp->r.max.y = bp->sm->clipr.max.y;
52: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.