|
|
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.