From 96c314750f05bf97e9cdde8371c463d79850b32c Mon Sep 17 00:00:00 2001 From: Chris Young Date: Mon, 29 Dec 2008 01:18:53 +0000 Subject: More efficient layers clipping svn path=/trunk/netsurf/; revision=5945 --- amiga/plotters.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'amiga/plotters.c') diff --git a/amiga/plotters.c b/amiga/plotters.c index b3d1baa43..c990ddd9f 100755 --- a/amiga/plotters.c +++ b/amiga/plotters.c @@ -244,21 +244,28 @@ bool ami_fill(int x0, int y0, int x1, int y1, colour c) bool ami_clip(int x0, int y0, int x1, int y1) { struct Region *reg = NULL; - struct Rectangle rect; if(currp->Layer) { - reg = NewRegion(); + reg = InstallClipRegion(currp->Layer,NULL); - rect.MinX = x0; - rect.MinY = y0; - rect.MaxX = x1-1; - rect.MaxY = y1-1; + if(!reg) + { + reg = NewRegion(); + } + else + { + ClearRectRegion(reg,&glob.rect); + } - OrRectRegion(reg,&rect); + glob.rect.MinX = x0; + glob.rect.MinY = y0; + glob.rect.MaxX = x1-1; + glob.rect.MaxY = y1-1; - reg = InstallClipRegion(currp->Layer,reg); + OrRectRegion(reg,&glob.rect); + reg = InstallClipRegion(currp->Layer,reg); if(reg) DisposeRegion(reg); } -- cgit v1.2.3