Restored the new font system
This commit is contained in:
parent
0ec8997244
commit
ae8aeae2ac
7 changed files with 1212 additions and 64 deletions
10
Makefile
10
Makefile
|
@ -43,13 +43,13 @@ ifeq ($(DEBUG_SAVE), 1)
|
|||
CXXFLAGS += -DDEBUG_SAVE
|
||||
endif
|
||||
|
||||
CXXFLAGS += -std=c++98 -MMD -MP -MF $@.d `$(PKG_CONFIG) sdl2 --cflags`
|
||||
CXXFLAGS += -std=c++98 -MMD -MP -MF $@.d `$(PKG_CONFIG) sdl2 --cflags` `$(PKG_CONFIG) freetype2 --cflags`
|
||||
|
||||
ifeq ($(STATIC), 1)
|
||||
LDFLAGS += -static
|
||||
LIBS += `$(PKG_CONFIG) sdl2 --libs --static`
|
||||
LIBS += `$(PKG_CONFIG) sdl2 --libs --static` `$(PKG_CONFIG) freetype2 --libs --static`
|
||||
else
|
||||
LIBS += `$(PKG_CONFIG) sdl2 --libs`
|
||||
LIBS += `$(PKG_CONFIG) sdl2 --libs` `$(PKG_CONFIG) freetype2 --libs`
|
||||
endif
|
||||
|
||||
SOURCES = \
|
||||
|
@ -77,6 +77,7 @@ SOURCES = \
|
|||
src/File \
|
||||
src/Flags \
|
||||
src/Flash \
|
||||
src/Font \
|
||||
src/Frame \
|
||||
src/Game \
|
||||
src/Generic \
|
||||
|
@ -145,6 +146,7 @@ RESOURCES = \
|
|||
BITMAP/Credit18.bmp \
|
||||
CURSOR/CURSOR_IKA.bmp \
|
||||
CURSOR/CURSOR_NORMAL.bmp \
|
||||
FONT/LiberationMono.ttf \
|
||||
ICON/ICON_MINI.bmp \
|
||||
ORG/Access.org \
|
||||
ORG/Anzen.org \
|
||||
|
@ -247,7 +249,7 @@ obj/$(FILENAME)/%.o: %.cpp
|
|||
@echo Compiling $<
|
||||
@$(CXX) $(CXXFLAGS) $< -o $@ -c
|
||||
|
||||
obj/$(FILENAME)/Resource.o: src/Resource.cpp $(addprefix src/Resource/, $(addsuffix .h, $(RESOURCES)))
|
||||
obj/$(FILENAME)/src/Resource.o: src/Resource.cpp $(addprefix src/Resource/, $(addsuffix .h, $(RESOURCES)))
|
||||
@mkdir -p $(@D)
|
||||
@echo Compiling $<
|
||||
@$(CXX) $(CXXFLAGS) $< -o $@ -c
|
||||
|
|
|
@ -9,6 +9,7 @@ This branch migrates the engine from WinAPI to SDL2, and addresses numerous port
|
|||
## Dependencies
|
||||
|
||||
* SDL2
|
||||
* Freetype
|
||||
* FLTK
|
||||
* GLEW (if the OpenGL rendering backend is selected)
|
||||
|
||||
|
|
BIN
assets/resources/FONT/LiberationMono.ttf
Normal file
BIN
assets/resources/FONT/LiberationMono.ttf
Normal file
Binary file not shown.
71
src/Draw.cpp
71
src/Draw.cpp
|
@ -11,6 +11,7 @@
|
|||
#include "Backends/Rendering.h"
|
||||
#include "CommonDefines.h"
|
||||
#include "Ending.h"
|
||||
#include "Font.h"
|
||||
#include "Generic.h"
|
||||
#include "Main.h"
|
||||
#include "MapName.h"
|
||||
|
@ -37,6 +38,8 @@ static Backend_Surface *surf[SURFACE_ID_MAX];
|
|||
|
||||
static SDL_PixelFormat *rgb24_pixel_format; // Needed because SDL2 is stupid
|
||||
|
||||
static FontObject *font;
|
||||
|
||||
// This doesn't exist in the Linux port, so none of these symbol names are accurate
|
||||
static struct
|
||||
{
|
||||
|
@ -602,72 +605,24 @@ int RestoreSurfaces(void) // Guessed function name - this doesn't exist in the L
|
|||
*/
|
||||
// TODO - Inaccurate stack frame
|
||||
void InitTextObject(const char *name)
|
||||
{/*
|
||||
// Get font size
|
||||
unsigned int width, height;
|
||||
|
||||
switch (magnification)
|
||||
{
|
||||
case 1:
|
||||
height = 12;
|
||||
width = 6;
|
||||
break;
|
||||
size_t size;
|
||||
const unsigned char *data = FindResource("FONT", "FONT", &size);
|
||||
|
||||
case 2:
|
||||
height = 20;
|
||||
width = 10;
|
||||
break;
|
||||
font = LoadFontFromData(data, size, 5 * magnification, 10 * magnification);
|
||||
}
|
||||
|
||||
// The game uses DEFAULT_CHARSET when it should have used SHIFTJIS_CHARSET.
|
||||
// This breaks the Japanese text on English Windows installations.
|
||||
|
||||
// Also, the game uses DEFAULT_QUALITY instead of NONANTIALIASED_QUALITY,
|
||||
// causing font antialiasing to blend with the colour-key, giving text ab
|
||||
// ugly black outline.
|
||||
#ifdef FIX_BUGS
|
||||
#define QUALITY NONANTIALIASED_QUALITY
|
||||
#ifdef JAPANESE
|
||||
#define CHARSET SHIFTJIS_CHARSET
|
||||
#else
|
||||
#define CHARSET DEFAULT_CHARSET
|
||||
#endif
|
||||
#else
|
||||
#define QUALITY DEFAULT_QUALITY
|
||||
#define CHARSET DEFAULT_CHARSET
|
||||
#endif
|
||||
|
||||
font = CreateFontA(height, width, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, QUALITY, FIXED_PITCH | FF_DONTCARE, name);
|
||||
|
||||
if (font == NULL)
|
||||
font = CreateFontA(height, width, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, QUALITY, FIXED_PITCH | FF_DONTCARE, NULL);
|
||||
*/}
|
||||
|
||||
void PutText(int x, int y, const char *text, unsigned long color)
|
||||
{/*
|
||||
HDC hdc;
|
||||
backbuffer->GetDC(&hdc);
|
||||
HGDIOBJ hgdiobj = SelectObject(hdc, font);
|
||||
SetBkMode(hdc, 1);
|
||||
SetTextColor(hdc, color);
|
||||
TextOutA(hdc, x * magnification, y * magnification, text, (int)strlen(text));
|
||||
SelectObject(hdc, hgdiobj);
|
||||
backbuffer->ReleaseDC(hdc);
|
||||
*/}
|
||||
{
|
||||
DrawText(font, framebuffer, x * magnification, y * magnification, color, text);
|
||||
}
|
||||
|
||||
void PutText2(int x, int y, const char *text, unsigned long color, SurfaceID surf_no)
|
||||
{/*
|
||||
HDC hdc;
|
||||
surf[surf_no]->GetDC(&hdc);
|
||||
HGDIOBJ hgdiobj = SelectObject(hdc, font);
|
||||
SetBkMode(hdc, 1);
|
||||
SetTextColor(hdc, color);
|
||||
TextOutA(hdc, x * magnification, y * magnification, text, (int)strlen(text));
|
||||
SelectObject(hdc, hgdiobj);
|
||||
surf[surf_no]->ReleaseDC(hdc);
|
||||
*/}
|
||||
{
|
||||
DrawText(font, surf[surf_no], x * magnification, y * magnification, color, text);
|
||||
}
|
||||
|
||||
void EndTextObject(void)
|
||||
{
|
||||
// DeleteObject(font);
|
||||
UnloadFont(font);
|
||||
}
|
||||
|
|
1176
src/Font.cpp
Normal file
1176
src/Font.cpp
Normal file
File diff suppressed because it is too large
Load diff
12
src/Font.h
Normal file
12
src/Font.h
Normal file
|
@ -0,0 +1,12 @@
|
|||
#pragma once
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#include "Backends/Rendering.h"
|
||||
|
||||
typedef struct FontObject FontObject;
|
||||
|
||||
FontObject* LoadFontFromData(const unsigned char *data, size_t data_size, unsigned int cell_width, unsigned int cell_height);
|
||||
FontObject* LoadFont(const char *font_filename, unsigned int cell_width, unsigned int cell_height);
|
||||
void DrawText(FontObject *font_object, Backend_Surface *surface, int x, int y, unsigned long colour, const char *string);
|
||||
void UnloadFont(FontObject *font_object);
|
|
@ -27,6 +27,7 @@
|
|||
#endif
|
||||
#include "Resource/CURSOR/CURSOR_IKA.bmp.h"
|
||||
#include "Resource/CURSOR/CURSOR_NORMAL.bmp.h"
|
||||
#include "Resource/FONT/LiberationMono.ttf.h"
|
||||
#include "Resource/ICON/ICON_MINI.bmp.h"
|
||||
#include "Resource/ORG/Access.org.h"
|
||||
#include "Resource/ORG/Anzen.org.h"
|
||||
|
@ -103,6 +104,7 @@ static const struct
|
|||
#endif
|
||||
{"CURSOR", "CURSOR_IKA", rCURSOR_IKA, sizeof(rCURSOR_IKA)},
|
||||
{"CURSOR", "CURSOR_NORMAL", rCURSOR_NORMAL, sizeof(rCURSOR_NORMAL)},
|
||||
{"FONT", "FONT", rLiberationMono, sizeof(rLiberationMono)},
|
||||
{"ICON", "ICON_MINI", rICON_MINI, sizeof(rICON_MINI)},
|
||||
{"ORG", "ACCESS", rAccess, sizeof(rAccess)},
|
||||
{"ORG", "ANZEN", rAnzen, sizeof(rAnzen)},
|
||||
|
|
Loading…
Add table
Reference in a new issue