Annotation of researchv10no/cmd/ideal/idfilt/iderq.c, revision 1.1

1.1     ! root        1: #include <jerq.h>
        !             2: 
        !             3: #define        TRUE    1
        !             4: #define        FALSE   0
        !             5: 
        !             6: extern getdots();
        !             7: extern putdots();
        !             8: extern void idmaxx ();
        !             9: extern void idmaxy ();
        !            10: extern void idminx ();
        !            11: extern void idminy ();
        !            12: extern void idwidth ();
        !            13: extern void idcolwid ();
        !            14: extern char *scanstr();
        !            15: extern char *scanfloat();
        !            16: extern idline ();
        !            17: extern idarc ();
        !            18: extern idleft ();
        !            19: extern idcenter ();
        !            20: extern idright ();
        !            21: extern idspline ();
        !            22: extern idknot ();
        !            23: extern idendspline ();
        !            24: extern yeserase ();
        !            25: extern noerase();
        !            26: extern idendbound();
        !            27: 
        !            28: char input[10000];
        !            29: char *ip = input;
        !            30: 
        !            31: long maxx, maxy;
        !            32: long minx, miny;
        !            33: long width = 4;
        !            34: long colwid = 6;
        !            35: long scale;
        !            36: 
        !            37: #define        boolean int
        !            38: 
        !            39: boolean maxxset, maxyset;
        !            40: boolean minxset, minyset;
        !            41: boolean widset, colset;
        !            42: boolean boundset;
        !            43: 
        !            44: boolean veryfirst = TRUE;
        !            45: 
        !            46: boolean wanterase = TRUE;
        !            47: 
        !            48: POINT textpos;
        !            49: char temp[100];
        !            50: 
        !            51: print (s)
        !            52: char *s;
        !            53: {
        !            54:        jmoveto(textpos);
        !            55:        jstring ("*");
        !            56:        jstring(s);
        !            57:        jstring ("*");
        !            58:        textpos.x = 30;
        !            59:        textpos.y += 15;
        !            60: }
        !            61: 
        !            62: main (argc, argv)
        !            63: int argc;
        !            64: char *argv[];
        !            65: {
        !            66:        jinit();
        !            67:        qinit();
        !            68:        binit();
        !            69:        aciainit();
        !            70:        spl0();
        !            71:        jBonW();
        !            72:        cursinhibit();
        !            73: textpos.x = 30;
        !            74: textpos.y = XMAX+20;
        !            75:        for (;;) {
        !            76:                getdots();
        !            77:                if (wanterase == TRUE)
        !            78:                        jrectf(screenmap.rect, F_CLR);
        !            79:                putdots();
        !            80:        }
        !            81: }
        !            82: 
        !            83: getdots()
        !            84: {
        !            85:        register char *start, *ip;
        !            86:        ip = input;
        !            87:        jputchar('*');
        !            88:        do {
        !            89:                start = ip;
        !            90:                while ((*ip++ = jgetchar()) != '\n')
        !            91:                        jputchar('*');
        !            92:        } while (strncmp (start, ".IS", 3));
        !            93:        ip = input;
        !            94:        do {
        !            95:                start = ip;
        !            96:                while ((*ip++ = jgetchar()) != '\n')
        !            97:                        jputchar('*');
        !            98:                *ip = '\0';
        !            99:        } while (strncmp (start, ".IE", 3) && strncmp (start, ".IF", 3));
        !           100:        maxxset = minxset = FALSE;
        !           101:        maxyset = minyset = FALSE;
        !           102:        widset = colset = boundset = FALSE;
        !           103: }
        !           104: 
        !           105: #define        getfloats(n)    for (i = 0; i < n; i ++) ip = scanfloat (&f[i], ip);
        !           106: 
        !           107: putdots()
        !           108: {
        !           109:        register char *ip;
        !           110:        char cmd[10];
        !           111:        long f[10];
        !           112:        int i;
        !           113:        POINT pos;
        !           114:        char *ip2;
        !           115: 
        !           116:        ip = input;
        !           117:        while (*ip) {
        !           118:                ip = scanstr(cmd,ip);
        !           119:                if (!boundset) {
        !           120:                        if (strcmp (cmd, "...maxx") == 0) {
        !           121:                                getfloats(1);
        !           122:                                idmaxx (f[0]);
        !           123:                        } else if (strcmp (cmd, "...maxy") == 0) {
        !           124:                                getfloats(1);
        !           125:                                idmaxy (f[0]);
        !           126:                        } else if (strcmp (cmd, "...minx") == 0) {
        !           127:                                getfloats(1);
        !           128:                                idminx (f[0]);
        !           129:                        } else if (strcmp (cmd, "...miny") == 0) {
        !           130:                                getfloats(1);
        !           131:                                idminy (f[0]);
        !           132:                        } else if (strcmp (cmd, "...width") == 0) {
        !           133:                                getfloats(1);
        !           134:                                idwidth (f[0]);
        !           135:                        } else if (strcmp (cmd, "...colwid") == 0) {
        !           136:                                getfloats(1);
        !           137:                                idcolwid (f[0]);
        !           138:                        } else if (strcmp (cmd, "...obbox") == 0) {
        !           139:                                if (!veryfirst) {
        !           140:                                        maxxset = maxyset = TRUE;
        !           141:                                        minxset = minyset = TRUE;
        !           142:                                        boundset = TRUE;
        !           143:                                }
        !           144:                        } else if (strcmp (cmd, "...noerase") == 0) {
        !           145:                                idnoerase ();
        !           146:                        } else if (strcmp (cmd, "...yeserase") == 0) {
        !           147:                                idyeserase ();
        !           148:                        } else {
        !           149:                                idendbound ();
        !           150:                                veryfirst = FALSE;
        !           151:                        }
        !           152:                }
        !           153:                if (boundset) {
        !           154:                        if (strcmp (cmd, "...line") == 0) {
        !           155:                                getfloats(4);
        !           156:                                idline (f[0], f[1], f[2], f[3]);
        !           157:                        } else if (strcmp (cmd, "...circle") == 0) {
        !           158:                                getfloats(3);
        !           159:                                idcircle (f[0], f[1], f[2]);
        !           160:                        } else if (strcmp (cmd, "...arc") == 0) {
        !           161:                                getfloats(9);
        !           162:                                idarc (f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7], f[8]);
        !           163:                        } else if (strcmp (cmd, "...left") == 0) {
        !           164:                                getfloats(2);
        !           165:                                ip2 = ip;
        !           166:                                while (*ip2++ != '\n')
        !           167:                                        ;
        !           168:                                *--ip2 = '\0';
        !           169:                                idleft(f[0],f[1],ip);
        !           170:                                ip = ip2+1;
        !           171:                        } else if (strcmp (cmd, "...center") == 0) {
        !           172:                                getfloats(2);
        !           173:                                ip2 = ip;
        !           174:                                while (*ip2++ != '\n')
        !           175:                                        ;
        !           176:                                *--ip2 = '\0';
        !           177:                                idcenter(f[0],f[1],ip);
        !           178:                                ip = ip2+1;
        !           179:                        } else if (strcmp (cmd, "...right") == 0) {
        !           180:                                getfloats(2);
        !           181:                                ip2 = ip;
        !           182:                                while (*ip2++ != '\n')
        !           183:                                        ;
        !           184:                                *--ip2 = '\0';
        !           185:                                idright(f[0],f[1],ip);
        !           186:                                ip = ip2+1;
        !           187:                        } else if (strcmp (cmd, "...spline") == 0) {
        !           188:                                getfloats(2);
        !           189:                                idspline (f[0], f[1]);
        !           190:                        } else if (strcmp (cmd, "...knot") == 0) {
        !           191:                                getfloats(2);
        !           192:                                idknot (f[0], f[1]);
        !           193:                        } else if (strcmp (cmd, "...endspline") == 0) {
        !           194:                                idendspline ();
        !           195:                        }
        !           196:                }
        !           197:        }
        !           198: }
        !           199: 
        !           200: void idmaxx (x)
        !           201: long x;
        !           202: {
        !           203:        if (!maxxset) {
        !           204:                maxx = x;
        !           205:                maxxset = TRUE;
        !           206:        }
        !           207: }
        !           208: 
        !           209: void idmaxy (y)
        !           210: long y;
        !           211: {
        !           212:        if (!maxyset) {
        !           213:                maxy = y;
        !           214:                maxyset = TRUE;
        !           215:        }
        !           216: }
        !           217: 
        !           218: void idminx (x)
        !           219: long x;
        !           220: {
        !           221:        if (!minxset) {
        !           222:                minx = x;
        !           223:                minxset = TRUE;
        !           224:        }
        !           225: }
        !           226: 
        !           227: void idminy (y)
        !           228: long y;
        !           229: {
        !           230:        if (!minyset) {
        !           231:                miny = y;
        !           232:                minyset = TRUE;
        !           233:        }
        !           234: }
        !           235: 
        !           236: void idwidth (wid)
        !           237: long wid;
        !           238: {
        !           239:        if (!widset) {
        !           240:                width = wid;
        !           241:                widset = TRUE;
        !           242:        }
        !           243: }
        !           244: 
        !           245: void idcolwid (wid)
        !           246: long wid;
        !           247: {
        !           248:        if (!colset) {
        !           249:                colwid = wid;
        !           250:                colset = TRUE;
        !           251:        }
        !           252: }
        !           253: 
        !           254: char *scanstr(object, source)
        !           255: char *object, *source;
        !           256: {
        !           257:        while (*source != '\0' && (*source == ' ' || *source == '\n'))
        !           258:                source++;
        !           259:        while (*source != '\0' && *source != ' ' && *source != '\n')
        !           260:                *object++ = *source++;
        !           261:        *object = '\0';
        !           262:        return (source);
        !           263: }
        !           264: 
        !           265: #define isdigit(ch)    ((ch) >= '0' && (ch) <= '9')
        !           266: #define        PRECISION       1000
        !           267: 
        !           268: char *scanfloat(f, source)
        !           269: long *f;
        !           270: char *source;
        !           271: {
        !           272:        int i;
        !           273:        boolean negflag;
        !           274:        long part[2];
        !           275:        int len[2];
        !           276:        long n;
        !           277:        negflag = FALSE;
        !           278:        while (!isdigit(*source) && *source != '.' && *source != '-')
        !           279:                source++;
        !           280:        if (*source == '-') {
        !           281:                negflag = TRUE;
        !           282:                source ++;
        !           283:        }
        !           284:        part[0] = part[1] = 0;
        !           285:        len[0] = len[1] = 0;
        !           286:        for (i = 0; i < 2; i++) {
        !           287:                while (isdigit(*source)) {
        !           288:                        part[i] = 10*part[i] + *source++ - '0';
        !           289:                        len[i]++;
        !           290:                }
        !           291:                if (*source != '.')
        !           292:                        break;
        !           293:                source++;
        !           294:        }
        !           295:        n = 1;
        !           296:        for (i = 0; i < len[1]; i ++)
        !           297:                n *= 10;
        !           298:        *f = part[0]*PRECISION + (PRECISION*part[1])/n;
        !           299:        if (negflag)
        !           300:                *f *= -1;
        !           301:        return (source);
        !           302: }
        !           303: 
        !           304: #define        jx(x)   XMAX*((x)-minx)/scale
        !           305: #define        jy(y)   XMAX*(maxy-(y))/scale
        !           306: 
        !           307: idline (x0, y0, x1, y1)
        !           308: long x0, y0, x1, y1;
        !           309: {
        !           310:        POINT p;
        !           311:        p.x = jx(x0);
        !           312:        p.y = jy(y0);
        !           313:        jmoveto(p);
        !           314:        p.x = jx(x1);
        !           315:        p.y = jy(y1);
        !           316:        jlineto(p,F_STORE);
        !           317: }
        !           318: 
        !           319: #define        abs(x)  ((x)>0?(x):-(x))
        !           320:        
        !           321: idcircle (x0, y0, r)
        !           322: long x0, y0, r;
        !           323: {
        !           324:        POINT p;
        !           325:        p.x = jx(x0);
        !           326:        p.y = jy(y0);
        !           327:        jcircle(p, (short)(XMAX*abs(r)/scale), F_STORE);
        !           328: }
        !           329: 
        !           330: idarc (x0, y0, x1, y1, x2, y2, t1, t2, r)
        !           331: long x0, y0, x1, y1, x2, y2, t1, t2, r;
        !           332: {
        !           333:        POINT p0, p1, p2;
        !           334:        p0.x = jx(x0);
        !           335:        p0.y = jy(y0);
        !           336:        p1.x = jx(x1);
        !           337:        p1.y = jy(y1);
        !           338:        p2.x = jx(x2);
        !           339:        p2.y = jy(y2);
        !           340:        jarc (p0, p2, p1, F_XOR);
        !           341: }
        !           342: 
        !           343: idleft (x0, y0, s)
        !           344: long x0, y0;
        !           345: char *s;
        !           346: {
        !           347:        POINT p;
        !           348:        p.x = jx(x0);
        !           349:        p.y = jy(y0);
        !           350:        jmoveto(p);
        !           351:        jstring(s);
        !           352: }
        !           353: 
        !           354: idcenter (x0, y0, s)
        !           355: long x0, y0;
        !           356: char *s;
        !           357: {
        !           358:        POINT p;
        !           359:        p.x = jx(x0) - strwidth(s)/2;
        !           360:        p.y = jy(y0);
        !           361:        jmoveto(p);
        !           362:        jstring(s);
        !           363: }
        !           364: 
        !           365: idright (x0, y0, s)
        !           366: long x0, y0;
        !           367: char *s;
        !           368: {
        !           369:        POINT p;
        !           370:        p.x = jx(x0) - strwidth(s);
        !           371:        p.y = jy(y0);
        !           372:        jmoveto(p);
        !           373:        jstring(s);
        !           374: }
        !           375: 
        !           376: idspline (x0,y0)
        !           377: long x0,y0;
        !           378: {
        !           379: }
        !           380: 
        !           381: idknot (x0,y0)
        !           382: long x0,y0;
        !           383: {
        !           384: }
        !           385: 
        !           386: idendspline ()
        !           387: {
        !           388: }
        !           389: 
        !           390: idnoerase ()
        !           391: {
        !           392:        wanterase = FALSE;
        !           393: }
        !           394: 
        !           395: idyeserase ()
        !           396: {
        !           397:        wanterase = TRUE;
        !           398: }
        !           399: 
        !           400: idendbound ()
        !           401: {
        !           402:        if (boundset)
        !           403:                return;
        !           404:        boundset = TRUE;
        !           405:        idmaxx ((long)6);
        !           406:        idminx ((long)-6);
        !           407:        idmaxy ((long)6);
        !           408:        idminy ((long)-6);
        !           409:        scale = maxx - minx;
        !           410:        if (scale < maxy - miny)
        !           411:                scale = maxy - miny;
        !           412: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.