[Tux4kids-commits] r923 - in tuxtype/trunk: doc src

dbruce-guest at alioth.debian.org dbruce-guest at alioth.debian.org
Wed Mar 4 21:04:04 UTC 2009


Author: dbruce-guest
Date: 2009-03-04 21:04:04 +0000 (Wed, 04 Mar 2009)
New Revision: 923

Modified:
   tuxtype/trunk/doc/ChangeLog
   tuxtype/trunk/src/SDL_extras.c
   tuxtype/trunk/src/SDL_extras.h
   tuxtype/trunk/src/alphabet.c
   tuxtype/trunk/src/funcs.h
   tuxtype/trunk/src/globals.h
   tuxtype/trunk/src/loaders.c
   tuxtype/trunk/src/practice.c
   tuxtype/trunk/src/scripting.c
   tuxtype/trunk/src/setup.c
Log:
removal of rest of traces of SDL_ttf from files other than SDL_extras.c/.h



Modified: tuxtype/trunk/doc/ChangeLog
===================================================================
--- tuxtype/trunk/doc/ChangeLog	2009-03-04 19:16:51 UTC (rev 922)
+++ tuxtype/trunk/doc/ChangeLog	2009-03-04 21:04:04 UTC (rev 923)
@@ -1,3 +1,7 @@
+03 Mar 2009 (svn.debian.org/tux4kids - revision 923)
+[ David Bruce <davidstuartbruce at gmail.com> ]
+        - Text drawing -
+
 22 Feb 2009 svn revision 903
 [ David Bruce <davidstuartbruce at gmail.com> ]
         - lots of general code cleanup to eliminate most of the compiler warnings, 

Modified: tuxtype/trunk/src/SDL_extras.c
===================================================================
--- tuxtype/trunk/src/SDL_extras.c	2009-03-04 19:16:51 UTC (rev 922)
+++ tuxtype/trunk/src/SDL_extras.c	2009-03-04 21:04:04 UTC (rev 923)
@@ -585,19 +585,20 @@
 //#undef HAVE_LIBSDL_PANGO
 
 
-#define MAX_FONT_SIZE 40
+#define MAX_FONT_SIZE 72
 
 /*-- file-scope variables and local file prototypes for SDL_Pango-based code: */
 #ifdef HAVE_LIBSDL_PANGO
 #include "SDL_Pango.h"
 SDLPango_Context* context = NULL;
+static int current_pango_font_size = 0;
 static SDLPango_Matrix* SDL_Colour_to_SDLPango_Matrix(const SDL_Color* cl);
-
+static int Set_SDL_Pango_Font_Size(int size);
 /*-- file-scope variables and local file prototypes for SDL_ttf-based code: */
 #else
 #include "SDL_ttf.h"
 /* We cache fonts here once loaded to improve performance: */
-TTF_Font* font_list[MAX_FONT_SIZE] = {NULL};
+TTF_Font* font_list[MAX_FONT_SIZE + 1] = {NULL};
 static void free_font_list(void);
 static TTF_Font* get_font(int size);
 static TTF_Font* load_font(const char* font_name, int font_size);
@@ -606,14 +607,6 @@
 
 
 
-void reset_DPI_SDLPango_Context(float dpi_x, float dpi_y)
-{
-#ifdef HAVE_LIBSDL_PANGO
-  SDLPango_SetDpi(context, dpi_x, dpi_y);
-#endif
-}
-
-
 /* "Public" functions called from other files that use either */
 /*SDL_Pango or SDL_ttf:                                       */
 
