Qt 4.8
qxcbintegration.cpp
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the plugins of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and Digia. For licensing terms and
14 ** conditions see http://qt.digia.com/licensing. For further information
15 ** use the contact form at http://qt.digia.com/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 **
25 ** In addition, as a special exception, Digia gives you certain additional
26 ** rights. These rights are described in the Digia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 **
29 ** GNU General Public License Usage
30 ** Alternatively, this file may be used under the terms of the GNU
31 ** General Public License version 3.0 as published by the Free Software
32 ** Foundation and appearing in the file LICENSE.GPL included in the
33 ** packaging of this file. Please review the following information to
34 ** ensure the GNU General Public License version 3.0 requirements will be
35 ** met: http://www.gnu.org/copyleft/gpl.html.
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41 
42 #include "qxcbintegration.h"
43 #include "qxcbconnection.h"
44 #include "qxcbscreen.h"
45 #include "qxcbwindow.h"
46 #include "qxcbwindowsurface.h"
47 #include "qxcbnativeinterface.h"
48 
49 #include <xcb/xcb.h>
50 
51 #include <private/qpixmap_raster_p.h>
52 
54 
55 #include <stdio.h>
56 
57 #ifdef XCB_USE_EGL
58 #include <EGL/egl.h>
59 #endif
60 
62  : m_connection(new QXcbConnection)
63 {
64  foreach (QXcbScreen *screen, m_connection->screens())
65  m_screens << screen;
66 
69 }
70 
72 {
73  delete m_connection;
74 }
75 
77 {
78  switch (cap) {
79  case ThreadedPixmaps: return true;
80  case OpenGL: return hasOpenGL();
81  default: return QPlatformIntegration::hasCapability(cap);
82  }
83 }
84 
86 {
87  return new QRasterPixmapData(type);
88 }
89 
91 {
92  Q_UNUSED(winId);
93  return new QXcbWindow(widget);
94 }
95 
97 {
98  Q_UNUSED(winId);
99  return new QXcbWindowSurface(widget);
100 }
101 
103 {
104  return m_screens;
105 }
106 
108 {
109  Q_UNUSED(window);
110  Q_UNUSED(screen);
111 }
112 
114 {
115  return false;
116 }
117 
119 {
120  return m_fontDatabase;
121 }
122 
123 QPixmap QXcbIntegration::grabWindow(WId window, int x, int y, int width, int height) const
124 {
125  Q_UNUSED(window);
126  Q_UNUSED(x);
127  Q_UNUSED(y);
128  Q_UNUSED(width);
129  Q_UNUSED(height);
130  return QPixmap();
131 }
132 
133 
135 {
136 #if defined(XCB_USE_GLX)
137  return true;
138 #elif defined(XCB_USE_EGL)
139  return m_connection->hasEgl();
140 #elif defined(XCB_USE_DRI2)
141  if (m_connection->hasSupportForDri2()) {
142  return true;
143  }
144 #endif
145  return false;
146 }
147 
149 {
150  return m_nativeInterface;
151 }
QPixmapData * createPixmapData(QPixmapData::PixelType type) const
Factory function for QPixmapData.
unsigned long WId
Definition: qwindowdefs.h:119
int type
Definition: qmetatype.cpp:239
QPointer< QWidget > widget
QList< QPlatformScreen * > m_screens
QBasicUnixFontDatabase QGenericUnixFontDatabase
QPlatformWindow * createPlatformWindow(QWidget *widget, WId winId) const
Factory function for QPlatformWindow.
virtual bool hasCapability(Capability cap) const
The QWidget class is the base class of all user interface objects.
Definition: qwidget.h:150
bool hasOpenGL() const
The QPlatformWindow class provides an abstraction for top-level windows.
QPlatformFontDatabase * m_fontDatabase
QWindowSurface * createWindowSurface(QWidget *widget, WId winId) const
Factory function for QWindowSurface.
void moveToScreen(QWidget *window, int screen)
This function is called when a QWidget is displayed on screen, or the QWidget is to be displayed on a...
NSWindow * window
QList< QXcbScreen * > screens() const
The QWindowSurface class provides the drawing area for top-level windows.
bool hasCapability(Capability cap) const
QPlatformNativeInterface * m_nativeInterface
QPixmap grabWindow(WId window, int x, int y, int width, int height) const
This function is called when Qt needs to be able to grab the content of a window. ...
bool isVirtualDesktop()
Returns if the current windowing system configuration defines all the screens to be one desktop(virtu...
The QPlatformFontDatabase class makes it possible to customize how fonts are discovered and how they ...
The QPixmap class is an off-screen image representation that can be used as a paint device...
Definition: qpixmap.h:71
QPlatformNativeInterface * nativeInterface() const
QXcbConnection * m_connection
#define Q_UNUSED(x)
Indicates to the compiler that the parameter with the specified name is not used in the body of a fun...
Definition: qglobal.h:1729
QList< QPlatformScreen * > screens() const
Accessor function to a list of all the screens on the current system.
QPlatformFontDatabase * fontDatabase() const
Accessor for the platform integrations fontdatabase.
The QList class is a template class that provides lists.
Definition: qdatastream.h:62