diff options
author | dscho <dscho> | 2003-07-28 00:57:52 +0000 |
---|---|---|
committer | dscho <dscho> | 2003-07-28 00:57:52 +0000 |
commit | 9f0a1a3bc16d26420c703c6e6cc0f18bd4f6b81e (patch) | |
tree | 0aa185de6ff17df411ce24001954435a524a970e /rfbregion.c | |
parent | b9ebdab1f255316ccb9160daa0976d57adfe2675 (diff) | |
download | libtdevnc-9f0a1a3bc16d26420c703c6e6cc0f18bd4f6b81e.tar.gz libtdevnc-9f0a1a3bc16d26420c703c6e6cc0f18bd4f6b81e.zip |
synced with TightVNC and RealVNC
Diffstat (limited to 'rfbregion.c')
-rwxr-xr-x | rfbregion.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/rfbregion.c b/rfbregion.c index 59b76c5..d3e241a 100755 --- a/rfbregion.c +++ b/rfbregion.c @@ -582,6 +582,39 @@ sraRgnOffset(sraRegion *dst, int dx, int dy) { } } +sraRegion *sraRgnBBox(const sraRegion *src) { + int xmin=((unsigned int)(int)-1)>>1,ymin=xmin,xmax=1-xmin,ymax=xmax; + sraSpan *vcurr, *hcurr; + + if(!src) + return sraRgnCreate(); + + vcurr = ((sraSpanList*)src)->front._next; + while (vcurr != &(((sraSpanList*)src)->back)) { + if(vcurr->start<ymin) + ymin=vcurr->start; + if(vcurr->end>ymax) + ymax=vcurr->end; + + hcurr = vcurr->subspan->front._next; + while (hcurr != &(vcurr->subspan->back)) { + if(hcurr->start<xmin) + xmin=hcurr->start; + if(hcurr->end>xmax) + xmax=hcurr->end; + fprintf(stderr,"%d,%d,%d,%d\n",hcurr->start,vcurr->start,hcurr->end,vcurr->end); + hcurr = hcurr->_next; + } + + vcurr = vcurr->_next; + } + + if(xmax<xmin || ymax<ymin) + return sraRgnCreate(); + + return sraRgnCreateRect(xmin,ymin,xmax,ymax); +} + Bool sraRgnPopRect(sraRegion *rgn, sraRect *rect, unsigned long flags) { sraSpan *vcurr, *hcurr; |