ref: 17da39fa14c542d8465c2cefaf98b826ad09a3d2
parent: 1625d3961d2c3b7d3ef27e7a45578704276ca4b8
author: Clownacy <Clownacy@users.noreply.github.com>
date: Mon Sep 14 07:54:25 EDT 2020
Rename FontObject to Font Explicitly calling it an object just seems unnecessarily verbose,
--- a/src/Draw.cpp
+++ b/src/Draw.cpp
@@ -35,7 +35,7 @@
static RenderBackend_Surface *surf[SURFACE_ID_MAX];
-static FontObject *font; // TODO - Not the original variable name
+static Font *font; // TODO - Not the original variable name
// This doesn't exist in the Linux port, so none of these symbol names are accurate
static struct
--- a/src/Font.cpp
+++ b/src/Font.cpp
@@ -45,7 +45,7 @@
struct Glyph *next;
} Glyph;
-typedef struct FontObject
+typedef struct Font
{
FT_Library library;
FT_Face face;
@@ -54,7 +54,7 @@
Glyph *glyph_list_head;
RenderBackend_GlyphAtlas *atlas;
size_t atlas_row_length;
-} FontObject;
+} Font;
#ifdef JAPANESE
static const unsigned short shiftjis_to_unicode_lookup[0x3100] = {
@@ -963,9 +963,9 @@
}
-static Glyph* GetGlyph(FontObject *font_object, unsigned long unicode_value)
+static Glyph* GetGlyph(Font *font, unsigned long unicode_value)
{
- Glyph **glyph_pointer = &font_object->glyph_list_head;
+ Glyph **glyph_pointer = &font->glyph_list_head;
Glyph *glyph;
for (;;)
@@ -976,8 +976,8 @@
{
// Move it to the front of the list
*glyph_pointer = glyph->next;
- glyph->next = font_object->glyph_list_head;
- font_object->glyph_list_head = glyph;
+ glyph->next = font->glyph_list_head;
+ font->glyph_list_head = glyph;
return glyph;
}
@@ -991,20 +991,20 @@
// Couldn't find glyph - overwrite the old at the end.
// The one at the end hasn't been used in a while anyway.
- unsigned int glyph_index = FT_Get_Char_Index(font_object->face, unicode_value);
+ unsigned int glyph_index = FT_Get_Char_Index(font->face, unicode_value);
#ifdef ENABLE_FONT_ANTIALIASING
- if (FT_Load_Glyph(font_object->face, glyph_index, FT_LOAD_RENDER) == 0)
+ if (FT_Load_Glyph(font->face, glyph_index, FT_LOAD_RENDER) == 0)
#else
- if (FT_Load_Glyph(font_object->face, glyph_index, FT_LOAD_RENDER | FT_LOAD_TARGET_MONO) == 0)
+ if (FT_Load_Glyph(font->face, glyph_index, FT_LOAD_RENDER | FT_LOAD_TARGET_MONO) == 0)
#endif
{
FT_Bitmap bitmap;
FT_Bitmap_New(&bitmap);
- if (FT_Bitmap_Convert(font_object->library, &font_object->face->glyph->bitmap, &bitmap, 1) == 0)
+ if (FT_Bitmap_Convert(font->library, &font->face->glyph->bitmap, &bitmap, 1) == 0)
{
- switch (font_object->face->glyph->bitmap.pixel_mode)
+ switch (font->face->glyph->bitmap.pixel_mode)
{
case FT_PIXEL_MODE_GRAY:
for (size_t y = 0; y < bitmap.rows; ++y)
@@ -1038,91 +1038,91 @@
glyph->unicode_value = unicode_value;
glyph->width = bitmap.width;
glyph->height = bitmap.rows;
- glyph->x_offset = font_object->face->glyph->bitmap_left;
- glyph->y_offset = (font_object->face->size->metrics.ascender + (64 / 2)) / 64 - font_object->face->glyph->bitmap_top;
- glyph->x_advance = font_object->face->glyph->advance.x / 64;
+ glyph->x_offset = font->face->glyph->bitmap_left;
+ glyph->y_offset = (font->face->size->metrics.ascender + (64 / 2)) / 64 - font->face->glyph->bitmap_top;
+ glyph->x_advance = font->face->glyph->advance.x / 64;
- RenderBackend_UploadGlyph(font_object->atlas, glyph->x, glyph->y, bitmap.buffer, glyph->width, glyph->height);
+ RenderBackend_UploadGlyph(font->atlas, glyph->x, glyph->y, bitmap.buffer, glyph->width, glyph->height);
- FT_Bitmap_Done(font_object->library, &bitmap);
+ FT_Bitmap_Done(font->library, &bitmap);
*glyph_pointer = glyph->next;
- glyph->next = font_object->glyph_list_head;
- font_object->glyph_list_head = glyph;
+ glyph->next = font->glyph_list_head;
+ font->glyph_list_head = glyph;
return glyph;
}
- FT_Bitmap_Done(font_object->library, &bitmap);
+ FT_Bitmap_Done(font->library, &bitmap);
}
return NULL;
}
-FontObject* LoadFontFromData(const unsigned char *data, size_t data_size, size_t cell_width, size_t cell_height)
+Font* LoadFontFromData(const unsigned char *data, size_t data_size, size_t cell_width, size_t cell_height)
{
- FontObject *font_object = (FontObject*)malloc(sizeof(FontObject));
+ Font *font = (Font*)malloc(sizeof(Font));
- if (font_object != NULL)
+ if (font != NULL)
{
- if (FT_Init_FreeType(&font_object->library) == 0)
+ if (FT_Init_FreeType(&font->library) == 0)
{
- font_object->data = (unsigned char*)malloc(data_size);
+ font->data = (unsigned char*)malloc(data_size);
- if (font_object->data != NULL)
+ if (font->data != NULL)
{
- memcpy(font_object->data, data, data_size);
+ memcpy(font->data, data, data_size);
- if (FT_New_Memory_Face(font_object->library, font_object->data, (FT_Long)data_size, 0, &font_object->face) == 0)
+ if (FT_New_Memory_Face(font->library, font->data, (FT_Long)data_size, 0, &font->face) == 0)
{
- FT_Set_Pixel_Sizes(font_object->face, cell_width, cell_height);
+ FT_Set_Pixel_Sizes(font->face, cell_width, cell_height);
- font_object->glyph_list_head = NULL;
+ font->glyph_list_head = NULL;
- size_t atlas_entry_width = FT_MulFix(font_object->face->bbox.xMax - font_object->face->bbox.xMin + 1, font_object->face->size->metrics.x_scale) / 64;
- size_t atlas_entry_height = FT_MulFix(font_object->face->bbox.yMax - font_object->face->bbox.yMin + 1, font_object->face->size->metrics.y_scale) / 64;
+ size_t atlas_entry_width = FT_MulFix(font->face->bbox.xMax - font->face->bbox.xMin + 1, font->face->size->metrics.x_scale) / 64;
+ size_t atlas_entry_height = FT_MulFix(font->face->bbox.yMax - font->face->bbox.yMin + 1, font->face->size->metrics.y_scale) / 64;
size_t atlas_columns = ceil(sqrt(atlas_entry_width * atlas_entry_height * TOTAL_GLYPH_SLOTS) / atlas_entry_width);
size_t atlas_rows = ceil(sqrt(atlas_entry_width * atlas_entry_height * TOTAL_GLYPH_SLOTS) / atlas_entry_height);
- font_object->atlas_row_length = atlas_columns;
+ font->atlas_row_length = atlas_columns;
- font_object->atlas = RenderBackend_CreateGlyphAtlas(MAX(atlas_columns * atlas_entry_width, atlas_rows * atlas_entry_height));
+ font->atlas = RenderBackend_CreateGlyphAtlas(MAX(atlas_columns * atlas_entry_width, atlas_rows * atlas_entry_height));
- if (font_object->atlas != NULL)
+ if (font->atlas != NULL)
{
// Initialise the linked-list
for (size_t i = 0; i < TOTAL_GLYPH_SLOTS; ++i)
{
- font_object->glyphs[i].next = (i == 0) ? NULL : &font_object->glyphs[i - 1];
+ font->glyphs[i].next = (i == 0) ? NULL : &font->glyphs[i - 1];
- font_object->glyphs[i].x = (i % font_object->atlas_row_length) * atlas_entry_width;
- font_object->glyphs[i].y = (i / font_object->atlas_row_length) * atlas_entry_height;
+ font->glyphs[i].x = (i % font->atlas_row_length) * atlas_entry_width;
+ font->glyphs[i].y = (i / font->atlas_row_length) * atlas_entry_height;
}
- font_object->glyph_list_head = &font_object->glyphs[TOTAL_GLYPH_SLOTS - 1];
+ font->glyph_list_head = &font->glyphs[TOTAL_GLYPH_SLOTS - 1];
- return font_object;
+ return font;
}
- FT_Done_Face(font_object->face);
+ FT_Done_Face(font->face);
}
- free(font_object->data);
+ free(font->data);
}
- FT_Done_FreeType(font_object->library);
+ FT_Done_FreeType(font->library);
}
- free(font_object);
+ free(font);
}
return NULL;
}
-FontObject* LoadFont(const char *font_filename, size_t cell_width, size_t cell_height)
+Font* LoadFont(const char *font_filename, size_t cell_width, size_t cell_height)
{
- FontObject *font_object = NULL;
+ Font *font = NULL;
size_t file_size;
unsigned char *file_buffer = LoadFileToMemory(font_filename, &file_size);
@@ -1129,18 +1129,18 @@
if (file_buffer != NULL)
{
- font_object = LoadFontFromData(file_buffer, file_size, cell_width, cell_height);
+ font = LoadFontFromData(file_buffer, file_size, cell_width, cell_height);
free(file_buffer);
}
- return font_object;
+ return font;
}
-void DrawText(FontObject *font_object, RenderBackend_Surface *surface, int x, int y, unsigned long colour, const char *string)
+void DrawText(Font *font, RenderBackend_Surface *surface, int x, int y, unsigned long colour, const char *string)
{
- if (font_object != NULL && surface != NULL)
+ if (font != NULL && surface != NULL)
{
- RenderBackend_PrepareToDrawGlyphs(font_object->atlas, surface, (unsigned char)colour, (unsigned char)(colour >> 8), (unsigned char)(colour >> 16));
+ RenderBackend_PrepareToDrawGlyphs(font->atlas, surface, (unsigned char)colour, (unsigned char)(colour >> 8), (unsigned char)(colour >> 16));
size_t pen_x = 0;
@@ -1157,7 +1157,7 @@
#endif
string_pointer += bytes_read;
- Glyph *glyph = GetGlyph(font_object, unicode_value);
+ Glyph *glyph = GetGlyph(font, unicode_value);
if (glyph != NULL)
{
@@ -1164,7 +1164,7 @@
const long letter_x = x + pen_x + glyph->x_offset;
const long letter_y = y + glyph->y_offset;
- RenderBackend_DrawGlyph(font_object->atlas, letter_x, letter_y, glyph->x, glyph->y, glyph->width, glyph->height);
+ RenderBackend_DrawGlyph(font->atlas, letter_x, letter_y, glyph->x, glyph->y, glyph->width, glyph->height);
pen_x += glyph->x_advance;
}
@@ -1174,15 +1174,15 @@
}
}
-void UnloadFont(FontObject *font_object)
+void UnloadFont(Font *font)
{
- if (font_object != NULL)
+ if (font != NULL)
{
- RenderBackend_DestroyGlyphAtlas(font_object->atlas);
+ RenderBackend_DestroyGlyphAtlas(font->atlas);
- FT_Done_Face(font_object->face);
- free(font_object->data);
- FT_Done_FreeType(font_object->library);
- free(font_object);
+ FT_Done_Face(font->face);
+ free(font->data);
+ FT_Done_FreeType(font->library);
+ free(font);
}
}
--- a/src/Font.h
+++ b/src/Font.h
@@ -4,9 +4,9 @@
#include "Backends/Rendering.h"
-typedef struct FontObject FontObject;
+typedef struct Font Font;
-FontObject* LoadFontFromData(const unsigned char *data, size_t data_size, size_t cell_width, size_t cell_height);
-FontObject* LoadFont(const char *font_filename, size_t cell_width, size_t cell_height);
-void DrawText(FontObject *font_object, RenderBackend_Surface *surface, int x, int y, unsigned long colour, const char *string);
-void UnloadFont(FontObject *font_object);
+Font* LoadFontFromData(const unsigned char *data, size_t data_size, size_t cell_width, size_t cell_height);
+Font* LoadFont(const char *font_filename, size_t cell_width, size_t cell_height);
+void DrawText(Font *font, RenderBackend_Surface *surface, int x, int y, unsigned long colour, const char *string);
+void UnloadFont(Font *font);