summaryrefslogtreecommitdiff
path: root/svx/source/svdraw/svdoopengl.cxx
blob: 1b3398359c83dcb7dc2d0e1fd12e056733d5d0b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/* -*- 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 <config_features.h>

#include <svdoopengl.hxx>
#include <sdr/contact/viewcontactofopenglobj.hxx>

#include <vcl/opengl/IOpenGLRenderer.hxx>

SdrOpenGLObj::SdrOpenGLObj()
  : SdrObject(),
    IOpenGLInfoProvider(),
    mpContext(NULL)
{
#if HAVE_FEATURE_DESKTOP
    mpContext = new OpenGLContext;
#endif
}

SdrOpenGLObj::~SdrOpenGLObj()
{
    delete mpContext;
}

sdr::contact::ViewContact* SdrOpenGLObj::CreateObjectSpecificViewContact()
{
    return new sdr::contact::ViewContactOfOpenGLObj(*this);
}


void SdrOpenGLObj::NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact)
{
    SdrObject::NbcResize(rRef, xFact, yFact);

    // now pass the information to the OpenGL context
    if (mpContext)
        mpContext->setWinSize(aOutRect.GetSize());

    SAL_WARN("svx.opengl", "resized opengl drawinglayer object");
}

void SdrOpenGLObj::setRenderer(IOpenGLRenderer* pRenderer)
{
    mpRenderer.reset(pRenderer);
    mpRenderer->setInfoProvider(this);
}

IOpenGLRenderer* SdrOpenGLObj::getRenderer()
{
    return mpRenderer.get();
}

bool SdrOpenGLObj::isOpenGLInitialized()
{
    return mpContext && mpContext->isInitialized();
}

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */