[quake3-commits] r2225 - in trunk: . code/renderer

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Thu Mar 29 00:05:15 EDT 2012


Author: ztm
Date: 2012-03-29 00:05:13 -0400 (Thu, 29 Mar 2012)
New Revision: 2225

Modified:
   trunk/Makefile
   trunk/README
   trunk/code/renderer/tr_font.c
Log:
- Added support for enabling FreeType Support (make USE_FREETYPE=1).
- Fixed compiling tr_font.c for dynamic renderer.

Modified: trunk/Makefile
===================================================================
--- trunk/Makefile	2012-02-15 18:47:50 UTC (rev 2224)
+++ trunk/Makefile	2012-03-29 04:05:13 UTC (rev 2225)
@@ -177,6 +177,10 @@
 USE_VOIP=1
 endif
 
+ifndef USE_FREETYPE
+USE_FREETYPE=0
+endif
+
 ifndef USE_INTERNAL_SPEEX
 USE_INTERNAL_SPEEX=1
 endif
@@ -248,6 +252,7 @@
     OPENAL_LIBS=$(shell pkg-config --silence-errors --libs openal)
     SDL_CFLAGS=$(shell pkg-config --silence-errors --cflags sdl|sed 's/-Dmain=SDL_main//')
     SDL_LIBS=$(shell pkg-config --silence-errors --libs sdl)
+    FREETYPE_CFLAGS=$(shell pkg-config --silence-errors --cflags freetype2)
   endif
   # Use sdl-config if all else fails
   ifeq ($(SDL_CFLAGS),)
@@ -380,6 +385,10 @@
     CLIENT_CFLAGS += -I$(SDLHDIR)/include
   endif
 
+  ifeq ($(USE_FREETYPE),1)
+    BASE_CFLAGS += $(FREETYPE_CFLAGS)
+  endif
+
   ifeq ($(ARCH),i386)
     # linux32 make ...
     BASE_CFLAGS += -m32
@@ -434,6 +443,10 @@
     endif
   endif
 
+  ifeq ($(USE_FREETYPE),1)
+    BASE_CFLAGS += $(FREETYPE_CFLAGS)
+  endif
+
   ifeq ($(USE_CODEC_VORBIS),1)
     CLIENT_LIBS += -lvorbisfile -lvorbis -logg
   endif
@@ -523,6 +536,10 @@
   CLIENT_LIBS = -lgdi32 -lole32
   RENDERER_LIBS = -lgdi32 -lole32 -lopengl32
   
+  ifeq ($(USE_FREETYPE),1)
+    BASE_CFLAGS += -Ifreetype2
+  endif
+
   ifeq ($(USE_CURL),1)
     CLIENT_CFLAGS += $(CURL_CFLAGS)
     ifneq ($(USE_CURL_DLOPEN),1)
@@ -830,6 +847,10 @@
 
 TARGETS =
 
+ifeq ($(USE_FREETYPE),1)
+  BASE_CFLAGS += -DBUILD_FREETYPE
+endif
+
 ifndef FULLBINEXT
   FULLBINEXT=.$(ARCH)$(BINEXT)
 endif
@@ -938,6 +959,10 @@
   RENDERER_LIBS += -ljpeg
 endif
 
+ifeq ($(USE_FREETYPE),1)
+  RENDERER_LIBS += -lfreetype
+endif
+
 ifeq ("$(CC)", $(findstring "$(CC)", "clang" "clang++"))
   BASE_CFLAGS += -Qunused-arguments
 endif

Modified: trunk/README
===================================================================
--- trunk/README	2012-02-15 18:47:50 UTC (rev 2224)
+++ trunk/README	2012-03-29 04:05:13 UTC (rev 2225)
@@ -103,6 +103,7 @@
   USE_VOIP           - enable built-in VoIP support
   USE_INTERNAL_SPEEX - build internal speex library instead of dynamically
                        linking against system libspeex
+  USE_FREETYPE       - enable FreeType support for rendering fonts
   USE_OLD_VM64       - use Ludwig Nussel's old JIT compiler implementation
                        for x86_64
   USE_INTERNAL_ZLIB  - build and link against internal zlib

