You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.8 KiB
65 lines
1.8 KiB
#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
|
|
|