summaryrefslogtreecommitdiffstats
path: root/svx
diff options
context:
space:
mode:
authorZolnai Tamás <tamas.zolnai@collabora.com>2014-03-21 14:00:56 +0100
committerZolnai Tamás <tamas.zolnai@collabora.com>2014-03-21 14:00:56 +0100
commitd834be0dac2b455076e0c0824f8e6a6e709625ac (patch)
tree2778faecf98a70213a41818af66d397324bc539f /svx
parentConsistent naming: ViewContactOfOpenGL{->Obj} (diff)
downloadcore-d834be0dac2b455076e0c0824f8e6a6e709625ac.tar.gz
core-d834be0dac2b455076e0c0824f8e6a6e709625ac.zip
Init an opengl context bounded to an existent window.
Via ViewObjectContact can we query a window. It seems this window is the same which is used by chart edit mode. Change-Id: Ib6df4d58730774f3d86b453b8174a78bb2c8a45b
Diffstat (limited to 'svx')
-rw-r--r--svx/Library_svxcore.mk3
-rw-r--r--svx/source/sdr/contact/viewcontactofopenglobj.cxx6
-rw-r--r--svx/source/sdr/contact/viewobjectcontactofopenglobj.cxx47
3 files changed, 56 insertions, 0 deletions
diff --git a/svx/Library_svxcore.mk b/svx/Library_svxcore.mk
index 39f15b2a6146..d025cdfb940c 100644
--- a/svx/Library_svxcore.mk
+++ b/svx/Library_svxcore.mk
@@ -75,6 +75,7 @@ $(eval $(call gb_Library_use_libraries,svxcore,\
utl \
vcl \
xo \
+ vclopengl \
$(gb_UWINAPI) \
))
@@ -82,6 +83,7 @@ $(eval $(call gb_Library_use_externals,svxcore,\
boost_headers \
icuuc \
icu_headers \
+ glew \
))
$(eval $(call gb_Library_add_exception_objects,svxcore,\
@@ -194,6 +196,7 @@ $(eval $(call gb_Library_add_exception_objects,svxcore,\
svx/source/sdr/contact/viewcontactofsdrmeasureobj \
svx/source/sdr/contact/objectcontactofobjlistpainter \
svx/source/sdr/contact/viewobjectcontactofe3d \
+ svx/source/sdr/contact/viewobjectcontactofopenglobj \
svx/source/sdr/event/eventhandler \
svx/source/sdr/overlay/overlayline \
svx/source/sdr/overlay/overlaycrosshair \
diff --git a/svx/source/sdr/contact/viewcontactofopenglobj.cxx b/svx/source/sdr/contact/viewcontactofopenglobj.cxx
index 25d5ef2b72e4..ef2c32ae6534 100644
--- a/svx/source/sdr/contact/viewcontactofopenglobj.cxx
+++ b/svx/source/sdr/contact/viewcontactofopenglobj.cxx
@@ -9,6 +9,7 @@
#include <com/sun/star/drawing/XShape.hpp>
#include <svx/sdr/contact/viewcontactofopenglobj.hxx>
+#include <svx/sdr/contact/viewobjectcontactofopenglobj.hxx>
#include <drawinglayer/primitive2d/openglprimitive2d.hxx>
#include <svx/svdoopengl.hxx>
#include <tools/gen.hxx>
@@ -24,6 +25,11 @@ ViewContactOfOpenGLObj::~ViewContactOfOpenGLObj()
{
}
+ViewObjectContact& ViewContactOfOpenGLObj::CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact)
+{
+ return *( new ViewObjectContactOfOpenGLObj( rObjectContact, *this ) );
+}
+
drawinglayer::primitive2d::Primitive2DSequence ViewContactOfOpenGLObj::createViewIndependentPrimitive2DSequence() const
{
com::sun::star::uno::Reference< com::sun::star::drawing::XShape > xShape(GetSdrObject().getUnoShape(), com::sun::star::uno::UNO_QUERY);
diff --git a/svx/source/sdr/contact/viewobjectcontactofopenglobj.cxx b/svx/source/sdr/contact/viewobjectcontactofopenglobj.cxx
new file mode 100644
index 000000000000..1689468993b1
--- /dev/null
+++ b/svx/source/sdr/contact/viewobjectcontactofopenglobj.cxx
@@ -0,0 +1,47 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <svx/sdr/contact/viewobjectcontactofopenglobj.hxx>
+#include <vcl/outdev.hxx>
+#include <vcl/window.hxx>
+
+using namespace sdr::contact;
+
+
+ViewObjectContactOfOpenGLObj::ViewObjectContactOfOpenGLObj(
+ ObjectContact& rObjectContact, ViewContact& rViewContact )
+ : ViewObjectContactOfSdrObj( rObjectContact, rViewContact )
+{
+ m_aOpenGLContext.init(getWindow());
+ // Set a dummy size to make the window visible
+ m_aOpenGLContext.setWinSize(Size(200,200));
+}
+
+ViewObjectContactOfOpenGLObj::~ViewObjectContactOfOpenGLObj()
+{
+}
+
+Window* ViewObjectContactOfOpenGLObj::getWindow() const
+{
+ Window* pRetval = 0;
+
+ boost::optional<const OutputDevice&> oPageOutputDev = getPageViewOutputDevice();
+ if( oPageOutputDev )
+ {
+ if(OUTDEV_WINDOW == oPageOutputDev->GetOutDevType())
+ {
+ pRetval = static_cast< Window* >(&const_cast<OutputDevice&>(oPageOutputDev.get()));
+ }
+ }
+
+ return pRetval;
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */