diff options
author | Zolnai Tamás <tamas.zolnai@collabora.com> | 2014-03-21 14:00:56 +0100 |
---|---|---|
committer | Zolnai Tamás <tamas.zolnai@collabora.com> | 2014-03-21 14:00:56 +0100 |
commit | d834be0dac2b455076e0c0824f8e6a6e709625ac (patch) | |
tree | 2778faecf98a70213a41818af66d397324bc539f /svx | |
parent | Consistent naming: ViewContactOfOpenGL{->Obj} (diff) | |
download | core-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.mk | 3 | ||||
-rw-r--r-- | svx/source/sdr/contact/viewcontactofopenglobj.cxx | 6 | ||||
-rw-r--r-- | svx/source/sdr/contact/viewobjectcontactofopenglobj.cxx | 47 |
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: */ |