home *** CD-ROM | disk | FTP | other *** search
- /*
- * name: layerop
- *
- * description: given a layer lp, a rectangle within the layer r,
- * and a bitmap operator fn, recursively subdivide
- * the rectangle r into rectangles contained within
- * single bitmaps, and invokes the operator on the
- * rectangle/bitmap pairs.
- * also passed is a pointer to a set of parameters
- * for the bitmap operator otherargs.
- *
- * synopsis: layerop (lp, fn, r, p1, p2, p3, p4)
- * struct layer *lp;
- * int (*fn) ();
- * struct rectangle *r;
- * int *p1;
- * int *p2;
- * int *p3;
- * int *p4;
- *
- * globals: none.
- *
- * calls: rectxrect (rectxrect.c)
- * intersection (intersection.c)
- * rlayerop (rlayerop.c)
- *
- * called by: newlayer (newlayer.c)
- * lblt (lblt.c)
- * lbitblt (lbitblt.c)
- */
- #include "layers.h"
-
- layerop (lp, fn, r, p1, p2, p3, p4)
- struct layer *lp;
- int (*fn) (); /* pointer to bitmap operator */
- struct rectangle *r;
- int *p1; /* other arguments used by (*fn)() */
- int *p2;
- int *p3;
- int *p4;
- {
- intersection ();
-
- /*
- * clip to outer rectangle of layer, then call rlayerop()
- */
- if (rectxrect ( r, &(lp -> ly_rect))) {
- (void) intersection (r, &(lp -> ly_rect), r);
- (void) rlayerop (lp, fn, r, lp -> ly_obs, p1, p2, p3, p4);
- }
- }