@@ -623,15 +616,11 @@
 int Setup_SDL_Text(void)
 {
 #ifdef HAVE_LIBSDL_PANGO
-  char buf[64];
 
   LOG("Setup_SDL_Text() - using SDL_Pango\n");
 
   SDLPango_Init();
-
-  snprintf(buf, 64, "[%s][][%d]", DEFAULT_FONT_NAME, DEFAULT_MENU_FONT_SIZE);
-  context =  SDLPango_CreateContext_GivenFontDesc(buf);
-  if (!context)
+  if (!Set_SDL_Pango_Font_Size(DEFAULT_MENU_FONT_SIZE))
   {
     fprintf(stderr, "\nError: I could not set SDL_Pango context\n");
     return 0;
@@ -684,27 +673,27 @@
 #ifdef HAVE_LIBSDL_PANGO
   if (!context)
   {
-    fprintf(stderr, "BlackOutline(): invalid SDL_Pango context - returning.");
+    fprintf(stderr, "BlackOutline(): invalid SDL_Pango context - returning.\n");
     return NULL;
   }
 #else
-  TTF_Font* font = get_font(DEFAULT_FONT_NAME, size);
+  TTF_Font* font = get_font(font_size);
   if (!font)
   {
-    fprintf(stderr, "BlackOutline(): could not load needed font - returning.");
+    fprintf(stderr, "BlackOutline(): could not load needed font - returning.\n");
     return NULL;
   }
 #endif
 
   if (!t || !c)
   {
-    fprintf(stderr, "BlackOutline(): invalid ptr parameter, returning.");
+    fprintf(stderr, "BlackOutline(): invalid ptr parameter, returning.\n");
     return NULL;
   }
 
   if (t[0] == '\0')
   {
-    fprintf(stderr, "BlackOutline(): empty string, returning");
+    fprintf(stderr, "BlackOutline(): empty string, returning\n");
     return NULL;
   }
 
@@ -715,6 +704,7 @@
 }
 
 #ifdef HAVE_LIBSDL_PANGO
+  Set_SDL_Pango_Font_Size(font_size);
   SDLPango_SetDefaultColor(context, MATRIX_TRANSPARENT_BACK_BLACK_LETTER);
   SDLPango_SetText(context, t, -1);
   black_letters = SDLPango_CreateSurfaceDraw(context);
@@ -831,20 +821,46 @@
   return BlackOutline(tmp, font_size, c);
 }
 
