comparison engine/core/view/renderers/floatingtextrenderer.cpp @ 579:b2feacaed53c

* Added the colorbuffer patch with a small change due to SDL. Performance boost between 20-30% under OpenGL. * Improved the most renderers with setColor() function. * Fixed the genericrenderer, is now tested whether the images are in the viewport. * Fixed the gridrenderer, the grid is now drawn only up to the viewport. * Changed the vertex functions in opengl/renderbackendopengl.cpp from vertex3f() to vertex2f(). * Improved the Editor, now you can use blocking, grid and coordinate renderer over gui or keys. Additionally, the colors can be changed with the settings.xml.
author helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
date Sat, 31 Jul 2010 17:46:19 +0000
parents 7b451e3b2439
children 5e04f6349894
comparison
equal deleted inserted replaced
578:54d83a0462ee 579:b2feacaed53c
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_font(font) { 50 m_font(font) {
51 setEnabled(true); 51 setEnabled(false);
52 m_font_color = false;
53 m_color = m_font->getColor();
52 } 54 }
53 55
54 FloatingTextRenderer::FloatingTextRenderer(const FloatingTextRenderer& old): 56 FloatingTextRenderer::FloatingTextRenderer(const FloatingTextRenderer& old):
55 RendererBase(old), 57 RendererBase(old),
56 m_font(old.m_font) { 58 m_font(old.m_font),
57 setEnabled(true); 59 m_font_color(old.m_font_color),
60 m_color(old.m_color) {
61 setEnabled(false);
58 } 62 }
59 63
60 RendererBase* FloatingTextRenderer::clone() { 64 RendererBase* FloatingTextRenderer::clone() {
61 return new FloatingTextRenderer(*this); 65 return new FloatingTextRenderer(*this);
62 } 66 }
69 return; 73 return;
70 } 74 }
71 75
72 RenderList::const_iterator instance_it = instances.begin(); 76 RenderList::const_iterator instance_it = instances.begin();
73 const std::string* saytext = NULL; 77 const std::string* saytext = NULL;
74 78 SDL_Color old_color = m_font->getColor();
79 if(old_color.r != m_color.r || old_color.g != m_color.g || old_color.b != m_color.b) {
80 m_font->setColor(m_color.r, m_color.g, m_color.b);
81 m_font_color = true;
82 }
75 for (;instance_it != instances.end(); ++instance_it) { 83 for (;instance_it != instances.end(); ++instance_it) {
76 Instance* instance = (*instance_it)->instance; 84 Instance* instance = (*instance_it)->instance;
77 saytext = instance->getSayText(); 85 saytext = instance->getSayText();
78 if (saytext) { 86 if (saytext) {
79 const Rect& ir = (*instance_it)->dimensions; 87 const Rect& ir = (*instance_it)->dimensions;
84 r.w = img->getWidth(); 92 r.w = img->getWidth();
85 r.h = img->getHeight(); 93 r.h = img->getHeight();
86 img->render(r); 94 img->render(r);
87 } 95 }
88 } 96 }
97 if(m_font_color) {
98 m_font->setColor(old_color.r, old_color.g, old_color.b);
99 m_font_color = false;
100 }
101 }
102
103 void FloatingTextRenderer::setColor(Uint8 r, Uint8 g, Uint8 b) {
104 m_color.r = r;
105 m_color.g = g;
106 m_color.b = b;
89 } 107 }
90 108
91 FloatingTextRenderer* FloatingTextRenderer::getInstance(IRendererContainer* cnt) { 109 FloatingTextRenderer* FloatingTextRenderer::getInstance(IRendererContainer* cnt) {
92 return dynamic_cast<FloatingTextRenderer*>(cnt->getRenderer("FloatingTextRenderer")); 110 return dynamic_cast<FloatingTextRenderer*>(cnt->getRenderer("FloatingTextRenderer"));
93 } 111 }