static void drawtopfishnodelabels(topview * t) { int v, finenodes, focusnodes; char buf[512]; char *str; Hierarchy *hp = t->fisheyeParams.h; finenodes = focusnodes = 0; str = agget(view->g[view->activeGraph], "topologicalfisheyelabelfinenodes"); if (strcmp(str, "1") == 0) { finenodes = 1; } str = agget(view->g[view->activeGraph], "topologicalfisheyelabelfocus"); if (strcmp(str, "1") == 0) { focusnodes = 1; } if ((finenodes) || (focusnodes)) { for (v = 0; v < hp->nvtxs[0]; v++) { ex_vtx_data *gg = hp->geom_graphs[0]; if (gg[v].active_level == 0) { if (view->Topview->Nodes[v].Label) strcpy(buf, view->Topview->Nodes[v].Label); else sprintf(buf, "%d", v); if ((v == t->fisheyeParams.fs->foci_nodes[0]) && (focusnodes)) { glColor4f((float) 0, (float) 0, (float) 1, (float) 1); glprintfglut(GLUT_BITMAP_HELVETICA_18, gg[v].physical_x_coord, gg[v].physical_y_coord, 0, buf); } else if (finenodes) { glColor4f(0, 0, 0, 1); glprintfglut(GLUT_BITMAP_HELVETICA_10, gg[v].physical_x_coord, gg[v].physical_y_coord, 0, buf); } } } } }
static void glPrintf(glCompText * font, GLfloat xpos, GLfloat ypos, GLfloat zpos, GLfloat width, char *bf, int usez) { int vPort[4]; GLfloat size = font->fontheight; GLfloat x = xpos; GLfloat y = ypos; int xMax; int charCount; int maxcharCount; char *tempC; GLfloat charGap; //set the color glColor4f(font->color.R, font->color.G, font->color.B, font->color.A); if (!font) return; if (font->isglut) { glprintfglut(font->glutfont, xpos, ypos, zpos, bf); return; } glGetIntegerv(GL_VIEWPORT, vPort); init_gl_vars(font); glBindTexture(GL_TEXTURE_2D, font->texId); xMax = vPort[0] + vPort[2]; tempC = bf; charCount = 0; maxcharCount = 0; while (*tempC != '\0') { if (*tempC == '\t') charCount = charCount + FONT_TAB_SPACE; else charCount++; tempC++; } if (charCount > maxcharCount) maxcharCount = charCount; charGap = (width / (float) maxcharCount); for (; *bf; *bf++, x += charGap) //size*0.7 is the distance between2 characters { glBegin(GL_QUADS); glTexCoord2f(font->bmp[(int) (*bf)][0], font->bmp[(int) (*bf)][1]); glVertex3f(x, y, 0); glTexCoord2f(font->bmp[(int) (*bf)][0] + font->tIncX, font->bmp[(int) (*bf)][1]); glVertex3f(x + size, y, 0); glColor4f(font->color.R, font->color.G, font->color.B, font->color.A); glTexCoord2f(font->bmp[(int) (*bf)][0] + font->tIncX, font->bmp[(int) (*bf)][1] + font->tIncY); glVertex3f(x + size, y + size, 0); glTexCoord2f(font->bmp[(int) (*bf)][0], font->bmp[(int) (*bf)][1] + font->tIncY); glVertex3f(x, y + size, 0); glEnd(); } restore_gl_vars(font); }