diff options
author | Diego Borghetti <bdiego@gmail.com> | 2009-06-23 20:27:35 +0400 |
---|---|---|
committer | Diego Borghetti <bdiego@gmail.com> | 2009-06-23 20:27:35 +0400 |
commit | cb59bf722e597899c0653777f72bcc85ab476eca (patch) | |
tree | 1fc9a3f2ed1b1e7e12356191fe1bc93c228d42a3 /source/blender/blenfont/intern/blf_glyph.c | |
parent | eb22a7b2102cceb432e3545cd342956e92873a49 (diff) |
Move shadow option (for text) from editor/interface to blenfont.
Two new function:
BLF_shadow: set the level (for blur) and the shadow color.
BLF_shadow_offset: set the x and y offset for shadow.
(this is the current position plus offset)
By default shadow is not enable in the font, so before draw the
text you need call BLF_enable(BLF_SHADOW), also remember disable
the option in the end.
Diffstat (limited to 'source/blender/blenfont/intern/blf_glyph.c')
-rw-r--r-- | source/blender/blenfont/intern/blf_glyph.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/source/blender/blenfont/intern/blf_glyph.c b/source/blender/blenfont/intern/blf_glyph.c index 33a435cc5be..5e0868ea680 100644 --- a/source/blender/blenfont/intern/blf_glyph.c +++ b/source/blender/blenfont/intern/blf_glyph.c @@ -496,8 +496,18 @@ int blf_glyph_texture_render(FontBLF *font, GlyphBLF *g, float x, float y) GLint cur_tex; float dx, dx1; float y1, y2; + float xo, yo; + float color[4]; gt= g->tex_data; + + if (font->flags & BLF_SHADOW) { + xo= x; + yo= y; + x += font->shadow_x; + y += font->shadow_y; + } + dx= floor(x + gt->pos_x); dx1= dx + gt->width; y1= y + gt->pos_y; @@ -518,6 +528,27 @@ int blf_glyph_texture_render(FontBLF *font, GlyphBLF *g, float x, float y) if (cur_tex != gt->tex) glBindTexture(GL_TEXTURE_2D, gt->tex); + if (font->flags & BLF_SHADOW) { + glGetFloatv(GL_CURRENT_COLOR, color); + glColor4fv(font->shadow_col); + + if (font->shadow == 3) + blf_texture3_draw(gt->uv, dx, y1, dx1, y2); + else if (font->shadow == 5) + blf_texture5_draw(gt->uv, dx, y1, dx1, y2); + else + blf_texture_draw(gt->uv, dx, y1, dx1, y2); + + glColor4fv(color); + x= xo; + y= yo; + + dx= floor(x + gt->pos_x); + dx1= dx + gt->width; + y1= y + gt->pos_y; + y2= y + gt->pos_y - gt->height; + } + if (font->blur==3) blf_texture3_draw(gt->uv, dx, y1, dx1, y2); else if (font->blur==5) |