Fix bug #3996: parse_string fails to parse string which contains semicolon
[maxima.git] / archive / src / drawps.hc
blob19a19dec90f9e5c4cd6628348219b62c43ae5696
3 /* 
4 number of ngons
5 ngons   {number of vertices to each polygon}
6 [i1,i2,i3,j1,j2,j3, ] 
7 [p1,p2,p3,p4,p5,p6,....]
9 */
13 #define ZVAL(pts,verti,i) (pts)[3*verti[i]+2]  
15 static int n_vertices;
16 static double *pt_array;
17   
18 static int pt_compare(p,q)
19      short *p,*q;
20 { double m = ZVAL(pt_array,p,n_vertices) -  ZVAL(pt_array,q,n_vertices);
21   return (m < 0.0 ? -1 : m > 0.0 ? 1 : 0);
22   }
23               
25 static int
26 sort_ngons(pts,vertex,ngons)
27 object vertex,pts;
28 int ngons;
30 sort_ngons1(pts->lfa.lfa_self,vertex->ust.ust_self,ngons,
31   (vertex->ust.ust_fillp)/(ngons+1));
33  return 0;
35   
36 static int  
37 sort_ngons1(pts,vertex,ngons,number_ngons)
38 short *vertex;
39 double *pts;
40 int ngons,number_ngons;
41 {short *p = vertex;
42  int i;
44    for (i=0; i < number_ngons ; i++) {
45   { short * maxz_at = p;
46       {int n = ngons;
47        while (--n > 0)
48          if (ZVAL(pts,p,n) > ZVAL(pts,maxz_at,0))
49            maxz_at = p+n;
50        p[ngons] = maxz_at[0];
51        p += (1+ ngons);
52      }}}
53   n_vertices = ngons;
54   pt_array = pts;
55   qsort(vertex,number_ngons,sizeof(short)*(ngons+1),pt_compare);
56   return 0;
59    
60        
61