From http://www.jwz.org/xscreensaver/xscreensaver-5.35.tar.gz
[xscreensaver] / hacks / glx / texfont.h
index 13f8cef2759c003306430de5cec6b7248c1457a8..8f86dab21b3bdd53bccfbd129af4729a37732647 100644 (file)
@@ -1,4 +1,4 @@
-/* texfonts, Copyright (c) 2005-2014 Jamie Zawinski <jwz@jwz.org>
+/* texfonts, Copyright (c) 2005-2016 Jamie Zawinski <jwz@jwz.org>
  * Loads X11 fonts into textures for use with OpenGL.
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
@@ -20,10 +20,12 @@ typedef struct texture_font_data texture_font_data;
 */
 extern texture_font_data *load_texture_font (Display *, char *res);
 
-/* Bounding box of the multi-line string, in pixels.
+/* Bounding box of the multi-line string, in pixels,
+   and overall ascent/descent of the font.
  */
-extern int texture_string_width (texture_font_data *, const char *,
-                                 int *height_ret);
+extern void texture_string_metrics (texture_font_data *, const char *,
+                                    XCharStruct *metrics_ret,
+                                    int *ascent_ret, int *descent_ret);
 
 /* Draws the string in the scene at the origin.
    Newlines and tab stops are honored.
@@ -32,8 +34,39 @@ extern int texture_string_width (texture_font_data *, const char *,
  */
 extern void print_texture_string (texture_font_data *, const char *);
 
+/* 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().
+
+   Position is 0 for center, 1 for top left, 2 for bottom left.
+ */
+void print_texture_label (Display *, texture_font_data *,
+                          int window_width, int window_height,
+                          int position, const char *string);
+
+/* Renders the given string into the prevailing texture.
+   Returns the metrics of the text, and size of the texture.
+ */
+void string_to_texture (texture_font_data *, const char *,
+                        XCharStruct *extents_ret,
+                        int *tex_width_ret, int *tex_height_ret);
+
+/* Set the various OpenGL parameters for properly rendering things
+   with a texture generated by string_to_texture().
+ */
+void enable_texture_string_parameters (void);
+
+
 /* Releases the texture font.
  */
 extern void free_texture_font (texture_font_data *);
 
+
+#ifdef HAVE_JWXYZ
+extern char *texfont_unicode_character_name (texture_font_data *,
+                                             unsigned long uc);
+#endif
+
+
 #endif /* __TEXTURE_FONT_H__ */