Mercurial > fife-parpg
diff engine/core/view/renderers/floatingtextrenderer.cpp @ 582:5e04f6349894
* Improved the floatingtextrenderer. You can now set a background speech quad.
* Added a speech quad example to rio de hola.
* Little fix to the editor stuff.
author | helios2000@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Tue, 03 Aug 2010 13:57:12 +0000 |
parents | b2feacaed53c |
children | 47b49b9b0c0a |
line wrap: on
line diff
--- a/engine/core/view/renderers/floatingtextrenderer.cpp Mon Aug 02 10:26:21 2010 +0000 +++ b/engine/core/view/renderers/floatingtextrenderer.cpp Tue Aug 03 13:57:12 2010 +0000 @@ -47,6 +47,7 @@ FloatingTextRenderer::FloatingTextRenderer(RenderBackend* renderbackend, int position, AbstractFont* font): RendererBase(renderbackend, position), + m_renderbackend(renderbackend), m_font(font) { setEnabled(false); m_font_color = false; @@ -55,6 +56,7 @@ FloatingTextRenderer::FloatingTextRenderer(const FloatingTextRenderer& old): RendererBase(old), + m_renderbackend(old.m_renderbackend), m_font(old.m_font), m_font_color(old.m_font_color), m_color(old.m_color) { @@ -91,6 +93,20 @@ r.y = ir.y- img->getHeight(); /// make the text rect floating higher than the instance. r.w = img->getWidth(); r.h = img->getHeight(); + if(m_background) { + const int overdraw = 5; + Point p1 = Point(r.x-overdraw, r.y-overdraw); + Point p2 = Point(r.x+r.w+overdraw, r.y-overdraw); + Point p3 = Point(r.x+r.w+overdraw, r.y+r.h+overdraw); + Point p4 = Point(r.x-overdraw, r.y+r.h+overdraw); + + m_renderbackend->drawQuad(p1, p2, p3, p4, m_backcolor.r, m_backcolor.g, m_backcolor.b); + + m_renderbackend->drawLine(p1, p2, m_backbordercolor.r, m_backbordercolor.g, m_backbordercolor.b); + m_renderbackend->drawLine(p2, p3, m_backbordercolor.r, m_backbordercolor.g, m_backbordercolor.b); + m_renderbackend->drawLine(p3, p4, m_backbordercolor.r, m_backbordercolor.g, m_backbordercolor.b); + m_renderbackend->drawLine(p4, p1, m_backbordercolor.r, m_backbordercolor.g, m_backbordercolor.b); + } img->render(r); } } @@ -106,6 +122,22 @@ m_color.b = b; } + void FloatingTextRenderer::setDefaultBackground(Uint8 br, Uint8 bg, Uint8 bb, Uint8 bbr, Uint8 bbg, Uint8 bbb) { + m_backcolor.r = br; + m_backcolor.g = bg; + m_backcolor.b = bb; + + m_backbordercolor.r = bbr; + m_backbordercolor.g = bbg; + m_backbordercolor.b = bbb; + + m_background = true; + } + + void FloatingTextRenderer::resetDefaultBackground() { + m_background = false; + } + FloatingTextRenderer* FloatingTextRenderer::getInstance(IRendererContainer* cnt) { return dynamic_cast<FloatingTextRenderer*>(cnt->getRenderer("FloatingTextRenderer")); }