+/* This (fast) function just returns a non-outlined surf */
+/* using either SDL_Pango or SDL_ttf                     */
+SDL_Surface* SimpleText(const char *t, int size, SDL_Color* col)
+{
+  SDL_Surface* surf = NULL;
 
+  if (!t||!col)
+    return NULL;
 
-/* When SDL_Pango is used, the ttf font sizes are ignored    */
-/* by BlackOutline(), so we adjust dpi to scale the fonts:     */
-/* HACK this isn't quite the intended use of SDLPango_SetDpi() */
-void ScaleDPIforFS(void)
-{
 #ifdef HAVE_LIBSDL_PANGO
+  if (!context)
   {
-   float dpi_x, dpi_y;
-   dpi_x = dpi_y = 125 * ((float)screen->h/(float)480);
-   reset_DPI_SDLPango_Context(dpi_x, dpi_y);
+    fprintf(stderr, "SimpleText() - context not valid!\n");
+    return NULL;
   }
+  else
+  {
+    SDLPango_Matrix colormatrix = 
+    {
+      col->r,  col->r,  0,  0,
+      col->g,  col->g,  0,  0,
+      col->b,  col->b,  0,  0,
+      0,      255,      0,  0,
+    };
+    Set_SDL_Pango_Font_Size(size);
+    SDLPango_SetDefaultColor(context, &colormatrix );
+    SDLPango_SetText(context, t, -1);
+    surf = SDLPango_CreateSurfaceDraw(context);
+  }
+
+#else
+  {
+    TTF_Font* font = get_font(size);
+    if (!font)
+      return NULL;
+    surf = TTF_RenderUTF8_Blended(font, t, *col);
+  }
 #endif
+
+  return surf;
 }
 
 
@@ -856,8 +872,38 @@
 
 
 #ifdef HAVE_LIBSDL_PANGO
-/* Local functions when using SDL_Pango:   */
 
+/* Local functions when using SDL_Pango: -------------------------------   */
+
+/* FIXME the '0.7' a few lines down is to compensate for the larger font size   */
+/* that SDL_Pango generates relative to a TTF_Font of the same numerical size - */
+/* this was picked by trial and error, ought to understand this better - DSB    */
+static int Set_SDL_Pango_Font_Size(int size)
+{
+  /* Do nothing unless we need to change size: */
+  if (size == current_pango_font_size)
+    return 1;
+  else
+  {
+    char buf[64];
+    DEBUGCODE { fprintf(stderr, "Setting font size to %d\n", size); }
+    if(context != NULL)
+      SDLPango_FreeContext(context);
+    context = NULL;
+    snprintf(buf, sizeof(buf), "%s %d", DEFAULT_FONT_NAME, (int)(size * 0.7));
+    context =  SDLPango_CreateContext_GivenFontDesc(buf);
+  }
+
+  if (!context)
+    return 0;
+  else
+  {
+    current_pango_font_size = size;
+    return 1;
+  }
+}
+
+
 SDLPango_Matrix* SDL_Colour_to_SDLPango_Matrix(const SDL_Color *cl)
 {
   int k = 0;
@@ -911,12 +957,19 @@
 /* font in memory once loaded until cleanup.                  */
 static TTF_Font* get_font(int size)
 {
-  if (size < 0 || size > MAX_FONT_SIZE)
+  if (size < 0)
   {
-    fprintf(stderr, "Error - requested font size %d is invalid\n", size);
+    fprintf(stderr, "Error - requested font size %d is negative\n", size);
     return NULL;
   }
 
+  if (size > MAX_FONT_SIZE)
+  {
+    fprintf(stderr, "Error - requested font size %d exceeds max = %d, resetting.\n",
+            size, MAX_FONT_SIZE);
+    size = MAX_FONT_SIZE;
+  }
+
   if(font_list[size] == NULL)
     font_list[size] = load_font(DEFAULT_FONT_NAME, size);
   return font_list[size];

Modified: tuxtype/trunk/src/SDL_extras.h
===================================================================
--- tuxtype/trunk/src/SDL_extras.h	2009-03-04 19:16:51 UTC (rev 922)
+++ tuxtype/trunk/src/SDL_extras.h	2009-03-04 21:04:04 UTC (rev 923)
@@ -17,7 +17,6 @@
 #include "../config.h"
 
 #include "SDL.h"
-#include "SDL_ttf.h"
 
 
 #if SDL_BYTEORDER == SDL_BIG_ENDIAN
@@ -43,22 +42,13 @@
 int WaitForKeypress(void);
 SDL_Surface* Blend(SDL_Surface *S1, SDL_Surface *S2,float gamma);
 SDL_Surface* zoom(SDL_Surface * src, int new_w, int new_h);
-void ScaleDPIforFS(void);
-void ResetDPI(void);
 
-/* These functions are the only code in the program that directly use SDL_Pango */
-/* If SDL_Pango not available, they fall back to SDL_ttf or do nothing,         */
-/* as appropriate.                                                              */
-SDL_Surface* BlackOutline(const char* t, int font_size, const SDL_Color* c);
-SDL_Surface* BlackOutline_w(const wchar_t* t, int font_size, const SDL_Color* c, int length);
-
-void reset_DPI_SDLPango_Context(float dpi_x, float dpi_y);
-
 /*Text rendering functions: */
 int Setup_SDL_Text(void);
 void Cleanup_SDL_Text(void);
-//SDL_Surface* BlackOutline(const char* t, int size, SDL_Color* c);
-//SDL_Surface* SimpleText(const char *t, int size, SDL_Color* col);
+SDL_Surface* BlackOutline(const char* t, int font_size, const SDL_Color* c);
+SDL_Surface* BlackOutline_w(const wchar_t* t, int font_size, const SDL_Color* c, int length);
+SDL_Surface* SimpleText(const char *t, int size, SDL_Color* col);
 //SDL_Surface* SimpleTextWithOffset(const char *t, int size, SDL_Color* col, int *glyph_offset);
 
 #endif

Modified: tuxtype/trunk/src/alphabet.c
===================================================================
--- tuxtype/trunk/src/alphabet.c	2009-03-04 19:16:51 UTC (rev 922)
+++ tuxtype/trunk/src/alphabet.c	2009-03-04 21:04:04 UTC (rev 923)
@@ -276,7 +276,6 @@
     fprintf(stderr, "GetIndex - Unicode char '%C' not found in list.\n", uni_char);
     return -1;
   }
-  fprintf(stderr, "Done with GetIndex()\n");
 
   return i;
 }
@@ -1178,8 +1177,9 @@
   int col;
   char row;
   int render = 1;
-  Uint16 t[2];
-  TTF_Font* smallfont = NULL;
+  wchar_t t[2];
+  char buf[8];
+//  TTF_Font* smallfont = NULL;
 
   DEBUGCODE { printf("Entering GenerateKeyboard\n"); }
 
@@ -1189,12 +1189,12 @@
     return;
   }
 
