40#if defined(__unix__) && !defined(ANDROIDNDK)
44#ifndef __gluarcsorter_c_
45#define __gluarcsorter_c_
50#include "subdivider.h"
57ArcSorter::qscmp(
char *,
char * )
59 _glu_dprintf(
"ArcSorter::qscmp: pure virtual called\n" );
64ArcSorter::qsort(
Arc **a,
int n )
66 Sorter::qsort( (
void *) a, n );
70ArcSorter::qsexc(
char *i,
char *j )
72 Arc **jarc1 = (Arc **) i;
73 Arc **jarc2 = (Arc **) j;
80ArcSorter::qstexc(
char *i,
char *j,
char *k )
82 Arc **jarc1 = (Arc **) i;
83 Arc **jarc2 = (Arc **) j;
84 Arc **jarc3 = (Arc **) k;
97ArcSdirSorter::qscmp(
char *i,
char *j )
99 Arc *jarc1 = *(Arc **) i;
100 Arc *jarc2 = *(Arc **) j;
102 int v1 = (jarc1->getitail() ? 0 : (jarc1->pwlArc->npts - 1));
103 int v2 = (jarc2->getitail() ? 0 : (jarc2->pwlArc->npts - 1));
105 REAL diff = jarc1->pwlArc->pts[v1].param[1] -
106 jarc2->pwlArc->pts[v2].param[1];
114 if( jarc2->tail()[0] < jarc1->tail()[0] ) {
115 return subdivider.ccwTurn_sl( jarc2, jarc1 ) ? 1 : -1;
117 return subdivider.ccwTurn_sr( jarc2, jarc1 ) ? -1 : 1;
120 if( jarc2->head()[0] < jarc1->head()[0] ) {
121 return subdivider.ccwTurn_sl( jarc1, jarc2 ) ? -1 : 1;
123 return subdivider.ccwTurn_sr( jarc1, jarc2 ) ? 1 : -1;
142ArcTdirSorter::qscmp(
char *i,
char *j )
144 Arc *jarc1 = *(Arc **) i;
145 Arc *jarc2 = *(Arc **) j;
147 int v1 = (jarc1->getitail() ? 0 : (jarc1->pwlArc->npts - 1));
148 int v2 = (jarc2->getitail() ? 0 : (jarc2->pwlArc->npts - 1));
150 REAL diff = jarc1->pwlArc->pts[v1].param[0] -
151 jarc2->pwlArc->pts[v2].param[0];
159 if (jarc2->tail()[1] < jarc1->tail()[1]) {
160 return subdivider.ccwTurn_tl( jarc2, jarc1 ) ? 1 : -1;
162 return subdivider.ccwTurn_tr( jarc2, jarc1 ) ? -1 : 1;
165 if( jarc2->head()[1] < jarc1->head()[1] ) {
166 return subdivider.ccwTurn_tl( jarc1, jarc2 ) ? -1 : 1;
168 return subdivider.ccwTurn_tr( jarc1, jarc2 ) ? 1 : -1;