summaryrefslogtreecommitdiff
path: root/vcl/inc/opengl
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2016-04-04 19:29:27 +0900
committerTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2016-04-08 19:10:12 +0900
commit80d0b2916db81a7f47bb1d368677016bbb870df6 (patch)
tree1904c88e39a30c645958b7dfa52b14095abd5135 /vcl/inc/opengl
parent40e9ed91bd8bbfecfc3832d73a81741d0aa97d3a (diff)
opengl: use packed texture atlas for glyph cache in win. backend
Change-Id: I6a627699d49bad47213788877fa3947ad2ef83f4
Diffstat (limited to 'vcl/inc/opengl')
-rw-r--r--vcl/inc/opengl/AccumulatedTextures.hxx17
-rw-r--r--vcl/inc/opengl/texture.hxx6
2 files changed, 13 insertions, 10 deletions
diff --git a/vcl/inc/opengl/AccumulatedTextures.hxx b/vcl/inc/opengl/AccumulatedTextures.hxx
index 9ce170c2a0af..e74c06535f69 100644
--- a/vcl/inc/opengl/AccumulatedTextures.hxx
+++ b/vcl/inc/opengl/AccumulatedTextures.hxx
@@ -11,6 +11,8 @@
#ifndef INCLUDED_VCL_INC_OPENGL_ACCUMULATEDTEXTURES_H
#define INCLUDED_VCL_INC_OPENGL_ACCUMULATEDTEXTURES_H
+#include <vcl/opengl/OpenGLHelper.hxx>
+
#include <o3tl/make_unique.hxx>
#include "opengl/texture.hxx"
#include <memory>
@@ -34,10 +36,10 @@ struct AccumulatedTexturesEntry
: maTexture(rTexture)
{}
- void insert(const SalColor& aColor, const SalTwoRect& r2Rect)
+ void insert(const OpenGLTexture& rTexture, const SalColor& aColor, const SalTwoRect& r2Rect)
{
TextureDrawParameters& aDrawParameters = maColorTextureDrawParametersMap[aColor];
- maTexture.FillCoords<GL_TRIANGLES>(aDrawParameters.maTextureCoords, r2Rect, false);
+ rTexture.FillCoords<GL_TRIANGLES>(aDrawParameters.maTextureCoords, r2Rect, false);
GLfloat nX1 = r2Rect.mnDestX;
GLfloat nY1 = r2Rect.mnDestY;
@@ -86,19 +88,18 @@ public:
maEntries.clear();
}
- void insert(const OpenGLTexture& rTexture, const SalColor& aColor, const SalTwoRect& r2Rect)
+ void insert(OpenGLTexture& rTexture, const SalColor& aColor, const SalTwoRect& r2Rect)
{
GLuint nTextureId = rTexture.Id();
- auto iterator = maEntries.find(nTextureId);
-
- if (iterator == maEntries.end())
+ if (maEntries.find(nTextureId) == maEntries.end())
{
- maEntries[nTextureId] = o3tl::make_unique<AccumulatedTexturesEntry>(rTexture);
+ OpenGLTexture aWholeTexture(rTexture.GetWholeTexture());
+ maEntries[nTextureId] = o3tl::make_unique<AccumulatedTexturesEntry>(aWholeTexture);
}
std::unique_ptr<AccumulatedTexturesEntry>& rEntry = maEntries[nTextureId];
- rEntry->insert(aColor, r2Rect);
+ rEntry->insert(rTexture, aColor, r2Rect);
}
AccumulatedTexturesMap& getAccumulatedTexturesMap()
diff --git a/vcl/inc/opengl/texture.hxx b/vcl/inc/opengl/texture.hxx
index f48a1a166b03..a220875ba1ac 100644
--- a/vcl/inc/opengl/texture.hxx
+++ b/vcl/inc/opengl/texture.hxx
@@ -96,7 +96,7 @@ private:
public:
OpenGLTexture();
- OpenGLTexture(ImplOpenGLTexture* pImpl, Rectangle aRectangle, int nSlotNumber = 0);
+ OpenGLTexture(ImplOpenGLTexture* pImpl, Rectangle aRectangle, int nSlotNumber);
OpenGLTexture( int nWidth, int nHeight, bool bAllocate = true );
OpenGLTexture( int nWidth, int nHeight, int nFormat, int nType, void const * pData );
@@ -113,13 +113,15 @@ public:
void GetCoord( GLfloat* pCoord, const SalTwoRect& rPosAry, bool bInverted=false ) const;
void GetWholeCoord( GLfloat* pCoord ) const;
-
+ OpenGLTexture GetWholeTexture();
void Bind();
void Unbind();
void Read( GLenum nFormat, GLenum nType, sal_uInt8* pData );
GLuint AddStencil();
GLuint StencilId() const;
+ bool CopyData(int nWidth, int nHeight, int nFormat, int nType, sal_uInt8* pData);
+
void SaveToFile(const OUString& rFileName);
GLenum GetFilter() const;