|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.