Optimize UITextEdit rendering

This commit is contained in:
Konrad Kuśnierz
2015-06-03 14:56:43 +02:00
parent 559e545e36
commit 6893a5e98a
7 changed files with 48 additions and 22 deletions

View File

@@ -135,6 +135,12 @@ void PainterOGL1::drawCoords(CoordsBuffer& coordsBuffer, DrawMode drawMode)
#endif
}
void PainterOGL1::drawFillCoords(CoordsBuffer& coordsBuffer)
{
setTexture(nullptr);
drawCoords(coordsBuffer);
}
void PainterOGL1::drawTextureCoords(CoordsBuffer& coordsBuffer, const TexturePtr& texture)
{
if(texture->isEmpty())

View File

@@ -50,6 +50,7 @@ public:
void refreshState();
void drawCoords(CoordsBuffer& coordsBuffer, DrawMode drawMode = Triangles);
void drawFillCoords(CoordsBuffer& coordsBuffer);
void drawTextureCoords(CoordsBuffer& coordsBuffer, const TexturePtr& texture);
void drawTexturedRect(const Rect& dest, const TexturePtr& texture, const Rect& src);
void drawUpsideDownTexturedRect(const Rect& dest, const TexturePtr& texture, const Rect& src);

View File

@@ -120,6 +120,13 @@ void PainterOGL2::drawCoords(CoordsBuffer& coordsBuffer, DrawMode drawMode)
PainterShaderProgram::enableAttributeArray(PainterShaderProgram::TEXCOORD_ATTR);
}
void PainterOGL2::drawFillCoords(CoordsBuffer& coordsBuffer)
{
setDrawProgram(m_shaderProgram ? m_shaderProgram : m_drawSolidColorProgram.get());
setTexture(nullptr);
drawCoords(coordsBuffer);
}
void PainterOGL2::drawTextureCoords(CoordsBuffer& coordsBuffer, const TexturePtr& texture)
{
if(texture && texture->isEmpty())

View File

@@ -41,6 +41,7 @@ public:
void unbind();
void drawCoords(CoordsBuffer& coordsBuffer, DrawMode drawMode = Triangles);
void drawFillCoords(CoordsBuffer& coordsBuffer);
void drawTextureCoords(CoordsBuffer& coordsBuffer, const TexturePtr& texture);
void drawTexturedRect(const Rect& dest, const TexturePtr& texture, const Rect& src);
void drawUpsideDownTexturedRect(const Rect& dest, const TexturePtr& texture, const Rect& src);

View File

@@ -62,6 +62,7 @@ public:
virtual void clear(const Color& color) = 0;
virtual void drawCoords(CoordsBuffer& coordsBuffer, DrawMode drawMode = Triangles) = 0;
virtual void drawFillCoords(CoordsBuffer& coordsBuffer) = 0;
virtual void drawTextureCoords(CoordsBuffer& coordsBuffer, const TexturePtr& texture) = 0;
virtual void drawTexturedRect(const Rect& dest, const TexturePtr& texture, const Rect& src) = 0;
void drawTexturedRect(const Rect& dest, const TexturePtr& texture) { drawTexturedRect(dest, texture, Rect(Point(0,0), texture->getSize())); }