-  smallfont = LoadFont(settings.theme_font_name, 15);
-  if(!smallfont)
-  {
-    DEBUGCODE { printf("Error loading font\n"); }
-    return;
-  }
+//   smallfont = LoadFont(settings.theme_font_name, 15);
+//   if(!smallfont)
+//   {
+//     DEBUGCODE { printf("Error loading font\n"); }
+//     return;
+//   }
 
   /* to give us a null-terminated string: */
   t[1] = '\0';
@@ -1211,14 +1211,16 @@
     t[0] = keyboard_list[i].unicode_value;
     sscanf(keyboard_list[i].keyname,"%c%d",&row,&col);
 
+    /* NOTE these values have been tweaked to better center the */
+    /* characters on the key images - DSB.                      */
     switch(row)
     {
-      case 'A': new.y += 6;   new.x += 13; break;
-      case 'B': new.y += 36;  new.x += 23; break;
-      case 'C': new.y += 66;  new.x += 33; break;
+      case 'A': new.y += 6;   new.x += 12; break;
+      case 'B': new.y += 39;  new.x += 23; break;
+      case 'C': new.y += 69;  new.x += 33; break;
 //      case 'D': new.y += 96;  new.x += 23; break;
-      case 'D': new.y += 96;  new.x += 54; break;
-      case 'E': new.y += 126; break;
+      case 'D': new.y += 99;  new.x += 54; break;
+      case 'E': new.y += 129; break;
       default: render = 0; break;
     }
 
@@ -1237,9 +1239,9 @@
     }
 
     DEBUGCODE { printf("Making %d : %C\n",i,keyboard_list[i].unicode_value); }
-
-    //tmp=BlackOutline_Unicode(t, smallfont, &black);
-    tmp = TTF_RenderUNICODE_Blended((TTF_Font*)smallfont, t, black);
+    ConvertToUTF8(t, buf, 8);
+    tmp = SimpleText(buf, 15, &black);
+//    tmp = TTF_RenderUNICODE_Blended((TTF_Font*)smallfont, t, black);
     if(tmp == NULL)
     {
       fprintf(stderr, "Error Making %d : %C\n", i, keyboard_list[i].unicode_value);
@@ -1248,7 +1250,7 @@
       SDL_BlitSurface(tmp, NULL, keyboard, &new);
   }
   //Know this is safe - if NULL would have returned above:
-  TTF_CloseFont(smallfont);
+//  TTF_CloseFont(smallfont);
 
   DEBUGCODE { printf("Leaving GenerateKeyboard\n"); }
 }

Modified: tuxtype/trunk/src/funcs.h
===================================================================
--- tuxtype/trunk/src/funcs.h	2009-03-04 19:16:51 UTC (rev 922)
+++ tuxtype/trunk/src/funcs.h	2009-03-04 21:04:04 UTC (rev 923)
@@ -67,7 +67,6 @@
 int CheckFile(const char* file);
 sprite* FlipSprite(sprite* in, int X, int Y);
 void FreeSprite(sprite* gfx);
-TTF_Font* LoadFont(const char* fontfile, int fontsize);
 SDL_Surface* LoadImage(const char* datafile, int mode);
 int LoadBothBkgds(const char* datafile);
 SDL_Surface* CurrentBkgd(void);

