Style formatting. No code changes.
This commit is contained in:
@@ -22,184 +22,196 @@ JRenderer* JLBFont::mRenderer = NULL;
|
|||||||
|
|
||||||
JLBFont::JLBFont(const char *fontname, int lineheight, bool useVideoRAM)
|
JLBFont::JLBFont(const char *fontname, int lineheight, bool useVideoRAM)
|
||||||
{
|
{
|
||||||
mRenderer = JRenderer::GetInstance();
|
mRenderer = JRenderer::GetInstance();
|
||||||
|
|
||||||
mHeight = 0;
|
mHeight = 0;
|
||||||
mScale = 1.0f;
|
mScale = 1.0f;
|
||||||
mRotation = mSpacing = 0.0f;
|
mRotation = mSpacing = 0.0f;
|
||||||
mTracking = 0.0f;
|
mTracking = 0.0f;
|
||||||
mColor = ARGB(255,255,255,255);
|
mColor = ARGB(255,255,255,255);
|
||||||
|
|
||||||
mTexture = NULL;
|
mTexture = NULL;
|
||||||
mQuad = NULL;
|
mQuad = NULL;
|
||||||
mBase = 0;
|
mBase = 0;
|
||||||
|
|
||||||
char filename[256];
|
char filename[256];
|
||||||
short buffer[1024];
|
short buffer[1024];
|
||||||
|
|
||||||
|
|
||||||
sprintf(filename, "%s.dat", fontname);
|
sprintf(filename, "%s.dat", fontname);
|
||||||
|
|
||||||
//FILE *file;
|
//FILE *file;
|
||||||
JFileSystem *fileSys = JFileSystem::GetInstance();
|
JFileSystem *fileSys = JFileSystem::GetInstance();
|
||||||
if (!fileSys->OpenFile(filename)) return;
|
if (!fileSys->OpenFile(filename)) return;
|
||||||
|
|
||||||
fileSys->ReadFile((u8 *)buffer, 2048);
|
fileSys->ReadFile((u8 *)buffer, 2048);
|
||||||
fileSys->CloseFile();
|
fileSys->CloseFile();
|
||||||
|
|
||||||
sprintf(filename, "%s.png", fontname);
|
sprintf(filename, "%s.png", fontname);
|
||||||
mTexture = mRenderer->LoadTexture(filename, useVideoRAM);
|
mTexture = mRenderer->LoadTexture(filename, useVideoRAM);
|
||||||
|
|
||||||
if (mTexture == NULL) return;
|
if (mTexture == NULL) return;
|
||||||
|
|
||||||
mHeight = (float) lineheight;
|
mHeight = (float) lineheight;
|
||||||
|
|
||||||
mQuad = new JQuad(mTexture, 0.0f, 0.0f, 16.0f, mHeight);
|
mQuad = new JQuad(mTexture, 0.0f, 0.0f, 16.0f, mHeight);
|
||||||
|
|
||||||
float a, b, c;
|
float a, b, c;
|
||||||
|
|
||||||
float y = 0.0f;
|
float y = 0.0f;
|
||||||
float x;
|
float x;
|
||||||
|
|
||||||
// there are 16x16 characters in the texture map.
|
// there are 16x16 characters in the texture map.
|
||||||
float cellHeight = mTexture->mHeight/16.0f;
|
float cellHeight = mTexture->mHeight/16.0f;
|
||||||
|
|
||||||
int n = 0;
|
int n = 0;
|
||||||
for (int i=0;i<16;i++)
|
for (int i=0;i<16;i++)
|
||||||
{
|
{
|
||||||
for (int j=0;j<16;j++)
|
for (int j=0;j<16;j++)
|
||||||
{
|
{
|
||||||
x = (float)buffer[n*4]; // x offset
|
x = (float)buffer[n*4]; // x offset
|
||||||
a = (float)buffer[n*4+1]; // character width
|
a = (float)buffer[n*4+1]; // character width
|
||||||
b = (float)buffer[n*4+2];
|
b = (float)buffer[n*4+2];
|
||||||
c = (float)buffer[n*4+3];
|
c = (float)buffer[n*4+3];
|
||||||
|
|
||||||
mXPos[n] = x;
|
mXPos[n] = x;
|
||||||
mYPos[n] = y;
|
mYPos[n] = y;
|
||||||
mCharWidth[n] = a+b+c;
|
mCharWidth[n] = a+b+c;
|
||||||
|
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
|
|
||||||
y += cellHeight;
|
y += cellHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JLBFont::~JLBFont()
|
JLBFont::~JLBFont()
|
||||||
{
|
{
|
||||||
if (mQuad)
|
if (mQuad)
|
||||||
delete mQuad;
|
delete mQuad;
|
||||||
|
|
||||||
if (mTexture)
|
if (mTexture)
|
||||||
delete mTexture;
|
delete mTexture;
|
||||||
|
|
||||||
// JGERelease();
|
// JGERelease();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void JLBFont::DrawString(std::string s, float x, float y, int align, float leftOffset, float displayWidth)
|
void JLBFont::DrawString(std::string s, float x, float y, int align, float leftOffset, float displayWidth)
|
||||||
{
|
{
|
||||||
return DrawString(s.c_str(), x, y, align, leftOffset, displayWidth);
|
return DrawString(s.c_str(), x, y, align, leftOffset, displayWidth);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JLBFont::DrawString(const char *string, float x, float y, int align, float leftOffset, float displayWidth)
|
void JLBFont::DrawString(const char *string, float x, float y, int align, float leftOffset, float displayWidth)
|
||||||
{
|
{
|
||||||
char *p = (char*)string;
|
char *p = (char*)string;
|
||||||
float dx0 = x, dy = y;
|
float dx0 = x, dy = y;
|
||||||
|
|
||||||
if (mQuad == NULL) return;
|
if (mQuad == NULL) return;
|
||||||
|
|
||||||
float width = GetStringWidth(string);
|
float width = GetStringWidth(string);
|
||||||
|
|
||||||
if (align == JGETEXT_RIGHT) {
|
if (align == JGETEXT_RIGHT)
|
||||||
if (displayWidth) {
|
{
|
||||||
dx0 -= displayWidth;
|
if (displayWidth)
|
||||||
leftOffset += width - displayWidth;
|
{
|
||||||
}
|
dx0 -= displayWidth;
|
||||||
else
|
leftOffset += width - displayWidth;
|
||||||
dx0 -= width;
|
}
|
||||||
}
|
else
|
||||||
else if (align == JGETEXT_CENTER) {
|
dx0 -= width;
|
||||||
if (displayWidth) {
|
}
|
||||||
dx0 -= displayWidth/2;
|
else if (align == JGETEXT_CENTER)
|
||||||
leftOffset += width/2 - displayWidth/2;
|
{
|
||||||
}
|
if (displayWidth)
|
||||||
else
|
{
|
||||||
dx0 -= width/2;
|
dx0 -= displayWidth/2;
|
||||||
}
|
leftOffset += width/2 - displayWidth/2;
|
||||||
|
}
|
||||||
float dx = floorf(dx0);
|
else
|
||||||
dy = floorf(dy);
|
dx0 -= width/2;
|
||||||
float x0 = dx;
|
|
||||||
int index;
|
|
||||||
while (*p)
|
|
||||||
{
|
|
||||||
if (*p == '\n') {
|
|
||||||
p++;
|
|
||||||
dy += (mHeight * 1.1 * mScale);
|
|
||||||
dy = floorf(dy);
|
|
||||||
dx = dx0;
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Skip characters with no encoding.
|
float dx = floorf(dx0);
|
||||||
if((*p - 32) < 0 || (*p - 32) > 127){
|
dy = floorf(dy);
|
||||||
p++;
|
float x0 = dx;
|
||||||
continue;
|
int index;
|
||||||
}
|
while (*p)
|
||||||
|
{
|
||||||
|
if (*p == '\n')
|
||||||
|
{
|
||||||
|
p++;
|
||||||
|
dy += (mHeight * 1.1 * mScale);
|
||||||
|
dy = floorf(dy);
|
||||||
|
dx = dx0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
index = (*p - 32)+mBase;
|
//Skip characters with no encoding.
|
||||||
|
if((*p - 32) < 0 || (*p - 32) > 127)
|
||||||
float charWidth = mCharWidth[index];
|
{
|
||||||
float delta = (charWidth + mTracking) * mScale;
|
p++;
|
||||||
float xPos = mXPos[index];
|
continue;
|
||||||
if (leftOffset){
|
}
|
||||||
if (leftOffset < 0){
|
|
||||||
dx-=leftOffset;
|
index = (*p - 32)+mBase;
|
||||||
leftOffset = 0;
|
|
||||||
//continue;
|
float charWidth = mCharWidth[index];
|
||||||
}else if (leftOffset - delta > 0){
|
float delta = (charWidth + mTracking) * mScale;
|
||||||
leftOffset -= delta;
|
float xPos = mXPos[index];
|
||||||
|
if (leftOffset)
|
||||||
|
{
|
||||||
|
if (leftOffset < 0)
|
||||||
|
{
|
||||||
|
dx-=leftOffset;
|
||||||
|
leftOffset = 0;
|
||||||
|
//continue;
|
||||||
|
}
|
||||||
|
else if (leftOffset - delta > 0)
|
||||||
|
{
|
||||||
|
leftOffset -= delta;
|
||||||
|
p++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xPos = mXPos[index] + (leftOffset);
|
||||||
|
delta -= leftOffset;
|
||||||
|
leftOffset = 0;
|
||||||
|
|
||||||
|
charWidth = (delta/mScale) - mTracking;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (displayWidth)
|
||||||
|
{
|
||||||
|
// This condiction must be tested indepently in the case leftOffset and displayWidth need a fix at the same time.
|
||||||
|
if (dx > x0+displayWidth) return;
|
||||||
|
if (dx+delta > x0+displayWidth)
|
||||||
|
{
|
||||||
|
delta = x0 + displayWidth - dx;
|
||||||
|
charWidth = (delta/mScale) - mTracking;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mQuad->SetTextureRect(xPos, mYPos[index], charWidth , mHeight);
|
||||||
|
mRenderer->RenderQuad(mQuad, dx, dy, mRotation, mScale, mScale);
|
||||||
|
dx += delta;
|
||||||
p++;
|
p++;
|
||||||
continue;
|
|
||||||
}else{
|
|
||||||
xPos = mXPos[index] + (leftOffset);
|
|
||||||
delta -= leftOffset;
|
|
||||||
leftOffset = 0;
|
|
||||||
|
|
||||||
charWidth = (delta/mScale) - mTracking;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (displayWidth){
|
|
||||||
// This condiction must be tested indepently in the case leftOffset and displayWidth need a fix at the same time.
|
|
||||||
if (dx > x0+displayWidth) return;
|
|
||||||
if (dx+delta > x0+displayWidth) {
|
|
||||||
delta = x0 + displayWidth - dx;
|
|
||||||
charWidth = (delta/mScale) - mTracking;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mQuad->SetTextureRect(xPos, mYPos[index], charWidth , mHeight);
|
|
||||||
mRenderer->RenderQuad(mQuad, dx, dy, mRotation, mScale, mScale);
|
|
||||||
dx += delta;
|
|
||||||
p++;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void JLBFont::printf(float x, float y, const char *format, ...)
|
void JLBFont::printf(float x, float y, const char *format, ...)
|
||||||
{
|
{
|
||||||
char buffer[PRINTF_BUFFER_SIZE];
|
char buffer[PRINTF_BUFFER_SIZE];
|
||||||
va_list list;
|
va_list list;
|
||||||
|
|
||||||
va_start(list, format);
|
va_start(list, format);
|
||||||
vsprintf(buffer, format, list);
|
vsprintf(buffer, format, list);
|
||||||
va_end(list);
|
va_end(list);
|
||||||
|
|
||||||
DrawString(buffer, x, y);
|
DrawString(buffer, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -213,20 +225,20 @@ void JLBFont::SetColor(PIXEL_TYPE color)
|
|||||||
|
|
||||||
float JLBFont::GetStringWidth(const char *string) const
|
float JLBFont::GetStringWidth(const char *string) const
|
||||||
{
|
{
|
||||||
float len = 0.0f;
|
float len = 0.0f;
|
||||||
|
|
||||||
const char *p = string;
|
const char *p = string;
|
||||||
char ch;
|
char ch;
|
||||||
|
|
||||||
while (*p)
|
while (*p)
|
||||||
{
|
{
|
||||||
ch = *p - 32;
|
ch = *p - 32;
|
||||||
p++;
|
p++;
|
||||||
if (ch < 0) continue;
|
if (ch < 0) continue;
|
||||||
len += mCharWidth[ch+mBase] + mTracking;
|
len += mCharWidth[ch+mBase] + mTracking;
|
||||||
}
|
}
|
||||||
len -= mTracking;
|
len -= mTracking;
|
||||||
return len*mScale;
|
return len*mScale;
|
||||||
}
|
}
|
||||||
|
|
||||||
void JLBFont::SetScale(float scale) { mScale = scale; }
|
void JLBFont::SetScale(float scale) { mScale = scale; }
|
||||||
@@ -240,5 +252,5 @@ float JLBFont::GetHeight() const { return mHeight; }
|
|||||||
|
|
||||||
void JLBFont::SetBase(int base)
|
void JLBFont::SetBase(int base)
|
||||||
{
|
{
|
||||||
mBase = (base==0)?0:128;
|
mBase = (base==0)?0:128;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user