71 lines
2.0 KiB
C
71 lines
2.0 KiB
C
/**
|
|
* Copyright (c) 2021 Dominic Masters
|
|
*
|
|
* This software is released under the MIT License.
|
|
* https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
#pragma once
|
|
#include "../libs.h"
|
|
#include "spritebatch.h"
|
|
#include "tileset.h"
|
|
#include "../util/math.h"
|
|
|
|
/** Which is the first character within the font tilemap */
|
|
#define BITMAP_FONT_CHAR_START 33
|
|
|
|
/** Center a font along the X axis */
|
|
#define BITMAP_FONT_CENTER_X 9876543
|
|
|
|
/** Center a font along the Y axis */
|
|
#define BITMAP_FONT_CENTER_Y -BITMAP_FONT_CENTER_X
|
|
|
|
/** Align right edge of font to origin */
|
|
#define BITMAP_FONT_RIGHT_X (BITMAP_FONT_CENTER_X-1)
|
|
|
|
typedef struct {
|
|
float width, height;
|
|
int32_t lines;
|
|
} bitmapfontmeasure_t;
|
|
|
|
/**
|
|
* Get the division for a given character.
|
|
*
|
|
* @param tileset Tileset to get the division from.
|
|
* @param character Character to get the division for.
|
|
* @return The division from the tileset for the character.
|
|
*/
|
|
tilesetdiv_t * bitmapFontGetCharacterDivision(tileset_t *tileset,
|
|
char character
|
|
);
|
|
|
|
/**
|
|
* Measures a string's fully rendered size.
|
|
*
|
|
* @param string The string to measure
|
|
* @param charWidth The width of each character.
|
|
* @param charHeight The height of each character.
|
|
* @return The measured string.
|
|
*/
|
|
bitmapfontmeasure_t bitmapFontMeasure(char *string,
|
|
float charWidth, float charHeight
|
|
);
|
|
|
|
/**
|
|
* Renders a set of font characters to the sprite. Coordinates are anchored to
|
|
* the top left (0,0) origin.
|
|
*
|
|
* @param batch Sprite Batch to render to.
|
|
* @param tileset Tileset for the font.
|
|
* @param string String to render.
|
|
* @param x Position in X space.
|
|
* @param y Position in Y space.
|
|
* @param z Position in Z space.
|
|
* @param charWidth Width of each character. Set to -1 to use the height ratio.
|
|
* @param charHeight Height of each character. Set to -1 to be the width ratio.
|
|
* @returns The string measurement.
|
|
*/
|
|
bitmapfontmeasure_t bitmapFontSpriteBatchBuffer(
|
|
spritebatch_t *batch, tileset_t *tileset,
|
|
char *string, float x, float y, float z, float charWidth, float charHeight
|
|
); |