Modified: tuxtype/trunk/src/globals.h
===================================================================
--- tuxtype/trunk/src/globals.h	2009-03-04 19:16:51 UTC (rev 922)
+++ tuxtype/trunk/src/globals.h	2009-03-04 21:04:04 UTC (rev 923)
@@ -65,20 +65,8 @@
 #include "SDL.h"
 #include "SDL_image.h"
 #include "SDL_mixer.h"
-#include "SDL_ttf.h"
+/* NOTE only SDL_extras.c/.h now knows about SDL_ttf or SDL_Pango. */
 
-//#include <SDL/SDL.h>
-//#include <SDL/SDL_image.h>
-//#include <SDL/SDL_mixer.h>
-//#include <SDL/SDL_ttf.h>
-
-//#include "i18n.h"
-//#include <libintl.h>
-//#define _(String) gettext(String)
-//#define gettext_noop(String) (String)
-
-
-
 #endif //  __GLOBALS_H__
 
 /* FIXME get rid of these 'evil' macros */

Modified: tuxtype/trunk/src/loaders.c
===================================================================
--- tuxtype/trunk/src/loaders.c	2009-03-04 19:16:51 UTC (rev 922)
+++ tuxtype/trunk/src/loaders.c	2009-03-04 21:04:04 UTC (rev 923)
@@ -116,71 +116,6 @@
 
 
 
-/* FIXME need code to search for font paths on different platforms */
-TTF_Font* LoadFont(const char* font_name, int font_size )
-{
-  TTF_Font* loaded_font = NULL;
-  char fn[FNLEN];
-
-  /* try to find font in default data dir: */
-  sprintf(fn, "%s/fonts/%s", settings.default_data_path, font_name );
-
-  DEBUGCODE { fprintf(stderr, "LoadFont(): looking for %s using data paths\n", fn); }
-
-  /* try to load the font, if successful, return font*/
-  loaded_font = TTF_OpenFont(fn, font_size);
-  if (loaded_font != NULL)
-    return loaded_font;
-		
-
-  /* HACK hard-coded for Debian (and current exact font names): */ 
-
-  if (strncmp(font_name, "AndikaDesRevG.ttf", FNLEN ) == 0)
-    sprintf(fn, "/usr/share/fonts/truetype/ttf-sil-andika/AndikaDesRevG.ttf");
-  else if (strncmp(font_name, "DoulosSILR.ttf", FNLEN ) == 0)
-    sprintf(fn, "/usr/share/fonts/truetype/ttf-sil-doulos/DoulosSILR.ttf");
-  else if (strncmp(font_name, "Kedage-n.ttf", FNLEN ) == 0)
-    sprintf(fn, "/usr/share/fonts/truetype/ttf-kannada-fonts/Kedage-n.ttf");
-  else if (strncmp(font_name, "lohit_bn.ttf", FNLEN ) == 0)
-    sprintf(fn, "/usr/share/fonts/truetype/ttf-bengali-fonts/lohit_bn.ttf");
-  else if (strncmp(font_name, "lohit_gu.ttf", FNLEN ) == 0)
-    sprintf(fn, "/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_gu.ttf");
-  else if (strncmp(font_name, "lohit_hi.ttf", FNLEN ) == 0)
-    sprintf(fn, "/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_hi.ttf");
-  else if (strncmp(font_name, "lohit_pa.ttf", FNLEN ) == 0)
-    sprintf(fn, "/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_pa.ttf");
-  else if (strncmp(font_name, "lohit_ta.ttf", FNLEN ) == 0)
-    sprintf(fn, "/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_ta.ttf");
-  else if (strncmp(font_name, "Rachana_w01.ttf", FNLEN ) == 0)
-    sprintf(fn, "/usr/share/fonts/truetype/ttf-malayalam-fonts/Rachana_w01.ttf");
-  else if (strncmp(font_name, "utkal.ttf", FNLEN ) == 0)
-    sprintf(fn, "/usr/share/fonts/truetype/ttf-indic-fonts-core/utkal.ttf");
-  else if (strncmp(font_name, "Vemana.ttf", FNLEN ) == 0)
-    sprintf(fn, "/usr/share/fonts/truetype/ttf-indic-fonts-core/Vemena.ttf");
-
-
-
-  DEBUGCODE { fprintf(stderr, "LoadFont(): looking for %s\n in OS' font path\n", fn); }
-
-  /* try to load the font, if successful, return font*/
-  loaded_font = TTF_OpenFont(fn, font_size);
-  if (loaded_font != NULL)
-    return loaded_font;
-
-  /* We could not find desired font. If we were looking for something other  */
-  /* than default (Andika) font, print warning and try to load default font: */
-  if (strncmp(font_name, DEFAULT_FONT_NAME, FNLEN ) != 0)
-  {
-    fprintf(stderr, "Warning - could not load desired font: %s\n", font_name);
-    fprintf(stderr, "Trying to load default instead: %s\n", DEFAULT_FONT_NAME);
-    return LoadFont(DEFAULT_FONT_NAME, font_size);
-  }
-  else  /* Default failed also - bummer! */
-  {
-    fprintf(stderr, "LoadFont(): Error - couldn't load either selected or default font\n");
-    return NULL;
-  }
-}
 /***********************
 	LoadImage : Load an image and set transparent if requested
 ************************/
