Esempio n. 1
0
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);
		}
	    }

	}
    }

}
Esempio n. 2
0
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);
}