for formatting text on booster shop, we pass the desired length from
getformatted text with noremove(no removal of {}) enabled, if its not
enabled then default the value to zero(passing zero means use the
default values)
205 lines
5.7 KiB
C++
205 lines
5.7 KiB
C++
#ifndef WFONT_H_
|
|
#define WFONT_H_
|
|
|
|
#include <JLBFont.h>
|
|
#include <JRenderer.h>
|
|
#include <JSprite.h>
|
|
#include "config.h"
|
|
|
|
namespace Fonts
|
|
{
|
|
enum Font_Type
|
|
{
|
|
MAIN_FONT = 0,
|
|
MENU_FONT = 1,
|
|
OPTION_FONT = 1,
|
|
MAGIC_FONT = 2,
|
|
SMALLFACE_FONT = 3
|
|
};
|
|
|
|
// when using gbk languages and we need to keep around single byte font variants,
|
|
// the single byte fonts will be offset by this value
|
|
const unsigned int kSingleByteFontOffset = 100;
|
|
}
|
|
|
|
class WFont
|
|
{
|
|
public:
|
|
int mFontID;
|
|
// Rendering text to screen.
|
|
// Note:
|
|
// align=JGETEXT_LEFT, string region (x-leftOffset, x-leftOffset+StringWidth), display window (x, x+displayWidth)
|
|
// align=JGETEXT_CENTER, string region (x-leftOffset-StringWidth/2, x-leftOffset+StringWidth/2), display window (x-displayWidth/2, x+displayWidth/2)
|
|
// align=JGETEXT_RIGHT, string region (x-leftOffset-StringWidth, x-leftOffset), display window (x-displayWidth, x)
|
|
// Only when width is NOT zero, characters outside the display window are not rendered.
|
|
//
|
|
virtual void DrawString(const char *s, float x, float y, int align = JGETEXT_LEFT, float leftOffset = 0, float displayWidth = 0) = 0;
|
|
virtual void DrawString(std::string s, float x, float y, int align = JGETEXT_LEFT, float leftOffset = 0, float displayWidth = 0) = 0;
|
|
// Set font color.
|
|
virtual void SetColor(PIXEL_TYPE color) = 0;
|
|
// Get font color.
|
|
virtual PIXEL_TYPE GetColor() const = 0;
|
|
// Set scale for rendering.
|
|
virtual void SetScale(float scale) = 0;
|
|
// Get rendering scale.
|
|
virtual float GetScale() const = 0;
|
|
// Get height of font.
|
|
virtual float GetHeight() const = 0;
|
|
// Get width of rendering string on screen.
|
|
virtual float GetStringWidth(const char *s) const = 0;
|
|
// Set font tracking.
|
|
virtual void SetTracking(float tracking) = 0;
|
|
// Set Base for the character set to use.
|
|
virtual void SetBase(int base) = 0;
|
|
// Format text.
|
|
virtual void FormatText(string &s, vector<string>& output, int customLen = 0) = 0;
|
|
WFont(int inID) : mFontID(inID) {};
|
|
virtual ~WFont() {};
|
|
};
|
|
|
|
class WLBFont: public WFont
|
|
{
|
|
public:
|
|
WLBFont(int inFontID, const char *fontname, int lineheight, bool useVideoRAM = false);
|
|
~WLBFont()
|
|
{
|
|
SAFE_DELETE(it);
|
|
}
|
|
;
|
|
|
|
void DrawString(const char *s, float x, float y, int align = JGETEXT_LEFT, float leftOffset = 0, float width = 0)
|
|
{
|
|
it->DrawString(s, x, y, align, leftOffset, width);
|
|
}
|
|
;
|
|
void DrawString(std::string s, float x, float y, int align = JGETEXT_LEFT, float leftOffset = 0, float width = 0)
|
|
{
|
|
it->DrawString(s, x, y, align, leftOffset, width);
|
|
}
|
|
;
|
|
void SetColor(PIXEL_TYPE color)
|
|
{
|
|
it->SetColor(color);
|
|
}
|
|
;
|
|
PIXEL_TYPE GetColor() const
|
|
{
|
|
return it->GetColor();
|
|
}
|
|
;
|
|
void SetScale(float scale)
|
|
{
|
|
it->SetScale(scale);
|
|
}
|
|
;
|
|
float GetScale() const
|
|
{
|
|
return it->GetScale();
|
|
}
|
|
;
|
|
float GetHeight() const
|
|
{
|
|
return it->GetHeight();
|
|
}
|
|
;
|
|
float GetStringWidth(const char *s) const
|
|
{
|
|
return it->GetStringWidth(s);
|
|
}
|
|
;
|
|
void SetTracking(float tracking)
|
|
{
|
|
it->SetTracking(tracking);
|
|
}
|
|
;
|
|
void SetBase(int base)
|
|
{
|
|
it->SetBase(base);
|
|
}
|
|
;
|
|
void FormatText(string &s, vector<string>& output, int customLen = 0);
|
|
|
|
private:
|
|
JLBFont * it;
|
|
};
|
|
|
|
class WFBFont: public WFont
|
|
{
|
|
public:
|
|
WFBFont(int inFontID, const char *fontname, int lineheight, bool useVideoRAM = false);
|
|
WFBFont(int inFontID) : WFont(inFontID) {}; // Legacy : remove it when possible
|
|
~WFBFont();
|
|
|
|
void DrawString(std::string s, float x, float y, int align = JGETEXT_LEFT, float leftOffset = 0, float width = 0);
|
|
void SetColor(PIXEL_TYPE color);
|
|
PIXEL_TYPE GetColor() const
|
|
{
|
|
return mColor0;
|
|
}
|
|
;
|
|
void SetScale(float scale);
|
|
float GetScale() const;
|
|
float GetHeight() const;
|
|
virtual float GetStringWidth(const char *s) const;
|
|
void SetTracking(float) {};
|
|
void SetBase(int) {};
|
|
void FormatText(string &, vector<string>&, int customLen = 0) {};
|
|
|
|
virtual void DrawString(const char *s, float x, float y, int align = JGETEXT_LEFT, float leftOffset = 0, float width = 0);
|
|
virtual int GetCode(const u8 *ch, int *charLength) const = 0;
|
|
virtual int GetMana(const u8 *ch) const = 0;
|
|
|
|
protected:
|
|
static JRenderer* mRenderer;
|
|
|
|
u16* mIndex;
|
|
u8* mStdFont;
|
|
u8* mExtraFont;
|
|
|
|
PIXEL_TYPE mColor0;
|
|
PIXEL_TYPE mColor;
|
|
unsigned int mFontSize;
|
|
float mScale;
|
|
unsigned int mBytesPerChar;
|
|
unsigned int mBytesPerRow;
|
|
|
|
int mCacheImageWidth;
|
|
int mCacheImageHeight;
|
|
int mCol;
|
|
int mRow;
|
|
int mCacheSize;
|
|
JTexture * mTexture;
|
|
JQuad ** mSprites;
|
|
int *mGBCode;
|
|
int mCurr;
|
|
|
|
PIXEL_TYPE* mCharBuffer;
|
|
virtual int PreCacheChar(const u8 *ch);
|
|
};
|
|
|
|
class WGBKFont: public WFBFont
|
|
{
|
|
public:
|
|
WGBKFont(int inFontID, const char *fontname, int lineheight, bool useVideoRAM = false);
|
|
|
|
int PreCacheChar(const u8 *ch);
|
|
float GetStringWidth(const char *s) const;
|
|
void DrawString(const char *s, float x, float y, int align = JGETEXT_LEFT, float leftOffset = 0, float width = 0);
|
|
int GetCode(const u8 *ch, int *charLength) const;
|
|
int GetMana(const u8 *ch) const;
|
|
void FormatText(string &s, vector<string>& output, int customLen = 0);
|
|
};
|
|
|
|
class WUFont: public WFBFont
|
|
{
|
|
public:
|
|
WUFont(int inFontID, const char *fontname, int lineheight, bool useVideoRAM = false) :
|
|
WFBFont(inFontID, fontname, lineheight, useVideoRAM) {};
|
|
|
|
int GetCode(const u8 *ch, int *charLength) const;
|
|
int GetMana(const u8 *ch) const;
|
|
void FormatText(string &s, vector<string>& output, int customLen = 0);
|
|
};
|
|
|
|
#endif
|