예제 #1
0
파일: test14.c 프로젝트: Safety0ff/QuesoGLC
void display(void)
{
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

  glColor3f(1.f, 0.f, 0.f);
  glLoadIdentity();
  glScalef(20.f, 20.f, 1.f);
  glTranslatef(2.f, 2.f, 0.f);
  glcDisable(GLC_HINTING_QSO);
  glcRenderString("lili without hinting (rendered at integer coordinates)");

  glLoadIdentity();
  glScalef(20.f, 20.f, 1.f);
  glTranslatef(2.025f, 3.f, 0.f);
  glcDisable(GLC_HINTING_QSO);
  glcRenderString("lili without hinting (rendered at non-integer coordinates)");

  glLoadIdentity();
  glScalef(20.f, 20.f, 1.f);
  glTranslatef(2.f, 4.f, 0.f);
  glcEnable(GLC_HINTING_QSO);
  glcRenderString("lili with hinting (rendered at integer coordinates)");

  glLoadIdentity();
  glScalef(20.f, 20.f, 1.f);
  glTranslatef(2.025f, 5.f, 0.f);
  glcEnable(GLC_HINTING_QSO);
  glcRenderString("lili with hinting (rendered at non-integer coordinates)");

  glFlush();
}
예제 #2
0
void
display(void)
{
#if 0
  int len, i;

  glClear(GL_COLOR_BUFFER_BIT);
  glPushMatrix();
  glRotatef(angle, 0.0, 0.0, 1.0);
  glTranslatef(-750, 0, 0);
  len = (int) strlen(message);
  for (i = 0; i < len; i++) {
    glutStrokeCharacter(font, message[i]);
  }
  glPopMatrix();
#else
  glPushMatrix();
  glClear(GL_COLOR_BUFFER_BIT);
  glcRotate(angle);
  glRasterPos2f(100, 100);
  glcFont(font);
  glcRenderString(message);
  glPopMatrix();
#endif
  glutSwapBuffers();
}
예제 #3
0
void SDL_print(char * label,int x, int y, double angle)
{
	glPushMatrix();
	glcRenderStyle(GLC_TEXTURE);
	glColor4f(0,0,0,1);
	glTranslatef(x, y, 1);
    	glRotatef(180,1,0,0);
   	glRotatef(angle,0,0,1);

	glScalef(14, 14, 14);
	// FIXME : add some error checking : glcGetError()
	glcRenderString(label);
	glPopMatrix();

}
예제 #4
0
void RenderPrint (int x, int y, int font, GLrgba color, const char *fmt, ...)
{
  char text[MAX_TEXT];
  va_list ap;

  text[0] = 0;
  if (fmt == NULL) return;

  va_start(ap, fmt);
  vsprintf(text, fmt, ap);
  va_end(ap);

  for (; fonts[font % FONT_COUNT].id == 0; ++font);
  glcFont(fonts[font % FONT_COUNT].id);

  glColor3fv (&color.red);
  glRasterPos2i (x, y);
  glcRenderString(text);
}
예제 #5
0
void iV_DrawTextRotated(const char *string, float XPos, float YPos, float rotation)
{
	GLint matrix_mode = 0;
	ASSERT_OR_RETURN(, string, "Couldn't render string!");
	pie_SetTexturePage(TEXPAGE_EXTERN);

	glGetIntegerv(GL_MATRIX_MODE, &matrix_mode);
	glMatrixMode(GL_TEXTURE);
	glPushMatrix();
	glLoadIdentity();
	glMatrixMode(GL_MODELVIEW);
	glPushMatrix();

	if (rotation != 0.f)
	{
		rotation = 360.f - rotation;
	}

	glTranslatef(XPos, YPos, 0.f);
	glRotatef(180.f, 1.f, 0.f, 0.f);
	glRotatef(rotation, 0.f, 0.f, 1.f);
	glScalef(font_size, font_size, 0.f);

	glColor4fv(font_colour);

	glFrontFace(GL_CW);
	glcRenderString(string);
	glFrontFace(GL_CCW);

	glPopMatrix();
	glMatrixMode(GL_TEXTURE);
	glPopMatrix();
	glMatrixMode(matrix_mode);

	// Reset the current model view matrix
	glLoadIdentity();
}
예제 #6
0
void display(void)
{
  int i = 0;
  GLfloat baseline[4] = {0.f, 0.f, 0.f, 0.f};
  GLfloat bbox[8] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f};

  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

  glColor3f(1.f, 0.f, 0.f);
  glRasterPos2f(50.f, 50.f);
  glcRenderString("Hello world!");

  /* Render "H" and its bounding box */
  glColor3f(0.f, 1.f, 1.f);
  glTranslatef(50.f, 50.f, 0.f);
  glcGetCharMetric('H', GLC_BOUNDS, bbox);
  glBegin(GL_LINE_LOOP);
  for (i = 0; i < 4; i++)
    glVertex2fv(&bbox[2*i]);
  glEnd();

  /* Translate the model view matrix of the width of "H" */
  glcGetCharMetric('H', GLC_BASELINE, baseline);
  glTranslatef(baseline[2] - baseline[0], baseline[3] - baseline[1], 0.f);

  /* Render the bouding box of "ello" */
  glcMeasureString(GL_FALSE, "ello");
  glcGetStringMetric(GLC_BOUNDS, bbox);
  glBegin(GL_LINE_LOOP);
  for (i = 0; i < 4; i++)
    glVertex2fv(&bbox[2*i]);
  glEnd();
  glLoadIdentity();

  glFlush();
}
예제 #7
0
void testApp::drawString()
{
	glEnable(GL_TEXTURE_2D);
	
	glPushMatrix(); {
	
		glTranslatef(ofGetWidth()/2, ofGetHeight()/2 + 10, 0);

		//glRotatef(60, 1, 0, 0);
	
		static float rot = 0;
		glRotatef(-rot, 0, 1, 0);
		if (rot > 360) rot = 0;
		rot += 0.2;

		ofPushStyle(); {
			ofEnableAlphaBlending();
			ofSetColor(255, 255, 255, 127);

			glPushMatrix(); {
				glTranslatef(30, -50, 0);
				glScalef(32, -32, 1);
				char *c;
				sprintf(c, "#%02d", current+1);
				glcRenderString(c);
			} glPopMatrix();

			glPushMatrix(); {
				glTranslatef(30, 0, 0);
				glScalef(32, -32, 1);
				glcRenderString(cities[current].address.c_str());
			} glPopMatrix();
	
			glPushMatrix(); {
				glTranslatef(30, 50, 0);
				glScalef(32, -32, 1);

				time_t rawtime;
				time(&rawtime);
				tm *ptm = gmtime(&rawtime);
				
				time_t localtime = mktime(ptm);
				localtime += cities[current].offset * 3600;
				char *str = ctime(&localtime);
				glcRenderString(str);
			} glPopMatrix();

			ofDisableAlphaBlending();
		} ofPopStyle();

		// draw input string
		glPushMatrix();
		glTranslatef(30, 100, 0);
		glScalef(32, -32, 1);
		//glColor3f(0.f, 1.f, 0.f);
		ofPushStyle();
		ofSetColor(0, 255, 0);
		if (showError) {
			glcRenderString(error.c_str());
		} else {
			glcRenderString(input.c_str());
		}		
		ofPopStyle();
		glPopMatrix();

	} glPopMatrix();
	
}
예제 #8
0
파일: test12.c 프로젝트: Safety0ff/QuesoGLC
void display(void)
{
  int i = 0;
  GLfloat bbox[8] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
  GLfloat bbox2[8] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
  char string[20];

  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

  /* Render GLC_BITMAP without kerning */
  glLoadIdentity();
  glColor3f(1.f, 0.f, 0.f);
  glRasterPos2f(50.f, 50.f);
  glcDisable(GLC_KERNING_QSO);
  glcRenderStyle(GLC_BITMAP);
  glcLoadIdentity();
  glcScale(100.f, 100.f);
  glcRenderString("VAV");
  glcMeasureString(GL_FALSE, "VAV");
  glcGetStringMetric(GLC_BOUNDS, bbox);
  glColor3f(0.f, 1.f, 1.f);
  glTranslatef(50.f, 50.f, 0.f);
  glBegin(GL_LINE_LOOP);
  for (i = 0; i < 4; i++)
    glVertex2fv(&bbox[2*i]);
  glEnd();
  /* Display the dimensions */
  snprintf(string, 20, "%f", bbox[2] - bbox[0]);
  glcEnable(GLC_HINTING_QSO);
  glcScale(0.15f, 0.15f);
  glcMeasureString(GL_FALSE, string);
  glcGetStringMetric(GLC_BOUNDS, bbox2);
  glColor3f(1.f, 1.f, 1.f);
  glBegin(GL_LINE);
  glVertex2fv(bbox);
  glVertex2f(bbox[0], bbox[1] - 40.f);
  glVertex2fv(&bbox[2]);
  glVertex2f(bbox[2], bbox[3] - 40.f);
  glVertex2f(bbox[0], bbox[1] - 30.f);
  glVertex2f(bbox[2], bbox[3] - 30.f);
  glEnd();
  glBegin(GL_LINE_LOOP);
  glVertex2f(bbox[0] + 5.f, bbox[1] - 25.f);
  glVertex2f(bbox[0], bbox[1] - 30.f);
  glVertex2f(bbox[0] + 5.f, bbox[1] - 35.f);
  glEnd();
  glBegin(GL_LINE_LOOP);
  glVertex2f(bbox[2] - 5.f, bbox[1] - 25.f);
  glVertex2f(bbox[2], bbox[1] - 30.f);
  glVertex2f(bbox[2] - 5.f, bbox[1] - 35.f);
  glEnd();
  glLoadIdentity();
  glRasterPos2f(floor((bbox[2] - bbox[0]
		       - (bbox2[2] - bbox2[0])) * 50.f) / 100.f + 50.f,
		floorf((bbox[1] + 23.f) * 100.f) / 100.f);
  glcRenderString(string);
  glcDisable(GLC_HINTING_QSO);

  /* Render GLC_TEXTURE without kerning */
  glLoadIdentity();
  glcRenderStyle(GLC_TEXTURE);
  glColor3f(1.f, 0.f, 0.f);
  glScalef(100.f, 100.f, 1.f);
  glTranslatef(3.f, 0.5f, 0.f);
  glPushMatrix();
  /* In order to reproduce the conditions of bug #1987563, GLC_GL_OBJECTS must
   * be disabled when rendering GLC_TEXTURE w/o kerning.
   */
  glcRenderString("VAV");
  glPopMatrix();
  glcMeasureString(GL_TRUE, "VAV");
  glcGetStringCharMetric(1, GLC_BOUNDS, bbox);
  glColor3f(0.f, 1.f, 0.f);
  glBegin(GL_LINE_LOOP);
  for (i = 0; i < 4; i++)
    glVertex2fv(&bbox[2*i]);
  glEnd();
  glcGetStringMetric(GLC_BOUNDS, bbox);
  glColor3f(0.f, 1.f, 1.f);
  glBegin(GL_LINE_LOOP);
  for (i = 0; i < 4; i++)
    glVertex2fv(&bbox[2*i]);
  glEnd();
  /* Display the dimensions */
  snprintf(string, 20, "%f", (bbox[2] - bbox[0]) * 100.f);
  glcEnable(GLC_HINTING_QSO);
  glcMeasureString(GL_FALSE, string);
  glcGetStringMetric(GLC_BOUNDS, bbox2);
  glColor3f(1.f, 1.f, 1.f);
  glBegin(GL_LINE);
  glVertex2fv(bbox);
  glVertex2f(bbox[0], bbox[1] - 0.4f);
  glVertex2fv(&bbox[2]);
  glVertex2f(bbox[2], bbox[3] - 0.4f);
  glVertex2f(bbox[0], bbox[1] - 0.3f);
  glVertex2f(bbox[2], bbox[3] - 0.3f);
  glEnd();
  glBegin(GL_LINE_LOOP);
  glVertex2f(bbox[0] + 0.05f, bbox[1] - 0.25f);
  glVertex2f(bbox[0], bbox[1] - 0.3f);
  glVertex2f(bbox[0] + 0.05f, bbox[1] - 0.35f);
  glEnd();
  glBegin(GL_LINE_LOOP);
  glVertex2f(bbox[2] - 0.05f, bbox[1] - 0.25f);
  glVertex2f(bbox[2], bbox[1] - 0.3f);
  glVertex2f(bbox[2] - 0.05f, bbox[1] - 0.35f);
  glEnd();
  /* When hinting is enabled, characters must be rendered at integer positions
   * otherwise hinting is compromised and characters look fuzzy.
   */
  glTranslatef(floorf((bbox[2] - bbox[0]
		       - (bbox2[2] - bbox2[0]) * 0.15f) * 50.f) / 100.f,
	       floorf((bbox[1] - 0.27f) * 100.f) / 100.f, 0.f);
  glScalef(0.15f, 0.15f, 1.f);
  glcRenderString(string);
  glcDisable(GLC_HINTING_QSO);

  /* Render GLC_BITMAP with kerning */
  glColor3f(1.f, 0.f, 0.f);
  glcEnable(GLC_KERNING_QSO);
  glcRenderStyle(GLC_BITMAP);
  glcLoadIdentity();
  glcScale(100.f, 100.f);
  glLoadIdentity();
  glRasterPos2f(50.f, 150.f);
  glcRenderString("VAV");
  glcMeasureString(GL_FALSE, "VAV");
  glcGetStringMetric(GLC_BOUNDS, bbox);
  glColor3f(0.f, 1.f, 1.f);
  glTranslatef(50.f, 150.f, 0.f);
  glBegin(GL_LINE_LOOP);
  for (i = 0; i < 4; i++)
    glVertex2fv(&bbox[2*i]);
  glEnd();
  /* Display the dimensions */
  snprintf(string, 20, "%f", bbox[4] - bbox[6]);
  glcEnable(GLC_HINTING_QSO);
  glcScale(0.15f, 0.15f);
  glcMeasureString(GL_FALSE, string);
  glcGetStringMetric(GLC_BOUNDS, bbox2);
  glColor3f(1.f, 1.f, 1.f);
  glBegin(GL_LINE);
  glVertex2fv(&bbox[4]);
  glVertex2f(bbox[4], bbox[5] + 40.f);
  glVertex2fv(&bbox[6]);
  glVertex2f(bbox[6], bbox[7] + 40.f);
  glVertex2f(bbox[4], bbox[5] + 30.f);
  glVertex2f(bbox[6], bbox[7] + 30.f);
  glEnd();
  glBegin(GL_LINE_LOOP);
  glVertex2f(bbox[4] - 5.f, bbox[5] + 25.f);
  glVertex2f(bbox[4], bbox[5] + 30.f);
  glVertex2f(bbox[4] - 5.f, bbox[5] + 35.f);
  glEnd();
  glBegin(GL_LINE_LOOP);
  glVertex2f(bbox[6] + 5.f, bbox[7] + 25.f);
  glVertex2f(bbox[6], bbox[7] + 30.f);
  glVertex2f(bbox[6] + 5.f, bbox[7] + 35.f);
  glEnd();
  glLoadIdentity();
  glRasterPos2f(floorf((bbox[4] - bbox[6]
			- (bbox2[4] - bbox2[6])) * 50.f) / 100.f + 50.f,
		bbox[7] + 183.f);
  glcRenderString(string);
  glcScale(2.f, 2.f);
  glcMeasureString(GL_FALSE, "GL_BITMAP");
  glcGetStringMetric(GLC_BOUNDS, bbox2);
  glRasterPos2f(floorf((bbox[2] - bbox[0]
			- (bbox2[2] - bbox2[0])) * 50.f) / 100.f + 50.f,
		300.f);
  glcRenderString("GL_BITMAP");
  glcDisable(GLC_HINTING_QSO);

  /* Render GLC_TEXTURE with kerning */
  glLoadIdentity();
  glcRenderStyle(GLC_TEXTURE);
  glColor3f(1.f, 0.f, 0.f);
  glScalef(100.f, 100.f, 1.f);
  glTranslatef(3.f, 1.5f, 0.f);
  glPushMatrix();
  glcRenderString("VAV");
  glPopMatrix();
  glcMeasureString(GL_TRUE, "VAV");
  glcGetStringCharMetric(1, GLC_BOUNDS, bbox);
  glColor3f(0.f, 1.f, 0.f);
  glBegin(GL_LINE_LOOP);
  for (i = 0; i < 4; i++)
    glVertex2fv(&bbox[2*i]);
  glEnd();
  glcGetStringMetric(GLC_BOUNDS, bbox);
  glColor3f(0.f, 1.f, 1.f);
  glBegin(GL_LINE_LOOP);
  for (i = 0; i < 4; i++)
    glVertex2fv(&bbox[2*i]);
  glEnd();
  /* Display the dimensions */
  snprintf(string, 20, "%f", (bbox[4] - bbox[6]) * 100.f);
  glcEnable(GLC_HINTING_QSO);
  glcMeasureString(GL_FALSE, string);
  glcGetStringMetric(GLC_BOUNDS, bbox2);
  glColor3f(1.f, 1.f, 1.f);
  glBegin(GL_LINE);
  glVertex2fv(&bbox[4]);
  glVertex2f(bbox[4], bbox[5] + 0.4f);
  glVertex2fv(&bbox[6]);
  glVertex2f(bbox[6], bbox[7] + 0.4f);
  glVertex2f(bbox[4], bbox[5] + 0.3f);
  glVertex2f(bbox[6], bbox[7] + 0.3f);
  glEnd();
  glBegin(GL_LINE_LOOP);
  glVertex2f(bbox[6] + 0.05f, bbox[7] + 0.25f);
  glVertex2f(bbox[6], bbox[7] + 0.3f);
  glVertex2f(bbox[6] + 0.05f, bbox[7] + 0.35f);
  glEnd();
  glBegin(GL_LINE_LOOP);
  glVertex2f(bbox[4] - 0.05f, bbox[5] + 0.25f);
  glVertex2f(bbox[4], bbox[5] + 0.3f);
  glVertex2f(bbox[4] - 0.05f, bbox[5] + 0.35f);
  glEnd();
  glPushMatrix();
  glTranslatef(floorf((bbox[4] - bbox[6]
		       - (bbox2[4] - bbox2[6]) * 0.15f) *50.f) / 100.f,
	       floorf((bbox[5] + 0.33f) * 100.f) / 100.f, 0.f);
  glScalef(0.15f, 0.15f, 1.f);
  glcRenderString(string);
  glPopMatrix();
  glcMeasureString(GL_FALSE, "GL_TEXTURE");
  glcGetStringMetric(GLC_BOUNDS, bbox2);
  glTranslatef(floorf((bbox[2] - bbox[0]
		       - (bbox2[2] - bbox2[0]) * 0.3f) * 50.f)  / 100.f,
	       1.5f, 0.f);
  glScalef(0.3f, 0.3f, 1.f);
  glcRenderString("GL_TEXTURE");
  glcDisable(GLC_HINTING_QSO);

  glFlush();
}