Modified: trunk/code/renderer/tr_font.c
===================================================================
--- trunk/code/renderer/tr_font.c	2012-02-15 18:47:50 UTC (rev 2224)
+++ trunk/code/renderer/tr_font.c	2012-03-29 04:05:13 UTC (rev 2225)
@@ -116,14 +116,14 @@
   if ( glyph->format == ft_glyph_format_outline ) {
     size   = pitch*height; 
 
-    bit2 = Z_Malloc(sizeof(FT_Bitmap));
+    bit2 = ri.Malloc(sizeof(FT_Bitmap));
 
     bit2->width      = width;
     bit2->rows       = height;
     bit2->pitch      = pitch;
     bit2->pixel_mode = ft_pixel_mode_grays;
     //bit2->pixel_mode = ft_pixel_mode_mono;
-    bit2->buffer     = Z_Malloc(pitch*height);
+    bit2->buffer     = ri.Malloc(pitch*height);
     bit2->num_grays = 256;
 
     Com_Memset( bit2->buffer, 0, size );
@@ -149,7 +149,7 @@
 	byte	*buffer;
 	int		i, c;
 
-	buffer = Z_Malloc(width*height*4 + 18);
+	buffer = ri.Malloc(width*height*4 + 18);
 	Com_Memset (buffer, 0, 18);
 	buffer[2] = 2;		// uncompressed type
 	buffer[12] = width&255;
@@ -174,7 +174,7 @@
 	//fwrite (buffer, 1, c, f);
 	//fclose (f);
 
-	Z_Free (buffer);
+	ri.Free (buffer);
 }
 
 static glyphInfo_t *RE_ConstructGlyphInfo(unsigned char *imageOut, int *xOut, int *yOut, int *maxHeight, FT_Face face, const unsigned char c, qboolean calcHeight) {
@@ -200,8 +200,8 @@
     }
 
     if (calcHeight) {
-      Z_Free(bitmap->buffer);
-      Z_Free(bitmap);
+      ri.Free(bitmap->buffer);
+      ri.Free(bitmap);
       return &glyph;
     }
 
@@ -222,8 +222,8 @@
       if (*yOut + *maxHeight + 1 >= 255) {
         *yOut = -1;
         *xOut = -1;
-        Z_Free(bitmap->buffer);
-        Z_Free(bitmap);
+        ri.Free(bitmap->buffer);
+        ri.Free(bitmap);
         return &glyph;
       } else {
         *xOut = 0;
@@ -232,8 +232,8 @@
     } else if (*yOut + *maxHeight + 1 >= 255) {
       *yOut = -1;
       *xOut = -1;
-      Z_Free(bitmap->buffer);
-      Z_Free(bitmap);
+      ri.Free(bitmap->buffer);
+      ri.Free(bitmap);
       return &glyph;
     }
 
@@ -288,8 +288,8 @@
     *xOut += scaled_width + 1;
   }
 
-  Z_Free(bitmap->buffer);
-  Z_Free(bitmap);
+  ri.Free(bitmap->buffer);
+  ri.Free(bitmap);
 
   return &glyph;
 }
@@ -435,9 +435,9 @@
   // make a 256x256 image buffer, once it is full, register it, clean it and keep going 
   // until all glyphs are rendered
 
-  out = Z_Malloc(1024*1024);
+  out = ri.Malloc(1024*1024);
   if (out == NULL) {
-    ri.Printf(PRINT_ALL, "RE_RegisterFont: Z_Malloc failure during output image creation.\n");
+    ri.Printf(PRINT_ALL, "RE_RegisterFont: ri.Malloc failure during output image creation.\n");
     return;
   }
   Com_Memset(out, 0, 1024*1024);
@@ -465,7 +465,7 @@
 
       scaledSize = 256*256;
       newSize = scaledSize * 4;
-      imageBuff = Z_Malloc(newSize);
+      imageBuff = ri.Malloc(newSize);
       left = 0;
       max = 0;
       satLevels = 255;
@@ -503,7 +503,7 @@
 		  Com_Memset(out, 0, 1024*1024);
       xOut = 0;
       yOut = 0;
-      Z_Free(imageBuff);
+      ri.Free(imageBuff);
 			i++;
     } else {
       Com_Memcpy(&font->glyphs[i], glyph, sizeof(glyphInfo_t));
@@ -519,7 +519,7 @@
 		ri.FS_WriteFile(va("fonts/fontImage_%i.dat", pointSize), font, sizeof(fontInfo_t));
 	}
 
-  Z_Free(out);
+  ri.Free(out);
   
   ri.FS_FreeFile(faceData);
 #endif



More information about the quake3-commits mailing list