static void pic_set_color(GVJ_t *job, char *name) { gvcolor_t color; colorxlate(name, &color, HSVA_DOUBLE); /* just v used to set grayscale value */ gvprintf(job, "setfillval %f\n", color.u.HSVA[2]); }
static void setcolor(char *p, double *v) { char buf[64]; if ((sscanf(p, "%lf %lf %lf", v, v + 1, v + 2) != 3) && p[0]) { colorxlate(p, buf); sscanf(buf, "%lf %lf %lf", v, v + 1, v + 2); } }
static void ps_set_color(char* name) { static char *op[] = {"graph","node","edge","sethsb"}; char buf[SMALLBUF]; if (strcmp(name,S[SP].color)) fprintf(Outfile,"%s %scolor\n",colorxlate(name,buf),op[Obj]); S[SP].color = name; }
static void vtx_set_color(char *name) { gvcolor_t color; context_t *cp; cp = &(cstk[SP]); colorxlate(name, &color, RGBA_WORD); cp->color_r = color.u.rrggbbaa[0]; cp->color_g = color.u.rrggbbaa[1]; cp->color_b = color.u.rrggbbaa[2]; }
static void mp_set_color(char *name) { static char *op[] = { "graph", "node", "edge", "sethsb" }; gvcolor_t color; if (strcmp(name, S[SP].color)) { colorxlate(name, &color, HSVA_DOUBLE); fprintf(Output_file, "%% GV set color: %.3f %.3f %.3f %scolor\n", color.u.HSVA[0], color.u.HSVA[1], color.u.HSVA[2], op[Obj]); } S[SP].color = name; }
static int gd_resolve_color(char* name) { color_t color; if (!(strcmp(name,"transparent"))) { /* special case for "transparent" color */ return gdImageGetTransparent(im); } else { colorxlate(name,&color,RGBA_BYTE); return gdImageColorResolve(im,color.u.rgba[0],color.u.rgba[1],color.u.rgba[2]); } }
static glCompColor GetglCompColor(char *color) { gvcolor_t cl; glCompColor c; if (color != '\0') { colorxlate(color, &cl, RGBA_DOUBLE); c.R = (float) cl.u.RGBA[0]; c.G = (float) cl.u.RGBA[1]; c.B = (float) cl.u.RGBA[2]; c.A = (float) cl.u.RGBA[3]; } else { c.R = view->penColor.R; c.G = view->penColor.G; c.B = view->penColor.B; c.A = view->penColor.A; } return c; }
static int gd_resolve_color(char *name) { gvcolor_t color; if (!(strcmp(name, "transparent"))) { /* special case for "transparent" color */ return transparent; } else { colorxlate(name, &color, RGBA_BYTE); /* seems gd alpha is "transparency" rather than the usual "opacity" */ return gdImageColorResolveAlpha(im, color.u.rgba[0], color.u.rgba[1], color.u.rgba[2], (255 - color.u.rgba[3]) * gdAlphaMax / 255); } }
static void init(int argc, char **argv, params_t* pm) { char* cmd = argv[0]; unsigned int c; real s; int v, r; pm->outfile = NULL; pm->nrandom = -1; pm->dim = 2; pm->shore_depth_tol = 0; pm->highlight_cluster = 0; pm->plotedges = 0; pm->whatout = 0; pm->show_points = 0; pm->color_scheme = COLOR_SCHEME_PASTEL; pm->line_width = 0; pm->plot_label = NULL; pm->bg_color = NULL; pm->improve_contiguity_n = 0; pm->whatout = OUT_DOT; pm->nart = -1; pm->color_optimize = 1; pm->maxcluster = 0; pm->nedgep = 0; pm->cmd = cmd; pm->infiles = NULL; pm->line_color = N_NEW(10,char); strcpy(pm->line_color,"#000000"); pm->include_OK_points = FALSE; pm->seed = 123; /* bbox_margin[0] = bbox_margin[1] = -0.2;*/ pm->bbox_margin[0] = pm->bbox_margin[1] = 0; while ((c = getopt(argc, argv, ":efvOko:m:s:r:p:c:C:l:b:g:t:a:h:z:d:")) != -1) { switch (c) { case 'm': if ((sscanf(optarg,"%lf",&s) > 0) && (s != 0)){ pm->bbox_margin[0] = pm->bbox_margin[1] = s; } else { usage(cmd, 1); } break; #if 0 case 'q': if ((sscanf(optarg,"%d",&r) > 0) && r >=0 && r <=OUT_PROCESSING){ pm->whatout = r; } else { usage(cmd,1); } break; #endif case 's': if ((sscanf(optarg,"%lf",&s) > 0)){ pm->shore_depth_tol = s; } else { usage(cmd,1); } break; case 'h': if ((sscanf(optarg,"%d",&v) > 0)){ pm->nedgep = MAX(0, v); } else if (!strncmp(optarg, HLPFX, N_HLPFX) && (sscanf(optarg+N_HLPFX,"%d",&v) > 0)) { pm->highlight_cluster = MAX(0, v); } else { usage(cmd,1); } break; case 'r': if ((sscanf(optarg,"%d",&r) > 0)){ pm->nrandom = r; } break; case 't': if ((sscanf(optarg,"%d",&r) > 0) && r > 0){ pm->improve_contiguity_n = r; } break; case 'p': pm->show_points = 1; if ((sscanf(optarg,"%d",&r) > 0)){ pm->show_points = MIN(3, r); } break; case 'k': pm->include_OK_points = TRUE; break; case 'v': Verbose = 1; break; case 'e': pm->plotedges = 1; break; case 'o': pm->outfile = openFile(optarg, "w", pm->cmd); break; case 'O': pm->color_optimize = 0; break; case 'a': if ((sscanf(optarg,"%d",&r) > 0)){ pm->nart = r; } else { usage(cmd,1); } break; case 'c': if ((sscanf(optarg,"%d",&r) > 0) && r >= COLOR_SCHEME_NONE && r <= COLOR_SCHEME_GREY){ pm->color_scheme = r; } else { usage(cmd,1); } break; case 'd': if (sscanf(optarg,"%d",&v) <= 0){ usage(cmd,1); } else pm->seed = v; break; case 'C': if (!((sscanf(optarg,"%d",&v) > 0) && v >= 0)){ usage(cmd,1); } else pm->maxcluster = v; break; case 'g': { gvcolor_t color; if (colorxlate(optarg, &color, RGBA_DOUBLE) == COLOR_OK) { if (!pm->bg_color) pm->bg_color = N_NEW(3,real); pm->bg_color[0] = color.u.RGBA[0]; pm->bg_color[1] = color.u.RGBA[1]; pm->bg_color[2] = color.u.RGBA[2]; } break; } case 'z': { FREE (pm->line_color); pm->line_color = strdup (optarg); break; } case 'b': if (sscanf(optarg,"%lf",&s) > 0) { pm->line_width = s; } else { fprintf (stderr, "%s: unexpected argument \"%s\" for -b flag\n", cmd, optarg); } break; case 'l': if (pm->plot_label) free (pm->plot_label); pm->plot_label = strdup (optarg); break; case '?': if (optopt == '?') usage(cmd, 0); else { fprintf(stderr, " option -%c unrecognized - ignored\n", optopt); usage(cmd, 0); } break; } } argv += optind; argc -= optind; if (argc) pm->infiles = argv; if (!pm->outfile) pm->outfile = stdout; }
void changetopfishfocus(topview * t, float *x, float *y, float *z, int num_foci) { gvcolor_t cl; focus_t *fs = t->fisheyeParams.fs; int i; int closest_fine_node; int cur_level = 0; Hierarchy *hp = t->fisheyeParams.h; refresh_old_values(t); fs->num_foci = num_foci; for (i = 0; i < num_foci; i++) { find_closest_active_node(hp, x[i], y[i], &closest_fine_node); fs->foci_nodes[i] = closest_fine_node; fs->x_foci[i] = hp->geom_graphs[cur_level][closest_fine_node].x_coord; fs->y_foci[i] = hp->geom_graphs[cur_level][closest_fine_node].y_coord; } view->Topview->fisheyeParams.repos.width = (int) (view->bdxRight - view->bdxLeft); view->Topview->fisheyeParams.repos.height = (int) (view->bdyTop - view->bdyBottom); colorxlate(get_attribute_value ("topologicalfisheyefinestcolor", view, view->g[view->activeGraph]), &cl, RGBA_DOUBLE); view->Topview->fisheyeParams.srcColor.R = (float) cl.u.RGBA[0]; view->Topview->fisheyeParams.srcColor.G = (float) cl.u.RGBA[1]; view->Topview->fisheyeParams.srcColor.B = (float) cl.u.RGBA[2]; colorxlate(get_attribute_value ("topologicalfisheyecoarsestcolor", view, view->g[view->activeGraph]), &cl, RGBA_DOUBLE); view->Topview->fisheyeParams.tarColor.R = (float) cl.u.RGBA[0]; view->Topview->fisheyeParams.tarColor.G = (float) cl.u.RGBA[1]; view->Topview->fisheyeParams.tarColor.B = (float) cl.u.RGBA[2]; sscanf(agget (view->g[view->activeGraph], "topologicalfisheyedistortionfactor"), "%lf", &view->Topview->fisheyeParams.repos.distortion); sscanf(agget (view->g[view->activeGraph], "topologicalfisheyefinenodes"), "%d", &view->Topview->fisheyeParams.level.num_fine_nodes); sscanf(agget (view->g[view->activeGraph], "topologicalfisheyecoarseningfactor"), "%lf", &view->Topview->fisheyeParams.level.coarsening_rate); sscanf(agget (view->g[view->activeGraph], "topologicalfisheyedist2limit"), "%d", &view->Topview->fisheyeParams.hier.dist2_limit); sscanf(agget(view->g[view->activeGraph], "topologicalfisheyeanimate"), "%d", &view->Topview->fisheyeParams.animate); set_active_levels(hp, fs->foci_nodes, fs->num_foci, &(t->fisheyeParams.level)); positionAllItems(hp, fs, &(t->fisheyeParams.repos)); view->Topview->fisheyeParams.animate = 1; if (t->fisheyeParams.animate) { view->active_frame = 0; g_timer_start(view->timer); } }
/* To use: * double* x_coords; // initial x coordinates * double* y_coords; // initial y coordinates * focus_t* fs; * int ne; * v_data* graph = makeGraph (topview*, &ne); * hierarchy = makeHier(topview->NodeCount, ne, graph, x_coords, y_coords); * freeGraph (graph); * fs = initFocus (topview->Nodecount); // create focus set */ void prepare_topological_fisheye(Agraph_t* g,topview * t) { double *x_coords = N_NEW(t->Nodecount, double); // initial x coordinates double *y_coords = N_NEW(t->Nodecount, double); // initial y coordinates focus_t *fs; int ne; int i; int closest_fine_node; int cur_level = 0; Hierarchy *hp; ex_vtx_data *gg; gvcolor_t cl; Agnode_t *np; v_data *graph = makeGraph(g, &ne); // t->fisheyeParams.animate=1; //turn the animation on i=0; for (np = agfstnode(g); np; np = agnxtnode(g, np)) { x_coords[i]=ND_A(np).x; y_coords[i]=ND_A(np).y; i++; } hp = t->fisheyeParams.h = makeHier(agnnodes(g), ne, graph, x_coords, y_coords, &(t->fisheyeParams.hier)); freeGraph(graph); free(x_coords); free(y_coords); fs = t->fisheyeParams.fs = initFocus(agnnodes(g)); // create focus set gg = hp->geom_graphs[0]; closest_fine_node = 0; /* first node */ fs->num_foci = 1; fs->foci_nodes[0] = closest_fine_node; fs->x_foci[0] = hp->geom_graphs[cur_level][closest_fine_node].x_coord; fs->y_foci[0] = hp->geom_graphs[cur_level][closest_fine_node].y_coord; view->Topview->fisheyeParams.repos.width = (int) (view->bdxRight - view->bdxLeft); view->Topview->fisheyeParams.repos.height = (int) (view->bdyTop - view->bdyBottom); view->Topview->fisheyeParams.repos.rescale = Polar; //topological fisheye colorxlate(get_attribute_value ("topologicalfisheyefinestcolor", view, view->g[view->activeGraph]), &cl, RGBA_DOUBLE); view->Topview->fisheyeParams.srcColor.R = (float) cl.u.RGBA[0]; view->Topview->fisheyeParams.srcColor.G = (float) cl.u.RGBA[1]; view->Topview->fisheyeParams.srcColor.B = (float) cl.u.RGBA[2]; colorxlate(get_attribute_value ("topologicalfisheyecoarsestcolor", view, view->g[view->activeGraph]), &cl, RGBA_DOUBLE); view->Topview->fisheyeParams.tarColor.R = (float) cl.u.RGBA[0]; view->Topview->fisheyeParams.tarColor.G = (float) cl.u.RGBA[1]; view->Topview->fisheyeParams.tarColor.B = (float) cl.u.RGBA[2]; sscanf(agget (view->g[view->activeGraph], "topologicalfisheyedistortionfactor"), "%lf", &view->Topview->fisheyeParams.repos.distortion); sscanf(agget (view->g[view->activeGraph], "topologicalfisheyefinenodes"), "%d", &view->Topview->fisheyeParams.level.num_fine_nodes); sscanf(agget (view->g[view->activeGraph], "topologicalfisheyecoarseningfactor"), "%lf", &view->Topview->fisheyeParams.level.coarsening_rate); sscanf(agget (view->g[view->activeGraph], "topologicalfisheyedist2limit"), "%d", &view->Topview->fisheyeParams.hier.dist2_limit); sscanf(agget(view->g[view->activeGraph], "topologicalfisheyeanimate"), "%d", &view->Topview->fisheyeParams.animate); set_active_levels(hp, fs->foci_nodes, fs->num_foci, &(t->fisheyeParams.level)); positionAllItems(hp, fs, &(t->fisheyeParams.repos)); refresh_old_values(t); /* fprintf (stderr, "No. of active nodes = %d\n", count_active_nodes(hp)); */ }