nuclear@1: /* Simple libdrawtext example. nuclear@1: * nuclear@1: * Important parts are marked with XXX comments. nuclear@1: */ nuclear@1: #include nuclear@1: #include nuclear@1: nuclear@1: #ifndef __APPLE__ nuclear@1: #include nuclear@1: #else nuclear@1: #include nuclear@1: #endif nuclear@1: nuclear@1: #include "drawtext.h" nuclear@1: nuclear@1: void disp(void); nuclear@1: void reshape(int x, int y); nuclear@1: void keyb(unsigned char key, int x, int y); nuclear@1: nuclear@1: /* XXX fonts are represented by the opaque struct dtx_font type, so you nuclear@1: * need to create at least one with dtx_open_font (see main). nuclear@1: */ nuclear@1: struct dtx_font *font; nuclear@1: nuclear@1: int main(int argc, char **argv) nuclear@1: { nuclear@1: glutInit(&argc, argv); nuclear@1: glutInitWindowSize(512, 384); nuclear@1: glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); nuclear@1: glutCreateWindow("libdrawtext example: simple"); nuclear@1: nuclear@1: glutDisplayFunc(disp); nuclear@1: glutReshapeFunc(reshape); nuclear@1: glutKeyboardFunc(keyb); nuclear@1: nuclear@1: /* XXX dtx_open_font opens a font file and returns a pointer to dtx_font */ nuclear@1: if(!(font = dtx_open_font("serif.ttf", 24))) { nuclear@1: fprintf(stderr, "failed to open font\n"); nuclear@1: return 1; nuclear@1: } nuclear@1: /* XXX select the font and size to render with by calling dtx_use_font nuclear@1: * if you want to use a different font size, you must first call: nuclear@1: * dtx_prepare(font, size) once. nuclear@1: */ nuclear@1: dtx_use_font(font, 24); nuclear@1: nuclear@1: glutMainLoop(); nuclear@1: return 0; nuclear@1: } nuclear@1: nuclear@1: const char *text = "Some sample text goes here.\n" nuclear@1: "Yada yada yada, more text...\n" nuclear@1: "foobar xyzzy\n"; nuclear@1: nuclear@1: void disp(void) nuclear@1: { nuclear@1: glClear(GL_COLOR_BUFFER_BIT); nuclear@1: nuclear@1: glMatrixMode(GL_MODELVIEW); nuclear@1: glLoadIdentity(); nuclear@1: nuclear@1: glPushMatrix(); nuclear@1: glTranslatef(-200, 150, 0); nuclear@1: glColor3f(1, 1, 1); nuclear@1: /* XXX call dtx_string to draw utf-8 text. nuclear@1: * any transformations and the current color apply nuclear@1: */ nuclear@1: dtx_string(text); nuclear@1: glPopMatrix(); nuclear@1: nuclear@1: glPushMatrix(); nuclear@1: glTranslatef(-200, 50, 0); nuclear@1: glScalef(2, 0.7, 1); nuclear@1: glColor3f(0.6, 0.7, 1.0); nuclear@1: dtx_string(text); nuclear@1: glPopMatrix(); nuclear@1: nuclear@1: glPushMatrix(); nuclear@1: glTranslatef(-80, -90, 0); nuclear@1: glRotatef(20, 0, 0, 1); nuclear@1: glColor3f(1.0, 0.7, 0.6); nuclear@1: dtx_string(text); nuclear@1: glPopMatrix(); nuclear@1: nuclear@1: glutSwapBuffers(); nuclear@1: } nuclear@1: nuclear@1: void reshape(int x, int y) nuclear@1: { nuclear@1: glViewport(0, 0, x, y); nuclear@1: nuclear@1: glMatrixMode(GL_PROJECTION); nuclear@1: glLoadIdentity(); nuclear@1: glOrtho(-x/2, x/2, -y/2, y/2, -1, 1); nuclear@1: } nuclear@1: nuclear@1: void keyb(unsigned char key, int x, int y) nuclear@1: { nuclear@1: if(key == 27) { nuclear@1: exit(0); nuclear@1: } nuclear@1: }