@@ -424,10 +359,12 @@
   {
     sprintf(fn , "%s/sounds/%s", settings.default_data_path, datafile);
     tempChunk = Mix_LoadWAV(fn);
-    return tempChunk;
+    if (tempChunk)
+      return tempChunk;
   }
   // We never want to get here...
-  return tempChunk;
+  fprintf(stderr, "LoadSound() - could not load %s\n", datafile);
+  return NULL;
 }
 
 

Modified: tuxtype/trunk/src/practice.c
===================================================================
--- tuxtype/trunk/src/practice.c	2009-03-04 19:16:51 UTC (rev 922)
+++ tuxtype/trunk/src/practice.c	2009-03-04 21:04:04 UTC (rev 923)
@@ -843,16 +843,6 @@
   fontsize = (screen->h)/28;
   medfontsize = fontsize * 1.5;
   bigfontsize = fontsize * 4;
-
-  /* When SDL_Pango is used, the above font sizes are ignored    */
-  /* by BlackOutline(), so we adjust dpi to scale the fonts:     */
-  /* HACK this isn't quite the intended use of SDLPango_SetDpi() */
-  /* NOTE this code has no effect if SDL_Pango not being used    */
-  {
-   float dpi_x, dpi_y;
-   dpi_x = dpi_y = 125 * ((float)screen->h/(float)480);
-   reset_DPI_SDLPango_Context(dpi_x, dpi_y);
-  }
 }
 
 static int practice_load_media(void)
@@ -898,13 +888,12 @@
   errors_label_srfc = BlackOutline(_("Errors"), fontsize, &yellow);
   accuracy_label_srfc = BlackOutline(_("Accuracy"), fontsize, &yellow);
 
-  /* Get out if anything failed to load: */
+  /* Get out if anything failed to load (except sounds): */
   if (load_failed
     ||!hands
     ||!CurrentBkgd()
     ||!tux_win
     ||!tux_stand
-    ||!wrong
     ||!keyboard
     ||!hand_shift[0]
     ||!hand_shift[1]
@@ -945,8 +934,6 @@
     { LOG("tux_win did not load\n");}
   if (!tux_stand)
     { LOG("tux_stand did not load\n");}
-  if (!wrong)
-    { LOG("wrong did not load\n");}
   if (!keyboard)
     { LOG("keyboard did not load\n");}
   if (!hand_shift[0])
@@ -1188,10 +1175,6 @@
   if (wrong)
     Mix_FreeChunk(wrong);
   wrong = NULL;
-
-/* Set the dpi back to default as our SDL_Pango font-scaling hack: */
-/* NOTE this is a no-op if we aren't using SDL_Pango */
-  reset_DPI_SDLPango_Context(125, 125);
 }
 
 
