Text rendering tweaks.

This commit is contained in:
Steve 2018-12-23 15:32:33 +00:00
parent fc0bcc998c
commit a7310e43b1
4 changed files with 37 additions and 25 deletions

View File

@ -88,16 +88,16 @@ static void draw(void)
float h;
int th;
h = (SCREEN_WIDTH / 800.0) * background[endingImageIndex]->rect.h;
h = (app.config.winWidth / 800.0) * background[endingImageIndex]->rect.h;
blitRectScaled(atlasTexture->texture, 0, SCREEN_HEIGHT - h, SCREEN_WIDTH, h, &background[endingImageIndex]->rect, 0);
blitRectScaled(atlasTexture->texture, 0, app.config.winHeight - h, app.config.winWidth, h, &background[endingImageIndex]->rect, 0);
if (endingTimer > 0 && endingTextIndex < NUM_ENDING_LINES)
{
app.textWidth = (SCREEN_WIDTH / 2);
app.textWidth = (app.config.winWidth / 2);
th = getWrappedTextHeight(endingText[endingTextIndex], 24) + 15;
drawRect(0, SCREEN_HEIGHT - th - 10, SCREEN_WIDTH, th + 10, 0, 0, 0, 128);
drawText(SCREEN_WIDTH / 2, SCREEN_HEIGHT - th, 24, TA_CENTER, colors.white, endingText[endingTextIndex]);
drawRect(0, app.config.winHeight - th - 10, app.config.winWidth, th + 10, 0, 0, 0, 128);
drawText(app.config.winWidth / 2, app.config.winHeight - th, 24, TA_CENTER, colors.white, endingText[endingTextIndex]);
app.textWidth = 0;
}
}

View File

@ -136,7 +136,7 @@ void initHub(void)
cursor.y = app.config.winHeight / 2;
SDL_WarpMouseInWindow(app.window, cursor.x, cursor.y);
game.isComplete = 1;
game.isComplete = 0;
for (t = game.missionStatusHead.next ; t != NULL ; t = t->next)
{
@ -506,7 +506,7 @@ static void drawMissionInfo(void)
drawText(UI_WIDTH / 2, y + 25, 32, TA_CENTER, colors.white, selectedMission->name);
app.textWidth = (w - 150);
app.textWidth = (w - 25);
drawText(x + 15, y + 100, 22, TA_LEFT, colors.white, selectedMission->description);
app.textWidth = 0;

View File

@ -17,6 +17,7 @@ extern "C" { /* This helps CPP projects that include this header */
* Returns 0 success or -1 on failure, the error message is then retrievable
* via SDL_GetError().
*/
#define SDL_SavePNG(surface, file) \
SDL_SavePNG_RW(surface, SDL_RWFromFile(file, "wb"), 1)
/*
@ -29,19 +30,15 @@ extern "C" { /* This helps CPP projects that include this header */
* Returns 0 success or -1 on failure, the error message is then retrievable
* via SDL_GetError().
*/
extern int SDL_SavePNG_RW(SDL_Surface *surface, SDL_RWops *rw, int freedst);
/*
* Return new SDL_Surface with a format suitable for PNG output.
*/
extern SDL_Surface *SDL_PNGFormatAlpha(SDL_Surface *src);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif
#define SDL_SavePNG(surface, file) \
extern SDL_Surface *SDL_PNGFormatAlpha(SDL_Surface *src);
extern int SDL_SavePNG_RW(SDL_Surface *surface, SDL_RWops *rw, int freedst);
#define SDL_SavePNG(surface, file) \

View File

@ -22,15 +22,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
static void initFont(char *name, char *filename);
static void drawWord(char *word, int *x, int *y, int startX);
static void drawTextLines(int x, int y, int size, int align, SDL_Color color);
static void drawTextLine(int x, int y, int size, int align, SDL_Color color, const char *line);
static void drawTextLines(int x, int y, int size, int align);
static void drawTextLine(int x, int y, int size, int align, const char *line);
void calcTextDimensions(const char *text, int size, int *w, int *h);
void useFont(char *name);
static void initChars(Font *f);
static char *nextCharacter(const char *str, int *i);
static Glyph *findGlyph(char *c);
static SDL_Color white = {255, 255, 255, 255};
static char drawTextBuffer[1024];
static Font fontHead;
static Font *fontTail;
@ -56,6 +55,7 @@ static void initFont(char *name, char *filename)
SDL_Rect dest;
Glyph *g;
int i;
SDL_Color white = {255, 255, 255, 255};
f = malloc(sizeof(Font));
memset(f, 0, sizeof(Font));
@ -156,9 +156,6 @@ void drawText(int x, int y, int size, int align, SDL_Color color, const char *fo
if (activeFont)
{
SDL_SetTextureColorMod(activeFont->texture, color.r, color.g, color.b);
SDL_SetTextureAlphaMod(activeFont->texture, color.a);
memset(&drawTextBuffer, '\0', sizeof(drawTextBuffer));
va_start(args, format);
@ -167,16 +164,34 @@ void drawText(int x, int y, int size, int align, SDL_Color color, const char *fo
if (app.textWidth == 0)
{
drawTextLine(x, y, size, align, color, drawTextBuffer);
SDL_SetTextureColorMod(activeFont->texture, 0, 0, 0);
SDL_SetTextureAlphaMod(activeFont->texture, 255);
drawTextLine(x + 2, y + 2, size, align, drawTextBuffer);
drawTextLine(x + 1, y + 1, size, align, drawTextBuffer);
SDL_SetTextureColorMod(activeFont->texture, color.r, color.g, color.b);
SDL_SetTextureAlphaMod(activeFont->texture, color.a);
drawTextLine(x, y, size, align, drawTextBuffer);
}
else
{
drawTextLines(x, y, size, align, color);
SDL_SetTextureColorMod(activeFont->texture, 0, 0, 0);
SDL_SetTextureAlphaMod(activeFont->texture, 255);
drawTextLines(x + 2, y + 2, size, align);
drawTextLines(x + 1, y + 1, size, align);
SDL_SetTextureColorMod(activeFont->texture, color.r, color.g, color.b);
SDL_SetTextureAlphaMod(activeFont->texture, color.a);
drawTextLines(x, y, size, align);
}
}
}
static void drawTextLines(int x, int y, int size, int align, SDL_Color color)
static void drawTextLines(int x, int y, int size, int align)
{
char line[MAX_LINE_LENGTH], token[MAX_WORD_LENGTH];
int i, n, w, h, currentWidth, len;
@ -198,7 +213,7 @@ static void drawTextLines(int x, int y, int size, int align, SDL_Color color)
if (currentWidth + w > app.textWidth)
{
drawTextLine(x, y, size, align, color, line);
drawTextLine(x, y, size, align, line);
currentWidth = 0;
@ -217,10 +232,10 @@ static void drawTextLines(int x, int y, int size, int align, SDL_Color color)
}
}
drawTextLine(x, y, size, align, color, line);
drawTextLine(x, y, size, align, line);
}
static void drawTextLine(int x, int y, int size, int align, SDL_Color color, const char *line)
static void drawTextLine(int x, int y, int size, int align, const char *line)
{
int i, startX, n, w, h;
char word[MAX_WORD_LENGTH];