Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/ftfont/intern/FTF_TTFont.cpp')
-rw-r--r--source/blender/ftfont/intern/FTF_TTFont.cpp61
1 files changed, 34 insertions, 27 deletions
diff --git a/source/blender/ftfont/intern/FTF_TTFont.cpp b/source/blender/ftfont/intern/FTF_TTFont.cpp
index a9f4408f58a..f0979e4fdd8 100644
--- a/source/blender/ftfont/intern/FTF_TTFont.cpp
+++ b/source/blender/ftfont/intern/FTF_TTFont.cpp
@@ -107,7 +107,7 @@ FTF_TTFont::FTF_TTFont(void)
char *bundlepath;
#endif
- font=NULL;
+ fontB = fontW =NULL;
font_size=FONT_SIZE_DEFAULT;
strcpy(encoding_name, SYSTEM_ENCODING_DEFAULT);
@@ -145,7 +145,8 @@ FTF_TTFont::FTF_TTFont(void)
FTF_TTFont::~FTF_TTFont(void)
{
- if (font) delete font;
+ if (fontB) delete fontB;
+ if (fontW) delete fontW;
}
@@ -154,19 +155,26 @@ int FTF_TTFont::SetFont(char* str, int size)
int err = 0;
bool success = 0;
- delete font;
+ if(fontB) delete fontB;
+ if(fontW) delete fontW;
- font = new FTGLPixmapFont(str);
- err = font->Error();
+ fontB = new FTGLPixmapFont(str);
+ fontW = new FTGLPixmapFont(str);
+ err = fontB->Error();
if(err) {
// printf("Failed to open font %s\n", str);
return 0;
} else {
- success = font->FaceSize(size);
+ success = fontB->FaceSize(size);
+ if(!success) return 0;
+ success = fontW->FaceSize(size);
+ if(!success) return 0;
+
+ success = fontB->CharMap(ft_encoding_unicode);
if(!success) return 0;
- success = font->CharMap(ft_encoding_unicode);
+ success = fontW->CharMap(ft_encoding_unicode);
if(!success) return 0;
return 1;
@@ -212,7 +220,8 @@ void FTF_TTFont::SetEncoding(char* str)
void FTF_TTFont::SetSize(int size)
{
- font->FaceSize(size);
+ fontB->FaceSize(size);
+ fontW->FaceSize(size);
font_size = size;
}
@@ -223,12 +232,12 @@ int FTF_TTFont::GetSize(void)
int FTF_TTFont::Ascender(void)
{
- return font->Ascender();
+ return fontB->Ascender();
}
int FTF_TTFont::Descender(void)
{
- return font->Descender();
+ return fontB->Descender();
}
@@ -249,20 +258,14 @@ float FTF_TTFont::DrawString(char* str, unsigned int flag, int select)
len=utf8towchar(wstr,str);
if(!select) {
- glPixelTransferf(GL_RED_SCALE, 0.0);
- glPixelTransferf(GL_GREEN_SCALE, 0.0);
- glPixelTransferf(GL_BLUE_SCALE, 0.0);
- }
-
- font->Render(wstr);
-
- if(!select) {
- glPixelTransferf(GL_RED_SCALE, 1.0);
- glPixelTransferf(GL_GREEN_SCALE, 1.0);
- glPixelTransferf(GL_BLUE_SCALE, 1.0);
+ glColor4f(0.0, 0.0, 0.0, 1.0);
+ fontB->Render(wstr);
+ return fontB->Advance(wstr);
+ } else {
+ glColor4f(1.0, 1.0, 1.0, 1.0);
+ fontW->Render(wstr);
+ return fontW->Advance(wstr);
}
-
- return font->Advance(wstr);
}
@@ -276,17 +279,19 @@ float FTF_TTFont::DrawStringRGB(char* str, unsigned int flag, float r, float g,
else
len=utf8towchar(wstr,str);
+ glColor4f(1.0, 1.0, 1.0, 1.0);
+
glPixelTransferf(GL_RED_SCALE, r);
glPixelTransferf(GL_GREEN_SCALE, g);
glPixelTransferf(GL_BLUE_SCALE, b);
- font->Render(wstr);
+ fontW->Render(wstr);
glPixelTransferf(GL_RED_SCALE, 1.0);
glPixelTransferf(GL_GREEN_SCALE, 1.0);
glPixelTransferf(GL_BLUE_SCALE, 1.0);
- return font->Advance(wstr);
+ return fontW->Advance(wstr);
}
@@ -300,7 +305,8 @@ float FTF_TTFont::GetStringWidth(char* str, unsigned int flag)
else
len=utf8towchar(wstr,str);
- return font->Advance(wstr);
+ glColor4f(0.0, 0.0, 0.0, 1.0);
+ return fontB->Advance(wstr);
}
@@ -314,6 +320,7 @@ void FTF_TTFont::GetBoundingBox(char* str, float *llx, float *lly, float *llz, f
else
len=utf8towchar(wstr,str);
- font->BBox(wstr, *llx, *lly, *llz, *urx, *ury, *urz);
+ glColor4f(0.0, 0.0, 0.0, 1.0);
+ fontB->BBox(wstr, *llx, *lly, *llz, *urx, *ury, *urz);
}