/**
 * Copyright (c) 2021 Dominic Masters
 * 
 * This software is released under the MIT License.
 * https://opensource.org/licenses/MIT
 */

#pragma once
#include <dawn/dawn.h>
#include "../spritebatch.h"

/**
 * 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
);