[Libreoffice-commits] core.git: Branch 'feature/opengl-vcl' - 2 commits - chart2/opengl vcl/inc vcl/Library_vclplug_gen.mk vcl/opengl vcl/unx

Markus Mohrhard markus.mohrhard at collabora.co.uk
Sun Nov 9 16:52:47 PST 2014


 chart2/opengl/README.deprecated            |   23 --------------------
 vcl/Library_vclplug_gen.mk                 |    1 
 vcl/inc/cairotextrender.hxx                |    1 
 vcl/opengl/README.deprecated               |   23 ++++++++++++++++++++
 vcl/unx/generic/gdi/cairotextrender.cxx    |    1 
 vcl/unx/generic/gdi/salgdi.cxx             |    8 ++++++-
 vcl/unx/generic/gdi/x11cairotextrender.cxx |   33 +++++++++++++++++++++++++++++
 vcl/unx/generic/gdi/x11cairotextrender.hxx |   13 ++++++++++-
 8 files changed, 78 insertions(+), 25 deletions(-)

New commits:
commit c430827ff05fd1beac3a261adefd43d7fb344c8a
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date:   Mon Nov 10 01:13:46 2014 +0100

    move README.deprecated from chart2 to vcl
    
    Change-Id: I077209d52805e1b8850a6702b9d88fe63acf8a0b

diff --git a/chart2/opengl/README.deprecated b/vcl/opengl/README.deprecated
similarity index 100%
rename from chart2/opengl/README.deprecated
rename to vcl/opengl/README.deprecated
commit 897d2851888a9be96630b9a274fc4a72f5b138d5
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date:   Mon Nov 10 00:09:01 2014 +0100

    implementation for OpenGL text rendering in the unx backend
    
    Change-Id: Ib1246f361d5efd13a7e36d568641c6360495604d

diff --git a/vcl/Library_vclplug_gen.mk b/vcl/Library_vclplug_gen.mk
index bec6f4c..73e5d01 100644
--- a/vcl/Library_vclplug_gen.mk
+++ b/vcl/Library_vclplug_gen.mk
@@ -95,6 +95,7 @@ $(eval $(call gb_Library_add_exception_objects,vclplug_gen,\
     vcl/unx/generic/gdi/gcach_xpeer \
 	vcl/unx/generic/gdi/gdiimpl \
 	vcl/unx/generic/gdi/pixmap \
+	vcl/unx/generic/gdi/openglx11cairotextrender \
     vcl/unx/generic/gdi/salbmp \
     vcl/unx/generic/gdi/salgdi2 \
     vcl/unx/generic/gdi/salgdi3 \
diff --git a/vcl/inc/cairotextrender.hxx b/vcl/inc/cairotextrender.hxx
index 7bc0b2f..e5db2ab 100644
--- a/vcl/inc/cairotextrender.hxx
+++ b/vcl/inc/cairotextrender.hxx
@@ -77,6 +77,7 @@ class CairoTextRender : public TextRenderImpl
 protected:
     virtual GlyphCache& getPlatformGlyphCache() = 0;
     virtual cairo_surface_t* getCairoSurface() = 0;
+    virtual void drawSurface(cairo_t* cr) = 0;
 
 bool setFont( const FontSelectPattern *pEntry, int nFallbackLevel );
 
diff --git a/vcl/unx/generic/gdi/cairotextrender.cxx b/vcl/unx/generic/gdi/cairotextrender.cxx
index 5adbd87..5b31b92 100644
--- a/vcl/unx/generic/gdi/cairotextrender.cxx
+++ b/vcl/unx/generic/gdi/cairotextrender.cxx
@@ -341,6 +341,7 @@ void CairoTextRender::DrawServerFontLayout( const ServerFontLayout& rLayout )
         aI = aNext;
     }
 
+    drawSurface(cr);
     cairo_destroy(cr);
 }
 
diff --git a/vcl/unx/generic/gdi/salgdi.cxx b/vcl/unx/generic/gdi/salgdi.cxx
index b4df486..47b20bc 100644
--- a/vcl/unx/generic/gdi/salgdi.cxx
+++ b/vcl/unx/generic/gdi/salgdi.cxx
@@ -57,6 +57,7 @@
 #include "gdiimpl.hxx"
 #include "opengl/x11/gdiimpl.hxx"
 #include "x11cairotextrender.hxx"