@@ -1287,7 +1270,7 @@
 {
   wchar_t buf[MAX_PHRASE_LENGTH];
   char UTF8buf[MAX_PHRASE_LENGTH];
-
+  SDL_Surface* s = NULL;
   int word_end = -1;
   int prev_word_end = -1;
 
@@ -1295,7 +1278,6 @@
   int phr_length = 0;
   int test_w = 0;      /* The width in pixels of the SDL-rendered string */
   /* FIXME get rid of this once overhaul done: */
-  TTF_Font* font = LoadFont(DEFAULT_FONT_NAME , font_size);
 
   LOG("Entering find__next_wrap\n");
 
@@ -1306,12 +1288,6 @@
     return -1;
   }
 
-  if (!font)
-  {
-    fprintf(stderr, "find_next_wrap() - error - invalid font argument\n");
-    return -1;
-  }
-
   DOUT(width);
   DEBUGCODE{ fprintf(stderr, "wstr = %S\n", wstr);}
   
@@ -1352,12 +1328,17 @@
     /* Need to convert to UTF8 because couldn't get UNICODE version to work: */
     ConvertToUTF8(buf, UTF8buf, MAX_PHRASE_LENGTH);
     /*  Now check width of string: */
-    if (-1 == TTF_SizeUTF8((TTF_Font*)font, UTF8buf, &test_w, NULL))
+    s = SimpleText(UTF8buf, font_size, &white);
+    if (!s)
     {
       /* An error occurred: */
       return -1;
     }
 
+    test_w = s->w;
+    SDL_FreeSurface(s);
+    s = NULL;
+
     DOUT(test_w);
     DOUT(width);
     /* If we've gone past the width, the previous space was the wrap point, */

Modified: tuxtype/trunk/src/scripting.c
===================================================================
--- tuxtype/trunk/src/scripting.c	2009-03-04 19:16:51 UTC (rev 922)
+++ tuxtype/trunk/src/scripting.c	2009-03-04 21:04:04 UTC (rev 923)
@@ -1038,18 +1038,18 @@
 
         case itemTEXT:
         {
-          TTF_Font* myFont;
+//          TTF_Font* myFont;
           SDL_Surface* img;
           SDL_Color* col;
 
-          int shown, toshow, w, h; // used to wrap text
+          int shown, toshow; // used to wrap text
           char tmp[FNLEN];   // used to hold temp text for wrapping
 
           /* --- create font & render text --- */
-          if (curItem->size > 0)
-            myFont = LoadFont(settings.theme_font_name, (int)curItem->size);
-          else
-            myFont = LoadFont(settings.theme_font_name, 24); // default size is 24
+//          if (curItem->size > 0)
+//            myFont = LoadFont(settings.theme_font_name, (int)curItem->size);
+//          else
+//            myFont = LoadFont(settings.theme_font_name, 24); // default size is 24
 
           if (curItem->color)
             col = curItem->color;
@@ -1079,15 +1079,19 @@
                 continue;
 
               tmp[toshow] = 0;
-              TTF_SizeText(myFont, tmp, &w, &h);
-
-              if (w + 20 < screen->w)
-                ok = 1;
+              img = SimpleText(tmp, (int)curItem->size, col);
+              if (img)
+              { 
+                if (img->w + 20 < screen->w)
+                  ok = 1;
+                SDL_FreeSurface(img);
+                img = NULL;
+              }
             }
 
             shown += toshow + 1;
 
-            img = TTF_RenderUTF8_Blended(myFont, tmp, *col);
+            img = SimpleText(tmp, (int)curItem->size, col);
 
             if (img)
             {
@@ -1122,13 +1126,12 @@
               }
 
               /* --- and blit! --- */
-              SDL_BlitSurface( img, NULL, screen, &loc );
-              SDL_FreeSurface( img );
+              SDL_BlitSurface(img, NULL, screen, &loc);
+              SDL_FreeSurface(img);
             }
                     
           } while (shown + 1 < strlen(curItem->data));
 
-          TTF_CloseFont(myFont);
           break;
         }
 

