diff options
author | Ton Roosendaal <ton@blender.org> | 2003-10-20 19:40:20 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2003-10-20 19:40:20 +0400 |
commit | 7f5d06d638ff24444da942cf91c130d5393818cb (patch) | |
tree | 2b21f227adfb1d7f2004087e60b05c3af230d5ee /source/blender/ftfont | |
parent | 628b0025836183436ab5b83120497ebe060f89b7 (diff) |
Another mega commit... loadsof restructure, and a pretty good one! :)
- changed the BIF_DrawString() function. it used to work different for
AA fonts as for default fonts. Now it's identical. Setting color for fonts
can just be done with OpenGL, for both font types.
Removed: BIF_DrawStringRGB()
- added theme color options for Buttons
- recoded DefButton, so it automatically chooses the right color.
- had to remove a 1000 uiBlockSetCol() calls for that reason...
- uiBlockSetCol() still works, to override automatic color
- removed entirely the silly old color system (BIFColorID). All color
calls can now be done with a BIF_ThemeColor() call, including fonts and
buttons and opengl stuff
- all buttons in button header have headercolor by default
- recoded drawing icons, it was a really bad & old loop doing manually
colorshading and blending... which was per pixel a load of code!
Now it uses a single OpenGL call to blend or colorize. Quite faster!
- (as test, for review) icons don't colorize anymore with button color,
but have a different alpha to blend in (when not active)
- recoded the entire interface_draw.c file...:
- drawing buttons is separated in three parts:
1. main drawing function for text and icons
2. free definable callback for button itself
3. free definable callback for slider
- removed a load of redundant code for this!
- coded a minimal theme, and adjusted Matt's buttons to match new
callback system
- adding new drawing themes is piece of cake now
- for coders, default 'themes' to be aware of:
UI_EMBOSS : the themable drawing style
UI_EMBOSSP: the pulldown menu system (apart from color not themable)
UI_EMBOSSN: draw nothing, only text and/or icon
UI_EMBOSSM: minimal theme, still in use for Logic and Constraintsa
this can be set with uiBlockSetEmboss(block) or in the uiNewBlock() call.
TODO: make UI API call for button alignment
(plus removed another series of warnings from code...)
Plus: fixed bug in Matts commit: he used a 'short' button for an 'int'
Diffstat (limited to 'source/blender/ftfont')
-rw-r--r-- | source/blender/ftfont/FTF_Api.h | 10 | ||||
-rw-r--r-- | source/blender/ftfont/intern/FTF_Api.cpp | 11 | ||||
-rw-r--r-- | source/blender/ftfont/intern/FTF_TTFont.cpp | 41 | ||||
-rw-r--r-- | source/blender/ftfont/intern/FTF_TTFont.h | 6 |
4 files changed, 14 insertions, 54 deletions
diff --git a/source/blender/ftfont/FTF_Api.h b/source/blender/ftfont/FTF_Api.h index 4fa97f0acba..5272697c777 100644 --- a/source/blender/ftfont/FTF_Api.h +++ b/source/blender/ftfont/FTF_Api.h @@ -88,16 +88,8 @@ FTF_EXPORT void FTF_TransConvString(char* str, char* ustr, unsigned int flag); * @param mode flag to forward to FTF_TransConvString() * @return Width drawing */ -FTF_EXPORT float FTF_DrawString(char* str, unsigned int flag, int select); +FTF_EXPORT float FTF_DrawString(char* str, unsigned int flag); -/** - * Draws a string at the current raster postion with rgb coloring. - * @param str The string to draw - * @param rgb Floats to manipulate the the glyph pixmap coloring. - * @param mode flag to forward to FTF_TransConvString() - * @return Width drawing - */ -FTF_EXPORT float FTF_DrawStringRGB(char* str, unsigned int flag, float r, float g, float b); /** * Get a character width diff --git a/source/blender/ftfont/intern/FTF_Api.cpp b/source/blender/ftfont/intern/FTF_Api.cpp index ac158ae191f..42fac0c4061 100644 --- a/source/blender/ftfont/intern/FTF_Api.cpp +++ b/source/blender/ftfont/intern/FTF_Api.cpp @@ -84,15 +84,10 @@ FTF_EXPORT float FTF_DrawCharacter(char c, unsigned int flag) */ -FTF_EXPORT float FTF_DrawString(char* str, unsigned int flag, int select) +/* does color too, using glGet */ +FTF_EXPORT float FTF_DrawString(char* str, unsigned int flag) { - return ttfont.DrawString(str, flag, select); -} - - -FTF_EXPORT float FTF_DrawStringRGB(char* str, unsigned int flag, float r, float g, float b) -{ - return ttfont.DrawStringRGB(str, flag, r, g, b); + return ttfont.DrawString(str, flag); } diff --git a/source/blender/ftfont/intern/FTF_TTFont.cpp b/source/blender/ftfont/intern/FTF_TTFont.cpp index 6f50c2e0841..3233082cca7 100644 --- a/source/blender/ftfont/intern/FTF_TTFont.cpp +++ b/source/blender/ftfont/intern/FTF_TTFont.cpp @@ -225,12 +225,12 @@ int FTF_TTFont::GetSize(void) int FTF_TTFont::Ascender(void) { - return font->Ascender(); + return (int)font->Ascender(); } int FTF_TTFont::Descender(void) { - return font->Descender(); + return (int)font->Descender(); } @@ -240,8 +240,9 @@ int FTF_TTFont::TransConvString(char* str, char* ustr, unsigned int flag) } -float FTF_TTFont::DrawString(char* str, unsigned int flag, int select) +float FTF_TTFont::DrawString(char* str, unsigned int flag) { + float color[4]; wchar_t wstr[FTF_MAX_STR_SIZE-1]={'\0'}; int len=0; @@ -250,37 +251,11 @@ float FTF_TTFont::DrawString(char* str, unsigned int flag, int select) else len=utf8towchar(wstr,str); - if(!select) { - glPixelTransferf(GL_RED_SCALE, 0.0); - glPixelTransferf(GL_GREEN_SCALE, 0.0); - glPixelTransferf(GL_BLUE_SCALE, 0.0); - } + glGetFloatv(GL_CURRENT_COLOR, color); - font->Render(wstr); - - if(!select) { - glPixelTransferf(GL_RED_SCALE, 1.0); - glPixelTransferf(GL_GREEN_SCALE, 1.0); - glPixelTransferf(GL_BLUE_SCALE, 1.0); - } - - return font->Advance(wstr); -} - - -float FTF_TTFont::DrawStringRGB(char* str, unsigned int flag, float r, float g, float b) -{ - wchar_t wstr[FTF_MAX_STR_SIZE-1]={'\0'}; - int len=0; - - if (FTF_USE_GETTEXT & flag) - len=utf8towchar(wstr,gettext(str)); - else - len=utf8towchar(wstr,str); - - glPixelTransferf(GL_RED_SCALE, r); - glPixelTransferf(GL_GREEN_SCALE, g); - glPixelTransferf(GL_BLUE_SCALE, b); + glPixelTransferf(GL_RED_SCALE, color[0]); + glPixelTransferf(GL_GREEN_SCALE, color[1]); + glPixelTransferf(GL_BLUE_SCALE, color[2]); font->Render(wstr); diff --git a/source/blender/ftfont/intern/FTF_TTFont.h b/source/blender/ftfont/intern/FTF_TTFont.h index 9492e326a7e..e4cdfd75b16 100644 --- a/source/blender/ftfont/intern/FTF_TTFont.h +++ b/source/blender/ftfont/intern/FTF_TTFont.h @@ -68,13 +68,11 @@ public: int TransConvString(char* str, char* ustr, unsigned int flag); /** - * Draws a string at the current raster position. + * Draws a string at the current raster position in current opengl color. * @param str The string to draw. * @param flag Whether use gettext and UTF8 or system encoding. */ - float DrawString(char* str, unsigned int flag, int select); -// float DrawString(char* str, unsigned char r, unsigned char g, unsigned char b, unsigned int flag); - float DrawStringRGB(char* str, unsigned int flag, float r, float g, float b); + float DrawString(char* str, unsigned int flag); float GetStringWidth(char* str, unsigned int flag); |