+#include "openglx11cairotextrender.hxx"
 
 #include "generic/printergfx.hxx"
 #include "xrender_peer.hxx"
@@ -66,7 +67,6 @@
 #include <vcl/opengl/OpenGLHelper.hxx>
 
 X11SalGraphics::X11SalGraphics():
-    mpTextRenderImpl(new X11CairoTextRender(false, *this)),
     m_pFrame(NULL),
     m_pVDev(NULL),
     m_pColormap(NULL),
@@ -87,9 +87,15 @@ X11SalGraphics::X11SalGraphics():
     static bool bOpenGLPossible = OpenGLHelper::supportsVCLOpenGL();
     bool bUseOpenGL = bOpenGLPossible ? officecfg::Office::Common::VCL::UseOpenGL::get() : false;
     if (bUseOpenGL)
+    {
         mpImpl.reset(new X11OpenGLSalGraphicsImpl(*this));
+        mpTextRenderImpl.reset((new OpenGLX11CairoTextRender(false, *this)));
+    }
     else
+    {
+        mpTextRenderImpl.reset((new X11CairoTextRender(false, *this)));
         mpImpl.reset(new X11SalGraphicsImpl(*this));
+    }
 
 }
 
diff --git a/vcl/unx/generic/gdi/x11cairotextrender.cxx b/vcl/unx/generic/gdi/x11cairotextrender.cxx
index 3a21c39..2533107 100644
--- a/vcl/unx/generic/gdi/x11cairotextrender.cxx
+++ b/vcl/unx/generic/gdi/x11cairotextrender.cxx
@@ -20,6 +20,7 @@
 #include "x11cairotextrender.hxx"
 #include "unx/saldata.hxx"
 #include "unx/saldisp.hxx"
+#include "unx/salvd.h"
 
 #include "gcach_xpeer.hxx"
 
@@ -93,4 +94,36 @@ void X11CairoTextRender::clipRegion(cairo_t* cr)
     }
 }
 
+size_t X11CairoTextRender::GetWidth() const
+{
+    if( mrParent.m_pFrame )
+        return mrParent.m_pFrame->maGeometry.nWidth;
+    else if( mrParent.m_pVDev )
+    {
+        long nWidth = 0;
+        long nHeight = 0;
+        mrParent.m_pVDev->GetSize( nWidth, nHeight );
+        return nWidth;
+    }
+    return 1;
+}
+
+size_t X11CairoTextRender::GetHeight() const
+{
+    if( mrParent.m_pFrame )
+        return mrParent.m_pFrame->maGeometry.nHeight;
+    else if( mrParent.m_pVDev )
+    {
+        long nWidth = 0;
+        long nHeight = 0;
+        mrParent.m_pVDev->GetSize( nWidth, nHeight );
+        return nHeight;
+    }
+    return 1;
+}
+
+void X11CairoTextRender::drawSurface(cairo_t* /*cr*/)
+{
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/generic/gdi/x11cairotextrender.hxx b/vcl/unx/generic/gdi/x11cairotextrender.hxx
index 99688d1..fb0c130 100644
--- a/vcl/unx/generic/gdi/x11cairotextrender.hxx
+++ b/vcl/unx/generic/gdi/x11cairotextrender.hxx
@@ -17,6 +17,9 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
+#ifndef INCLUDED_VCL_UNX_GENERIC_GDI_X11CAIROTEXTRENDER_HXX
+#define INCLUDED_VCL_UNX_GENERIC_GDI_X11CAIROTEXTRENDER_HXX value
+
 #include "cairotextrender.hxx"
 
 #include "unx/saldata.hxx"
@@ -26,14 +29,22 @@
 
 class X11CairoTextRender : public CairoTextRender
 {
-private:
+protected:
     X11SalGraphics& mrParent;
+
+protected:
+    size_t GetWidth() const;
+    size_t GetHeight() const;
+
 public:
     X11CairoTextRender(bool bPrinter, X11SalGraphics& rParent);
 
     virtual GlyphCache& getPlatformGlyphCache() SAL_OVERRIDE;
     virtual cairo_surface_t* getCairoSurface() SAL_OVERRIDE;
     virtual void clipRegion(cairo_t* cr) SAL_OVERRIDE;
+    virtual void drawSurface(cairo_t* cr) SAL_OVERRIDE;
 };
 
+#endif
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list