Modified: tuxtype/trunk/src/setup.c
===================================================================
--- tuxtype/trunk/src/setup.c	2009-03-04 19:16:51 UTC (rev 922)
+++ tuxtype/trunk/src/setup.c	2009-03-04 21:04:04 UTC (rev 923)
@@ -157,40 +157,46 @@
 	LibInit : Init the SDL
 	library
 *****************************/
-void LibInit(Uint32 lib_flags)
+/* NOTE lib_flags is *always* SDL_INIT_VIDEO|SDL_INIT_AUDIO - maybe we */
+/* should just simplify all this:                                      */
+void LibInit(lib_flags)
 {
-	LOG( "LibInit():\n-About to init SDL Library\n" );
+  LOG( "LibInit():\n-About to init SDL Library\n" );
+  /* FIXME this looks wrong - if SDL_Init() fails, we try other subsystem??? */
+  if (SDL_Init(lib_flags) < 0) 
+  /* FIXME this looks wrong - if no sys_sound, we don't init video??? */
+  if (settings.sys_sound)
+  {
+    if (SDL_Init(SDL_INIT_VIDEO) < 0)
+    {
+      fprintf(stderr, "Couldn't initialize SDL: %s\n",
+      SDL_GetError());
+      exit(2);
+    }
+    else
+    {
+      LOG( "Couldn't initialize SDL Sound\n" );
+      settings.sys_sound = 0;
+    }
+  }
 
-	if (SDL_Init(lib_flags) < 0) 
-		/* FIXME this looks wrong - if no sys_sound, we don't init video??? */
-		if (settings.sys_sound) {
-			if (SDL_Init(SDL_INIT_VIDEO) < 0) {
-				fprintf(stderr, "Couldn't initialize SDL: %s\n",
-				SDL_GetError());
-				exit(2);
-			} else {
-				LOG( "Couldn't initialize SDL Sound\n" );
-				settings.sys_sound = 0;
-			}
-		}
 
+// atexit(SDL_Quit); // fire and forget... 
 
-//	atexit(SDL_Quit); // fire and forget... 
+  LOG( "-SDL Library init'd successfully\n" );
 
-	LOG( "-SDL Library init'd successfully\n" );
+  /* FIXME should read settings before we do this: */ 
+  if (settings.sys_sound)
+  {
+    if (Mix_OpenAudio(22050, AUDIO_S16, 1, 2048) == -1)
+    {
+      fprintf( stderr, "Warning: couldn't set 22050 Hz 8-bit audio\n - Reasons: %s\n", SDL_GetError());
+      settings.sys_sound=0;
+    }
+    else
+      LOG("Mix_OpenAudio() successful\n");
+  }
 
-	/* FIXME should read settings before we do this: */ 
-	if (settings.sys_sound)
-        { 
-          if (Mix_OpenAudio(22050, AUDIO_S16, 1, 2048) == -1)
-          {
-            fprintf( stderr, "Warning: couldn't set 22050 Hz 8-bit audio\n - Reasons: %s\n", SDL_GetError());
-            settings.sys_sound=0;
-          }
-          else
-            LOG("Mix_OpenAudio() successful\n");
-        }
-
   LOG( "-about to init SDL text library (SDL_ttf or SDL_Pango\n" );
 
   if (!Setup_SDL_Text())
@@ -198,15 +204,13 @@
     fprintf( stderr, "Couldn't initialize desired SDL text libary\n" );
     exit(2);
   }
-  /* FIXME get rid of this as soon as text overhaul done: */
-  TTF_Init();
 //	atexit(TTF_Quit);
 
-	SDL_EnableKeyRepeat( 0, SDL_DEFAULT_REPEAT_INTERVAL );
-	/* Need this to get Unicode values from keysyms: */
-	SDL_EnableUNICODE(1);
+  SDL_EnableKeyRepeat( 0, SDL_DEFAULT_REPEAT_INTERVAL );
+  /* Need this to get Unicode values from keysyms: */
+  SDL_EnableUNICODE(1);
 
-	LOG( "LibInit():END\n" );
+  LOG( "LibInit():END\n" );
 }
 
 /* Load the settings from a file... make sure to update SaveSettings if you change




More information about the Tux4kids-commits mailing list