|
|
1.1 root 1: /*******************************************************************
2: * *
3: * File: CIFPLOT/compare.c *
4: * Written by Dan Fitzpatrick *
5: * copyright 1980 -- Regents of the University of California *
6: * *
7: ********************************************************************/
8:
9: #include <stdio.h>
10: #include "defs.h"
11: #include "globals.h"
12: #include "parser_defs.h"
13: #include "structs.h"
14: #include "out_structs.h"
15:
16: IMPORT MoveQueue();
17: IMPORT CatQueue();
18:
19: #define GETA if(p1 != NIL) {a_start= p1->start; a_end= p1->end;\
20: p1= p1->Link; }\
21: else {a_start = a_end = INFINITY;}\
22: if(a_start > a_end) \
23: Error("a_start > a_end",INTERNAL);
24:
25: #define GETB if(p2 != NIL) {b_start= p2->start; b_end= p2->end;\
26: p2= p2->Link; }\
27: else {b_start = b_end = INFINITY;}\
28: if(b_start > b_end) \
29: Error("b_start > b_end",INTERNAL);
30:
31: AddLine(i,xcurrent)
32: int i,xcurrent;
33: {
34: nedge *p1,*p2;
35: int a_start,a_end,b_start,b_end;
36:
37: /* Don't run if just finishing buffer */
38: if(!finishBuf) {
39: p2 = (nedge *) NEdgeQueue[i].QStart;
40: if(outline && !(extractor)) {
41: p1 = (nedge *) NecEdgeQueue[i].QStart;
42: GETA; GETB;
43: while(a_start != INFINITY || b_start != INFINITY) {
44: if(a_start <= b_start)
45: if(a_end < b_start) {
46: Fill(xcurrent,(int) a_start,(int) a_end,0xFFFFFFFF);
47: GETA;
48: continue;
49: }
50: else {
51: Fill(xcurrent,(int) a_start,(int) b_start,0xFFFFFFFF);
52: a_start = b_start;
53: }
54: else
55: if(b_end < a_start) {
56: Fill(xcurrent,(int) b_start,(int) b_end,0xFFFFFFFF);
57: GETB;
58: continue;
59: }
60: else {
61: Fill(xcurrent,(int) b_start,(int) a_start,0xFFFFFFFF);
62: b_start = a_start;
63: }
64: if(a_start == b_start)
65: if(a_end < b_end) {
66: b_start = a_end;
67: GETA;
68: continue;
69: }
70: else {
71: a_start = b_end;
72: GETB;
73: continue;
74: }
75: }
76: }
77: CatQueue(&FreeHolders,&(NecEdgeQueue[i]));
78: MoveQueue(&(NecEdgeQueue[i]),&(NEdgeQueue[i]));
79: InitQueue(&(NEdgeQueue[i]));
80: }
81: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.