deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncCopyright 1988, 1998 The Open Group
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncPermission to use, copy, modify, distribute, and sell this software and its
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncdocumentation for any purpose is hereby granted without fee, provided that
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncthe above copyright notice appear in all copies and that both that
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynccopyright notice and this permission notice appear in supporting
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncdocumentation.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncThe above copyright notice and this permission notice shall be included
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncin all copies or substantial portions of the Software.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncIN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncOTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncOTHER DEALINGS IN THE SOFTWARE.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncExcept as contained in this notice, the name of The Open Group shall
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncnot be used in advertising or otherwise to promote the sale, use or
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncother dealings in this Software without prior written authorization
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncfrom The Open Group.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* Author: Keith Packard, MIT X Consortium */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * interface data to span-merging polygon filler
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define AppendSpanGroup(pGC, pixel, spanPtr, spanData) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Polygon edge description for integer wide-line routines
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int x; /* starting x coordinate */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int e; /* initial error term */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SQSECANT 108.856472512142 /* 1/sin^2(11/2) - miter limit constant */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * types for general polygon routines
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync double x, y;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync double k; /* x0 * dy - y0 * dx */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Line face description for caps/joins
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * macros for polygon fillers
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define MIPOLYRELOADLEFT if (!left_height && left_count) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define MIPOLYRELOADRIGHT if (!right_height && right_count) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define MILINESETPIXEL(pDrawable, pGC, pixel, oldPixel) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DoChangeGC (pGC, GCForeground, (XID *) &pixel, FALSE); \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define MILINERESETPIXEL(pDrawable, pGC, pixel, oldPixel) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DoChangeGC (pGC, GCForeground, (XID *) &oldPixel, FALSE); \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned long /*pixel*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /*overall_height*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /*left_count*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /*right_count*/
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int * /*y1*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int * /*y2*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned long /*pixel*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync double /*xorg*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync double /*yorg*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /*npt*/
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int miPolyBuildEdge(double x0, double y0, double k, int dx, int dy,