diff options
-rw-r--r-- | Makefile | 25 | ||||
-rw-r--r-- | src/renderer/tr_font.c | 34 |
2 files changed, 42 insertions, 17 deletions
@@ -166,6 +166,10 @@ ifndef USE_VOIP USE_VOIP=1 endif +ifndef USE_FREETYPE +USE_FREETYPE=0 +endif + ifndef USE_INTERNAL_SPEEX USE_INTERNAL_SPEEX=1 endif @@ -239,6 +243,7 @@ ifneq ($(BUILD_CLIENT),0) 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),) @@ -364,6 +369,10 @@ ifneq (,$(findstring "$(PLATFORM)", "linux" "gnu_kfreebsd" "kfreebsd-gnu")) CLIENT_CFLAGS += -I$(SDLHDIR)/include endif + ifeq ($(USE_FREETYPE),1) + BASE_CFLAGS += $(FREETYPE_CFLAGS) + endif + ifeq ($(ARCH),x86) # linux32 make ... BASE_CFLAGS += -m32 @@ -418,6 +427,10 @@ ifeq ($(PLATFORM),darwin) endif endif + ifeq ($(USE_FREETYPE),1) + BASE_CFLAGS += $(FREETYPE_CFLAGS) + endif + ifeq ($(USE_CODEC_VORBIS),1) CLIENT_LIBS += -lvorbisfile -lvorbis -logg endif @@ -507,6 +520,10 @@ ifeq ($(PLATFORM),mingw32) 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) @@ -811,6 +828,10 @@ endif TARGETS = +ifeq ($(USE_FREETYPE),1) + BASE_CFLAGS += -DBUILD_FREETYPE +endif + ifndef FULLBINEXT FULLBINEXT=.$(ARCH)$(BINEXT) endif @@ -903,6 +924,10 @@ else RENDERER_LIBS += -ljpeg endif +ifeq ($(USE_FREETYPE),1) + RENDERER_LIBS += -lfreetype +endif + ifeq ("$(CC)", $(findstring "$(CC)", "clang" "clang++")) BASE_CFLAGS += -Qunused-arguments endif diff --git a/src/renderer/tr_font.c b/src/renderer/tr_font.c index 3fe80d0b..563b7068 100644 --- a/src/renderer/tr_font.c +++ b/src/renderer/tr_font.c @@ -117,14 +117,14 @@ FT_Bitmap *R_RenderGlyph(FT_GlyphSlot glyph, glyphInfo_t* glyphOut) { 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 ); @@ -150,7 +150,7 @@ void WriteTGA (char *filename, byte *data, int width, int height) { 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; @@ -175,7 +175,7 @@ void WriteTGA (char *filename, byte *data, int width, int height) { //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) { @@ -201,8 +201,8 @@ static glyphInfo_t *RE_ConstructGlyphInfo(unsigned char *imageOut, int *xOut, in } if (calcHeight) { - Z_Free(bitmap->buffer); - Z_Free(bitmap); + ri.Free(bitmap->buffer); + ri.Free(bitmap); return &glyph; } @@ -223,8 +223,8 @@ static glyphInfo_t *RE_ConstructGlyphInfo(unsigned char *imageOut, int *xOut, in 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; @@ -233,8 +233,8 @@ static glyphInfo_t *RE_ConstructGlyphInfo(unsigned char *imageOut, int *xOut, in } 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; } @@ -289,8 +289,8 @@ static glyphInfo_t *RE_ConstructGlyphInfo(unsigned char *imageOut, int *xOut, in *xOut += scaled_width + 1; } - Z_Free(bitmap->buffer); - Z_Free(bitmap); + ri.Free(bitmap->buffer); + ri.Free(bitmap); return &glyph; } @@ -436,9 +436,9 @@ void RE_RegisterFont(const char *fontName, int pointSize, fontInfo_t *font) { // 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); @@ -466,7 +466,7 @@ void RE_RegisterFont(const char *fontName, int pointSize, fontInfo_t *font) { scaledSize = 256*256; newSize = scaledSize * 4; - imageBuff = Z_Malloc(newSize); + imageBuff = ri.Malloc(newSize); left = 0; max = 0; satLevels = 255; @@ -504,7 +504,7 @@ void RE_RegisterFont(const char *fontName, int pointSize, fontInfo_t *font) { 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)); @@ -520,7 +520,7 @@ void RE_RegisterFont(const char *fontName, int pointSize, fontInfo_t *font) { ri.FS_WriteFile(va("fonts/fontImage_%i.dat", pointSize), font, sizeof(fontInfo_t)); } - Z_Free(out); + ri.Free(out); ri.FS_FreeFile(faceData); #endif |