Annotation of 41BSD/cmd/cifplot/select.c, revision 1.1

1.1     ! root        1: /*******************************************************************
        !             2: *                                                                  *
        !             3: *    File: CIFPLOT/select.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: #include "alloc.h"
        !            16: 
        !            17: IMPORT transform *MatrixMult();
        !            18: IMPORT Trans();
        !            19: IMPORT real TCompare();
        !            20: IMPORT struct LCell *GetLayer();
        !            21: FORWARD real ICompare();
        !            22: 
        !            23: Selector(i)
        !            24: iedge *i;
        !            25: {
        !            26:     instance *item;
        !            27:     transform *trans;
        !            28:     real x,y;
        !            29:     TextStruct *t;
        !            30:     Command *c;
        !            31:     struct BBox bb;
        !            32:     struct LCell *layer;
        !            33: 
        !            34:     switch(i->type) {
        !            35:        case EDGE:
        !            36:                if(i->x1 == i->x2) {
        !            37:                        --(i->poly->refs);
        !            38:                        FreeIEdge(i);
        !            39:                        return;
        !            40:                        }
        !            41:                break;
        !            42:        case TEXT:
        !            43:                item = (instance *) i;
        !            44:                trans = MatrixMult(item->item->Ctype.Text.TTrans,item->trans);
        !            45:                x = 0.0; y = 0.0;
        !            46:                Trans(&x,&y,trans);
        !            47:                FreeTransform(trans);
        !            48:                ClipText(item->item->Ctype.Text.TString,x,y,item->item->Ctype.Text.TLoc);
        !            49:                return;
        !            50:        case SPOLYGON:
        !            51:        case SFLASH:
        !            52:        case SWIRE:
        !            53:        case SCALL:
        !            54:        case STEXT:
        !            55:        case VECTOR:
        !            56:            {   Command *icom;
        !            57:                icom = (Command *) i;
        !            58:                if(icom->CBBox.xmax < Window.xmin || Window.xmax < icom->CBBox.xmin ||
        !            59:                   icom->CBBox.ymax < Window.ymin || Window.ymax < icom->CBBox.ymin) {
        !            60:                        Free(icom);
        !            61:                        return;
        !            62:                        }
        !            63:                icom->min = CONVERT(icom->CBBox.xmin-1.0);
        !            64:                }
        !            65:                break;
        !            66:        case POLYGON:
        !            67:        case WIRE:
        !            68:        case BOX:
        !            69:        case POINTNAME:
        !            70:                item = (instance *) i;
        !            71:                layer = GetLayer(item->item->level);
        !            72:                if(layer != NIL && !(layer->visible)) return;
        !            73:                /* else continue through next case */
        !            74:        default:
        !            75:                item = (instance *) i;
        !            76:                c = item->item;
        !            77:                ZeroBBox(&bb);
        !            78:                BBoxTransform(&bb,&(c->CBBox),item->trans);
        !            79:                if(bb.xmax < Window.xmin || Window.xmax < bb.xmin ||
        !            80:                   bb.ymax < Window.ymin || Window.ymax < bb.ymin) {
        !            81:                        FreeItem(item);
        !            82:                        return;
        !            83:                        }
        !            84:                item->min = CONVERT(bb.xmin-1.0);
        !            85:                break;
        !            86:        }
        !            87:     PutUnAct(i);
        !            88:     }
        !            89: 
        !            90: real
        !            91: ICompare(i,j)
        !            92: instance *i,*j;
        !            93: /* ICompare(i,j) <= 0 iff i->min <= j->min iff i->min - j->min <= 0 */
        !            94: {
        !            95:     return((real) (i->min - j->min));
        !            96:     }

unix.superglobalmegacorp.com

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