Mercurial > fife-parpg
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 } |