2 * Copyright © 1998 Keith Packard
4 * Permission to use, copy, modify, distribute, and sell this software and its
5 * documentation for any purpose is hereby granted without fee, provided that
6 * the above copyright notice appear in all copies and that both that
7 * copyright notice and this permission notice appear in supporting
8 * documentation, and that the name of Keith Packard not be used in
9 * advertising or publicity pertaining to distribution of the software without
10 * specific, written prior permission. Keith Packard makes no
11 * representations about the suitability of this software for any purpose. It
12 * is provided "as is" without express or implied warranty.
14 * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
16 * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
20 * PERFORMANCE OF THIS SOFTWARE.
23 #ifdef HAVE_DIX_CONFIG_H
24 #include <dix-config.h>
30 fbFillSpans(DrawablePtr pDrawable
,
31 GCPtr pGC
, int n
, DDXPointPtr ppt
, int *pwidth
, int fSorted
)
33 RegionPtr pClip
= fbGetCompositeClip(pGC
);
36 int extentX1
, extentX2
, extentY1
, extentY2
;
37 int fullX1
, fullX2
, fullY1
;
40 pextent
= RegionExtents(pClip
);
41 extentX1
= pextent
->x1
;
42 extentY1
= pextent
->y1
;
43 extentX2
= pextent
->x2
;
44 extentY2
= pextent
->y2
;
48 fullX2
= fullX1
+ (int) *pwidth
;
52 if (fullY1
< extentY1
|| extentY2
<= fullY1
)
55 if (fullX1
< extentX1
)
58 if (fullX2
> extentX2
)
64 nbox
= RegionNumRects(pClip
);
66 fbFill(pDrawable
, pGC
, fullX1
, fullY1
, fullX2
- fullX1
, 1);
69 pbox
= RegionRects(pClip
);
71 if (pbox
->y1
<= fullY1
&& fullY1
< pbox
->y2
) {
78 if (partX2
> partX1
) {
79 fbFill(pDrawable
, pGC
,
80 partX1
, fullY1
, partX2
- partX1
, 1);