| #ifndef SRAREGION_H |
| #define SRAREGION_H |
| |
| /* -=- SRA - Simple Region Algorithm |
| * A simple rectangular region implementation. |
| * Copyright (c) 2001 James "Wez" Weatherall, Johannes E. Schindelin |
| */ |
| |
| /* -=- sraRect */ |
| |
| typedef struct _rect { |
| int x1; |
| int y1; |
| int x2; |
| int y2; |
| } sraRect; |
| |
| typedef struct sraRegion sraRegion; |
| |
| /* -=- Region manipulation functions */ |
| |
| extern sraRegion *sraRgnCreate(); |
| extern sraRegion *sraRgnCreateRect(int x1, int y1, int x2, int y2); |
| extern sraRegion *sraRgnCreateRgn(const sraRegion *src); |
| |
| extern void sraRgnDestroy(sraRegion *rgn); |
| extern void sraRgnMakeEmpty(sraRegion *rgn); |
| extern rfbBool sraRgnAnd(sraRegion *dst, const sraRegion *src); |
| extern void sraRgnOr(sraRegion *dst, const sraRegion *src); |
| extern rfbBool sraRgnSubtract(sraRegion *dst, const sraRegion *src); |
| |
| extern void sraRgnOffset(sraRegion *dst, int dx, int dy); |
| |
| extern rfbBool sraRgnPopRect(sraRegion *region, sraRect *rect, |
| unsigned long flags); |
| |
| extern unsigned long sraRgnCountRects(const sraRegion *rgn); |
| extern rfbBool sraRgnEmpty(const sraRegion *rgn); |
| |
| extern sraRegion *sraRgnBBox(const sraRegion *src); |
| |
| /* -=- rectangle iterator */ |
| |
| typedef struct sraRectangleIterator { |
| rfbBool reverseX,reverseY; |
| int ptrSize,ptrPos; |
| struct sraSpan** sPtrs; |
| } sraRectangleIterator; |
| |
| extern sraRectangleIterator *sraRgnGetIterator(sraRegion *s); |
| extern sraRectangleIterator *sraRgnGetReverseIterator(sraRegion *s,rfbBool reverseX,rfbBool reverseY); |
| extern rfbBool sraRgnIteratorNext(sraRectangleIterator *i,sraRect *r); |
| extern void sraRgnReleaseIterator(sraRectangleIterator *i); |
| |
| void sraRgnPrint(const sraRegion *s); |
| |
| /* -=- Rectangle clipper (for speed) */ |
| |
| extern rfbBool sraClipRect(int *x, int *y, int *w, int *h, |
| int cx, int cy, int cw, int ch); |
| |
| extern rfbBool sraClipRect2(int *x, int *y, int *x2, int *y2, |
| int cx, int cy, int cx2, int cy2); |
| |
| #endif |