nuclear@31: /* The "simple" example, modified to use a pre-built glyphmap instead of using freetype. nuclear@31: * This can be used when using libdrawtext-noft (built without freetype support/dependency). nuclear@31: * nuclear@31: * There is only one difference between this, and the regular usage demonstrated in nuclear@31: * examples/simple, and it's marked with an XXX comment in the code. For the rest of nuclear@31: * the details of libdrawtext usage in this code, refer to examples/simple/simple.c. nuclear@22: */ nuclear@22: #include nuclear@22: #include nuclear@22: nuclear@22: #ifndef __APPLE__ nuclear@22: #include nuclear@22: #else nuclear@22: #include nuclear@22: #endif nuclear@22: nuclear@22: #include "drawtext.h" nuclear@22: nuclear@22: void disp(void); nuclear@22: void reshape(int x, int y); nuclear@22: void keyb(unsigned char key, int x, int y); nuclear@22: nuclear@22: struct dtx_font *font; nuclear@22: nuclear@22: int main(int argc, char **argv) nuclear@22: { nuclear@22: glutInit(&argc, argv); nuclear@22: glutInitWindowSize(512, 384); nuclear@22: glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); nuclear@22: glutCreateWindow("libdrawtext example: simple"); nuclear@22: nuclear@22: glutDisplayFunc(disp); nuclear@22: glutReshapeFunc(reshape); nuclear@22: glutKeyboardFunc(keyb); nuclear@22: nuclear@31: /* XXX: only difference is that we have to call dtx_open_font_glyphmap, nuclear@31: * instead of dtx_open_font, passing it the filename of a pre-built nuclear@31: * glyphmap (see tools/font2glyphmap). nuclear@31: */ nuclear@22: if(!(font = dtx_open_font_glyphmap("serif_s24.glyphmap"))) { nuclear@22: fprintf(stderr, "failed to open font\n"); nuclear@22: return 1; nuclear@22: } nuclear@22: dtx_use_font(font, 24); nuclear@22: nuclear@22: glutMainLoop(); nuclear@22: return 0; nuclear@22: } nuclear@22: nuclear@22: const char *text = "Some sample text goes here.\n" nuclear@22: "Yada yada yada, more text...\n" nuclear@22: "foobar xyzzy\n"; nuclear@22: nuclear@22: void disp(void) nuclear@22: { nuclear@22: glClear(GL_COLOR_BUFFER_BIT); nuclear@22: nuclear@22: glMatrixMode(GL_MODELVIEW); nuclear@22: glLoadIdentity(); nuclear@22: nuclear@22: glPushMatrix(); nuclear@22: glTranslatef(-200, 150, 0); nuclear@22: glColor3f(1, 1, 1); nuclear@22: dtx_string(text); nuclear@22: glPopMatrix(); nuclear@22: nuclear@22: glPushMatrix(); nuclear@22: glTranslatef(-200, 50, 0); nuclear@22: glScalef(2, 0.7, 1); nuclear@22: glColor3f(0.6, 0.7, 1.0); nuclear@22: dtx_string(text); nuclear@22: glPopMatrix(); nuclear@22: nuclear@22: glPushMatrix(); nuclear@22: glTranslatef(-80, -90, 0); nuclear@22: glRotatef(20, 0, 0, 1); nuclear@22: glColor3f(1.0, 0.7, 0.6); nuclear@22: dtx_string(text); nuclear@22: glPopMatrix(); nuclear@22: nuclear@22: glutSwapBuffers(); nuclear@22: } nuclear@22: nuclear@22: void reshape(int x, int y) nuclear@22: { nuclear@22: glViewport(0, 0, x, y); nuclear@22: nuclear@22: glMatrixMode(GL_PROJECTION); nuclear@22: glLoadIdentity(); nuclear@22: glOrtho(-x/2, x/2, -y/2, y/2, -1, 1); nuclear@22: } nuclear@22: nuclear@22: void keyb(unsigned char key, int x, int y) nuclear@22: { nuclear@22: if(key == 27) { nuclear@22: exit(0); nuclear@22: } nuclear@22: }