comparison 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
comparison
equal deleted inserted replaced
581:1e69fd582c94 582:5e04f6349894
45 static Logger _log(LM_VIEWVIEW); 45 static Logger _log(LM_VIEWVIEW);
46 46
47 47
48 FloatingTextRenderer::FloatingTextRenderer(RenderBackend* renderbackend, int position, AbstractFont* font): 48 FloatingTextRenderer::FloatingTextRenderer(RenderBackend* renderbackend, int position, AbstractFont* font):
49 RendererBase(renderbackend, position), 49 RendererBase(renderbackend, position),
50 m_renderbackend(renderbackend),
50 m_font(font) { 51 m_font(font) {
51 setEnabled(false); 52 setEnabled(false);
52 m_font_color = false; 53 m_font_color = false;
53 m_color = m_font->getColor(); 54 m_color = m_font->getColor();
54 } 55 }
55 56
56 FloatingTextRenderer::FloatingTextRenderer(const FloatingTextRenderer& old): 57 FloatingTextRenderer::FloatingTextRenderer(const FloatingTextRenderer& old):
57 RendererBase(old), 58 RendererBase(old),
59 m_renderbackend(old.m_renderbackend),
58 m_font(old.m_font), 60 m_font(old.m_font),
59 m_font_color(old.m_font_color), 61 m_font_color(old.m_font_color),
60 m_color(old.m_color) { 62 m_color(old.m_color) {
61 setEnabled(false); 63 setEnabled(false);
62 } 64 }
89 Rect r; 91 Rect r;
90 r.x = (ir.x + ir.w/2) - img->getWidth()/2; /// the center of the text rect is always aligned to the instance's rect center. 92 r.x = (ir.x + ir.w/2) - img->getWidth()/2; /// the center of the text rect is always aligned to the instance's rect center.
91 r.y = ir.y- img->getHeight(); /// make the text rect floating higher than the instance. 93 r.y = ir.y- img->getHeight(); /// make the text rect floating higher than the instance.
92 r.w = img->getWidth(); 94 r.w = img->getWidth();
93 r.h = img->getHeight(); 95 r.h = img->getHeight();
96 if(m_background) {
97 const int overdraw = 5;
98 Point p1 = Point(r.x-overdraw, r.y-overdraw);
99 Point p2 = Point(r.x+r.w+overdraw, r.y-overdraw);
100 Point p3 = Point(r.x+r.w+overdraw, r.y+r.h+overdraw);
101 Point p4 = Point(r.x-overdraw, r.y+r.h+overdraw);
102
103 m_renderbackend->drawQuad(p1, p2, p3, p4, m_backcolor.r, m_backcolor.g, m_backcolor.b);
104
105 m_renderbackend->drawLine(p1, p2, m_backbordercolor.r, m_backbordercolor.g, m_backbordercolor.b);
106 m_renderbackend->drawLine(p2, p3, m_backbordercolor.r, m_backbordercolor.g, m_backbordercolor.b);
107 m_renderbackend->drawLine(p3, p4, m_backbordercolor.r, m_backbordercolor.g, m_backbordercolor.b);
108 m_renderbackend->drawLine(p4, p1, m_backbordercolor.r, m_backbordercolor.g, m_backbordercolor.b);
109 }
94 img->render(r); 110 img->render(r);
95 } 111 }
96 } 112 }
97 if(m_font_color) { 113 if(m_font_color) {
98 m_font->setColor(old_color.r, old_color.g, old_color.b); 114 m_font->setColor(old_color.r, old_color.g, old_color.b);
104 m_color.r = r; 120 m_color.r = r;
105 m_color.g = g; 121 m_color.g = g;
106 m_color.b = b; 122 m_color.b = b;
107 } 123 }
108 124
125 void FloatingTextRenderer::setDefaultBackground(Uint8 br, Uint8 bg, Uint8 bb, Uint8 bbr, Uint8 bbg, Uint8 bbb) {
126 m_backcolor.r = br;
127 m_backcolor.g = bg;
128 m_backcolor.b = bb;
129
130 m_backbordercolor.r = bbr;
131 m_backbordercolor.g = bbg;
132 m_backbordercolor.b = bbb;
133
134 m_background = true;
135 }
136
137 void FloatingTextRenderer::resetDefaultBackground() {
138 m_background = false;
139 }
140
109 FloatingTextRenderer* FloatingTextRenderer::getInstance(IRendererContainer* cnt) { 141 FloatingTextRenderer* FloatingTextRenderer::getInstance(IRendererContainer* cnt) {
110 return dynamic_cast<FloatingTextRenderer*>(cnt->getRenderer("FloatingTextRenderer")); 142 return dynamic_cast<FloatingTextRenderer*>(cnt->getRenderer("FloatingTextRenderer"));
111 } 143 }
112 } 144 }