Annotation of researchv10no/cmd/dag/node_t.c, revision 1.1.1.1

1.1       root        1: #include "draw_dag.h"
                      2: #include "dag.h"
                      3: #include "parsedag.h"
                      4: #include "defaults.h"
                      5: 
                      6: boolean shape_t::is_fixed_aspect_ratio() {
                      7:        switch(shape_id) {
                      8:                case Square:
                      9:                case Circle:
                     10:                case Doublecircle:
                     11:                        return true;
                     12:                default:
                     13:                        return false;
                     14:        }
                     15: }
                     16: 
                     17: DAG_node_t::DAG_node_t() : shape(STRING,"Ellipse") {
                     18:        xsize           = Default_node_xsize;
                     19:        ysize           = Default_node_ysize;
                     20:        pointsize       = Default_node_pointsize;
                     21:        color           = Default_node_color;
                     22:        name            = "";
                     23:        label.type      = 0;
                     24:        sethw();
                     25: }
                     26: 
                     27: void DAG_node_t::setname(char *invalue){
                     28:        name    =       invalue;
                     29:        autosize();
                     30: }
                     31: 
                     32: void DAG_node_t::setshape(int intype, char* invalue) {
                     33:        shape = shape_t(intype,invalue);
                     34:        autosize();
                     35: }
                     36: 
                     37: void DAG_node_t::setcolor(char *incolor) {
                     38:        color   =       incolor;
                     39: }
                     40: 
                     41: void DAG_node_t::setlabel(int intype, char* invalue) {
                     42:        label.type      =       intype;
                     43:        label.value     =       invalue;
                     44:        autosize();
                     45: }
                     46: 
                     47: void DAG_node_t::setxsize(int inxsize) {
                     48:        xsize           =       inxsize;
                     49:        autosize();
                     50: }
                     51: 
                     52: void DAG_node_t::setysize(int inysize) {
                     53:        ysize           =       inysize;
                     54:        autosize();
                     55: }
                     56: 
                     57: void DAG_node_t::setpointsize(int inpointsize) {
                     58:        pointsize       =       inpointsize;
                     59:        autosize();
                     60: }
                     61: 
                     62: void DAG_node_t::autosize() {
                     63:        char *printname;
                     64:        int spaceneeded = 0;
                     65:        if (label.type != DESC) {
                     66:                if (label.type == STRING) printname = label.value;
                     67:                else printname = name;
                     68:                if (printname) {
                     69:                        if (*printname)
                     70:                                spaceneeded = (int)((2 + strlen(printname)) * pointsize * IPP * Resolution);
                     71:                        /* would be better if we kept default node size at time of its creation */
                     72:                        xsize = max(spaceneeded,xsize);
                     73:                        spaceneeded = (int) (pointsize * IPP * 2 * Resolution);
                     74:                        ysize = max(spaceneeded,ysize);
                     75:                }
                     76:        }
                     77:        if (shape.is_fixed_aspect_ratio()) ysize = xsize;
                     78:        sethw();
                     79: }
                     80: 
                     81: void DAG_node_t::sethw() {
                     82:        if (!User.rotated) {
                     83:                width = xsize;
                     84:                height = ysize;
                     85:        }
                     86:        else {
                     87:                width = ysize;
                     88:                height = xsize;
                     89:        }
                     90: }

unix.superglobalmegacorp.com

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