#pragma once #include "globalincs/pstypes.h" #include "graphics/software/FSFont.h" namespace font { struct font; /** * @brief A VFNT font * * Class that contains a font of type FontType::VFNT_FONT * Name of the class is derived from the first four bytes of a font file which are "VFNT" */ class VFNTFont : public FSFont { private: font *fontPtr; //!< The font pointer public: /** * @brief Constructor that initializes the object with a primary font pointer * * @param [in] fnt A pointer to the font data. Has to be non-null */ explicit VFNTFont(font *fnt); /** * @brief Destroys the allocated font pointer */ ~VFNTFont() override; /** * @brief Gets the font data struct. * * @return the font data. */ font *getFontData(); /** * @brief Gets the type. This will always return FontType::VFNT_FONT * * @return The type. */ FontType getType() const override; /** * @brief Gets the height of this font * * @see FSFont::getHeight() * * @return The height. */ float getTextHeight() const override; /** * @brief Gets the family name of this font * * @see FSFont::getFamilyName() * * @return The family name. */ const SCP_string& getFamilyName() const override; /** * @brief Gets the size of the specified string in pixels. * * @param [in] text the text which should be checked. * @param textLen Length of the text. * @param resize_mode The used resize mode * @param [out] width If non-null, the width. * @param [out] height If non-null, the height. * @param scaleMultiplier The scale to use to apply scaling in addition to user settings */ void getStringSize(const char* text, size_t textLen, int resize_mode, float* width, float* height, float scaleMultiplier = 1.0f) const override; }; }