X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=hacks%2Fglx%2Fglxfonts.c;fp=hacks%2Fglx%2Fglxfonts.c;h=0000000000000000000000000000000000000000;hp=1519006d4edb7c1726684dd94cda16e46d959261;hb=d5186197bc394e10a4402f7f6d23fbb14103bc50;hpb=6afd6db0ae9396cd7ff897ade597cd5483f49b0e diff --git a/hacks/glx/glxfonts.c b/hacks/glx/glxfonts.c deleted file mode 100644 index 1519006d..00000000 --- a/hacks/glx/glxfonts.c +++ /dev/null @@ -1,237 +0,0 @@ -/* glxfonts, Copyright (c) 2001-2014 Jamie Zawinski - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. No representations are made about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - * - * Draws 2D text over the GL scene, e.g., the FPS displays. - * Also billboarding. - * The lower-level character rendering code is in texfont.c. - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include -#include - -#ifdef HAVE_COCOA -# include "jwxyz.h" -/*# include */ -#else -# include -# include -#endif - -#ifdef HAVE_JWZGLES -# include "jwzgles.h" -#endif /* HAVE_JWZGLES */ - -#include "resources.h" -#include "glxfonts.h" -#include "texfont.h" -#include "fps.h" - - -/* These are in xlock-gl.c */ -extern void clear_gl_error (void); -extern void check_gl_error (const char *type); - -/* screenhack.h */ -extern char *progname; - - -#undef DEBUG /* Defining this causes check_gl_error() to be called inside - time-critical sections, which could slow things down (since - it might result in a round-trip, and stall of the pipeline.) - */ - -#undef countof -#define countof(x) (sizeof((x))/sizeof((*x))) - - -/* Draws the string on the window at the given pixel position. - Newlines and tab stops are honored. - Any numbers inside [] will be rendered as a subscript. - Assumes the font has been loaded as with load_texture_font(). - - If width and height are 0, then instead the text is placed - into the 3D scene at the origin, billboarded to face the - viewer. - */ -void -print_gl_string (Display *dpy, - texture_font_data *data, - int window_width, int window_height, - GLfloat x, GLfloat y, - const char *string, - Bool clear_background_p) -{ - Bool in_scene_p = (window_width == 0); - - int line_height = 0; - int lines = 0; - const char *c; - GLfloat color[4]; - - Bool tex_p = glIsEnabled (GL_TEXTURE_2D); - Bool texs_p = glIsEnabled (GL_TEXTURE_GEN_S); - Bool text_p = glIsEnabled (GL_TEXTURE_GEN_T); - Bool light_p = glIsEnabled (GL_LIGHTING); - Bool blend_p = glIsEnabled (GL_BLEND); - Bool depth_p = glIsEnabled (GL_DEPTH_TEST); - Bool cull_p = glIsEnabled (GL_CULL_FACE); - Bool fog_p = glIsEnabled (GL_FOG); - GLint oblend; - GLint ovp[4]; - -# ifndef HAVE_JWZGLES - GLint opoly[2]; - glGetIntegerv (GL_POLYGON_MODE, opoly); -# endif - - if (!in_scene_p) - glGetIntegerv (GL_VIEWPORT, ovp); - - glGetIntegerv (GL_BLEND_DST, &oblend); - glGetFloatv (GL_CURRENT_COLOR, color); - - for (c = string; *c; c++) - if (*c == '\n') lines++; - - texture_string_width (data, "m", &line_height); - y -= line_height; - - - glEnable (GL_TEXTURE_2D); - glEnable (GL_BLEND); - glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glPolygonMode (GL_FRONT, GL_FILL); - - glDisable (GL_TEXTURE_GEN_S); - glDisable (GL_TEXTURE_GEN_T); - glDisable (GL_LIGHTING); - glDisable (GL_CULL_FACE); - glDisable (GL_FOG); - - if (!in_scene_p) - glDisable (GL_DEPTH_TEST); - - /* Each matrix mode has its own stack, so we need to push/pop - them separately. - */ - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - { -# ifdef DEBUG - check_gl_error ("glPushMatrix"); -# endif - if (!in_scene_p) - glLoadIdentity(); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - { -# ifdef DEBUG - check_gl_error ("glPushMatrix"); -# endif - - if (!in_scene_p) - { - int rot = (int) current_device_rotation(); - while (rot <= -180) rot += 360; - while (rot > 180) rot -= 360; - - glLoadIdentity(); - glViewport (0, 0, window_width, window_height); - glOrtho (0, window_width, 0, window_height, -1, 1); - - if (rot > 135 || rot < -135) /* 180 */ - { - glTranslatef (window_width, window_height, 0); - glRotatef (180, 0, 0, 1); - } - else if (rot > 45) /* 90 */ - { - glTranslatef (window_width, 0, 0); - glRotatef (90, 0, 0, 1); - } - else if (rot < -45) /* 270 */ - { - glTranslatef(0, window_height, 0); - glRotatef (-90, 0, 0, 1); - } - } - -# ifdef DEBUG - check_gl_error ("glOrtho"); -# endif - - /* Let's always dropshadow the FPS and Title text. */ - if (! in_scene_p) - clear_background_p = True; - - - /* draw the text */ - - glTranslatef (x, y, 0); - - { - const XPoint offsets[] = {{ -1, -1 }, - { -1, 1 }, - { 1, 1 }, - { 1, -1 }, - { 0, 0 }}; - int i; - - glColor3f (0, 0, 0); - for (i = 0; i < countof(offsets); i++) - { - if (! clear_background_p) - i = countof(offsets)-1; - if (offsets[i].x == 0) - glColor4fv (color); - - glPushMatrix(); - glTranslatef (offsets[i].x, offsets[i].y, 0); - print_texture_string (data, string); - glPopMatrix(); - } - } - -# ifdef DEBUG - check_gl_error ("print_texture_string"); -# endif - } - glPopMatrix(); - } - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - - if (tex_p) glEnable (GL_TEXTURE_2D); else glDisable (GL_TEXTURE_2D); - if (texs_p) glEnable (GL_TEXTURE_GEN_S);/*else glDisable(GL_TEXTURE_GEN_S);*/ - if (text_p) glEnable (GL_TEXTURE_GEN_T);/*else glDisable(GL_TEXTURE_GEN_T);*/ - if (blend_p) glEnable (GL_BLEND); else glDisable (GL_BLEND); - if (light_p) glEnable (GL_LIGHTING); /*else glDisable (GL_LIGHTING);*/ - if (depth_p) glEnable (GL_DEPTH_TEST); else glDisable (GL_DEPTH_TEST); - if (cull_p) glEnable (GL_CULL_FACE); /*else glDisable (GL_CULL_FACE);*/ - if (fog_p) glEnable (GL_FOG); /*else glDisable (GL_FOG);*/ - - if (!in_scene_p) - glViewport (ovp[0], ovp[1], ovp[2], ovp[3]); - - glBlendFunc (GL_SRC_ALPHA, oblend); - -# ifndef HAVE_JWZGLES - glPolygonMode (GL_FRONT, opoly[0]); -# endif - - glMatrixMode(GL_MODELVIEW); -}