summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/3rdparty/angle/AUTHORS1
-rw-r--r--src/3rdparty/angle/src/libEGL/Surface.cpp40
-rw-r--r--src/3rdparty/atspi2/atspi/atspi-constants.h1241
-rw-r--r--src/3rdparty/atspi2/atspi2.pri4
-rw-r--r--src/3rdparty/xcb/README13
-rw-r--r--src/3rdparty/xcb/include/xcb/randr.h5020
-rw-r--r--src/3rdparty/xcb/include/xcb/render.h4412
-rw-r--r--src/3rdparty/xcb/include/xcb/shape.h1096
-rw-r--r--src/3rdparty/xcb/include/xcb/shm.h738
-rw-r--r--src/3rdparty/xcb/include/xcb/sync.h1707
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_atom.h18
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_aux.h214
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_bitops.h212
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_event.h90
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_icccm.h1049
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_image.h630
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_keysyms.h71
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_pixel.h171
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_renderutil.h142
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_util.h8
-rw-r--r--src/3rdparty/xcb/include/xcb/xfixes.h2790
-rw-r--r--src/3rdparty/xcb/libxcb/randr.c4827
-rw-r--r--src/3rdparty/xcb/libxcb/render.c4353
-rw-r--r--src/3rdparty/xcb/libxcb/shape.c1017
-rw-r--r--src/3rdparty/xcb/libxcb/shm.c705
-rw-r--r--src/3rdparty/xcb/libxcb/sync.c1511
-rw-r--r--src/3rdparty/xcb/libxcb/xfixes.c2953
-rw-r--r--src/3rdparty/xcb/sysinclude/render.h1
-rw-r--r--src/3rdparty/xcb/sysinclude/xcb.h1
-rw-r--r--src/3rdparty/xcb/sysinclude/xcbext.h1
-rw-r--r--src/3rdparty/xcb/sysinclude/xproto.h1
-rw-r--r--src/3rdparty/xcb/xcb-util-image/xcb_image.c1011
-rw-r--r--src/3rdparty/xcb/xcb-util-keysyms/keysyms.c498
-rw-r--r--src/3rdparty/xcb/xcb-util-renderutil/util.c251
-rw-r--r--src/3rdparty/xcb/xcb-util-wm/icccm.c845
-rw-r--r--src/3rdparty/xcb/xcb-util/atoms.c76
-rw-r--r--src/3rdparty/xcb/xcb-util/event.c257
-rw-r--r--src/3rdparty/xcb/xcb-util/xcb_aux.c374
-rw-r--r--src/angle/patches/0001-Dynamically-resolve-functions-of-dwmapi.dll.patch75
-rw-r--r--src/angle/src/common/common.pri6
-rw-r--r--src/angle/src/libEGL/libEGL.pro5
-rw-r--r--src/angle/src/libGLESv2/libGLESv2.pro1
-rw-r--r--src/corelib/Qt5CTestMacros.cmake7
-rw-r--r--src/corelib/animation/qvariantanimation.cpp3
-rw-r--r--src/corelib/codecs/qisciicodec.cpp4
-rw-r--r--src/corelib/codecs/qisciicodec_p.h2
-rw-r--r--src/corelib/codecs/qtsciicodec.cpp4
-rw-r--r--src/corelib/codecs/qtsciicodec_p.h4
-rw-r--r--src/corelib/corelib.pro2
-rw-r--r--src/corelib/global/qcompilerdetection.h7
-rw-r--r--src/corelib/global/qlibraryinfo.cpp39
-rw-r--r--src/corelib/global/qlibraryinfo.h3
-rw-r--r--src/corelib/io/qfilesystemengine.cpp2
-rw-r--r--src/corelib/io/qstandardpaths.cpp5
-rw-r--r--src/corelib/io/qstandardpaths_mac.cpp9
-rw-r--r--src/corelib/io/qstandardpaths_unix.cpp11
-rw-r--r--src/corelib/io/qstandardpaths_win.cpp7
-rw-r--r--src/corelib/io/qwinoverlappedionotifier.cpp21
-rw-r--r--src/corelib/io/qwinoverlappedionotifier_p.h5
-rw-r--r--src/corelib/itemmodels/qabstractitemmodel.h1
-rw-r--r--src/corelib/itemmodels/qabstractproxymodel.cpp9
-rw-r--r--src/corelib/itemmodels/qabstractproxymodel.h1
-rw-r--r--src/corelib/itemmodels/qidentityproxymodel.cpp9
-rw-r--r--src/corelib/itemmodels/qidentityproxymodel.h1
-rw-r--r--src/corelib/itemmodels/qitemselectionmodel.cpp10
-rw-r--r--src/corelib/itemmodels/qsortfilterproxymodel.cpp30
-rw-r--r--src/corelib/itemmodels/qsortfilterproxymodel.h1
-rw-r--r--src/corelib/itemmodels/qstringlistmodel.cpp17
-rw-r--r--src/corelib/itemmodels/qstringlistmodel.h1
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp56
-rw-r--r--src/corelib/kernel/qcoreapplication.h9
-rw-r--r--src/corelib/kernel/qcoreevent.cpp2
-rw-r--r--src/corelib/kernel/qeventdispatcher_unix.cpp45
-rw-r--r--src/corelib/kernel/qobject.h20
-rw-r--r--src/corelib/kernel/qobjectdefs_impl.h121
-rw-r--r--src/corelib/kernel/qtranslator.cpp101
-rw-r--r--src/corelib/mimetypes/qmimedatabase.cpp7
-rw-r--r--src/corelib/mimetypes/qmimeglobpattern.cpp12
-rw-r--r--src/corelib/thread/qbasicatomic.h13
-rw-r--r--src/corelib/thread/qfutureinterface.cpp5
-rw-r--r--src/corelib/thread/qfutureinterface.h1
-rw-r--r--src/corelib/thread/qmutex_linux.cpp4
-rw-r--r--src/corelib/thread/qreadwritelock.cpp31
-rw-r--r--src/corelib/tools/qbytedata_p.h70
-rw-r--r--src/corelib/tools/qcollator.cpp2
-rw-r--r--src/corelib/tools/qhash.h12
-rw-r--r--src/corelib/tools/qlist.cpp2
-rw-r--r--src/corelib/tools/qlocale.h30
-rw-r--r--src/corelib/tools/qlocale_data_p.h677
-rw-r--r--src/corelib/tools/qlocale_tools.cpp9
-rw-r--r--src/corelib/tools/qregexp.cpp2
-rw-r--r--src/corelib/tools/qset.qdoc4
-rw-r--r--src/corelib/tools/qtextboundaryfinder.cpp11
-rw-r--r--src/corelib/tools/qtextboundaryfinder.h5
-rw-r--r--src/gui/accessible/qaccessible.cpp289
-rw-r--r--src/gui/accessible/qaccessible.h2
-rw-r--r--src/gui/accessible/qaccessibleobject.cpp2
-rw-r--r--src/gui/image/qgifhandler.cpp15
-rw-r--r--src/gui/image/qpnghandler.cpp11
-rw-r--r--src/gui/itemmodels/qstandarditemmodel.cpp9
-rw-r--r--src/gui/itemmodels/qstandarditemmodel.h1
-rw-r--r--src/gui/kernel/qevent.cpp34
-rw-r--r--src/gui/kernel/qevent.h22
-rw-r--r--src/gui/kernel/qguiapplication.cpp41
-rw-r--r--src/gui/kernel/qguiapplication_p.h12
-rw-r--r--src/gui/kernel/qinputmethod_p.h11
-rw-r--r--src/gui/kernel/qopenglcontext.cpp35
-rw-r--r--src/gui/kernel/qopenglcontext_p.h13
-rw-r--r--src/gui/kernel/qplatforminputcontext_p.h11
-rw-r--r--src/gui/kernel/qplatformnativeinterface.cpp8
-rw-r--r--src/gui/kernel/qplatformnativeinterface.h2
-rw-r--r--src/gui/kernel/qplatformwindow.cpp18
-rw-r--r--src/gui/kernel/qscreen_p.h11
-rw-r--r--src/gui/kernel/qtouchdevice_p.h11
-rw-r--r--src/gui/kernel/qwindow.cpp219
-rw-r--r--src/gui/kernel/qwindow.h91
-rw-r--r--src/gui/kernel/qwindow_p.h16
-rw-r--r--src/gui/kernel/qwindowsysteminterface.cpp8
-rw-r--r--src/gui/kernel/qwindowsysteminterface.h4
-rw-r--r--src/gui/kernel/qwindowsysteminterface_p.h17
-rw-r--r--src/gui/opengl/qopenglbuffer.cpp4
-rw-r--r--src/gui/opengl/qopenglframebufferobject.cpp67
-rw-r--r--src/gui/opengl/qopenglfunctions.cpp4
-rw-r--r--src/gui/opengl/qopengltextureglyphcache.cpp18
-rw-r--r--src/gui/painting/qpaintengine_blitter.cpp6
-rw-r--r--src/gui/text/qfont_p.h5
-rw-r--r--src/network/kernel/qdnslookup.cpp6
-rw-r--r--src/network/ssl/qsslsocket_openssl_symbols.cpp6
-rw-r--r--src/opengl/qgl.cpp1
-rw-r--r--src/opengl/qglbuffer.cpp4
-rw-r--r--src/platformsupport/dnd/qshapedpixmapdndwindow.cpp2
-rw-r--r--src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm56
-rw-r--r--src/platformsupport/input/evdevtouch/qevdevtouch.cpp5
-rw-r--r--src/platformsupport/linuxaccessibility/linuxaccessibility.pri2
-rw-r--r--src/platformsupport/themes/genericunix/qgenericunixthemes.cpp6
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.cpp17
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.h6
-rw-r--r--src/plugins/platforms/cocoa/cocoa.pro2
-rw-r--r--src/plugins/platforms/cocoa/qcocoaaccessibility.h16
-rw-r--r--src/plugins/platforms/cocoa/qcocoaaccessibility.mm93
-rw-r--r--src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm21
-rw-r--r--src/plugins/platforms/cocoa/qcocoaapplication.h3
-rw-r--r--src/plugins/platforms/cocoa/qcocoaapplication.mm28
-rw-r--r--src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm6
-rw-r--r--src/plugins/platforms/cocoa/qcocoabackingstore.mm15
-rw-r--r--src/plugins/platforms/cocoa/qcocoahelpers.h31
-rw-r--r--src/plugins/platforms/cocoa/qcocoahelpers.mm55
-rw-r--r--src/plugins/platforms/cocoa/qcocoaintegration.mm15
-rw-r--r--src/plugins/platforms/cocoa/qcocoaintrospection.h84
-rw-r--r--src/plugins/platforms/cocoa/qcocoaintrospection.mm125
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenu.mm20
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenubar.mm4
-rwxr-xr-xsrc/plugins/platforms/cocoa/qcocoasystemtrayicon.mm3
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.h3
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm50
-rw-r--r--src/plugins/platforms/cocoa/qmacclipboard.mm5
-rw-r--r--src/plugins/platforms/cocoa/qnsview.mm24
-rw-r--r--src/plugins/platforms/cocoa/qpaintengine_mac.mm47
-rw-r--r--src/plugins/platforms/qnx/qqnxintegration.cpp1
-rw-r--r--src/plugins/platforms/windows/qwindowsbackingstore.cpp2
-rw-r--r--src/plugins/platforms/windows/qwindowscontext.cpp2
-rw-r--r--src/plugins/platforms/windows/qwindowsfontdatabase.cpp2
-rw-r--r--src/plugins/platforms/windows/qwindowsfontengine.cpp7
-rw-r--r--src/plugins/platforms/windows/qwindowsintegration.cpp6
-rw-r--r--src/plugins/platforms/windows/qwindowskeymapper.cpp14
-rw-r--r--src/plugins/platforms/windows/qwindowsmousehandler.cpp131
-rw-r--r--src/plugins/platforms/windows/qwindowsmousehandler.h2
-rw-r--r--src/plugins/platforms/windows/qwindowsscreen.cpp14
-rw-r--r--src/plugins/platforms/windows/qwindowswindow.cpp10
-rw-r--r--src/plugins/platforms/xcb/README8
-rw-r--r--src/plugins/platforms/xcb/qglxintegration.cpp1
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection.cpp95
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection.h14
-rw-r--r--src/plugins/platforms/xcb/qxcbdrag.cpp14
-rw-r--r--src/plugins/platforms/xcb/qxcbintegration.cpp2
-rw-r--r--src/plugins/platforms/xcb/qxcbkeyboard.cpp9
-rw-r--r--src/plugins/platforms/xcb/qxcbnativeinterface.cpp19
-rw-r--r--src/plugins/platforms/xcb/qxcbnativeinterface.h1
-rw-r--r--src/plugins/platforms/xcb/qxcbwindow.cpp93
-rw-r--r--src/plugins/platforms/xcb/xcb-plugin.pro117
-rw-r--r--src/plugins/platforms/xcb/xcb-static/xcb-static.pro70
-rw-r--r--src/plugins/platforms/xcb/xcb.pro115
-rw-r--r--src/plugins/printsupport/cocoa/cocoa.pro2
-rw-r--r--src/plugins/printsupport/cups/cups.pro2
-rw-r--r--src/plugins/printsupport/windows/windows.pro2
-rw-r--r--src/printsupport/dialogs/qprintdialog_mac.mm5
-rw-r--r--src/sql/drivers/db2/qsql_db2.cpp5
-rw-r--r--src/sql/drivers/mysql/qsql_mysql.cpp12
-rw-r--r--src/sql/drivers/oci/qsql_oci.cpp11
-rw-r--r--src/sql/drivers/odbc/qsql_odbc.cpp5
-rw-r--r--src/sql/drivers/psql/qsql_psql.cpp5
-rw-r--r--src/sql/drivers/sqlite/qsql_sqlite.cpp5
-rw-r--r--src/sql/drivers/sqlite2/qsql_sqlite2.cpp5
-rw-r--r--src/sql/drivers/tds/qsql_tds.cpp6
-rw-r--r--src/sql/kernel/qsqlcachedresult.cpp5
-rw-r--r--src/sql/kernel/qsqlresult.h2
-rw-r--r--src/testlib/qtestcase.cpp21
-rw-r--r--src/testlib/qtestsystem.h2
-rw-r--r--src/testlib/testlib.pro3
-rw-r--r--src/tools/bootstrap/bootstrap.pri65
-rw-r--r--src/tools/bootstrap/bootstrap.pro49
-rw-r--r--src/tools/moc/moc.pro16
-rw-r--r--src/tools/moc/preprocessor.cpp14
-rw-r--r--src/tools/qdbuscpp2xml/qdbuscpp2xml.pro12
-rw-r--r--src/tools/qdbusxml2cpp/qdbusxml2cpp.pro10
-rw-r--r--src/tools/qdoc/qdoc.pro24
-rw-r--r--src/tools/rcc/rcc.pro10
-rw-r--r--src/tools/uic/uic.pro11
-rw-r--r--src/widgets/dialogs/qfontdialog.cpp17
-rw-r--r--src/widgets/dialogs/qfontdialog_p.h16
-rw-r--r--src/widgets/dialogs/qwizard.cpp7
-rw-r--r--src/widgets/dialogs/qwizard.h3
-rw-r--r--src/widgets/doc/src/widgets-and-layouts/styles.qdoc856
-rw-r--r--src/widgets/graphicsview/qgraphicsitem.cpp27
-rw-r--r--src/widgets/graphicsview/qgraphicsitem.h49
-rw-r--r--src/widgets/graphicsview/qgraphicsproxywidget.cpp8
-rw-r--r--src/widgets/itemviews/qheaderview.cpp14
-rw-r--r--src/widgets/itemviews/qheaderview.h3
-rw-r--r--src/widgets/itemviews/qheaderview_p.h6
-rw-r--r--src/widgets/itemviews/qtableview.cpp3
-rw-r--r--src/widgets/itemviews/qtreeview.cpp2
-rw-r--r--src/widgets/kernel/qapplication.cpp48
-rw-r--r--src/widgets/kernel/qapplication_p.h2
-rw-r--r--src/widgets/kernel/qapplication_qpa.cpp6
-rw-r--r--src/widgets/kernel/qgesture.cpp34
-rw-r--r--src/widgets/kernel/qgesture.h16
-rw-r--r--src/widgets/kernel/qgesturemanager.cpp8
-rw-r--r--src/widgets/kernel/qlayoutitem.cpp10
-rw-r--r--src/widgets/kernel/qlayoutitem.h4
-rw-r--r--src/widgets/kernel/qwidget.cpp4
-rw-r--r--src/widgets/kernel/qwidget_qpa.cpp18
-rw-r--r--src/widgets/kernel/qwidgetbackingstore_p.h2
-rw-r--r--src/widgets/kernel/qwidgetwindow.cpp26
-rw-r--r--src/widgets/styles/qcommonstyle.cpp3
-rw-r--r--src/widgets/styles/qfusionstyle.cpp2
-rw-r--r--src/widgets/styles/qfusionstyle_p.h28
-rw-r--r--src/widgets/styles/qgtk2painter.cpp705
-rw-r--r--src/widgets/styles/qgtk2painter_p.h108
-rw-r--r--src/widgets/styles/qgtkglobal_p.h90
-rw-r--r--src/widgets/styles/qgtkpainter.cpp665
-rw-r--r--src/widgets/styles/qgtkpainter_p.h83
-rw-r--r--src/widgets/styles/qgtkstyle.cpp504
-rw-r--r--src/widgets/styles/qgtkstyle_p.cpp102
-rw-r--r--src/widgets/styles/qgtkstyle_p.h88
-rw-r--r--src/widgets/styles/qmacstyle_mac.h6
-rw-r--r--src/widgets/styles/qmacstyle_mac.mm335
-rw-r--r--src/widgets/styles/qmacstyle_mac_p.h54
-rw-r--r--src/widgets/styles/qstyle.cpp3
-rw-r--r--src/widgets/styles/qstyle.h1
-rw-r--r--src/widgets/styles/qstyleanimation.cpp105
-rw-r--r--src/widgets/styles/qstyleanimation_p.h28
-rw-r--r--src/widgets/styles/qstylehelper.cpp3
-rw-r--r--src/widgets/styles/qstyleoption.cpp14
-rw-r--r--src/widgets/styles/qstyleoption.h5
-rw-r--r--src/widgets/styles/qstyleplugin.cpp2
-rw-r--r--src/widgets/styles/qwindowscestyle.cpp4
-rw-r--r--src/widgets/styles/qwindowscestyle.h1
-rw-r--r--src/widgets/styles/qwindowsmobilestyle.cpp4
-rw-r--r--src/widgets/styles/qwindowsmobilestyle.h1
-rw-r--r--src/widgets/styles/qwindowsvistastyle.cpp120
-rw-r--r--src/widgets/styles/qwindowsvistastyle.h1
-rw-r--r--src/widgets/styles/qwindowsvistastyle_p.h30
-rw-r--r--src/widgets/styles/styles.pri3
-rw-r--r--src/widgets/util/qsystemtrayicon_x11.cpp19
-rw-r--r--src/widgets/widgets/qabstractscrollarea.cpp41
-rw-r--r--src/widgets/widgets/qabstractscrollarea.h1
-rw-r--r--src/widgets/widgets/qabstractscrollarea_p.h3
-rw-r--r--src/widgets/widgets/qabstractspinbox.cpp13
-rw-r--r--src/widgets/widgets/qcheckbox.cpp7
-rw-r--r--src/widgets/widgets/qcheckbox.h2
-rw-r--r--src/widgets/widgets/qcommandlinkbutton.cpp7
-rw-r--r--src/widgets/widgets/qcommandlinkbutton.h4
-rw-r--r--src/widgets/widgets/qdatetimeedit.cpp21
-rw-r--r--src/widgets/widgets/qdatetimeedit.h11
-rw-r--r--src/widgets/widgets/qlineedit.cpp3
-rw-r--r--src/widgets/widgets/qmainwindow.cpp16
-rw-r--r--src/widgets/widgets/qmenu.cpp10
-rw-r--r--src/widgets/widgets/qprogressbar.cpp7
-rw-r--r--src/widgets/widgets/qprogressbar.h1
-rw-r--r--src/widgets/widgets/qradiobutton.cpp7
-rw-r--r--src/widgets/widgets/qradiobutton.h1
-rw-r--r--src/widgets/widgets/qscrollarea.cpp2
-rw-r--r--src/widgets/widgets/qscrollbar.cpp56
-rw-r--r--src/widgets/widgets/qscrollbar.h1
-rw-r--r--src/widgets/widgets/qscrollbar_p.h89
-rw-r--r--src/widgets/widgets/qspinbox.cpp9
-rw-r--r--src/widgets/widgets/qspinbox.h2
-rw-r--r--src/widgets/widgets/qsplitter.cpp18
-rw-r--r--src/widgets/widgets/qsplitter.h4
-rw-r--r--src/widgets/widgets/qwidgetlinecontrol.cpp12
-rw-r--r--src/widgets/widgets/qwidgetlinecontrol_p.h2
-rw-r--r--src/widgets/widgets/widgets.pri1
-rw-r--r--src/winmain/winmain.pro5
293 files changed, 43980 insertions, 3420 deletions
diff --git a/src/3rdparty/angle/AUTHORS b/src/3rdparty/angle/AUTHORS
index 0294632691..10e60d85b6 100644
--- a/src/3rdparty/angle/AUTHORS
+++ b/src/3rdparty/angle/AUTHORS
@@ -24,6 +24,7 @@ Ginn Chen
James Hauxwell
Sam Hocevar
Pierre Leveille
+Jonathan Liu
Boying Lu
Aitor Moreno
Yuri O'Donnell
diff --git a/src/3rdparty/angle/src/libEGL/Surface.cpp b/src/3rdparty/angle/src/libEGL/Surface.cpp
index 732c404b10..8e920ab81e 100644
--- a/src/3rdparty/angle/src/libEGL/Surface.cpp
+++ b/src/3rdparty/angle/src/libEGL/Surface.cpp
@@ -73,6 +73,9 @@ Surface::~Surface()
bool Surface::initialize()
{
+ typedef HRESULT (STDAPICALLTYPE *PtrDwmIsCompositionEnabled)(BOOL*);
+ typedef HRESULT (STDAPICALLTYPE *PtrDwmSetPresentParameters)(HWND, DWM_PRESENT_PARAMETERS *);
+
ASSERT(!mSwapChain && !mOffscreenTexture && !mDepthStencil);
if (!resetSwapChain())
@@ -82,17 +85,31 @@ bool Surface::initialize()
// to minimize the amount of queuing done by DWM between our calls to
// present and the actual screen.
if (mWindow && (getComparableOSVersion() >= versionWindowsVista)) {
- BOOL isComposited;
- HRESULT result = DwmIsCompositionEnabled(&isComposited);
- if (SUCCEEDED(result) && isComposited) {
- DWM_PRESENT_PARAMETERS presentParams;
- memset(&presentParams, 0, sizeof(presentParams));
- presentParams.cbSize = sizeof(DWM_PRESENT_PARAMETERS);
- presentParams.cBuffer = 2;
-
- result = DwmSetPresentParameters(mWindow, &presentParams);
- if (FAILED(result))
- ERR("Unable to set present parameters: 0x%08X", result);
+ // Resolve dwmapi.dll functions dynamically as the Library is
+ // not present on Windows XP. Alternatively, /DELAYLOAD could be used.
+ static PtrDwmIsCompositionEnabled dwmIsCompositionEnabled = 0;
+ static PtrDwmSetPresentParameters dwmSetPresentParameters = 0;
+ if (!dwmIsCompositionEnabled) {
+ if (const HMODULE dwmLibrary = LoadLibraryW(L"dwmapi.dll")) {
+ dwmIsCompositionEnabled =
+ (PtrDwmIsCompositionEnabled)GetProcAddress(dwmLibrary, "DwmIsCompositionEnabled");
+ dwmSetPresentParameters =
+ (PtrDwmSetPresentParameters)GetProcAddress(dwmLibrary, "DwmSetPresentParameters");
+ }
+ }
+ if (dwmIsCompositionEnabled && dwmSetPresentParameters) {
+ BOOL isComposited;
+ HRESULT result = dwmIsCompositionEnabled(&isComposited);
+ if (SUCCEEDED(result) && isComposited) {
+ DWM_PRESENT_PARAMETERS presentParams;
+ memset(&presentParams, 0, sizeof(presentParams));
+ presentParams.cbSize = sizeof(DWM_PRESENT_PARAMETERS);
+ presentParams.cBuffer = 2;
+
+ result = dwmSetPresentParameters(mWindow, &presentParams);
+ if (FAILED(result))
+ ERR("Unable to set present parameters: 0x%08X", result);
+ }
}
}
@@ -309,6 +326,7 @@ bool Surface::resetSwapChain(int backbufferWidth, int backbufferHeight)
result = mSwapChain->GetBackBuffer(0, D3DBACKBUFFER_TYPE_MONO, &mBackBuffer);
ASSERT(SUCCEEDED(result));
+ InvalidateRect(mWindow, NULL, FALSE);
}
if (mConfig->mDepthStencilFormat != D3DFMT_UNKNOWN)
diff --git a/src/3rdparty/atspi2/atspi/atspi-constants.h b/src/3rdparty/atspi2/atspi/atspi-constants.h
new file mode 100644
index 0000000000..7a55169f1f
--- /dev/null
+++ b/src/3rdparty/atspi2/atspi/atspi-constants.h
@@ -0,0 +1,1241 @@
+/*
+ * AT-SPI - Assistive Technology Service Provider Interface
+ * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
+ *
+ * Copyright 2010, 2011 Novell, Inc.
+ * Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/* TODO: Auto-generate this file again
+
+
+
+ !\mainpage AT-SPI Interfaces and Subinterfaces
+
+ This is the main documentation page for the
+ Assistive Technology Service Provider Interface (AT-SPI).
+
+ \section apps Applications and Interface Components
+ Namespace Accessibility includes service APIs implemented by
+ participating applications and their user interface components:\n\n
+ Accessibility::Accessible\n
+ Accessibility::Application\n
+ Accessibility::Desktop\n
+ Accessibility::Collecgtion\n
+ Accessibility::Component\n
+ Accessibility::Hypertext\n
+ Accessibility::Image\n
+ Accessibility::Selection\n
+ Accessibility::Table\n
+ Accessibility::Text\n
+ Accessibility::EditableText\n
+ Accessibility::Value
+
+ \section types Enumerated Types
+ Accessibility defines a number of key enumerated types, including:\n\n
+ Accessibility::RelationType\n
+ Accessibility::Role\n
+ Accessibility::StateType\n
+ Accessibility::Event\n
+ Accessibility::EventDetails \n
+
+ \section Registry
+ Accessibility also includes Accessibility::Registry,
+ which is the service used by assistive technologies and related
+ AT-SPI clients to register interest in certain classes of events,
+ enumerate the currently available desktop and application list,
+ and to synthesize certain kinds of device events.
+
+ \section listeners Event Listener Interfaces
+ Accessibility::EventListener\n
+ Accessibility::DeviceEventListener
+
+ \section helpers Helper Interfaces
+
+ The following interfaces may be implemented by assistive technologies
+ themselves, in order to export their services in a consistent manner or
+ in order to interoperate with other applications or desktop services.\n
+
+ Accessibility::LoginHelper : Implemented by adaptive technologies which
+ need to participate in user-authentication or login activities, and which
+ therefore may need negotiation with authentication agents or processes.\n
+
+ Accessibility::Selector [NEW]: Implemented by user agents or assistive
+ technologies which export lists of choices from which the end-user is
+ expected to make selections. Useful for various types of remote
+ activation or intercommunication between multiple ATs.
+
+ */
+
+#ifndef _ATSPI_CONSTANTS_H_
+#define _ATSPI_CONSTANTS_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * AtspiLocaleType:
+ * @ATSPI_LOCALE_TYPE_MESSAGES: For localizable natural-language messages.
+ * @ATSPI_LOCALE_TYPE_COLLATE: For regular expression matching and string
+ * collation.
+ * @ATSPI_LOCALE_TYPE_CTYPE: For regular expression matching, character
+ * classification, conversion, case-sensitive comparison, and wide character
+ * functions.
+ * @ATSPI_LOCALE_TYPE_MONETARY: For monetary formatting.
+ * @ATSPI_LOCALE_TYPE_NUMERIC: For number formatting (such as the decimal
+ * point and the thousands separator).
+ * @ATSPI_LOCALE_TYPE_TIME: For time and date formatting.
+ *
+ * Used by interfaces #AtspiText and #AtspiDocument, this
+ * enumeration corresponds to the POSIX 'setlocale' enum values.
+ *
+ **/
+typedef enum {
+ ATSPI_LOCALE_TYPE_MESSAGES,
+ ATSPI_LOCALE_TYPE_COLLATE,
+ ATSPI_LOCALE_TYPE_CTYPE,
+ ATSPI_LOCALE_TYPE_MONETARY,
+ ATSPI_LOCALE_TYPE_NUMERIC,
+ ATSPI_LOCALE_TYPE_TIME,
+} AtspiLocaleType;
+
+/**
+ * ATSPI_LOCALE_TYPE_COUNT:
+ *
+ * One higher than the highest valid value of #AtspiLocaleType.
+ **/
+#define ATSPI_LOCALE_TYPE _COUNT(5+1)
+
+/**
+ * AtspiCoordType:
+ * @ATSPI_COORD_TYPE_SCREEN: Specifies xy coordinates relative to the screen.
+ * @ATSPI_COORD_TYPE_WINDOW: Specifies xy coordinates relative to the widget's
+ * top-level window.
+ *
+ * Enumeration used by #AtspiComponent, #AtspiImage, and #AtspiText interfaces
+ * to specify whether coordinates are relative to the window or the screen.
+ *
+ **/
+typedef enum {
+ ATSPI_COORD_TYPE_SCREEN,
+ ATSPI_COORD_TYPE_WINDOW,
+} AtspiCoordType;
+
+/**
+ * ATSPI_COORD_TYPE_COUNT:
+ *
+ * One higher than the highest valid value of #AtspiCoordType.
+ **/
+#define ATSPI_COORD_TYPE_COUNT (1+1)
+
+/**
+ * AtspiCollectionSortOrder:
+ * @ATSPI_Collection_SORT_ORDER_INVALID:
+ * @ATSPI_Collection_SORT_ORDER_CANONICAL:
+ * @ATSPI_Collection_SORT_ORDER_FLOW:
+ * @ATSPI_Collection_SORT_ORDER_TAB:
+ * @ATSPI_Collection_SORT_ORDER_REVERSE_CANONICAL:
+ * @ATSPI_Collection_SORT_ORDER_REVERSE_FLOW:
+ * @ATSPI_Collection_SORT_ORDER_REVERSE_TAB:
+ * @ATSPI_Collection_SORT_ORDER_LAST_DEFINED:
+ *
+ * Enumeration used by interface #AtspiCollection to specify
+ * the way #AtspiAccesible objects should be sorted.
+ *
+ **/
+typedef enum {
+ ATSPI_Collection_SORT_ORDER_INVALID,
+ ATSPI_Collection_SORT_ORDER_CANONICAL,
+ ATSPI_Collection_SORT_ORDER_FLOW,
+ ATSPI_Collection_SORT_ORDER_TAB,
+ ATSPI_Collection_SORT_ORDER_REVERSE_CANONICAL,
+ ATSPI_Collection_SORT_ORDER_REVERSE_FLOW,
+ ATSPI_Collection_SORT_ORDER_REVERSE_TAB,
+ ATSPI_Collection_SORT_ORDER_LAST_DEFINED,
+} AtspiCollectionSortOrder;
+
+/**
+ * ATSPI_SORTORDER_COUNT:
+ *
+ * One higher than the highest valid value of #AtspiCollectionSortOrder.
+ */
+#define ATSPI_SORTORDER_COUNT (7+1)
+
+/**
+ * AtspiCollectionMatchType:
+ * @ATSPI_Collection_MATCH_INVALID: Indicates an error condition or
+ * uninitialized value.
+ * @ATSPI_Collection_MATCH_ALL: #TRUE if all of the criteria are met.
+ * @ATSPI_Collection_MATCH_ANY: #TRUE if any of the criteria are met.
+ * @ATSPI_Collection_MATCH_NONE: #TRUE if none of the criteria are met.
+ * @ATSPI_Collection_MATCH_EMPTY: Same as @ATSPI_Collection_MATCH_ALL if
+ * the criteria is non-empty; for empty criteria this rule requires returned
+ * value to also have empty set.
+ * @ATSPI_Collection_MATCH_LAST_DEFINED: Used only to determine the end of the
+ * enumeration.
+ *
+ * Enumeration used by #AtspiMatchRule to specify
+ * how to interpret #AtspiAccesible objects.
+ *
+ **/
+typedef enum {
+ ATSPI_Collection_MATCH_INVALID,
+ ATSPI_Collection_MATCH_ALL,
+ ATSPI_Collection_MATCH_ANY,
+ ATSPI_Collection_MATCH_NONE,
+ ATSPI_Collection_MATCH_EMPTY,
+ ATSPI_Collection_MATCH_LAST_DEFINED,
+} AtspiCollectionMatchType;
+
+/**
+ * ATSPI_MATCHTYPE_COUNT:
+ *
+ * One higher than the highest valid value of #AtspiCollectionMatchType.
+ **/
+#define ATSPI_MATCHTYPES_COUNT (5+1)
+
+/**
+ * AtspiCollectionTreeTraversalType:
+ * @ATSPI_Collection_TREE_RESTRICT_CHILDREN:
+ * @ATSPI_Collection_TREE_RESTRICT_SIBLING:
+ * @ATSPI_Collection_TREE_INORDER:
+ * @ATSPI_Collection_TREE_LAST_DEFINED:
+ *
+ * Enumeration used by interface #AtspiCollection to specify
+ * restrictions on #AtspiAccesible objects to be traversed.
+ *
+ **/
+typedef enum {
+ ATSPI_Collection_TREE_RESTRICT_CHILDREN,
+ ATSPI_Collection_TREE_RESTRICT_SIBLING,
+ ATSPI_Collection_TREE_INORDER,
+ ATSPI_Collection_TREE_LAST_DEFINED,
+} AtspiCollectionTreeTraversalType;
+
+/**
+ * ATSPI_TREETRAVERSALTYPE_COUNT:
+ *
+ * One higher than the highest valid value of
+ * #AtspiCollection_TreeTraversalType.
+ */
+#define ATSPI_TREETRAVERSALTYPE _COUNT(3+1)
+
+/**
+ * AtspiComponentLayer:
+ * @ATSPI_LAYER_INVALID: Indicates an error condition or uninitialized value.
+ * @ATSPI_LAYER_BACKGROUND: The bottom-most layer, over which everything else
+ * is painted. The 'desktop background' is generally in this layer.
+ * @ATSPI_LAYER_CANVAS: The 'background' layer for most content renderers and
+ * UI #AtspiComponent containers.
+ * @ATSPI_LAYER_WIDGET: The layer in which the majority of ordinary
+ * 'foreground' widgets reside.
+ * @ATSPI_LAYER_MDI: A special layer between @ATSPI_LAYER_CANVAS and
+ * @ATSPI_LAYER_WIDGET, in which the 'pseudo windows' (e.g. the MDI frames)
+ * reside. See #atspi_component_get_mdi_z_order.
+ * @ATSPI_LAYER_POPUP: A layer for popup window content, above
+ * @ATSPI_LAYER_WIDGET.
+ * @ATSPI_LAYER_OVERLAY: The topmost layer.
+ * @ATSPI_LAYER_WINDOW: The layer in which a toplevel window background usually
+ * resides.
+ * @ATSPI_LAYER_LAST_DEFINED: Used only to determine the end of the
+ * enumeration.
+ *
+ * The #AtspiComponentLayer of an #AtspiComponent instance indicates its
+ * relative stacking order with respect to the onscreen visual representation
+ * of the UI. #AtspiComponentLayer, in combination with #AtspiComponent bounds
+ * information, can be used to compute the visibility of all or part of a
+ * component. This is important in programmatic determination of
+ * region-of-interest for magnification, and in
+ * flat screen review models of the screen, as well as
+ * for other uses. Objects residing in two of the #AtspiComponentLayer
+ * categories support further z-ordering information, with respect to their
+ * peers in the same layer: namely, @ATSPI_LAYER_WINDOW and
+ * @ATSPI_LAYER_MDI. Relative stacking order for other objects within the
+ * same layer is not available; the recommended heuristic is
+ * first child paints first. In other words, assume that the
+ * first siblings in the child list are subject to being overpainted by later
+ * siblings if their bounds intersect. The order of layers, from bottom to top,
+ * is: @ATSPI_LAYER_BACKGROUND, @ATSPI_LAYER_WINDOW, @ATSPI_LAYER_MDI,
+ * @ATSPI_LAYER_CANVAS, @ATSPI_LAYER_WIDGET, @ATSPI_LAYER_POPUP, and
+ * @ATSPI_LAYER_OVERLAY.
+ *
+ */
+typedef enum {
+ ATSPI_LAYER_INVALID,
+ ATSPI_LAYER_BACKGROUND,
+ ATSPI_LAYER_CANVAS,
+ ATSPI_LAYER_WIDGET,
+ ATSPI_LAYER_MDI,
+ ATSPI_LAYER_POPUP,
+ ATSPI_LAYER_OVERLAY,
+ ATSPI_LAYER_WINDOW,
+ ATSPI_LAYER_LAST_DEFINED,
+} AtspiComponentLayer;
+
+/**
+ * ATSPI_COMPONENTLAYER_COUNT:
+ *
+ * One higher than the highest valid value of #AtspiComponentLayer.
+ **/
+#define ATSPI_COMPONENTLAYER_COUNT (8+1)
+
+/**
+ * AtspiTextBoundaryType:
+ * @ATSPI_TEXT_BOUNDARY_CHAR: An #AtspiText instance is bounded by this
+ * character only. Start and end offsets differ by one, by definition,
+ * for this value.
+ * @ATSPI_TEXT_BOUNDARY_WORD_START: Boundary condition is start of a word; i.e.
+ * range is from start of one word to the start of another word.
+ * @ATSPI_TEXT_BOUNDARY_WORD_END: Boundary condition is the end of a word; i.e.
+ * range is from the end of one word to the end of another. Some locales
+ * may not distinguish between words and characters or glyphs. In particular,
+ * those locales which use wholly or partially ideographic character sets.
+ * In these cases, characters may be returned in lieu of multi-character
+ * substrings.
+ * @ATSPI_TEXT_BOUNDARY_SENTENCE_START: Boundary condition is start of a
+ * sentence, as determined by the application. Some locales or
+ * character sets may not include explicit sentence delimiters, so this
+ * boundary type can not always be honored. Some locales will return lines
+ * of text instead of grammatical sentences.
+ * @ATSPI_TEXT_BOUNDARY_SENTENCE_END: Boundary condition is end of a sentence,
+ * as determined by the application, including the sentence-delimiting
+ * character, for instance '.' Some locales or character sets may not
+ * include explicit sentence delimiters, so this boundary type can not
+ * always be honored. Some locales will return lines of text instead of
+ * grammatical sentences.
+ * @ATSPI_TEXT_BOUNDARY_LINE_START: Boundary condition is the start of a line;
+ * i.e. range is from start of one line to the start of another. This
+ * generally means that an end-of-line character will appear at the end of
+ * the range.
+ * @ATSPI_TEXT_BOUNDARY_LINE_END: Boundary condition is the end of a line; i.e.
+ * range is from start of one line to the start of another. This generally
+ * means that an end-of-line character will be the first character of the
+ * range.
+ *
+ * Specifies the boundary conditions determining a run of text as returned from
+ * #atspi_text_get_text_at_offset, #atspi_text_get_text_after_offset, and
+ * #atspi_text_get_text_before_offset.
+ *
+ **/
+typedef enum {
+ ATSPI_TEXT_BOUNDARY_CHAR,
+ ATSPI_TEXT_BOUNDARY_WORD_START,
+ ATSPI_TEXT_BOUNDARY_WORD_END,
+ ATSPI_TEXT_BOUNDARY_SENTENCE_START,
+ ATSPI_TEXT_BOUNDARY_SENTENCE_END,
+ ATSPI_TEXT_BOUNDARY_LINE_START,
+ ATSPI_TEXT_BOUNDARY_LINE_END,
+} AtspiTextBoundaryType;
+
+/**
+ * ATSPI_TEXT_BOUNDARY_TYPE_COUNT:
+ *
+ * One higher than the highest valid value of #AtspiTextBoundaryType.
+ */
+#define ATSPI_TEXT_BOUNDARY_TYPE_COUNT (6+1)
+
+/**
+ * AtspiTextClipType:
+ * @ATSPI_TEXT_CLIP_NONE: No characters/glyphs are omitted.
+ * @ATSPI_TEXT_CLIP_MIN: Characters/glyphs clipped by the minimum coordinate
+ * are omitted.
+ * @ATSPI_TEXT_CLIP_MAX: Characters/glyphs which intersect the maximum
+ * coordinate are omitted.
+ * @ATSPI_TEXT_CLIP_BOTH: Only glyphs falling entirely within the region
+ * bounded by min and max are retained.
+ *
+ * Enumeration used by interface #AtspiText to indicate
+ * how to treat characters intersecting bounding boxes.
+ *
+ **/
+typedef enum {
+ ATSPI_TEXT_CLIP_NONE,
+ ATSPI_TEXT_CLIP_MIN,
+ ATSPI_TEXT_CLIP_MAX,
+ ATSPI_TEXT_CLIP_BOTH,
+} AtspiTextClipType;
+
+/**
+ * ATSPI_TEXT_CLIP_TYPE_COUNT:
+ *
+ * One higher than the highest valid value of #AtspiTextClipType.
+ */
+#define ATSPI_TEXT_CLIP_TYPE_COUNT (3+1)
+
+/**
+ * AtspiStateType:
+ * @ATSPI_STATE_INVALID: Indicates an invalid state - probably an error
+ * condition.
+ * @ATSPI_STATE_ACTIVE: Indicates a window is currently the active window, or
+ * is an active subelement within a container or table.
+ * @ATSPI_STATE_ARMED: Indicates that the object is armed.
+ * @ATSPI_STATE_BUSY: Indicates the current object is busy, i.e. onscreen
+ * representation is in the process of changing, or the object is
+ * temporarily unavailable for interaction due to activity already in progress.
+ * @ATSPI_STATE_CHECKED: Indicates this object is currently checked.
+ * @ATSPI_STATE_COLLAPSED: Indicates this object is collapsed.
+ * @ATSPI_STATE_DEFUNCT: Indicates that this object no longer has a valid
+ * backing widget (for instance, if its peer object has been destroyed).
+ * @ATSPI_STATE_EDITABLE: Indicates the user can change the contents of this
+ * object.
+ * @ATSPI_STATE_ENABLED: Indicates that this object is enabled, i.e. that it
+ * currently reflects some application state. Objects that are "greyed out"
+ * may lack this state, and may lack the @ATSPI_STATE_SENSITIVE if direct
+ * user interaction cannot cause them to acquire @ATSPI_STATE_ENABLED.
+ * See @ATSPI_STATE_SENSITIVE.
+ * @ATSPI_STATE_EXPANDABLE: Indicates this object allows progressive
+ * disclosure of its children.
+ * @ATSPI_STATE_EXPANDED: Indicates this object is expanded.
+ * @ATSPI_STATE_FOCUSABLE: Indicates this object can accept keyboard focus,
+ * which means all events resulting from typing on the keyboard will
+ * normally be passed to it when it has focus.
+ * @ATSPI_STATE_FOCUSED: Indicates this object currently has the keyboard
+ * focus.
+ * @ATSPI_STATE_HAS_TOOLTIP: Indicates that the object has an associated
+ * tooltip.
+ * @ATSPI_STATE_HORIZONTAL: Indicates the orientation of this object is
+ * horizontal.
+ * @ATSPI_STATE_ICONIFIED: Indicates this object is minimized and is
+ * represented only by an icon.
+ * @ATSPI_STATE_MODAL: Indicates something must be done with this object
+ * before the user can interact with an object in a different window.
+ * @ATSPI_STATE_MULTI_LINE: Indicates this (text) object can contain multiple
+ * lines of text.
+ * @ATSPI_STATE_MULTISELECTABLE: Indicates this object allows more than one of
+ * its children to be selected at the same time, or in the case of text
+ * objects, that the object supports non-contiguous text selections.
+ * @ATSPI_STATE_OPAQUE: Indicates this object paints every pixel within its
+ * rectangular region. It also indicates an alpha value of unity, if it
+ * supports alpha blending.
+ * @ATSPI_STATE_PRESSED: Indicates this object is currently pressed.
+ * @ATSPI_STATE_RESIZABLE: Indicates the size of this object's size is not
+ * fixed.
+ * @ATSPI_STATE_SELECTABLE: Indicates this object is the child of an object
+ * that allows its children to be selected and that this child is one of
+ * those children that can be selected.
+ * @ATSPI_STATE_SELECTED: Indicates this object is the child of an object that
+ * allows its children to be selected and that this child is one of those
+ * children that has been selected.
+ * @ATSPI_STATE_SENSITIVE: Indicates this object is sensitive, e.g. to user
+ * interaction. @ATSPI_STATE_SENSITIVE usually accompanies.
+ * @ATSPI_STATE_ENABLED for user-actionable controls, but may be found in the
+ * absence of @ATSPI_STATE_ENABLED if the current visible state of the control
+ * is "disconnected" from the application state. In such cases, direct user
+ * interaction can often result in the object gaining @ATSPI_STATE_SENSITIVE,
+ * for instance if a user makes an explicit selection using an object whose
+ * current state is ambiguous or undefined. See @ATSPI_STATE_ENABLED,
+ * @ATSPI_STATE_INDETERMINATE.
+ * @ATSPI_STATE_SHOWING: Indicates this object, the object's parent, the
+ * object's parent's parent, and so on, are all 'shown' to the end-user,
+ * i.e. subject to "exposure" if blocking or obscuring objects do not
+ * interpose between this object and the top of the window stack.
+ * @ATSPI_STATE_SINGLE_LINE: Indicates this (text) object can contain only a
+ * single line of text.
+ * @ATSPI_STATE_STALE: Indicates that the information returned for this object
+ * may no longer be synchronized with the application state. This can occur
+ * if the object has @ATSPI_STATE_TRANSIENT, and can also occur towards the
+ * end of the object peer's lifecycle.
+ * @ATSPI_STATE_TRANSIENT: Indicates this object is transient.
+ * @ATSPI_STATE_VERTICAL: Indicates the orientation of this object is vertical;
+ * for example this state may appear on such objects as scrollbars, text
+ * objects (with vertical text flow), separators, etc.
+ * @ATSPI_STATE_VISIBLE: Indicates this object is visible, e.g. has been
+ * explicitly marked for exposure to the user. @ATSPI_STATE_VISIBLE is no
+ * guarantee that the object is actually unobscured on the screen, only that
+ * it is 'potentially' visible, barring obstruction, being scrolled or clipped
+ * out of the field of view, or having an ancestor container that has not yet
+ * made visible. A widget is potentially onscreen if it has both
+ * @ATSPI_STATE_VISIBLE and @ATSPI_STATE_SHOWING. The absence of
+ * @ATSPI_STATE_VISIBLE and @ATSPI_STATE_SHOWING is
+ * semantically equivalent to saying that an object is 'hidden'.
+ * @ATSPI_STATE_MANAGES_DESCENDANTS: Indicates that "active-descendant-changed"
+ * event is sent when children become 'active' (i.e. are selected or
+ * navigated to onscreen). Used to prevent need to enumerate all children
+ * in very large containers, like tables. The presence of
+ * @ATSPI_STATE_MANAGES_DESCENDANTS is an indication to the client that the
+ * children should not, and need not, be enumerated by the client.
+ * Objects implementing this state are expected to provide relevant state
+ * notifications to listening clients, for instance notifications of
+ * visibility changes and activation of their contained child objects, without
+ * the client having previously requested references to those children.
+ * @ATSPI_STATE_INDETERMINATE: Indicates that a check box or other boolean
+ * indicator is in a state other than checked or not checked. This
+ * usually means that the boolean value reflected or controlled by the
+ * object does not apply consistently to the entire current context.
+ * For example, a checkbox for the "Bold" attribute of text may have
+ * @ATSPI_STATE_INDETERMINATE if the currently selected text contains a mixture
+ * of weight attributes. In many cases interacting with a
+ * @ATSPI_STATE_INDETERMINATE object will cause the context's corresponding
+ * boolean attribute to be homogenized, whereupon the object will lose
+ * @ATSPI_STATE_INDETERMINATE and a corresponding state-changed event will be
+ * fired.
+ * @ATSPI_STATE_REQUIRED: Indicates that user interaction with this object is
+ * 'required' from the user, for instance before completing the
+ * processing of a form.
+ * @ATSPI_STATE_TRUNCATED: Indicates that an object's onscreen content
+ * is truncated, e.g. a text value in a spreadsheet cell.
+ * @ATSPI_STATE_ANIMATED: Indicates this object's visual representation is
+ * dynamic, not static. This state may be applied to an object during an
+ * animated 'effect' and be removed from the object once its visual
+ * representation becomes static. Some applications, notably content viewers,
+ * may not be able to detect all kinds of animated content. Therefore the
+ * absence of this state should not be taken as
+ * definitive evidence that the object's visual representation is
+ * static; this state is advisory.
+ * @ATSPI_STATE_INVALID_ENTRY: This object has indicated an error condition
+ * due to failure of input validation. For instance, a form control may
+ * acquire this state in response to invalid or malformed user input.
+ * @ATSPI_STATE_SUPPORTS_AUTOCOMPLETION: This state indicates that the object
+ * in question implements some form of typeahead or
+ * pre-selection behavior whereby entering the first character of one or more
+ * sub-elements causes those elements to scroll into view or become
+ * selected. Subsequent character input may narrow the selection further as
+ * long as one or more sub-elements match the string. This state is normally
+ * only useful and encountered on objects that implement #AtspiSelection.
+ * In some cases the typeahead behavior may result in full or partial
+ * completion of the data in the input field, in which case
+ * these input events may trigger text-changed events from the source.
+ * @ATSPI_STATE_SELECTABLE_TEXT: This state indicates that the object in
+ * question supports text selection. It should only be exposed on objects
+ * which implement the #AtspiText interface, in order to distinguish this state
+ * from @ATSPI_STATE_SELECTABLE, which infers that the object in question is a
+ * selectable child of an object which implements #AtspiSelection. While
+ * similar, text selection and subelement selection are distinct operations.
+ * @ATSPI_STATE_IS_DEFAULT: This state indicates that the object in question is
+ * the 'default' interaction object in a dialog, i.e. the one that gets
+ * activated if the user presses "Enter" when the dialog is initially
+ * posted.
+ * @ATSPI_STATE_VISITED: This state indicates that the object (typically a
+ * hyperlink) has already been activated or invoked, with the result that
+ * some backing data has been downloaded or rendered.
+ * @ATSPI_STATE_LAST_DEFINED: This value of the enumeration should not be used
+ * as a parameter, it indicates the number of items in the #AtspiStateType
+ * enumeration.
+ *
+ *
+ * Enumeration used by various interfaces indicating every possible state
+ * an #AtspiAccesible object can assume.
+ *
+ **/
+typedef enum {
+ ATSPI_STATE_INVALID,
+ ATSPI_STATE_ACTIVE,
+ ATSPI_STATE_ARMED,
+ ATSPI_STATE_BUSY,
+ ATSPI_STATE_CHECKED,
+ ATSPI_STATE_COLLAPSED,
+ ATSPI_STATE_DEFUNCT,
+ ATSPI_STATE_EDITABLE,
+ ATSPI_STATE_ENABLED,
+ ATSPI_STATE_EXPANDABLE,
+ ATSPI_STATE_EXPANDED,
+ ATSPI_STATE_FOCUSABLE,
+ ATSPI_STATE_FOCUSED,
+ ATSPI_STATE_HAS_TOOLTIP,
+ ATSPI_STATE_HORIZONTAL,
+ ATSPI_STATE_ICONIFIED,
+ ATSPI_STATE_MODAL,
+ ATSPI_STATE_MULTI_LINE,
+ ATSPI_STATE_MULTISELECTABLE,
+ ATSPI_STATE_OPAQUE,
+ ATSPI_STATE_PRESSED,
+ ATSPI_STATE_RESIZABLE,
+ ATSPI_STATE_SELECTABLE,
+ ATSPI_STATE_SELECTED,
+ ATSPI_STATE_SENSITIVE,
+ ATSPI_STATE_SHOWING,
+ ATSPI_STATE_SINGLE_LINE,
+ ATSPI_STATE_STALE,
+ ATSPI_STATE_TRANSIENT,
+ ATSPI_STATE_VERTICAL,
+ ATSPI_STATE_VISIBLE,
+ ATSPI_STATE_MANAGES_DESCENDANTS,
+ ATSPI_STATE_INDETERMINATE,
+ ATSPI_STATE_REQUIRED,
+ ATSPI_STATE_TRUNCATED,
+ ATSPI_STATE_ANIMATED,
+ ATSPI_STATE_INVALID_ENTRY,
+ ATSPI_STATE_SUPPORTS_AUTOCOMPLETION,
+ ATSPI_STATE_SELECTABLE_TEXT,
+ ATSPI_STATE_IS_DEFAULT,
+ ATSPI_STATE_VISITED,
+ ATSPI_STATE_LAST_DEFINED,
+} AtspiStateType;
+
+/**
+ * ATSPI_STATETYPE_COUNT:
+ *
+ * One higher than the highest valid value of #AtspiStateType.
+ **/
+#define ATSPI_STATETYPE_COUNT (41+1)
+
+/**
+ * AtspiKeyEventType:
+ * @ATSPI_KEY_PRESSED:
+ * @ATSPI_KEY_RELEASED:
+ *
+ * Deprecated. Should not be used.
+ *
+ **/
+typedef enum {
+ ATSPI_KEY_PRESSED,
+ ATSPI_KEY_RELEASED,
+} AtspiKeyEventType;
+
+/**
+ * ATSPI_KEYEVENTTYPE_COUNT:
+ *
+ * One higher than the highest valid value of #AtspiKeyEventType.
+ **/
+#define ATSPI_KEYEVENTTYPE_COUNT (1+1)
+
+/**
+ * AtspiEventType:
+ * @ATSPI_KEY_PRESSED_EVENT: Indicates that a key on a keyboard device was
+ * pressed.
+ * @ATSPI_KEY_RELEASED_EVENT: Indicates that a key on a keyboard device was
+ * released.
+ * @ATSPI_BUTTON_PRESSED_EVENT: Indicates that a button on a non-keyboard
+ * human interface device (HID) was pressed.
+ * @ATSPI_BUTTON_RELEASED_EVENT: Indicates that a button on a non-keyboard
+ * human interface device (HID) was released.
+ *
+ * Enumeration used to specify the event types of interest to an
+ * #AtspiEventListener, or
+ * to identify the type of an event for which notification has been sent.
+ *
+ **/
+typedef enum {
+ ATSPI_KEY_PRESSED_EVENT,
+ ATSPI_KEY_RELEASED_EVENT,
+ ATSPI_BUTTON_PRESSED_EVENT,
+ ATSPI_BUTTON_RELEASED_EVENT,
+} AtspiEventType;
+
+/**
+ * ATSPI_EVENTTYPE_COUNT:
+ *
+ * One higher than the highest valid value of #AtspiEventType.
+ */
+#define ATSPI_EVENTTYPE_COUNT (3+1)
+
+/**
+ * AtspiKeySynthType:
+ * @ATSPI_KEY_PRESS: Emulates the pressing of a hardware keyboard key.
+ * @ATSPI_KEY_RELEASE: Emulates the release of a hardware keyboard key.
+ * @ATSPI_KEY_PRESSRELEASE: Emulates the pressing and immediate releasing
+ * ofa hardware keyboard key.
+ * @ATSPI_KEY_SYM: A symbolic key event is generated, without specifying a
+ * hardware key. Note: if the keysym is not present in the current keyboard
+ * map, the #AtspiDeviceEventController instance has a limited ability to
+ * generate such keysyms on-the-fly. Reliability of GenerateKeyboardEvent
+ * calls using out-of-keymap keysyms will vary from system to system, and on
+ * the number of different out-of-keymap being generated in quick succession.
+ * In practice this is rarely significant, since the keysyms of interest to
+ * AT clients and keyboard emulators are usually part of the current keymap,
+ * i.e. present on the system keyboard for the current locale (even if a
+ * physical hardware keyboard is not connected.
+ * @ATSPI_KEY_STRING: A string is converted to its equivalent keyboard events
+ * and emitted. If the string consists of complex character or composed
+ * characters which are not in the current keymap, string emission is
+ * subject to the out-of-keymap limitations described for
+ * @ATSPI_KEY_SYM. In practice this limitation primarily effects
+ * Chinese and Japanese locales.
+ *
+ * Enumeration used when synthesizing keyboard input via
+ * #atspi_generate_keyboard_event.
+ *
+ **/
+typedef enum {
+ ATSPI_KEY_PRESS,
+ ATSPI_KEY_RELEASE,
+ ATSPI_KEY_PRESSRELEASE,
+ ATSPI_KEY_SYM,
+ ATSPI_KEY_STRING,
+} AtspiKeySynthType;
+
+/**
+ * ATSPI_KEYSYNTHTYPE_COUNT:
+ *
+ * One higher than the highest valid value of #AtspiKeySynthType.
+ **/
+#define ATSPI_KEYSYNTHTYPE_COUNT (4+1)
+
+/**
+ * AtspiModifierType:
+ * @ATSPI_MODIFIER_SHIFT: The left or right 'Shift' key.
+ * @ATSPI_MODIFIER_SHIFTLOCK: The ShiftLock or CapsLock key.
+ * @ATSPI_MODIFIER_CONTROL: 'Control'/'Ctrl'.
+ * @ATSPI_MODIFIER_ALT: The Alt key (as opposed to AltGr).
+ * @ATSPI_MODIFIER_META: Depending on the platform, this may map to 'Window',
+ * 'Function', 'Meta', 'Menu', or 'NumLock'. Such 'Meta keys' will
+ * map to one of META, META2, META3. On X Windows platforms these META
+ * values map to the modifier masks Mod1Mask, Mod2Mask, Mod3Mask, e.g. an
+ * event having @ATSPI_MODIFIER_META2 means that the 'Mod2Mask' bit
+ * is set in the corresponding XEvent.
+ * @ATSPI_MODIFIER_META2: See @ATSPI_MODIFIER_META.
+ * @ATSPI_MODIFIER_META3: See @ATSPI_MODIFIER_META.
+ * @ATSPI_MODIFIER_NUMLOCK: A symbolic meta key name that is mapped by AT-SPI
+ * to the appropriate META value, for the convenience of the client.
+ *
+ *
+ *
+ **/
+typedef enum {
+ ATSPI_MODIFIER_SHIFT,
+ ATSPI_MODIFIER_SHIFTLOCK,
+ ATSPI_MODIFIER_CONTROL,
+ ATSPI_MODIFIER_ALT,
+ ATSPI_MODIFIER_META,
+ ATSPI_MODIFIER_META2,
+ ATSPI_MODIFIER_META3,
+ ATSPI_MODIFIER_NUMLOCK = 14,
+} AtspiModifierType;
+
+/**
+ * ATSPI_MODIFIERTYPE_COUNT:
+ *
+ * One higher than the highest valid value of #AtspiModifierType.
+ **/
+#define ATSPI_MODIFIERTYPE_COUNT (7+1)
+
+/**
+ * AtspiRelationType:
+ * @ATSPI_RELATION_NULL: Not a meaningful relationship; clients should not
+ * normally encounter this #AtspiRelationType value.
+ * @ATSPI_RELATION_LABEL_FOR: Object is a label for one or more other objects.
+ * @ATSPI_RELATION_LABELLED_BY: Object is labelled by one or more other
+ * objects.
+ * @ATSPI_RELATION_CONTROLLER_FOR: Object is an interactive object which
+ * modifies the state, onscreen location, or other attributes of one or more
+ * target objects.
+ * @ATSPI_RELATION_CONTROLLED_BY: Object state, position, etc. is
+ * modified/controlled by user interaction with one or more other objects.
+ * For instance a viewport or scroll pane may be @ATSPI_RELATION_CONTROLLED_BY
+ * scrollbars.
+ * @ATSPI_RELATION_MEMBER_OF: Object has a grouping relationship (e.g. 'same
+ * group as') to one or more other objects.
+ * @ATSPI_RELATION_TOOLTIP_FOR: Object is a tooltip associated with another
+ * object.
+ * @ATSPI_RELATION_NODE_CHILD_OF: Object is a child of the target.
+ * @ATSPI_RELATION_NODE_PARENT_OF: Object is a parent of the target.
+ * @ATSPI_RELATION_EXTENDED: Used to indicate that a relationship exists, but
+ * its type is not specified in the enumeration.
+ * @ATSPI_RELATION_FLOWS_TO: Object renders content which flows logically to
+ * another object. For instance, text in a paragraph may flow to another
+ * object which is not the 'next sibling' in the accessibility hierarchy.
+ * @ATSPI_RELATION_FLOWS_FROM: Reciprocal of @ATSPI_RELATION_FLOWS_TO.
+ * @ATSPI_RELATION_SUBWINDOW_OF: Object is visually and semantically considered
+ * a subwindow of another object, even though it is not the object's child.
+ * Useful when dealing with embedded applications and other cases where the
+ * widget hierarchy does not map cleanly to the onscreen presentation.
+ * @ATSPI_RELATION_EMBEDS: Similar to @ATSPI_RELATION_SUBWINDOW_OF, but
+ * specifically used for cross-process embedding.
+ * @ATSPI_RELATION_EMBEDDED_BY: Reciprocal of @ATSPI_RELATION_EMBEDS. Used to
+ * denote content rendered by embedded renderers that live in a separate process
+ * space from the embedding context.
+ * @ATSPI_RELATION_POPUP_FOR: Denotes that the object is a transient window or
+ * frame associated with another onscreen object. Similar to @ATSPI_TOOLTIP_FOR,
+ * but more general. Useful for windows which are technically toplevels
+ * but which, for one or more reasons, do not explicitly cause their
+ * associated window to lose 'window focus'. Creation of an @ATSPI_ROLE_WINDOW
+ * object with the @ATSPI_RELATION_POPUP_FOR relation usually requires
+ * some presentation action on the part
+ * of assistive technology clients, even though the previous toplevel
+ * @ATSPI_ROLE_FRAME object may still be the active window.
+ * @ATSPI_RELATION_PARENT_WINDOW_OF: This is the reciprocal relation to
+ * @ATSPI_RELATION_POPUP_FOR.
+ * @ATSPI_RELATION_DESCRIPTION_FOR: Indicates that an object provides
+ * descriptive information about another object; more verbose than
+ * @ATSPI_RELATION_LABEL_FOR.
+ * @ATSPI_RELATION_DESCRIBED_BY: Indicates that another object provides
+ * descriptive information about this object; more verbose than
+ * @ATSPI_RELATION_LABELLED_BY.
+ * @ATSPI_RELATION_LAST_DEFINED: Do not use as a parameter value, used to
+ * determine the size of the enumeration.
+ *
+ * #AtspiRelationType specifies a relationship between objects
+ * (possibly one-to-many
+ * or many-to-one) outside of the normal parent/child hierarchical
+ * relationship. It allows better semantic identification of how objects
+ * are associated with one another. For instance the
+ * @ATSPI_RELATION_LABELLED_BY
+ * relationship may be used to identify labelling information that should
+ * accompany the accessible name property when presenting an object's content or
+ * identity to the end user. Similarly,
+ * @ATSPI_RELATION_CONTROLLER_FOR can be used
+ * to further specify the context in which a valuator is useful, and/or the
+ * other UI components which are directly effected by user interactions with
+ * the valuator. Common examples include association of scrollbars with the
+ * viewport or panel which they control.
+ *
+ *
+ * Enumeration used to specify
+ * the type of relation encapsulated in an #AtspiRelation object.
+ *
+ **/
+typedef enum {
+ ATSPI_RELATION_NULL,
+ ATSPI_RELATION_LABEL_FOR,
+ ATSPI_RELATION_LABELLED_BY,
+ ATSPI_RELATION_CONTROLLER_FOR,
+ ATSPI_RELATION_CONTROLLED_BY,
+ ATSPI_RELATION_MEMBER_OF,
+ ATSPI_RELATION_TOOLTIP_FOR,
+ ATSPI_RELATION_NODE_CHILD_OF,
+ ATSPI_RELATION_NODE_PARENT_OF,
+ ATSPI_RELATION_EXTENDED,
+ ATSPI_RELATION_FLOWS_TO,
+ ATSPI_RELATION_FLOWS_FROM,
+ ATSPI_RELATION_SUBWINDOW_OF,
+ ATSPI_RELATION_EMBEDS,
+ ATSPI_RELATION_EMBEDDED_BY,
+ ATSPI_RELATION_POPUP_FOR,
+ ATSPI_RELATION_PARENT_WINDOW_OF,
+ ATSPI_RELATION_DESCRIPTION_FOR,
+ ATSPI_RELATION_DESCRIBED_BY,
+ ATSPI_RELATION_LAST_DEFINED,
+} AtspiRelationType;
+
+/**
+ * ATSPI_RELATIONTYPE_COUNT:
+ *
+ * One higher than the highest valid value of #AtspiRelationType.
+ **/
+#define ATSPI_RELATIONTYPE_COUNT (19+1)
+
+/**
+ * AtspiRole:
+ * @ATSPI_ROLE_INVALID: A role indicating an error condition, such as
+ * uninitialized Role data.
+ * @ATSPI_ROLE_ACCELERATOR_LABEL: Object is a label indicating the keyboard
+ * accelerators for the parent.
+ * @ATSPI_ROLE_ALERT: Object is used to alert the user about something.
+ * @ATSPI_ROLE_ANIMATION: Object contains a dynamic or moving image of some
+ * kind.
+ * @ATSPI_ROLE_ARROW: Object is a 2d directional indicator.
+ * @ATSPI_ROLE_CALENDAR: Object contains one or more dates, usually arranged
+ * into a 2d list.
+ * @ATSPI_ROLE_CANVAS: Object that can be drawn into and is used to trap
+ * events.
+ * @ATSPI_ROLE_CHECK_BOX: A choice that can be checked or unchecked and
+ * provides a separate indicator for the current state.
+ * @ATSPI_ROLE_CHECK_MENU_ITEM: A menu item that behaves like a check box. See
+ * @ATSPI_ROLE_CHECK_BOX.
+ * @ATSPI_ROLE_COLOR_CHOOSER: A specialized dialog that lets the user choose a
+ * color.
+ * @ATSPI_ROLE_COLUMN_HEADER: The header for a column of data.
+ * @ATSPI_ROLE_COMBO_BOX: A list of choices the user can select from.
+ * @ATSPI_ROLE_DATE_EDITOR: An object which allows entry of a date.
+ * @ATSPI_ROLE_DESKTOP_ICON: An inconifed internal frame within a DESKTOP_PANE.
+ * @ATSPI_ROLE_DESKTOP_FRAME: A pane that supports internal frames and
+ * iconified versions of those internal frames.
+ * @ATSPI_ROLE_DIAL: An object that allows a value to be changed via rotating a
+ * visual element, or which displays a value via such a rotating element.
+ * @ATSPI_ROLE_DIALOG: A top level window with title bar and a border.
+ * @ATSPI_ROLE_DIRECTORY_PANE: A pane that allows the user to navigate through
+ * and select the contents of a directory.
+ * @ATSPI_ROLE_DRAWING_AREA: A specialized dialog that displays the files in
+ * the directory and lets the user select a file, browse a different
+ * directory, or specify a filename.
+ * @ATSPI_ROLE_FILE_CHOOSER: An object used for drawing custom user interface
+ * elements.
+ * @ATSPI_ROLE_FILLER: A object that fills up space in a user interface.
+ * @ATSPI_ROLE_FOCUS_TRAVERSABLE: Don't use, reserved for future use.
+ * @ATSPI_ROLE_FONT_CHOOSER: Allows selection of a display font.
+ * @ATSPI_ROLE_FRAME: A top level window with a title bar, border, menubar,
+ * etc.
+ * @ATSPI_ROLE_GLASS_PANE: A pane that is guaranteed to be painted on top of
+ * all panes beneath it.
+ * @ATSPI_ROLE_HTML_CONTAINER: A document container for HTML, whose children
+ * represent the document content.
+ * @ATSPI_ROLE_ICON: A small fixed size picture, typically used to decorate
+ * components.
+ * @ATSPI_ROLE_IMAGE: An image, typically static.
+ * @ATSPI_ROLE_INTERNAL_FRAME: A frame-like object that is clipped by a desktop
+ * pane.
+ * @ATSPI_ROLE_LABEL: An object used to present an icon or short string in an
+ * interface.
+ * @ATSPI_ROLE_LAYERED_PANE: A specialized pane that allows its children to be
+ * drawn in layers, providing a form of stacking order.
+ * @ATSPI_ROLE_LIST: An object that presents a list of objects to the user and
+ * allows the user to select one or more of them.
+ * @ATSPI_ROLE_LIST_ITEM: An object that represents an element of a list.
+ * @ATSPI_ROLE_MENU: An object usually found inside a menu bar that contains a
+ * list of actions the user can choose from.
+ * @ATSPI_ROLE_MENU_BAR: An object usually drawn at the top of the primary
+ * dialog box of an application that contains a list of menus the user can
+ * choose from.
+ * @ATSPI_ROLE_MENU_ITEM: An object usually contained in a menu that presents
+ * an action the user can choose.
+ * @ATSPI_ROLE_OPTION_PANE: A specialized pane whose primary use is inside a
+ * dialog.
+ * @ATSPI_ROLE_PAGE_TAB: An object that is a child of a page tab list.
+ * @ATSPI_ROLE_PAGE_TAB_LIST: An object that presents a series of panels (or
+ * page tabs), one at a time,through some mechanism provided by the
+ * object.
+ * @ATSPI_ROLE_PANEL: A generic container that is often used to group objects.
+ * @ATSPI_ROLE_PASSWORD_TEXT: A text object uses for passwords, or other places
+ * where the text content is not shown visibly to the user.
+ * @ATSPI_ROLE_POPUP_MENU: A temporary window that is usually used to offer the
+ * user a list of choices, and then hides when the user selects one of those
+ * choices.
+ * @ATSPI_ROLE_PROGRESS_BAR: An object used to indicate how much of a task has
+ * been completed.
+ * @ATSPI_ROLE_PUSH_BUTTON: An object the user can manipulate to tell the
+ * application to do something.
+ * @ATSPI_ROLE_RADIO_BUTTON: A specialized check box that will cause other
+ * radio buttons in the same group to become unchecked when this one is
+ * checked.
+ * @ATSPI_ROLE_RADIO_MENU_ITEM: Object is both a menu item and a "radio button"
+ * . See @ATSPI_ROLE_RADIO_BUTTON.
+ * @ATSPI_ROLE_ROOT_PANE: A specialized pane that has a glass pane and a
+ * layered pane as its children.
+ * @ATSPI_ROLE_ROW_HEADER: The header for a row of data.
+ * @ATSPI_ROLE_SCROLL_BAR: An object usually used to allow a user to
+ * incrementally view a large amount of data by moving the bounds of a
+ * viewport along a one-dimensional axis.
+ * @ATSPI_ROLE_SCROLL_PANE: An object that allows a user to incrementally view
+ * a large amount of information. @ATSPI_ROLE_SCROLL_PANE objects are usually
+ * accompanied by @ATSPI_ROLE_SCROLL_BAR controllers, on which the
+ * @ATSPI_RELATION_CONTROLLER_FOR and @ATSPI_RELATION_CONTROLLED_BY
+ * reciprocal relations are set. See #atspi_get_relation_set.
+ * @ATSPI_ROLE_SEPARATOR: An object usually contained in a menu to provide a
+ * visible and logical separation of the contents in a menu.
+ * @ATSPI_ROLE_SLIDER: An object that allows the user to select from a bounded
+ * range.
+ * @ATSPI_ROLE_SPIN_BUTTON: An object which allows one of a set of choices to
+ * be selected, and which displays the current choice. Unlike
+ * @ATSPI_ROLE_SCROLL_BAR, @ATSPI_ROLE_SLIDER objects need not control
+ * 'viewport'-like objects.
+ * @ATSPI_ROLE_SPLIT_PANE: A specialized panel that presents two other panels
+ * at the same time.
+ * @ATSPI_ROLE_STATUS_BAR: Object displays non-quantitative status information
+ * (c.f. @ATSPI_ROLE_PROGRESS_BAR)
+ * @ATSPI_ROLE_TABLE: An object used to repesent information in terms of rows
+ * and columns.
+ * @ATSPI_ROLE_TABLE_CELL: A 'cell' or discrete child within a Table. Note:
+ * Table cells need not have @ATSPI_ROLE_TABLE_CELL, other
+ * #AtspiRoleType values are valid as well.
+ * @ATSPI_ROLE_TABLE_COLUMN_HEADER: An object which labels a particular column
+ * in an #AtspiTable.
+ * @ATSPI_ROLE_TABLE_ROW_HEADER: An object which labels a particular row in a
+ * #AtspiTable. #AtspiTable rows and columns may also be labelled via the
+ * @ATSPI_RELATION_LABEL_FOR/@ATSPI_RELATION_LABELLED_BY relationships.
+ * See #atspi_get_relation_set.
+ * @ATSPI_ROLE_TEAROFF_MENU_ITEM: Object allows menu to be removed from menubar
+ * and shown in its own window.
+ * @ATSPI_ROLE_TERMINAL: An object that emulates a terminal.
+ * @ATSPI_ROLE_TEXT: An object that presents text to the user, of nonspecific
+ * type.
+ * @ATSPI_ROLE_TOGGLE_BUTTON: A specialized push button that can be checked or
+ * unchecked, but does not procide a separate indicator for the current
+ * state.
+ * @ATSPI_ROLE_TOOL_BAR: A bar or palette usually composed of push buttons or
+ * toggle buttons.
+ * @ATSPI_ROLE_TOOL_TIP: An object that provides information about another
+ * object.
+ * @ATSPI_ROLE_TREE: An object used to repsent hierarchical information to the
+ * user.
+ * @ATSPI_ROLE_TREE_TABLE: An object that presents both tabular and
+ * hierarchical info to the user.
+ * @ATSPI_ROLE_UNKNOWN: The object contains some #AtspiAccessible information,
+ * but its role is not known.
+ * @ATSPI_ROLE_VIEWPORT: An object usually used in a scroll pane, or to
+ * otherwise clip a larger object or content renderer to a specific
+ * onscreen viewport.
+ * @ATSPI_ROLE_WINDOW: A top level window with no title or border.
+ * @ATSPI_ROLE_EXTENDED: means that the role for this item is known, but not
+ * included in the core enumeration.
+ * @ATSPI_ROLE_HEADER: An object that serves as a document header.
+ * @ATSPI_ROLE_FOOTER: An object that serves as a document footer.
+ * @ATSPI_ROLE_PARAGRAPH: An object which is contains a single paragraph of
+ * text content. See also @ATSPI_ROLE_TEXT.
+ * @ATSPI_ROLE_RULER: An object which describes margins and tab stops, etc.
+ * for text objects which it controls (should have
+ * @ATSPI_RELATION_CONTROLLER_FOR relation to such).
+ * @ATSPI_ROLE_APPLICATION: An object corresponding to the toplevel accessible
+ * of an application, which may contain @ATSPI_ROLE_FRAME objects or other
+ * accessible objects. Children of #AccessibleDesktop objects are generally
+ * @ATSPI_ROLE_APPLICATION objects.
+ * @ATSPI_ROLE_AUTOCOMPLETE: The object is a dialog or list containing items
+ * for insertion into an entry widget, for instance a list of words for
+ * completion of a text entry.
+ * @ATSPI_ROLE_EDITBAR: The object is an editable text object in a toolbar.
+ * @ATSPI_ROLE_EMBEDDED: The object is an embedded component container. This
+ * role is a "grouping" hint that the contained objects share a context
+ * which is different from the container in which this accessible is
+ * embedded. In particular, it is used for some kinds of document embedding,
+ * and for embedding of out-of-process component, "panel applets", etc.
+ * @ATSPI_ROLE_ENTRY: The object is a component whose textual content may be
+ * entered or modified by the user, provided @ATSPI_STATE_EDITABLE is present.
+ * A readonly @ATSPI_ROLE_ENTRY object (i.e. where @ATSPI_STATE_EDITABLE is
+ * not present) implies a read-only 'text field' in a form, as opposed to a
+ * title, label, or caption.
+ * @ATSPI_ROLE_CHART: The object is a graphical depiction of quantitative data.
+ * It may contain multiple subelements whose attributes and/or description
+ * may be queried to obtain both the quantitative data and information about
+ * how the data is being presented. The @ATSPI_LABELLED_BY relation is
+ * particularly important in interpreting objects of this type, as is the
+ * accessible description property. See @ATSPI_ROLE_CAPTION.
+ * @ATSPI_ROLE_CAPTION: The object contains descriptive information, usually
+ * textual, about another user interface element such as a table, chart, or
+ * image.
+ * @ATSPI_ROLE_DOCUMENT_FRAME: The object is a visual frame or container which
+ * contains a view of document content. #AtspiDocument frames may occur within
+ * another #AtspiDocument instance, in which case the second document may be
+ * said to be embedded in the containing instance. HTML frames are often
+ * @ATSPI_ROLE_DOCUMENT_FRAME: Either this object, or a singleton descendant,
+ * should implement the #AtspiDocument interface.
+ * @ATSPI_ROLE_HEADING: The object serves as a heading for content which
+ * follows it in a document. The 'heading level' of the heading, if
+ * availabe, may be obtained by querying the object's attributes.
+ * @ATSPI_ROLE_PAGE: The object is a containing instance which encapsulates a
+ * page of information. @ATSPI_ROLE_PAGE is used in documents and content which
+ * support a paginated navigation model.
+ * @ATSPI_ROLE_SECTION: The object is a containing instance of document content
+ * which constitutes a particular 'logical' section of the document. The
+ * type of content within a section, and the nature of the section division
+ * itself, may be obtained by querying the object's attributes. Sections
+ * may be nested.
+ * @ATSPI_ROLE_REDUNDANT_OBJECT: The object is redundant with another object in
+ * the hierarchy, and is exposed for purely technical reasons. Objects of
+ * this role should be ignored by clients, if they are encountered at all.
+ * @ATSPI_ROLE_FORM: The object is a containing instance of document content
+ * which has within it components with which the user can interact in order
+ * to input information; i.e. the object is a container for pushbuttons,
+ * comboboxes, text input fields, and other 'GUI' components. @ATSPI_ROLE_FORM
+ * should not, in general, be used for toplevel GUI containers or dialogs,
+ * but should be reserved for 'GUI' containers which occur within document
+ * content, for instance within Web documents, presentations, or text
+ * documents. Unlike other GUI containers and dialogs which occur inside
+ * application instances, @ATSPI_ROLE_FORM containers' components are
+ * associated with the current document, rather than the current foreground
+ * application or viewer instance.
+ * @ATSPI_ROLE_LINK: The object is a hypertext anchor, i.e. a "link" in a
+ * hypertext document. Such objects are distinct from 'inline' content
+ * which may also use the #AtspiHypertext/#AtspiHyperlink interfacesto indicate
+ * the range/location within a text object where an inline or embedded object
+ * lies.
+ * @ATSPI_ROLE_INPUT_METHOD_WINDOW: The object is a window or similar viewport
+ * which is used to allow composition or input of a 'complex character',
+ * in other words it is an "input method window".
+ * @ATSPI_ROLE_TABLE_ROW: A row in a table.
+ * @ATSPI_ROLE_TREE_ITEM: An object that represents an element of a tree.
+ * @ATSPI_ROLE_DOCUMENT_SPREADSHEET: A document frame which contains a
+ * spreadsheet.
+ * @ATSPI_ROLE_DOCUMENT_PRESENTATION: A document frame which contains a
+ * presentation or slide content.
+ * @ATSPI_ROLE_DOCUMENT_TEXT: A document frame which contains textual content,
+ * such as found in a word processing
+ * application.
+ * @ATSPI_ROLE_DOCUMENT_WEB: A document frame which contains HTML or other
+ * markup suitable for display in a web browser.
+ * @ATSPI_ROLE_DOCUMENT_EMAIL: A document frame which contains email content
+ * to be displayed or composed either in plain text or
+ * HTML.
+ * @ATSPI_ROLE_COMMENT: An object found within a document and designed to
+ * present a comment, note, or other annotation. In some cases, this object
+ * might not be visible until activated.
+ * @ATSPI_ROLE_LIST_BOX: A non-collapsible list of choices the user can
+ * select from.
+ * @ATSPI_ROLE_GROUPING: A group of related widgets. This group typically has
+ * a label.
+ * @ATSPI_ROLE_IMAGE_MAP: An image map object. Usually a graphic with multiple
+ * hotspots, where each hotspot can be activated resulting in the loading of
+ * another document or section of a document.
+ * @ATSPI_ROLE_NOTIFICATION: A transitory object designed to present a
+ * message to the user, typically at the desktop level rather than inside a
+ * particular application.
+ * @ATSPI_ROLE_INFO_BAR: An object designed to present a message to the user
+ * within an existing window.
+ * @ATSPI_ROLE_LAST_DEFINED: Not a valid role, used for finding end of
+ * enumeration.
+ *
+ * Enumeration used by interface #AtspiAccessible to specify the role
+ * of an #AtspiAccessible object.
+ *
+ */
+typedef enum {
+ ATSPI_ROLE_INVALID,
+ ATSPI_ROLE_ACCELERATOR_LABEL,
+ ATSPI_ROLE_ALERT,
+ ATSPI_ROLE_ANIMATION,
+ ATSPI_ROLE_ARROW,
+ ATSPI_ROLE_CALENDAR,
+ ATSPI_ROLE_CANVAS,
+ ATSPI_ROLE_CHECK_BOX,
+ ATSPI_ROLE_CHECK_MENU_ITEM,
+ ATSPI_ROLE_COLOR_CHOOSER,
+ ATSPI_ROLE_COLUMN_HEADER,
+ ATSPI_ROLE_COMBO_BOX,
+ ATSPI_ROLE_DATE_EDITOR,
+ ATSPI_ROLE_DESKTOP_ICON,
+ ATSPI_ROLE_DESKTOP_FRAME,
+ ATSPI_ROLE_DIAL,
+ ATSPI_ROLE_DIALOG,
+ ATSPI_ROLE_DIRECTORY_PANE,
+ ATSPI_ROLE_DRAWING_AREA,
+ ATSPI_ROLE_FILE_CHOOSER,
+ ATSPI_ROLE_FILLER,
+ ATSPI_ROLE_FOCUS_TRAVERSABLE,
+ ATSPI_ROLE_FONT_CHOOSER,
+ ATSPI_ROLE_FRAME,
+ ATSPI_ROLE_GLASS_PANE,
+ ATSPI_ROLE_HTML_CONTAINER,
+ ATSPI_ROLE_ICON,
+ ATSPI_ROLE_IMAGE,
+ ATSPI_ROLE_INTERNAL_FRAME,
+ ATSPI_ROLE_LABEL,
+ ATSPI_ROLE_LAYERED_PANE,
+ ATSPI_ROLE_LIST,
+ ATSPI_ROLE_LIST_ITEM,
+ ATSPI_ROLE_MENU,
+ ATSPI_ROLE_MENU_BAR,
+ ATSPI_ROLE_MENU_ITEM,
+ ATSPI_ROLE_OPTION_PANE,
+ ATSPI_ROLE_PAGE_TAB,
+ ATSPI_ROLE_PAGE_TAB_LIST,
+ ATSPI_ROLE_PANEL,
+ ATSPI_ROLE_PASSWORD_TEXT,
+ ATSPI_ROLE_POPUP_MENU,
+ ATSPI_ROLE_PROGRESS_BAR,
+ ATSPI_ROLE_PUSH_BUTTON,
+ ATSPI_ROLE_RADIO_BUTTON,
+ ATSPI_ROLE_RADIO_MENU_ITEM,
+ ATSPI_ROLE_ROOT_PANE,
+ ATSPI_ROLE_ROW_HEADER,
+ ATSPI_ROLE_SCROLL_BAR,
+ ATSPI_ROLE_SCROLL_PANE,
+ ATSPI_ROLE_SEPARATOR,
+ ATSPI_ROLE_SLIDER,
+ ATSPI_ROLE_SPIN_BUTTON,
+ ATSPI_ROLE_SPLIT_PANE,
+ ATSPI_ROLE_STATUS_BAR,
+ ATSPI_ROLE_TABLE,
+ ATSPI_ROLE_TABLE_CELL,
+ ATSPI_ROLE_TABLE_COLUMN_HEADER,
+ ATSPI_ROLE_TABLE_ROW_HEADER,
+ ATSPI_ROLE_TEAROFF_MENU_ITEM,
+ ATSPI_ROLE_TERMINAL,
+ ATSPI_ROLE_TEXT,
+ ATSPI_ROLE_TOGGLE_BUTTON,
+ ATSPI_ROLE_TOOL_BAR,
+ ATSPI_ROLE_TOOL_TIP,
+ ATSPI_ROLE_TREE,
+ ATSPI_ROLE_TREE_TABLE,
+ ATSPI_ROLE_UNKNOWN,
+ ATSPI_ROLE_VIEWPORT,
+ ATSPI_ROLE_WINDOW,
+ ATSPI_ROLE_EXTENDED,
+ ATSPI_ROLE_HEADER,
+ ATSPI_ROLE_FOOTER,
+ ATSPI_ROLE_PARAGRAPH,
+ ATSPI_ROLE_RULER,
+ ATSPI_ROLE_APPLICATION,
+ ATSPI_ROLE_AUTOCOMPLETE,
+ ATSPI_ROLE_EDITBAR,
+ ATSPI_ROLE_EMBEDDED,
+ ATSPI_ROLE_ENTRY,
+ ATSPI_ROLE_CHART,
+ ATSPI_ROLE_CAPTION,
+ ATSPI_ROLE_DOCUMENT_FRAME,
+ ATSPI_ROLE_HEADING,
+ ATSPI_ROLE_PAGE,
+ ATSPI_ROLE_SECTION,
+ ATSPI_ROLE_REDUNDANT_OBJECT,
+ ATSPI_ROLE_FORM,
+ ATSPI_ROLE_LINK,
+ ATSPI_ROLE_INPUT_METHOD_WINDOW,
+ ATSPI_ROLE_TABLE_ROW,
+ ATSPI_ROLE_TREE_ITEM,
+ ATSPI_ROLE_DOCUMENT_SPREADSHEET,
+ ATSPI_ROLE_DOCUMENT_PRESENTATION,
+ ATSPI_ROLE_DOCUMENT_TEXT,
+ ATSPI_ROLE_DOCUMENT_WEB,
+ ATSPI_ROLE_DOCUMENT_EMAIL,
+ ATSPI_ROLE_COMMENT,
+ ATSPI_ROLE_LIST_BOX,
+ ATSPI_ROLE_GROUPING,
+ ATSPI_ROLE_IMAGE_MAP,
+ ATSPI_ROLE_NOTIFICATION,
+ ATSPI_ROLE_INFO_BAR,
+ ATSPI_ROLE_LAST_DEFINED,
+} AtspiRole;
+
+/**
+ * ATSPI_ROLE_COUNT:
+ *
+ * One higher than the highest valid value of #AtspiRole.
+ */
+#define ATSPI_ROLE_COUNT (90+1)
+
+typedef enum
+{
+ ATSPI_CACHE_NONE = 0,
+ ATSPI_CACHE_PARENT = 1 << 0,
+ ATSPI_CACHE_CHILDREN = 1 << 1,
+ ATSPI_CACHE_NAME = 1 << 2,
+ ATSPI_CACHE_DESCRIPTION = 1 << 3,
+ ATSPI_CACHE_STATES = 1 << 4,
+ ATSPI_CACHE_ROLE = 1 << 5,
+ ATSPI_CACHE_INTERFACES = 1 << 6,
+ ATSPI_CACHE_ATTRIBUTES = 1 << 7,
+ ATSPI_CACHE_ALL = 0x3fffffff,
+ ATSPI_CACHE_DEFAULT = ATSPI_CACHE_PARENT | ATSPI_CACHE_CHILDREN |
+ ATSPI_CACHE_NAME | ATSPI_CACHE_DESCRIPTION |
+ ATSPI_CACHE_STATES | ATSPI_CACHE_ROLE |
+ ATSPI_CACHE_INTERFACES,
+ ATSPI_CACHE_UNDEFINED = 0x40000000,
+} AtspiCache;
+
+#define ATSPI_DBUS_NAME_REGISTRY "org.a11y.atspi.Registry"
+#define ATSPI_DBUS_PATH_REGISTRY "/org/a11y/atspi/registry"
+#define ATSPI_DBUS_INTERFACE_REGISTRY "org.a11y.atspi.Registry"
+
+#define ATSPI_DBUS_PATH_NULL "/org/a11y/atspi/null"
+#define ATSPI_DBUS_PATH_ROOT "/org/a11y/atspi/accessible/root"
+
+#define ATSPI_DBUS_PATH_DEC "/org/a11y/atspi/registry/deviceeventcontroller"
+#define ATSPI_DBUS_INTERFACE_DEC "org.a11y.atspi.DeviceEventController"
+#define ATSPI_DBUS_INTERFACE_DEVICE_EVENT_LISTENER "org.a11y.atspi.DeviceEventListener"
+
+#define ATSPI_DBUS_INTERFACE_CACHE "org.a11y.atspi.Cache"
+#define ATSPI_DBUS_INTERFACE_ACCESSIBLE "org.a11y.atspi.Accessible"
+#define ATSPI_DBUS_INTERFACE_ACTION "org.a11y.atspi.Action"
+#define ATSPI_DBUS_INTERFACE_APPLICATION "org.a11y.atspi.Application"
+#define ATSPI_DBUS_INTERFACE_COLLECTION "org.a11y.atspi.Collection"
+#define ATSPI_DBUS_INTERFACE_COMPONENT "org.a11y.atspi.Component"
+#define ATSPI_DBUS_INTERFACE_DOCUMENT "org.a11y.atspi.Document"
+#define ATSPI_DBUS_INTERFACE_EDITABLE_TEXT "org.a11y.atspi.EditableText"
+#define ATSPI_DBUS_INTERFACE_EVENT_KEYBOARD "org.a11y.atspi.Event.Keyboard"
+#define ATSPI_DBUS_INTERFACE_EVENT_MOUSE "org.a11y.atspi.Event.Mouse"
+#define ATSPI_DBUS_INTERFACE_EVENT_OBJECT "org.a11y.atspi.Event.Object"
+#define ATSPI_DBUS_INTERFACE_HYPERLINK "org.a11y.atspi.Hyperlink"
+#define ATSPI_DBUS_INTERFACE_HYPERTEXT "org.a11y.atspi.Hypertext"
+#define ATSPI_DBUS_INTERFACE_IMAGE "org.a11y.atspi.Image"
+#define ATSPI_DBUS_INTERFACE_SELECTION "org.a11y.atspi.Selection"
+#define ATSPI_DBUS_INTERFACE_TABLE "org.a11y.atspi.Table"
+#define ATSPI_DBUS_INTERFACE_TEXT "org.a11y.atspi.Text"
+#define ATSPI_DBUS_INTERFACE_VALUE "org.a11y.atspi.Value"
+#define ATSPI_DBUS_INTERFACE_SOCKET "org.a11y.atspi.Socket"
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _ATSPI_CONSTANTS_H_ */
diff --git a/src/3rdparty/atspi2/atspi2.pri b/src/3rdparty/atspi2/atspi2.pri
index 080a805129..1b2ac51b85 100644
--- a/src/3rdparty/atspi2/atspi2.pri
+++ b/src/3rdparty/atspi2/atspi2.pri
@@ -4,3 +4,7 @@ QDBUSXML2CPP_ADAPTOR_HEADER_FLAGS = -i struct_marshallers_p.h
DBUS_INTERFACES = $$PWD/xml/Socket.xml
QDBUSXML2CPP_INTERFACE_HEADER_FLAGS = -i struct_marshallers_p.h
+
+INCLUDEPATH += $$PWD
+HEADERS += $$PWD/atspi/atspi-constants.h
+
diff --git a/src/3rdparty/xcb/README b/src/3rdparty/xcb/README
new file mode 100644
index 0000000000..0a66dafd03
--- /dev/null
+++ b/src/3rdparty/xcb/README
@@ -0,0 +1,13 @@
+Contains the header and sources files from selected xcb libraries:
+
+ libxcb-1.5 together with xcb-proto-1.6 (sync, xfixes, randr sources)
+ libxcb-util-image-0.3.9
+ libxcb-util-keysyms-0.3.9
+ libxcb-util-renderutil-0.3.8
+ libxcb-util-wm-0.3.9
+
+The 'include' directory was obtained by compiling and installing all of the modules.
+They have been tested to run also with libxcb 1.5 (the oldest version we support).
+
+Use the -qt-xcb configure option to use the files instead of system xcb libraries.
+See src/plugins/platforms/xcb/README for details.
diff --git a/src/3rdparty/xcb/include/xcb/randr.h b/src/3rdparty/xcb/include/xcb/randr.h
new file mode 100644
index 0000000000..1035c4043c
--- /dev/null
+++ b/src/3rdparty/xcb/include/xcb/randr.h
@@ -0,0 +1,5020 @@
+/*
+ * This file generated automatically from randr.xml by c_client.py.
+ * Edit at your peril.
+ */
+
+/**
+ * @defgroup XCB_RandR_API XCB RandR API
+ * @brief RandR XCB Protocol Implementation.
+ * @{
+ **/
+
+#ifndef __RANDR_H
+#define __RANDR_H
+
+#include "xcb.h"
+#include "xproto.h"
+#include "render.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define XCB_RANDR_MAJOR_VERSION 1
+#define XCB_RANDR_MINOR_VERSION 3
+
+extern xcb_extension_t xcb_randr_id;
+
+typedef uint32_t xcb_randr_mode_t;
+
+/**
+ * @brief xcb_randr_mode_iterator_t
+ **/
+typedef struct xcb_randr_mode_iterator_t {
+ xcb_randr_mode_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_randr_mode_iterator_t;
+
+typedef uint32_t xcb_randr_crtc_t;
+
+/**
+ * @brief xcb_randr_crtc_iterator_t
+ **/
+typedef struct xcb_randr_crtc_iterator_t {
+ xcb_randr_crtc_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_randr_crtc_iterator_t;
+
+typedef uint32_t xcb_randr_output_t;
+
+/**
+ * @brief xcb_randr_output_iterator_t
+ **/
+typedef struct xcb_randr_output_iterator_t {
+ xcb_randr_output_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_randr_output_iterator_t;
+
+/** Opcode for xcb_randr_bad_output. */
+#define XCB_RANDR_BAD_OUTPUT 0
+
+/**
+ * @brief xcb_randr_bad_output_error_t
+ **/
+typedef struct xcb_randr_bad_output_error_t {
+ uint8_t response_type; /**< */
+ uint8_t error_code; /**< */
+ uint16_t sequence; /**< */
+} xcb_randr_bad_output_error_t;
+
+/** Opcode for xcb_randr_bad_crtc. */
+#define XCB_RANDR_BAD_CRTC 1
+
+/**
+ * @brief xcb_randr_bad_crtc_error_t
+ **/
+typedef struct xcb_randr_bad_crtc_error_t {
+ uint8_t response_type; /**< */
+ uint8_t error_code; /**< */
+ uint16_t sequence; /**< */
+} xcb_randr_bad_crtc_error_t;
+
+/** Opcode for xcb_randr_bad_mode. */
+#define XCB_RANDR_BAD_MODE 2
+
+/**
+ * @brief xcb_randr_bad_mode_error_t
+ **/
+typedef struct xcb_randr_bad_mode_error_t {
+ uint8_t response_type; /**< */
+ uint8_t error_code; /**< */
+ uint16_t sequence; /**< */
+} xcb_randr_bad_mode_error_t;
+
+typedef enum xcb_randr_rotation_t {
+ XCB_RANDR_ROTATION_ROTATE_0 = 1,
+ XCB_RANDR_ROTATION_ROTATE_90 = 2,
+ XCB_RANDR_ROTATION_ROTATE_180 = 4,
+ XCB_RANDR_ROTATION_ROTATE_270 = 8,
+ XCB_RANDR_ROTATION_REFLECT_X = 16,
+ XCB_RANDR_ROTATION_REFLECT_Y = 32
+} xcb_randr_rotation_t;
+
+/**
+ * @brief xcb_randr_screen_size_t
+ **/
+typedef struct xcb_randr_screen_size_t {
+ uint16_t width; /**< */
+ uint16_t height; /**< */
+ uint16_t mwidth; /**< */
+ uint16_t mheight; /**< */
+} xcb_randr_screen_size_t;
+
+/**
+ * @brief xcb_randr_screen_size_iterator_t
+ **/
+typedef struct xcb_randr_screen_size_iterator_t {
+ xcb_randr_screen_size_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_randr_screen_size_iterator_t;
+
+/**
+ * @brief xcb_randr_refresh_rates_t
+ **/
+typedef struct xcb_randr_refresh_rates_t {
+ uint16_t nRates; /**< */
+} xcb_randr_refresh_rates_t;
+
+/**
+ * @brief xcb_randr_refresh_rates_iterator_t
+ **/
+typedef struct xcb_randr_refresh_rates_iterator_t {
+ xcb_randr_refresh_rates_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_randr_refresh_rates_iterator_t;
+
+/**
+ * @brief xcb_randr_query_version_cookie_t
+ **/
+typedef struct xcb_randr_query_version_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_randr_query_version_cookie_t;
+
+/** Opcode for xcb_randr_query_version. */
+#define XCB_RANDR_QUERY_VERSION 0
+
+/**
+ * @brief xcb_randr_query_version_request_t
+ **/
+typedef struct xcb_randr_query_version_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ uint32_t major_version; /**< */
+ uint32_t minor_version; /**< */
+} xcb_randr_query_version_request_t;
+
+/**
+ * @brief xcb_randr_query_version_reply_t
+ **/
+typedef struct xcb_randr_query_version_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ uint32_t major_version; /**< */
+ uint32_t minor_version; /**< */
+ uint8_t pad1[16]; /**< */
+} xcb_randr_query_version_reply_t;
+
+typedef enum xcb_randr_set_config_t {
+ XCB_RANDR_SET_CONFIG_SUCCESS = 0,
+ XCB_RANDR_SET_CONFIG_INVALID_CONFIG_TIME = 1,
+ XCB_RANDR_SET_CONFIG_INVALID_TIME = 2,
+ XCB_RANDR_SET_CONFIG_FAILED = 3
+} xcb_randr_set_config_t;
+
+/**
+ * @brief xcb_randr_set_screen_config_cookie_t
+ **/
+typedef struct xcb_randr_set_screen_config_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_randr_set_screen_config_cookie_t;
+
+/** Opcode for xcb_randr_set_screen_config. */
+#define XCB_RANDR_SET_SCREEN_CONFIG 2
+
+/**
+ * @brief xcb_randr_set_screen_config_request_t
+ **/
+typedef struct xcb_randr_set_screen_config_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_window_t window; /**< */
+ xcb_timestamp_t timestamp; /**< */
+ xcb_timestamp_t config_timestamp; /**< */
+ uint16_t sizeID; /**< */
+ uint16_t rotation; /**< */
+ uint16_t rate; /**< */
+ uint8_t pad0[2]; /**< */
+} xcb_randr_set_screen_config_request_t;
+
+/**
+ * @brief xcb_randr_set_screen_config_reply_t
+ **/
+typedef struct xcb_randr_set_screen_config_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t status; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ xcb_timestamp_t new_timestamp; /**< */
+ xcb_timestamp_t config_timestamp; /**< */
+ xcb_window_t root; /**< */
+ uint16_t subpixel_order; /**< */
+ uint8_t pad0[10]; /**< */
+} xcb_randr_set_screen_config_reply_t;
+
+typedef enum xcb_randr_notify_mask_t {
+ XCB_RANDR_NOTIFY_MASK_SCREEN_CHANGE = 1,
+ XCB_RANDR_NOTIFY_MASK_CRTC_CHANGE = 2,
+ XCB_RANDR_NOTIFY_MASK_OUTPUT_CHANGE = 4,
+ XCB_RANDR_NOTIFY_MASK_OUTPUT_PROPERTY = 8
+} xcb_randr_notify_mask_t;
+
+/** Opcode for xcb_randr_select_input. */
+#define XCB_RANDR_SELECT_INPUT 4
+
+/**
+ * @brief xcb_randr_select_input_request_t
+ **/
+typedef struct xcb_randr_select_input_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_window_t window; /**< */
+ uint16_t enable; /**< */
+ uint8_t pad0[2]; /**< */
+} xcb_randr_select_input_request_t;
+
+/**
+ * @brief xcb_randr_get_screen_info_cookie_t
+ **/
+typedef struct xcb_randr_get_screen_info_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_randr_get_screen_info_cookie_t;
+
+/** Opcode for xcb_randr_get_screen_info. */
+#define XCB_RANDR_GET_SCREEN_INFO 5
+
+/**
+ * @brief xcb_randr_get_screen_info_request_t
+ **/
+typedef struct xcb_randr_get_screen_info_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_window_t window; /**< */
+} xcb_randr_get_screen_info_request_t;
+
+/**
+ * @brief xcb_randr_get_screen_info_reply_t
+ **/
+typedef struct xcb_randr_get_screen_info_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t rotations; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ xcb_window_t root; /**< */
+ xcb_timestamp_t timestamp; /**< */
+ xcb_timestamp_t config_timestamp; /**< */
+ uint16_t nSizes; /**< */
+ uint16_t sizeID; /**< */
+ uint16_t rotation; /**< */
+ uint16_t rate; /**< */
+ uint16_t nInfo; /**< */
+ uint8_t pad0[2]; /**< */
+} xcb_randr_get_screen_info_reply_t;
+
+/**
+ * @brief xcb_randr_get_screen_size_range_cookie_t
+ **/
+typedef struct xcb_randr_get_screen_size_range_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_randr_get_screen_size_range_cookie_t;
+
+/** Opcode for xcb_randr_get_screen_size_range. */
+#define XCB_RANDR_GET_SCREEN_SIZE_RANGE 6
+
+/**
+ * @brief xcb_randr_get_screen_size_range_request_t
+ **/
+typedef struct xcb_randr_get_screen_size_range_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_window_t window; /**< */
+} xcb_randr_get_screen_size_range_request_t;
+
+/**
+ * @brief xcb_randr_get_screen_size_range_reply_t
+ **/
+typedef struct xcb_randr_get_screen_size_range_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ uint16_t min_width; /**< */
+ uint16_t min_height; /**< */
+ uint16_t max_width; /**< */
+ uint16_t max_height; /**< */
+ uint8_t pad1[16]; /**< */
+} xcb_randr_get_screen_size_range_reply_t;
+
+/** Opcode for xcb_randr_set_screen_size. */
+#define XCB_RANDR_SET_SCREEN_SIZE 7
+
+/**
+ * @brief xcb_randr_set_screen_size_request_t
+ **/
+typedef struct xcb_randr_set_screen_size_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_window_t window; /**< */
+ uint16_t width; /**< */
+ uint16_t height; /**< */
+ uint32_t mm_width; /**< */
+ uint32_t mm_height; /**< */
+} xcb_randr_set_screen_size_request_t;
+
+typedef enum xcb_randr_mode_flag_t {
+ XCB_RANDR_MODE_FLAG_HSYNC_POSITIVE = 1,
+ XCB_RANDR_MODE_FLAG_HSYNC_NEGATIVE = 2,
+ XCB_RANDR_MODE_FLAG_VSYNC_POSITIVE = 4,
+ XCB_RANDR_MODE_FLAG_VSYNC_NEGATIVE = 8,
+ XCB_RANDR_MODE_FLAG_INTERLACE = 16,
+ XCB_RANDR_MODE_FLAG_DOUBLE_SCAN = 32,
+ XCB_RANDR_MODE_FLAG_CSYNC = 64,
+ XCB_RANDR_MODE_FLAG_CSYNC_POSITIVE = 128,
+ XCB_RANDR_MODE_FLAG_CSYNC_NEGATIVE = 256,
+ XCB_RANDR_MODE_FLAG_HSKEW_PRESENT = 512,
+ XCB_RANDR_MODE_FLAG_BCAST = 1024,
+ XCB_RANDR_MODE_FLAG_PIXEL_MULTIPLEX = 2048,
+ XCB_RANDR_MODE_FLAG_DOUBLE_CLOCK = 4096,
+ XCB_RANDR_MODE_FLAG_HALVE_CLOCK = 8192
+} xcb_randr_mode_flag_t;
+
+/**
+ * @brief xcb_randr_mode_info_t
+ **/
+typedef struct xcb_randr_mode_info_t {
+ uint32_t id; /**< */
+ uint16_t width; /**< */
+ uint16_t height; /**< */
+ uint32_t dot_clock; /**< */
+ uint16_t hsync_start; /**< */
+ uint16_t hsync_end; /**< */
+ uint16_t htotal; /**< */
+ uint16_t hskew; /**< */
+ uint16_t vsync_start; /**< */
+ uint16_t vsync_end; /**< */
+ uint16_t vtotal; /**< */
+ uint16_t name_len; /**< */
+ uint32_t mode_flags; /**< */
+} xcb_randr_mode_info_t;
+
+/**
+ * @brief xcb_randr_mode_info_iterator_t
+ **/
+typedef struct xcb_randr_mode_info_iterator_t {
+ xcb_randr_mode_info_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_randr_mode_info_iterator_t;
+
+/**
+ * @brief xcb_randr_get_screen_resources_cookie_t
+ **/
+typedef struct xcb_randr_get_screen_resources_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_randr_get_screen_resources_cookie_t;
+
+/** Opcode for xcb_randr_get_screen_resources. */
+#define XCB_RANDR_GET_SCREEN_RESOURCES 8
+
+/**
+ * @brief xcb_randr_get_screen_resources_request_t
+ **/
+typedef struct xcb_randr_get_screen_resources_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_window_t window; /**< */
+} xcb_randr_get_screen_resources_request_t;
+
+/**
+ * @brief xcb_randr_get_screen_resources_reply_t
+ **/
+typedef struct xcb_randr_get_screen_resources_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ xcb_timestamp_t timestamp; /**< */
+ xcb_timestamp_t config_timestamp; /**< */
+ uint16_t num_crtcs; /**< */
+ uint16_t num_outputs; /**< */
+ uint16_t num_modes; /**< */
+ uint16_t names_len; /**< */
+ uint8_t pad1[8]; /**< */
+} xcb_randr_get_screen_resources_reply_t;
+
+typedef enum xcb_randr_connection_t {
+ XCB_RANDR_CONNECTION_CONNECTED,
+ XCB_RANDR_CONNECTION_DISCONNECTED,
+ XCB_RANDR_CONNECTION_UNKNOWN
+} xcb_randr_connection_t;
+
+/**
+ * @brief xcb_randr_get_output_info_cookie_t
+ **/
+typedef struct xcb_randr_get_output_info_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_randr_get_output_info_cookie_t;
+
+/** Opcode for xcb_randr_get_output_info. */
+#define XCB_RANDR_GET_OUTPUT_INFO 9
+
+/**
+ * @brief xcb_randr_get_output_info_request_t
+ **/
+typedef struct xcb_randr_get_output_info_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_randr_output_t output; /**< */
+ xcb_timestamp_t config_timestamp; /**< */
+} xcb_randr_get_output_info_request_t;
+
+/**
+ * @brief xcb_randr_get_output_info_reply_t
+ **/
+typedef struct xcb_randr_get_output_info_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t status; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ xcb_timestamp_t timestamp; /**< */
+ xcb_randr_crtc_t crtc; /**< */
+ uint32_t mm_width; /**< */
+ uint32_t mm_height; /**< */
+ uint8_t connection; /**< */
+ uint8_t subpixel_order; /**< */
+ uint16_t num_crtcs; /**< */
+ uint16_t num_modes; /**< */
+ uint16_t num_preferred; /**< */
+ uint16_t num_clones; /**< */
+ uint16_t name_len; /**< */
+} xcb_randr_get_output_info_reply_t;
+
+/**
+ * @brief xcb_randr_list_output_properties_cookie_t
+ **/
+typedef struct xcb_randr_list_output_properties_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_randr_list_output_properties_cookie_t;
+
+/** Opcode for xcb_randr_list_output_properties. */
+#define XCB_RANDR_LIST_OUTPUT_PROPERTIES 10
+
+/**
+ * @brief xcb_randr_list_output_properties_request_t
+ **/
+typedef struct xcb_randr_list_output_properties_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_randr_output_t output; /**< */
+} xcb_randr_list_output_properties_request_t;
+
+/**
+ * @brief xcb_randr_list_output_properties_reply_t
+ **/
+typedef struct xcb_randr_list_output_properties_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ uint16_t num_atoms; /**< */
+ uint8_t pad1[22]; /**< */
+} xcb_randr_list_output_properties_reply_t;
+
+/**
+ * @brief xcb_randr_query_output_property_cookie_t
+ **/
+typedef struct xcb_randr_query_output_property_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_randr_query_output_property_cookie_t;
+
+/** Opcode for xcb_randr_query_output_property. */
+#define XCB_RANDR_QUERY_OUTPUT_PROPERTY 11
+
+/**
+ * @brief xcb_randr_query_output_property_request_t
+ **/
+typedef struct xcb_randr_query_output_property_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_randr_output_t output; /**< */
+ xcb_atom_t property; /**< */
+} xcb_randr_query_output_property_request_t;
+
+/**
+ * @brief xcb_randr_query_output_property_reply_t
+ **/
+typedef struct xcb_randr_query_output_property_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ uint8_t pending; /**< */
+ uint8_t range; /**< */
+ uint8_t immutable; /**< */
+ uint8_t pad1[21]; /**< */
+} xcb_randr_query_output_property_reply_t;
+
+/** Opcode for xcb_randr_configure_output_property. */
+#define XCB_RANDR_CONFIGURE_OUTPUT_PROPERTY 12
+
+/**
+ * @brief xcb_randr_configure_output_property_request_t
+ **/
+typedef struct xcb_randr_configure_output_property_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_randr_output_t output; /**< */
+ xcb_atom_t property; /**< */
+ uint8_t pending; /**< */
+ uint8_t range; /**< */
+ uint8_t pad0[2]; /**< */
+} xcb_randr_configure_output_property_request_t;
+
+/** Opcode for xcb_randr_change_output_property. */
+#define XCB_RANDR_CHANGE_OUTPUT_PROPERTY 13
+
+/**
+ * @brief xcb_randr_change_output_property_request_t
+ **/
+typedef struct xcb_randr_change_output_property_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_randr_output_t output; /**< */
+ xcb_atom_t property; /**< */
+ xcb_atom_t type; /**< */
+ uint8_t format; /**< */
+ uint8_t mode; /**< */
+ uint8_t pad0[2]; /**< */
+ uint32_t num_units; /**< */
+} xcb_randr_change_output_property_request_t;
+
+/** Opcode for xcb_randr_delete_output_property. */
+#define XCB_RANDR_DELETE_OUTPUT_PROPERTY 14
+
+/**
+ * @brief xcb_randr_delete_output_property_request_t
+ **/
+typedef struct xcb_randr_delete_output_property_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_randr_output_t output; /**< */
+ xcb_atom_t property; /**< */
+} xcb_randr_delete_output_property_request_t;
+
+/**
+ * @brief xcb_randr_get_output_property_cookie_t
+ **/
+typedef struct xcb_randr_get_output_property_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_randr_get_output_property_cookie_t;
+
+/** Opcode for xcb_randr_get_output_property. */
+#define XCB_RANDR_GET_OUTPUT_PROPERTY 15
+
+/**
+ * @brief xcb_randr_get_output_property_request_t
+ **/
+typedef struct xcb_randr_get_output_property_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_randr_output_t output; /**< */
+ xcb_atom_t property; /**< */
+ xcb_atom_t type; /**< */
+ uint32_t long_offset; /**< */
+ uint32_t long_length; /**< */
+ uint8_t _delete; /**< */
+ uint8_t pending; /**< */
+ uint8_t pad0[2]; /**< */
+} xcb_randr_get_output_property_request_t;
+
+/**
+ * @brief xcb_randr_get_output_property_reply_t
+ **/
+typedef struct xcb_randr_get_output_property_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t format; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ xcb_atom_t type; /**< */
+ uint32_t bytes_after; /**< */
+ uint32_t num_items; /**< */
+ uint8_t pad0[12]; /**< */
+} xcb_randr_get_output_property_reply_t;
+
+/**
+ * @brief xcb_randr_create_mode_cookie_t
+ **/
+typedef struct xcb_randr_create_mode_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_randr_create_mode_cookie_t;
+
+/** Opcode for xcb_randr_create_mode. */
+#define XCB_RANDR_CREATE_MODE 16
+
+/**
+ * @brief xcb_randr_create_mode_request_t
+ **/
+typedef struct xcb_randr_create_mode_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_window_t window; /**< */
+ xcb_randr_mode_info_t mode_info; /**< */
+} xcb_randr_create_mode_request_t;
+
+/**
+ * @brief xcb_randr_create_mode_reply_t
+ **/
+typedef struct xcb_randr_create_mode_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ xcb_randr_mode_t mode; /**< */
+ uint8_t pad1[20]; /**< */
+} xcb_randr_create_mode_reply_t;
+
+/** Opcode for xcb_randr_destroy_mode. */
+#define XCB_RANDR_DESTROY_MODE 17
+
+/**
+ * @brief xcb_randr_destroy_mode_request_t
+ **/
+typedef struct xcb_randr_destroy_mode_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_randr_mode_t mode; /**< */
+} xcb_randr_destroy_mode_request_t;
+
+/** Opcode for xcb_randr_add_output_mode. */
+#define XCB_RANDR_ADD_OUTPUT_MODE 18
+
+/**
+ * @brief xcb_randr_add_output_mode_request_t
+ **/
+typedef struct xcb_randr_add_output_mode_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_randr_output_t output; /**< */
+ xcb_randr_mode_t mode; /**< */
+} xcb_randr_add_output_mode_request_t;
+
+/** Opcode for xcb_randr_delete_output_mode. */
+#define XCB_RANDR_DELETE_OUTPUT_MODE 19
+
+/**
+ * @brief xcb_randr_delete_output_mode_request_t
+ **/
+typedef struct xcb_randr_delete_output_mode_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_randr_output_t output; /**< */
+ xcb_randr_mode_t mode; /**< */
+} xcb_randr_delete_output_mode_request_t;
+
+/**
+ * @brief xcb_randr_get_crtc_info_cookie_t
+ **/
+typedef struct xcb_randr_get_crtc_info_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_randr_get_crtc_info_cookie_t;
+
+/** Opcode for xcb_randr_get_crtc_info. */
+#define XCB_RANDR_GET_CRTC_INFO 20
+
+/**
+ * @brief xcb_randr_get_crtc_info_request_t
+ **/
+typedef struct xcb_randr_get_crtc_info_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_randr_crtc_t crtc; /**< */
+ xcb_timestamp_t config_timestamp; /**< */
+} xcb_randr_get_crtc_info_request_t;
+
+/**
+ * @brief xcb_randr_get_crtc_info_reply_t
+ **/
+typedef struct xcb_randr_get_crtc_info_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t status; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ xcb_timestamp_t timestamp; /**< */
+ int16_t x; /**< */
+ int16_t y; /**< */
+ uint16_t width; /**< */
+ uint16_t height; /**< */
+ xcb_randr_mode_t mode; /**< */
+ uint16_t rotation; /**< */
+ uint16_t rotations; /**< */
+ uint16_t num_outputs; /**< */
+ uint16_t num_possible_outputs; /**< */
+} xcb_randr_get_crtc_info_reply_t;
+
+/**
+ * @brief xcb_randr_set_crtc_config_cookie_t
+ **/
+typedef struct xcb_randr_set_crtc_config_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_randr_set_crtc_config_cookie_t;
+
+/** Opcode for xcb_randr_set_crtc_config. */
+#define XCB_RANDR_SET_CRTC_CONFIG 21
+
+/**
+ * @brief xcb_randr_set_crtc_config_request_t
+ **/
+typedef struct xcb_randr_set_crtc_config_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_randr_crtc_t crtc; /**< */
+ xcb_timestamp_t timestamp; /**< */
+ xcb_timestamp_t config_timestamp; /**< */
+ int16_t x; /**< */
+ int16_t y; /**< */
+ xcb_randr_mode_t mode; /**< */
+ uint16_t rotation; /**< */
+ uint8_t pad0[2]; /**< */
+} xcb_randr_set_crtc_config_request_t;
+
+/**
+ * @brief xcb_randr_set_crtc_config_reply_t
+ **/
+typedef struct xcb_randr_set_crtc_config_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t status; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ xcb_timestamp_t timestamp; /**< */
+ uint8_t pad0[20]; /**< */
+} xcb_randr_set_crtc_config_reply_t;
+
+/**
+ * @brief xcb_randr_get_crtc_gamma_size_cookie_t
+ **/
+typedef struct xcb_randr_get_crtc_gamma_size_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_randr_get_crtc_gamma_size_cookie_t;
+
+/** Opcode for xcb_randr_get_crtc_gamma_size. */
+#define XCB_RANDR_GET_CRTC_GAMMA_SIZE 22
+
+/**
+ * @brief xcb_randr_get_crtc_gamma_size_request_t
+ **/
+typedef struct xcb_randr_get_crtc_gamma_size_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_randr_crtc_t crtc; /**< */
+} xcb_randr_get_crtc_gamma_size_request_t;
+
+/**
+ * @brief xcb_randr_get_crtc_gamma_size_reply_t
+ **/
+typedef struct xcb_randr_get_crtc_gamma_size_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ uint16_t size; /**< */
+ uint8_t pad1[22]; /**< */
+} xcb_randr_get_crtc_gamma_size_reply_t;
+
+/**
+ * @brief xcb_randr_get_crtc_gamma_cookie_t
+ **/
+typedef struct xcb_randr_get_crtc_gamma_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_randr_get_crtc_gamma_cookie_t;
+
+/** Opcode for xcb_randr_get_crtc_gamma. */
+#define XCB_RANDR_GET_CRTC_GAMMA 23
+
+/**
+ * @brief xcb_randr_get_crtc_gamma_request_t
+ **/
+typedef struct xcb_randr_get_crtc_gamma_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_randr_crtc_t crtc; /**< */
+} xcb_randr_get_crtc_gamma_request_t;
+
+/**
+ * @brief xcb_randr_get_crtc_gamma_reply_t
+ **/
+typedef struct xcb_randr_get_crtc_gamma_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ uint16_t size; /**< */
+ uint8_t pad1[22]; /**< */
+} xcb_randr_get_crtc_gamma_reply_t;
+
+/** Opcode for xcb_randr_set_crtc_gamma. */
+#define XCB_RANDR_SET_CRTC_GAMMA 24
+
+/**
+ * @brief xcb_randr_set_crtc_gamma_request_t
+ **/
+typedef struct xcb_randr_set_crtc_gamma_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_randr_crtc_t crtc; /**< */
+ uint16_t size; /**< */
+ uint8_t pad0[2]; /**< */
+} xcb_randr_set_crtc_gamma_request_t;
+
+/**
+ * @brief xcb_randr_get_screen_resources_current_cookie_t
+ **/
+typedef struct xcb_randr_get_screen_resources_current_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_randr_get_screen_resources_current_cookie_t;
+
+/** Opcode for xcb_randr_get_screen_resources_current. */
+#define XCB_RANDR_GET_SCREEN_RESOURCES_CURRENT 25
+
+/**
+ * @brief xcb_randr_get_screen_resources_current_request_t
+ **/
+typedef struct xcb_randr_get_screen_resources_current_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_window_t window; /**< */
+} xcb_randr_get_screen_resources_current_request_t;
+
+/**
+ * @brief xcb_randr_get_screen_resources_current_reply_t
+ **/
+typedef struct xcb_randr_get_screen_resources_current_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ xcb_timestamp_t timestamp; /**< */
+ xcb_timestamp_t config_timestamp; /**< */
+ uint16_t num_crtcs; /**< */
+ uint16_t num_outputs; /**< */
+ uint16_t num_modes; /**< */
+ uint16_t names_len; /**< */
+ uint8_t pad1[8]; /**< */
+} xcb_randr_get_screen_resources_current_reply_t;
+
+/** Opcode for xcb_randr_set_crtc_transform. */
+#define XCB_RANDR_SET_CRTC_TRANSFORM 26
+
+/**
+ * @brief xcb_randr_set_crtc_transform_request_t
+ **/
+typedef struct xcb_randr_set_crtc_transform_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_randr_crtc_t crtc; /**< */
+ xcb_render_transform_t transform; /**< */
+ uint16_t filter_len; /**< */
+ uint8_t pad0[2]; /**< */
+} xcb_randr_set_crtc_transform_request_t;
+
+/**
+ * @brief xcb_randr_get_crtc_transform_cookie_t
+ **/
+typedef struct xcb_randr_get_crtc_transform_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_randr_get_crtc_transform_cookie_t;
+
+/** Opcode for xcb_randr_get_crtc_transform. */
+#define XCB_RANDR_GET_CRTC_TRANSFORM 27
+
+/**
+ * @brief xcb_randr_get_crtc_transform_request_t
+ **/
+typedef struct xcb_randr_get_crtc_transform_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_randr_crtc_t crtc; /**< */
+} xcb_randr_get_crtc_transform_request_t;
+
+/**
+ * @brief xcb_randr_get_crtc_transform_reply_t
+ **/
+typedef struct xcb_randr_get_crtc_transform_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ xcb_render_transform_t pending_transform; /**< */
+ uint8_t has_transforms; /**< */
+ uint8_t pad1[3]; /**< */
+ xcb_render_transform_t current_transform; /**< */
+ uint8_t pad2[4]; /**< */
+ uint16_t pending_len; /**< */
+ uint16_t pending_nparams; /**< */
+ uint16_t current_len; /**< */
+ uint16_t current_nparams; /**< */
+} xcb_randr_get_crtc_transform_reply_t;
+
+/**
+ * @brief xcb_randr_get_panning_cookie_t
+ **/
+typedef struct xcb_randr_get_panning_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_randr_get_panning_cookie_t;
+
+/** Opcode for xcb_randr_get_panning. */
+#define XCB_RANDR_GET_PANNING 28
+
+/**
+ * @brief xcb_randr_get_panning_request_t
+ **/
+typedef struct xcb_randr_get_panning_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_randr_crtc_t crtc; /**< */
+} xcb_randr_get_panning_request_t;
+
+/**
+ * @brief xcb_randr_get_panning_reply_t
+ **/
+typedef struct xcb_randr_get_panning_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t status; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ xcb_timestamp_t timestamp; /**< */
+ uint16_t left; /**< */
+ uint16_t top; /**< */
+ uint16_t width; /**< */
+ uint16_t height; /**< */
+ uint16_t track_left; /**< */
+ uint16_t track_top; /**< */
+ uint16_t track_width; /**< */
+ uint16_t track_height; /**< */
+ int16_t border_left; /**< */
+ int16_t border_top; /**< */
+ int16_t border_right; /**< */
+ int16_t border_bottom; /**< */
+} xcb_randr_get_panning_reply_t;
+
+/**
+ * @brief xcb_randr_set_panning_cookie_t
+ **/
+typedef struct xcb_randr_set_panning_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_randr_set_panning_cookie_t;
+
+/** Opcode for xcb_randr_set_panning. */
+#define XCB_RANDR_SET_PANNING 29
+
+/**
+ * @brief xcb_randr_set_panning_request_t
+ **/
+typedef struct xcb_randr_set_panning_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_randr_crtc_t crtc; /**< */
+ xcb_timestamp_t timestamp; /**< */
+ uint16_t left; /**< */
+ uint16_t top; /**< */
+ uint16_t width; /**< */
+ uint16_t height; /**< */
+ uint16_t track_left; /**< */
+ uint16_t track_top; /**< */
+ uint16_t track_width; /**< */
+ uint16_t track_height; /**< */
+ int16_t border_left; /**< */
+ int16_t border_top; /**< */
+ int16_t border_right; /**< */
+ int16_t border_bottom; /**< */
+} xcb_randr_set_panning_request_t;
+
+/**
+ * @brief xcb_randr_set_panning_reply_t
+ **/
+typedef struct xcb_randr_set_panning_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t status; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ xcb_timestamp_t timestamp; /**< */
+} xcb_randr_set_panning_reply_t;
+
+/** Opcode for xcb_randr_set_output_primary. */
+#define XCB_RANDR_SET_OUTPUT_PRIMARY 30
+
+/**
+ * @brief xcb_randr_set_output_primary_request_t
+ **/
+typedef struct xcb_randr_set_output_primary_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_window_t window; /**< */
+ xcb_randr_output_t output; /**< */
+} xcb_randr_set_output_primary_request_t;
+
+/**
+ * @brief xcb_randr_get_output_primary_cookie_t
+ **/
+typedef struct xcb_randr_get_output_primary_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_randr_get_output_primary_cookie_t;
+
+/** Opcode for xcb_randr_get_output_primary. */
+#define XCB_RANDR_GET_OUTPUT_PRIMARY 31
+
+/**
+ * @brief xcb_randr_get_output_primary_request_t
+ **/
+typedef struct xcb_randr_get_output_primary_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_window_t window; /**< */
+} xcb_randr_get_output_primary_request_t;
+
+/**
+ * @brief xcb_randr_get_output_primary_reply_t
+ **/
+typedef struct xcb_randr_get_output_primary_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ xcb_randr_output_t output; /**< */
+} xcb_randr_get_output_primary_reply_t;
+
+/** Opcode for xcb_randr_screen_change_notify. */
+#define XCB_RANDR_SCREEN_CHANGE_NOTIFY 0
+
+/**
+ * @brief xcb_randr_screen_change_notify_event_t
+ **/
+typedef struct xcb_randr_screen_change_notify_event_t {
+ uint8_t response_type; /**< */
+ uint8_t rotation; /**< */
+ uint16_t sequence; /**< */
+ xcb_timestamp_t timestamp; /**< */
+ xcb_timestamp_t config_timestamp; /**< */
+ xcb_window_t root; /**< */
+ xcb_window_t request_window; /**< */
+ uint16_t sizeID; /**< */
+ uint16_t subpixel_order; /**< */
+ uint16_t width; /**< */
+ uint16_t height; /**< */
+ uint16_t mwidth; /**< */
+ uint16_t mheight; /**< */
+} xcb_randr_screen_change_notify_event_t;
+
+typedef enum xcb_randr_notify_t {
+ XCB_RANDR_NOTIFY_CRTC_CHANGE = 0,
+ XCB_RANDR_NOTIFY_OUTPUT_CHANGE = 1,
+ XCB_RANDR_NOTIFY_OUTPUT_PROPERTY = 2
+} xcb_randr_notify_t;
+
+/**
+ * @brief xcb_randr_crtc_change_t
+ **/
+typedef struct xcb_randr_crtc_change_t {
+ xcb_timestamp_t timestamp; /**< */
+ xcb_window_t window; /**< */
+ xcb_randr_crtc_t crtc; /**< */
+ xcb_randr_mode_t mode; /**< */
+ uint16_t rotation; /**< */
+ uint8_t pad0[2]; /**< */
+ int16_t x; /**< */
+ int16_t y; /**< */
+ uint16_t width; /**< */
+ uint16_t height; /**< */
+} xcb_randr_crtc_change_t;
+
+/**
+ * @brief xcb_randr_crtc_change_iterator_t
+ **/
+typedef struct xcb_randr_crtc_change_iterator_t {
+ xcb_randr_crtc_change_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_randr_crtc_change_iterator_t;
+
+/**
+ * @brief xcb_randr_output_change_t
+ **/
+typedef struct xcb_randr_output_change_t {
+ xcb_timestamp_t timestamp; /**< */
+ xcb_timestamp_t config_timestamp; /**< */
+ xcb_window_t window; /**< */
+ xcb_randr_output_t output; /**< */
+ xcb_randr_crtc_t crtc; /**< */
+ xcb_randr_mode_t mode; /**< */
+ uint16_t rotation; /**< */
+ uint8_t connection; /**< */
+ uint8_t subpixel_order; /**< */
+} xcb_randr_output_change_t;
+
+/**
+ * @brief xcb_randr_output_change_iterator_t
+ **/
+typedef struct xcb_randr_output_change_iterator_t {
+ xcb_randr_output_change_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_randr_output_change_iterator_t;
+
+/**
+ * @brief xcb_randr_output_property_t
+ **/
+typedef struct xcb_randr_output_property_t {
+ xcb_window_t window; /**< */
+ xcb_randr_output_t output; /**< */
+ xcb_atom_t atom; /**< */
+ xcb_timestamp_t timestamp; /**< */
+ uint8_t status; /**< */
+ uint8_t pad0[11]; /**< */
+} xcb_randr_output_property_t;
+
+/**
+ * @brief xcb_randr_output_property_iterator_t
+ **/
+typedef struct xcb_randr_output_property_iterator_t {
+ xcb_randr_output_property_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_randr_output_property_iterator_t;
+
+/**
+ * @brief xcb_randr_notify_data_t
+ **/
+typedef union xcb_randr_notify_data_t {
+ xcb_randr_crtc_change_t cc; /**< */
+ xcb_randr_output_change_t oc; /**< */
+ xcb_randr_output_property_t op; /**< */
+} xcb_randr_notify_data_t;
+
+/**
+ * @brief xcb_randr_notify_data_iterator_t
+ **/
+typedef struct xcb_randr_notify_data_iterator_t {
+ xcb_randr_notify_data_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_randr_notify_data_iterator_t;
+
+/** Opcode for xcb_randr_notify. */
+#define XCB_RANDR_NOTIFY 1
+
+/**
+ * @brief xcb_randr_notify_event_t
+ **/
+typedef struct xcb_randr_notify_event_t {
+ uint8_t response_type; /**< */
+ uint8_t subCode; /**< */
+ uint16_t sequence; /**< */
+ xcb_randr_notify_data_t u; /**< */
+} xcb_randr_notify_event_t;
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_randr_mode_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_randr_mode_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_mode_next
+ **
+ ** @param xcb_randr_mode_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_mode_next (xcb_randr_mode_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_randr_mode_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_mode_end
+ **
+ ** @param xcb_randr_mode_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_mode_end (xcb_randr_mode_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_randr_crtc_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_randr_crtc_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_crtc_next
+ **
+ ** @param xcb_randr_crtc_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_crtc_next (xcb_randr_crtc_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_randr_crtc_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_crtc_end
+ **
+ ** @param xcb_randr_crtc_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_crtc_end (xcb_randr_crtc_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_randr_output_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_randr_output_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_output_next
+ **
+ ** @param xcb_randr_output_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_output_next (xcb_randr_output_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_randr_output_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_output_end
+ **
+ ** @param xcb_randr_output_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_output_end (xcb_randr_output_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_randr_screen_size_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_randr_screen_size_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_screen_size_next
+ **
+ ** @param xcb_randr_screen_size_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_screen_size_next (xcb_randr_screen_size_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_randr_screen_size_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_screen_size_end
+ **
+ ** @param xcb_randr_screen_size_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_screen_size_end (xcb_randr_screen_size_iterator_t i /**< */);
+
+
+/*****************************************************************************
+ **
+ ** uint16_t * xcb_randr_refresh_rates_rates
+ **
+ ** @param const xcb_randr_refresh_rates_t *R
+ ** @returns uint16_t *
+ **
+ *****************************************************************************/
+
+uint16_t *
+xcb_randr_refresh_rates_rates (const xcb_randr_refresh_rates_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_refresh_rates_rates_length
+ **
+ ** @param const xcb_randr_refresh_rates_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_refresh_rates_rates_length (const xcb_randr_refresh_rates_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_refresh_rates_rates_end
+ **
+ ** @param const xcb_randr_refresh_rates_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_refresh_rates_rates_end (const xcb_randr_refresh_rates_t *R /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_randr_refresh_rates_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_randr_refresh_rates_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_refresh_rates_next
+ **
+ ** @param xcb_randr_refresh_rates_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_refresh_rates_next (xcb_randr_refresh_rates_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_randr_refresh_rates_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_refresh_rates_end
+ **
+ ** @param xcb_randr_refresh_rates_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_refresh_rates_end (xcb_randr_refresh_rates_iterator_t i /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_query_version_cookie_t xcb_randr_query_version
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t major_version
+ ** @param uint32_t minor_version
+ ** @returns xcb_randr_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_query_version_cookie_t
+xcb_randr_query_version (xcb_connection_t *c /**< */,
+ uint32_t major_version /**< */,
+ uint32_t minor_version /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_query_version_cookie_t xcb_randr_query_version_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t major_version
+ ** @param uint32_t minor_version
+ ** @returns xcb_randr_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_query_version_cookie_t
+xcb_randr_query_version_unchecked (xcb_connection_t *c /**< */,
+ uint32_t major_version /**< */,
+ uint32_t minor_version /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_randr_query_version_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_query_version_reply_t * xcb_randr_query_version_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_query_version_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_query_version_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_query_version_reply_t *
+xcb_randr_query_version_reply (xcb_connection_t *c /**< */,
+ xcb_randr_query_version_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_set_screen_config_cookie_t xcb_randr_set_screen_config
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_timestamp_t timestamp
+ ** @param xcb_timestamp_t config_timestamp
+ ** @param uint16_t sizeID
+ ** @param uint16_t rotation
+ ** @param uint16_t rate
+ ** @returns xcb_randr_set_screen_config_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_set_screen_config_cookie_t
+xcb_randr_set_screen_config (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_timestamp_t timestamp /**< */,
+ xcb_timestamp_t config_timestamp /**< */,
+ uint16_t sizeID /**< */,
+ uint16_t rotation /**< */,
+ uint16_t rate /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_set_screen_config_cookie_t xcb_randr_set_screen_config_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_timestamp_t timestamp
+ ** @param xcb_timestamp_t config_timestamp
+ ** @param uint16_t sizeID
+ ** @param uint16_t rotation
+ ** @param uint16_t rate
+ ** @returns xcb_randr_set_screen_config_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_set_screen_config_cookie_t
+xcb_randr_set_screen_config_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_timestamp_t timestamp /**< */,
+ xcb_timestamp_t config_timestamp /**< */,
+ uint16_t sizeID /**< */,
+ uint16_t rotation /**< */,
+ uint16_t rate /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_randr_set_screen_config_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_set_screen_config_reply_t * xcb_randr_set_screen_config_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_set_screen_config_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_set_screen_config_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_set_screen_config_reply_t *
+xcb_randr_set_screen_config_reply (xcb_connection_t *c /**< */,
+ xcb_randr_set_screen_config_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_select_input_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param uint16_t enable
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_select_input_checked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ uint16_t enable /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_select_input
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param uint16_t enable
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_select_input (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ uint16_t enable /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_info_cookie_t xcb_randr_get_screen_info
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_screen_info_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_info_cookie_t
+xcb_randr_get_screen_info (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_info_cookie_t xcb_randr_get_screen_info_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_screen_info_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_info_cookie_t
+xcb_randr_get_screen_info_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_screen_size_t * xcb_randr_get_screen_info_sizes
+ **
+ ** @param const xcb_randr_get_screen_info_reply_t *R
+ ** @returns xcb_randr_screen_size_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_screen_size_t *
+xcb_randr_get_screen_info_sizes (const xcb_randr_get_screen_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_info_sizes_length
+ **
+ ** @param const xcb_randr_get_screen_info_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_info_sizes_length (const xcb_randr_get_screen_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_screen_size_iterator_t xcb_randr_get_screen_info_sizes_iterator
+ **
+ ** @param const xcb_randr_get_screen_info_reply_t *R
+ ** @returns xcb_randr_screen_size_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_randr_screen_size_iterator_t
+xcb_randr_get_screen_info_sizes_iterator (const xcb_randr_get_screen_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_info_rates_length
+ **
+ ** @param const xcb_randr_get_screen_info_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_info_rates_length (const xcb_randr_get_screen_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_refresh_rates_iterator_t xcb_randr_get_screen_info_rates_iterator
+ **
+ ** @param const xcb_randr_get_screen_info_reply_t *R
+ ** @returns xcb_randr_refresh_rates_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_randr_refresh_rates_iterator_t
+xcb_randr_get_screen_info_rates_iterator (const xcb_randr_get_screen_info_reply_t *R /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_randr_get_screen_info_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_info_reply_t * xcb_randr_get_screen_info_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_screen_info_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_screen_info_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_info_reply_t *
+xcb_randr_get_screen_info_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_screen_info_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_size_range_cookie_t xcb_randr_get_screen_size_range
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_screen_size_range_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_size_range_cookie_t
+xcb_randr_get_screen_size_range (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_size_range_cookie_t xcb_randr_get_screen_size_range_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_screen_size_range_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_size_range_cookie_t
+xcb_randr_get_screen_size_range_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_randr_get_screen_size_range_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_size_range_reply_t * xcb_randr_get_screen_size_range_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_screen_size_range_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_screen_size_range_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_size_range_reply_t *
+xcb_randr_get_screen_size_range_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_screen_size_range_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_set_screen_size_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @param uint32_t mm_width
+ ** @param uint32_t mm_height
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_set_screen_size_checked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */,
+ uint32_t mm_width /**< */,
+ uint32_t mm_height /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_set_screen_size
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @param uint32_t mm_width
+ ** @param uint32_t mm_height
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_set_screen_size (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */,
+ uint32_t mm_width /**< */,
+ uint32_t mm_height /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_randr_mode_info_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_randr_mode_info_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_mode_info_next
+ **
+ ** @param xcb_randr_mode_info_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_mode_info_next (xcb_randr_mode_info_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_randr_mode_info_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_mode_info_end
+ **
+ ** @param xcb_randr_mode_info_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_mode_info_end (xcb_randr_mode_info_iterator_t i /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_resources_cookie_t xcb_randr_get_screen_resources
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_screen_resources_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_resources_cookie_t
+xcb_randr_get_screen_resources (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_resources_cookie_t xcb_randr_get_screen_resources_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_screen_resources_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_resources_cookie_t
+xcb_randr_get_screen_resources_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_crtc_t * xcb_randr_get_screen_resources_crtcs
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns xcb_randr_crtc_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_crtc_t *
+xcb_randr_get_screen_resources_crtcs (const xcb_randr_get_screen_resources_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_resources_crtcs_length
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_resources_crtcs_length (const xcb_randr_get_screen_resources_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_screen_resources_crtcs_end
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_screen_resources_crtcs_end (const xcb_randr_get_screen_resources_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_output_t * xcb_randr_get_screen_resources_outputs
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns xcb_randr_output_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_output_t *
+xcb_randr_get_screen_resources_outputs (const xcb_randr_get_screen_resources_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_resources_outputs_length
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_resources_outputs_length (const xcb_randr_get_screen_resources_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_screen_resources_outputs_end
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_screen_resources_outputs_end (const xcb_randr_get_screen_resources_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_mode_info_t * xcb_randr_get_screen_resources_modes
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns xcb_randr_mode_info_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_mode_info_t *
+xcb_randr_get_screen_resources_modes (const xcb_randr_get_screen_resources_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_resources_modes_length
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_resources_modes_length (const xcb_randr_get_screen_resources_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_mode_info_iterator_t xcb_randr_get_screen_resources_modes_iterator
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns xcb_randr_mode_info_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_randr_mode_info_iterator_t
+xcb_randr_get_screen_resources_modes_iterator (const xcb_randr_get_screen_resources_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** uint8_t * xcb_randr_get_screen_resources_names
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns uint8_t *
+ **
+ *****************************************************************************/
+
+uint8_t *
+xcb_randr_get_screen_resources_names (const xcb_randr_get_screen_resources_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_resources_names_length
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_resources_names_length (const xcb_randr_get_screen_resources_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_screen_resources_names_end
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_screen_resources_names_end (const xcb_randr_get_screen_resources_reply_t *R /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_randr_get_screen_resources_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_resources_reply_t * xcb_randr_get_screen_resources_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_screen_resources_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_screen_resources_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_resources_reply_t *
+xcb_randr_get_screen_resources_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_screen_resources_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_output_info_cookie_t xcb_randr_get_output_info
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_timestamp_t config_timestamp
+ ** @returns xcb_randr_get_output_info_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_output_info_cookie_t
+xcb_randr_get_output_info (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_timestamp_t config_timestamp /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_output_info_cookie_t xcb_randr_get_output_info_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_timestamp_t config_timestamp
+ ** @returns xcb_randr_get_output_info_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_output_info_cookie_t
+xcb_randr_get_output_info_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_timestamp_t config_timestamp /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_crtc_t * xcb_randr_get_output_info_crtcs
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns xcb_randr_crtc_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_crtc_t *
+xcb_randr_get_output_info_crtcs (const xcb_randr_get_output_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_output_info_crtcs_length
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_output_info_crtcs_length (const xcb_randr_get_output_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_output_info_crtcs_end
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_output_info_crtcs_end (const xcb_randr_get_output_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_mode_t * xcb_randr_get_output_info_modes
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns xcb_randr_mode_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_mode_t *
+xcb_randr_get_output_info_modes (const xcb_randr_get_output_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_output_info_modes_length
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_output_info_modes_length (const xcb_randr_get_output_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_output_info_modes_end
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_output_info_modes_end (const xcb_randr_get_output_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_output_t * xcb_randr_get_output_info_clones
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns xcb_randr_output_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_output_t *
+xcb_randr_get_output_info_clones (const xcb_randr_get_output_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_output_info_clones_length
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_output_info_clones_length (const xcb_randr_get_output_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_output_info_clones_end
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_output_info_clones_end (const xcb_randr_get_output_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** uint8_t * xcb_randr_get_output_info_name
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns uint8_t *
+ **
+ *****************************************************************************/
+
+uint8_t *
+xcb_randr_get_output_info_name (const xcb_randr_get_output_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_output_info_name_length
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_output_info_name_length (const xcb_randr_get_output_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_output_info_name_end
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_output_info_name_end (const xcb_randr_get_output_info_reply_t *R /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_randr_get_output_info_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_output_info_reply_t * xcb_randr_get_output_info_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_output_info_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_output_info_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_output_info_reply_t *
+xcb_randr_get_output_info_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_output_info_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_list_output_properties_cookie_t xcb_randr_list_output_properties
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @returns xcb_randr_list_output_properties_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_list_output_properties_cookie_t
+xcb_randr_list_output_properties (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_list_output_properties_cookie_t xcb_randr_list_output_properties_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @returns xcb_randr_list_output_properties_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_list_output_properties_cookie_t
+xcb_randr_list_output_properties_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_atom_t * xcb_randr_list_output_properties_atoms
+ **
+ ** @param const xcb_randr_list_output_properties_reply_t *R
+ ** @returns xcb_atom_t *
+ **
+ *****************************************************************************/
+
+xcb_atom_t *
+xcb_randr_list_output_properties_atoms (const xcb_randr_list_output_properties_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_list_output_properties_atoms_length
+ **
+ ** @param const xcb_randr_list_output_properties_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_list_output_properties_atoms_length (const xcb_randr_list_output_properties_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_list_output_properties_atoms_end
+ **
+ ** @param const xcb_randr_list_output_properties_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_list_output_properties_atoms_end (const xcb_randr_list_output_properties_reply_t *R /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_randr_list_output_properties_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_list_output_properties_reply_t * xcb_randr_list_output_properties_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_list_output_properties_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_list_output_properties_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_list_output_properties_reply_t *
+xcb_randr_list_output_properties_reply (xcb_connection_t *c /**< */,
+ xcb_randr_list_output_properties_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_query_output_property_cookie_t xcb_randr_query_output_property
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @returns xcb_randr_query_output_property_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_query_output_property_cookie_t
+xcb_randr_query_output_property (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_query_output_property_cookie_t xcb_randr_query_output_property_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @returns xcb_randr_query_output_property_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_query_output_property_cookie_t
+xcb_randr_query_output_property_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int32_t * xcb_randr_query_output_property_valid_values
+ **
+ ** @param const xcb_randr_query_output_property_reply_t *R
+ ** @returns int32_t *
+ **
+ *****************************************************************************/
+
+int32_t *
+xcb_randr_query_output_property_valid_values (const xcb_randr_query_output_property_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_query_output_property_valid_values_length
+ **
+ ** @param const xcb_randr_query_output_property_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_query_output_property_valid_values_length (const xcb_randr_query_output_property_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_query_output_property_valid_values_end
+ **
+ ** @param const xcb_randr_query_output_property_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_query_output_property_valid_values_end (const xcb_randr_query_output_property_reply_t *R /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_randr_query_output_property_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_query_output_property_reply_t * xcb_randr_query_output_property_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_query_output_property_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_query_output_property_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_query_output_property_reply_t *
+xcb_randr_query_output_property_reply (xcb_connection_t *c /**< */,
+ xcb_randr_query_output_property_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_configure_output_property_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @param uint8_t pending
+ ** @param uint8_t range
+ ** @param uint32_t values_len
+ ** @param const int32_t *values
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_configure_output_property_checked (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */,
+ uint8_t pending /**< */,
+ uint8_t range /**< */,
+ uint32_t values_len /**< */,
+ const int32_t *values /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_configure_output_property
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @param uint8_t pending
+ ** @param uint8_t range
+ ** @param uint32_t values_len
+ ** @param const int32_t *values
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_configure_output_property (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */,
+ uint8_t pending /**< */,
+ uint8_t range /**< */,
+ uint32_t values_len /**< */,
+ const int32_t *values /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_change_output_property_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @param xcb_atom_t type
+ ** @param uint8_t format
+ ** @param uint8_t mode
+ ** @param uint32_t num_units
+ ** @param const void *data
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_change_output_property_checked (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */,
+ xcb_atom_t type /**< */,
+ uint8_t format /**< */,
+ uint8_t mode /**< */,
+ uint32_t num_units /**< */,
+ const void *data /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_change_output_property
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @param xcb_atom_t type
+ ** @param uint8_t format
+ ** @param uint8_t mode
+ ** @param uint32_t num_units
+ ** @param const void *data
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_change_output_property (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */,
+ xcb_atom_t type /**< */,
+ uint8_t format /**< */,
+ uint8_t mode /**< */,
+ uint32_t num_units /**< */,
+ const void *data /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_delete_output_property_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_delete_output_property_checked (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_delete_output_property
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_delete_output_property (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_output_property_cookie_t xcb_randr_get_output_property
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @param xcb_atom_t type
+ ** @param uint32_t long_offset
+ ** @param uint32_t long_length
+ ** @param uint8_t _delete
+ ** @param uint8_t pending
+ ** @returns xcb_randr_get_output_property_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_output_property_cookie_t
+xcb_randr_get_output_property (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */,
+ xcb_atom_t type /**< */,
+ uint32_t long_offset /**< */,
+ uint32_t long_length /**< */,
+ uint8_t _delete /**< */,
+ uint8_t pending /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_output_property_cookie_t xcb_randr_get_output_property_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @param xcb_atom_t type
+ ** @param uint32_t long_offset
+ ** @param uint32_t long_length
+ ** @param uint8_t _delete
+ ** @param uint8_t pending
+ ** @returns xcb_randr_get_output_property_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_output_property_cookie_t
+xcb_randr_get_output_property_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */,
+ xcb_atom_t type /**< */,
+ uint32_t long_offset /**< */,
+ uint32_t long_length /**< */,
+ uint8_t _delete /**< */,
+ uint8_t pending /**< */);
+
+
+/*****************************************************************************
+ **
+ ** uint8_t * xcb_randr_get_output_property_data
+ **
+ ** @param const xcb_randr_get_output_property_reply_t *R
+ ** @returns uint8_t *
+ **
+ *****************************************************************************/
+
+uint8_t *
+xcb_randr_get_output_property_data (const xcb_randr_get_output_property_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_output_property_data_length
+ **
+ ** @param const xcb_randr_get_output_property_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_output_property_data_length (const xcb_randr_get_output_property_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_output_property_data_end
+ **
+ ** @param const xcb_randr_get_output_property_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_output_property_data_end (const xcb_randr_get_output_property_reply_t *R /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_randr_get_output_property_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_output_property_reply_t * xcb_randr_get_output_property_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_output_property_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_output_property_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_output_property_reply_t *
+xcb_randr_get_output_property_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_output_property_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_create_mode_cookie_t xcb_randr_create_mode
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_randr_mode_info_t mode_info
+ ** @param uint32_t name_len
+ ** @param const char *name
+ ** @returns xcb_randr_create_mode_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_create_mode_cookie_t
+xcb_randr_create_mode (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_randr_mode_info_t mode_info /**< */,
+ uint32_t name_len /**< */,
+ const char *name /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_create_mode_cookie_t xcb_randr_create_mode_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_randr_mode_info_t mode_info
+ ** @param uint32_t name_len
+ ** @param const char *name
+ ** @returns xcb_randr_create_mode_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_create_mode_cookie_t
+xcb_randr_create_mode_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_randr_mode_info_t mode_info /**< */,
+ uint32_t name_len /**< */,
+ const char *name /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_randr_create_mode_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_create_mode_reply_t * xcb_randr_create_mode_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_create_mode_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_create_mode_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_create_mode_reply_t *
+xcb_randr_create_mode_reply (xcb_connection_t *c /**< */,
+ xcb_randr_create_mode_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_destroy_mode_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_mode_t mode
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_destroy_mode_checked (xcb_connection_t *c /**< */,
+ xcb_randr_mode_t mode /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_destroy_mode
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_mode_t mode
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_destroy_mode (xcb_connection_t *c /**< */,
+ xcb_randr_mode_t mode /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_add_output_mode_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_randr_mode_t mode
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_add_output_mode_checked (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_randr_mode_t mode /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_add_output_mode
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_randr_mode_t mode
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_add_output_mode (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_randr_mode_t mode /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_delete_output_mode_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_randr_mode_t mode
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_delete_output_mode_checked (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_randr_mode_t mode /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_delete_output_mode
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_randr_mode_t mode
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_delete_output_mode (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_randr_mode_t mode /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_info_cookie_t xcb_randr_get_crtc_info
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param xcb_timestamp_t config_timestamp
+ ** @returns xcb_randr_get_crtc_info_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_info_cookie_t
+xcb_randr_get_crtc_info (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ xcb_timestamp_t config_timestamp /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_info_cookie_t xcb_randr_get_crtc_info_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param xcb_timestamp_t config_timestamp
+ ** @returns xcb_randr_get_crtc_info_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_info_cookie_t
+xcb_randr_get_crtc_info_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ xcb_timestamp_t config_timestamp /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_output_t * xcb_randr_get_crtc_info_outputs
+ **
+ ** @param const xcb_randr_get_crtc_info_reply_t *R
+ ** @returns xcb_randr_output_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_output_t *
+xcb_randr_get_crtc_info_outputs (const xcb_randr_get_crtc_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_crtc_info_outputs_length
+ **
+ ** @param const xcb_randr_get_crtc_info_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_crtc_info_outputs_length (const xcb_randr_get_crtc_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_crtc_info_outputs_end
+ **
+ ** @param const xcb_randr_get_crtc_info_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_crtc_info_outputs_end (const xcb_randr_get_crtc_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_output_t * xcb_randr_get_crtc_info_possible
+ **
+ ** @param const xcb_randr_get_crtc_info_reply_t *R
+ ** @returns xcb_randr_output_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_output_t *
+xcb_randr_get_crtc_info_possible (const xcb_randr_get_crtc_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_crtc_info_possible_length
+ **
+ ** @param const xcb_randr_get_crtc_info_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_crtc_info_possible_length (const xcb_randr_get_crtc_info_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_crtc_info_possible_end
+ **
+ ** @param const xcb_randr_get_crtc_info_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_crtc_info_possible_end (const xcb_randr_get_crtc_info_reply_t *R /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_randr_get_crtc_info_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_info_reply_t * xcb_randr_get_crtc_info_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_crtc_info_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_crtc_info_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_info_reply_t *
+xcb_randr_get_crtc_info_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_crtc_info_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_set_crtc_config_cookie_t xcb_randr_set_crtc_config
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param xcb_timestamp_t timestamp
+ ** @param xcb_timestamp_t config_timestamp
+ ** @param int16_t x
+ ** @param int16_t y
+ ** @param xcb_randr_mode_t mode
+ ** @param uint16_t rotation
+ ** @param uint32_t outputs_len
+ ** @param const xcb_randr_output_t *outputs
+ ** @returns xcb_randr_set_crtc_config_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_set_crtc_config_cookie_t
+xcb_randr_set_crtc_config (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ xcb_timestamp_t timestamp /**< */,
+ xcb_timestamp_t config_timestamp /**< */,
+ int16_t x /**< */,
+ int16_t y /**< */,
+ xcb_randr_mode_t mode /**< */,
+ uint16_t rotation /**< */,
+ uint32_t outputs_len /**< */,
+ const xcb_randr_output_t *outputs /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_set_crtc_config_cookie_t xcb_randr_set_crtc_config_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param xcb_timestamp_t timestamp
+ ** @param xcb_timestamp_t config_timestamp
+ ** @param int16_t x
+ ** @param int16_t y
+ ** @param xcb_randr_mode_t mode
+ ** @param uint16_t rotation
+ ** @param uint32_t outputs_len
+ ** @param const xcb_randr_output_t *outputs
+ ** @returns xcb_randr_set_crtc_config_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_set_crtc_config_cookie_t
+xcb_randr_set_crtc_config_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ xcb_timestamp_t timestamp /**< */,
+ xcb_timestamp_t config_timestamp /**< */,
+ int16_t x /**< */,
+ int16_t y /**< */,
+ xcb_randr_mode_t mode /**< */,
+ uint16_t rotation /**< */,
+ uint32_t outputs_len /**< */,
+ const xcb_randr_output_t *outputs /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_randr_set_crtc_config_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_set_crtc_config_reply_t * xcb_randr_set_crtc_config_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_set_crtc_config_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_set_crtc_config_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_set_crtc_config_reply_t *
+xcb_randr_set_crtc_config_reply (xcb_connection_t *c /**< */,
+ xcb_randr_set_crtc_config_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_gamma_size_cookie_t xcb_randr_get_crtc_gamma_size
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @returns xcb_randr_get_crtc_gamma_size_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_gamma_size_cookie_t
+xcb_randr_get_crtc_gamma_size (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_gamma_size_cookie_t xcb_randr_get_crtc_gamma_size_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @returns xcb_randr_get_crtc_gamma_size_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_gamma_size_cookie_t
+xcb_randr_get_crtc_gamma_size_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_randr_get_crtc_gamma_size_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_gamma_size_reply_t * xcb_randr_get_crtc_gamma_size_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_crtc_gamma_size_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_crtc_gamma_size_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_gamma_size_reply_t *
+xcb_randr_get_crtc_gamma_size_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_crtc_gamma_size_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_gamma_cookie_t xcb_randr_get_crtc_gamma
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @returns xcb_randr_get_crtc_gamma_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_gamma_cookie_t
+xcb_randr_get_crtc_gamma (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_gamma_cookie_t xcb_randr_get_crtc_gamma_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @returns xcb_randr_get_crtc_gamma_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_gamma_cookie_t
+xcb_randr_get_crtc_gamma_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */);
+
+
+/*****************************************************************************
+ **
+ ** uint16_t * xcb_randr_get_crtc_gamma_red
+ **
+ ** @param const xcb_randr_get_crtc_gamma_reply_t *R
+ ** @returns uint16_t *
+ **
+ *****************************************************************************/
+
+uint16_t *
+xcb_randr_get_crtc_gamma_red (const xcb_randr_get_crtc_gamma_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_crtc_gamma_red_length
+ **
+ ** @param const xcb_randr_get_crtc_gamma_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_crtc_gamma_red_length (const xcb_randr_get_crtc_gamma_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_crtc_gamma_red_end
+ **
+ ** @param const xcb_randr_get_crtc_gamma_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_crtc_gamma_red_end (const xcb_randr_get_crtc_gamma_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** uint16_t * xcb_randr_get_crtc_gamma_green
+ **
+ ** @param const xcb_randr_get_crtc_gamma_reply_t *R
+ ** @returns uint16_t *
+ **
+ *****************************************************************************/
+
+uint16_t *
+xcb_randr_get_crtc_gamma_green (const xcb_randr_get_crtc_gamma_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_crtc_gamma_green_length
+ **
+ ** @param const xcb_randr_get_crtc_gamma_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_crtc_gamma_green_length (const xcb_randr_get_crtc_gamma_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_crtc_gamma_green_end
+ **
+ ** @param const xcb_randr_get_crtc_gamma_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_crtc_gamma_green_end (const xcb_randr_get_crtc_gamma_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** uint16_t * xcb_randr_get_crtc_gamma_blue
+ **
+ ** @param const xcb_randr_get_crtc_gamma_reply_t *R
+ ** @returns uint16_t *
+ **
+ *****************************************************************************/
+
+uint16_t *
+xcb_randr_get_crtc_gamma_blue (const xcb_randr_get_crtc_gamma_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_crtc_gamma_blue_length
+ **
+ ** @param const xcb_randr_get_crtc_gamma_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_crtc_gamma_blue_length (const xcb_randr_get_crtc_gamma_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_crtc_gamma_blue_end
+ **
+ ** @param const xcb_randr_get_crtc_gamma_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_crtc_gamma_blue_end (const xcb_randr_get_crtc_gamma_reply_t *R /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_randr_get_crtc_gamma_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_gamma_reply_t * xcb_randr_get_crtc_gamma_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_crtc_gamma_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_crtc_gamma_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_gamma_reply_t *
+xcb_randr_get_crtc_gamma_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_crtc_gamma_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_set_crtc_gamma_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param uint16_t size
+ ** @param const uint16_t *red
+ ** @param const uint16_t *green
+ ** @param const uint16_t *blue
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_set_crtc_gamma_checked (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ uint16_t size /**< */,
+ const uint16_t *red /**< */,
+ const uint16_t *green /**< */,
+ const uint16_t *blue /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_set_crtc_gamma
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param uint16_t size
+ ** @param const uint16_t *red
+ ** @param const uint16_t *green
+ ** @param const uint16_t *blue
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_set_crtc_gamma (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ uint16_t size /**< */,
+ const uint16_t *red /**< */,
+ const uint16_t *green /**< */,
+ const uint16_t *blue /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_resources_current_cookie_t xcb_randr_get_screen_resources_current
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_screen_resources_current_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_resources_current_cookie_t
+xcb_randr_get_screen_resources_current (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_resources_current_cookie_t xcb_randr_get_screen_resources_current_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_screen_resources_current_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_resources_current_cookie_t
+xcb_randr_get_screen_resources_current_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_crtc_t * xcb_randr_get_screen_resources_current_crtcs
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns xcb_randr_crtc_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_crtc_t *
+xcb_randr_get_screen_resources_current_crtcs (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_resources_current_crtcs_length
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_resources_current_crtcs_length (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_screen_resources_current_crtcs_end
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_screen_resources_current_crtcs_end (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_output_t * xcb_randr_get_screen_resources_current_outputs
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns xcb_randr_output_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_output_t *
+xcb_randr_get_screen_resources_current_outputs (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_resources_current_outputs_length
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_resources_current_outputs_length (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_screen_resources_current_outputs_end
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_screen_resources_current_outputs_end (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_mode_info_t * xcb_randr_get_screen_resources_current_modes
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns xcb_randr_mode_info_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_mode_info_t *
+xcb_randr_get_screen_resources_current_modes (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_resources_current_modes_length
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_resources_current_modes_length (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_mode_info_iterator_t xcb_randr_get_screen_resources_current_modes_iterator
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns xcb_randr_mode_info_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_randr_mode_info_iterator_t
+xcb_randr_get_screen_resources_current_modes_iterator (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** uint8_t * xcb_randr_get_screen_resources_current_names
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns uint8_t *
+ **
+ *****************************************************************************/
+
+uint8_t *
+xcb_randr_get_screen_resources_current_names (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_resources_current_names_length
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_resources_current_names_length (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_screen_resources_current_names_end
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_screen_resources_current_names_end (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_randr_get_screen_resources_current_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_resources_current_reply_t * xcb_randr_get_screen_resources_current_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_screen_resources_current_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_screen_resources_current_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_resources_current_reply_t *
+xcb_randr_get_screen_resources_current_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_screen_resources_current_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_set_crtc_transform_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param xcb_render_transform_t transform
+ ** @param uint16_t filter_len
+ ** @param const char *filter_name
+ ** @param uint32_t filter_params_len
+ ** @param const xcb_render_fixed_t *filter_params
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_set_crtc_transform_checked (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ xcb_render_transform_t transform /**< */,
+ uint16_t filter_len /**< */,
+ const char *filter_name /**< */,
+ uint32_t filter_params_len /**< */,
+ const xcb_render_fixed_t *filter_params /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_set_crtc_transform
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param xcb_render_transform_t transform
+ ** @param uint16_t filter_len
+ ** @param const char *filter_name
+ ** @param uint32_t filter_params_len
+ ** @param const xcb_render_fixed_t *filter_params
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_set_crtc_transform (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ xcb_render_transform_t transform /**< */,
+ uint16_t filter_len /**< */,
+ const char *filter_name /**< */,
+ uint32_t filter_params_len /**< */,
+ const xcb_render_fixed_t *filter_params /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_transform_cookie_t xcb_randr_get_crtc_transform
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @returns xcb_randr_get_crtc_transform_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_transform_cookie_t
+xcb_randr_get_crtc_transform (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_transform_cookie_t xcb_randr_get_crtc_transform_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @returns xcb_randr_get_crtc_transform_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_transform_cookie_t
+xcb_randr_get_crtc_transform_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */);
+
+
+/*****************************************************************************
+ **
+ ** char * xcb_randr_get_crtc_transform_pending_filter_name
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns char *
+ **
+ *****************************************************************************/
+
+char *
+xcb_randr_get_crtc_transform_pending_filter_name (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_crtc_transform_pending_filter_name_length
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_crtc_transform_pending_filter_name_length (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_crtc_transform_pending_filter_name_end
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_crtc_transform_pending_filter_name_end (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_fixed_t * xcb_randr_get_crtc_transform_pending_params
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns xcb_render_fixed_t *
+ **
+ *****************************************************************************/
+
+xcb_render_fixed_t *
+xcb_randr_get_crtc_transform_pending_params (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_crtc_transform_pending_params_length
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_crtc_transform_pending_params_length (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_crtc_transform_pending_params_end
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_crtc_transform_pending_params_end (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** char * xcb_randr_get_crtc_transform_current_filter_name
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns char *
+ **
+ *****************************************************************************/
+
+char *
+xcb_randr_get_crtc_transform_current_filter_name (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_crtc_transform_current_filter_name_length
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_crtc_transform_current_filter_name_length (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_crtc_transform_current_filter_name_end
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_crtc_transform_current_filter_name_end (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_fixed_t * xcb_randr_get_crtc_transform_current_params
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns xcb_render_fixed_t *
+ **
+ *****************************************************************************/
+
+xcb_render_fixed_t *
+xcb_randr_get_crtc_transform_current_params (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_crtc_transform_current_params_length
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_crtc_transform_current_params_length (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_crtc_transform_current_params_end
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_crtc_transform_current_params_end (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_randr_get_crtc_transform_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_transform_reply_t * xcb_randr_get_crtc_transform_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_crtc_transform_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_crtc_transform_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_transform_reply_t *
+xcb_randr_get_crtc_transform_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_crtc_transform_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_panning_cookie_t xcb_randr_get_panning
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @returns xcb_randr_get_panning_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_panning_cookie_t
+xcb_randr_get_panning (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_panning_cookie_t xcb_randr_get_panning_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @returns xcb_randr_get_panning_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_panning_cookie_t
+xcb_randr_get_panning_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_randr_get_panning_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_panning_reply_t * xcb_randr_get_panning_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_panning_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_panning_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_panning_reply_t *
+xcb_randr_get_panning_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_panning_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_set_panning_cookie_t xcb_randr_set_panning
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param xcb_timestamp_t timestamp
+ ** @param uint16_t left
+ ** @param uint16_t top
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @param uint16_t track_left
+ ** @param uint16_t track_top
+ ** @param uint16_t track_width
+ ** @param uint16_t track_height
+ ** @param int16_t border_left
+ ** @param int16_t border_top
+ ** @param int16_t border_right
+ ** @param int16_t border_bottom
+ ** @returns xcb_randr_set_panning_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_set_panning_cookie_t
+xcb_randr_set_panning (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ xcb_timestamp_t timestamp /**< */,
+ uint16_t left /**< */,
+ uint16_t top /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */,
+ uint16_t track_left /**< */,
+ uint16_t track_top /**< */,
+ uint16_t track_width /**< */,
+ uint16_t track_height /**< */,
+ int16_t border_left /**< */,
+ int16_t border_top /**< */,
+ int16_t border_right /**< */,
+ int16_t border_bottom /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_set_panning_cookie_t xcb_randr_set_panning_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param xcb_timestamp_t timestamp
+ ** @param uint16_t left
+ ** @param uint16_t top
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @param uint16_t track_left
+ ** @param uint16_t track_top
+ ** @param uint16_t track_width
+ ** @param uint16_t track_height
+ ** @param int16_t border_left
+ ** @param int16_t border_top
+ ** @param int16_t border_right
+ ** @param int16_t border_bottom
+ ** @returns xcb_randr_set_panning_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_set_panning_cookie_t
+xcb_randr_set_panning_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ xcb_timestamp_t timestamp /**< */,
+ uint16_t left /**< */,
+ uint16_t top /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */,
+ uint16_t track_left /**< */,
+ uint16_t track_top /**< */,
+ uint16_t track_width /**< */,
+ uint16_t track_height /**< */,
+ int16_t border_left /**< */,
+ int16_t border_top /**< */,
+ int16_t border_right /**< */,
+ int16_t border_bottom /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_randr_set_panning_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_set_panning_reply_t * xcb_randr_set_panning_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_set_panning_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_set_panning_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_set_panning_reply_t *
+xcb_randr_set_panning_reply (xcb_connection_t *c /**< */,
+ xcb_randr_set_panning_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_set_output_primary_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_randr_output_t output
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_set_output_primary_checked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_randr_output_t output /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_set_output_primary
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_randr_output_t output
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_set_output_primary (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_randr_output_t output /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_output_primary_cookie_t xcb_randr_get_output_primary
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_output_primary_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_output_primary_cookie_t
+xcb_randr_get_output_primary (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_output_primary_cookie_t xcb_randr_get_output_primary_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_output_primary_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_output_primary_cookie_t
+xcb_randr_get_output_primary_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_randr_get_output_primary_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_output_primary_reply_t * xcb_randr_get_output_primary_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_output_primary_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_output_primary_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_output_primary_reply_t *
+xcb_randr_get_output_primary_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_output_primary_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_randr_crtc_change_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_randr_crtc_change_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_crtc_change_next
+ **
+ ** @param xcb_randr_crtc_change_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_crtc_change_next (xcb_randr_crtc_change_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_randr_crtc_change_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_crtc_change_end
+ **
+ ** @param xcb_randr_crtc_change_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_crtc_change_end (xcb_randr_crtc_change_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_randr_output_change_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_randr_output_change_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_output_change_next
+ **
+ ** @param xcb_randr_output_change_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_output_change_next (xcb_randr_output_change_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_randr_output_change_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_output_change_end
+ **
+ ** @param xcb_randr_output_change_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_output_change_end (xcb_randr_output_change_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_randr_output_property_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_randr_output_property_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_output_property_next
+ **
+ ** @param xcb_randr_output_property_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_output_property_next (xcb_randr_output_property_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_randr_output_property_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_output_property_end
+ **
+ ** @param xcb_randr_output_property_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_output_property_end (xcb_randr_output_property_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_randr_notify_data_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_randr_notify_data_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_notify_data_next
+ **
+ ** @param xcb_randr_notify_data_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_notify_data_next (xcb_randr_notify_data_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_randr_notify_data_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_notify_data_end
+ **
+ ** @param xcb_randr_notify_data_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_notify_data_end (xcb_randr_notify_data_iterator_t i /**< */);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/**
+ * @}
+ */
diff --git a/src/3rdparty/xcb/include/xcb/render.h b/src/3rdparty/xcb/include/xcb/render.h
new file mode 100644
index 0000000000..0f96ca1fbc
--- /dev/null
+++ b/src/3rdparty/xcb/include/xcb/render.h
@@ -0,0 +1,4412 @@
+/*
+ * This file generated automatically from render.xml by c_client.py.
+ * Edit at your peril.
+ */
+
+/**
+ * @defgroup XCB_Render_API XCB Render API
+ * @brief Render XCB Protocol Implementation.
+ * @{
+ **/
+
+#ifndef __RENDER_H
+#define __RENDER_H
+
+#include "xcb.h"
+#include "xproto.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define XCB_RENDER_MAJOR_VERSION 0
+#define XCB_RENDER_MINOR_VERSION 10
+
+extern xcb_extension_t xcb_render_id;
+
+typedef enum xcb_render_pict_type_t {
+ XCB_RENDER_PICT_TYPE_INDEXED,
+ XCB_RENDER_PICT_TYPE_DIRECT
+} xcb_render_pict_type_t;
+
+typedef enum xcb_render_picture_enum_t {
+ XCB_RENDER_PICTURE_NONE
+} xcb_render_picture_enum_t;
+
+typedef enum xcb_render_pict_op_t {
+ XCB_RENDER_PICT_OP_CLEAR,
+ XCB_RENDER_PICT_OP_SRC,
+ XCB_RENDER_PICT_OP_DST,
+ XCB_RENDER_PICT_OP_OVER,
+ XCB_RENDER_PICT_OP_OVER_REVERSE,
+ XCB_RENDER_PICT_OP_IN,
+ XCB_RENDER_PICT_OP_IN_REVERSE,
+ XCB_RENDER_PICT_OP_OUT,
+ XCB_RENDER_PICT_OP_OUT_REVERSE,
+ XCB_RENDER_PICT_OP_ATOP,
+ XCB_RENDER_PICT_OP_ATOP_REVERSE,
+ XCB_RENDER_PICT_OP_XOR,
+ XCB_RENDER_PICT_OP_ADD,
+ XCB_RENDER_PICT_OP_SATURATE,
+ XCB_RENDER_PICT_OP_DISJOINT_CLEAR = 16,
+ XCB_RENDER_PICT_OP_DISJOINT_SRC,
+ XCB_RENDER_PICT_OP_DISJOINT_DST,
+ XCB_RENDER_PICT_OP_DISJOINT_OVER,
+ XCB_RENDER_PICT_OP_DISJOINT_OVER_REVERSE,
+ XCB_RENDER_PICT_OP_DISJOINT_IN,
+ XCB_RENDER_PICT_OP_DISJOINT_IN_REVERSE,
+ XCB_RENDER_PICT_OP_DISJOINT_OUT,
+ XCB_RENDER_PICT_OP_DISJOINT_OUT_REVERSE,
+ XCB_RENDER_PICT_OP_DISJOINT_ATOP,
+ XCB_RENDER_PICT_OP_DISJOINT_ATOP_REVERSE,
+ XCB_RENDER_PICT_OP_DISJOINT_XOR,
+ XCB_RENDER_PICT_OP_CONJOINT_CLEAR = 32,
+ XCB_RENDER_PICT_OP_CONJOINT_SRC,
+ XCB_RENDER_PICT_OP_CONJOINT_DST,
+ XCB_RENDER_PICT_OP_CONJOINT_OVER,
+ XCB_RENDER_PICT_OP_CONJOINT_OVER_REVERSE,
+ XCB_RENDER_PICT_OP_CONJOINT_IN,
+ XCB_RENDER_PICT_OP_CONJOINT_IN_REVERSE,
+ XCB_RENDER_PICT_OP_CONJOINT_OUT,
+ XCB_RENDER_PICT_OP_CONJOINT_OUT_REVERSE,
+ XCB_RENDER_PICT_OP_CONJOINT_ATOP,
+ XCB_RENDER_PICT_OP_CONJOINT_ATOP_REVERSE,
+ XCB_RENDER_PICT_OP_CONJOINT_XOR
+} xcb_render_pict_op_t;
+
+typedef enum xcb_render_poly_edge_t {
+ XCB_RENDER_POLY_EDGE_SHARP,
+ XCB_RENDER_POLY_EDGE_SMOOTH
+} xcb_render_poly_edge_t;
+
+typedef enum xcb_render_poly_mode_t {
+ XCB_RENDER_POLY_MODE_PRECISE,
+ XCB_RENDER_POLY_MODE_IMPRECISE
+} xcb_render_poly_mode_t;
+
+typedef enum xcb_render_cp_t {
+ XCB_RENDER_CP_REPEAT = 1,
+ XCB_RENDER_CP_ALPHA_MAP = 2,
+ XCB_RENDER_CP_ALPHA_X_ORIGIN = 4,
+ XCB_RENDER_CP_ALPHA_Y_ORIGIN = 8,
+ XCB_RENDER_CP_CLIP_X_ORIGIN = 16,
+ XCB_RENDER_CP_CLIP_Y_ORIGIN = 32,
+ XCB_RENDER_CP_CLIP_MASK = 64,
+ XCB_RENDER_CP_GRAPHICS_EXPOSURE = 128,
+ XCB_RENDER_CP_SUBWINDOW_MODE = 256,
+ XCB_RENDER_CP_POLY_EDGE = 512,
+ XCB_RENDER_CP_POLY_MODE = 1024,
+ XCB_RENDER_CP_DITHER = 2048,
+ XCB_RENDER_CP_COMPONENT_ALPHA = 4096
+} xcb_render_cp_t;
+
+typedef enum xcb_render_sub_pixel_t {
+ XCB_RENDER_SUB_PIXEL_UNKNOWN,
+ XCB_RENDER_SUB_PIXEL_HORIZONTAL_RGB,
+ XCB_RENDER_SUB_PIXEL_HORIZONTAL_BGR,
+ XCB_RENDER_SUB_PIXEL_VERTICAL_RGB,
+ XCB_RENDER_SUB_PIXEL_VERTICAL_BGR,
+ XCB_RENDER_SUB_PIXEL_NONE
+} xcb_render_sub_pixel_t;
+
+typedef enum xcb_render_repeat_t {
+ XCB_RENDER_REPEAT_NONE,
+ XCB_RENDER_REPEAT_NORMAL,
+ XCB_RENDER_REPEAT_PAD,
+ XCB_RENDER_REPEAT_REFLECT
+} xcb_render_repeat_t;
+
+typedef uint32_t xcb_render_glyph_t;
+
+/**
+ * @brief xcb_render_glyph_iterator_t
+ **/
+typedef struct xcb_render_glyph_iterator_t {
+ xcb_render_glyph_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_glyph_iterator_t;
+
+typedef uint32_t xcb_render_glyphset_t;
+
+/**
+ * @brief xcb_render_glyphset_iterator_t
+ **/
+typedef struct xcb_render_glyphset_iterator_t {
+ xcb_render_glyphset_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_glyphset_iterator_t;
+
+typedef uint32_t xcb_render_picture_t;
+
+/**
+ * @brief xcb_render_picture_iterator_t
+ **/
+typedef struct xcb_render_picture_iterator_t {
+ xcb_render_picture_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_picture_iterator_t;
+
+typedef uint32_t xcb_render_pictformat_t;
+
+/**
+ * @brief xcb_render_pictformat_iterator_t
+ **/
+typedef struct xcb_render_pictformat_iterator_t {
+ xcb_render_pictformat_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_pictformat_iterator_t;
+
+typedef int32_t xcb_render_fixed_t;
+
+/**
+ * @brief xcb_render_fixed_iterator_t
+ **/
+typedef struct xcb_render_fixed_iterator_t {
+ xcb_render_fixed_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_fixed_iterator_t;
+
+/** Opcode for xcb_render_pict_format. */
+#define XCB_RENDER_PICT_FORMAT 0
+
+/**
+ * @brief xcb_render_pict_format_error_t
+ **/
+typedef struct xcb_render_pict_format_error_t {
+ uint8_t response_type; /**< */
+ uint8_t error_code; /**< */
+ uint16_t sequence; /**< */
+} xcb_render_pict_format_error_t;
+
+/** Opcode for xcb_render_picture. */
+#define XCB_RENDER_PICTURE 1
+
+/**
+ * @brief xcb_render_picture_error_t
+ **/
+typedef struct xcb_render_picture_error_t {
+ uint8_t response_type; /**< */
+ uint8_t error_code; /**< */
+ uint16_t sequence; /**< */
+} xcb_render_picture_error_t;
+
+/** Opcode for xcb_render_pict_op. */
+#define XCB_RENDER_PICT_OP 2
+
+/**
+ * @brief xcb_render_pict_op_error_t
+ **/
+typedef struct xcb_render_pict_op_error_t {
+ uint8_t response_type; /**< */
+ uint8_t error_code; /**< */
+ uint16_t sequence; /**< */
+} xcb_render_pict_op_error_t;
+
+/** Opcode for xcb_render_glyph_set. */
+#define XCB_RENDER_GLYPH_SET 3
+
+/**
+ * @brief xcb_render_glyph_set_error_t
+ **/
+typedef struct xcb_render_glyph_set_error_t {
+ uint8_t response_type; /**< */
+ uint8_t error_code; /**< */
+ uint16_t sequence; /**< */
+} xcb_render_glyph_set_error_t;
+
+/** Opcode for xcb_render_glyph. */
+#define XCB_RENDER_GLYPH 4
+
+/**
+ * @brief xcb_render_glyph_error_t
+ **/
+typedef struct xcb_render_glyph_error_t {
+ uint8_t response_type; /**< */
+ uint8_t error_code; /**< */
+ uint16_t sequence; /**< */
+} xcb_render_glyph_error_t;
+
+/**
+ * @brief xcb_render_directformat_t
+ **/
+typedef struct xcb_render_directformat_t {
+ uint16_t red_shift; /**< */
+ uint16_t red_mask; /**< */
+ uint16_t green_shift; /**< */
+ uint16_t green_mask; /**< */
+ uint16_t blue_shift; /**< */
+ uint16_t blue_mask; /**< */
+ uint16_t alpha_shift; /**< */
+ uint16_t alpha_mask; /**< */
+} xcb_render_directformat_t;
+
+/**
+ * @brief xcb_render_directformat_iterator_t
+ **/
+typedef struct xcb_render_directformat_iterator_t {
+ xcb_render_directformat_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_directformat_iterator_t;
+
+/**
+ * @brief xcb_render_pictforminfo_t
+ **/
+typedef struct xcb_render_pictforminfo_t {
+ xcb_render_pictformat_t id; /**< */
+ uint8_t type; /**< */
+ uint8_t depth; /**< */
+ uint8_t pad0[2]; /**< */
+ xcb_render_directformat_t direct; /**< */
+ xcb_colormap_t colormap; /**< */
+} xcb_render_pictforminfo_t;
+
+/**
+ * @brief xcb_render_pictforminfo_iterator_t
+ **/
+typedef struct xcb_render_pictforminfo_iterator_t {
+ xcb_render_pictforminfo_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_pictforminfo_iterator_t;
+
+/**
+ * @brief xcb_render_pictvisual_t
+ **/
+typedef struct xcb_render_pictvisual_t {
+ xcb_visualid_t visual; /**< */
+ xcb_render_pictformat_t format; /**< */
+} xcb_render_pictvisual_t;
+
+/**
+ * @brief xcb_render_pictvisual_iterator_t
+ **/
+typedef struct xcb_render_pictvisual_iterator_t {
+ xcb_render_pictvisual_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_pictvisual_iterator_t;
+
+/**
+ * @brief xcb_render_pictdepth_t
+ **/
+typedef struct xcb_render_pictdepth_t {
+ uint8_t depth; /**< */
+ uint8_t pad0; /**< */
+ uint16_t num_visuals; /**< */
+ uint8_t pad1[4]; /**< */
+} xcb_render_pictdepth_t;
+
+/**
+ * @brief xcb_render_pictdepth_iterator_t
+ **/
+typedef struct xcb_render_pictdepth_iterator_t {
+ xcb_render_pictdepth_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_pictdepth_iterator_t;
+
+/**
+ * @brief xcb_render_pictscreen_t
+ **/
+typedef struct xcb_render_pictscreen_t {
+ uint32_t num_depths; /**< */
+ xcb_render_pictformat_t fallback; /**< */
+} xcb_render_pictscreen_t;
+
+/**
+ * @brief xcb_render_pictscreen_iterator_t
+ **/
+typedef struct xcb_render_pictscreen_iterator_t {
+ xcb_render_pictscreen_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_pictscreen_iterator_t;
+
+/**
+ * @brief xcb_render_indexvalue_t
+ **/
+typedef struct xcb_render_indexvalue_t {
+ uint32_t pixel; /**< */
+ uint16_t red; /**< */
+ uint16_t green; /**< */
+ uint16_t blue; /**< */
+ uint16_t alpha; /**< */
+} xcb_render_indexvalue_t;
+
+/**
+ * @brief xcb_render_indexvalue_iterator_t
+ **/
+typedef struct xcb_render_indexvalue_iterator_t {
+ xcb_render_indexvalue_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_indexvalue_iterator_t;
+
+/**
+ * @brief xcb_render_color_t
+ **/
+typedef struct xcb_render_color_t {
+ uint16_t red; /**< */
+ uint16_t green; /**< */
+ uint16_t blue; /**< */
+ uint16_t alpha; /**< */
+} xcb_render_color_t;
+
+/**
+ * @brief xcb_render_color_iterator_t
+ **/
+typedef struct xcb_render_color_iterator_t {
+ xcb_render_color_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_color_iterator_t;
+
+/**
+ * @brief xcb_render_pointfix_t
+ **/
+typedef struct xcb_render_pointfix_t {
+ xcb_render_fixed_t x; /**< */
+ xcb_render_fixed_t y; /**< */
+} xcb_render_pointfix_t;
+
+/**
+ * @brief xcb_render_pointfix_iterator_t
+ **/
+typedef struct xcb_render_pointfix_iterator_t {
+ xcb_render_pointfix_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_pointfix_iterator_t;
+
+/**
+ * @brief xcb_render_linefix_t
+ **/
+typedef struct xcb_render_linefix_t {
+ xcb_render_pointfix_t p1; /**< */
+ xcb_render_pointfix_t p2; /**< */
+} xcb_render_linefix_t;
+
+/**
+ * @brief xcb_render_linefix_iterator_t
+ **/
+typedef struct xcb_render_linefix_iterator_t {
+ xcb_render_linefix_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_linefix_iterator_t;
+
+/**
+ * @brief xcb_render_triangle_t
+ **/
+typedef struct xcb_render_triangle_t {
+ xcb_render_pointfix_t p1; /**< */
+ xcb_render_pointfix_t p2; /**< */
+ xcb_render_pointfix_t p3; /**< */
+} xcb_render_triangle_t;
+
+/**
+ * @brief xcb_render_triangle_iterator_t
+ **/
+typedef struct xcb_render_triangle_iterator_t {
+ xcb_render_triangle_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_triangle_iterator_t;
+
+/**
+ * @brief xcb_render_trapezoid_t
+ **/
+typedef struct xcb_render_trapezoid_t {
+ xcb_render_fixed_t top; /**< */
+ xcb_render_fixed_t bottom; /**< */
+ xcb_render_linefix_t left; /**< */
+ xcb_render_linefix_t right; /**< */
+} xcb_render_trapezoid_t;
+
+/**
+ * @brief xcb_render_trapezoid_iterator_t
+ **/
+typedef struct xcb_render_trapezoid_iterator_t {
+ xcb_render_trapezoid_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_trapezoid_iterator_t;
+
+/**
+ * @brief xcb_render_glyphinfo_t
+ **/
+typedef struct xcb_render_glyphinfo_t {
+ uint16_t width; /**< */
+ uint16_t height; /**< */
+ int16_t x; /**< */
+ int16_t y; /**< */
+ int16_t x_off; /**< */
+ int16_t y_off; /**< */
+} xcb_render_glyphinfo_t;
+
+/**
+ * @brief xcb_render_glyphinfo_iterator_t
+ **/
+typedef struct xcb_render_glyphinfo_iterator_t {
+ xcb_render_glyphinfo_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_glyphinfo_iterator_t;
+
+/**
+ * @brief xcb_render_query_version_cookie_t
+ **/
+typedef struct xcb_render_query_version_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_render_query_version_cookie_t;
+
+/** Opcode for xcb_render_query_version. */
+#define XCB_RENDER_QUERY_VERSION 0
+
+/**
+ * @brief xcb_render_query_version_request_t
+ **/
+typedef struct xcb_render_query_version_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ uint32_t client_major_version; /**< */
+ uint32_t client_minor_version; /**< */
+} xcb_render_query_version_request_t;
+
+/**
+ * @brief xcb_render_query_version_reply_t
+ **/
+typedef struct xcb_render_query_version_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ uint32_t major_version; /**< */
+ uint32_t minor_version; /**< */
+ uint8_t pad1[16]; /**< */
+} xcb_render_query_version_reply_t;
+
+/**
+ * @brief xcb_render_query_pict_formats_cookie_t
+ **/
+typedef struct xcb_render_query_pict_formats_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_render_query_pict_formats_cookie_t;
+
+/** Opcode for xcb_render_query_pict_formats. */
+#define XCB_RENDER_QUERY_PICT_FORMATS 1
+
+/**
+ * @brief xcb_render_query_pict_formats_request_t
+ **/
+typedef struct xcb_render_query_pict_formats_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+} xcb_render_query_pict_formats_request_t;
+
+/**
+ * @brief xcb_render_query_pict_formats_reply_t
+ **/
+typedef struct xcb_render_query_pict_formats_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ uint32_t num_formats; /**< */
+ uint32_t num_screens; /**< */
+ uint32_t num_depths; /**< */
+ uint32_t num_visuals; /**< */
+ uint32_t num_subpixel; /**< */
+ uint8_t pad1[4]; /**< */
+} xcb_render_query_pict_formats_reply_t;
+
+/**
+ * @brief xcb_render_query_pict_index_values_cookie_t
+ **/
+typedef struct xcb_render_query_pict_index_values_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_render_query_pict_index_values_cookie_t;
+
+/** Opcode for xcb_render_query_pict_index_values. */
+#define XCB_RENDER_QUERY_PICT_INDEX_VALUES 2
+
+/**
+ * @brief xcb_render_query_pict_index_values_request_t
+ **/
+typedef struct xcb_render_query_pict_index_values_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_render_pictformat_t format; /**< */
+} xcb_render_query_pict_index_values_request_t;
+
+/**
+ * @brief xcb_render_query_pict_index_values_reply_t
+ **/
+typedef struct xcb_render_query_pict_index_values_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ uint32_t num_values; /**< */
+ uint8_t pad1[20]; /**< */
+} xcb_render_query_pict_index_values_reply_t;
+
+/** Opcode for xcb_render_create_picture. */
+#define XCB_RENDER_CREATE_PICTURE 4
+
+/**
+ * @brief xcb_render_create_picture_request_t
+ **/
+typedef struct xcb_render_create_picture_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_render_picture_t pid; /**< */
+ xcb_drawable_t drawable; /**< */
+ xcb_render_pictformat_t format; /**< */
+ uint32_t value_mask; /**< */
+} xcb_render_create_picture_request_t;
+
+/** Opcode for xcb_render_change_picture. */
+#define XCB_RENDER_CHANGE_PICTURE 5
+
+/**
+ * @brief xcb_render_change_picture_request_t
+ **/
+typedef struct xcb_render_change_picture_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_render_picture_t picture; /**< */
+ uint32_t value_mask; /**< */
+} xcb_render_change_picture_request_t;
+
+/** Opcode for xcb_render_set_picture_clip_rectangles. */
+#define XCB_RENDER_SET_PICTURE_CLIP_RECTANGLES 6
+
+/**
+ * @brief xcb_render_set_picture_clip_rectangles_request_t
+ **/
+typedef struct xcb_render_set_picture_clip_rectangles_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_render_picture_t picture; /**< */
+ int16_t clip_x_origin; /**< */
+ int16_t clip_y_origin; /**< */
+} xcb_render_set_picture_clip_rectangles_request_t;
+
+/** Opcode for xcb_render_free_picture. */
+#define XCB_RENDER_FREE_PICTURE 7
+
+/**
+ * @brief xcb_render_free_picture_request_t
+ **/
+typedef struct xcb_render_free_picture_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_render_picture_t picture; /**< */
+} xcb_render_free_picture_request_t;
+
+/** Opcode for xcb_render_composite. */
+#define XCB_RENDER_COMPOSITE 8
+
+/**
+ * @brief xcb_render_composite_request_t
+ **/
+typedef struct xcb_render_composite_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ uint8_t op; /**< */
+ uint8_t pad0[3]; /**< */
+ xcb_render_picture_t src; /**< */
+ xcb_render_picture_t mask; /**< */
+ xcb_render_picture_t dst; /**< */
+ int16_t src_x; /**< */
+ int16_t src_y; /**< */
+ int16_t mask_x; /**< */
+ int16_t mask_y; /**< */
+ int16_t dst_x; /**< */
+ int16_t dst_y; /**< */
+ uint16_t width; /**< */
+ uint16_t height; /**< */
+} xcb_render_composite_request_t;
+
+/** Opcode for xcb_render_trapezoids. */
+#define XCB_RENDER_TRAPEZOIDS 10
+
+/**
+ * @brief xcb_render_trapezoids_request_t
+ **/
+typedef struct xcb_render_trapezoids_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ uint8_t op; /**< */
+ uint8_t pad0[3]; /**< */
+ xcb_render_picture_t src; /**< */
+ xcb_render_picture_t dst; /**< */
+ xcb_render_pictformat_t mask_format; /**< */
+ int16_t src_x; /**< */
+ int16_t src_y; /**< */
+} xcb_render_trapezoids_request_t;
+
+/** Opcode for xcb_render_triangles. */
+#define XCB_RENDER_TRIANGLES 11
+
+/**
+ * @brief xcb_render_triangles_request_t
+ **/
+typedef struct xcb_render_triangles_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ uint8_t op; /**< */
+ uint8_t pad0[3]; /**< */
+ xcb_render_picture_t src; /**< */
+ xcb_render_picture_t dst; /**< */
+ xcb_render_pictformat_t mask_format; /**< */
+ int16_t src_x; /**< */
+ int16_t src_y; /**< */
+} xcb_render_triangles_request_t;
+
+/** Opcode for xcb_render_tri_strip. */
+#define XCB_RENDER_TRI_STRIP 12
+
+/**
+ * @brief xcb_render_tri_strip_request_t
+ **/
+typedef struct xcb_render_tri_strip_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ uint8_t op; /**< */
+ uint8_t pad0[3]; /**< */
+ xcb_render_picture_t src; /**< */
+ xcb_render_picture_t dst; /**< */
+ xcb_render_pictformat_t mask_format; /**< */
+ int16_t src_x; /**< */
+ int16_t src_y; /**< */
+} xcb_render_tri_strip_request_t;
+
+/** Opcode for xcb_render_tri_fan. */
+#define XCB_RENDER_TRI_FAN 13
+
+/**
+ * @brief xcb_render_tri_fan_request_t
+ **/
+typedef struct xcb_render_tri_fan_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ uint8_t op; /**< */
+ uint8_t pad0[3]; /**< */
+ xcb_render_picture_t src; /**< */
+ xcb_render_picture_t dst; /**< */
+ xcb_render_pictformat_t mask_format; /**< */
+ int16_t src_x; /**< */
+ int16_t src_y; /**< */
+} xcb_render_tri_fan_request_t;
+
+/** Opcode for xcb_render_create_glyph_set. */
+#define XCB_RENDER_CREATE_GLYPH_SET 17
+
+/**
+ * @brief xcb_render_create_glyph_set_request_t
+ **/
+typedef struct xcb_render_create_glyph_set_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_render_glyphset_t gsid; /**< */
+ xcb_render_pictformat_t format; /**< */
+} xcb_render_create_glyph_set_request_t;
+
+/** Opcode for xcb_render_reference_glyph_set. */
+#define XCB_RENDER_REFERENCE_GLYPH_SET 18
+
+/**
+ * @brief xcb_render_reference_glyph_set_request_t
+ **/
+typedef struct xcb_render_reference_glyph_set_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_render_glyphset_t gsid; /**< */
+ xcb_render_glyphset_t existing; /**< */
+} xcb_render_reference_glyph_set_request_t;
+
+/** Opcode for xcb_render_free_glyph_set. */
+#define XCB_RENDER_FREE_GLYPH_SET 19
+
+/**
+ * @brief xcb_render_free_glyph_set_request_t
+ **/
+typedef struct xcb_render_free_glyph_set_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_render_glyphset_t glyphset; /**< */
+} xcb_render_free_glyph_set_request_t;
+
+/** Opcode for xcb_render_add_glyphs. */
+#define XCB_RENDER_ADD_GLYPHS 20
+
+/**
+ * @brief xcb_render_add_glyphs_request_t
+ **/
+typedef struct xcb_render_add_glyphs_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_render_glyphset_t glyphset; /**< */
+ uint32_t glyphs_len; /**< */
+} xcb_render_add_glyphs_request_t;
+
+/** Opcode for xcb_render_free_glyphs. */
+#define XCB_RENDER_FREE_GLYPHS 22
+
+/**
+ * @brief xcb_render_free_glyphs_request_t
+ **/
+typedef struct xcb_render_free_glyphs_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_render_glyphset_t glyphset; /**< */
+} xcb_render_free_glyphs_request_t;
+
+/** Opcode for xcb_render_composite_glyphs_8. */
+#define XCB_RENDER_COMPOSITE_GLYPHS_8 23
+
+/**
+ * @brief xcb_render_composite_glyphs_8_request_t
+ **/
+typedef struct xcb_render_composite_glyphs_8_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ uint8_t op; /**< */
+ uint8_t pad0[3]; /**< */
+ xcb_render_picture_t src; /**< */
+ xcb_render_picture_t dst; /**< */
+ xcb_render_pictformat_t mask_format; /**< */
+ xcb_render_glyphset_t glyphset; /**< */
+ int16_t src_x; /**< */
+ int16_t src_y; /**< */
+} xcb_render_composite_glyphs_8_request_t;
+
+/** Opcode for xcb_render_composite_glyphs_16. */
+#define XCB_RENDER_COMPOSITE_GLYPHS_16 24
+
+/**
+ * @brief xcb_render_composite_glyphs_16_request_t
+ **/
+typedef struct xcb_render_composite_glyphs_16_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ uint8_t op; /**< */
+ uint8_t pad0[3]; /**< */
+ xcb_render_picture_t src; /**< */
+ xcb_render_picture_t dst; /**< */
+ xcb_render_pictformat_t mask_format; /**< */
+ xcb_render_glyphset_t glyphset; /**< */
+ int16_t src_x; /**< */
+ int16_t src_y; /**< */
+} xcb_render_composite_glyphs_16_request_t;
+
+/** Opcode for xcb_render_composite_glyphs_32. */
+#define XCB_RENDER_COMPOSITE_GLYPHS_32 25
+
+/**
+ * @brief xcb_render_composite_glyphs_32_request_t
+ **/
+typedef struct xcb_render_composite_glyphs_32_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ uint8_t op; /**< */
+ uint8_t pad0[3]; /**< */
+ xcb_render_picture_t src; /**< */
+ xcb_render_picture_t dst; /**< */
+ xcb_render_pictformat_t mask_format; /**< */
+ xcb_render_glyphset_t glyphset; /**< */
+ int16_t src_x; /**< */
+ int16_t src_y; /**< */
+} xcb_render_composite_glyphs_32_request_t;
+
+/** Opcode for xcb_render_fill_rectangles. */
+#define XCB_RENDER_FILL_RECTANGLES 26
+
+/**
+ * @brief xcb_render_fill_rectangles_request_t
+ **/
+typedef struct xcb_render_fill_rectangles_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ uint8_t op; /**< */
+ uint8_t pad0[3]; /**< */
+ xcb_render_picture_t dst; /**< */
+ xcb_render_color_t color; /**< */
+} xcb_render_fill_rectangles_request_t;
+
+/** Opcode for xcb_render_create_cursor. */
+#define XCB_RENDER_CREATE_CURSOR 27
+
+/**
+ * @brief xcb_render_create_cursor_request_t
+ **/
+typedef struct xcb_render_create_cursor_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_cursor_t cid; /**< */
+ xcb_render_picture_t source; /**< */
+ uint16_t x; /**< */
+ uint16_t y; /**< */
+} xcb_render_create_cursor_request_t;
+
+/**
+ * @brief xcb_render_transform_t
+ **/
+typedef struct xcb_render_transform_t {
+ xcb_render_fixed_t matrix11; /**< */
+ xcb_render_fixed_t matrix12; /**< */
+ xcb_render_fixed_t matrix13; /**< */
+ xcb_render_fixed_t matrix21; /**< */
+ xcb_render_fixed_t matrix22; /**< */
+ xcb_render_fixed_t matrix23; /**< */
+ xcb_render_fixed_t matrix31; /**< */
+ xcb_render_fixed_t matrix32; /**< */
+ xcb_render_fixed_t matrix33; /**< */
+} xcb_render_transform_t;
+
+/**
+ * @brief xcb_render_transform_iterator_t
+ **/
+typedef struct xcb_render_transform_iterator_t {
+ xcb_render_transform_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_transform_iterator_t;
+
+/** Opcode for xcb_render_set_picture_transform. */
+#define XCB_RENDER_SET_PICTURE_TRANSFORM 28
+
+/**
+ * @brief xcb_render_set_picture_transform_request_t
+ **/
+typedef struct xcb_render_set_picture_transform_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_render_picture_t picture; /**< */
+ xcb_render_transform_t transform; /**< */
+} xcb_render_set_picture_transform_request_t;
+
+/**
+ * @brief xcb_render_query_filters_cookie_t
+ **/
+typedef struct xcb_render_query_filters_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_render_query_filters_cookie_t;
+
+/** Opcode for xcb_render_query_filters. */
+#define XCB_RENDER_QUERY_FILTERS 29
+
+/**
+ * @brief xcb_render_query_filters_request_t
+ **/
+typedef struct xcb_render_query_filters_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_drawable_t drawable; /**< */
+} xcb_render_query_filters_request_t;
+
+/**
+ * @brief xcb_render_query_filters_reply_t
+ **/
+typedef struct xcb_render_query_filters_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ uint32_t num_aliases; /**< */
+ uint32_t num_filters; /**< */
+ uint8_t pad1[16]; /**< */
+} xcb_render_query_filters_reply_t;
+
+/** Opcode for xcb_render_set_picture_filter. */
+#define XCB_RENDER_SET_PICTURE_FILTER 30
+
+/**
+ * @brief xcb_render_set_picture_filter_request_t
+ **/
+typedef struct xcb_render_set_picture_filter_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_render_picture_t picture; /**< */
+ uint16_t filter_len; /**< */
+ uint8_t pad0[2]; /**< */
+} xcb_render_set_picture_filter_request_t;
+
+/**
+ * @brief xcb_render_animcursorelt_t
+ **/
+typedef struct xcb_render_animcursorelt_t {
+ xcb_cursor_t cursor; /**< */
+ uint32_t delay; /**< */
+} xcb_render_animcursorelt_t;
+
+/**
+ * @brief xcb_render_animcursorelt_iterator_t
+ **/
+typedef struct xcb_render_animcursorelt_iterator_t {
+ xcb_render_animcursorelt_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_animcursorelt_iterator_t;
+
+/** Opcode for xcb_render_create_anim_cursor. */
+#define XCB_RENDER_CREATE_ANIM_CURSOR 31
+
+/**
+ * @brief xcb_render_create_anim_cursor_request_t
+ **/
+typedef struct xcb_render_create_anim_cursor_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_cursor_t cid; /**< */
+} xcb_render_create_anim_cursor_request_t;
+
+/**
+ * @brief xcb_render_spanfix_t
+ **/
+typedef struct xcb_render_spanfix_t {
+ xcb_render_fixed_t l; /**< */
+ xcb_render_fixed_t r; /**< */
+ xcb_render_fixed_t y; /**< */
+} xcb_render_spanfix_t;
+
+/**
+ * @brief xcb_render_spanfix_iterator_t
+ **/
+typedef struct xcb_render_spanfix_iterator_t {
+ xcb_render_spanfix_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_spanfix_iterator_t;
+
+/**
+ * @brief xcb_render_trap_t
+ **/
+typedef struct xcb_render_trap_t {
+ xcb_render_spanfix_t top; /**< */
+ xcb_render_spanfix_t bot; /**< */
+} xcb_render_trap_t;
+
+/**
+ * @brief xcb_render_trap_iterator_t
+ **/
+typedef struct xcb_render_trap_iterator_t {
+ xcb_render_trap_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_render_trap_iterator_t;
+
+/** Opcode for xcb_render_add_traps. */
+#define XCB_RENDER_ADD_TRAPS 32
+
+/**
+ * @brief xcb_render_add_traps_request_t
+ **/
+typedef struct xcb_render_add_traps_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_render_picture_t picture; /**< */
+ int16_t x_off; /**< */
+ int16_t y_off; /**< */
+} xcb_render_add_traps_request_t;
+
+/** Opcode for xcb_render_create_solid_fill. */
+#define XCB_RENDER_CREATE_SOLID_FILL 33
+
+/**
+ * @brief xcb_render_create_solid_fill_request_t
+ **/
+typedef struct xcb_render_create_solid_fill_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_render_picture_t picture; /**< */
+ xcb_render_color_t color; /**< */
+} xcb_render_create_solid_fill_request_t;
+
+/** Opcode for xcb_render_create_linear_gradient. */
+#define XCB_RENDER_CREATE_LINEAR_GRADIENT 34
+
+/**
+ * @brief xcb_render_create_linear_gradient_request_t
+ **/
+typedef struct xcb_render_create_linear_gradient_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_render_picture_t picture; /**< */
+ xcb_render_pointfix_t p1; /**< */
+ xcb_render_pointfix_t p2; /**< */
+ uint32_t num_stops; /**< */
+} xcb_render_create_linear_gradient_request_t;
+
+/** Opcode for xcb_render_create_radial_gradient. */
+#define XCB_RENDER_CREATE_RADIAL_GRADIENT 35
+
+/**
+ * @brief xcb_render_create_radial_gradient_request_t
+ **/
+typedef struct xcb_render_create_radial_gradient_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_render_picture_t picture; /**< */
+ xcb_render_pointfix_t inner; /**< */
+ xcb_render_pointfix_t outer; /**< */
+ xcb_render_fixed_t inner_radius; /**< */
+ xcb_render_fixed_t outer_radius; /**< */
+ uint32_t num_stops; /**< */
+} xcb_render_create_radial_gradient_request_t;
+
+/** Opcode for xcb_render_create_conical_gradient. */
+#define XCB_RENDER_CREATE_CONICAL_GRADIENT 36
+
+/**
+ * @brief xcb_render_create_conical_gradient_request_t
+ **/
+typedef struct xcb_render_create_conical_gradient_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_render_picture_t picture; /**< */
+ xcb_render_pointfix_t center; /**< */
+ xcb_render_fixed_t angle; /**< */
+ uint32_t num_stops; /**< */
+} xcb_render_create_conical_gradient_request_t;
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_glyph_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_glyph_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_glyph_next
+ **
+ ** @param xcb_render_glyph_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_glyph_next (xcb_render_glyph_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_glyph_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_glyph_end
+ **
+ ** @param xcb_render_glyph_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_glyph_end (xcb_render_glyph_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_glyphset_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_glyphset_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_glyphset_next
+ **
+ ** @param xcb_render_glyphset_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_glyphset_next (xcb_render_glyphset_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_glyphset_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_glyphset_end
+ **
+ ** @param xcb_render_glyphset_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_glyphset_end (xcb_render_glyphset_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_picture_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_picture_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_picture_next
+ **
+ ** @param xcb_render_picture_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_picture_next (xcb_render_picture_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_picture_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_picture_end
+ **
+ ** @param xcb_render_picture_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_picture_end (xcb_render_picture_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_pictformat_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_pictformat_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_pictformat_next
+ **
+ ** @param xcb_render_pictformat_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_pictformat_next (xcb_render_pictformat_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_pictformat_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_pictformat_end
+ **
+ ** @param xcb_render_pictformat_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_pictformat_end (xcb_render_pictformat_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_fixed_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_fixed_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_fixed_next
+ **
+ ** @param xcb_render_fixed_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_fixed_next (xcb_render_fixed_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_fixed_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_fixed_end
+ **
+ ** @param xcb_render_fixed_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_fixed_end (xcb_render_fixed_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_directformat_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_directformat_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_directformat_next
+ **
+ ** @param xcb_render_directformat_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_directformat_next (xcb_render_directformat_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_directformat_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_directformat_end
+ **
+ ** @param xcb_render_directformat_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_directformat_end (xcb_render_directformat_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_pictforminfo_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_pictforminfo_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_pictforminfo_next
+ **
+ ** @param xcb_render_pictforminfo_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_pictforminfo_next (xcb_render_pictforminfo_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_pictforminfo_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_pictforminfo_end
+ **
+ ** @param xcb_render_pictforminfo_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_pictforminfo_end (xcb_render_pictforminfo_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_pictvisual_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_pictvisual_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_pictvisual_next
+ **
+ ** @param xcb_render_pictvisual_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_pictvisual_next (xcb_render_pictvisual_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_pictvisual_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_pictvisual_end
+ **
+ ** @param xcb_render_pictvisual_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_pictvisual_end (xcb_render_pictvisual_iterator_t i /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_pictvisual_t * xcb_render_pictdepth_visuals
+ **
+ ** @param const xcb_render_pictdepth_t *R
+ ** @returns xcb_render_pictvisual_t *
+ **
+ *****************************************************************************/
+
+xcb_render_pictvisual_t *
+xcb_render_pictdepth_visuals (const xcb_render_pictdepth_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_render_pictdepth_visuals_length
+ **
+ ** @param const xcb_render_pictdepth_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_render_pictdepth_visuals_length (const xcb_render_pictdepth_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_pictvisual_iterator_t xcb_render_pictdepth_visuals_iterator
+ **
+ ** @param const xcb_render_pictdepth_t *R
+ ** @returns xcb_render_pictvisual_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_render_pictvisual_iterator_t
+xcb_render_pictdepth_visuals_iterator (const xcb_render_pictdepth_t *R /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_pictdepth_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_pictdepth_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_pictdepth_next
+ **
+ ** @param xcb_render_pictdepth_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_pictdepth_next (xcb_render_pictdepth_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_pictdepth_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_pictdepth_end
+ **
+ ** @param xcb_render_pictdepth_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_pictdepth_end (xcb_render_pictdepth_iterator_t i /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_render_pictscreen_depths_length
+ **
+ ** @param const xcb_render_pictscreen_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_render_pictscreen_depths_length (const xcb_render_pictscreen_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_pictdepth_iterator_t xcb_render_pictscreen_depths_iterator
+ **
+ ** @param const xcb_render_pictscreen_t *R
+ ** @returns xcb_render_pictdepth_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_render_pictdepth_iterator_t
+xcb_render_pictscreen_depths_iterator (const xcb_render_pictscreen_t *R /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_pictscreen_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_pictscreen_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_pictscreen_next
+ **
+ ** @param xcb_render_pictscreen_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_pictscreen_next (xcb_render_pictscreen_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_pictscreen_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_pictscreen_end
+ **
+ ** @param xcb_render_pictscreen_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_pictscreen_end (xcb_render_pictscreen_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_indexvalue_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_indexvalue_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_indexvalue_next
+ **
+ ** @param xcb_render_indexvalue_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_indexvalue_next (xcb_render_indexvalue_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_indexvalue_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_indexvalue_end
+ **
+ ** @param xcb_render_indexvalue_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_indexvalue_end (xcb_render_indexvalue_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_color_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_color_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_color_next
+ **
+ ** @param xcb_render_color_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_color_next (xcb_render_color_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_color_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_color_end
+ **
+ ** @param xcb_render_color_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_color_end (xcb_render_color_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_pointfix_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_pointfix_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_pointfix_next
+ **
+ ** @param xcb_render_pointfix_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_pointfix_next (xcb_render_pointfix_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_pointfix_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_pointfix_end
+ **
+ ** @param xcb_render_pointfix_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_pointfix_end (xcb_render_pointfix_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_linefix_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_linefix_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_linefix_next
+ **
+ ** @param xcb_render_linefix_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_linefix_next (xcb_render_linefix_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_linefix_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_linefix_end
+ **
+ ** @param xcb_render_linefix_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_linefix_end (xcb_render_linefix_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_triangle_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_triangle_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_triangle_next
+ **
+ ** @param xcb_render_triangle_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_triangle_next (xcb_render_triangle_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_triangle_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_triangle_end
+ **
+ ** @param xcb_render_triangle_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_triangle_end (xcb_render_triangle_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_trapezoid_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_trapezoid_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_trapezoid_next
+ **
+ ** @param xcb_render_trapezoid_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_trapezoid_next (xcb_render_trapezoid_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_trapezoid_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_trapezoid_end
+ **
+ ** @param xcb_render_trapezoid_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_trapezoid_end (xcb_render_trapezoid_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_glyphinfo_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_glyphinfo_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_glyphinfo_next
+ **
+ ** @param xcb_render_glyphinfo_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_glyphinfo_next (xcb_render_glyphinfo_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_glyphinfo_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_glyphinfo_end
+ **
+ ** @param xcb_render_glyphinfo_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_glyphinfo_end (xcb_render_glyphinfo_iterator_t i /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_version_cookie_t xcb_render_query_version
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t client_major_version
+ ** @param uint32_t client_minor_version
+ ** @returns xcb_render_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_render_query_version_cookie_t
+xcb_render_query_version (xcb_connection_t *c /**< */,
+ uint32_t client_major_version /**< */,
+ uint32_t client_minor_version /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_version_cookie_t xcb_render_query_version_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t client_major_version
+ ** @param uint32_t client_minor_version
+ ** @returns xcb_render_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_render_query_version_cookie_t
+xcb_render_query_version_unchecked (xcb_connection_t *c /**< */,
+ uint32_t client_major_version /**< */,
+ uint32_t client_minor_version /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_render_query_version_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_version_reply_t * xcb_render_query_version_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_query_version_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_render_query_version_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_render_query_version_reply_t *
+xcb_render_query_version_reply (xcb_connection_t *c /**< */,
+ xcb_render_query_version_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_pict_formats_cookie_t xcb_render_query_pict_formats
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_render_query_pict_formats_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_render_query_pict_formats_cookie_t
+xcb_render_query_pict_formats (xcb_connection_t *c /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_pict_formats_cookie_t xcb_render_query_pict_formats_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_render_query_pict_formats_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_render_query_pict_formats_cookie_t
+xcb_render_query_pict_formats_unchecked (xcb_connection_t *c /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_pictforminfo_t * xcb_render_query_pict_formats_formats
+ **
+ ** @param const xcb_render_query_pict_formats_reply_t *R
+ ** @returns xcb_render_pictforminfo_t *
+ **
+ *****************************************************************************/
+
+xcb_render_pictforminfo_t *
+xcb_render_query_pict_formats_formats (const xcb_render_query_pict_formats_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_render_query_pict_formats_formats_length
+ **
+ ** @param const xcb_render_query_pict_formats_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_render_query_pict_formats_formats_length (const xcb_render_query_pict_formats_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_pictforminfo_iterator_t xcb_render_query_pict_formats_formats_iterator
+ **
+ ** @param const xcb_render_query_pict_formats_reply_t *R
+ ** @returns xcb_render_pictforminfo_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_render_pictforminfo_iterator_t
+xcb_render_query_pict_formats_formats_iterator (const xcb_render_query_pict_formats_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_render_query_pict_formats_screens_length
+ **
+ ** @param const xcb_render_query_pict_formats_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_render_query_pict_formats_screens_length (const xcb_render_query_pict_formats_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_pictscreen_iterator_t xcb_render_query_pict_formats_screens_iterator
+ **
+ ** @param const xcb_render_query_pict_formats_reply_t *R
+ ** @returns xcb_render_pictscreen_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_render_pictscreen_iterator_t
+xcb_render_query_pict_formats_screens_iterator (const xcb_render_query_pict_formats_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** uint32_t * xcb_render_query_pict_formats_subpixels
+ **
+ ** @param const xcb_render_query_pict_formats_reply_t *R
+ ** @returns uint32_t *
+ **
+ *****************************************************************************/
+
+uint32_t *
+xcb_render_query_pict_formats_subpixels (const xcb_render_query_pict_formats_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_render_query_pict_formats_subpixels_length
+ **
+ ** @param const xcb_render_query_pict_formats_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_render_query_pict_formats_subpixels_length (const xcb_render_query_pict_formats_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_query_pict_formats_subpixels_end
+ **
+ ** @param const xcb_render_query_pict_formats_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_query_pict_formats_subpixels_end (const xcb_render_query_pict_formats_reply_t *R /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_render_query_pict_formats_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_pict_formats_reply_t * xcb_render_query_pict_formats_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_query_pict_formats_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_render_query_pict_formats_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_render_query_pict_formats_reply_t *
+xcb_render_query_pict_formats_reply (xcb_connection_t *c /**< */,
+ xcb_render_query_pict_formats_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_pict_index_values_cookie_t xcb_render_query_pict_index_values
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_pictformat_t format
+ ** @returns xcb_render_query_pict_index_values_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_render_query_pict_index_values_cookie_t
+xcb_render_query_pict_index_values (xcb_connection_t *c /**< */,
+ xcb_render_pictformat_t format /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_pict_index_values_cookie_t xcb_render_query_pict_index_values_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_pictformat_t format
+ ** @returns xcb_render_query_pict_index_values_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_render_query_pict_index_values_cookie_t
+xcb_render_query_pict_index_values_unchecked (xcb_connection_t *c /**< */,
+ xcb_render_pictformat_t format /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_indexvalue_t * xcb_render_query_pict_index_values_values
+ **
+ ** @param const xcb_render_query_pict_index_values_reply_t *R
+ ** @returns xcb_render_indexvalue_t *
+ **
+ *****************************************************************************/
+
+xcb_render_indexvalue_t *
+xcb_render_query_pict_index_values_values (const xcb_render_query_pict_index_values_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_render_query_pict_index_values_values_length
+ **
+ ** @param const xcb_render_query_pict_index_values_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_render_query_pict_index_values_values_length (const xcb_render_query_pict_index_values_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_indexvalue_iterator_t xcb_render_query_pict_index_values_values_iterator
+ **
+ ** @param const xcb_render_query_pict_index_values_reply_t *R
+ ** @returns xcb_render_indexvalue_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_render_indexvalue_iterator_t
+xcb_render_query_pict_index_values_values_iterator (const xcb_render_query_pict_index_values_reply_t *R /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_render_query_pict_index_values_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_pict_index_values_reply_t * xcb_render_query_pict_index_values_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_query_pict_index_values_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_render_query_pict_index_values_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_render_query_pict_index_values_reply_t *
+xcb_render_query_pict_index_values_reply (xcb_connection_t *c /**< */,
+ xcb_render_query_pict_index_values_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_picture_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t pid
+ ** @param xcb_drawable_t drawable
+ ** @param xcb_render_pictformat_t format
+ ** @param uint32_t value_mask
+ ** @param const uint32_t *value_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_picture_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t pid /**< */,
+ xcb_drawable_t drawable /**< */,
+ xcb_render_pictformat_t format /**< */,
+ uint32_t value_mask /**< */,
+ const uint32_t *value_list /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_picture
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t pid
+ ** @param xcb_drawable_t drawable
+ ** @param xcb_render_pictformat_t format
+ ** @param uint32_t value_mask
+ ** @param const uint32_t *value_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_picture (xcb_connection_t *c /**< */,
+ xcb_render_picture_t pid /**< */,
+ xcb_drawable_t drawable /**< */,
+ xcb_render_pictformat_t format /**< */,
+ uint32_t value_mask /**< */,
+ const uint32_t *value_list /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_change_picture_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param uint32_t value_mask
+ ** @param const uint32_t *value_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_change_picture_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ uint32_t value_mask /**< */,
+ const uint32_t *value_list /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_change_picture
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param uint32_t value_mask
+ ** @param const uint32_t *value_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_change_picture (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ uint32_t value_mask /**< */,
+ const uint32_t *value_list /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_set_picture_clip_rectangles_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param int16_t clip_x_origin
+ ** @param int16_t clip_y_origin
+ ** @param uint32_t rectangles_len
+ ** @param const xcb_rectangle_t *rectangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_set_picture_clip_rectangles_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ int16_t clip_x_origin /**< */,
+ int16_t clip_y_origin /**< */,
+ uint32_t rectangles_len /**< */,
+ const xcb_rectangle_t *rectangles /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_set_picture_clip_rectangles
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param int16_t clip_x_origin
+ ** @param int16_t clip_y_origin
+ ** @param uint32_t rectangles_len
+ ** @param const xcb_rectangle_t *rectangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_set_picture_clip_rectangles (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ int16_t clip_x_origin /**< */,
+ int16_t clip_y_origin /**< */,
+ uint32_t rectangles_len /**< */,
+ const xcb_rectangle_t *rectangles /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_free_picture_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_free_picture_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_free_picture
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_free_picture (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_composite_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t mask
+ ** @param xcb_render_picture_t dst
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param int16_t mask_x
+ ** @param int16_t mask_y
+ ** @param int16_t dst_x
+ ** @param int16_t dst_y
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_composite_checked (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t mask /**< */,
+ xcb_render_picture_t dst /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ int16_t mask_x /**< */,
+ int16_t mask_y /**< */,
+ int16_t dst_x /**< */,
+ int16_t dst_y /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_composite
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t mask
+ ** @param xcb_render_picture_t dst
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param int16_t mask_x
+ ** @param int16_t mask_y
+ ** @param int16_t dst_x
+ ** @param int16_t dst_y
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_composite (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t mask /**< */,
+ xcb_render_picture_t dst /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ int16_t mask_x /**< */,
+ int16_t mask_y /**< */,
+ int16_t dst_x /**< */,
+ int16_t dst_y /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_trapezoids_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t traps_len
+ ** @param const xcb_render_trapezoid_t *traps
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_trapezoids_checked (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t traps_len /**< */,
+ const xcb_render_trapezoid_t *traps /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_trapezoids
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t traps_len
+ ** @param const xcb_render_trapezoid_t *traps
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_trapezoids (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t traps_len /**< */,
+ const xcb_render_trapezoid_t *traps /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_triangles_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t triangles_len
+ ** @param const xcb_render_triangle_t *triangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_triangles_checked (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t triangles_len /**< */,
+ const xcb_render_triangle_t *triangles /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_triangles
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t triangles_len
+ ** @param const xcb_render_triangle_t *triangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_triangles (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t triangles_len /**< */,
+ const xcb_render_triangle_t *triangles /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_tri_strip_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t points_len
+ ** @param const xcb_render_pointfix_t *points
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_tri_strip_checked (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t points_len /**< */,
+ const xcb_render_pointfix_t *points /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_tri_strip
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t points_len
+ ** @param const xcb_render_pointfix_t *points
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_tri_strip (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t points_len /**< */,
+ const xcb_render_pointfix_t *points /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_tri_fan_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t points_len
+ ** @param const xcb_render_pointfix_t *points
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_tri_fan_checked (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t points_len /**< */,
+ const xcb_render_pointfix_t *points /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_tri_fan
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t points_len
+ ** @param const xcb_render_pointfix_t *points
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_tri_fan (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t points_len /**< */,
+ const xcb_render_pointfix_t *points /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_glyph_set_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t gsid
+ ** @param xcb_render_pictformat_t format
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_glyph_set_checked (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t gsid /**< */,
+ xcb_render_pictformat_t format /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_glyph_set
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t gsid
+ ** @param xcb_render_pictformat_t format
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_glyph_set (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t gsid /**< */,
+ xcb_render_pictformat_t format /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_reference_glyph_set_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t gsid
+ ** @param xcb_render_glyphset_t existing
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_reference_glyph_set_checked (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t gsid /**< */,
+ xcb_render_glyphset_t existing /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_reference_glyph_set
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t gsid
+ ** @param xcb_render_glyphset_t existing
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_reference_glyph_set (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t gsid /**< */,
+ xcb_render_glyphset_t existing /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_free_glyph_set_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t glyphset
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_free_glyph_set_checked (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t glyphset /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_free_glyph_set
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t glyphset
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_free_glyph_set (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t glyphset /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_add_glyphs_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param uint32_t glyphs_len
+ ** @param const uint32_t *glyphids
+ ** @param const xcb_render_glyphinfo_t *glyphs
+ ** @param uint32_t data_len
+ ** @param const uint8_t *data
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_add_glyphs_checked (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ uint32_t glyphs_len /**< */,
+ const uint32_t *glyphids /**< */,
+ const xcb_render_glyphinfo_t *glyphs /**< */,
+ uint32_t data_len /**< */,
+ const uint8_t *data /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_add_glyphs
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param uint32_t glyphs_len
+ ** @param const uint32_t *glyphids
+ ** @param const xcb_render_glyphinfo_t *glyphs
+ ** @param uint32_t data_len
+ ** @param const uint8_t *data
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_add_glyphs (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ uint32_t glyphs_len /**< */,
+ const uint32_t *glyphids /**< */,
+ const xcb_render_glyphinfo_t *glyphs /**< */,
+ uint32_t data_len /**< */,
+ const uint8_t *data /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_free_glyphs_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param uint32_t glyphs_len
+ ** @param const xcb_render_glyph_t *glyphs
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_free_glyphs_checked (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ uint32_t glyphs_len /**< */,
+ const xcb_render_glyph_t *glyphs /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_free_glyphs
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param uint32_t glyphs_len
+ ** @param const xcb_render_glyph_t *glyphs
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_free_glyphs (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ uint32_t glyphs_len /**< */,
+ const xcb_render_glyph_t *glyphs /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_composite_glyphs_8_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t glyphcmds_len
+ ** @param const uint8_t *glyphcmds
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_composite_glyphs_8_checked (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t glyphcmds_len /**< */,
+ const uint8_t *glyphcmds /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_composite_glyphs_8
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t glyphcmds_len
+ ** @param const uint8_t *glyphcmds
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_composite_glyphs_8 (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t glyphcmds_len /**< */,
+ const uint8_t *glyphcmds /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_composite_glyphs_16_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t glyphcmds_len
+ ** @param const uint8_t *glyphcmds
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_composite_glyphs_16_checked (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t glyphcmds_len /**< */,
+ const uint8_t *glyphcmds /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_composite_glyphs_16
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t glyphcmds_len
+ ** @param const uint8_t *glyphcmds
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_composite_glyphs_16 (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t glyphcmds_len /**< */,
+ const uint8_t *glyphcmds /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_composite_glyphs_32_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t glyphcmds_len
+ ** @param const uint8_t *glyphcmds
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_composite_glyphs_32_checked (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t glyphcmds_len /**< */,
+ const uint8_t *glyphcmds /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_composite_glyphs_32
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t glyphcmds_len
+ ** @param const uint8_t *glyphcmds
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_composite_glyphs_32 (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t glyphcmds_len /**< */,
+ const uint8_t *glyphcmds /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_fill_rectangles_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_color_t color
+ ** @param uint32_t rects_len
+ ** @param const xcb_rectangle_t *rects
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_fill_rectangles_checked (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_color_t color /**< */,
+ uint32_t rects_len /**< */,
+ const xcb_rectangle_t *rects /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_fill_rectangles
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_color_t color
+ ** @param uint32_t rects_len
+ ** @param const xcb_rectangle_t *rects
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_fill_rectangles (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_color_t color /**< */,
+ uint32_t rects_len /**< */,
+ const xcb_rectangle_t *rects /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_cursor_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t cid
+ ** @param xcb_render_picture_t source
+ ** @param uint16_t x
+ ** @param uint16_t y
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_cursor_checked (xcb_connection_t *c /**< */,
+ xcb_cursor_t cid /**< */,
+ xcb_render_picture_t source /**< */,
+ uint16_t x /**< */,
+ uint16_t y /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_cursor
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t cid
+ ** @param xcb_render_picture_t source
+ ** @param uint16_t x
+ ** @param uint16_t y
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_cursor (xcb_connection_t *c /**< */,
+ xcb_cursor_t cid /**< */,
+ xcb_render_picture_t source /**< */,
+ uint16_t x /**< */,
+ uint16_t y /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_transform_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_transform_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_transform_next
+ **
+ ** @param xcb_render_transform_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_transform_next (xcb_render_transform_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_transform_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_transform_end
+ **
+ ** @param xcb_render_transform_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_transform_end (xcb_render_transform_iterator_t i /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_set_picture_transform_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_transform_t transform
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_set_picture_transform_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_transform_t transform /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_set_picture_transform
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_transform_t transform
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_set_picture_transform (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_transform_t transform /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_filters_cookie_t xcb_render_query_filters
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_drawable_t drawable
+ ** @returns xcb_render_query_filters_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_render_query_filters_cookie_t
+xcb_render_query_filters (xcb_connection_t *c /**< */,
+ xcb_drawable_t drawable /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_filters_cookie_t xcb_render_query_filters_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_drawable_t drawable
+ ** @returns xcb_render_query_filters_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_render_query_filters_cookie_t
+xcb_render_query_filters_unchecked (xcb_connection_t *c /**< */,
+ xcb_drawable_t drawable /**< */);
+
+
+/*****************************************************************************
+ **
+ ** uint16_t * xcb_render_query_filters_aliases
+ **
+ ** @param const xcb_render_query_filters_reply_t *R
+ ** @returns uint16_t *
+ **
+ *****************************************************************************/
+
+uint16_t *
+xcb_render_query_filters_aliases (const xcb_render_query_filters_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_render_query_filters_aliases_length
+ **
+ ** @param const xcb_render_query_filters_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_render_query_filters_aliases_length (const xcb_render_query_filters_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_query_filters_aliases_end
+ **
+ ** @param const xcb_render_query_filters_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_query_filters_aliases_end (const xcb_render_query_filters_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_render_query_filters_filters_length
+ **
+ ** @param const xcb_render_query_filters_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_render_query_filters_filters_length (const xcb_render_query_filters_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_str_iterator_t xcb_render_query_filters_filters_iterator
+ **
+ ** @param const xcb_render_query_filters_reply_t *R
+ ** @returns xcb_str_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_str_iterator_t
+xcb_render_query_filters_filters_iterator (const xcb_render_query_filters_reply_t *R /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_render_query_filters_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_filters_reply_t * xcb_render_query_filters_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_query_filters_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_render_query_filters_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_render_query_filters_reply_t *
+xcb_render_query_filters_reply (xcb_connection_t *c /**< */,
+ xcb_render_query_filters_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_set_picture_filter_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param uint16_t filter_len
+ ** @param const char *filter
+ ** @param uint32_t values_len
+ ** @param const xcb_render_fixed_t *values
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_set_picture_filter_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ uint16_t filter_len /**< */,
+ const char *filter /**< */,
+ uint32_t values_len /**< */,
+ const xcb_render_fixed_t *values /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_set_picture_filter
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param uint16_t filter_len
+ ** @param const char *filter
+ ** @param uint32_t values_len
+ ** @param const xcb_render_fixed_t *values
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_set_picture_filter (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ uint16_t filter_len /**< */,
+ const char *filter /**< */,
+ uint32_t values_len /**< */,
+ const xcb_render_fixed_t *values /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_animcursorelt_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_animcursorelt_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_animcursorelt_next
+ **
+ ** @param xcb_render_animcursorelt_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_animcursorelt_next (xcb_render_animcursorelt_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_animcursorelt_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_animcursorelt_end
+ **
+ ** @param xcb_render_animcursorelt_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_animcursorelt_end (xcb_render_animcursorelt_iterator_t i /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_anim_cursor_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t cid
+ ** @param uint32_t cursors_len
+ ** @param const xcb_render_animcursorelt_t *cursors
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_anim_cursor_checked (xcb_connection_t *c /**< */,
+ xcb_cursor_t cid /**< */,
+ uint32_t cursors_len /**< */,
+ const xcb_render_animcursorelt_t *cursors /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_anim_cursor
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t cid
+ ** @param uint32_t cursors_len
+ ** @param const xcb_render_animcursorelt_t *cursors
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_anim_cursor (xcb_connection_t *c /**< */,
+ xcb_cursor_t cid /**< */,
+ uint32_t cursors_len /**< */,
+ const xcb_render_animcursorelt_t *cursors /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_spanfix_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_spanfix_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_spanfix_next
+ **
+ ** @param xcb_render_spanfix_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_spanfix_next (xcb_render_spanfix_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_spanfix_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_spanfix_end
+ **
+ ** @param xcb_render_spanfix_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_spanfix_end (xcb_render_spanfix_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_render_trap_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_render_trap_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_render_trap_next
+ **
+ ** @param xcb_render_trap_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_trap_next (xcb_render_trap_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_render_trap_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_trap_end
+ **
+ ** @param xcb_render_trap_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_trap_end (xcb_render_trap_iterator_t i /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_add_traps_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param int16_t x_off
+ ** @param int16_t y_off
+ ** @param uint32_t traps_len
+ ** @param const xcb_render_trap_t *traps
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_add_traps_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ int16_t x_off /**< */,
+ int16_t y_off /**< */,
+ uint32_t traps_len /**< */,
+ const xcb_render_trap_t *traps /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_add_traps
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param int16_t x_off
+ ** @param int16_t y_off
+ ** @param uint32_t traps_len
+ ** @param const xcb_render_trap_t *traps
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_add_traps (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ int16_t x_off /**< */,
+ int16_t y_off /**< */,
+ uint32_t traps_len /**< */,
+ const xcb_render_trap_t *traps /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_solid_fill_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_color_t color
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_solid_fill_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_color_t color /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_solid_fill
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_color_t color
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_solid_fill (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_color_t color /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_linear_gradient_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_pointfix_t p1
+ ** @param xcb_render_pointfix_t p2
+ ** @param uint32_t num_stops
+ ** @param const xcb_render_fixed_t *stops
+ ** @param const xcb_render_color_t *colors
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_linear_gradient_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_pointfix_t p1 /**< */,
+ xcb_render_pointfix_t p2 /**< */,
+ uint32_t num_stops /**< */,
+ const xcb_render_fixed_t *stops /**< */,
+ const xcb_render_color_t *colors /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_linear_gradient
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_pointfix_t p1
+ ** @param xcb_render_pointfix_t p2
+ ** @param uint32_t num_stops
+ ** @param const xcb_render_fixed_t *stops
+ ** @param const xcb_render_color_t *colors
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_linear_gradient (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_pointfix_t p1 /**< */,
+ xcb_render_pointfix_t p2 /**< */,
+ uint32_t num_stops /**< */,
+ const xcb_render_fixed_t *stops /**< */,
+ const xcb_render_color_t *colors /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_radial_gradient_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_pointfix_t inner
+ ** @param xcb_render_pointfix_t outer
+ ** @param xcb_render_fixed_t inner_radius
+ ** @param xcb_render_fixed_t outer_radius
+ ** @param uint32_t num_stops
+ ** @param const xcb_render_fixed_t *stops
+ ** @param const xcb_render_color_t *colors
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_radial_gradient_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_pointfix_t inner /**< */,
+ xcb_render_pointfix_t outer /**< */,
+ xcb_render_fixed_t inner_radius /**< */,
+ xcb_render_fixed_t outer_radius /**< */,
+ uint32_t num_stops /**< */,
+ const xcb_render_fixed_t *stops /**< */,
+ const xcb_render_color_t *colors /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_radial_gradient
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_pointfix_t inner
+ ** @param xcb_render_pointfix_t outer
+ ** @param xcb_render_fixed_t inner_radius
+ ** @param xcb_render_fixed_t outer_radius
+ ** @param uint32_t num_stops
+ ** @param const xcb_render_fixed_t *stops
+ ** @param const xcb_render_color_t *colors
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_radial_gradient (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_pointfix_t inner /**< */,
+ xcb_render_pointfix_t outer /**< */,
+ xcb_render_fixed_t inner_radius /**< */,
+ xcb_render_fixed_t outer_radius /**< */,
+ uint32_t num_stops /**< */,
+ const xcb_render_fixed_t *stops /**< */,
+ const xcb_render_color_t *colors /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_conical_gradient_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_pointfix_t center
+ ** @param xcb_render_fixed_t angle
+ ** @param uint32_t num_stops
+ ** @param const xcb_render_fixed_t *stops
+ ** @param const xcb_render_color_t *colors
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_conical_gradient_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_pointfix_t center /**< */,
+ xcb_render_fixed_t angle /**< */,
+ uint32_t num_stops /**< */,
+ const xcb_render_fixed_t *stops /**< */,
+ const xcb_render_color_t *colors /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_conical_gradient
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_pointfix_t center
+ ** @param xcb_render_fixed_t angle
+ ** @param uint32_t num_stops
+ ** @param const xcb_render_fixed_t *stops
+ ** @param const xcb_render_color_t *colors
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_conical_gradient (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_pointfix_t center /**< */,
+ xcb_render_fixed_t angle /**< */,
+ uint32_t num_stops /**< */,
+ const xcb_render_fixed_t *stops /**< */,
+ const xcb_render_color_t *colors /**< */);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/**
+ * @}
+ */
diff --git a/src/3rdparty/xcb/include/xcb/shape.h b/src/3rdparty/xcb/include/xcb/shape.h
new file mode 100644
index 0000000000..107d2ff748
--- /dev/null
+++ b/src/3rdparty/xcb/include/xcb/shape.h
@@ -0,0 +1,1096 @@
+/*
+ * This file generated automatically from shape.xml by c_client.py.
+ * Edit at your peril.
+ */
+
+/**
+ * @defgroup XCB_Shape_API XCB Shape API
+ * @brief Shape XCB Protocol Implementation.
+ * @{
+ **/
+
+#ifndef __SHAPE_H
+#define __SHAPE_H
+
+#include "xcb.h"
+#include "xproto.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define XCB_SHAPE_MAJOR_VERSION 1
+#define XCB_SHAPE_MINOR_VERSION 1
+
+extern xcb_extension_t xcb_shape_id;
+
+typedef uint8_t xcb_shape_op_t;
+
+/**
+ * @brief xcb_shape_op_iterator_t
+ **/
+typedef struct xcb_shape_op_iterator_t {
+ xcb_shape_op_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_shape_op_iterator_t;
+
+typedef uint8_t xcb_shape_kind_t;
+
+/**
+ * @brief xcb_shape_kind_iterator_t
+ **/
+typedef struct xcb_shape_kind_iterator_t {
+ xcb_shape_kind_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_shape_kind_iterator_t;
+
+typedef enum xcb_shape_so_t {
+ XCB_SHAPE_SO_SET,
+ XCB_SHAPE_SO_UNION,
+ XCB_SHAPE_SO_INTERSECT,
+ XCB_SHAPE_SO_SUBTRACT,
+ XCB_SHAPE_SO_INVERT
+} xcb_shape_so_t;
+
+typedef enum xcb_shape_sk_t {
+ XCB_SHAPE_SK_BOUNDING,
+ XCB_SHAPE_SK_CLIP,
+ XCB_SHAPE_SK_INPUT
+} xcb_shape_sk_t;
+
+/** Opcode for xcb_shape_notify. */
+#define XCB_SHAPE_NOTIFY 0
+
+/**
+ * @brief xcb_shape_notify_event_t
+ **/
+typedef struct xcb_shape_notify_event_t {
+ uint8_t response_type; /**< */
+ xcb_shape_kind_t shape_kind; /**< */
+ uint16_t sequence; /**< */
+ xcb_window_t affected_window; /**< */
+ int16_t extents_x; /**< */
+ int16_t extents_y; /**< */
+ uint16_t extents_width; /**< */
+ uint16_t extents_height; /**< */
+ xcb_timestamp_t server_time; /**< */
+ uint8_t shaped; /**< */
+ uint8_t pad0[11]; /**< */
+} xcb_shape_notify_event_t;
+
+/**
+ * @brief xcb_shape_query_version_cookie_t
+ **/
+typedef struct xcb_shape_query_version_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_shape_query_version_cookie_t;
+
+/** Opcode for xcb_shape_query_version. */
+#define XCB_SHAPE_QUERY_VERSION 0
+
+/**
+ * @brief xcb_shape_query_version_request_t
+ **/
+typedef struct xcb_shape_query_version_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+} xcb_shape_query_version_request_t;
+
+/**
+ * @brief xcb_shape_query_version_reply_t
+ **/
+typedef struct xcb_shape_query_version_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ uint16_t major_version; /**< */
+ uint16_t minor_version; /**< */
+} xcb_shape_query_version_reply_t;
+
+/** Opcode for xcb_shape_rectangles. */
+#define XCB_SHAPE_RECTANGLES 1
+
+/**
+ * @brief xcb_shape_rectangles_request_t
+ **/
+typedef struct xcb_shape_rectangles_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_shape_op_t operation; /**< */
+ xcb_shape_kind_t destination_kind; /**< */
+ uint8_t ordering; /**< */
+ uint8_t pad0; /**< */
+ xcb_window_t destination_window; /**< */
+ int16_t x_offset; /**< */
+ int16_t y_offset; /**< */
+} xcb_shape_rectangles_request_t;
+
+/** Opcode for xcb_shape_mask. */
+#define XCB_SHAPE_MASK 2
+
+/**
+ * @brief xcb_shape_mask_request_t
+ **/
+typedef struct xcb_shape_mask_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_shape_op_t operation; /**< */
+ xcb_shape_kind_t destination_kind; /**< */
+ uint8_t pad0[2]; /**< */
+ xcb_window_t destination_window; /**< */
+ int16_t x_offset; /**< */
+ int16_t y_offset; /**< */
+ xcb_pixmap_t source_bitmap; /**< */
+} xcb_shape_mask_request_t;
+
+/** Opcode for xcb_shape_combine. */
+#define XCB_SHAPE_COMBINE 3
+
+/**
+ * @brief xcb_shape_combine_request_t
+ **/
+typedef struct xcb_shape_combine_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_shape_op_t operation; /**< */
+ xcb_shape_kind_t destination_kind; /**< */
+ xcb_shape_kind_t source_kind; /**< */
+ uint8_t pad0; /**< */
+ xcb_window_t destination_window; /**< */
+ int16_t x_offset; /**< */
+ int16_t y_offset; /**< */
+ xcb_window_t source_window; /**< */
+} xcb_shape_combine_request_t;
+
+/** Opcode for xcb_shape_offset. */
+#define XCB_SHAPE_OFFSET 4
+
+/**
+ * @brief xcb_shape_offset_request_t
+ **/
+typedef struct xcb_shape_offset_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_shape_kind_t destination_kind; /**< */
+ uint8_t pad0[3]; /**< */
+ xcb_window_t destination_window; /**< */
+ int16_t x_offset; /**< */
+ int16_t y_offset; /**< */
+} xcb_shape_offset_request_t;
+
+/**
+ * @brief xcb_shape_query_extents_cookie_t
+ **/
+typedef struct xcb_shape_query_extents_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_shape_query_extents_cookie_t;
+
+/** Opcode for xcb_shape_query_extents. */
+#define XCB_SHAPE_QUERY_EXTENTS 5
+
+/**
+ * @brief xcb_shape_query_extents_request_t
+ **/
+typedef struct xcb_shape_query_extents_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_window_t destination_window; /**< */
+} xcb_shape_query_extents_request_t;
+
+/**
+ * @brief xcb_shape_query_extents_reply_t
+ **/
+typedef struct xcb_shape_query_extents_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ uint8_t bounding_shaped; /**< */
+ uint8_t clip_shaped; /**< */
+ uint8_t pad1[2]; /**< */
+ int16_t bounding_shape_extents_x; /**< */
+ int16_t bounding_shape_extents_y; /**< */
+ uint16_t bounding_shape_extents_width; /**< */
+ uint16_t bounding_shape_extents_height; /**< */
+ int16_t clip_shape_extents_x; /**< */
+ int16_t clip_shape_extents_y; /**< */
+ uint16_t clip_shape_extents_width; /**< */
+ uint16_t clip_shape_extents_height; /**< */
+} xcb_shape_query_extents_reply_t;
+
+/** Opcode for xcb_shape_select_input. */
+#define XCB_SHAPE_SELECT_INPUT 6
+
+/**
+ * @brief xcb_shape_select_input_request_t
+ **/
+typedef struct xcb_shape_select_input_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_window_t destination_window; /**< */
+ uint8_t enable; /**< */
+ uint8_t pad0[3]; /**< */
+} xcb_shape_select_input_request_t;
+
+/**
+ * @brief xcb_shape_input_selected_cookie_t
+ **/
+typedef struct xcb_shape_input_selected_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_shape_input_selected_cookie_t;
+
+/** Opcode for xcb_shape_input_selected. */
+#define XCB_SHAPE_INPUT_SELECTED 7
+
+/**
+ * @brief xcb_shape_input_selected_request_t
+ **/
+typedef struct xcb_shape_input_selected_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_window_t destination_window; /**< */
+} xcb_shape_input_selected_request_t;
+
+/**
+ * @brief xcb_shape_input_selected_reply_t
+ **/
+typedef struct xcb_shape_input_selected_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t enabled; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+} xcb_shape_input_selected_reply_t;
+
+/**
+ * @brief xcb_shape_get_rectangles_cookie_t
+ **/
+typedef struct xcb_shape_get_rectangles_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_shape_get_rectangles_cookie_t;
+
+/** Opcode for xcb_shape_get_rectangles. */
+#define XCB_SHAPE_GET_RECTANGLES 8
+
+/**
+ * @brief xcb_shape_get_rectangles_request_t
+ **/
+typedef struct xcb_shape_get_rectangles_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_window_t window; /**< */
+ xcb_shape_kind_t source_kind; /**< */
+ uint8_t pad0[3]; /**< */
+} xcb_shape_get_rectangles_request_t;
+
+/**
+ * @brief xcb_shape_get_rectangles_reply_t
+ **/
+typedef struct xcb_shape_get_rectangles_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t ordering; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ uint32_t rectangles_len; /**< */
+ uint8_t pad0[20]; /**< */
+} xcb_shape_get_rectangles_reply_t;
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_shape_op_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_shape_op_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_shape_op_next
+ **
+ ** @param xcb_shape_op_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_shape_op_next (xcb_shape_op_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_shape_op_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_shape_op_end
+ **
+ ** @param xcb_shape_op_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_shape_op_end (xcb_shape_op_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_shape_kind_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_shape_kind_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_shape_kind_next
+ **
+ ** @param xcb_shape_kind_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_shape_kind_next (xcb_shape_kind_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_shape_kind_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_shape_kind_end
+ **
+ ** @param xcb_shape_kind_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_shape_kind_end (xcb_shape_kind_iterator_t i /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_shape_query_version_cookie_t xcb_shape_query_version
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_shape_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shape_query_version_cookie_t
+xcb_shape_query_version (xcb_connection_t *c /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_shape_query_version_cookie_t xcb_shape_query_version_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_shape_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shape_query_version_cookie_t
+xcb_shape_query_version_unchecked (xcb_connection_t *c /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_shape_query_version_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_shape_query_version_reply_t * xcb_shape_query_version_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_query_version_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_shape_query_version_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_shape_query_version_reply_t *
+xcb_shape_query_version_reply (xcb_connection_t *c /**< */,
+ xcb_shape_query_version_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_rectangles_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_op_t operation
+ ** @param xcb_shape_kind_t destination_kind
+ ** @param uint8_t ordering
+ ** @param xcb_window_t destination_window
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @param uint32_t rectangles_len
+ ** @param const xcb_rectangle_t *rectangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_rectangles_checked (xcb_connection_t *c /**< */,
+ xcb_shape_op_t operation /**< */,
+ xcb_shape_kind_t destination_kind /**< */,
+ uint8_t ordering /**< */,
+ xcb_window_t destination_window /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */,
+ uint32_t rectangles_len /**< */,
+ const xcb_rectangle_t *rectangles /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_rectangles
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_op_t operation
+ ** @param xcb_shape_kind_t destination_kind
+ ** @param uint8_t ordering
+ ** @param xcb_window_t destination_window
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @param uint32_t rectangles_len
+ ** @param const xcb_rectangle_t *rectangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_rectangles (xcb_connection_t *c /**< */,
+ xcb_shape_op_t operation /**< */,
+ xcb_shape_kind_t destination_kind /**< */,
+ uint8_t ordering /**< */,
+ xcb_window_t destination_window /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */,
+ uint32_t rectangles_len /**< */,
+ const xcb_rectangle_t *rectangles /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_mask_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_op_t operation
+ ** @param xcb_shape_kind_t destination_kind
+ ** @param xcb_window_t destination_window
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @param xcb_pixmap_t source_bitmap
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_mask_checked (xcb_connection_t *c /**< */,
+ xcb_shape_op_t operation /**< */,
+ xcb_shape_kind_t destination_kind /**< */,
+ xcb_window_t destination_window /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */,
+ xcb_pixmap_t source_bitmap /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_mask
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_op_t operation
+ ** @param xcb_shape_kind_t destination_kind
+ ** @param xcb_window_t destination_window
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @param xcb_pixmap_t source_bitmap
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_mask (xcb_connection_t *c /**< */,
+ xcb_shape_op_t operation /**< */,
+ xcb_shape_kind_t destination_kind /**< */,
+ xcb_window_t destination_window /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */,
+ xcb_pixmap_t source_bitmap /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_combine_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_op_t operation
+ ** @param xcb_shape_kind_t destination_kind
+ ** @param xcb_shape_kind_t source_kind
+ ** @param xcb_window_t destination_window
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @param xcb_window_t source_window
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_combine_checked (xcb_connection_t *c /**< */,
+ xcb_shape_op_t operation /**< */,
+ xcb_shape_kind_t destination_kind /**< */,
+ xcb_shape_kind_t source_kind /**< */,
+ xcb_window_t destination_window /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */,
+ xcb_window_t source_window /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_combine
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_op_t operation
+ ** @param xcb_shape_kind_t destination_kind
+ ** @param xcb_shape_kind_t source_kind
+ ** @param xcb_window_t destination_window
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @param xcb_window_t source_window
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_combine (xcb_connection_t *c /**< */,
+ xcb_shape_op_t operation /**< */,
+ xcb_shape_kind_t destination_kind /**< */,
+ xcb_shape_kind_t source_kind /**< */,
+ xcb_window_t destination_window /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */,
+ xcb_window_t source_window /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_offset_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_kind_t destination_kind
+ ** @param xcb_window_t destination_window
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_offset_checked (xcb_connection_t *c /**< */,
+ xcb_shape_kind_t destination_kind /**< */,
+ xcb_window_t destination_window /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_offset
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_kind_t destination_kind
+ ** @param xcb_window_t destination_window
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_offset (xcb_connection_t *c /**< */,
+ xcb_shape_kind_t destination_kind /**< */,
+ xcb_window_t destination_window /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_shape_query_extents_cookie_t xcb_shape_query_extents
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t destination_window
+ ** @returns xcb_shape_query_extents_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shape_query_extents_cookie_t
+xcb_shape_query_extents (xcb_connection_t *c /**< */,
+ xcb_window_t destination_window /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_shape_query_extents_cookie_t xcb_shape_query_extents_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t destination_window
+ ** @returns xcb_shape_query_extents_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shape_query_extents_cookie_t
+xcb_shape_query_extents_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t destination_window /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_shape_query_extents_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_shape_query_extents_reply_t * xcb_shape_query_extents_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_query_extents_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_shape_query_extents_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_shape_query_extents_reply_t *
+xcb_shape_query_extents_reply (xcb_connection_t *c /**< */,
+ xcb_shape_query_extents_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_select_input_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t destination_window
+ ** @param uint8_t enable
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_select_input_checked (xcb_connection_t *c /**< */,
+ xcb_window_t destination_window /**< */,
+ uint8_t enable /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_select_input
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t destination_window
+ ** @param uint8_t enable
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_select_input (xcb_connection_t *c /**< */,
+ xcb_window_t destination_window /**< */,
+ uint8_t enable /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_shape_input_selected_cookie_t xcb_shape_input_selected
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t destination_window
+ ** @returns xcb_shape_input_selected_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shape_input_selected_cookie_t
+xcb_shape_input_selected (xcb_connection_t *c /**< */,
+ xcb_window_t destination_window /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_shape_input_selected_cookie_t xcb_shape_input_selected_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t destination_window
+ ** @returns xcb_shape_input_selected_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shape_input_selected_cookie_t
+xcb_shape_input_selected_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t destination_window /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_shape_input_selected_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_shape_input_selected_reply_t * xcb_shape_input_selected_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_input_selected_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_shape_input_selected_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_shape_input_selected_reply_t *
+xcb_shape_input_selected_reply (xcb_connection_t *c /**< */,
+ xcb_shape_input_selected_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_shape_get_rectangles_cookie_t xcb_shape_get_rectangles
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_shape_kind_t source_kind
+ ** @returns xcb_shape_get_rectangles_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shape_get_rectangles_cookie_t
+xcb_shape_get_rectangles (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_shape_kind_t source_kind /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_shape_get_rectangles_cookie_t xcb_shape_get_rectangles_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_shape_kind_t source_kind
+ ** @returns xcb_shape_get_rectangles_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shape_get_rectangles_cookie_t
+xcb_shape_get_rectangles_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_shape_kind_t source_kind /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_rectangle_t * xcb_shape_get_rectangles_rectangles
+ **
+ ** @param const xcb_shape_get_rectangles_reply_t *R
+ ** @returns xcb_rectangle_t *
+ **
+ *****************************************************************************/
+
+xcb_rectangle_t *
+xcb_shape_get_rectangles_rectangles (const xcb_shape_get_rectangles_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_shape_get_rectangles_rectangles_length
+ **
+ ** @param const xcb_shape_get_rectangles_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_shape_get_rectangles_rectangles_length (const xcb_shape_get_rectangles_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_rectangle_iterator_t xcb_shape_get_rectangles_rectangles_iterator
+ **
+ ** @param const xcb_shape_get_rectangles_reply_t *R
+ ** @returns xcb_rectangle_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_rectangle_iterator_t
+xcb_shape_get_rectangles_rectangles_iterator (const xcb_shape_get_rectangles_reply_t *R /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_shape_get_rectangles_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_shape_get_rectangles_reply_t * xcb_shape_get_rectangles_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_get_rectangles_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_shape_get_rectangles_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_shape_get_rectangles_reply_t *
+xcb_shape_get_rectangles_reply (xcb_connection_t *c /**< */,
+ xcb_shape_get_rectangles_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/**
+ * @}
+ */
diff --git a/src/3rdparty/xcb/include/xcb/shm.h b/src/3rdparty/xcb/include/xcb/shm.h
new file mode 100644
index 0000000000..bcb60d81f1
--- /dev/null
+++ b/src/3rdparty/xcb/include/xcb/shm.h
@@ -0,0 +1,738 @@
+/*
+ * This file generated automatically from shm.xml by c_client.py.
+ * Edit at your peril.
+ */
+
+/**
+ * @defgroup XCB_Shm_API XCB Shm API
+ * @brief Shm XCB Protocol Implementation.
+ * @{
+ **/
+
+#ifndef __SHM_H
+#define __SHM_H
+
+#include "xcb.h"
+#include "xproto.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define XCB_SHM_MAJOR_VERSION 1
+#define XCB_SHM_MINOR_VERSION 1
+
+extern xcb_extension_t xcb_shm_id;
+
+typedef uint32_t xcb_shm_seg_t;
+
+/**
+ * @brief xcb_shm_seg_iterator_t
+ **/
+typedef struct xcb_shm_seg_iterator_t {
+ xcb_shm_seg_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_shm_seg_iterator_t;
+
+/** Opcode for xcb_shm_completion. */
+#define XCB_SHM_COMPLETION 0
+
+/**
+ * @brief xcb_shm_completion_event_t
+ **/
+typedef struct xcb_shm_completion_event_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ xcb_drawable_t drawable; /**< */
+ uint16_t minor_event; /**< */
+ uint8_t major_event; /**< */
+ uint8_t pad1; /**< */
+ xcb_shm_seg_t shmseg; /**< */
+ uint32_t offset; /**< */
+} xcb_shm_completion_event_t;
+
+/** Opcode for xcb_shm_bad_seg. */
+#define XCB_SHM_BAD_SEG 0
+
+typedef xcb_value_error_t xcb_shm_bad_seg_error_t;
+
+/**
+ * @brief xcb_shm_query_version_cookie_t
+ **/
+typedef struct xcb_shm_query_version_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_shm_query_version_cookie_t;
+
+/** Opcode for xcb_shm_query_version. */
+#define XCB_SHM_QUERY_VERSION 0
+
+/**
+ * @brief xcb_shm_query_version_request_t
+ **/
+typedef struct xcb_shm_query_version_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+} xcb_shm_query_version_request_t;
+
+/**
+ * @brief xcb_shm_query_version_reply_t
+ **/
+typedef struct xcb_shm_query_version_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t shared_pixmaps; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ uint16_t major_version; /**< */
+ uint16_t minor_version; /**< */
+ uint16_t uid; /**< */
+ uint16_t gid; /**< */
+ uint8_t pixmap_format; /**< */
+ uint8_t pad0[15]; /**< */
+} xcb_shm_query_version_reply_t;
+
+/** Opcode for xcb_shm_attach. */
+#define XCB_SHM_ATTACH 1
+
+/**
+ * @brief xcb_shm_attach_request_t
+ **/
+typedef struct xcb_shm_attach_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_shm_seg_t shmseg; /**< */
+ uint32_t shmid; /**< */
+ uint8_t read_only; /**< */
+ uint8_t pad0[3]; /**< */
+} xcb_shm_attach_request_t;
+
+/** Opcode for xcb_shm_detach. */
+#define XCB_SHM_DETACH 2
+
+/**
+ * @brief xcb_shm_detach_request_t
+ **/
+typedef struct xcb_shm_detach_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_shm_seg_t shmseg; /**< */
+} xcb_shm_detach_request_t;
+
+/** Opcode for xcb_shm_put_image. */
+#define XCB_SHM_PUT_IMAGE 3
+
+/**
+ * @brief xcb_shm_put_image_request_t
+ **/
+typedef struct xcb_shm_put_image_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_drawable_t drawable; /**< */
+ xcb_gcontext_t gc; /**< */
+ uint16_t total_width; /**< */
+ uint16_t total_height; /**< */
+ uint16_t src_x; /**< */
+ uint16_t src_y; /**< */
+ uint16_t src_width; /**< */
+ uint16_t src_height; /**< */
+ int16_t dst_x; /**< */
+ int16_t dst_y; /**< */
+ uint8_t depth; /**< */
+ uint8_t format; /**< */
+ uint8_t send_event; /**< */
+ uint8_t pad0; /**< */
+ xcb_shm_seg_t shmseg; /**< */
+ uint32_t offset; /**< */
+} xcb_shm_put_image_request_t;
+
+/**
+ * @brief xcb_shm_get_image_cookie_t
+ **/
+typedef struct xcb_shm_get_image_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_shm_get_image_cookie_t;
+
+/** Opcode for xcb_shm_get_image. */
+#define XCB_SHM_GET_IMAGE 4
+
+/**
+ * @brief xcb_shm_get_image_request_t
+ **/
+typedef struct xcb_shm_get_image_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_drawable_t drawable; /**< */
+ int16_t x; /**< */
+ int16_t y; /**< */
+ uint16_t width; /**< */
+ uint16_t height; /**< */
+ uint32_t plane_mask; /**< */
+ uint8_t format; /**< */
+ uint8_t pad0[3]; /**< */
+ xcb_shm_seg_t shmseg; /**< */
+ uint32_t offset; /**< */
+} xcb_shm_get_image_request_t;
+
+/**
+ * @brief xcb_shm_get_image_reply_t
+ **/
+typedef struct xcb_shm_get_image_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t depth; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ xcb_visualid_t visual; /**< */
+ uint32_t size; /**< */
+} xcb_shm_get_image_reply_t;
+
+/** Opcode for xcb_shm_create_pixmap. */
+#define XCB_SHM_CREATE_PIXMAP 5
+
+/**
+ * @brief xcb_shm_create_pixmap_request_t
+ **/
+typedef struct xcb_shm_create_pixmap_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_pixmap_t pid; /**< */
+ xcb_drawable_t drawable; /**< */
+ uint16_t width; /**< */
+ uint16_t height; /**< */
+ uint8_t depth; /**< */
+ uint8_t pad0[3]; /**< */
+ xcb_shm_seg_t shmseg; /**< */
+ uint32_t offset; /**< */
+} xcb_shm_create_pixmap_request_t;
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_shm_seg_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_shm_seg_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_shm_seg_next
+ **
+ ** @param xcb_shm_seg_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_shm_seg_next (xcb_shm_seg_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_shm_seg_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_shm_seg_end
+ **
+ ** @param xcb_shm_seg_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_shm_seg_end (xcb_shm_seg_iterator_t i /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_shm_query_version_cookie_t xcb_shm_query_version
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_shm_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shm_query_version_cookie_t
+xcb_shm_query_version (xcb_connection_t *c /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_shm_query_version_cookie_t xcb_shm_query_version_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_shm_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shm_query_version_cookie_t
+xcb_shm_query_version_unchecked (xcb_connection_t *c /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_shm_query_version_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_shm_query_version_reply_t * xcb_shm_query_version_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shm_query_version_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_shm_query_version_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_shm_query_version_reply_t *
+xcb_shm_query_version_reply (xcb_connection_t *c /**< */,
+ xcb_shm_query_version_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shm_attach_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shm_seg_t shmseg
+ ** @param uint32_t shmid
+ ** @param uint8_t read_only
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shm_attach_checked (xcb_connection_t *c /**< */,
+ xcb_shm_seg_t shmseg /**< */,
+ uint32_t shmid /**< */,
+ uint8_t read_only /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shm_attach
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shm_seg_t shmseg
+ ** @param uint32_t shmid
+ ** @param uint8_t read_only
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shm_attach (xcb_connection_t *c /**< */,
+ xcb_shm_seg_t shmseg /**< */,
+ uint32_t shmid /**< */,
+ uint8_t read_only /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shm_detach_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shm_seg_t shmseg
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shm_detach_checked (xcb_connection_t *c /**< */,
+ xcb_shm_seg_t shmseg /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shm_detach
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shm_seg_t shmseg
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shm_detach (xcb_connection_t *c /**< */,
+ xcb_shm_seg_t shmseg /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shm_put_image_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_drawable_t drawable
+ ** @param xcb_gcontext_t gc
+ ** @param uint16_t total_width
+ ** @param uint16_t total_height
+ ** @param uint16_t src_x
+ ** @param uint16_t src_y
+ ** @param uint16_t src_width
+ ** @param uint16_t src_height
+ ** @param int16_t dst_x
+ ** @param int16_t dst_y
+ ** @param uint8_t depth
+ ** @param uint8_t format
+ ** @param uint8_t send_event
+ ** @param xcb_shm_seg_t shmseg
+ ** @param uint32_t offset
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shm_put_image_checked (xcb_connection_t *c /**< */,
+ xcb_drawable_t drawable /**< */,
+ xcb_gcontext_t gc /**< */,
+ uint16_t total_width /**< */,
+ uint16_t total_height /**< */,
+ uint16_t src_x /**< */,
+ uint16_t src_y /**< */,
+ uint16_t src_width /**< */,
+ uint16_t src_height /**< */,
+ int16_t dst_x /**< */,
+ int16_t dst_y /**< */,
+ uint8_t depth /**< */,
+ uint8_t format /**< */,
+ uint8_t send_event /**< */,
+ xcb_shm_seg_t shmseg /**< */,
+ uint32_t offset /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shm_put_image
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_drawable_t drawable
+ ** @param xcb_gcontext_t gc
+ ** @param uint16_t total_width
+ ** @param uint16_t total_height
+ ** @param uint16_t src_x
+ ** @param uint16_t src_y
+ ** @param uint16_t src_width
+ ** @param uint16_t src_height
+ ** @param int16_t dst_x
+ ** @param int16_t dst_y
+ ** @param uint8_t depth
+ ** @param uint8_t format
+ ** @param uint8_t send_event
+ ** @param xcb_shm_seg_t shmseg
+ ** @param uint32_t offset
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shm_put_image (xcb_connection_t *c /**< */,
+ xcb_drawable_t drawable /**< */,
+ xcb_gcontext_t gc /**< */,
+ uint16_t total_width /**< */,
+ uint16_t total_height /**< */,
+ uint16_t src_x /**< */,
+ uint16_t src_y /**< */,
+ uint16_t src_width /**< */,
+ uint16_t src_height /**< */,
+ int16_t dst_x /**< */,
+ int16_t dst_y /**< */,
+ uint8_t depth /**< */,
+ uint8_t format /**< */,
+ uint8_t send_event /**< */,
+ xcb_shm_seg_t shmseg /**< */,
+ uint32_t offset /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_shm_get_image_cookie_t xcb_shm_get_image
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_drawable_t drawable
+ ** @param int16_t x
+ ** @param int16_t y
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @param uint32_t plane_mask
+ ** @param uint8_t format
+ ** @param xcb_shm_seg_t shmseg
+ ** @param uint32_t offset
+ ** @returns xcb_shm_get_image_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shm_get_image_cookie_t
+xcb_shm_get_image (xcb_connection_t *c /**< */,
+ xcb_drawable_t drawable /**< */,
+ int16_t x /**< */,
+ int16_t y /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */,
+ uint32_t plane_mask /**< */,
+ uint8_t format /**< */,
+ xcb_shm_seg_t shmseg /**< */,
+ uint32_t offset /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_shm_get_image_cookie_t xcb_shm_get_image_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_drawable_t drawable
+ ** @param int16_t x
+ ** @param int16_t y
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @param uint32_t plane_mask
+ ** @param uint8_t format
+ ** @param xcb_shm_seg_t shmseg
+ ** @param uint32_t offset
+ ** @returns xcb_shm_get_image_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shm_get_image_cookie_t
+xcb_shm_get_image_unchecked (xcb_connection_t *c /**< */,
+ xcb_drawable_t drawable /**< */,
+ int16_t x /**< */,
+ int16_t y /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */,
+ uint32_t plane_mask /**< */,
+ uint8_t format /**< */,
+ xcb_shm_seg_t shmseg /**< */,
+ uint32_t offset /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_shm_get_image_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_shm_get_image_reply_t * xcb_shm_get_image_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shm_get_image_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_shm_get_image_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_shm_get_image_reply_t *
+xcb_shm_get_image_reply (xcb_connection_t *c /**< */,
+ xcb_shm_get_image_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shm_create_pixmap_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_pixmap_t pid
+ ** @param xcb_drawable_t drawable
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @param uint8_t depth
+ ** @param xcb_shm_seg_t shmseg
+ ** @param uint32_t offset
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shm_create_pixmap_checked (xcb_connection_t *c /**< */,
+ xcb_pixmap_t pid /**< */,
+ xcb_drawable_t drawable /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */,
+ uint8_t depth /**< */,
+ xcb_shm_seg_t shmseg /**< */,
+ uint32_t offset /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shm_create_pixmap
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_pixmap_t pid
+ ** @param xcb_drawable_t drawable
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @param uint8_t depth
+ ** @param xcb_shm_seg_t shmseg
+ ** @param uint32_t offset
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shm_create_pixmap (xcb_connection_t *c /**< */,
+ xcb_pixmap_t pid /**< */,
+ xcb_drawable_t drawable /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */,
+ uint8_t depth /**< */,
+ xcb_shm_seg_t shmseg /**< */,
+ uint32_t offset /**< */);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/**
+ * @}
+ */
diff --git a/src/3rdparty/xcb/include/xcb/sync.h b/src/3rdparty/xcb/include/xcb/sync.h
new file mode 100644
index 0000000000..50665c2865
--- /dev/null
+++ b/src/3rdparty/xcb/include/xcb/sync.h
@@ -0,0 +1,1707 @@
+/*
+ * This file generated automatically from sync.xml by c_client.py.
+ * Edit at your peril.
+ */
+
+/**
+ * @defgroup XCB_Sync_API XCB Sync API
+ * @brief Sync XCB Protocol Implementation.
+ * @{
+ **/
+
+#ifndef __SYNC_H
+#define __SYNC_H
+
+#include "xcb.h"
+#include "xproto.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define XCB_SYNC_MAJOR_VERSION 3
+#define XCB_SYNC_MINOR_VERSION 0
+
+extern xcb_extension_t xcb_sync_id;
+
+typedef uint32_t xcb_sync_alarm_t;
+
+/**
+ * @brief xcb_sync_alarm_iterator_t
+ **/
+typedef struct xcb_sync_alarm_iterator_t {
+ xcb_sync_alarm_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_sync_alarm_iterator_t;
+
+typedef enum xcb_sync_alarmstate_t {
+ XCB_SYNC_ALARMSTATE_ACTIVE,
+ XCB_SYNC_ALARMSTATE_INACTIVE,
+ XCB_SYNC_ALARMSTATE_DESTROYED
+} xcb_sync_alarmstate_t;
+
+typedef uint32_t xcb_sync_counter_t;
+
+/**
+ * @brief xcb_sync_counter_iterator_t
+ **/
+typedef struct xcb_sync_counter_iterator_t {
+ xcb_sync_counter_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_sync_counter_iterator_t;
+
+typedef enum xcb_sync_testtype_t {
+ XCB_SYNC_TESTTYPE_POSITIVE_TRANSITION,
+ XCB_SYNC_TESTTYPE_NEGATIVE_TRANSITION,
+ XCB_SYNC_TESTTYPE_POSITIVE_COMPARISON,
+ XCB_SYNC_TESTTYPE_NEGATIVE_COMPARISON
+} xcb_sync_testtype_t;
+
+typedef enum xcb_sync_valuetype_t {
+ XCB_SYNC_VALUETYPE_ABSOLUTE,
+ XCB_SYNC_VALUETYPE_RELATIVE
+} xcb_sync_valuetype_t;
+
+typedef enum xcb_sync_ca_t {
+ XCB_SYNC_CA_COUNTER = 1,
+ XCB_SYNC_CA_VALUE_TYPE = 2,
+ XCB_SYNC_CA_VALUE = 4,
+ XCB_SYNC_CA_TEST_TYPE = 8,
+ XCB_SYNC_CA_DELTA = 16,
+ XCB_SYNC_CA_EVENTS = 32
+} xcb_sync_ca_t;
+
+/**
+ * @brief xcb_sync_int64_t
+ **/
+typedef struct xcb_sync_int64_t {
+ int32_t hi; /**< */
+ uint32_t lo; /**< */
+} xcb_sync_int64_t;
+
+/**
+ * @brief xcb_sync_int64_iterator_t
+ **/
+typedef struct xcb_sync_int64_iterator_t {
+ xcb_sync_int64_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_sync_int64_iterator_t;
+
+/**
+ * @brief xcb_sync_systemcounter_t
+ **/
+typedef struct xcb_sync_systemcounter_t {
+ xcb_sync_counter_t counter; /**< */
+ xcb_sync_int64_t resolution; /**< */
+ uint16_t name_len; /**< */
+} xcb_sync_systemcounter_t;
+
+/**
+ * @brief xcb_sync_systemcounter_iterator_t
+ **/
+typedef struct xcb_sync_systemcounter_iterator_t {
+ xcb_sync_systemcounter_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_sync_systemcounter_iterator_t;
+
+/**
+ * @brief xcb_sync_trigger_t
+ **/
+typedef struct xcb_sync_trigger_t {
+ xcb_sync_counter_t counter; /**< */
+ uint32_t wait_type; /**< */
+ xcb_sync_int64_t wait_value; /**< */
+ uint32_t test_type; /**< */
+} xcb_sync_trigger_t;
+
+/**
+ * @brief xcb_sync_trigger_iterator_t
+ **/
+typedef struct xcb_sync_trigger_iterator_t {
+ xcb_sync_trigger_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_sync_trigger_iterator_t;
+
+/**
+ * @brief xcb_sync_waitcondition_t
+ **/
+typedef struct xcb_sync_waitcondition_t {
+ xcb_sync_trigger_t trigger; /**< */
+ xcb_sync_int64_t event_threshold; /**< */
+} xcb_sync_waitcondition_t;
+
+/**
+ * @brief xcb_sync_waitcondition_iterator_t
+ **/
+typedef struct xcb_sync_waitcondition_iterator_t {
+ xcb_sync_waitcondition_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_sync_waitcondition_iterator_t;
+
+/** Opcode for xcb_sync_counter. */
+#define XCB_SYNC_COUNTER 0
+
+/**
+ * @brief xcb_sync_counter_error_t
+ **/
+typedef struct xcb_sync_counter_error_t {
+ uint8_t response_type; /**< */
+ uint8_t error_code; /**< */
+ uint16_t sequence; /**< */
+ uint32_t bad_counter; /**< */
+ uint16_t minor_opcode; /**< */
+ uint8_t major_opcode; /**< */
+} xcb_sync_counter_error_t;
+
+/** Opcode for xcb_sync_alarm. */
+#define XCB_SYNC_ALARM 1
+
+/**
+ * @brief xcb_sync_alarm_error_t
+ **/
+typedef struct xcb_sync_alarm_error_t {
+ uint8_t response_type; /**< */
+ uint8_t error_code; /**< */
+ uint16_t sequence; /**< */
+ uint32_t bad_alarm; /**< */
+ uint16_t minor_opcode; /**< */
+ uint8_t major_opcode; /**< */
+} xcb_sync_alarm_error_t;
+
+/**
+ * @brief xcb_sync_initialize_cookie_t
+ **/
+typedef struct xcb_sync_initialize_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_sync_initialize_cookie_t;
+
+/** Opcode for xcb_sync_initialize. */
+#define XCB_SYNC_INITIALIZE 0
+
+/**
+ * @brief xcb_sync_initialize_request_t
+ **/
+typedef struct xcb_sync_initialize_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ uint8_t desired_major_version; /**< */
+ uint8_t desired_minor_version; /**< */
+} xcb_sync_initialize_request_t;
+
+/**
+ * @brief xcb_sync_initialize_reply_t
+ **/
+typedef struct xcb_sync_initialize_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ uint8_t major_version; /**< */
+ uint8_t minor_version; /**< */
+ uint8_t pad1[22]; /**< */
+} xcb_sync_initialize_reply_t;
+
+/**
+ * @brief xcb_sync_list_system_counters_cookie_t
+ **/
+typedef struct xcb_sync_list_system_counters_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_sync_list_system_counters_cookie_t;
+
+/** Opcode for xcb_sync_list_system_counters. */
+#define XCB_SYNC_LIST_SYSTEM_COUNTERS 1
+
+/**
+ * @brief xcb_sync_list_system_counters_request_t
+ **/
+typedef struct xcb_sync_list_system_counters_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+} xcb_sync_list_system_counters_request_t;
+
+/**
+ * @brief xcb_sync_list_system_counters_reply_t
+ **/
+typedef struct xcb_sync_list_system_counters_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ uint32_t counters_len; /**< */
+ uint8_t pad1[20]; /**< */
+} xcb_sync_list_system_counters_reply_t;
+
+/** Opcode for xcb_sync_create_counter. */
+#define XCB_SYNC_CREATE_COUNTER 2
+
+/**
+ * @brief xcb_sync_create_counter_request_t
+ **/
+typedef struct xcb_sync_create_counter_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_sync_counter_t id; /**< */
+ xcb_sync_int64_t initial_value; /**< */
+} xcb_sync_create_counter_request_t;
+
+/** Opcode for xcb_sync_destroy_counter. */
+#define XCB_SYNC_DESTROY_COUNTER 6
+
+/**
+ * @brief xcb_sync_destroy_counter_request_t
+ **/
+typedef struct xcb_sync_destroy_counter_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_sync_counter_t counter; /**< */
+} xcb_sync_destroy_counter_request_t;
+
+/**
+ * @brief xcb_sync_query_counter_cookie_t
+ **/
+typedef struct xcb_sync_query_counter_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_sync_query_counter_cookie_t;
+
+/** Opcode for xcb_sync_query_counter. */
+#define XCB_SYNC_QUERY_COUNTER 5
+
+/**
+ * @brief xcb_sync_query_counter_request_t
+ **/
+typedef struct xcb_sync_query_counter_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_sync_counter_t counter; /**< */
+} xcb_sync_query_counter_request_t;
+
+/**
+ * @brief xcb_sync_query_counter_reply_t
+ **/
+typedef struct xcb_sync_query_counter_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ xcb_sync_int64_t counter_value; /**< */
+} xcb_sync_query_counter_reply_t;
+
+/** Opcode for xcb_sync_await. */
+#define XCB_SYNC_AWAIT 7
+
+/**
+ * @brief xcb_sync_await_request_t
+ **/
+typedef struct xcb_sync_await_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+} xcb_sync_await_request_t;
+
+/** Opcode for xcb_sync_change_counter. */
+#define XCB_SYNC_CHANGE_COUNTER 4
+
+/**
+ * @brief xcb_sync_change_counter_request_t
+ **/
+typedef struct xcb_sync_change_counter_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_sync_counter_t counter; /**< */
+ xcb_sync_int64_t amount; /**< */
+} xcb_sync_change_counter_request_t;
+
+/** Opcode for xcb_sync_set_counter. */
+#define XCB_SYNC_SET_COUNTER 3
+
+/**
+ * @brief xcb_sync_set_counter_request_t
+ **/
+typedef struct xcb_sync_set_counter_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_sync_counter_t counter; /**< */
+ xcb_sync_int64_t value; /**< */
+} xcb_sync_set_counter_request_t;
+
+/** Opcode for xcb_sync_create_alarm. */
+#define XCB_SYNC_CREATE_ALARM 8
+
+/**
+ * @brief xcb_sync_create_alarm_request_t
+ **/
+typedef struct xcb_sync_create_alarm_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_sync_alarm_t id; /**< */
+ uint32_t value_mask; /**< */
+} xcb_sync_create_alarm_request_t;
+
+/** Opcode for xcb_sync_change_alarm. */
+#define XCB_SYNC_CHANGE_ALARM 9
+
+/**
+ * @brief xcb_sync_change_alarm_request_t
+ **/
+typedef struct xcb_sync_change_alarm_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_sync_alarm_t id; /**< */
+ uint32_t value_mask; /**< */
+} xcb_sync_change_alarm_request_t;
+
+/** Opcode for xcb_sync_destroy_alarm. */
+#define XCB_SYNC_DESTROY_ALARM 11
+
+/**
+ * @brief xcb_sync_destroy_alarm_request_t
+ **/
+typedef struct xcb_sync_destroy_alarm_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_sync_alarm_t alarm; /**< */
+} xcb_sync_destroy_alarm_request_t;
+
+/**
+ * @brief xcb_sync_query_alarm_cookie_t
+ **/
+typedef struct xcb_sync_query_alarm_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_sync_query_alarm_cookie_t;
+
+/** Opcode for xcb_sync_query_alarm. */
+#define XCB_SYNC_QUERY_ALARM 10
+
+/**
+ * @brief xcb_sync_query_alarm_request_t
+ **/
+typedef struct xcb_sync_query_alarm_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_sync_alarm_t alarm; /**< */
+} xcb_sync_query_alarm_request_t;
+
+/**
+ * @brief xcb_sync_query_alarm_reply_t
+ **/
+typedef struct xcb_sync_query_alarm_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ xcb_sync_trigger_t trigger; /**< */
+ xcb_sync_int64_t delta; /**< */
+ uint8_t events; /**< */
+ uint8_t state; /**< */
+ uint8_t pad1[2]; /**< */
+} xcb_sync_query_alarm_reply_t;
+
+/** Opcode for xcb_sync_set_priority. */
+#define XCB_SYNC_SET_PRIORITY 12
+
+/**
+ * @brief xcb_sync_set_priority_request_t
+ **/
+typedef struct xcb_sync_set_priority_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ uint32_t id; /**< */
+ int32_t priority; /**< */
+} xcb_sync_set_priority_request_t;
+
+/**
+ * @brief xcb_sync_get_priority_cookie_t
+ **/
+typedef struct xcb_sync_get_priority_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_sync_get_priority_cookie_t;
+
+/** Opcode for xcb_sync_get_priority. */
+#define XCB_SYNC_GET_PRIORITY 13
+
+/**
+ * @brief xcb_sync_get_priority_request_t
+ **/
+typedef struct xcb_sync_get_priority_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ uint32_t id; /**< */
+} xcb_sync_get_priority_request_t;
+
+/**
+ * @brief xcb_sync_get_priority_reply_t
+ **/
+typedef struct xcb_sync_get_priority_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ int32_t priority; /**< */
+} xcb_sync_get_priority_reply_t;
+
+/** Opcode for xcb_sync_counter_notify. */
+#define XCB_SYNC_COUNTER_NOTIFY 0
+
+/**
+ * @brief xcb_sync_counter_notify_event_t
+ **/
+typedef struct xcb_sync_counter_notify_event_t {
+ uint8_t response_type; /**< */
+ uint8_t kind; /**< */
+ uint16_t sequence; /**< */
+ xcb_sync_counter_t counter; /**< */
+ xcb_sync_int64_t wait_value; /**< */
+ xcb_sync_int64_t counter_value; /**< */
+ xcb_timestamp_t timestamp; /**< */
+ uint16_t count; /**< */
+ uint8_t destroyed; /**< */
+ uint8_t pad0; /**< */
+} xcb_sync_counter_notify_event_t;
+
+/** Opcode for xcb_sync_alarm_notify. */
+#define XCB_SYNC_ALARM_NOTIFY 1
+
+/**
+ * @brief xcb_sync_alarm_notify_event_t
+ **/
+typedef struct xcb_sync_alarm_notify_event_t {
+ uint8_t response_type; /**< */
+ uint8_t kind; /**< */
+ uint16_t sequence; /**< */
+ xcb_sync_alarm_t alarm; /**< */
+ xcb_sync_int64_t counter_value; /**< */
+ xcb_sync_int64_t alarm_value; /**< */
+ xcb_timestamp_t timestamp; /**< */
+ uint8_t state; /**< */
+ uint8_t pad0[3]; /**< */
+} xcb_sync_alarm_notify_event_t;
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_sync_alarm_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_sync_alarm_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_sync_alarm_next
+ **
+ ** @param xcb_sync_alarm_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_sync_alarm_next (xcb_sync_alarm_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_sync_alarm_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_sync_alarm_end
+ **
+ ** @param xcb_sync_alarm_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_sync_alarm_end (xcb_sync_alarm_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_sync_counter_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_sync_counter_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_sync_counter_next
+ **
+ ** @param xcb_sync_counter_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_sync_counter_next (xcb_sync_counter_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_sync_counter_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_sync_counter_end
+ **
+ ** @param xcb_sync_counter_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_sync_counter_end (xcb_sync_counter_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_sync_int64_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_sync_int64_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_sync_int64_next
+ **
+ ** @param xcb_sync_int64_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_sync_int64_next (xcb_sync_int64_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_sync_int64_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_sync_int64_end
+ **
+ ** @param xcb_sync_int64_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_sync_int64_end (xcb_sync_int64_iterator_t i /**< */);
+
+
+/*****************************************************************************
+ **
+ ** char * xcb_sync_systemcounter_name
+ **
+ ** @param const xcb_sync_systemcounter_t *R
+ ** @returns char *
+ **
+ *****************************************************************************/
+
+char *
+xcb_sync_systemcounter_name (const xcb_sync_systemcounter_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_sync_systemcounter_name_length
+ **
+ ** @param const xcb_sync_systemcounter_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_sync_systemcounter_name_length (const xcb_sync_systemcounter_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_sync_systemcounter_name_end
+ **
+ ** @param const xcb_sync_systemcounter_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_sync_systemcounter_name_end (const xcb_sync_systemcounter_t *R /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_sync_systemcounter_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_sync_systemcounter_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_sync_systemcounter_next
+ **
+ ** @param xcb_sync_systemcounter_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_sync_systemcounter_next (xcb_sync_systemcounter_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_sync_systemcounter_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_sync_systemcounter_end
+ **
+ ** @param xcb_sync_systemcounter_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_sync_systemcounter_end (xcb_sync_systemcounter_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_sync_trigger_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_sync_trigger_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_sync_trigger_next
+ **
+ ** @param xcb_sync_trigger_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_sync_trigger_next (xcb_sync_trigger_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_sync_trigger_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_sync_trigger_end
+ **
+ ** @param xcb_sync_trigger_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_sync_trigger_end (xcb_sync_trigger_iterator_t i /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_sync_waitcondition_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_sync_waitcondition_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_sync_waitcondition_next
+ **
+ ** @param xcb_sync_waitcondition_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_sync_waitcondition_next (xcb_sync_waitcondition_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_sync_waitcondition_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_sync_waitcondition_end
+ **
+ ** @param xcb_sync_waitcondition_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_sync_waitcondition_end (xcb_sync_waitcondition_iterator_t i /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_sync_initialize_cookie_t xcb_sync_initialize
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t desired_major_version
+ ** @param uint8_t desired_minor_version
+ ** @returns xcb_sync_initialize_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_initialize_cookie_t
+xcb_sync_initialize (xcb_connection_t *c /**< */,
+ uint8_t desired_major_version /**< */,
+ uint8_t desired_minor_version /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_sync_initialize_cookie_t xcb_sync_initialize_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t desired_major_version
+ ** @param uint8_t desired_minor_version
+ ** @returns xcb_sync_initialize_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_initialize_cookie_t
+xcb_sync_initialize_unchecked (xcb_connection_t *c /**< */,
+ uint8_t desired_major_version /**< */,
+ uint8_t desired_minor_version /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_sync_initialize_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_sync_initialize_reply_t * xcb_sync_initialize_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_initialize_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_sync_initialize_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_sync_initialize_reply_t *
+xcb_sync_initialize_reply (xcb_connection_t *c /**< */,
+ xcb_sync_initialize_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_sync_list_system_counters_cookie_t xcb_sync_list_system_counters
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_sync_list_system_counters_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_list_system_counters_cookie_t
+xcb_sync_list_system_counters (xcb_connection_t *c /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_sync_list_system_counters_cookie_t xcb_sync_list_system_counters_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_sync_list_system_counters_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_list_system_counters_cookie_t
+xcb_sync_list_system_counters_unchecked (xcb_connection_t *c /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_sync_list_system_counters_counters_length
+ **
+ ** @param const xcb_sync_list_system_counters_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_sync_list_system_counters_counters_length (const xcb_sync_list_system_counters_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_sync_systemcounter_iterator_t xcb_sync_list_system_counters_counters_iterator
+ **
+ ** @param const xcb_sync_list_system_counters_reply_t *R
+ ** @returns xcb_sync_systemcounter_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_sync_systemcounter_iterator_t
+xcb_sync_list_system_counters_counters_iterator (const xcb_sync_list_system_counters_reply_t *R /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_sync_list_system_counters_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_sync_list_system_counters_reply_t * xcb_sync_list_system_counters_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_list_system_counters_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_sync_list_system_counters_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_sync_list_system_counters_reply_t *
+xcb_sync_list_system_counters_reply (xcb_connection_t *c /**< */,
+ xcb_sync_list_system_counters_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_create_counter_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t id
+ ** @param xcb_sync_int64_t initial_value
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_create_counter_checked (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t id /**< */,
+ xcb_sync_int64_t initial_value /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_create_counter
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t id
+ ** @param xcb_sync_int64_t initial_value
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_create_counter (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t id /**< */,
+ xcb_sync_int64_t initial_value /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_destroy_counter_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t counter
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_destroy_counter_checked (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t counter /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_destroy_counter
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t counter
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_destroy_counter (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t counter /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_sync_query_counter_cookie_t xcb_sync_query_counter
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t counter
+ ** @returns xcb_sync_query_counter_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_query_counter_cookie_t
+xcb_sync_query_counter (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t counter /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_sync_query_counter_cookie_t xcb_sync_query_counter_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t counter
+ ** @returns xcb_sync_query_counter_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_query_counter_cookie_t
+xcb_sync_query_counter_unchecked (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t counter /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_sync_query_counter_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_sync_query_counter_reply_t * xcb_sync_query_counter_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_query_counter_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_sync_query_counter_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_sync_query_counter_reply_t *
+xcb_sync_query_counter_reply (xcb_connection_t *c /**< */,
+ xcb_sync_query_counter_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_await_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t wait_list_len
+ ** @param const xcb_sync_waitcondition_t *wait_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_await_checked (xcb_connection_t *c /**< */,
+ uint32_t wait_list_len /**< */,
+ const xcb_sync_waitcondition_t *wait_list /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_await
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t wait_list_len
+ ** @param const xcb_sync_waitcondition_t *wait_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_await (xcb_connection_t *c /**< */,
+ uint32_t wait_list_len /**< */,
+ const xcb_sync_waitcondition_t *wait_list /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_change_counter_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t counter
+ ** @param xcb_sync_int64_t amount
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_change_counter_checked (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t counter /**< */,
+ xcb_sync_int64_t amount /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_change_counter
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t counter
+ ** @param xcb_sync_int64_t amount
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_change_counter (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t counter /**< */,
+ xcb_sync_int64_t amount /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_set_counter_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t counter
+ ** @param xcb_sync_int64_t value
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_set_counter_checked (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t counter /**< */,
+ xcb_sync_int64_t value /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_set_counter
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t counter
+ ** @param xcb_sync_int64_t value
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_set_counter (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t counter /**< */,
+ xcb_sync_int64_t value /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_create_alarm_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_alarm_t id
+ ** @param uint32_t value_mask
+ ** @param const uint32_t *value_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_create_alarm_checked (xcb_connection_t *c /**< */,
+ xcb_sync_alarm_t id /**< */,
+ uint32_t value_mask /**< */,
+ const uint32_t *value_list /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_create_alarm
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_alarm_t id
+ ** @param uint32_t value_mask
+ ** @param const uint32_t *value_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_create_alarm (xcb_connection_t *c /**< */,
+ xcb_sync_alarm_t id /**< */,
+ uint32_t value_mask /**< */,
+ const uint32_t *value_list /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_change_alarm_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_alarm_t id
+ ** @param uint32_t value_mask
+ ** @param const uint32_t *value_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_change_alarm_checked (xcb_connection_t *c /**< */,
+ xcb_sync_alarm_t id /**< */,
+ uint32_t value_mask /**< */,
+ const uint32_t *value_list /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_change_alarm
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_alarm_t id
+ ** @param uint32_t value_mask
+ ** @param const uint32_t *value_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_change_alarm (xcb_connection_t *c /**< */,
+ xcb_sync_alarm_t id /**< */,
+ uint32_t value_mask /**< */,
+ const uint32_t *value_list /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_destroy_alarm_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_alarm_t alarm
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_destroy_alarm_checked (xcb_connection_t *c /**< */,
+ xcb_sync_alarm_t alarm /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_destroy_alarm
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_alarm_t alarm
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_destroy_alarm (xcb_connection_t *c /**< */,
+ xcb_sync_alarm_t alarm /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_sync_query_alarm_cookie_t xcb_sync_query_alarm
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_alarm_t alarm
+ ** @returns xcb_sync_query_alarm_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_query_alarm_cookie_t
+xcb_sync_query_alarm (xcb_connection_t *c /**< */,
+ xcb_sync_alarm_t alarm /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_sync_query_alarm_cookie_t xcb_sync_query_alarm_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_alarm_t alarm
+ ** @returns xcb_sync_query_alarm_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_query_alarm_cookie_t
+xcb_sync_query_alarm_unchecked (xcb_connection_t *c /**< */,
+ xcb_sync_alarm_t alarm /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_sync_query_alarm_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_sync_query_alarm_reply_t * xcb_sync_query_alarm_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_query_alarm_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_sync_query_alarm_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_sync_query_alarm_reply_t *
+xcb_sync_query_alarm_reply (xcb_connection_t *c /**< */,
+ xcb_sync_query_alarm_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_set_priority_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t id
+ ** @param int32_t priority
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_set_priority_checked (xcb_connection_t *c /**< */,
+ uint32_t id /**< */,
+ int32_t priority /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_set_priority
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t id
+ ** @param int32_t priority
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_set_priority (xcb_connection_t *c /**< */,
+ uint32_t id /**< */,
+ int32_t priority /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_sync_get_priority_cookie_t xcb_sync_get_priority
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t id
+ ** @returns xcb_sync_get_priority_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_get_priority_cookie_t
+xcb_sync_get_priority (xcb_connection_t *c /**< */,
+ uint32_t id /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_sync_get_priority_cookie_t xcb_sync_get_priority_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t id
+ ** @returns xcb_sync_get_priority_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_get_priority_cookie_t
+xcb_sync_get_priority_unchecked (xcb_connection_t *c /**< */,
+ uint32_t id /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_sync_get_priority_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_sync_get_priority_reply_t * xcb_sync_get_priority_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_get_priority_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_sync_get_priority_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_sync_get_priority_reply_t *
+xcb_sync_get_priority_reply (xcb_connection_t *c /**< */,
+ xcb_sync_get_priority_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/**
+ * @}
+ */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_atom.h b/src/3rdparty/xcb/include/xcb/xcb_atom.h
new file mode 100644
index 0000000000..d5c4d6baa7
--- /dev/null
+++ b/src/3rdparty/xcb/include/xcb/xcb_atom.h
@@ -0,0 +1,18 @@
+#ifndef __XCB_ATOM_H__
+#define __XCB_ATOM_H__
+
+#include <xcb/xcb.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+char *xcb_atom_name_by_screen(const char *base, uint8_t screen);
+char *xcb_atom_name_by_resource(const char *base, uint32_t resource);
+char *xcb_atom_name_unique(const char *base, uint32_t id);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __XCB_ATOM_H__ */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_aux.h b/src/3rdparty/xcb/include/xcb/xcb_aux.h
new file mode 100644
index 0000000000..d49d4383e9
--- /dev/null
+++ b/src/3rdparty/xcb/include/xcb/xcb_aux.h
@@ -0,0 +1,214 @@
+#ifndef __XCB_AUX_H__
+#define __XCB_AUX_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+uint8_t xcb_aux_get_depth (xcb_connection_t *c,
+ xcb_screen_t *screen);
+
+uint8_t xcb_aux_get_depth_of_visual (xcb_screen_t *screen,
+ xcb_visualid_t id);
+
+xcb_screen_t *xcb_aux_get_screen (xcb_connection_t *c,
+ int screen);
+
+xcb_visualtype_t *xcb_aux_get_visualtype (xcb_connection_t *c,
+ int screen,
+ xcb_visualid_t vid);
+
+xcb_visualtype_t *
+xcb_aux_find_visual_by_id (xcb_screen_t *screen,
+ xcb_visualid_t id);
+
+xcb_visualtype_t *
+xcb_aux_find_visual_by_attrs (xcb_screen_t *screen,
+ int8_t class_,
+ int8_t depth);
+
+void xcb_aux_sync (xcb_connection_t *c);
+
+/* internal helper macro for XCB_AUX_ADD_PARAM
+It gives the offset of the field 'param' in the structure pointed to by
+'paramsp' in multiples of an uint32_t's size. */
+#define XCB_AUX_INTERNAL_OFFSETOF(paramsp, param) \
+ ((uint32_t const*)(&((paramsp)->param))-(uint32_t const*)(paramsp))
+
+/* add an optional parameter to an xcb_params_* structure
+parameters:
+ maskp: pointer to bitmask whos bits mark used parameters
+ paramsp: pointer to structure with parameters
+ param: parameter to set
+ value: value to set the parameter to
+*/
+#define XCB_AUX_ADD_PARAM(maskp, paramsp, param, value) \
+ ((*(maskp)|=1<<XCB_AUX_INTERNAL_OFFSETOF((paramsp),param)), \
+ ((paramsp)->param=(value)))
+
+typedef struct {
+ uint32_t back_pixmap;
+ uint32_t back_pixel;
+ uint32_t border_pixmap;
+ uint32_t border_pixel;
+ uint32_t bit_gravity;
+ uint32_t win_gravity;
+ uint32_t backing_store;
+ uint32_t backing_planes;
+ uint32_t backing_pixel;
+ uint32_t override_redirect;
+ uint32_t save_under;
+ uint32_t event_mask;
+ uint32_t dont_propagate;
+ uint32_t colormap;
+ uint32_t cursor;
+} xcb_params_cw_t;
+
+xcb_void_cookie_t
+xcb_aux_create_window (xcb_connection_t *c,
+ uint8_t depth,
+ xcb_window_t wid,
+ xcb_window_t parent,
+ int16_t x,
+ int16_t y,
+ uint16_t width,
+ uint16_t height,
+ uint16_t border_width,
+ uint16_t class_,
+ xcb_visualid_t visual,
+ uint32_t mask,
+ const xcb_params_cw_t *params);
+
+xcb_void_cookie_t
+xcb_aux_create_window_checked (xcb_connection_t *c,
+ uint8_t depth,
+ xcb_window_t wid,
+ xcb_window_t parent,
+ int16_t x,
+ int16_t y,
+ uint16_t width,
+ uint16_t height,
+ uint16_t border_width,
+ uint16_t class_,
+ xcb_visualid_t visual,
+ uint32_t mask,
+ const xcb_params_cw_t *params);
+
+xcb_void_cookie_t
+xcb_aux_change_window_attributes (xcb_connection_t *c,
+ xcb_window_t window,
+ uint32_t mask,
+ const xcb_params_cw_t *params);
+
+xcb_void_cookie_t
+xcb_aux_change_window_attributes_checked (xcb_connection_t *c,
+ xcb_window_t window,
+ uint32_t mask,
+ const xcb_params_cw_t *params);
+
+typedef struct {
+ int32_t x;
+ int32_t y;
+ uint32_t width;
+ uint32_t height;
+ uint32_t border_width;
+ uint32_t sibling;
+ uint32_t stack_mode;
+} xcb_params_configure_window_t;
+
+xcb_void_cookie_t
+xcb_aux_configure_window (xcb_connection_t *c,
+ xcb_window_t window,
+ uint16_t mask,
+ const xcb_params_configure_window_t *params);
+
+typedef struct {
+ uint32_t function;
+ uint32_t plane_mask;
+ uint32_t foreground;
+ uint32_t background;
+ uint32_t line_width;
+ uint32_t line_style;
+ uint32_t cap_style;
+ uint32_t join_style;
+ uint32_t fill_style;
+ uint32_t fill_rule;
+ uint32_t tile;
+ uint32_t stipple;
+ uint32_t tile_stipple_origin_x;
+ uint32_t tile_stipple_origin_y;
+ uint32_t font;
+ uint32_t subwindow_mode;
+ uint32_t graphics_exposures;
+ uint32_t clip_originX;
+ uint32_t clip_originY;
+ uint32_t mask;
+ uint32_t dash_offset;
+ uint32_t dash_list;
+ uint32_t arc_mode;
+} xcb_params_gc_t;
+
+xcb_void_cookie_t
+xcb_aux_create_gc (xcb_connection_t *c,
+ xcb_gcontext_t cid,
+ xcb_drawable_t drawable,
+ uint32_t mask,
+ const xcb_params_gc_t *params);
+
+xcb_void_cookie_t
+xcb_aux_create_gc_checked (xcb_connection_t *c,
+ xcb_gcontext_t gid,
+ xcb_drawable_t drawable,
+ uint32_t mask,
+ const xcb_params_gc_t *params);
+xcb_void_cookie_t
+xcb_aux_change_gc (xcb_connection_t *c,
+ xcb_gcontext_t gc,
+ uint32_t mask,
+ const xcb_params_gc_t *params);
+
+xcb_void_cookie_t
+xcb_aux_change_gc_checked (xcb_connection_t *c,
+ xcb_gcontext_t gc,
+ uint32_t mask,
+ const xcb_params_gc_t *params);
+typedef struct {
+ uint32_t key_click_percent;
+ uint32_t bell_percent;
+ uint32_t bell_pitch;
+ uint32_t bell_duration;
+ uint32_t led;
+ uint32_t led_mode;
+ uint32_t key;
+ uint32_t auto_repeat_mode;
+} xcb_params_keyboard_t;
+
+xcb_void_cookie_t
+xcb_aux_change_keyboard_control (xcb_connection_t *c,
+ uint32_t mask,
+ const xcb_params_keyboard_t *params);
+
+int
+xcb_aux_parse_color(char *color_name,
+ uint16_t *red, uint16_t *green, uint16_t *blue);
+
+xcb_void_cookie_t
+xcb_aux_set_line_attributes_checked (xcb_connection_t *dpy,
+ xcb_gcontext_t gc,
+ uint16_t linewidth,
+ int32_t linestyle,
+ int32_t capstyle,
+ int32_t joinstyle);
+
+xcb_void_cookie_t
+xcb_aux_clear_window(xcb_connection_t * dpy,
+ xcb_window_t w);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __XCB_AUX_H__ */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_bitops.h b/src/3rdparty/xcb/include/xcb/xcb_bitops.h
new file mode 100644
index 0000000000..a6872a1f30
--- /dev/null
+++ b/src/3rdparty/xcb/include/xcb/xcb_bitops.h
@@ -0,0 +1,212 @@
+#ifndef __XCB_BITOPS_H__
+#define __XCB_BITOPS_H__
+
+/* Copyright (C) 2007 Bart Massey
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or their
+ * institutions shall not be used in advertising or otherwise to promote the
+ * sale, use or other dealings in this Software without prior written
+ * authorization from the authors.
+ */
+
+#include <assert.h>
+#include <inttypes.h>
+#include <X11/Xfuncproto.h>
+
+/**
+ * @defgroup xcb__bitops XCB Bit Operations
+ *
+ * Inline functions for common bit ops used in XCB and elsewhere.
+ *
+ * @{
+ */
+
+
+/**
+ * Create a low-order bitmask.
+ * @param n Mask size.
+ * @return Mask.
+ *
+ * Create a bitmask with the lower @p n bits set and the
+ * rest of the word clear.
+ * @ingroup xcb__bitops
+ */
+_X_INLINE static uint32_t
+xcb_mask(uint32_t n)
+{
+ return n == 32 ? ~0 : (1 << n) - 1;
+}
+
+
+/**
+ * Population count.
+ * @param n Integer representing a bitset.
+ * @return Number of 1 bits in the bitset.
+ *
+ * This is a reasonably fast algorithm for counting the bits
+ * in a 32-bit word. Currently a classic binary
+ * divide-and-conquer popcount: popcount_2() from
+ * http://en.wikipedia.org/wiki/Hamming_weight.
+ * @ingroup xcb__bitops
+ */
+
+
+/* 15 ops, 3 long immediates, 14 stages, 9 alu ops, 9 alu stages */
+_X_INLINE static uint32_t
+xcb_popcount(uint32_t x)
+{
+ uint32_t m1 = 0x55555555;
+ uint32_t m2 = 0x33333333;
+ uint32_t m4 = 0x0f0f0f0f;
+ x -= (x >> 1) & m1;
+ x = (x & m2) + ((x >> 2) & m2);
+ x = (x + (x >> 4)) & m4;
+ x += x >> 8;
+ return (x + (x >> 16)) & 0x3f;
+}
+
+
+/**
+ * Round up to the next power-of-two unit size.
+ * @param base Number to be rounded up.
+ * @param pad Multiple to be rounded to; must be a power of two.
+ * @return Rounded-up number.
+ *
+ * Rounds @p base up to a multiple of @p pad, where @p pad
+ * is a power of two. The more general case is handled by
+ * xcb_roundup().
+ * @ingroup xcb__bitops
+ */
+_X_INLINE static uint32_t
+xcb_roundup_2 (uint32_t base, uint32_t pad)
+{
+ return (base + pad - 1) & -pad;
+}
+
+/**
+ * Round down to the next power-of-two unit size.
+ * @param base Number to be rounded down.
+ * @param pad Multiple to be rounded to; must be a power of two.
+ * @return Rounded-down number.
+ *
+ * Rounds @p base down to a multiple of @p pad, where @p pad
+ * is a power of two. The more general case is handled by
+ * xcb_rounddown().
+ * @ingroup xcb__bitops
+ */
+_X_INLINE static uint32_t
+xcb_rounddown_2 (uint32_t base, uint32_t pad)
+{
+ return base & -pad;
+}
+
+/**
+ * Round up to the next unit size.
+ * @param base Number to be rounded up.
+ * @param pad Multiple to be rounded to.
+ * @return Rounded-up number.
+ *
+ * This is a general routine for rounding @p base up
+ * to a multiple of @p pad. If you know that @p pad
+ * is a power of two, you should probably call xcb_roundup_2()
+ * instead.
+ * @ingroup xcb__bitops
+ */
+_X_INLINE static uint32_t
+xcb_roundup (uint32_t base, uint32_t pad)
+{
+ uint32_t b = base + pad - 1;
+ /* faster if pad is a power of two */
+ if (((pad - 1) & pad) == 0)
+ return b & -pad;
+ return b - b % pad;
+}
+
+
+/**
+ * Round down to the next unit size.
+ * @param base Number to be rounded down.
+ * @param pad Multiple to be rounded to.
+ * @return Rounded-down number.
+ *
+ * This is a general routine for rounding @p base down
+ * to a multiple of @p pad. If you know that @p pad
+ * is a power of two, you should probably call xcb_rounddown_2()
+ * instead.
+ * @ingroup xcb__bitops
+ */
+_X_INLINE static uint32_t
+xcb_rounddown (uint32_t base, uint32_t pad)
+{
+ /* faster if pad is a power of two */
+ if (((pad - 1) & pad) == 0)
+ return base & -pad;
+ return base - base % pad;
+}
+
+
+/**
+ * Reverse bits of word.
+ * @param x Target word.
+ * @param n Number of low-order bits to reverse.
+ * @return Word with low @p n bits reversed, all others 0.
+ *
+ * Reverses the bottom @p n bits of @p x.
+ * @ingroup xcb__bitops
+ */
+_X_INLINE static uint32_t
+xcb_bit_reverse(uint32_t x, uint8_t n) {
+ uint32_t m1 = 0x00ff00ff;
+ uint32_t m2 = 0x0f0f0f0f;
+ uint32_t m3 = 0x33333333;
+ uint32_t m4 = 0x55555555;
+ x = ((x << 16) | (x >> 16));
+ x = ((x & m1) << 8) | ((x >> 8) & m1);
+ x = ((x & m2) << 4) | ((x >> 4) & m2);
+ x = ((x & m3) << 2) | ((x >> 2) & m3);
+ x = ((x & m4) << 1) | ((x >> 1) & m4);
+ x >>= 32 - n;
+ return x;
+}
+
+
+/**
+ * Host byte order.
+ * @return The byte order of the host.
+ *
+ * Tests the host's byte order and returns either
+ * XCB_IMAGE_ORDER_MSB_FIRST or XCB_IMAGE_ORDER_LSB_FIRST
+ * as appropriate.
+ * @ingroup xcb__bitops
+ */
+_X_INLINE static xcb_image_order_t
+xcb_host_byte_order(void) {
+ uint32_t endian_test = 0x01020304;
+
+ switch (*(char *)&endian_test) {
+ case 0x01:
+ return XCB_IMAGE_ORDER_MSB_FIRST;
+ case 0x04:
+ return XCB_IMAGE_ORDER_LSB_FIRST;
+ }
+ assert(0);
+}
+
+#endif /* __XCB_BITOPS_H__ */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_event.h b/src/3rdparty/xcb/include/xcb/xcb_event.h
new file mode 100644
index 0000000000..ee911fce51
--- /dev/null
+++ b/src/3rdparty/xcb/include/xcb/xcb_event.h
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2008-2009 Julien Danjou <julien@danjou.info>
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or
+ * their institutions shall not be used in advertising or otherwise to
+ * promote the sale, use or other dealings in this Software without
+ * prior written authorization from the authors.
+ */
+
+/**
+ * @defgroup xcb__event_t XCB Event Functions
+ *
+ * These functions ease the handling of X events received.
+ *
+ * @{
+ */
+
+#ifndef __XCB_EVENT_H__
+#define __XCB_EVENT_H__
+
+#include <xcb/xcb.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @brief Bit mask to find event type regardless of event source.
+ *
+ * Each event in the X11 protocol contains an 8-bit type code.
+ * The most-significant bit in this code is set if the event was
+ * generated from a SendEvent request. This mask can be used to
+ * determine the type of event regardless of how the event was
+ * generated. See the X11R6 protocol specification for details.
+ */
+#define XCB_EVENT_RESPONSE_TYPE_MASK (0x7f)
+#define XCB_EVENT_RESPONSE_TYPE(e) (e->response_type & XCB_EVENT_RESPONSE_TYPE_MASK)
+#define XCB_EVENT_SENT(e) (e->response_type & ~XCB_EVENT_RESPONSE_TYPE_MASK)
+
+/**
+ * @brief Convert an event response type to a label.
+ * @param type The event type.
+ * @return A string with the event name, or NULL if unknown.
+ */
+const char * xcb_event_get_label(uint8_t type);
+
+/**
+ * @brief Convert an event error type to a label.
+ * @param type The error type.
+ * @return A string with the event name, or NULL if unknown or if the event is
+ * not an error.
+ */
+const char * xcb_event_get_error_label(uint8_t type);
+
+/**
+ * @brief Convert an event request type to a label.
+ * @param type The request type.
+ * @return A string with the event name, or NULL if unknown or if the event is
+ * not an error.
+ */
+const char * xcb_event_get_request_label(uint8_t type);
+
+#ifdef __cplusplus
+}
+#endif
+
+/**
+ * @}
+ */
+
+#endif /* __XCB_EVENT_H__ */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_icccm.h b/src/3rdparty/xcb/include/xcb/xcb_icccm.h
new file mode 100644
index 0000000000..449a5c88ca
--- /dev/null
+++ b/src/3rdparty/xcb/include/xcb/xcb_icccm.h
@@ -0,0 +1,1049 @@
+#ifndef __XCB_ICCCM_H__
+#define __XCB_ICCCM_H__
+
+/*
+ * Copyright (C) 2008 Arnaud Fontaine <arnau@debian.org>
+ * Copyright (C) 2007-2008 Vincent Torri <vtorri@univ-evry.fr>
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or
+ * their institutions shall not be used in advertising or otherwise to
+ * promote the sale, use or other dealings in this Software without
+ * prior written authorization from the authors.
+ */
+
+/**
+ * @defgroup xcb__icccm_t XCB ICCCM Functions
+ *
+ * These functions allow easy handling of the protocol described in the
+ * Inter-Client Communication Conventions Manual.
+ *
+ * @{
+ */
+
+#include <xcb/xcb.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @brief TextProperty reply structure.
+ */
+typedef struct {
+/** Store reply to avoid memory allocation, should normally not be
+ used directly */
+xcb_get_property_reply_t *_reply;
+/** Encoding used */
+xcb_atom_t encoding;
+/** Length of the name field above */
+uint32_t name_len;
+/** Property value */
+char *name;
+/** Format, may be 8, 16 or 32 */
+uint8_t format;
+} xcb_icccm_get_text_property_reply_t;
+
+/**
+ * @brief Deliver a GetProperty request to the X server.
+ * @param c The connection to the X server.
+ * @param window Window X identifier.
+ * @param property Property atom to get.
+ * @return The request cookie.
+ *
+ * Allow to get a window property, in most case you might want to use
+ * above functions to get an ICCCM property for a given window.
+ */
+xcb_get_property_cookie_t xcb_icccm_get_text_property(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t property);
+
+/**
+ * @see xcb_icccm_get_text_property()
+ */
+xcb_get_property_cookie_t xcb_icccm_get_text_property_unchecked(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t property);
+
+/**
+ * @brief Fill given structure with the property value of a window.
+ * @param c The connection to the X server.
+ * @param cookie TextProperty request cookie.
+ * @param prop TextProperty reply which is to be filled.
+ * @param e Error if any.
+ * @return Return 1 on success, 0 otherwise.
+ *
+ * If the function return 0 (failure), the content of prop is unmodified and
+ * therefore the structure must not be wiped.
+ *
+ * The parameter e supplied to this function must be NULL if
+ * xcb_icccm_get_text_property_unchecked() is used. Otherwise, it stores
+ * the error if any. prop structure members should be freed by
+ * xcb_icccm_get_text_property_reply_wipe().
+ */
+uint8_t xcb_icccm_get_text_property_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_icccm_get_text_property_reply_t *prop,
+ xcb_generic_error_t **e);
+
+/**
+ * @brief Wipe prop structure members previously allocated by
+ * xcb_icccm_get_text_property_reply().
+ * @param prop prop structure whose members is going to be freed.
+ */
+void xcb_icccm_get_text_property_reply_wipe(xcb_icccm_get_text_property_reply_t *prop);
+
+/* WM_NAME */
+
+/**
+ * @brief Deliver a SetProperty request to set WM_NAME property value.
+ * @param c The connection to the X server.
+ * @param window Window X identifier.
+ * @param encoding Encoding used for the data passed in the name parameter, the set property will also have this encoding as its type.
+ * @param format Encoding format.
+ * @param name_len Length of name value to set.
+ * @param name Name value to set.
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_name_checked(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t encoding,
+ uint8_t format,
+ uint32_t name_len,
+ const char *name);
+
+/**
+ * @see xcb_icccm_set_wm_name_checked()
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_name(xcb_connection_t *c, xcb_window_t window,
+ xcb_atom_t encoding, uint8_t format,
+ uint32_t name_len, const char *name);
+
+/**
+ * @brief Deliver a GetProperty request to the X server for WM_NAME.
+ * @param c The connection to the X server.
+ * @param window Window X identifier.
+ * @return The request cookie.
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_name(xcb_connection_t *c,
+ xcb_window_t window);
+
+/**
+ * @see xcb_icccm_get_wm_name()
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_name_unchecked(xcb_connection_t *c,
+ xcb_window_t window);
+
+/**
+ * @brief Fill given structure with the WM_NAME property of a window.
+ * @param c The connection to the X server.
+ * @param cookie Request cookie.
+ * @param prop WM_NAME property value.
+ * @param e Error if any.
+ * @see xcb_icccm_get_text_property_reply()
+ * @return Return 1 on success, 0 otherwise.
+ */
+uint8_t xcb_icccm_get_wm_name_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_icccm_get_text_property_reply_t *prop,
+ xcb_generic_error_t **e);
+
+/* WM_ICON_NAME */
+
+/**
+ * @brief Deliver a SetProperty request to set WM_ICON_NAME property value.
+ * @param c The connection to the X server.
+ * @param window Window X identifier.
+ * @param encoding Encoding used for the data passed in the name parameter, the set property will also have this encoding as its type.
+ * @param format Encoding format.
+ * @param name_len Length of name value to set.
+ * @param name Name value to set.
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_icon_name_checked(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t encoding,
+ uint8_t format,
+ uint32_t name_len,
+ const char *name);
+
+/**
+ * @see xcb_icccm_set_wm_icon_name_checked()
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_icon_name(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t encoding,
+ uint8_t format,
+ uint32_t name_len,
+ const char *name);
+
+/**
+ * @brief Send request to get WM_ICON_NAME property of a window.
+ * @param c The connection to the X server.
+ * @param window Window X identifier.
+ * @return The request cookie.
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_icon_name(xcb_connection_t *c,
+ xcb_window_t window);
+
+/**
+ * @see xcb_icccm_get_wm_icon_name()
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_icon_name_unchecked(xcb_connection_t *c,
+ xcb_window_t window);
+
+/**
+ * @brief Fill given structure with the WM_ICON_NAME property of a window.
+ * @param c The connection to the X server.
+ * @param cookie Request cookie.
+ * @param prop WM_ICON_NAME property value.
+ * @param e Error if any.
+ * @see xcb_icccm_get_text_property_reply()
+ * @return Return 1 on success, 0 otherwise.
+ */
+uint8_t xcb_icccm_get_wm_icon_name_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_icccm_get_text_property_reply_t *prop,
+ xcb_generic_error_t **e);
+
+/* WM_COLORMAP_WINDOWS */
+
+/**
+ * @brief Deliver a ChangeProperty request to set WM_COLORMAP_WINDOWS property value.
+ * @param c The connection to the X server.
+ * @param wm_colormap_windows The WM_COLORMAP_WINDOWS atom
+ * @param window Window X identifier.
+ * @param list_len Windows list len.
+ * @param list Windows list.
+ * @return The request cookie.
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_colormap_windows_checked(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t wm_colormap_windows_atom,
+ uint32_t list_len,
+ const xcb_window_t *list);
+
+/**
+ * @see xcb_icccm_set_wm_colormap_windows_checked()
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_colormap_windows(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t wm_colormap_windows_atom,
+ uint32_t list_len,
+ const xcb_window_t *list);
+
+/**
+ * @brief WM_COLORMAP_WINDOWS structure.
+ */
+typedef struct {
+/** Length of the windows list */
+uint32_t windows_len;
+/** Windows list */
+xcb_window_t *windows;
+/** Store reply to avoid memory allocation, should normally not be
+ used directly */
+xcb_get_property_reply_t *_reply;
+} xcb_icccm_get_wm_colormap_windows_reply_t;
+
+/**
+ * @brief Send request to get WM_COLORMAP_WINDOWS property of a given window.
+ * @param c The connection to the X server.
+ * @param window Window X identifier.
+ * @return The request cookie.
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_colormap_windows(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t wm_colormap_windows_atom);
+
+/**
+ * @see xcb_icccm_get_wm_colormap_windows()
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_colormap_windows_unchecked(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t wm_colormap_windows_atom);
+
+/**
+ * @brief Fill the given structure with the WM_COLORMAP_WINDOWS property of a window.
+ * @param reply The reply of the GetProperty request.
+ * @param colormap_windows WM_COLORMAP property value.
+ * @return Return 1 on success, 0 otherwise.
+ *
+ * protocols structure members should be freed by
+ * xcb_icccm_get_wm_protocols_reply_wipe().
+ */
+uint8_t xcb_icccm_get_wm_colormap_windows_from_reply(xcb_get_property_reply_t *reply,
+ xcb_icccm_get_wm_colormap_windows_reply_t *colormap_windows);
+/**
+ * @brief Fill the given structure with the WM_COLORMAP_WINDOWS property of a window.
+ * @param c The connection to the X server.
+ * @param cookie Request cookie.
+ * @param protocols WM_COLORMAP_WINDOWS property value.
+ * @param e Error if any.
+ * @return Return 1 on success, 0 otherwise.
+ *
+ * The parameter e supplied to this function must be NULL if
+ * xcb_icccm_get_wm_colormap_windows_unchecked() is used. Otherwise, it
+ * stores the error if any. protocols structure members should be
+ * freed by xcb_icccm_get_wm_colormap_windows_reply_wipe().
+ */
+uint8_t xcb_icccm_get_wm_colormap_windows_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_icccm_get_wm_colormap_windows_reply_t *windows,
+ xcb_generic_error_t **e);
+
+/**
+ * @brief Wipe protocols structure members previously allocated by
+ * xcb_icccm_get_wm_colormap_windows_reply().
+ * @param windows windows structure whose members is going to be freed.
+ */
+void xcb_icccm_get_wm_colormap_windows_reply_wipe(xcb_icccm_get_wm_colormap_windows_reply_t *windows);
+
+/* WM_CLIENT_MACHINE */
+
+/**
+ * @brief Deliver a SetProperty request to set WM_CLIENT_MACHINE property value.
+ * @param c The connection to the X server.
+ * @param window Window X identifier.
+ * @param encoding Encoding used for the data passed in the name parameter, the set property will also have this encoding as its type.
+ * @param format Encoding format.
+ * @param name_len Length of name value to set.
+ * @param name Name value to set.
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_client_machine_checked(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t encoding,
+ uint8_t format,
+ uint32_t name_len,
+ const char *name);
+
+/**
+ * @see xcb_icccm_set_wm_client_machine_checked()
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_client_machine(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t encoding,
+ uint8_t format,
+ uint32_t name_len,
+ const char *name);
+
+/**
+ * @brief Send request to get WM_CLIENT_MACHINE property of a window.
+ * @param c The connection to the X server.
+ * @param window Window X identifier.
+ * @return The request cookie.
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_client_machine(xcb_connection_t *c,
+ xcb_window_t window);
+
+/**
+ * @see xcb_icccm_get_wm_client_machine()
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_client_machine_unchecked(xcb_connection_t *c,
+ xcb_window_t window);
+
+/**
+ * @brief Fill given structure with the WM_CLIENT_MACHINE property of a window.
+ * @param c The connection to the X server.
+ * @param cookie Request cookie.
+ * @param prop WM_CLIENT_MACHINE property value.
+ * @param e Error if any.
+ * @see xcb_icccm_get_text_property_reply()
+ * @return Return 1 on success, 0 otherwise.
+ */
+uint8_t xcb_icccm_get_wm_client_machine_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_icccm_get_text_property_reply_t *prop,
+ xcb_generic_error_t **e);
+
+/* WM_CLASS */
+
+/**
+ * @brief WM_CLASS hint structure
+ */
+
+/**
+ * @brief Deliver a SetProperty request to set WM_CLASS property value.
+ *
+ * WM_CLASS string is a concatenation of the instance and class name
+ * strings respectively (including null character).
+ *
+ * @param c The connection to the X server.
+ * @param window Window X identifier.
+ * @param class_len Length of WM_CLASS string.
+ * @param class_name WM_CLASS string.
+ * @return The request cookie.
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_class_checked(xcb_connection_t *c,
+ xcb_window_t window,
+ uint32_t class_len,
+ const char *class_name);
+
+/**
+ * @see xcb_icccm_set_wm_class_checked()
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_class(xcb_connection_t *c,
+ xcb_window_t window,
+ uint32_t class_len,
+ const char *class_name);
+
+typedef struct {
+/** Instance name */
+char *instance_name;
+/** Class of application */
+char *class_name;
+/** Store reply to avoid memory allocation, should normally not be
+ used directly */
+xcb_get_property_reply_t *_reply;
+} xcb_icccm_get_wm_class_reply_t;
+
+/**
+ * @brief Deliver a GetProperty request to the X server for WM_CLASS.
+ * @param c The connection to the X server.
+ * @param window Window X identifier.
+ * @return The request cookie.
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_class(xcb_connection_t *c,
+ xcb_window_t window);
+
+/**
+ * @see xcb_icccm_get_wm_class()
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_class_unchecked(xcb_connection_t *c,
+ xcb_window_t window);
+
+
+/**
+ * @brief Fill give structure with the WM_CLASS property of a window.
+ * @param prop The property structure to fill.
+ * @param reply The property request reply.
+ * @return Return 1 on success, 0 otherwise.
+ */
+uint8_t
+xcb_icccm_get_wm_class_from_reply(xcb_icccm_get_wm_class_reply_t *prop,
+ xcb_get_property_reply_t *reply);
+
+/**
+ * @brief Fill given structure with the WM_CLASS property of a window.
+ * @param c The connection to the X server.
+ * @param cookie Request cookie.
+ * @param prop WM_CLASS property value.
+ * @param e Error if any.
+ * @return Return 1 on success, 0 otherwise.
+ *
+ * The parameter e supplied to this function must be NULL if
+ * xcb_icccm_get_wm_class_unchecked() is used. Otherwise, it stores the
+ * error if any. prop structure members should be freed by
+ * xcb_icccm_get_wm_class_reply_wipe().
+ */
+uint8_t xcb_icccm_get_wm_class_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_icccm_get_wm_class_reply_t *prop,
+ xcb_generic_error_t **e);
+
+/**
+ * @brief Wipe prop structure members previously allocated by
+ * xcb_icccm_get_wm_class_reply().
+ * @param prop prop structure whose members is going to be freed.
+ */
+void xcb_icccm_get_wm_class_reply_wipe(xcb_icccm_get_wm_class_reply_t *prop);
+
+/* WM_TRANSIENT_FOR */
+
+/**
+ * @brief Deliver a SetProperty request to set WM_TRANSIENT_FOR property value.
+ * @param c The connection to the X server.
+ * @param window Window X identifier.
+ * @param transient_for_window The WM_TRANSIENT_FOR window X identifier.
+ * @return The request cookie.
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_transient_for_checked(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_window_t transient_for_window);
+
+/**
+ * @see xcb_icccm_set_wm_transient_for
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_transient_for(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_window_t transient_for_window);
+
+/**
+ * @brief Send request to get WM_TRANSIENT_FOR property of a window.
+ * @param c The connection to the X server
+ * @param window Window X identifier.
+ * @return The request cookie.
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_transient_for(xcb_connection_t *c,
+ xcb_window_t window);
+
+/**
+ * @see xcb_icccm_get_wm_transient_for_unchecked()
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_transient_for_unchecked(xcb_connection_t *c,
+ xcb_window_t window);
+
+/**
+ * @brief Fill given window pointer with the WM_TRANSIENT_FOR property of a window.
+ * @param prop WM_TRANSIENT_FOR property value.
+ * @param reply The get property request reply.
+ * @return Return 1 on success, 0 otherwise.
+ */
+uint8_t
+xcb_icccm_get_wm_transient_for_from_reply(xcb_window_t *prop,
+ xcb_get_property_reply_t *reply);
+/**
+ * @brief Fill given structure with the WM_TRANSIENT_FOR property of a window.
+ * @param c The connection to the X server.
+ * @param cookie Request cookie.
+ * @param prop WM_TRANSIENT_FOR property value.
+ * @param e Error if any.
+ * @return Return 1 on success, 0 otherwise.
+ *
+ * The parameter e supplied to this function must be NULL if
+ * xcb_icccm_get_wm_transient_for_unchecked() is used. Otherwise, it stores
+ * the error if any.
+ */
+uint8_t xcb_icccm_get_wm_transient_for_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_window_t *prop,
+ xcb_generic_error_t **e);
+
+/* WM_SIZE_HINTS */
+
+typedef enum {
+XCB_ICCCM_SIZE_HINT_US_POSITION = 1 << 0,
+ XCB_ICCCM_SIZE_HINT_US_SIZE = 1 << 1,
+ XCB_ICCCM_SIZE_HINT_P_POSITION = 1 << 2,
+ XCB_ICCCM_SIZE_HINT_P_SIZE = 1 << 3,
+ XCB_ICCCM_SIZE_HINT_P_MIN_SIZE = 1 << 4,
+ XCB_ICCCM_SIZE_HINT_P_MAX_SIZE = 1 << 5,
+ XCB_ICCCM_SIZE_HINT_P_RESIZE_INC = 1 << 6,
+ XCB_ICCCM_SIZE_HINT_P_ASPECT = 1 << 7,
+ XCB_ICCCM_SIZE_HINT_BASE_SIZE = 1 << 8,
+ XCB_ICCCM_SIZE_HINT_P_WIN_GRAVITY = 1 << 9
+ } xcb_icccm_size_hints_flags_t;
+
+/**
+ * @brief Size hints structure.
+ */
+typedef struct {
+/** User specified flags */
+uint32_t flags;
+/** User-specified position */
+int32_t x, y;
+/** User-specified size */
+int32_t width, height;
+/** Program-specified minimum size */
+int32_t min_width, min_height;
+/** Program-specified maximum size */
+int32_t max_width, max_height;
+/** Program-specified resize increments */
+int32_t width_inc, height_inc;
+/** Program-specified minimum aspect ratios */
+int32_t min_aspect_num, min_aspect_den;
+/** Program-specified maximum aspect ratios */
+int32_t max_aspect_num, max_aspect_den;
+/** Program-specified base size */
+int32_t base_width, base_height;
+/** Program-specified window gravity */
+uint32_t win_gravity;
+} xcb_size_hints_t;
+
+/** Number of elements in this structure */
+#define XCB_ICCCM_NUM_WM_SIZE_HINTS_ELEMENTS 18
+
+/**
+ * @brief Set size hints to a given position.
+ * @param hints SIZE_HINTS structure.
+ * @param user_specified Is the size user-specified?
+ * @param x The X position.
+ * @param y The Y position.
+ */
+void xcb_icccm_size_hints_set_position(xcb_size_hints_t *hints, int user_specified,
+ int32_t x, int32_t y);
+
+/**
+ * @brief Set size hints to a given size.
+ * @param hints SIZE_HINTS structure.
+ * @param user_specified is the size user-specified?
+ * @param width The width.
+ * @param height The height.
+ */
+void xcb_icccm_size_hints_set_size(xcb_size_hints_t *hints, int user_specified,
+ int32_t width, int32_t height);
+
+/**
+ * @brief Set size hints to a given minimum size.
+ * @param hints SIZE_HINTS structure.
+ * @param width The minimum width.
+ * @param height The minimum height.
+ */
+void xcb_icccm_size_hints_set_min_size(xcb_size_hints_t *hints, int32_t min_width,
+ int32_t min_height);
+
+/**
+ * @brief Set size hints to a given maximum size.
+ * @param hints SIZE_HINTS structure.
+ * @param width The maximum width.
+ * @param height The maximum height.
+ */
+void xcb_icccm_size_hints_set_max_size(xcb_size_hints_t *hints, int32_t max_width,
+ int32_t max_height);
+
+/**
+ * @brief Set size hints to a given resize increments.
+ * @param hints SIZE_HINTS structure.
+ * @param width The resize increments width.
+ * @param height The resize increments height.
+ */
+void xcb_icccm_size_hints_set_resize_inc(xcb_size_hints_t *hints, int32_t width_inc,
+ int32_t height_inc);
+
+/**
+ * @brief Set size hints to a given aspect ratios.
+ * @param hints SIZE_HINTS structure.
+ * @param min_aspect_num The minimum aspect ratios for the width.
+ * @param min_aspect_den The minimum aspect ratios for the height.
+ * @param max_aspect_num The maximum aspect ratios for the width.
+ * @param max_aspect_den The maximum aspect ratios for the height.
+ */
+void xcb_icccm_size_hints_set_aspect(xcb_size_hints_t *hints, int32_t min_aspect_num,
+ int32_t min_aspect_den, int32_t max_aspect_num,
+ int32_t max_aspect_den);
+
+/**
+ * @brief Set size hints to a given base size.
+ * @param hints SIZE_HINTS structure.
+ * @param base_width Base width.
+ * @param base_height Base height.
+ */
+void xcb_icccm_size_hints_set_base_size(xcb_size_hints_t *hints, int32_t base_width,
+ int32_t base_height);
+
+/**
+ * @brief Set size hints to a given window gravity.
+ * @param hints SIZE_HINTS structure.
+ * @param win_gravity Window gravity value.
+ */
+void xcb_icccm_size_hints_set_win_gravity(xcb_size_hints_t *hints,
+ xcb_gravity_t win_gravity);
+
+/**
+ * @brief Deliver a ChangeProperty request to set a value to a given property.
+ * @param c The connection to the X server.
+ * @param window Window X identifier.
+ * @param property Property to set value for.
+ * @param hints Hints value to set.
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_size_hints_checked(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t property,
+ xcb_size_hints_t *hints);
+
+/**
+ * @see xcb_icccm_set_wm_size_hints_checked()
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_size_hints(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t property,
+ xcb_size_hints_t *hints);
+
+/**
+ * @brief Send request to get size hints structure for the named property.
+ * @param c The connection to the X server.
+ * @param window Window X identifier.
+ * @param property Specify the property name.
+ * @return The request cookie.
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_size_hints(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t property);
+
+/**
+ * @see xcb_icccm_get_wm_size_hints()
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_size_hints_unchecked(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t property);
+
+/**
+ * @brief Fill given structure with the size hints of the named property.
+ * @param c The connection to the X server.
+ * @param cookie Request cookie.
+ * @param hints Size hints structure.
+ * @param e Error if any.
+ * @return Return 1 on success, 0 otherwise.
+ *
+ * The parameter e supplied to this function must be NULL if
+ * xcb_icccm_get_wm_size_hints_unchecked() is used. Otherwise, it stores
+ * the error if any. The returned pointer should be freed.
+ */
+uint8_t xcb_icccm_get_wm_size_hints_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_size_hints_t *hints,
+ xcb_generic_error_t **e);
+
+/* WM_NORMAL_HINTS */
+
+/**
+ * @brief Deliver a ChangeProperty request to set WM_NORMAL_HINTS property value.
+ * @param c The connection to the X server.
+ * @param window Window X identifier.
+ * @param hints Hints value to set.
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_normal_hints_checked(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_size_hints_t *hints);
+
+/**
+ * @see xcb_icccm_set_wm_normal_hints_checked()
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_normal_hints(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_size_hints_t *hints);
+
+/**
+ * @brief Send request to get WM_NORMAL_HINTS property of a window.
+ * @param c The connection to the X server.
+ * @param window Window X identifier.
+ * @return The request cookie.
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_normal_hints(xcb_connection_t *c,
+ xcb_window_t window);
+
+/**
+ * @see xcb_icccm_get_wm_normal_hints()
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_normal_hints_unchecked(xcb_connection_t *c,
+ xcb_window_t window);
+
+/**
+ * @brief Fill given structure with the WM_NORMAL_HINTS property of a window.
+ * @param hints WM_NORMAL_HINTS property value.
+ * @param reply The get property request reply.
+ * @return Return 1 on success, 0 otherwise.
+ */
+uint8_t
+xcb_icccm_get_wm_size_hints_from_reply(xcb_size_hints_t *hints,
+ xcb_get_property_reply_t *reply);
+
+/**
+ * @brief Fill given structure with the WM_NORMAL_HINTS property of a window.
+ * @param c The connection to the X server.
+ * @param cookie Request cookie.
+ * @param hints WM_NORMAL_HINTS property value.
+ * @param e Error if any.
+ * @return Return 1 on success, 0 otherwise.
+ *
+ * The parameter e supplied to this function must be NULL if
+ * xcb_icccm_get_wm_normal_hints_unchecked() is used. Otherwise, it stores
+ * the error if any. The returned pointer should be freed.
+ */
+uint8_t xcb_icccm_get_wm_normal_hints_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_size_hints_t *hints,
+ xcb_generic_error_t **e);
+
+/* WM_HINTS */
+
+/**
+ * @brief WM hints structure (may be extended in the future).
+ */
+typedef struct {
+/** Marks which fields in this structure are defined */
+int32_t flags;
+/** Does this application rely on the window manager to get keyboard
+ input? */
+ uint32_t input;
+ /** See below */
+ int32_t initial_state;
+ /** Pixmap to be used as icon */
+ xcb_pixmap_t icon_pixmap;
+ /** Window to be used as icon */
+ xcb_window_t icon_window;
+ /** Initial position of icon */
+ int32_t icon_x, icon_y;
+ /** Icon mask bitmap */
+ xcb_pixmap_t icon_mask;
+ /* Identifier of related window group */
+ xcb_window_t window_group;
+} xcb_icccm_wm_hints_t;
+
+/** Number of elements in this structure */
+#define XCB_ICCCM_NUM_WM_HINTS_ELEMENTS 9
+
+/**
+ * @brief WM_HINTS window states.
+ */
+typedef enum {
+ XCB_ICCCM_WM_STATE_WITHDRAWN = 0,
+ XCB_ICCCM_WM_STATE_NORMAL = 1,
+ XCB_ICCCM_WM_STATE_ICONIC = 3
+} xcb_icccm_wm_state_t;
+
+typedef enum {
+ XCB_ICCCM_WM_HINT_INPUT = (1L << 0),
+ XCB_ICCCM_WM_HINT_STATE = (1L << 1),
+ XCB_ICCCM_WM_HINT_ICON_PIXMAP = (1L << 2),
+ XCB_ICCCM_WM_HINT_ICON_WINDOW = (1L << 3),
+ XCB_ICCCM_WM_HINT_ICON_POSITION = (1L << 4),
+ XCB_ICCCM_WM_HINT_ICON_MASK = (1L << 5),
+ XCB_ICCCM_WM_HINT_WINDOW_GROUP = (1L << 6),
+ XCB_ICCCM_WM_HINT_X_URGENCY = (1L << 8)
+} xcb_icccm_wm_t;
+
+#define XCB_ICCCM_WM_ALL_HINTS (XCB_ICCCM_WM_HINT_INPUT | XCB_ICCCM_WM_HINT_STATE | \
+ XCB_ICCCM_WM_HINT_ICON_PIXMAP | XCB_ICCCM_WM_HINT_ICON_WINDOW | \
+ XCB_ICCCM_WM_HINT_ICON_POSITION | XCB_ICCCM_WM_HINT_ICON_MASK | \
+ XCB_ICCCM_WM_HINT_WINDOW_GROUP)
+
+/**
+ * @brief Get urgency hint.
+ * @param hints WM_HINTS structure.
+ * @return Urgency hint value.
+ */
+uint32_t xcb_icccm_wm_hints_get_urgency(xcb_icccm_wm_hints_t *hints);
+
+/**
+ * @brief Set input focus.
+ * @param hints WM_HINTS structure.
+ * @param input Input focus.
+ */
+void xcb_icccm_wm_hints_set_input(xcb_icccm_wm_hints_t *hints, uint8_t input);
+
+/**
+ * @brief Set hints state to 'iconic'.
+ * @param hints WM_HINTS structure.
+ */
+void xcb_icccm_wm_hints_set_iconic(xcb_icccm_wm_hints_t *hints);
+
+/**
+ * @brief Set hints state to 'normal'.
+ * @param hints WM_HINTS structure.
+ */
+void xcb_icccm_wm_hints_set_normal(xcb_icccm_wm_hints_t *hints);
+
+/**
+ * @brief Set hints state to 'withdrawn'.
+ * @param hints WM_HINTS structure.
+ */
+void xcb_icccm_wm_hints_set_withdrawn(xcb_icccm_wm_hints_t *hints);
+
+/**
+ * @brief Set hints state to none.
+ * @param hints WM_HINTS structure.
+ */
+void xcb_icccm_wm_hints_set_none(xcb_icccm_wm_hints_t *hints);
+
+/**
+ * @brief Set pixmap to be used as icon.
+ * @param hints WM_HINTS structure.
+ * @param icon_pixmap Pixmap.
+ */
+void xcb_icccm_wm_hints_set_icon_pixmap(xcb_icccm_wm_hints_t *hints,
+ xcb_pixmap_t icon_pixmap);
+
+/**
+ * @brief Set icon mask bitmap.
+ * @param hints WM_HINTS structure.
+ * @param icon_mask Pixmap.
+ */
+void xcb_icccm_wm_hints_set_icon_mask(xcb_icccm_wm_hints_t *hints, xcb_pixmap_t icon_mask);
+
+/**
+ * @brief Set window identifier to be used as icon.
+ * @param hints WM_HINTS structure.
+ * @param icon_window Window X identifier.
+ */
+void xcb_icccm_wm_hints_set_icon_window(xcb_icccm_wm_hints_t *hints,
+ xcb_window_t icon_window);
+
+/**
+ * @brief Set identifier of related window group.
+ * @param hints WM_HINTS structure.
+ * @param window_group Window X identifier.
+ */
+void xcb_icccm_wm_hints_set_window_group(xcb_icccm_wm_hints_t *hints,
+ xcb_window_t window_group);
+
+/**
+ * @brief Set urgency hints flag.
+ * @param hints WM_HINTS structure.
+ */
+void xcb_icccm_wm_hints_set_urgency(xcb_icccm_wm_hints_t *hints);
+
+/**
+ * @brief Deliver a SetProperty request to set WM_HINTS property value.
+ * @param c The connection to the X server.
+ * @param window Window X identifier.
+ * @param hints Hints value to set.
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_hints_checked(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_icccm_wm_hints_t *hints);
+
+/**
+ * @see xcb_icccm_set_wm_hints_checked()
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_hints(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_icccm_wm_hints_t *hints);
+
+/**
+ * @brief Send request to get WM_HINTS property of a window.
+ * @param c The connection to the X server.
+ * @param window Window X identifier.
+ * @return The request cookie.
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_hints(xcb_connection_t *c,
+ xcb_window_t window);
+
+/**
+ * @see xcb_icccm_get_wm_hints()
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_hints_unchecked(xcb_connection_t *c,
+ xcb_window_t window);
+
+/**
+ * @brief Fill given structure with the WM_HINTS property of a window.
+ * @param hints WM_HINTS property value.
+ * @param reply The get property request reply.
+ * @return Return 1 on success, 0 otherwise.
+ */
+uint8_t
+xcb_icccm_get_wm_hints_from_reply(xcb_icccm_wm_hints_t *hints,
+ xcb_get_property_reply_t *reply);
+
+/**
+ * @brief Fill given structure with the WM_HINTS property of a window.
+ * @param c The connection to the X server.
+ * @param cookie Request cookie.
+ * @param hints WM_HINTS property value.
+ * @param e Error if any.
+ * @return Return 1 on success, 0 otherwise.
+ *
+ * The parameter e supplied to this function must be NULL if
+ * xcb_icccm_get_wm_hints_unchecked() is used. Otherwise, it stores the
+ * error if any. The returned pointer should be freed.
+ */
+uint8_t xcb_icccm_get_wm_hints_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_icccm_wm_hints_t *hints,
+ xcb_generic_error_t **e);
+
+/* WM_PROTOCOLS */
+
+/**
+ * @brief Deliver a SetProperty request to set WM_PROTOCOLS property value.
+ * @param c The connection to the X server.
+ * @param wm_protocols The WM_PROTOCOLS atom.
+ * @param window Window X identifier.
+ * @param list_len Atom list len.
+ * @param list Atom list.
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_protocols_checked(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t wm_protocols,
+ uint32_t list_len,
+ xcb_atom_t *list);
+
+/**
+ * @see xcb_icccm_set_wm_protocols_checked()
+ */
+xcb_void_cookie_t xcb_icccm_set_wm_protocols(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t wm_protocols,
+ uint32_t list_len,
+ xcb_atom_t *list);
+
+/**
+ * @brief WM_PROTOCOLS structure.
+ */
+typedef struct {
+ /** Length of the atoms list */
+ uint32_t atoms_len;
+ /** Atoms list */
+ xcb_atom_t *atoms;
+ /** Store reply to avoid memory allocation, should normally not be
+ used directly */
+ xcb_get_property_reply_t *_reply;
+} xcb_icccm_get_wm_protocols_reply_t;
+
+/**
+ * @brief Send request to get WM_PROTOCOLS property of a given window.
+ * @param c The connection to the X server.
+ * @param window Window X identifier.
+ * @return The request cookie.
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_protocols(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t wm_protocol_atom);
+
+/**
+ * @see xcb_icccm_get_wm_protocols()
+ */
+xcb_get_property_cookie_t xcb_icccm_get_wm_protocols_unchecked(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t wm_protocol_atom);
+
+/**
+ * @brief Fill the given structure with the WM_PROTOCOLS property of a window.
+ * @param reply The reply of the GetProperty request.
+ * @param protocols WM_PROTOCOLS property value.
+ * @return Return 1 on success, 0 otherwise.
+ *
+ * protocols structure members should be freed by
+ * xcb_icccm_get_wm_protocols_reply_wipe().
+ */
+uint8_t xcb_icccm_get_wm_protocols_from_reply(xcb_get_property_reply_t *reply,
+ xcb_icccm_get_wm_protocols_reply_t *protocols);
+/**
+ * @brief Fill the given structure with the WM_PROTOCOLS property of a window.
+ * @param c The connection to the X server.
+ * @param cookie Request cookie.
+ * @param protocols WM_PROTOCOLS property value.
+ * @param e Error if any.
+ * @return Return 1 on success, 0 otherwise.
+ *
+ * The parameter e supplied to this function must be NULL if
+ * xcb_icccm_get_wm_protocols_unchecked() is used. Otherwise, it stores the
+ * error if any. protocols structure members should be freed by
+ * xcb_icccm_get_wm_protocols_reply_wipe().
+ */
+uint8_t xcb_icccm_get_wm_protocols_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_icccm_get_wm_protocols_reply_t *protocols,
+ xcb_generic_error_t **e);
+
+/**
+ * @brief Wipe protocols structure members previously allocated by
+ * xcb_icccm_get_wm_protocols_reply().
+ * @param protocols protocols structure whose members is going to be freed.
+ */
+void xcb_icccm_get_wm_protocols_reply_wipe(xcb_icccm_get_wm_protocols_reply_t *protocols);
+
+#ifdef __cplusplus
+}
+#endif
+
+/**
+ * @}
+ */
+
+#endif /* __XCB_ICCCM_H__ */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_image.h b/src/3rdparty/xcb/include/xcb/xcb_image.h
new file mode 100644
index 0000000000..f41187d394
--- /dev/null
+++ b/src/3rdparty/xcb/include/xcb/xcb_image.h
@@ -0,0 +1,630 @@
+#ifndef __XCB_IMAGE_H__
+#define __XCB_IMAGE_H__
+
+/* Copyright (C) 2007 Bart Massey
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or their
+ * institutions shall not be used in advertising or otherwise to promote the
+ * sale, use or other dealings in this Software without prior written
+ * authorization from the authors.
+ */
+
+#include <xcb/xcb.h>
+#include <xcb/shm.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * @defgroup xcb__image_t XCB Image Functions
+ *
+ * These are functions used to create and manipulate X images.
+ *
+ * The X image format we use is specific to this software,
+ * which is probably a bug; it represents an intermediate
+ * position between the wire format used by the X GetImage
+ * and PutImage requests and standard formats like PBM. An
+ * image consists of a header of type @ref xcb_image_t
+ * describing the properties of the image, together with a
+ * pointer to the image data itself.
+ *
+ * X wire images come in three formats. An xy-bitmap is a
+ * bit-packed format that will be expanded to a two-color
+ * pixmap using a GC when sent over the wire by PutImage.
+ * An xy-pixmap is one or more bit-planes, each in the same
+ * format as xy-bitmap. A z-pixmap is a more conventional
+ * pixmap representation, with each pixel packed into a
+ * word. Pixmaps are sent and received over the wire only
+ * to/from drawables of their depth.
+ *
+ * Each X server defines, for each depth and format,
+ * properties of images in that format that are sent and
+ * received on the wire. We refer to this as a "native"
+ * image for a given X server. It is not uncommon to want
+ * to work with non-native images on the client side, or to
+ * convert between the native images of different servers.
+ *
+ * This library provides several things. Facilities for
+ * creating and destroying images are, of course, provided.
+ * Wrappers for xcb_get_image() and xcb_put_image() are
+ * provided; these utilize the image header to simplify the
+ * interface. Routines for getting and putting image pixels
+ * are provided: both a generic form that works with
+ * arbitrary images, and fastpath forms for some common
+ * cases. Conversion routines are provided for X images;
+ * these routines have been fairly well optimized for the
+ * common cases, and should run fast even on older hardware.
+ * A routine analogous to Xlib's XCreate*FromBitmapData() is
+ * provided for creating X images from xbm-format data; this
+ * routine is in this library only because it is a trivial
+ * use case for the library.
+ *
+ * @{
+ */
+
+
+typedef struct xcb_image_t xcb_image_t;
+
+/**
+ * @struct xcb_image_t
+ * A structure that describes an xcb_image_t.
+ */
+struct xcb_image_t
+{
+ uint16_t width; /**< Width in pixels, excluding pads etc. */
+ uint16_t height; /**< Height in pixels. */
+ xcb_image_format_t format; /**< Format. */
+ uint8_t scanline_pad; /**< Right pad in bits. Valid pads
+ * are 8, 16, 32.
+ */
+ uint8_t depth; /**< Depth in bits. Valid depths
+ * are 1, 4, 8, 16, 24 for z format,
+ * 1 for xy-bitmap-format, anything
+ * for xy-pixmap-format.
+ */
+ uint8_t bpp; /**< Storage per pixel in bits.
+ * Must be >= depth. Valid bpp
+ * are 1, 4, 8, 16, 24, 32 for z
+ * format, 1 for xy-bitmap format,
+ * anything for xy-pixmap-format.
+ */
+ uint8_t unit; /**< Scanline unit in bits for
+ * xy formats and for bpp == 1,
+ * in which case valid scanline
+ * units are 8, 16, 32. Otherwise,
+ * will be max(8, bpp). Must be >= bpp.
+ */
+ uint32_t plane_mask; /**< When format is
+ * xy-pixmap and depth >
+ * 1, this says which
+ * planes are "valid" in
+ * some vague sense.
+ * Currently used only
+ * by xcb_image_get/put_pixel(),
+ * and set only by
+ * xcb_image_get().
+ */
+ xcb_image_order_t byte_order; /**< Component byte order
+ * for z-pixmap, byte
+ * order of scanline unit
+ * for xy-bitmap and
+ * xy-pixmap. Nybble
+ * order for z-pixmap
+ * when bpp == 4.
+ */
+ xcb_image_order_t bit_order; /**< Bit order of
+ * scanline unit for
+ * xy-bitmap and
+ * xy-pixmap.
+ */
+ uint32_t stride; /**< Bytes per image row.
+ * Computable from other
+ * data, but cached for
+ * convenience/performance.
+ */
+ uint32_t size; /**< Size of image data in bytes.
+ * Computable from other
+ * data, but cached for
+ * convenience/performance.
+ */
+ void * base; /**< Malloced block of storage that
+ * will be freed by
+ * @ref xcb_image_destroy() if non-null.
+ */
+ uint8_t * data; /**< The actual image. */
+};
+
+typedef struct xcb_shm_segment_info_t xcb_shm_segment_info_t;
+
+/**
+ * @struct xcb_shm_segment_info_t
+ * A structure that stores the informations needed by the MIT Shm
+ * Extension.
+ */
+struct xcb_shm_segment_info_t
+{
+ xcb_shm_seg_t shmseg;
+ uint32_t shmid;
+ uint8_t *shmaddr;
+};
+
+
+/**
+ * Update the cached data of an image.
+ * @param image The image.
+ *
+ * An image's size and stride, among other things, are
+ * cached in its structure. This function recomputes those
+ * cached values for the given image.
+ * @ingroup xcb__image_t
+ */
+void
+xcb_image_annotate (xcb_image_t *image);
+
+/**
+ * Create a new image.
+ * @param width The width of the image, in pixels.
+ * @param height The height of the image, in pixels.
+ * @param format The format of the image.
+ * @param xpad The scanline pad of the image.
+ * @param depth The depth of the image.
+ * @param bpp The depth of the image storage.
+ * @param unit The unit of image representation, in bits.
+ * @param byte_order The byte order of the image.
+ * @param bit_order The bit order of the image.
+ * @param base The base address of malloced image data.
+ * @param bytes The size in bytes of the storage pointed to by base.
+ * If base == 0 and bytes == ~0 and data == 0 on
+ * entry, no storage will be auto-allocated.
+ * @param data The image data. If data is null and bytes != ~0, then
+ * an attempt will be made to fill in data; from
+ * base if it is non-null (and bytes is large enough), else
+ * by mallocing sufficient storage and filling in base.
+ * @return The new image.
+ *
+ * This function allocates the memory needed for an @ref xcb_image_t structure
+ * with the given properties. See the description of xcb_image_t for details.
+ * This function initializes and returns a pointer to the
+ * xcb_image_t structure. It may try to allocate or reserve data for the
+ * structure, depending on how @p base, @p bytes and @p data are set.
+ *
+ * The image must be destroyed with xcb_image_destroy().
+ * @ingroup xcb__image_t
+ */
+xcb_image_t *
+xcb_image_create (uint16_t width,
+ uint16_t height,
+ xcb_image_format_t format,
+ uint8_t xpad,
+ uint8_t depth,
+ uint8_t bpp,
+ uint8_t unit,
+ xcb_image_order_t byte_order,
+ xcb_image_order_t bit_order,
+ void * base,
+ uint32_t bytes,
+ uint8_t * data);
+
+
+/**
+ * Create a new image in connection-native format.
+ * @param c The connection.
+ * @param width The width of the image, in pixels.
+ * @param height The height of the image, in pixels.
+ * @param format The format of the image.
+ * @param depth The depth of the image.
+ * @param base The base address of malloced image data.
+ * @param bytes The size in bytes of the storage pointed to by base.
+ * If base == 0 and bytes == ~0 and data == 0 on
+ * entry, no storage will be auto-allocated.
+ * @param data The image data. If data is null and bytes != ~0, then
+ * an attempt will be made to fill in data; from
+ * base if it is non-null (and bytes is large enough), else
+ * by mallocing sufficient storage and filling in base.
+ * @return The new image.
+ *
+ * This function calls @ref xcb_image_create() with the given
+ * properties, and with the remaining properties chosen
+ * according to the "native format" with the given
+ * properties on the current connection.
+ *
+ * It is usual to use this rather
+ * than calling xcb_image_create() directly.
+ * @ingroup xcb__image_t
+ */
+xcb_image_t *
+xcb_image_create_native (xcb_connection_t * c,
+ uint16_t width,
+ uint16_t height,
+ xcb_image_format_t format,
+ uint8_t depth,
+ void * base,
+ uint32_t bytes,
+ uint8_t * data);
+
+
+/**
+ * Destroy an image.
+ * @param image The image to be destroyed.
+ *
+ * This function frees the memory associated with the @p image
+ * parameter. If its base pointer is non-null, it frees
+ * that also.
+ * @ingroup xcb__image_t
+ */
+void
+xcb_image_destroy (xcb_image_t *image);
+
+
+/**
+ * Get an image from the X server.
+ * @param conn The connection to the X server.
+ * @param draw The drawable to get the image from.
+ * @param x The x coordinate in pixels, relative to the origin of the
+ * drawable and defining the upper-left corner of the rectangle.
+ * @param y The y coordinate in pixels, relative to the origin of the
+ * drawable and defining the upper-left corner of the rectangle.
+ * @param width The width of the subimage in pixels.
+ * @param height The height of the subimage in pixels.
+ * @param plane_mask The plane mask. See the protocol document for details.
+ * @param format The format of the image.
+ * @return The subimage of @p draw defined by @p x, @p y, @p w, @p h.
+ *
+
+ * This function returns a new image taken from the
+ * given drawable @p draw.
+ * The image will be in connection native format. If the @p format
+ * is xy-bitmap and the @p plane_mask masks bit planes out, those
+ * bit planes will be made part of the returned image anyway,
+ * by zero-filling them; this will require a fresh memory allocation
+ * and some copying. Otherwise, the resulting image will use the
+ * xcb_get_image_reply() record as its backing store.
+ *
+ * If a problem occurs, the function returns null.
+ * @ingroup xcb__image_t
+ */
+xcb_image_t *
+xcb_image_get (xcb_connection_t * conn,
+ xcb_drawable_t draw,
+ int16_t x,
+ int16_t y,
+ uint16_t width,
+ uint16_t height,
+ uint32_t plane_mask,
+ xcb_image_format_t format);
+
+
+/**
+ * Put an image onto the X server.
+ * @param conn The connection to the X server.
+ * @param draw The draw you get the image from.
+ * @param gc The graphic context.
+ * @param image The image you want to combine with the rectangle.
+ * @param x The x coordinate, which is relative to the origin of the
+ * drawable and defines the x coordinate of the upper-left corner of the
+ * rectangle.
+ * @param y The y coordinate, which is relative to the origin of the
+ * drawable and defines the x coordinate of the upper-left corner of
+ * the rectangle.
+ * @param left_pad Notionally shift an xy-bitmap or xy-pixmap image
+ * to the right some small amount, for some reason. XXX Not clear
+ * this is currently supported correctly.
+ * @return The cookie returned by xcb_put_image().
+ *
+ * This function combines an image with a rectangle of the
+ * specified drawable @p draw. The image must be in native
+ * format for the connection. The image is drawn at the
+ * specified location in the drawable. For the xy-bitmap
+ * format, the foreground pixel in @p gc defines the source
+ * for the one bits in the image, and the background pixel
+ * defines the source for the zero bits. For xy-pixmap and
+ * z-pixmap formats, the depth of the image must match the
+ * depth of the drawable; the gc is ignored.
+ *
+ * @ingroup xcb__image_t
+ */
+xcb_void_cookie_t
+xcb_image_put (xcb_connection_t * conn,
+ xcb_drawable_t draw,
+ xcb_gcontext_t gc,
+ xcb_image_t * image,
+ int16_t x,
+ int16_t y,
+ uint8_t left_pad);
+
+
+/**
+ * Check image for or convert image to native format.
+ * @param c The connection to the X server.
+ * @param image The image.
+ * @param convert If 0, just check the image for native format.
+ * Otherwise, actually convert it.
+ * @return Null if the image is not in native format and can or will not
+ * be converted. Otherwise, the native format image.
+ *
+ * Each X display has its own "native format" for images of a given
+ * format and depth. This function either checks whether the given
+ * @p image is in native format for the given connection @p c, or
+ * actually tries to convert the image to native format, depending
+ * on whether @p convert is true or false.
+ *
+ * When @p convert is true, and the image is not in native format
+ * but can be converted, it will be, and a pointer to the new image
+ * will be returned. The image passed in will be unharmed in this
+ * case; it is the caller's responsibility to check that the returned
+ * pointer is different and to dispose of the old image if desired.
+ * @ingroup xcb__image_t
+ */
+xcb_image_t *
+xcb_image_native (xcb_connection_t * c,
+ xcb_image_t * image,
+ int convert);
+
+
+/**
+ * Put a pixel to an image.
+ * @param image The image.
+ * @param x The x coordinate of the pixel.
+ * @param y The y coordinate of the pixel.
+ * @param pixel The new pixel value.
+ *
+ * This function overwrites the pixel in the given @p image with the
+ * specified @p pixel value (in client format). The image must contain the @p x
+ * and @p y coordinates, as no clipping is done. This function honors
+ * the plane-mask for xy-pixmap images.
+ * @ingroup xcb__image_t
+ */
+void
+xcb_image_put_pixel (xcb_image_t *image,
+ uint32_t x,
+ uint32_t y,
+ uint32_t pixel);
+
+/**
+ * Get a pixel from an image.
+ * @param image The image.
+ * @param x The x coordinate of the pixel.
+ * @param y The y coordinate of the pixel.
+ * @return The pixel value.
+ *
+ * This function retrieves a pixel from the given @p image.
+ * The image must contain the @p x
+ * and @p y coordinates, as no clipping is done. This function honors
+ * the plane-mask for xy-pixmap images.
+ * @ingroup xcb__image_t
+ */
+uint32_t
+xcb_image_get_pixel (xcb_image_t *image,
+ uint32_t x,
+ uint32_t y);
+
+
+/**
+ * Convert an image to a new format.
+ * @param src Source image.
+ * @param dst Destination image.
+ * @return The @p dst image, or null on error.
+ *
+ * This function tries to convert the image data of the @p
+ * src image to the format implied by the @p dst image,
+ * overwriting the current destination image data.
+ * The source and destination must have the same
+ * width, height, and depth. When the source and destination
+ * are already the same format, a simple copy is done. Otherwise,
+ * when the destination has the same bits-per-pixel/scanline-unit
+ * as the source, an optimized copy routine (thanks to Keith Packard)
+ * is used for the conversion. Otherwise, the copy is done the
+ * slow, slow way with @ref xcb_image_get_pixel() and
+ * @ref xcb_image_put_pixel() calls.
+ * @ingroup xcb__image_t
+ */
+xcb_image_t *
+xcb_image_convert (xcb_image_t * src,
+ xcb_image_t * dst);
+
+
+/**
+ * Extract a subimage of an image.
+ * @param image Source image.
+ * @param x X coordinate of subimage.
+ * @param y Y coordinate of subimage.
+ * @param width Width of subimage.
+ * @param height Height of subimage.
+ * @param base Base of memory allocation.
+ * @param bytes Size of base allocation.
+ * @param data Memory allocation.
+ * @return The subimage, or null on error.
+ *
+ * Given an image, this function extracts the subimage at the
+ * given coordinates. The requested subimage must be entirely
+ * contained in the source @p image. The resulting image will have the same
+ * general image parameters as the source image. The @p base, @p bytes,
+ * and @p data arguments are passed to @ref xcb_create_image() unaltered
+ * to create the destination image---see its documentation for details.
+ *
+ * @ingroup xcb__image_t
+ */
+xcb_image_t *
+xcb_image_subimage(xcb_image_t * image,
+ uint32_t x,
+ uint32_t y,
+ uint32_t width,
+ uint32_t height,
+ void * base,
+ uint32_t bytes,
+ uint8_t * data);
+
+
+/*
+ * Shm stuff
+ */
+
+/**
+ * Put the data of an xcb_image_t onto a drawable using the MIT Shm
+ * Extension.
+ * @param conn The connection to the X server.
+ * @param draw The draw you get the image from.
+ * @param gc The graphic context.
+ * @param image The image you want to combine with the rectangle.
+ * @param shminfo A @ref xcb_shm_segment_info_t structure.
+ * @param src_x The offset in x from the left edge of the image
+ * defined by the xcb_image_t structure.
+ * @param src_y The offset in y from the left edge of the image
+ * defined by the xcb_image_t structure.
+ * @param dest_x The x coordinate, which is relative to the origin of the
+ * drawable and defines the x coordinate of the upper-left corner of the
+ * rectangle.
+ * @param dest_y The y coordinate, which is relative to the origin of the
+ * drawable and defines the x coordinate of the upper-left corner of
+ * the rectangle.
+ * @param src_width The width of the subimage, in pixels.
+ * @param src_height The height of the subimage, in pixels.
+ * @param send_event Indicates whether or not a completion event
+ * should occur when the image write is complete.
+ * @return 1 is no problems occurs.
+ *
+ * This function combines an image in memory with a shape of the
+ * specified drawable. The section of the image defined by the @p x, @p y,
+ * @p width, and @p height arguments is drawn on the specified part of
+ * the drawable. If XYBitmap format is used, the depth must be
+ * one, or a``BadMatch'' error results. The foreground pixel in the
+ * Graphic Context @p gc defines the source for the one bits in the
+ * image, and the background pixel defines the source for the zero
+ * bits. For XYPixmap and ZPixmap, the depth must match the depth of
+ * the drawable, or a ``BadMatch'' error results.
+ *
+ * If a problem occurs, the function returns @c 0. Otherwise, it
+ * returns @c 1.
+ * @ingroup xcb__image_t
+ */
+xcb_image_t *
+xcb_image_shm_put (xcb_connection_t * conn,
+ xcb_drawable_t draw,
+ xcb_gcontext_t gc,
+ xcb_image_t * image,
+ xcb_shm_segment_info_t shminfo,
+ int16_t src_x,
+ int16_t src_y,
+ int16_t dest_x,
+ int16_t dest_y,
+ uint16_t src_width,
+ uint16_t src_height,
+ uint8_t send_event);
+
+
+/**
+ * Read image data into a shared memory xcb_image_t.
+ * @param conn The connection to the X server.
+ * @param draw The draw you get the image from.
+ * @param image The image you want to combine with the rectangle.
+ * @param shminfo A @ref xcb_shm_segment_info_t structure.
+ * @param x The x coordinate, which are relative to the origin of the
+ * drawable and define the upper-left corner of the rectangle.
+ * @param y The y coordinate, which are relative to the origin of the
+ * drawable and define the upper-left corner of the rectangle.
+ * @param plane_mask The plane mask.
+ * @return The subimage of @p draw defined by @p x, @p y, @p w, @p h.
+ *
+ * This function reads image data into a shared memory xcb_image_t where
+ * @p conn is the connection to the X server, @p draw is the source
+ * drawable, @p image is the destination xcb_image_t, @p x and @p y are offsets
+ * within the drawable, and @p plane_mask defines which planes are to be
+ * read.
+ *
+ * If a problem occurs, the function returns @c 0. It returns 1
+ * otherwise.
+ * @ingroup xcb__image_t
+ */
+int xcb_image_shm_get (xcb_connection_t * conn,
+ xcb_drawable_t draw,
+ xcb_image_t * image,
+ xcb_shm_segment_info_t shminfo,
+ int16_t x,
+ int16_t y,
+ uint32_t plane_mask);
+
+
+/**
+ * Create an image from user-supplied bitmap data.
+ * @param data Image data in packed bitmap format.
+ * @param width Width in bits of image data.
+ * @param height Height in bits of image data.
+ * @return The image constructed from the image data, or 0 on error.
+ *
+ * This function creates an image from the user-supplied
+ * bitmap @p data. The bitmap data is assumed to be in
+ * xbm format (i.e., 8-bit scanline unit, LSB-first, 8-bit pad).
+ * @ingroup xcb__image_t
+ */
+xcb_image_t *
+xcb_image_create_from_bitmap_data (uint8_t * data,
+ uint32_t width,
+ uint32_t height);
+
+/**
+ * Create a pixmap from user-supplied bitmap data.
+ * @param display The connection to the X server.
+ * @param d The parent drawable for the pixmap.
+ * @param data Image data in packed bitmap format.
+ * @param width Width in bits of image data.
+ * @param height Height in bits of image data.
+ * @param depth Depth of the desired pixmap.
+ * @param fg Pixel for one-bits of pixmaps with depth larger than one.
+ * @param bg Pixel for zero-bits of pixmaps with depth larger than one.
+ * @param gcp If this pointer is non-null, the GC created to
+ * fill in the pixmap is stored here; it will have its foreground
+ * and background set to the supplied value. Otherwise, the GC
+ * will be freed.
+ * @return The pixmap constructed from the image data, or 0 on error.
+ *
+ * This function creates a pixmap from the user-supplied
+ * bitmap @p data. The bitmap data is assumed to be in
+ * xbm format (i.e., 8-bit scanline unit, LSB-first, 8-bit pad).
+ * If @p depth is greater than 1, the
+ * bitmap will be expanded to a pixmap using the given
+ * foreground and background pixels @p fg and @p bg.
+ * @ingroup xcb__image_t
+ */
+xcb_pixmap_t
+xcb_create_pixmap_from_bitmap_data (xcb_connection_t * display,
+ xcb_drawable_t d,
+ uint8_t * data,
+ uint32_t width,
+ uint32_t height,
+ uint32_t depth,
+ uint32_t fg,
+ uint32_t bg,
+ xcb_gcontext_t * gcp);
+
+
+/**
+ * @}
+ */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __XCB_IMAGE_H__ */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_keysyms.h b/src/3rdparty/xcb/include/xcb/xcb_keysyms.h
new file mode 100644
index 0000000000..9d34a50ad1
--- /dev/null
+++ b/src/3rdparty/xcb/include/xcb/xcb_keysyms.h
@@ -0,0 +1,71 @@
+#ifndef __XCB_KEYSYMS_H__
+#define __XCB_KEYSYMS_H__
+
+#include <xcb/xcb.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+typedef struct _XCBKeySymbols xcb_key_symbols_t;
+
+xcb_key_symbols_t *xcb_key_symbols_alloc (xcb_connection_t *c);
+
+void xcb_key_symbols_free (xcb_key_symbols_t *syms);
+
+xcb_keysym_t xcb_key_symbols_get_keysym (xcb_key_symbols_t *syms,
+ xcb_keycode_t keycode,
+ int col);
+
+/**
+ * @brief Get the keycodes attached to a keysyms.
+ * There can be several value, so what is returned is an array of keycode
+ * terminated by XCB_NO_SYMBOL. You are responsible to free it.
+ * Be aware that this function can be slow. It will convert all
+ * combinations of all available keycodes to keysyms to find the ones that
+ * match.
+ * @param syms Key symbols.
+ * @param keysym The keysym to look for.
+ * @return A XCB_NO_SYMBOL terminated array of keycode, or NULL if nothing is found.
+ */
+xcb_keycode_t * xcb_key_symbols_get_keycode(xcb_key_symbols_t *syms,
+ xcb_keysym_t keysym);
+
+xcb_keysym_t xcb_key_press_lookup_keysym (xcb_key_symbols_t *syms,
+ xcb_key_press_event_t *event,
+ int col);
+
+xcb_keysym_t xcb_key_release_lookup_keysym (xcb_key_symbols_t *syms,
+ xcb_key_release_event_t *event,
+ int col);
+
+int xcb_refresh_keyboard_mapping (xcb_key_symbols_t *syms,
+ xcb_mapping_notify_event_t *event);
+
+/* TODO: need XLookupString equivalent */
+
+/* Tests for classes of symbols */
+
+int xcb_is_keypad_key (xcb_keysym_t keysym);
+
+int xcb_is_private_keypad_key (xcb_keysym_t keysym);
+
+int xcb_is_cursor_key (xcb_keysym_t keysym);
+
+int xcb_is_pf_key (xcb_keysym_t keysym);
+
+int xcb_is_function_key (xcb_keysym_t keysym);
+
+int xcb_is_misc_function_key (xcb_keysym_t keysym);
+
+int xcb_is_modifier_key (xcb_keysym_t keysym);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __XCB_KEYSYMS_H__ */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_pixel.h b/src/3rdparty/xcb/include/xcb/xcb_pixel.h
new file mode 100644
index 0000000000..fcb22b4826
--- /dev/null
+++ b/src/3rdparty/xcb/include/xcb/xcb_pixel.h
@@ -0,0 +1,171 @@
+#ifndef __XCB_PIXEL_H__
+#define __XCB_PIXEL_H__
+
+/* Copyright (C) 2007 Bart Massey
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or their
+ * institutions shall not be used in advertising or otherwise to promote the
+ * sale, use or other dealings in this Software without prior written
+ * authorization from the authors.
+ */
+
+#include <inttypes.h>
+#include <X11/Xfuncproto.h>
+#ifndef BUILD
+#include <xcb/xcb_bitops.h>
+#include <xcb/xcb_image.h>
+#endif
+
+/**
+ * XCB Image fast pixel ops.
+ *
+ * Fast inline versions of xcb_image_get_pixel() and
+ * xcb_image_put_pixel() for various common cases.
+ * The naming convention is xcb_image_put_pixel_FUB()
+ * where F is the format and is either XY for bitmaps
+ * or Z for pixmaps, U is the bitmap unit size or pixmap
+ * bits-per-pixel, and B is the endianness (if needed)
+ * and is either M for most-significant-first or L for
+ * least-significant-first. Note that no checking
+ * is done on the arguments to these routines---caller beware.
+ * Also note that the pixel type is chosen to be appropriate
+ * to the unit; bitmaps use int and pixmaps use the appropriate
+ * size of unsigned.
+ * @ingroup xcb__image_t
+ */
+
+_X_INLINE static void
+xcb_image_put_pixel_XY32M (xcb_image_t *image,
+ uint32_t x,
+ uint32_t y,
+ int pixel)
+{
+ uint32_t unit = (x >> 3) & ~xcb_mask(2);
+ uint32_t byte = xcb_mask(2) - ((x >> 3) & xcb_mask(2));
+ uint32_t bit = xcb_mask(3) - (x & xcb_mask(3));
+ uint8_t m = 1 << bit;
+ uint8_t p = pixel << bit;
+ uint8_t * bp = image->data + (y * image->stride) + (unit | byte);
+ *bp = (*bp & ~m) | p;
+}
+
+_X_INLINE static void
+xcb_image_put_pixel_XY32L (xcb_image_t *image,
+ uint32_t x,
+ uint32_t y,
+ int pixel)
+{
+ uint32_t bit = x & xcb_mask(3);
+ uint8_t m = 1 << bit;
+ uint8_t p = pixel << bit;
+ uint8_t * bp = image->data + (y * image->stride) + (x >> 3);
+ *bp = (*bp & ~m) | p;
+}
+
+_X_INLINE static int
+xcb_image_get_pixel_XY32M (xcb_image_t *image,
+ uint32_t x,
+ uint32_t y)
+{
+ uint32_t unit = (x >> 3) & ~xcb_mask(2);
+ uint32_t byte = xcb_mask(2) - ((x >> 3) & xcb_mask(2));
+ uint32_t bit = xcb_mask(3) - (x & xcb_mask(3));
+ uint8_t * bp = image->data + (y * image->stride) + (unit | byte);
+ return (*bp >> bit) & 1;
+}
+
+_X_INLINE static int
+xcb_image_get_pixel_XY32L (xcb_image_t *image,
+ uint32_t x,
+ uint32_t y)
+{
+ uint32_t bit = x & xcb_mask(3);
+ uint8_t * bp = image->data + (y * image->stride) + (x >> 3);
+ return (*bp >> bit) & 1;
+}
+
+_X_INLINE static void
+xcb_image_put_pixel_Z8 (xcb_image_t *image,
+ uint32_t x,
+ uint32_t y,
+ uint8_t pixel)
+{
+ image->data[x + y * image->stride] = pixel;
+}
+
+_X_INLINE static uint8_t
+xcb_image_get_pixel_Z8 (xcb_image_t *image,
+ uint32_t x,
+ uint32_t y)
+{
+ return image->data[x + y * image->stride];
+}
+
+_X_INLINE static void
+xcb_image_put_pixel_Z32M (xcb_image_t *image,
+ uint32_t x,
+ uint32_t y,
+ uint32_t pixel)
+{
+ uint8_t * row = image->data + (y * image->stride);
+ row[x << 2] = pixel >> 24;
+ row[(x << 2) + 1] = pixel >> 16;
+ row[(x << 2) + 2] = pixel >> 8;
+ row[(x << 2) + 3] = pixel;
+}
+
+_X_INLINE static void
+xcb_image_put_pixel_Z32L (xcb_image_t *image,
+ uint32_t x,
+ uint32_t y,
+ uint32_t pixel)
+{
+ uint8_t * row = image->data + (y * image->stride);
+ row[x << 2] = pixel;
+ row[(x << 2) + 1] = pixel >> 8;
+ row[(x << 2) + 2] = pixel >> 16;
+ row[(x << 2) + 3] = pixel >> 24;
+}
+
+_X_INLINE static uint32_t
+xcb_image_get_pixel_Z32M (xcb_image_t *image,
+ uint32_t x,
+ uint32_t y)
+{
+ uint8_t * row = image->data + (y * image->stride);
+ uint32_t pixel = row[x << 2] << 24;
+ pixel |= row[(x << 2) + 1] << 16;
+ pixel |= row[(x << 2) + 2] << 8;
+ return pixel | row[(x << 2) + 3];
+}
+
+_X_INLINE static uint32_t
+xcb_image_get_pixel_Z32L (xcb_image_t *image,
+ uint32_t x,
+ uint32_t y)
+{
+ uint8_t * row = image->data + (y * image->stride);
+ uint32_t pixel = row[x << 2];
+ pixel |= row[(x << 2) + 1] << 8;
+ pixel |= row[(x << 2) + 2] << 16;
+ return pixel | row[(x << 2) + 3] << 24;
+}
+
+#endif /* __XCB_PIXEL_H__ */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_renderutil.h b/src/3rdparty/xcb/include/xcb/xcb_renderutil.h
new file mode 100644
index 0000000000..6eb5923236
--- /dev/null
+++ b/src/3rdparty/xcb/include/xcb/xcb_renderutil.h
@@ -0,0 +1,142 @@
+/* Copyright © 2006 Jamey Sharp.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or their
+ * institutions shall not be used in advertising or otherwise to promote the
+ * sale, use or other dealings in this Software without prior written
+ * authorization from the authors.
+ */
+
+#ifndef XCB_RENDERUTIL
+#define XCB_RENDERUTIL
+#include <xcb/render.h>
+
+typedef enum xcb_pict_format_t {
+ XCB_PICT_FORMAT_ID = (1 << 0),
+ XCB_PICT_FORMAT_TYPE = (1 << 1),
+ XCB_PICT_FORMAT_DEPTH = (1 << 2),
+ XCB_PICT_FORMAT_RED = (1 << 3),
+ XCB_PICT_FORMAT_RED_MASK = (1 << 4),
+ XCB_PICT_FORMAT_GREEN = (1 << 5),
+ XCB_PICT_FORMAT_GREEN_MASK = (1 << 6),
+ XCB_PICT_FORMAT_BLUE = (1 << 7),
+ XCB_PICT_FORMAT_BLUE_MASK = (1 << 8),
+ XCB_PICT_FORMAT_ALPHA = (1 << 9),
+ XCB_PICT_FORMAT_ALPHA_MASK = (1 << 10),
+ XCB_PICT_FORMAT_COLORMAP = (1 << 11)
+} xcb_pict_format_t;
+
+typedef enum xcb_pict_standard_t {
+ XCB_PICT_STANDARD_ARGB_32,
+ XCB_PICT_STANDARD_RGB_24,
+ XCB_PICT_STANDARD_A_8,
+ XCB_PICT_STANDARD_A_4,
+ XCB_PICT_STANDARD_A_1
+} xcb_pict_standard_t;
+
+
+xcb_render_pictvisual_t *
+xcb_render_util_find_visual_format (const xcb_render_query_pict_formats_reply_t *formats,
+ const xcb_visualid_t visual);
+
+xcb_render_pictforminfo_t *
+xcb_render_util_find_format (const xcb_render_query_pict_formats_reply_t *formats,
+ unsigned long mask,
+ const xcb_render_pictforminfo_t *template,
+ int count);
+
+xcb_render_pictforminfo_t *
+xcb_render_util_find_standard_format (const xcb_render_query_pict_formats_reply_t *formats,
+ xcb_pict_standard_t format);
+
+const xcb_render_query_version_reply_t *
+xcb_render_util_query_version (xcb_connection_t *c);
+
+const xcb_render_query_pict_formats_reply_t *
+xcb_render_util_query_formats (xcb_connection_t *c);
+
+int
+xcb_render_util_disconnect (xcb_connection_t *c);
+
+/* wrappers for xcb_render_composite_glyphs_8/16/32 */
+
+typedef struct xcb_render_util_composite_text_stream_t xcb_render_util_composite_text_stream_t;
+
+xcb_render_util_composite_text_stream_t *
+xcb_render_util_composite_text_stream (
+ xcb_render_glyphset_t initial_glyphset,
+ uint32_t total_glyphs,
+ uint32_t total_glyphset_changes );
+
+void
+xcb_render_util_glyphs_8 (
+ xcb_render_util_composite_text_stream_t *stream,
+ int16_t dx,
+ int16_t dy,
+ uint32_t count,
+ const uint8_t *glyphs );
+
+void
+xcb_render_util_glyphs_16 (
+ xcb_render_util_composite_text_stream_t *stream,
+ int16_t dx,
+ int16_t dy,
+ uint32_t count,
+ const uint16_t *glyphs );
+
+void
+xcb_render_util_glyphs_32 (
+ xcb_render_util_composite_text_stream_t *stream,
+ int16_t dx,
+ int16_t dy,
+ uint32_t count,
+ const uint32_t *glyphs );
+
+void
+xcb_render_util_change_glyphset (
+ xcb_render_util_composite_text_stream_t *stream,
+ xcb_render_glyphset_t glyphset );
+
+xcb_void_cookie_t
+xcb_render_util_composite_text (
+ xcb_connection_t *xc,
+ uint8_t op,
+ xcb_render_picture_t src,
+ xcb_render_picture_t dst,
+ xcb_render_pictformat_t mask_format,
+ int16_t src_x,
+ int16_t src_y,
+ xcb_render_util_composite_text_stream_t *stream );
+
+xcb_void_cookie_t
+xcb_render_util_composite_text_checked (
+ xcb_connection_t *xc,
+ uint8_t op,
+ xcb_render_picture_t src,
+ xcb_render_picture_t dst,
+ xcb_render_pictformat_t mask_format,
+ int16_t src_x,
+ int16_t src_y,
+ xcb_render_util_composite_text_stream_t *stream );
+
+void
+xcb_render_util_composite_text_free (
+ xcb_render_util_composite_text_stream_t *stream );
+
+#endif /* XCB_RENDERUTIL */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_util.h b/src/3rdparty/xcb/include/xcb/xcb_util.h
new file mode 100644
index 0000000000..0f06f1b06e
--- /dev/null
+++ b/src/3rdparty/xcb/include/xcb/xcb_util.h
@@ -0,0 +1,8 @@
+#ifndef __XCB_UTIL_H__
+#define __XCB_UTIL_H__
+
+#include <xcb/xcb_atom.h>
+#include <xcb/xcb_aux.h>
+#include <xcb/xcb_event.h>
+
+#endif /* __XCB_UTIL_H__ */
diff --git a/src/3rdparty/xcb/include/xcb/xfixes.h b/src/3rdparty/xcb/include/xcb/xfixes.h
new file mode 100644
index 0000000000..4d7eb0900a
--- /dev/null
+++ b/src/3rdparty/xcb/include/xcb/xfixes.h
@@ -0,0 +1,2790 @@
+/*
+ * This file generated automatically from xfixes.xml by c_client.py.
+ * Edit at your peril.
+ */
+
+/**
+ * @defgroup XCB_XFixes_API XCB XFixes API
+ * @brief XFixes XCB Protocol Implementation.
+ * @{
+ **/
+
+#ifndef __XFIXES_H
+#define __XFIXES_H
+
+#include "xcb.h"
+#include "xproto.h"
+#include "render.h"
+#include "shape.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define XCB_XFIXES_MAJOR_VERSION 4
+#define XCB_XFIXES_MINOR_VERSION 0
+
+extern xcb_extension_t xcb_xfixes_id;
+
+/**
+ * @brief xcb_xfixes_query_version_cookie_t
+ **/
+typedef struct xcb_xfixes_query_version_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_xfixes_query_version_cookie_t;
+
+/** Opcode for xcb_xfixes_query_version. */
+#define XCB_XFIXES_QUERY_VERSION 0
+
+/**
+ * @brief xcb_xfixes_query_version_request_t
+ **/
+typedef struct xcb_xfixes_query_version_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ uint32_t client_major_version; /**< */
+ uint32_t client_minor_version; /**< */
+} xcb_xfixes_query_version_request_t;
+
+/**
+ * @brief xcb_xfixes_query_version_reply_t
+ **/
+typedef struct xcb_xfixes_query_version_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ uint32_t major_version; /**< */
+ uint32_t minor_version; /**< */
+ uint8_t pad1[16]; /**< */
+} xcb_xfixes_query_version_reply_t;
+
+typedef enum xcb_xfixes_save_set_mode_t {
+ XCB_XFIXES_SAVE_SET_MODE_INSERT,
+ XCB_XFIXES_SAVE_SET_MODE_DELETE
+} xcb_xfixes_save_set_mode_t;
+
+typedef enum xcb_xfixes_save_set_target_t {
+ XCB_XFIXES_SAVE_SET_TARGET_NEAREST,
+ XCB_XFIXES_SAVE_SET_TARGET_ROOT
+} xcb_xfixes_save_set_target_t;
+
+typedef enum xcb_xfixes_save_set_mapping_t {
+ XCB_XFIXES_SAVE_SET_MAPPING_MAP,
+ XCB_XFIXES_SAVE_SET_MAPPING_UNMAP
+} xcb_xfixes_save_set_mapping_t;
+
+/** Opcode for xcb_xfixes_change_save_set. */
+#define XCB_XFIXES_CHANGE_SAVE_SET 1
+
+/**
+ * @brief xcb_xfixes_change_save_set_request_t
+ **/
+typedef struct xcb_xfixes_change_save_set_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ uint8_t mode; /**< */
+ uint8_t target; /**< */
+ uint8_t map; /**< */
+ uint8_t pad0; /**< */
+ xcb_window_t window; /**< */
+} xcb_xfixes_change_save_set_request_t;
+
+typedef enum xcb_xfixes_selection_event_t {
+ XCB_XFIXES_SELECTION_EVENT_SET_SELECTION_OWNER,
+ XCB_XFIXES_SELECTION_EVENT_SELECTION_WINDOW_DESTROY,
+ XCB_XFIXES_SELECTION_EVENT_SELECTION_CLIENT_CLOSE
+} xcb_xfixes_selection_event_t;
+
+typedef enum xcb_xfixes_selection_event_mask_t {
+ XCB_XFIXES_SELECTION_EVENT_MASK_SET_SELECTION_OWNER = 1,
+ XCB_XFIXES_SELECTION_EVENT_MASK_SELECTION_WINDOW_DESTROY = 2,
+ XCB_XFIXES_SELECTION_EVENT_MASK_SELECTION_CLIENT_CLOSE = 4
+} xcb_xfixes_selection_event_mask_t;
+
+/** Opcode for xcb_xfixes_selection_notify. */
+#define XCB_XFIXES_SELECTION_NOTIFY 0
+
+/**
+ * @brief xcb_xfixes_selection_notify_event_t
+ **/
+typedef struct xcb_xfixes_selection_notify_event_t {
+ uint8_t response_type; /**< */
+ uint8_t subtype; /**< */
+ uint16_t sequence; /**< */
+ xcb_window_t window; /**< */
+ xcb_window_t owner; /**< */
+ xcb_atom_t selection; /**< */
+ xcb_timestamp_t timestamp; /**< */
+ xcb_timestamp_t selection_timestamp; /**< */
+ uint8_t pad0[8]; /**< */
+} xcb_xfixes_selection_notify_event_t;
+
+/** Opcode for xcb_xfixes_select_selection_input. */
+#define XCB_XFIXES_SELECT_SELECTION_INPUT 2
+
+/**
+ * @brief xcb_xfixes_select_selection_input_request_t
+ **/
+typedef struct xcb_xfixes_select_selection_input_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_window_t window; /**< */
+ xcb_atom_t selection; /**< */
+ uint32_t event_mask; /**< */
+} xcb_xfixes_select_selection_input_request_t;
+
+typedef enum xcb_xfixes_cursor_notify_t {
+ XCB_XFIXES_CURSOR_NOTIFY_DISPLAY_CURSOR
+} xcb_xfixes_cursor_notify_t;
+
+typedef enum xcb_xfixes_cursor_notify_mask_t {
+ XCB_XFIXES_CURSOR_NOTIFY_MASK_DISPLAY_CURSOR = 1
+} xcb_xfixes_cursor_notify_mask_t;
+
+/** Opcode for xcb_xfixes_cursor_notify. */
+#define XCB_XFIXES_CURSOR_NOTIFY 1
+
+/**
+ * @brief xcb_xfixes_cursor_notify_event_t
+ **/
+typedef struct xcb_xfixes_cursor_notify_event_t {
+ uint8_t response_type; /**< */
+ uint8_t subtype; /**< */
+ uint16_t sequence; /**< */
+ xcb_window_t window; /**< */
+ uint32_t cursor_serial; /**< */
+ xcb_timestamp_t timestamp; /**< */
+ xcb_atom_t name; /**< */
+ uint8_t pad0[12]; /**< */
+} xcb_xfixes_cursor_notify_event_t;
+
+/** Opcode for xcb_xfixes_select_cursor_input. */
+#define XCB_XFIXES_SELECT_CURSOR_INPUT 3
+
+/**
+ * @brief xcb_xfixes_select_cursor_input_request_t
+ **/
+typedef struct xcb_xfixes_select_cursor_input_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_window_t window; /**< */
+ uint32_t event_mask; /**< */
+} xcb_xfixes_select_cursor_input_request_t;
+
+/**
+ * @brief xcb_xfixes_get_cursor_image_cookie_t
+ **/
+typedef struct xcb_xfixes_get_cursor_image_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_xfixes_get_cursor_image_cookie_t;
+
+/** Opcode for xcb_xfixes_get_cursor_image. */
+#define XCB_XFIXES_GET_CURSOR_IMAGE 4
+
+/**
+ * @brief xcb_xfixes_get_cursor_image_request_t
+ **/
+typedef struct xcb_xfixes_get_cursor_image_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+} xcb_xfixes_get_cursor_image_request_t;
+
+/**
+ * @brief xcb_xfixes_get_cursor_image_reply_t
+ **/
+typedef struct xcb_xfixes_get_cursor_image_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ int16_t x; /**< */
+ int16_t y; /**< */
+ uint16_t width; /**< */
+ uint16_t height; /**< */
+ uint16_t xhot; /**< */
+ uint16_t yhot; /**< */
+ uint32_t cursor_serial; /**< */
+ uint8_t pad1[8]; /**< */
+} xcb_xfixes_get_cursor_image_reply_t;
+
+typedef uint32_t xcb_xfixes_region_t;
+
+/**
+ * @brief xcb_xfixes_region_iterator_t
+ **/
+typedef struct xcb_xfixes_region_iterator_t {
+ xcb_xfixes_region_t *data; /**< */
+ int rem; /**< */
+ int index; /**< */
+} xcb_xfixes_region_iterator_t;
+
+/** Opcode for xcb_xfixes_bad_region. */
+#define XCB_XFIXES_BAD_REGION 0
+
+/**
+ * @brief xcb_xfixes_bad_region_error_t
+ **/
+typedef struct xcb_xfixes_bad_region_error_t {
+ uint8_t response_type; /**< */
+ uint8_t error_code; /**< */
+ uint16_t sequence; /**< */
+} xcb_xfixes_bad_region_error_t;
+
+typedef enum xcb_xfixes_region_enum_t {
+ XCB_XFIXES_REGION_NONE
+} xcb_xfixes_region_enum_t;
+
+/** Opcode for xcb_xfixes_create_region. */
+#define XCB_XFIXES_CREATE_REGION 5
+
+/**
+ * @brief xcb_xfixes_create_region_request_t
+ **/
+typedef struct xcb_xfixes_create_region_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_xfixes_region_t region; /**< */
+} xcb_xfixes_create_region_request_t;
+
+/** Opcode for xcb_xfixes_create_region_from_bitmap. */
+#define XCB_XFIXES_CREATE_REGION_FROM_BITMAP 6
+
+/**
+ * @brief xcb_xfixes_create_region_from_bitmap_request_t
+ **/
+typedef struct xcb_xfixes_create_region_from_bitmap_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_xfixes_region_t region; /**< */
+ xcb_pixmap_t bitmap; /**< */
+} xcb_xfixes_create_region_from_bitmap_request_t;
+
+/** Opcode for xcb_xfixes_create_region_from_window. */
+#define XCB_XFIXES_CREATE_REGION_FROM_WINDOW 7
+
+/**
+ * @brief xcb_xfixes_create_region_from_window_request_t
+ **/
+typedef struct xcb_xfixes_create_region_from_window_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_xfixes_region_t region; /**< */
+ xcb_window_t window; /**< */
+ xcb_shape_kind_t kind; /**< */
+ uint8_t pad0[3]; /**< */
+} xcb_xfixes_create_region_from_window_request_t;
+
+/** Opcode for xcb_xfixes_create_region_from_gc. */
+#define XCB_XFIXES_CREATE_REGION_FROM_GC 8
+
+/**
+ * @brief xcb_xfixes_create_region_from_gc_request_t
+ **/
+typedef struct xcb_xfixes_create_region_from_gc_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_xfixes_region_t region; /**< */
+ xcb_gcontext_t gc; /**< */
+} xcb_xfixes_create_region_from_gc_request_t;
+
+/** Opcode for xcb_xfixes_create_region_from_picture. */
+#define XCB_XFIXES_CREATE_REGION_FROM_PICTURE 9
+
+/**
+ * @brief xcb_xfixes_create_region_from_picture_request_t
+ **/
+typedef struct xcb_xfixes_create_region_from_picture_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_xfixes_region_t region; /**< */
+ xcb_render_picture_t picture; /**< */
+} xcb_xfixes_create_region_from_picture_request_t;
+
+/** Opcode for xcb_xfixes_destroy_region. */
+#define XCB_XFIXES_DESTROY_REGION 10
+
+/**
+ * @brief xcb_xfixes_destroy_region_request_t
+ **/
+typedef struct xcb_xfixes_destroy_region_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_xfixes_region_t region; /**< */
+} xcb_xfixes_destroy_region_request_t;
+
+/** Opcode for xcb_xfixes_set_region. */
+#define XCB_XFIXES_SET_REGION 11
+
+/**
+ * @brief xcb_xfixes_set_region_request_t
+ **/
+typedef struct xcb_xfixes_set_region_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_xfixes_region_t region; /**< */
+} xcb_xfixes_set_region_request_t;
+
+/** Opcode for xcb_xfixes_copy_region. */
+#define XCB_XFIXES_COPY_REGION 12
+
+/**
+ * @brief xcb_xfixes_copy_region_request_t
+ **/
+typedef struct xcb_xfixes_copy_region_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_xfixes_region_t source; /**< */
+ xcb_xfixes_region_t destination; /**< */
+} xcb_xfixes_copy_region_request_t;
+
+/** Opcode for xcb_xfixes_union_region. */
+#define XCB_XFIXES_UNION_REGION 13
+
+/**
+ * @brief xcb_xfixes_union_region_request_t
+ **/
+typedef struct xcb_xfixes_union_region_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_xfixes_region_t source1; /**< */
+ xcb_xfixes_region_t source2; /**< */
+ xcb_xfixes_region_t destination; /**< */
+} xcb_xfixes_union_region_request_t;
+
+/** Opcode for xcb_xfixes_intersect_region. */
+#define XCB_XFIXES_INTERSECT_REGION 14
+
+/**
+ * @brief xcb_xfixes_intersect_region_request_t
+ **/
+typedef struct xcb_xfixes_intersect_region_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_xfixes_region_t source1; /**< */
+ xcb_xfixes_region_t source2; /**< */
+ xcb_xfixes_region_t destination; /**< */
+} xcb_xfixes_intersect_region_request_t;
+
+/** Opcode for xcb_xfixes_subtract_region. */
+#define XCB_XFIXES_SUBTRACT_REGION 15
+
+/**
+ * @brief xcb_xfixes_subtract_region_request_t
+ **/
+typedef struct xcb_xfixes_subtract_region_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_xfixes_region_t source1; /**< */
+ xcb_xfixes_region_t source2; /**< */
+ xcb_xfixes_region_t destination; /**< */
+} xcb_xfixes_subtract_region_request_t;
+
+/** Opcode for xcb_xfixes_invert_region. */
+#define XCB_XFIXES_INVERT_REGION 16
+
+/**
+ * @brief xcb_xfixes_invert_region_request_t
+ **/
+typedef struct xcb_xfixes_invert_region_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_xfixes_region_t source; /**< */
+ xcb_rectangle_t bounds; /**< */
+ xcb_xfixes_region_t destination; /**< */
+} xcb_xfixes_invert_region_request_t;
+
+/** Opcode for xcb_xfixes_translate_region. */
+#define XCB_XFIXES_TRANSLATE_REGION 17
+
+/**
+ * @brief xcb_xfixes_translate_region_request_t
+ **/
+typedef struct xcb_xfixes_translate_region_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_xfixes_region_t region; /**< */
+ int16_t dx; /**< */
+ int16_t dy; /**< */
+} xcb_xfixes_translate_region_request_t;
+
+/** Opcode for xcb_xfixes_region_extents. */
+#define XCB_XFIXES_REGION_EXTENTS 18
+
+/**
+ * @brief xcb_xfixes_region_extents_request_t
+ **/
+typedef struct xcb_xfixes_region_extents_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_xfixes_region_t source; /**< */
+ xcb_xfixes_region_t destination; /**< */
+} xcb_xfixes_region_extents_request_t;
+
+/**
+ * @brief xcb_xfixes_fetch_region_cookie_t
+ **/
+typedef struct xcb_xfixes_fetch_region_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_xfixes_fetch_region_cookie_t;
+
+/** Opcode for xcb_xfixes_fetch_region. */
+#define XCB_XFIXES_FETCH_REGION 19
+
+/**
+ * @brief xcb_xfixes_fetch_region_request_t
+ **/
+typedef struct xcb_xfixes_fetch_region_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_xfixes_region_t region; /**< */
+} xcb_xfixes_fetch_region_request_t;
+
+/**
+ * @brief xcb_xfixes_fetch_region_reply_t
+ **/
+typedef struct xcb_xfixes_fetch_region_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ xcb_rectangle_t extents; /**< */
+ uint8_t pad1[16]; /**< */
+} xcb_xfixes_fetch_region_reply_t;
+
+/** Opcode for xcb_xfixes_set_gc_clip_region. */
+#define XCB_XFIXES_SET_GC_CLIP_REGION 20
+
+/**
+ * @brief xcb_xfixes_set_gc_clip_region_request_t
+ **/
+typedef struct xcb_xfixes_set_gc_clip_region_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_gcontext_t gc; /**< */
+ xcb_xfixes_region_t region; /**< */
+ int16_t x_origin; /**< */
+ int16_t y_origin; /**< */
+} xcb_xfixes_set_gc_clip_region_request_t;
+
+/** Opcode for xcb_xfixes_set_window_shape_region. */
+#define XCB_XFIXES_SET_WINDOW_SHAPE_REGION 21
+
+/**
+ * @brief xcb_xfixes_set_window_shape_region_request_t
+ **/
+typedef struct xcb_xfixes_set_window_shape_region_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_window_t dest; /**< */
+ xcb_shape_kind_t dest_kind; /**< */
+ uint8_t pad0[3]; /**< */
+ int16_t x_offset; /**< */
+ int16_t y_offset; /**< */
+ xcb_xfixes_region_t region; /**< */
+} xcb_xfixes_set_window_shape_region_request_t;
+
+/** Opcode for xcb_xfixes_set_picture_clip_region. */
+#define XCB_XFIXES_SET_PICTURE_CLIP_REGION 22
+
+/**
+ * @brief xcb_xfixes_set_picture_clip_region_request_t
+ **/
+typedef struct xcb_xfixes_set_picture_clip_region_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_render_picture_t picture; /**< */
+ xcb_xfixes_region_t region; /**< */
+ int16_t x_origin; /**< */
+ int16_t y_origin; /**< */
+} xcb_xfixes_set_picture_clip_region_request_t;
+
+/** Opcode for xcb_xfixes_set_cursor_name. */
+#define XCB_XFIXES_SET_CURSOR_NAME 23
+
+/**
+ * @brief xcb_xfixes_set_cursor_name_request_t
+ **/
+typedef struct xcb_xfixes_set_cursor_name_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_cursor_t cursor; /**< */
+ uint16_t nbytes; /**< */
+ uint8_t pad0[2]; /**< */
+} xcb_xfixes_set_cursor_name_request_t;
+
+/**
+ * @brief xcb_xfixes_get_cursor_name_cookie_t
+ **/
+typedef struct xcb_xfixes_get_cursor_name_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_xfixes_get_cursor_name_cookie_t;
+
+/** Opcode for xcb_xfixes_get_cursor_name. */
+#define XCB_XFIXES_GET_CURSOR_NAME 24
+
+/**
+ * @brief xcb_xfixes_get_cursor_name_request_t
+ **/
+typedef struct xcb_xfixes_get_cursor_name_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_cursor_t cursor; /**< */
+} xcb_xfixes_get_cursor_name_request_t;
+
+/**
+ * @brief xcb_xfixes_get_cursor_name_reply_t
+ **/
+typedef struct xcb_xfixes_get_cursor_name_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ xcb_atom_t atom; /**< */
+ uint16_t nbytes; /**< */
+ uint8_t pad1[18]; /**< */
+} xcb_xfixes_get_cursor_name_reply_t;
+
+/**
+ * @brief xcb_xfixes_get_cursor_image_and_name_cookie_t
+ **/
+typedef struct xcb_xfixes_get_cursor_image_and_name_cookie_t {
+ unsigned int sequence; /**< */
+} xcb_xfixes_get_cursor_image_and_name_cookie_t;
+
+/** Opcode for xcb_xfixes_get_cursor_image_and_name. */
+#define XCB_XFIXES_GET_CURSOR_IMAGE_AND_NAME 25
+
+/**
+ * @brief xcb_xfixes_get_cursor_image_and_name_request_t
+ **/
+typedef struct xcb_xfixes_get_cursor_image_and_name_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+} xcb_xfixes_get_cursor_image_and_name_request_t;
+
+/**
+ * @brief xcb_xfixes_get_cursor_image_and_name_reply_t
+ **/
+typedef struct xcb_xfixes_get_cursor_image_and_name_reply_t {
+ uint8_t response_type; /**< */
+ uint8_t pad0; /**< */
+ uint16_t sequence; /**< */
+ uint32_t length; /**< */
+ int16_t x; /**< */
+ int16_t y; /**< */
+ uint16_t width; /**< */
+ uint16_t height; /**< */
+ uint16_t xhot; /**< */
+ uint16_t yhot; /**< */
+ uint32_t cursor_serial; /**< */
+ xcb_atom_t cursor_atom; /**< */
+ uint16_t nbytes; /**< */
+ uint8_t pad1[2]; /**< */
+} xcb_xfixes_get_cursor_image_and_name_reply_t;
+
+/** Opcode for xcb_xfixes_change_cursor. */
+#define XCB_XFIXES_CHANGE_CURSOR 26
+
+/**
+ * @brief xcb_xfixes_change_cursor_request_t
+ **/
+typedef struct xcb_xfixes_change_cursor_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_cursor_t source; /**< */
+ xcb_cursor_t destination; /**< */
+} xcb_xfixes_change_cursor_request_t;
+
+/** Opcode for xcb_xfixes_change_cursor_by_name. */
+#define XCB_XFIXES_CHANGE_CURSOR_BY_NAME 27
+
+/**
+ * @brief xcb_xfixes_change_cursor_by_name_request_t
+ **/
+typedef struct xcb_xfixes_change_cursor_by_name_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_cursor_t src; /**< */
+ uint16_t nbytes; /**< */
+ uint8_t pad0[2]; /**< */
+} xcb_xfixes_change_cursor_by_name_request_t;
+
+/** Opcode for xcb_xfixes_expand_region. */
+#define XCB_XFIXES_EXPAND_REGION 28
+
+/**
+ * @brief xcb_xfixes_expand_region_request_t
+ **/
+typedef struct xcb_xfixes_expand_region_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_xfixes_region_t source; /**< */
+ xcb_xfixes_region_t destination; /**< */
+ uint16_t left; /**< */
+ uint16_t right; /**< */
+ uint16_t top; /**< */
+ uint16_t bottom; /**< */
+} xcb_xfixes_expand_region_request_t;
+
+/** Opcode for xcb_xfixes_hide_cursor. */
+#define XCB_XFIXES_HIDE_CURSOR 29
+
+/**
+ * @brief xcb_xfixes_hide_cursor_request_t
+ **/
+typedef struct xcb_xfixes_hide_cursor_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_window_t window; /**< */
+} xcb_xfixes_hide_cursor_request_t;
+
+/** Opcode for xcb_xfixes_show_cursor. */
+#define XCB_XFIXES_SHOW_CURSOR 30
+
+/**
+ * @brief xcb_xfixes_show_cursor_request_t
+ **/
+typedef struct xcb_xfixes_show_cursor_request_t {
+ uint8_t major_opcode; /**< */
+ uint8_t minor_opcode; /**< */
+ uint16_t length; /**< */
+ xcb_window_t window; /**< */
+} xcb_xfixes_show_cursor_request_t;
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_query_version_cookie_t xcb_xfixes_query_version
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t client_major_version
+ ** @param uint32_t client_minor_version
+ ** @returns xcb_xfixes_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_query_version_cookie_t
+xcb_xfixes_query_version (xcb_connection_t *c /**< */,
+ uint32_t client_major_version /**< */,
+ uint32_t client_minor_version /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_query_version_cookie_t xcb_xfixes_query_version_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t client_major_version
+ ** @param uint32_t client_minor_version
+ ** @returns xcb_xfixes_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_query_version_cookie_t
+xcb_xfixes_query_version_unchecked (xcb_connection_t *c /**< */,
+ uint32_t client_major_version /**< */,
+ uint32_t client_minor_version /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_xfixes_query_version_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_query_version_reply_t * xcb_xfixes_query_version_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_query_version_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_xfixes_query_version_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_xfixes_query_version_reply_t *
+xcb_xfixes_query_version_reply (xcb_connection_t *c /**< */,
+ xcb_xfixes_query_version_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_change_save_set_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t mode
+ ** @param uint8_t target
+ ** @param uint8_t map
+ ** @param xcb_window_t window
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_change_save_set_checked (xcb_connection_t *c /**< */,
+ uint8_t mode /**< */,
+ uint8_t target /**< */,
+ uint8_t map /**< */,
+ xcb_window_t window /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_change_save_set
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t mode
+ ** @param uint8_t target
+ ** @param uint8_t map
+ ** @param xcb_window_t window
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_change_save_set (xcb_connection_t *c /**< */,
+ uint8_t mode /**< */,
+ uint8_t target /**< */,
+ uint8_t map /**< */,
+ xcb_window_t window /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_select_selection_input_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_atom_t selection
+ ** @param uint32_t event_mask
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_select_selection_input_checked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_atom_t selection /**< */,
+ uint32_t event_mask /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_select_selection_input
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_atom_t selection
+ ** @param uint32_t event_mask
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_select_selection_input (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_atom_t selection /**< */,
+ uint32_t event_mask /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_select_cursor_input_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param uint32_t event_mask
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_select_cursor_input_checked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ uint32_t event_mask /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_select_cursor_input
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param uint32_t event_mask
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_select_cursor_input (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ uint32_t event_mask /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_get_cursor_image_cookie_t xcb_xfixes_get_cursor_image
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_xfixes_get_cursor_image_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_get_cursor_image_cookie_t
+xcb_xfixes_get_cursor_image (xcb_connection_t *c /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_get_cursor_image_cookie_t xcb_xfixes_get_cursor_image_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_xfixes_get_cursor_image_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_get_cursor_image_cookie_t
+xcb_xfixes_get_cursor_image_unchecked (xcb_connection_t *c /**< */);
+
+
+/*****************************************************************************
+ **
+ ** uint32_t * xcb_xfixes_get_cursor_image_cursor_image
+ **
+ ** @param const xcb_xfixes_get_cursor_image_reply_t *R
+ ** @returns uint32_t *
+ **
+ *****************************************************************************/
+
+uint32_t *
+xcb_xfixes_get_cursor_image_cursor_image (const xcb_xfixes_get_cursor_image_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_xfixes_get_cursor_image_cursor_image_length
+ **
+ ** @param const xcb_xfixes_get_cursor_image_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_xfixes_get_cursor_image_cursor_image_length (const xcb_xfixes_get_cursor_image_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_xfixes_get_cursor_image_cursor_image_end
+ **
+ ** @param const xcb_xfixes_get_cursor_image_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_xfixes_get_cursor_image_cursor_image_end (const xcb_xfixes_get_cursor_image_reply_t *R /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_xfixes_get_cursor_image_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_get_cursor_image_reply_t * xcb_xfixes_get_cursor_image_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_get_cursor_image_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_xfixes_get_cursor_image_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_xfixes_get_cursor_image_reply_t *
+xcb_xfixes_get_cursor_image_reply (xcb_connection_t *c /**< */,
+ xcb_xfixes_get_cursor_image_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Get the next element of the iterator
+ * @param i Pointer to a xcb_xfixes_region_iterator_t
+ *
+ * Get the next element in the iterator. The member rem is
+ * decreased by one. The member data points to the next
+ * element. The member index is increased by sizeof(xcb_xfixes_region_t)
+ */
+
+/*****************************************************************************
+ **
+ ** void xcb_xfixes_region_next
+ **
+ ** @param xcb_xfixes_region_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_xfixes_region_next (xcb_xfixes_region_iterator_t *i /**< */);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_xfixes_region_iterator_t
+ * @return The iterator pointing to the last element
+ *
+ * Set the current element in the iterator to the last element.
+ * The member rem is set to 0. The member data points to the
+ * last element.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_xfixes_region_end
+ **
+ ** @param xcb_xfixes_region_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_xfixes_region_end (xcb_xfixes_region_iterator_t i /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param uint32_t rectangles_len
+ ** @param const xcb_rectangle_t *rectangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ uint32_t rectangles_len /**< */,
+ const xcb_rectangle_t *rectangles /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param uint32_t rectangles_len
+ ** @param const xcb_rectangle_t *rectangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ uint32_t rectangles_len /**< */,
+ const xcb_rectangle_t *rectangles /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region_from_bitmap_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param xcb_pixmap_t bitmap
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region_from_bitmap_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ xcb_pixmap_t bitmap /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region_from_bitmap
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param xcb_pixmap_t bitmap
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region_from_bitmap (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ xcb_pixmap_t bitmap /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region_from_window_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param xcb_window_t window
+ ** @param xcb_shape_kind_t kind
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region_from_window_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ xcb_window_t window /**< */,
+ xcb_shape_kind_t kind /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region_from_window
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param xcb_window_t window
+ ** @param xcb_shape_kind_t kind
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region_from_window (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ xcb_window_t window /**< */,
+ xcb_shape_kind_t kind /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region_from_gc_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param xcb_gcontext_t gc
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region_from_gc_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ xcb_gcontext_t gc /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region_from_gc
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param xcb_gcontext_t gc
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region_from_gc (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ xcb_gcontext_t gc /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region_from_picture_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param xcb_render_picture_t picture
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region_from_picture_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ xcb_render_picture_t picture /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region_from_picture
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param xcb_render_picture_t picture
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region_from_picture (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ xcb_render_picture_t picture /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_destroy_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_destroy_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_destroy_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_destroy_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param uint32_t rectangles_len
+ ** @param const xcb_rectangle_t *rectangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ uint32_t rectangles_len /**< */,
+ const xcb_rectangle_t *rectangles /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param uint32_t rectangles_len
+ ** @param const xcb_rectangle_t *rectangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ uint32_t rectangles_len /**< */,
+ const xcb_rectangle_t *rectangles /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_copy_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_copy_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source /**< */,
+ xcb_xfixes_region_t destination /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_copy_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_copy_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source /**< */,
+ xcb_xfixes_region_t destination /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_union_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source1
+ ** @param xcb_xfixes_region_t source2
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_union_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source1 /**< */,
+ xcb_xfixes_region_t source2 /**< */,
+ xcb_xfixes_region_t destination /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_union_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source1
+ ** @param xcb_xfixes_region_t source2
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_union_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source1 /**< */,
+ xcb_xfixes_region_t source2 /**< */,
+ xcb_xfixes_region_t destination /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_intersect_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source1
+ ** @param xcb_xfixes_region_t source2
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_intersect_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source1 /**< */,
+ xcb_xfixes_region_t source2 /**< */,
+ xcb_xfixes_region_t destination /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_intersect_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source1
+ ** @param xcb_xfixes_region_t source2
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_intersect_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source1 /**< */,
+ xcb_xfixes_region_t source2 /**< */,
+ xcb_xfixes_region_t destination /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_subtract_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source1
+ ** @param xcb_xfixes_region_t source2
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_subtract_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source1 /**< */,
+ xcb_xfixes_region_t source2 /**< */,
+ xcb_xfixes_region_t destination /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_subtract_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source1
+ ** @param xcb_xfixes_region_t source2
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_subtract_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source1 /**< */,
+ xcb_xfixes_region_t source2 /**< */,
+ xcb_xfixes_region_t destination /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_invert_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source
+ ** @param xcb_rectangle_t bounds
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_invert_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source /**< */,
+ xcb_rectangle_t bounds /**< */,
+ xcb_xfixes_region_t destination /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_invert_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source
+ ** @param xcb_rectangle_t bounds
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_invert_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source /**< */,
+ xcb_rectangle_t bounds /**< */,
+ xcb_xfixes_region_t destination /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_translate_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param int16_t dx
+ ** @param int16_t dy
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_translate_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ int16_t dx /**< */,
+ int16_t dy /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_translate_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param int16_t dx
+ ** @param int16_t dy
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_translate_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ int16_t dx /**< */,
+ int16_t dy /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_region_extents_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_region_extents_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source /**< */,
+ xcb_xfixes_region_t destination /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_region_extents
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_region_extents (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source /**< */,
+ xcb_xfixes_region_t destination /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_fetch_region_cookie_t xcb_xfixes_fetch_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @returns xcb_xfixes_fetch_region_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_fetch_region_cookie_t
+xcb_xfixes_fetch_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_fetch_region_cookie_t xcb_xfixes_fetch_region_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @returns xcb_xfixes_fetch_region_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_fetch_region_cookie_t
+xcb_xfixes_fetch_region_unchecked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_rectangle_t * xcb_xfixes_fetch_region_rectangles
+ **
+ ** @param const xcb_xfixes_fetch_region_reply_t *R
+ ** @returns xcb_rectangle_t *
+ **
+ *****************************************************************************/
+
+xcb_rectangle_t *
+xcb_xfixes_fetch_region_rectangles (const xcb_xfixes_fetch_region_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_xfixes_fetch_region_rectangles_length
+ **
+ ** @param const xcb_xfixes_fetch_region_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_xfixes_fetch_region_rectangles_length (const xcb_xfixes_fetch_region_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_rectangle_iterator_t xcb_xfixes_fetch_region_rectangles_iterator
+ **
+ ** @param const xcb_xfixes_fetch_region_reply_t *R
+ ** @returns xcb_rectangle_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_rectangle_iterator_t
+xcb_xfixes_fetch_region_rectangles_iterator (const xcb_xfixes_fetch_region_reply_t *R /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_xfixes_fetch_region_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_fetch_region_reply_t * xcb_xfixes_fetch_region_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_fetch_region_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_xfixes_fetch_region_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_xfixes_fetch_region_reply_t *
+xcb_xfixes_fetch_region_reply (xcb_connection_t *c /**< */,
+ xcb_xfixes_fetch_region_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_gc_clip_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_gcontext_t gc
+ ** @param xcb_xfixes_region_t region
+ ** @param int16_t x_origin
+ ** @param int16_t y_origin
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_gc_clip_region_checked (xcb_connection_t *c /**< */,
+ xcb_gcontext_t gc /**< */,
+ xcb_xfixes_region_t region /**< */,
+ int16_t x_origin /**< */,
+ int16_t y_origin /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_gc_clip_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_gcontext_t gc
+ ** @param xcb_xfixes_region_t region
+ ** @param int16_t x_origin
+ ** @param int16_t y_origin
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_gc_clip_region (xcb_connection_t *c /**< */,
+ xcb_gcontext_t gc /**< */,
+ xcb_xfixes_region_t region /**< */,
+ int16_t x_origin /**< */,
+ int16_t y_origin /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_window_shape_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t dest
+ ** @param xcb_shape_kind_t dest_kind
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @param xcb_xfixes_region_t region
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_window_shape_region_checked (xcb_connection_t *c /**< */,
+ xcb_window_t dest /**< */,
+ xcb_shape_kind_t dest_kind /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */,
+ xcb_xfixes_region_t region /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_window_shape_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t dest
+ ** @param xcb_shape_kind_t dest_kind
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @param xcb_xfixes_region_t region
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_window_shape_region (xcb_connection_t *c /**< */,
+ xcb_window_t dest /**< */,
+ xcb_shape_kind_t dest_kind /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */,
+ xcb_xfixes_region_t region /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_picture_clip_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_xfixes_region_t region
+ ** @param int16_t x_origin
+ ** @param int16_t y_origin
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_picture_clip_region_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_xfixes_region_t region /**< */,
+ int16_t x_origin /**< */,
+ int16_t y_origin /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_picture_clip_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_xfixes_region_t region
+ ** @param int16_t x_origin
+ ** @param int16_t y_origin
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_picture_clip_region (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_xfixes_region_t region /**< */,
+ int16_t x_origin /**< */,
+ int16_t y_origin /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_cursor_name_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t cursor
+ ** @param uint16_t nbytes
+ ** @param const char *name
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_cursor_name_checked (xcb_connection_t *c /**< */,
+ xcb_cursor_t cursor /**< */,
+ uint16_t nbytes /**< */,
+ const char *name /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_cursor_name
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t cursor
+ ** @param uint16_t nbytes
+ ** @param const char *name
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_cursor_name (xcb_connection_t *c /**< */,
+ xcb_cursor_t cursor /**< */,
+ uint16_t nbytes /**< */,
+ const char *name /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_get_cursor_name_cookie_t xcb_xfixes_get_cursor_name
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t cursor
+ ** @returns xcb_xfixes_get_cursor_name_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_get_cursor_name_cookie_t
+xcb_xfixes_get_cursor_name (xcb_connection_t *c /**< */,
+ xcb_cursor_t cursor /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_get_cursor_name_cookie_t xcb_xfixes_get_cursor_name_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t cursor
+ ** @returns xcb_xfixes_get_cursor_name_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_get_cursor_name_cookie_t
+xcb_xfixes_get_cursor_name_unchecked (xcb_connection_t *c /**< */,
+ xcb_cursor_t cursor /**< */);
+
+
+/*****************************************************************************
+ **
+ ** char * xcb_xfixes_get_cursor_name_name
+ **
+ ** @param const xcb_xfixes_get_cursor_name_reply_t *R
+ ** @returns char *
+ **
+ *****************************************************************************/
+
+char *
+xcb_xfixes_get_cursor_name_name (const xcb_xfixes_get_cursor_name_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_xfixes_get_cursor_name_name_length
+ **
+ ** @param const xcb_xfixes_get_cursor_name_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_xfixes_get_cursor_name_name_length (const xcb_xfixes_get_cursor_name_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_xfixes_get_cursor_name_name_end
+ **
+ ** @param const xcb_xfixes_get_cursor_name_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_xfixes_get_cursor_name_name_end (const xcb_xfixes_get_cursor_name_reply_t *R /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_xfixes_get_cursor_name_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_get_cursor_name_reply_t * xcb_xfixes_get_cursor_name_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_get_cursor_name_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_xfixes_get_cursor_name_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_xfixes_get_cursor_name_reply_t *
+xcb_xfixes_get_cursor_name_reply (xcb_connection_t *c /**< */,
+ xcb_xfixes_get_cursor_name_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_get_cursor_image_and_name_cookie_t xcb_xfixes_get_cursor_image_and_name
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_xfixes_get_cursor_image_and_name_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_get_cursor_image_and_name_cookie_t
+xcb_xfixes_get_cursor_image_and_name (xcb_connection_t *c /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will cause
+ * a reply to be generated. Any returned error will be
+ * placed in the event queue.
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_get_cursor_image_and_name_cookie_t xcb_xfixes_get_cursor_image_and_name_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_xfixes_get_cursor_image_and_name_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_get_cursor_image_and_name_cookie_t
+xcb_xfixes_get_cursor_image_and_name_unchecked (xcb_connection_t *c /**< */);
+
+
+/*****************************************************************************
+ **
+ ** char * xcb_xfixes_get_cursor_image_and_name_name
+ **
+ ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
+ ** @returns char *
+ **
+ *****************************************************************************/
+
+char *
+xcb_xfixes_get_cursor_image_and_name_name (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_xfixes_get_cursor_image_and_name_name_length
+ **
+ ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_xfixes_get_cursor_image_and_name_name_length (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_xfixes_get_cursor_image_and_name_name_end
+ **
+ ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_xfixes_get_cursor_image_and_name_name_end (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** uint32_t * xcb_xfixes_get_cursor_image_and_name_cursor_image
+ **
+ ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
+ ** @returns uint32_t *
+ **
+ *****************************************************************************/
+
+uint32_t *
+xcb_xfixes_get_cursor_image_and_name_cursor_image (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** int xcb_xfixes_get_cursor_image_and_name_cursor_image_length
+ **
+ ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_xfixes_get_cursor_image_and_name_cursor_image_length (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */);
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_xfixes_get_cursor_image_and_name_cursor_image_end
+ **
+ ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_xfixes_get_cursor_image_and_name_cursor_image_end (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */);
+
+/**
+ * Return the reply
+ * @param c The connection
+ * @param cookie The cookie
+ * @param e The xcb_generic_error_t supplied
+ *
+ * Returns the reply of the request asked by
+ *
+ * The parameter @p e supplied to this function must be NULL if
+ * xcb_xfixes_get_cursor_image_and_name_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_get_cursor_image_and_name_reply_t * xcb_xfixes_get_cursor_image_and_name_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_get_cursor_image_and_name_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_xfixes_get_cursor_image_and_name_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_xfixes_get_cursor_image_and_name_reply_t *
+xcb_xfixes_get_cursor_image_and_name_reply (xcb_connection_t *c /**< */,
+ xcb_xfixes_get_cursor_image_and_name_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_change_cursor_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t source
+ ** @param xcb_cursor_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_change_cursor_checked (xcb_connection_t *c /**< */,
+ xcb_cursor_t source /**< */,
+ xcb_cursor_t destination /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_change_cursor
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t source
+ ** @param xcb_cursor_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_change_cursor (xcb_connection_t *c /**< */,
+ xcb_cursor_t source /**< */,
+ xcb_cursor_t destination /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_change_cursor_by_name_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t src
+ ** @param uint16_t nbytes
+ ** @param const char *name
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_change_cursor_by_name_checked (xcb_connection_t *c /**< */,
+ xcb_cursor_t src /**< */,
+ uint16_t nbytes /**< */,
+ const char *name /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_change_cursor_by_name
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t src
+ ** @param uint16_t nbytes
+ ** @param const char *name
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_change_cursor_by_name (xcb_connection_t *c /**< */,
+ xcb_cursor_t src /**< */,
+ uint16_t nbytes /**< */,
+ const char *name /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_expand_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source
+ ** @param xcb_xfixes_region_t destination
+ ** @param uint16_t left
+ ** @param uint16_t right
+ ** @param uint16_t top
+ ** @param uint16_t bottom
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_expand_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source /**< */,
+ xcb_xfixes_region_t destination /**< */,
+ uint16_t left /**< */,
+ uint16_t right /**< */,
+ uint16_t top /**< */,
+ uint16_t bottom /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_expand_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source
+ ** @param xcb_xfixes_region_t destination
+ ** @param uint16_t left
+ ** @param uint16_t right
+ ** @param uint16_t top
+ ** @param uint16_t bottom
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_expand_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source /**< */,
+ xcb_xfixes_region_t destination /**< */,
+ uint16_t left /**< */,
+ uint16_t right /**< */,
+ uint16_t top /**< */,
+ uint16_t bottom /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_hide_cursor_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_hide_cursor_checked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_hide_cursor
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_hide_cursor (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_show_cursor_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_show_cursor_checked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */);
+
+/**
+ * Delivers a request to the X server
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_show_cursor
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_show_cursor (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/**
+ * @}
+ */
diff --git a/src/3rdparty/xcb/libxcb/randr.c b/src/3rdparty/xcb/libxcb/randr.c
new file mode 100644
index 0000000000..1956ee033e
--- /dev/null
+++ b/src/3rdparty/xcb/libxcb/randr.c
@@ -0,0 +1,4827 @@
+/*
+ * This file generated automatically from randr.xml by c_client.py.
+ * Edit at your peril.
+ */
+
+#include <string.h>
+#include <assert.h>
+#include "xcbext.h"
+#include "randr.h"
+#include "xproto.h"
+#include "render.h"
+
+xcb_extension_t xcb_randr_id = { "RANDR", 0 };
+
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_mode_next
+ **
+ ** @param xcb_randr_mode_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_mode_next (xcb_randr_mode_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_randr_mode_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_mode_end
+ **
+ ** @param xcb_randr_mode_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_mode_end (xcb_randr_mode_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_crtc_next
+ **
+ ** @param xcb_randr_crtc_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_crtc_next (xcb_randr_crtc_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_randr_crtc_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_crtc_end
+ **
+ ** @param xcb_randr_crtc_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_crtc_end (xcb_randr_crtc_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_output_next
+ **
+ ** @param xcb_randr_output_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_output_next (xcb_randr_output_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_randr_output_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_output_end
+ **
+ ** @param xcb_randr_output_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_output_end (xcb_randr_output_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_screen_size_next
+ **
+ ** @param xcb_randr_screen_size_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_screen_size_next (xcb_randr_screen_size_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_randr_screen_size_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_screen_size_end
+ **
+ ** @param xcb_randr_screen_size_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_screen_size_end (xcb_randr_screen_size_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** uint16_t * xcb_randr_refresh_rates_rates
+ **
+ ** @param const xcb_randr_refresh_rates_t *R
+ ** @returns uint16_t *
+ **
+ *****************************************************************************/
+
+uint16_t *
+xcb_randr_refresh_rates_rates (const xcb_randr_refresh_rates_t *R /**< */)
+{
+ return (uint16_t *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_refresh_rates_rates_length
+ **
+ ** @param const xcb_randr_refresh_rates_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_refresh_rates_rates_length (const xcb_randr_refresh_rates_t *R /**< */)
+{
+ return R->nRates;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_refresh_rates_rates_end
+ **
+ ** @param const xcb_randr_refresh_rates_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_refresh_rates_rates_end (const xcb_randr_refresh_rates_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ i.data = ((uint16_t *) (R + 1)) + (R->nRates);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_refresh_rates_next
+ **
+ ** @param xcb_randr_refresh_rates_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_refresh_rates_next (xcb_randr_refresh_rates_iterator_t *i /**< */)
+{
+ xcb_randr_refresh_rates_t *R = i->data;
+ xcb_generic_iterator_t child = xcb_randr_refresh_rates_rates_end(R);
+ --i->rem;
+ i->data = (xcb_randr_refresh_rates_t *) child.data;
+ i->index = child.index;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_refresh_rates_end
+ **
+ ** @param xcb_randr_refresh_rates_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_refresh_rates_end (xcb_randr_refresh_rates_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ while(i.rem > 0)
+ xcb_randr_refresh_rates_next(&i);
+ ret.data = i.data;
+ ret.rem = i.rem;
+ ret.index = i.index;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_query_version_cookie_t xcb_randr_query_version
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t major_version
+ ** @param uint32_t minor_version
+ ** @returns xcb_randr_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_query_version_cookie_t
+xcb_randr_query_version (xcb_connection_t *c /**< */,
+ uint32_t major_version /**< */,
+ uint32_t minor_version /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_QUERY_VERSION,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_query_version_cookie_t xcb_ret;
+ xcb_randr_query_version_request_t xcb_out;
+
+ xcb_out.major_version = major_version;
+ xcb_out.minor_version = minor_version;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_query_version_cookie_t xcb_randr_query_version_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t major_version
+ ** @param uint32_t minor_version
+ ** @returns xcb_randr_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_query_version_cookie_t
+xcb_randr_query_version_unchecked (xcb_connection_t *c /**< */,
+ uint32_t major_version /**< */,
+ uint32_t minor_version /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_QUERY_VERSION,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_query_version_cookie_t xcb_ret;
+ xcb_randr_query_version_request_t xcb_out;
+
+ xcb_out.major_version = major_version;
+ xcb_out.minor_version = minor_version;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_query_version_reply_t * xcb_randr_query_version_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_query_version_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_query_version_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_query_version_reply_t *
+xcb_randr_query_version_reply (xcb_connection_t *c /**< */,
+ xcb_randr_query_version_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_randr_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_set_screen_config_cookie_t xcb_randr_set_screen_config
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_timestamp_t timestamp
+ ** @param xcb_timestamp_t config_timestamp
+ ** @param uint16_t sizeID
+ ** @param uint16_t rotation
+ ** @param uint16_t rate
+ ** @returns xcb_randr_set_screen_config_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_set_screen_config_cookie_t
+xcb_randr_set_screen_config (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_timestamp_t timestamp /**< */,
+ xcb_timestamp_t config_timestamp /**< */,
+ uint16_t sizeID /**< */,
+ uint16_t rotation /**< */,
+ uint16_t rate /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_SET_SCREEN_CONFIG,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_set_screen_config_cookie_t xcb_ret;
+ xcb_randr_set_screen_config_request_t xcb_out;
+
+ xcb_out.window = window;
+ xcb_out.timestamp = timestamp;
+ xcb_out.config_timestamp = config_timestamp;
+ xcb_out.sizeID = sizeID;
+ xcb_out.rotation = rotation;
+ xcb_out.rate = rate;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_set_screen_config_cookie_t xcb_randr_set_screen_config_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_timestamp_t timestamp
+ ** @param xcb_timestamp_t config_timestamp
+ ** @param uint16_t sizeID
+ ** @param uint16_t rotation
+ ** @param uint16_t rate
+ ** @returns xcb_randr_set_screen_config_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_set_screen_config_cookie_t
+xcb_randr_set_screen_config_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_timestamp_t timestamp /**< */,
+ xcb_timestamp_t config_timestamp /**< */,
+ uint16_t sizeID /**< */,
+ uint16_t rotation /**< */,
+ uint16_t rate /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_SET_SCREEN_CONFIG,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_set_screen_config_cookie_t xcb_ret;
+ xcb_randr_set_screen_config_request_t xcb_out;
+
+ xcb_out.window = window;
+ xcb_out.timestamp = timestamp;
+ xcb_out.config_timestamp = config_timestamp;
+ xcb_out.sizeID = sizeID;
+ xcb_out.rotation = rotation;
+ xcb_out.rate = rate;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_set_screen_config_reply_t * xcb_randr_set_screen_config_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_set_screen_config_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_set_screen_config_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_set_screen_config_reply_t *
+xcb_randr_set_screen_config_reply (xcb_connection_t *c /**< */,
+ xcb_randr_set_screen_config_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_randr_set_screen_config_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_select_input_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param uint16_t enable
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_select_input_checked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ uint16_t enable /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_SELECT_INPUT,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_select_input_request_t xcb_out;
+
+ xcb_out.window = window;
+ xcb_out.enable = enable;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_select_input
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param uint16_t enable
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_select_input (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ uint16_t enable /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_SELECT_INPUT,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_select_input_request_t xcb_out;
+
+ xcb_out.window = window;
+ xcb_out.enable = enable;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_info_cookie_t xcb_randr_get_screen_info
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_screen_info_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_info_cookie_t
+xcb_randr_get_screen_info (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_SCREEN_INFO,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_screen_info_cookie_t xcb_ret;
+ xcb_randr_get_screen_info_request_t xcb_out;
+
+ xcb_out.window = window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_info_cookie_t xcb_randr_get_screen_info_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_screen_info_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_info_cookie_t
+xcb_randr_get_screen_info_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_SCREEN_INFO,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_screen_info_cookie_t xcb_ret;
+ xcb_randr_get_screen_info_request_t xcb_out;
+
+ xcb_out.window = window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_screen_size_t * xcb_randr_get_screen_info_sizes
+ **
+ ** @param const xcb_randr_get_screen_info_reply_t *R
+ ** @returns xcb_randr_screen_size_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_screen_size_t *
+xcb_randr_get_screen_info_sizes (const xcb_randr_get_screen_info_reply_t *R /**< */)
+{
+ return (xcb_randr_screen_size_t *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_info_sizes_length
+ **
+ ** @param const xcb_randr_get_screen_info_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_info_sizes_length (const xcb_randr_get_screen_info_reply_t *R /**< */)
+{
+ return R->nSizes;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_screen_size_iterator_t xcb_randr_get_screen_info_sizes_iterator
+ **
+ ** @param const xcb_randr_get_screen_info_reply_t *R
+ ** @returns xcb_randr_screen_size_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_randr_screen_size_iterator_t
+xcb_randr_get_screen_info_sizes_iterator (const xcb_randr_get_screen_info_reply_t *R /**< */)
+{
+ xcb_randr_screen_size_iterator_t i;
+ i.data = (xcb_randr_screen_size_t *) (R + 1);
+ i.rem = R->nSizes;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_info_rates_length
+ **
+ ** @param const xcb_randr_get_screen_info_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_info_rates_length (const xcb_randr_get_screen_info_reply_t *R /**< */)
+{
+ return (R->nInfo - R->nSizes);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_refresh_rates_iterator_t xcb_randr_get_screen_info_rates_iterator
+ **
+ ** @param const xcb_randr_get_screen_info_reply_t *R
+ ** @returns xcb_randr_refresh_rates_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_randr_refresh_rates_iterator_t
+xcb_randr_get_screen_info_rates_iterator (const xcb_randr_get_screen_info_reply_t *R /**< */)
+{
+ xcb_randr_refresh_rates_iterator_t i;
+ xcb_generic_iterator_t prev = xcb_randr_screen_size_end(xcb_randr_get_screen_info_sizes_iterator(R));
+ i.data = (xcb_randr_refresh_rates_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_refresh_rates_t, prev.index));
+ i.rem = (R->nInfo - R->nSizes);
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_info_reply_t * xcb_randr_get_screen_info_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_screen_info_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_screen_info_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_info_reply_t *
+xcb_randr_get_screen_info_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_screen_info_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_randr_get_screen_info_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_size_range_cookie_t xcb_randr_get_screen_size_range
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_screen_size_range_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_size_range_cookie_t
+xcb_randr_get_screen_size_range (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_SCREEN_SIZE_RANGE,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_screen_size_range_cookie_t xcb_ret;
+ xcb_randr_get_screen_size_range_request_t xcb_out;
+
+ xcb_out.window = window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_size_range_cookie_t xcb_randr_get_screen_size_range_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_screen_size_range_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_size_range_cookie_t
+xcb_randr_get_screen_size_range_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_SCREEN_SIZE_RANGE,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_screen_size_range_cookie_t xcb_ret;
+ xcb_randr_get_screen_size_range_request_t xcb_out;
+
+ xcb_out.window = window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_size_range_reply_t * xcb_randr_get_screen_size_range_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_screen_size_range_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_screen_size_range_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_size_range_reply_t *
+xcb_randr_get_screen_size_range_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_screen_size_range_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_randr_get_screen_size_range_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_set_screen_size_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @param uint32_t mm_width
+ ** @param uint32_t mm_height
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_set_screen_size_checked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */,
+ uint32_t mm_width /**< */,
+ uint32_t mm_height /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_SET_SCREEN_SIZE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_set_screen_size_request_t xcb_out;
+
+ xcb_out.window = window;
+ xcb_out.width = width;
+ xcb_out.height = height;
+ xcb_out.mm_width = mm_width;
+ xcb_out.mm_height = mm_height;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_set_screen_size
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @param uint32_t mm_width
+ ** @param uint32_t mm_height
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_set_screen_size (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */,
+ uint32_t mm_width /**< */,
+ uint32_t mm_height /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_SET_SCREEN_SIZE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_set_screen_size_request_t xcb_out;
+
+ xcb_out.window = window;
+ xcb_out.width = width;
+ xcb_out.height = height;
+ xcb_out.mm_width = mm_width;
+ xcb_out.mm_height = mm_height;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_mode_info_next
+ **
+ ** @param xcb_randr_mode_info_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_mode_info_next (xcb_randr_mode_info_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_randr_mode_info_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_mode_info_end
+ **
+ ** @param xcb_randr_mode_info_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_mode_info_end (xcb_randr_mode_info_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_resources_cookie_t xcb_randr_get_screen_resources
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_screen_resources_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_resources_cookie_t
+xcb_randr_get_screen_resources (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_SCREEN_RESOURCES,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_screen_resources_cookie_t xcb_ret;
+ xcb_randr_get_screen_resources_request_t xcb_out;
+
+ xcb_out.window = window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_resources_cookie_t xcb_randr_get_screen_resources_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_screen_resources_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_resources_cookie_t
+xcb_randr_get_screen_resources_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_SCREEN_RESOURCES,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_screen_resources_cookie_t xcb_ret;
+ xcb_randr_get_screen_resources_request_t xcb_out;
+
+ xcb_out.window = window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_crtc_t * xcb_randr_get_screen_resources_crtcs
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns xcb_randr_crtc_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_crtc_t *
+xcb_randr_get_screen_resources_crtcs (const xcb_randr_get_screen_resources_reply_t *R /**< */)
+{
+ return (xcb_randr_crtc_t *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_resources_crtcs_length
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_resources_crtcs_length (const xcb_randr_get_screen_resources_reply_t *R /**< */)
+{
+ return R->num_crtcs;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_screen_resources_crtcs_end
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_screen_resources_crtcs_end (const xcb_randr_get_screen_resources_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ i.data = ((xcb_randr_crtc_t *) (R + 1)) + (R->num_crtcs);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_output_t * xcb_randr_get_screen_resources_outputs
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns xcb_randr_output_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_output_t *
+xcb_randr_get_screen_resources_outputs (const xcb_randr_get_screen_resources_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_crtcs_end(R);
+ return (xcb_randr_output_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_output_t, prev.index) + 0);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_resources_outputs_length
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_resources_outputs_length (const xcb_randr_get_screen_resources_reply_t *R /**< */)
+{
+ return R->num_outputs;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_screen_resources_outputs_end
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_screen_resources_outputs_end (const xcb_randr_get_screen_resources_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ xcb_generic_iterator_t child = xcb_randr_get_screen_resources_crtcs_end(R);
+ i.data = ((xcb_randr_output_t *) child.data) + (R->num_outputs);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_mode_info_t * xcb_randr_get_screen_resources_modes
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns xcb_randr_mode_info_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_mode_info_t *
+xcb_randr_get_screen_resources_modes (const xcb_randr_get_screen_resources_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_outputs_end(R);
+ return (xcb_randr_mode_info_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_mode_info_t, prev.index) + 0);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_resources_modes_length
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_resources_modes_length (const xcb_randr_get_screen_resources_reply_t *R /**< */)
+{
+ return R->num_modes;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_mode_info_iterator_t xcb_randr_get_screen_resources_modes_iterator
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns xcb_randr_mode_info_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_randr_mode_info_iterator_t
+xcb_randr_get_screen_resources_modes_iterator (const xcb_randr_get_screen_resources_reply_t *R /**< */)
+{
+ xcb_randr_mode_info_iterator_t i;
+ xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_outputs_end(R);
+ i.data = (xcb_randr_mode_info_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_mode_info_t, prev.index));
+ i.rem = R->num_modes;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** uint8_t * xcb_randr_get_screen_resources_names
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns uint8_t *
+ **
+ *****************************************************************************/
+
+uint8_t *
+xcb_randr_get_screen_resources_names (const xcb_randr_get_screen_resources_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t prev = xcb_randr_mode_info_end(xcb_randr_get_screen_resources_modes_iterator(R));
+ return (uint8_t *) ((char *) prev.data + XCB_TYPE_PAD(uint8_t, prev.index) + 0);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_resources_names_length
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_resources_names_length (const xcb_randr_get_screen_resources_reply_t *R /**< */)
+{
+ return R->names_len;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_screen_resources_names_end
+ **
+ ** @param const xcb_randr_get_screen_resources_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_screen_resources_names_end (const xcb_randr_get_screen_resources_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ xcb_generic_iterator_t child = xcb_randr_mode_info_end(xcb_randr_get_screen_resources_modes_iterator(R));
+ i.data = ((uint8_t *) child.data) + (R->names_len);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_resources_reply_t * xcb_randr_get_screen_resources_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_screen_resources_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_screen_resources_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_resources_reply_t *
+xcb_randr_get_screen_resources_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_screen_resources_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_randr_get_screen_resources_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_output_info_cookie_t xcb_randr_get_output_info
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_timestamp_t config_timestamp
+ ** @returns xcb_randr_get_output_info_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_output_info_cookie_t
+xcb_randr_get_output_info (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_timestamp_t config_timestamp /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_OUTPUT_INFO,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_output_info_cookie_t xcb_ret;
+ xcb_randr_get_output_info_request_t xcb_out;
+
+ xcb_out.output = output;
+ xcb_out.config_timestamp = config_timestamp;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_output_info_cookie_t xcb_randr_get_output_info_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_timestamp_t config_timestamp
+ ** @returns xcb_randr_get_output_info_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_output_info_cookie_t
+xcb_randr_get_output_info_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_timestamp_t config_timestamp /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_OUTPUT_INFO,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_output_info_cookie_t xcb_ret;
+ xcb_randr_get_output_info_request_t xcb_out;
+
+ xcb_out.output = output;
+ xcb_out.config_timestamp = config_timestamp;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_crtc_t * xcb_randr_get_output_info_crtcs
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns xcb_randr_crtc_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_crtc_t *
+xcb_randr_get_output_info_crtcs (const xcb_randr_get_output_info_reply_t *R /**< */)
+{
+ return (xcb_randr_crtc_t *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_output_info_crtcs_length
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_output_info_crtcs_length (const xcb_randr_get_output_info_reply_t *R /**< */)
+{
+ return R->num_crtcs;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_output_info_crtcs_end
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_output_info_crtcs_end (const xcb_randr_get_output_info_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ i.data = ((xcb_randr_crtc_t *) (R + 1)) + (R->num_crtcs);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_mode_t * xcb_randr_get_output_info_modes
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns xcb_randr_mode_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_mode_t *
+xcb_randr_get_output_info_modes (const xcb_randr_get_output_info_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t prev = xcb_randr_get_output_info_crtcs_end(R);
+ return (xcb_randr_mode_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_mode_t, prev.index) + 0);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_output_info_modes_length
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_output_info_modes_length (const xcb_randr_get_output_info_reply_t *R /**< */)
+{
+ return R->num_modes;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_output_info_modes_end
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_output_info_modes_end (const xcb_randr_get_output_info_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ xcb_generic_iterator_t child = xcb_randr_get_output_info_crtcs_end(R);
+ i.data = ((xcb_randr_mode_t *) child.data) + (R->num_modes);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_output_t * xcb_randr_get_output_info_clones
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns xcb_randr_output_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_output_t *
+xcb_randr_get_output_info_clones (const xcb_randr_get_output_info_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t prev = xcb_randr_get_output_info_modes_end(R);
+ return (xcb_randr_output_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_output_t, prev.index) + 0);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_output_info_clones_length
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_output_info_clones_length (const xcb_randr_get_output_info_reply_t *R /**< */)
+{
+ return R->num_clones;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_output_info_clones_end
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_output_info_clones_end (const xcb_randr_get_output_info_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ xcb_generic_iterator_t child = xcb_randr_get_output_info_modes_end(R);
+ i.data = ((xcb_randr_output_t *) child.data) + (R->num_clones);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** uint8_t * xcb_randr_get_output_info_name
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns uint8_t *
+ **
+ *****************************************************************************/
+
+uint8_t *
+xcb_randr_get_output_info_name (const xcb_randr_get_output_info_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t prev = xcb_randr_get_output_info_clones_end(R);
+ return (uint8_t *) ((char *) prev.data + XCB_TYPE_PAD(uint8_t, prev.index) + 0);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_output_info_name_length
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_output_info_name_length (const xcb_randr_get_output_info_reply_t *R /**< */)
+{
+ return R->name_len;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_output_info_name_end
+ **
+ ** @param const xcb_randr_get_output_info_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_output_info_name_end (const xcb_randr_get_output_info_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ xcb_generic_iterator_t child = xcb_randr_get_output_info_clones_end(R);
+ i.data = ((uint8_t *) child.data) + (R->name_len);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_output_info_reply_t * xcb_randr_get_output_info_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_output_info_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_output_info_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_output_info_reply_t *
+xcb_randr_get_output_info_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_output_info_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_randr_get_output_info_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_list_output_properties_cookie_t xcb_randr_list_output_properties
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @returns xcb_randr_list_output_properties_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_list_output_properties_cookie_t
+xcb_randr_list_output_properties (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_LIST_OUTPUT_PROPERTIES,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_list_output_properties_cookie_t xcb_ret;
+ xcb_randr_list_output_properties_request_t xcb_out;
+
+ xcb_out.output = output;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_list_output_properties_cookie_t xcb_randr_list_output_properties_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @returns xcb_randr_list_output_properties_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_list_output_properties_cookie_t
+xcb_randr_list_output_properties_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_LIST_OUTPUT_PROPERTIES,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_list_output_properties_cookie_t xcb_ret;
+ xcb_randr_list_output_properties_request_t xcb_out;
+
+ xcb_out.output = output;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_atom_t * xcb_randr_list_output_properties_atoms
+ **
+ ** @param const xcb_randr_list_output_properties_reply_t *R
+ ** @returns xcb_atom_t *
+ **
+ *****************************************************************************/
+
+xcb_atom_t *
+xcb_randr_list_output_properties_atoms (const xcb_randr_list_output_properties_reply_t *R /**< */)
+{
+ return (xcb_atom_t *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_list_output_properties_atoms_length
+ **
+ ** @param const xcb_randr_list_output_properties_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_list_output_properties_atoms_length (const xcb_randr_list_output_properties_reply_t *R /**< */)
+{
+ return R->num_atoms;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_list_output_properties_atoms_end
+ **
+ ** @param const xcb_randr_list_output_properties_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_list_output_properties_atoms_end (const xcb_randr_list_output_properties_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ i.data = ((xcb_atom_t *) (R + 1)) + (R->num_atoms);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_list_output_properties_reply_t * xcb_randr_list_output_properties_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_list_output_properties_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_list_output_properties_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_list_output_properties_reply_t *
+xcb_randr_list_output_properties_reply (xcb_connection_t *c /**< */,
+ xcb_randr_list_output_properties_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_randr_list_output_properties_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_query_output_property_cookie_t xcb_randr_query_output_property
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @returns xcb_randr_query_output_property_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_query_output_property_cookie_t
+xcb_randr_query_output_property (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_QUERY_OUTPUT_PROPERTY,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_query_output_property_cookie_t xcb_ret;
+ xcb_randr_query_output_property_request_t xcb_out;
+
+ xcb_out.output = output;
+ xcb_out.property = property;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_query_output_property_cookie_t xcb_randr_query_output_property_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @returns xcb_randr_query_output_property_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_query_output_property_cookie_t
+xcb_randr_query_output_property_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_QUERY_OUTPUT_PROPERTY,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_query_output_property_cookie_t xcb_ret;
+ xcb_randr_query_output_property_request_t xcb_out;
+
+ xcb_out.output = output;
+ xcb_out.property = property;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** int32_t * xcb_randr_query_output_property_valid_values
+ **
+ ** @param const xcb_randr_query_output_property_reply_t *R
+ ** @returns int32_t *
+ **
+ *****************************************************************************/
+
+int32_t *
+xcb_randr_query_output_property_valid_values (const xcb_randr_query_output_property_reply_t *R /**< */)
+{
+ return (int32_t *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_query_output_property_valid_values_length
+ **
+ ** @param const xcb_randr_query_output_property_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_query_output_property_valid_values_length (const xcb_randr_query_output_property_reply_t *R /**< */)
+{
+ return R->length;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_query_output_property_valid_values_end
+ **
+ ** @param const xcb_randr_query_output_property_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_query_output_property_valid_values_end (const xcb_randr_query_output_property_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ i.data = ((int32_t *) (R + 1)) + (R->length);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_query_output_property_reply_t * xcb_randr_query_output_property_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_query_output_property_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_query_output_property_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_query_output_property_reply_t *
+xcb_randr_query_output_property_reply (xcb_connection_t *c /**< */,
+ xcb_randr_query_output_property_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_randr_query_output_property_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_configure_output_property_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @param uint8_t pending
+ ** @param uint8_t range
+ ** @param uint32_t values_len
+ ** @param const int32_t *values
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_configure_output_property_checked (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */,
+ uint8_t pending /**< */,
+ uint8_t range /**< */,
+ uint32_t values_len /**< */,
+ const int32_t *values /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_CONFIGURE_OUTPUT_PROPERTY,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_configure_output_property_request_t xcb_out;
+
+ xcb_out.output = output;
+ xcb_out.property = property;
+ xcb_out.pending = pending;
+ xcb_out.range = range;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) values;
+ xcb_parts[4].iov_len = values_len * sizeof(int32_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_configure_output_property
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @param uint8_t pending
+ ** @param uint8_t range
+ ** @param uint32_t values_len
+ ** @param const int32_t *values
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_configure_output_property (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */,
+ uint8_t pending /**< */,
+ uint8_t range /**< */,
+ uint32_t values_len /**< */,
+ const int32_t *values /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_CONFIGURE_OUTPUT_PROPERTY,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_configure_output_property_request_t xcb_out;
+
+ xcb_out.output = output;
+ xcb_out.property = property;
+ xcb_out.pending = pending;
+ xcb_out.range = range;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) values;
+ xcb_parts[4].iov_len = values_len * sizeof(int32_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_change_output_property_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @param xcb_atom_t type
+ ** @param uint8_t format
+ ** @param uint8_t mode
+ ** @param uint32_t num_units
+ ** @param const void *data
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_change_output_property_checked (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */,
+ xcb_atom_t type /**< */,
+ uint8_t format /**< */,
+ uint8_t mode /**< */,
+ uint32_t num_units /**< */,
+ const void *data /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_CHANGE_OUTPUT_PROPERTY,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_change_output_property_request_t xcb_out;
+
+ xcb_out.output = output;
+ xcb_out.property = property;
+ xcb_out.type = type;
+ xcb_out.format = format;
+ xcb_out.mode = mode;
+ memset(xcb_out.pad0, 0, 2);
+ xcb_out.num_units = num_units;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) data;
+ xcb_parts[4].iov_len = ((num_units * format) / 8) * sizeof(char);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_change_output_property
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @param xcb_atom_t type
+ ** @param uint8_t format
+ ** @param uint8_t mode
+ ** @param uint32_t num_units
+ ** @param const void *data
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_change_output_property (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */,
+ xcb_atom_t type /**< */,
+ uint8_t format /**< */,
+ uint8_t mode /**< */,
+ uint32_t num_units /**< */,
+ const void *data /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_CHANGE_OUTPUT_PROPERTY,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_change_output_property_request_t xcb_out;
+
+ xcb_out.output = output;
+ xcb_out.property = property;
+ xcb_out.type = type;
+ xcb_out.format = format;
+ xcb_out.mode = mode;
+ memset(xcb_out.pad0, 0, 2);
+ xcb_out.num_units = num_units;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) data;
+ xcb_parts[4].iov_len = ((num_units * format) / 8) * sizeof(char);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_delete_output_property_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_delete_output_property_checked (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_DELETE_OUTPUT_PROPERTY,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_delete_output_property_request_t xcb_out;
+
+ xcb_out.output = output;
+ xcb_out.property = property;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_delete_output_property
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_delete_output_property (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_DELETE_OUTPUT_PROPERTY,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_delete_output_property_request_t xcb_out;
+
+ xcb_out.output = output;
+ xcb_out.property = property;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_output_property_cookie_t xcb_randr_get_output_property
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @param xcb_atom_t type
+ ** @param uint32_t long_offset
+ ** @param uint32_t long_length
+ ** @param uint8_t _delete
+ ** @param uint8_t pending
+ ** @returns xcb_randr_get_output_property_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_output_property_cookie_t
+xcb_randr_get_output_property (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */,
+ xcb_atom_t type /**< */,
+ uint32_t long_offset /**< */,
+ uint32_t long_length /**< */,
+ uint8_t _delete /**< */,
+ uint8_t pending /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_OUTPUT_PROPERTY,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_output_property_cookie_t xcb_ret;
+ xcb_randr_get_output_property_request_t xcb_out;
+
+ xcb_out.output = output;
+ xcb_out.property = property;
+ xcb_out.type = type;
+ xcb_out.long_offset = long_offset;
+ xcb_out.long_length = long_length;
+ xcb_out._delete = _delete;
+ xcb_out.pending = pending;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_output_property_cookie_t xcb_randr_get_output_property_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_atom_t property
+ ** @param xcb_atom_t type
+ ** @param uint32_t long_offset
+ ** @param uint32_t long_length
+ ** @param uint8_t _delete
+ ** @param uint8_t pending
+ ** @returns xcb_randr_get_output_property_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_output_property_cookie_t
+xcb_randr_get_output_property_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_atom_t property /**< */,
+ xcb_atom_t type /**< */,
+ uint32_t long_offset /**< */,
+ uint32_t long_length /**< */,
+ uint8_t _delete /**< */,
+ uint8_t pending /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_OUTPUT_PROPERTY,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_output_property_cookie_t xcb_ret;
+ xcb_randr_get_output_property_request_t xcb_out;
+
+ xcb_out.output = output;
+ xcb_out.property = property;
+ xcb_out.type = type;
+ xcb_out.long_offset = long_offset;
+ xcb_out.long_length = long_length;
+ xcb_out._delete = _delete;
+ xcb_out.pending = pending;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** uint8_t * xcb_randr_get_output_property_data
+ **
+ ** @param const xcb_randr_get_output_property_reply_t *R
+ ** @returns uint8_t *
+ **
+ *****************************************************************************/
+
+uint8_t *
+xcb_randr_get_output_property_data (const xcb_randr_get_output_property_reply_t *R /**< */)
+{
+ return (uint8_t *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_output_property_data_length
+ **
+ ** @param const xcb_randr_get_output_property_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_output_property_data_length (const xcb_randr_get_output_property_reply_t *R /**< */)
+{
+ return (R->num_items * (R->format / 8));
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_output_property_data_end
+ **
+ ** @param const xcb_randr_get_output_property_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_output_property_data_end (const xcb_randr_get_output_property_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ i.data = ((uint8_t *) (R + 1)) + ((R->num_items * (R->format / 8)));
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_output_property_reply_t * xcb_randr_get_output_property_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_output_property_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_output_property_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_output_property_reply_t *
+xcb_randr_get_output_property_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_output_property_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_randr_get_output_property_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_create_mode_cookie_t xcb_randr_create_mode
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_randr_mode_info_t mode_info
+ ** @param uint32_t name_len
+ ** @param const char *name
+ ** @returns xcb_randr_create_mode_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_create_mode_cookie_t
+xcb_randr_create_mode (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_randr_mode_info_t mode_info /**< */,
+ uint32_t name_len /**< */,
+ const char *name /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_CREATE_MODE,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_randr_create_mode_cookie_t xcb_ret;
+ xcb_randr_create_mode_request_t xcb_out;
+
+ xcb_out.window = window;
+ xcb_out.mode_info = mode_info;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) name;
+ xcb_parts[4].iov_len = name_len * sizeof(char);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_create_mode_cookie_t xcb_randr_create_mode_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_randr_mode_info_t mode_info
+ ** @param uint32_t name_len
+ ** @param const char *name
+ ** @returns xcb_randr_create_mode_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_create_mode_cookie_t
+xcb_randr_create_mode_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_randr_mode_info_t mode_info /**< */,
+ uint32_t name_len /**< */,
+ const char *name /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_CREATE_MODE,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_randr_create_mode_cookie_t xcb_ret;
+ xcb_randr_create_mode_request_t xcb_out;
+
+ xcb_out.window = window;
+ xcb_out.mode_info = mode_info;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) name;
+ xcb_parts[4].iov_len = name_len * sizeof(char);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_create_mode_reply_t * xcb_randr_create_mode_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_create_mode_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_create_mode_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_create_mode_reply_t *
+xcb_randr_create_mode_reply (xcb_connection_t *c /**< */,
+ xcb_randr_create_mode_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_randr_create_mode_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_destroy_mode_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_mode_t mode
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_destroy_mode_checked (xcb_connection_t *c /**< */,
+ xcb_randr_mode_t mode /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_DESTROY_MODE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_destroy_mode_request_t xcb_out;
+
+ xcb_out.mode = mode;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_destroy_mode
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_mode_t mode
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_destroy_mode (xcb_connection_t *c /**< */,
+ xcb_randr_mode_t mode /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_DESTROY_MODE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_destroy_mode_request_t xcb_out;
+
+ xcb_out.mode = mode;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_add_output_mode_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_randr_mode_t mode
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_add_output_mode_checked (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_randr_mode_t mode /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_ADD_OUTPUT_MODE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_add_output_mode_request_t xcb_out;
+
+ xcb_out.output = output;
+ xcb_out.mode = mode;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_add_output_mode
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_randr_mode_t mode
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_add_output_mode (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_randr_mode_t mode /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_ADD_OUTPUT_MODE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_add_output_mode_request_t xcb_out;
+
+ xcb_out.output = output;
+ xcb_out.mode = mode;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_delete_output_mode_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_randr_mode_t mode
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_delete_output_mode_checked (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_randr_mode_t mode /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_DELETE_OUTPUT_MODE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_delete_output_mode_request_t xcb_out;
+
+ xcb_out.output = output;
+ xcb_out.mode = mode;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_delete_output_mode
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_output_t output
+ ** @param xcb_randr_mode_t mode
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_delete_output_mode (xcb_connection_t *c /**< */,
+ xcb_randr_output_t output /**< */,
+ xcb_randr_mode_t mode /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_DELETE_OUTPUT_MODE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_delete_output_mode_request_t xcb_out;
+
+ xcb_out.output = output;
+ xcb_out.mode = mode;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_info_cookie_t xcb_randr_get_crtc_info
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param xcb_timestamp_t config_timestamp
+ ** @returns xcb_randr_get_crtc_info_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_info_cookie_t
+xcb_randr_get_crtc_info (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ xcb_timestamp_t config_timestamp /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_CRTC_INFO,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_crtc_info_cookie_t xcb_ret;
+ xcb_randr_get_crtc_info_request_t xcb_out;
+
+ xcb_out.crtc = crtc;
+ xcb_out.config_timestamp = config_timestamp;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_info_cookie_t xcb_randr_get_crtc_info_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param xcb_timestamp_t config_timestamp
+ ** @returns xcb_randr_get_crtc_info_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_info_cookie_t
+xcb_randr_get_crtc_info_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ xcb_timestamp_t config_timestamp /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_CRTC_INFO,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_crtc_info_cookie_t xcb_ret;
+ xcb_randr_get_crtc_info_request_t xcb_out;
+
+ xcb_out.crtc = crtc;
+ xcb_out.config_timestamp = config_timestamp;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_output_t * xcb_randr_get_crtc_info_outputs
+ **
+ ** @param const xcb_randr_get_crtc_info_reply_t *R
+ ** @returns xcb_randr_output_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_output_t *
+xcb_randr_get_crtc_info_outputs (const xcb_randr_get_crtc_info_reply_t *R /**< */)
+{
+ return (xcb_randr_output_t *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_crtc_info_outputs_length
+ **
+ ** @param const xcb_randr_get_crtc_info_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_crtc_info_outputs_length (const xcb_randr_get_crtc_info_reply_t *R /**< */)
+{
+ return R->num_outputs;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_crtc_info_outputs_end
+ **
+ ** @param const xcb_randr_get_crtc_info_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_crtc_info_outputs_end (const xcb_randr_get_crtc_info_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ i.data = ((xcb_randr_output_t *) (R + 1)) + (R->num_outputs);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_output_t * xcb_randr_get_crtc_info_possible
+ **
+ ** @param const xcb_randr_get_crtc_info_reply_t *R
+ ** @returns xcb_randr_output_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_output_t *
+xcb_randr_get_crtc_info_possible (const xcb_randr_get_crtc_info_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t prev = xcb_randr_get_crtc_info_outputs_end(R);
+ return (xcb_randr_output_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_output_t, prev.index) + 0);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_crtc_info_possible_length
+ **
+ ** @param const xcb_randr_get_crtc_info_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_crtc_info_possible_length (const xcb_randr_get_crtc_info_reply_t *R /**< */)
+{
+ return R->num_possible_outputs;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_crtc_info_possible_end
+ **
+ ** @param const xcb_randr_get_crtc_info_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_crtc_info_possible_end (const xcb_randr_get_crtc_info_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ xcb_generic_iterator_t child = xcb_randr_get_crtc_info_outputs_end(R);
+ i.data = ((xcb_randr_output_t *) child.data) + (R->num_possible_outputs);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_info_reply_t * xcb_randr_get_crtc_info_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_crtc_info_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_crtc_info_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_info_reply_t *
+xcb_randr_get_crtc_info_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_crtc_info_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_randr_get_crtc_info_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_set_crtc_config_cookie_t xcb_randr_set_crtc_config
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param xcb_timestamp_t timestamp
+ ** @param xcb_timestamp_t config_timestamp
+ ** @param int16_t x
+ ** @param int16_t y
+ ** @param xcb_randr_mode_t mode
+ ** @param uint16_t rotation
+ ** @param uint32_t outputs_len
+ ** @param const xcb_randr_output_t *outputs
+ ** @returns xcb_randr_set_crtc_config_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_set_crtc_config_cookie_t
+xcb_randr_set_crtc_config (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ xcb_timestamp_t timestamp /**< */,
+ xcb_timestamp_t config_timestamp /**< */,
+ int16_t x /**< */,
+ int16_t y /**< */,
+ xcb_randr_mode_t mode /**< */,
+ uint16_t rotation /**< */,
+ uint32_t outputs_len /**< */,
+ const xcb_randr_output_t *outputs /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_SET_CRTC_CONFIG,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_randr_set_crtc_config_cookie_t xcb_ret;
+ xcb_randr_set_crtc_config_request_t xcb_out;
+
+ xcb_out.crtc = crtc;
+ xcb_out.timestamp = timestamp;
+ xcb_out.config_timestamp = config_timestamp;
+ xcb_out.x = x;
+ xcb_out.y = y;
+ xcb_out.mode = mode;
+ xcb_out.rotation = rotation;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) outputs;
+ xcb_parts[4].iov_len = outputs_len * sizeof(xcb_timestamp_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_set_crtc_config_cookie_t xcb_randr_set_crtc_config_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param xcb_timestamp_t timestamp
+ ** @param xcb_timestamp_t config_timestamp
+ ** @param int16_t x
+ ** @param int16_t y
+ ** @param xcb_randr_mode_t mode
+ ** @param uint16_t rotation
+ ** @param uint32_t outputs_len
+ ** @param const xcb_randr_output_t *outputs
+ ** @returns xcb_randr_set_crtc_config_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_set_crtc_config_cookie_t
+xcb_randr_set_crtc_config_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ xcb_timestamp_t timestamp /**< */,
+ xcb_timestamp_t config_timestamp /**< */,
+ int16_t x /**< */,
+ int16_t y /**< */,
+ xcb_randr_mode_t mode /**< */,
+ uint16_t rotation /**< */,
+ uint32_t outputs_len /**< */,
+ const xcb_randr_output_t *outputs /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_SET_CRTC_CONFIG,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_randr_set_crtc_config_cookie_t xcb_ret;
+ xcb_randr_set_crtc_config_request_t xcb_out;
+
+ xcb_out.crtc = crtc;
+ xcb_out.timestamp = timestamp;
+ xcb_out.config_timestamp = config_timestamp;
+ xcb_out.x = x;
+ xcb_out.y = y;
+ xcb_out.mode = mode;
+ xcb_out.rotation = rotation;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) outputs;
+ xcb_parts[4].iov_len = outputs_len * sizeof(xcb_timestamp_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_set_crtc_config_reply_t * xcb_randr_set_crtc_config_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_set_crtc_config_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_set_crtc_config_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_set_crtc_config_reply_t *
+xcb_randr_set_crtc_config_reply (xcb_connection_t *c /**< */,
+ xcb_randr_set_crtc_config_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_randr_set_crtc_config_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_gamma_size_cookie_t xcb_randr_get_crtc_gamma_size
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @returns xcb_randr_get_crtc_gamma_size_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_gamma_size_cookie_t
+xcb_randr_get_crtc_gamma_size (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_CRTC_GAMMA_SIZE,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_crtc_gamma_size_cookie_t xcb_ret;
+ xcb_randr_get_crtc_gamma_size_request_t xcb_out;
+
+ xcb_out.crtc = crtc;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_gamma_size_cookie_t xcb_randr_get_crtc_gamma_size_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @returns xcb_randr_get_crtc_gamma_size_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_gamma_size_cookie_t
+xcb_randr_get_crtc_gamma_size_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_CRTC_GAMMA_SIZE,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_crtc_gamma_size_cookie_t xcb_ret;
+ xcb_randr_get_crtc_gamma_size_request_t xcb_out;
+
+ xcb_out.crtc = crtc;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_gamma_size_reply_t * xcb_randr_get_crtc_gamma_size_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_crtc_gamma_size_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_crtc_gamma_size_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_gamma_size_reply_t *
+xcb_randr_get_crtc_gamma_size_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_crtc_gamma_size_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_randr_get_crtc_gamma_size_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_gamma_cookie_t xcb_randr_get_crtc_gamma
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @returns xcb_randr_get_crtc_gamma_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_gamma_cookie_t
+xcb_randr_get_crtc_gamma (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_CRTC_GAMMA,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_crtc_gamma_cookie_t xcb_ret;
+ xcb_randr_get_crtc_gamma_request_t xcb_out;
+
+ xcb_out.crtc = crtc;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_gamma_cookie_t xcb_randr_get_crtc_gamma_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @returns xcb_randr_get_crtc_gamma_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_gamma_cookie_t
+xcb_randr_get_crtc_gamma_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_CRTC_GAMMA,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_crtc_gamma_cookie_t xcb_ret;
+ xcb_randr_get_crtc_gamma_request_t xcb_out;
+
+ xcb_out.crtc = crtc;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** uint16_t * xcb_randr_get_crtc_gamma_red
+ **
+ ** @param const xcb_randr_get_crtc_gamma_reply_t *R
+ ** @returns uint16_t *
+ **
+ *****************************************************************************/
+
+uint16_t *
+xcb_randr_get_crtc_gamma_red (const xcb_randr_get_crtc_gamma_reply_t *R /**< */)
+{
+ return (uint16_t *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_crtc_gamma_red_length
+ **
+ ** @param const xcb_randr_get_crtc_gamma_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_crtc_gamma_red_length (const xcb_randr_get_crtc_gamma_reply_t *R /**< */)
+{
+ return R->size;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_crtc_gamma_red_end
+ **
+ ** @param const xcb_randr_get_crtc_gamma_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_crtc_gamma_red_end (const xcb_randr_get_crtc_gamma_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ i.data = ((uint16_t *) (R + 1)) + (R->size);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** uint16_t * xcb_randr_get_crtc_gamma_green
+ **
+ ** @param const xcb_randr_get_crtc_gamma_reply_t *R
+ ** @returns uint16_t *
+ **
+ *****************************************************************************/
+
+uint16_t *
+xcb_randr_get_crtc_gamma_green (const xcb_randr_get_crtc_gamma_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t prev = xcb_randr_get_crtc_gamma_red_end(R);
+ return (uint16_t *) ((char *) prev.data + XCB_TYPE_PAD(uint16_t, prev.index) + 0);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_crtc_gamma_green_length
+ **
+ ** @param const xcb_randr_get_crtc_gamma_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_crtc_gamma_green_length (const xcb_randr_get_crtc_gamma_reply_t *R /**< */)
+{
+ return R->size;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_crtc_gamma_green_end
+ **
+ ** @param const xcb_randr_get_crtc_gamma_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_crtc_gamma_green_end (const xcb_randr_get_crtc_gamma_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ xcb_generic_iterator_t child = xcb_randr_get_crtc_gamma_red_end(R);
+ i.data = ((uint16_t *) child.data) + (R->size);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** uint16_t * xcb_randr_get_crtc_gamma_blue
+ **
+ ** @param const xcb_randr_get_crtc_gamma_reply_t *R
+ ** @returns uint16_t *
+ **
+ *****************************************************************************/
+
+uint16_t *
+xcb_randr_get_crtc_gamma_blue (const xcb_randr_get_crtc_gamma_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t prev = xcb_randr_get_crtc_gamma_green_end(R);
+ return (uint16_t *) ((char *) prev.data + XCB_TYPE_PAD(uint16_t, prev.index) + 0);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_crtc_gamma_blue_length
+ **
+ ** @param const xcb_randr_get_crtc_gamma_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_crtc_gamma_blue_length (const xcb_randr_get_crtc_gamma_reply_t *R /**< */)
+{
+ return R->size;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_crtc_gamma_blue_end
+ **
+ ** @param const xcb_randr_get_crtc_gamma_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_crtc_gamma_blue_end (const xcb_randr_get_crtc_gamma_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ xcb_generic_iterator_t child = xcb_randr_get_crtc_gamma_green_end(R);
+ i.data = ((uint16_t *) child.data) + (R->size);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_gamma_reply_t * xcb_randr_get_crtc_gamma_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_crtc_gamma_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_crtc_gamma_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_gamma_reply_t *
+xcb_randr_get_crtc_gamma_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_crtc_gamma_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_randr_get_crtc_gamma_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_set_crtc_gamma_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param uint16_t size
+ ** @param const uint16_t *red
+ ** @param const uint16_t *green
+ ** @param const uint16_t *blue
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_set_crtc_gamma_checked (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ uint16_t size /**< */,
+ const uint16_t *red /**< */,
+ const uint16_t *green /**< */,
+ const uint16_t *blue /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 8,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_SET_CRTC_GAMMA,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[10];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_set_crtc_gamma_request_t xcb_out;
+
+ xcb_out.crtc = crtc;
+ xcb_out.size = size;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) red;
+ xcb_parts[4].iov_len = size * sizeof(uint16_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_parts[6].iov_base = (char *) green;
+ xcb_parts[6].iov_len = size * sizeof(uint16_t);
+ xcb_parts[7].iov_base = 0;
+ xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
+ xcb_parts[8].iov_base = (char *) blue;
+ xcb_parts[8].iov_len = size * sizeof(uint16_t);
+ xcb_parts[9].iov_base = 0;
+ xcb_parts[9].iov_len = -xcb_parts[8].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_set_crtc_gamma
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param uint16_t size
+ ** @param const uint16_t *red
+ ** @param const uint16_t *green
+ ** @param const uint16_t *blue
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_set_crtc_gamma (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ uint16_t size /**< */,
+ const uint16_t *red /**< */,
+ const uint16_t *green /**< */,
+ const uint16_t *blue /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 8,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_SET_CRTC_GAMMA,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[10];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_set_crtc_gamma_request_t xcb_out;
+
+ xcb_out.crtc = crtc;
+ xcb_out.size = size;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) red;
+ xcb_parts[4].iov_len = size * sizeof(uint16_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_parts[6].iov_base = (char *) green;
+ xcb_parts[6].iov_len = size * sizeof(uint16_t);
+ xcb_parts[7].iov_base = 0;
+ xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
+ xcb_parts[8].iov_base = (char *) blue;
+ xcb_parts[8].iov_len = size * sizeof(uint16_t);
+ xcb_parts[9].iov_base = 0;
+ xcb_parts[9].iov_len = -xcb_parts[8].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_resources_current_cookie_t xcb_randr_get_screen_resources_current
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_screen_resources_current_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_resources_current_cookie_t
+xcb_randr_get_screen_resources_current (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_SCREEN_RESOURCES_CURRENT,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_screen_resources_current_cookie_t xcb_ret;
+ xcb_randr_get_screen_resources_current_request_t xcb_out;
+
+ xcb_out.window = window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_resources_current_cookie_t xcb_randr_get_screen_resources_current_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_screen_resources_current_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_resources_current_cookie_t
+xcb_randr_get_screen_resources_current_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_SCREEN_RESOURCES_CURRENT,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_screen_resources_current_cookie_t xcb_ret;
+ xcb_randr_get_screen_resources_current_request_t xcb_out;
+
+ xcb_out.window = window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_crtc_t * xcb_randr_get_screen_resources_current_crtcs
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns xcb_randr_crtc_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_crtc_t *
+xcb_randr_get_screen_resources_current_crtcs (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
+{
+ return (xcb_randr_crtc_t *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_resources_current_crtcs_length
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_resources_current_crtcs_length (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
+{
+ return R->num_crtcs;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_screen_resources_current_crtcs_end
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_screen_resources_current_crtcs_end (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ i.data = ((xcb_randr_crtc_t *) (R + 1)) + (R->num_crtcs);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_output_t * xcb_randr_get_screen_resources_current_outputs
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns xcb_randr_output_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_output_t *
+xcb_randr_get_screen_resources_current_outputs (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_current_crtcs_end(R);
+ return (xcb_randr_output_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_output_t, prev.index) + 0);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_resources_current_outputs_length
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_resources_current_outputs_length (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
+{
+ return R->num_outputs;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_screen_resources_current_outputs_end
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_screen_resources_current_outputs_end (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ xcb_generic_iterator_t child = xcb_randr_get_screen_resources_current_crtcs_end(R);
+ i.data = ((xcb_randr_output_t *) child.data) + (R->num_outputs);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_mode_info_t * xcb_randr_get_screen_resources_current_modes
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns xcb_randr_mode_info_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_mode_info_t *
+xcb_randr_get_screen_resources_current_modes (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_current_outputs_end(R);
+ return (xcb_randr_mode_info_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_mode_info_t, prev.index) + 0);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_resources_current_modes_length
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_resources_current_modes_length (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
+{
+ return R->num_modes;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_mode_info_iterator_t xcb_randr_get_screen_resources_current_modes_iterator
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns xcb_randr_mode_info_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_randr_mode_info_iterator_t
+xcb_randr_get_screen_resources_current_modes_iterator (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
+{
+ xcb_randr_mode_info_iterator_t i;
+ xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_current_outputs_end(R);
+ i.data = (xcb_randr_mode_info_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_mode_info_t, prev.index));
+ i.rem = R->num_modes;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** uint8_t * xcb_randr_get_screen_resources_current_names
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns uint8_t *
+ **
+ *****************************************************************************/
+
+uint8_t *
+xcb_randr_get_screen_resources_current_names (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t prev = xcb_randr_mode_info_end(xcb_randr_get_screen_resources_current_modes_iterator(R));
+ return (uint8_t *) ((char *) prev.data + XCB_TYPE_PAD(uint8_t, prev.index) + 0);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_screen_resources_current_names_length
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_screen_resources_current_names_length (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
+{
+ return R->names_len;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_screen_resources_current_names_end
+ **
+ ** @param const xcb_randr_get_screen_resources_current_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_screen_resources_current_names_end (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ xcb_generic_iterator_t child = xcb_randr_mode_info_end(xcb_randr_get_screen_resources_current_modes_iterator(R));
+ i.data = ((uint8_t *) child.data) + (R->names_len);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_screen_resources_current_reply_t * xcb_randr_get_screen_resources_current_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_screen_resources_current_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_screen_resources_current_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_screen_resources_current_reply_t *
+xcb_randr_get_screen_resources_current_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_screen_resources_current_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_randr_get_screen_resources_current_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_set_crtc_transform_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param xcb_render_transform_t transform
+ ** @param uint16_t filter_len
+ ** @param const char *filter_name
+ ** @param uint32_t filter_params_len
+ ** @param const xcb_render_fixed_t *filter_params
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_set_crtc_transform_checked (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ xcb_render_transform_t transform /**< */,
+ uint16_t filter_len /**< */,
+ const char *filter_name /**< */,
+ uint32_t filter_params_len /**< */,
+ const xcb_render_fixed_t *filter_params /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 6,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_SET_CRTC_TRANSFORM,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[8];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_set_crtc_transform_request_t xcb_out;
+
+ xcb_out.crtc = crtc;
+ xcb_out.transform = transform;
+ xcb_out.filter_len = filter_len;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) filter_name;
+ xcb_parts[4].iov_len = filter_len * sizeof(char);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_parts[6].iov_base = (char *) filter_params;
+ xcb_parts[6].iov_len = filter_params_len * sizeof(xcb_render_fixed_t);
+ xcb_parts[7].iov_base = 0;
+ xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_set_crtc_transform
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param xcb_render_transform_t transform
+ ** @param uint16_t filter_len
+ ** @param const char *filter_name
+ ** @param uint32_t filter_params_len
+ ** @param const xcb_render_fixed_t *filter_params
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_set_crtc_transform (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ xcb_render_transform_t transform /**< */,
+ uint16_t filter_len /**< */,
+ const char *filter_name /**< */,
+ uint32_t filter_params_len /**< */,
+ const xcb_render_fixed_t *filter_params /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 6,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_SET_CRTC_TRANSFORM,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[8];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_set_crtc_transform_request_t xcb_out;
+
+ xcb_out.crtc = crtc;
+ xcb_out.transform = transform;
+ xcb_out.filter_len = filter_len;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) filter_name;
+ xcb_parts[4].iov_len = filter_len * sizeof(char);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_parts[6].iov_base = (char *) filter_params;
+ xcb_parts[6].iov_len = filter_params_len * sizeof(xcb_render_fixed_t);
+ xcb_parts[7].iov_base = 0;
+ xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_transform_cookie_t xcb_randr_get_crtc_transform
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @returns xcb_randr_get_crtc_transform_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_transform_cookie_t
+xcb_randr_get_crtc_transform (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_CRTC_TRANSFORM,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_crtc_transform_cookie_t xcb_ret;
+ xcb_randr_get_crtc_transform_request_t xcb_out;
+
+ xcb_out.crtc = crtc;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_transform_cookie_t xcb_randr_get_crtc_transform_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @returns xcb_randr_get_crtc_transform_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_transform_cookie_t
+xcb_randr_get_crtc_transform_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_CRTC_TRANSFORM,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_crtc_transform_cookie_t xcb_ret;
+ xcb_randr_get_crtc_transform_request_t xcb_out;
+
+ xcb_out.crtc = crtc;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** char * xcb_randr_get_crtc_transform_pending_filter_name
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns char *
+ **
+ *****************************************************************************/
+
+char *
+xcb_randr_get_crtc_transform_pending_filter_name (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
+{
+ return (char *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_crtc_transform_pending_filter_name_length
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_crtc_transform_pending_filter_name_length (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
+{
+ return R->pending_len;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_crtc_transform_pending_filter_name_end
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_crtc_transform_pending_filter_name_end (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ i.data = ((char *) (R + 1)) + (R->pending_len);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_fixed_t * xcb_randr_get_crtc_transform_pending_params
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns xcb_render_fixed_t *
+ **
+ *****************************************************************************/
+
+xcb_render_fixed_t *
+xcb_randr_get_crtc_transform_pending_params (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t prev = xcb_randr_get_crtc_transform_pending_filter_name_end(R);
+ return (xcb_render_fixed_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_fixed_t, prev.index) + 0);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_crtc_transform_pending_params_length
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_crtc_transform_pending_params_length (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
+{
+ return R->pending_nparams;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_crtc_transform_pending_params_end
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_crtc_transform_pending_params_end (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ xcb_generic_iterator_t child = xcb_randr_get_crtc_transform_pending_filter_name_end(R);
+ i.data = ((xcb_render_fixed_t *) child.data) + (R->pending_nparams);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** char * xcb_randr_get_crtc_transform_current_filter_name
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns char *
+ **
+ *****************************************************************************/
+
+char *
+xcb_randr_get_crtc_transform_current_filter_name (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t prev = xcb_randr_get_crtc_transform_pending_params_end(R);
+ return (char *) ((char *) prev.data + XCB_TYPE_PAD(char, prev.index) + 0);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_crtc_transform_current_filter_name_length
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_crtc_transform_current_filter_name_length (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
+{
+ return R->current_len;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_crtc_transform_current_filter_name_end
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_crtc_transform_current_filter_name_end (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ xcb_generic_iterator_t child = xcb_randr_get_crtc_transform_pending_params_end(R);
+ i.data = ((char *) child.data) + (R->current_len);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_fixed_t * xcb_randr_get_crtc_transform_current_params
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns xcb_render_fixed_t *
+ **
+ *****************************************************************************/
+
+xcb_render_fixed_t *
+xcb_randr_get_crtc_transform_current_params (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t prev = xcb_randr_get_crtc_transform_current_filter_name_end(R);
+ return (xcb_render_fixed_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_fixed_t, prev.index) + 0);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_randr_get_crtc_transform_current_params_length
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_randr_get_crtc_transform_current_params_length (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
+{
+ return R->current_nparams;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_get_crtc_transform_current_params_end
+ **
+ ** @param const xcb_randr_get_crtc_transform_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_get_crtc_transform_current_params_end (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ xcb_generic_iterator_t child = xcb_randr_get_crtc_transform_current_filter_name_end(R);
+ i.data = ((xcb_render_fixed_t *) child.data) + (R->current_nparams);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_crtc_transform_reply_t * xcb_randr_get_crtc_transform_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_crtc_transform_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_crtc_transform_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_crtc_transform_reply_t *
+xcb_randr_get_crtc_transform_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_crtc_transform_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_randr_get_crtc_transform_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_panning_cookie_t xcb_randr_get_panning
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @returns xcb_randr_get_panning_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_panning_cookie_t
+xcb_randr_get_panning (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_PANNING,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_panning_cookie_t xcb_ret;
+ xcb_randr_get_panning_request_t xcb_out;
+
+ xcb_out.crtc = crtc;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_panning_cookie_t xcb_randr_get_panning_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @returns xcb_randr_get_panning_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_panning_cookie_t
+xcb_randr_get_panning_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_PANNING,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_panning_cookie_t xcb_ret;
+ xcb_randr_get_panning_request_t xcb_out;
+
+ xcb_out.crtc = crtc;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_panning_reply_t * xcb_randr_get_panning_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_panning_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_panning_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_panning_reply_t *
+xcb_randr_get_panning_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_panning_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_randr_get_panning_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_set_panning_cookie_t xcb_randr_set_panning
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param xcb_timestamp_t timestamp
+ ** @param uint16_t left
+ ** @param uint16_t top
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @param uint16_t track_left
+ ** @param uint16_t track_top
+ ** @param uint16_t track_width
+ ** @param uint16_t track_height
+ ** @param int16_t border_left
+ ** @param int16_t border_top
+ ** @param int16_t border_right
+ ** @param int16_t border_bottom
+ ** @returns xcb_randr_set_panning_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_set_panning_cookie_t
+xcb_randr_set_panning (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ xcb_timestamp_t timestamp /**< */,
+ uint16_t left /**< */,
+ uint16_t top /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */,
+ uint16_t track_left /**< */,
+ uint16_t track_top /**< */,
+ uint16_t track_width /**< */,
+ uint16_t track_height /**< */,
+ int16_t border_left /**< */,
+ int16_t border_top /**< */,
+ int16_t border_right /**< */,
+ int16_t border_bottom /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_SET_PANNING,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_set_panning_cookie_t xcb_ret;
+ xcb_randr_set_panning_request_t xcb_out;
+
+ xcb_out.crtc = crtc;
+ xcb_out.timestamp = timestamp;
+ xcb_out.left = left;
+ xcb_out.top = top;
+ xcb_out.width = width;
+ xcb_out.height = height;
+ xcb_out.track_left = track_left;
+ xcb_out.track_top = track_top;
+ xcb_out.track_width = track_width;
+ xcb_out.track_height = track_height;
+ xcb_out.border_left = border_left;
+ xcb_out.border_top = border_top;
+ xcb_out.border_right = border_right;
+ xcb_out.border_bottom = border_bottom;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_set_panning_cookie_t xcb_randr_set_panning_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_crtc_t crtc
+ ** @param xcb_timestamp_t timestamp
+ ** @param uint16_t left
+ ** @param uint16_t top
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @param uint16_t track_left
+ ** @param uint16_t track_top
+ ** @param uint16_t track_width
+ ** @param uint16_t track_height
+ ** @param int16_t border_left
+ ** @param int16_t border_top
+ ** @param int16_t border_right
+ ** @param int16_t border_bottom
+ ** @returns xcb_randr_set_panning_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_set_panning_cookie_t
+xcb_randr_set_panning_unchecked (xcb_connection_t *c /**< */,
+ xcb_randr_crtc_t crtc /**< */,
+ xcb_timestamp_t timestamp /**< */,
+ uint16_t left /**< */,
+ uint16_t top /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */,
+ uint16_t track_left /**< */,
+ uint16_t track_top /**< */,
+ uint16_t track_width /**< */,
+ uint16_t track_height /**< */,
+ int16_t border_left /**< */,
+ int16_t border_top /**< */,
+ int16_t border_right /**< */,
+ int16_t border_bottom /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_SET_PANNING,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_set_panning_cookie_t xcb_ret;
+ xcb_randr_set_panning_request_t xcb_out;
+
+ xcb_out.crtc = crtc;
+ xcb_out.timestamp = timestamp;
+ xcb_out.left = left;
+ xcb_out.top = top;
+ xcb_out.width = width;
+ xcb_out.height = height;
+ xcb_out.track_left = track_left;
+ xcb_out.track_top = track_top;
+ xcb_out.track_width = track_width;
+ xcb_out.track_height = track_height;
+ xcb_out.border_left = border_left;
+ xcb_out.border_top = border_top;
+ xcb_out.border_right = border_right;
+ xcb_out.border_bottom = border_bottom;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_set_panning_reply_t * xcb_randr_set_panning_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_set_panning_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_set_panning_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_set_panning_reply_t *
+xcb_randr_set_panning_reply (xcb_connection_t *c /**< */,
+ xcb_randr_set_panning_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_randr_set_panning_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_set_output_primary_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_randr_output_t output
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_set_output_primary_checked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_randr_output_t output /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_SET_OUTPUT_PRIMARY,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_set_output_primary_request_t xcb_out;
+
+ xcb_out.window = window;
+ xcb_out.output = output;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_randr_set_output_primary
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_randr_output_t output
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_randr_set_output_primary (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_randr_output_t output /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_SET_OUTPUT_PRIMARY,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_randr_set_output_primary_request_t xcb_out;
+
+ xcb_out.window = window;
+ xcb_out.output = output;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_output_primary_cookie_t xcb_randr_get_output_primary
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_output_primary_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_output_primary_cookie_t
+xcb_randr_get_output_primary (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_OUTPUT_PRIMARY,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_output_primary_cookie_t xcb_ret;
+ xcb_randr_get_output_primary_request_t xcb_out;
+
+ xcb_out.window = window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_output_primary_cookie_t xcb_randr_get_output_primary_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_randr_get_output_primary_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_randr_get_output_primary_cookie_t
+xcb_randr_get_output_primary_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_randr_id,
+ /* opcode */ XCB_RANDR_GET_OUTPUT_PRIMARY,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_randr_get_output_primary_cookie_t xcb_ret;
+ xcb_randr_get_output_primary_request_t xcb_out;
+
+ xcb_out.window = window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_randr_get_output_primary_reply_t * xcb_randr_get_output_primary_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_randr_get_output_primary_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_randr_get_output_primary_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_randr_get_output_primary_reply_t *
+xcb_randr_get_output_primary_reply (xcb_connection_t *c /**< */,
+ xcb_randr_get_output_primary_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_randr_get_output_primary_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_crtc_change_next
+ **
+ ** @param xcb_randr_crtc_change_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_crtc_change_next (xcb_randr_crtc_change_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_randr_crtc_change_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_crtc_change_end
+ **
+ ** @param xcb_randr_crtc_change_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_crtc_change_end (xcb_randr_crtc_change_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_output_change_next
+ **
+ ** @param xcb_randr_output_change_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_output_change_next (xcb_randr_output_change_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_randr_output_change_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_output_change_end
+ **
+ ** @param xcb_randr_output_change_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_output_change_end (xcb_randr_output_change_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_output_property_next
+ **
+ ** @param xcb_randr_output_property_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_output_property_next (xcb_randr_output_property_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_randr_output_property_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_output_property_end
+ **
+ ** @param xcb_randr_output_property_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_output_property_end (xcb_randr_output_property_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_randr_notify_data_next
+ **
+ ** @param xcb_randr_notify_data_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_randr_notify_data_next (xcb_randr_notify_data_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_randr_notify_data_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_randr_notify_data_end
+ **
+ ** @param xcb_randr_notify_data_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_randr_notify_data_end (xcb_randr_notify_data_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
diff --git a/src/3rdparty/xcb/libxcb/render.c b/src/3rdparty/xcb/libxcb/render.c
new file mode 100644
index 0000000000..b251f8814c
--- /dev/null
+++ b/src/3rdparty/xcb/libxcb/render.c
@@ -0,0 +1,4353 @@
+/*
+ * This file generated automatically from render.xml by c_client.py.
+ * Edit at your peril.
+ */
+
+#include <string.h>
+#include <assert.h>
+#include "xcbext.h"
+#include "render.h"
+#include "xproto.h"
+
+xcb_extension_t xcb_render_id = { "RENDER", 0 };
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_glyph_next
+ **
+ ** @param xcb_render_glyph_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_glyph_next (xcb_render_glyph_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_render_glyph_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_glyph_end
+ **
+ ** @param xcb_render_glyph_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_glyph_end (xcb_render_glyph_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_glyphset_next
+ **
+ ** @param xcb_render_glyphset_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_glyphset_next (xcb_render_glyphset_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_render_glyphset_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_glyphset_end
+ **
+ ** @param xcb_render_glyphset_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_glyphset_end (xcb_render_glyphset_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_picture_next
+ **
+ ** @param xcb_render_picture_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_picture_next (xcb_render_picture_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_render_picture_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_picture_end
+ **
+ ** @param xcb_render_picture_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_picture_end (xcb_render_picture_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_pictformat_next
+ **
+ ** @param xcb_render_pictformat_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_pictformat_next (xcb_render_pictformat_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_render_pictformat_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_pictformat_end
+ **
+ ** @param xcb_render_pictformat_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_pictformat_end (xcb_render_pictformat_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_fixed_next
+ **
+ ** @param xcb_render_fixed_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_fixed_next (xcb_render_fixed_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_render_fixed_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_fixed_end
+ **
+ ** @param xcb_render_fixed_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_fixed_end (xcb_render_fixed_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_directformat_next
+ **
+ ** @param xcb_render_directformat_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_directformat_next (xcb_render_directformat_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_render_directformat_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_directformat_end
+ **
+ ** @param xcb_render_directformat_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_directformat_end (xcb_render_directformat_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_pictforminfo_next
+ **
+ ** @param xcb_render_pictforminfo_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_pictforminfo_next (xcb_render_pictforminfo_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_render_pictforminfo_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_pictforminfo_end
+ **
+ ** @param xcb_render_pictforminfo_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_pictforminfo_end (xcb_render_pictforminfo_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_pictvisual_next
+ **
+ ** @param xcb_render_pictvisual_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_pictvisual_next (xcb_render_pictvisual_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_render_pictvisual_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_pictvisual_end
+ **
+ ** @param xcb_render_pictvisual_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_pictvisual_end (xcb_render_pictvisual_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_pictvisual_t * xcb_render_pictdepth_visuals
+ **
+ ** @param const xcb_render_pictdepth_t *R
+ ** @returns xcb_render_pictvisual_t *
+ **
+ *****************************************************************************/
+
+xcb_render_pictvisual_t *
+xcb_render_pictdepth_visuals (const xcb_render_pictdepth_t *R /**< */)
+{
+ return (xcb_render_pictvisual_t *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_render_pictdepth_visuals_length
+ **
+ ** @param const xcb_render_pictdepth_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_render_pictdepth_visuals_length (const xcb_render_pictdepth_t *R /**< */)
+{
+ return R->num_visuals;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_pictvisual_iterator_t xcb_render_pictdepth_visuals_iterator
+ **
+ ** @param const xcb_render_pictdepth_t *R
+ ** @returns xcb_render_pictvisual_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_render_pictvisual_iterator_t
+xcb_render_pictdepth_visuals_iterator (const xcb_render_pictdepth_t *R /**< */)
+{
+ xcb_render_pictvisual_iterator_t i;
+ i.data = (xcb_render_pictvisual_t *) (R + 1);
+ i.rem = R->num_visuals;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_pictdepth_next
+ **
+ ** @param xcb_render_pictdepth_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_pictdepth_next (xcb_render_pictdepth_iterator_t *i /**< */)
+{
+ xcb_render_pictdepth_t *R = i->data;
+ xcb_generic_iterator_t child = xcb_render_pictvisual_end(xcb_render_pictdepth_visuals_iterator(R));
+ --i->rem;
+ i->data = (xcb_render_pictdepth_t *) child.data;
+ i->index = child.index;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_pictdepth_end
+ **
+ ** @param xcb_render_pictdepth_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_pictdepth_end (xcb_render_pictdepth_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ while(i.rem > 0)
+ xcb_render_pictdepth_next(&i);
+ ret.data = i.data;
+ ret.rem = i.rem;
+ ret.index = i.index;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_render_pictscreen_depths_length
+ **
+ ** @param const xcb_render_pictscreen_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_render_pictscreen_depths_length (const xcb_render_pictscreen_t *R /**< */)
+{
+ return R->num_depths;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_pictdepth_iterator_t xcb_render_pictscreen_depths_iterator
+ **
+ ** @param const xcb_render_pictscreen_t *R
+ ** @returns xcb_render_pictdepth_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_render_pictdepth_iterator_t
+xcb_render_pictscreen_depths_iterator (const xcb_render_pictscreen_t *R /**< */)
+{
+ xcb_render_pictdepth_iterator_t i;
+ i.data = (xcb_render_pictdepth_t *) (R + 1);
+ i.rem = R->num_depths;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_pictscreen_next
+ **
+ ** @param xcb_render_pictscreen_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_pictscreen_next (xcb_render_pictscreen_iterator_t *i /**< */)
+{
+ xcb_render_pictscreen_t *R = i->data;
+ xcb_generic_iterator_t child = xcb_render_pictdepth_end(xcb_render_pictscreen_depths_iterator(R));
+ --i->rem;
+ i->data = (xcb_render_pictscreen_t *) child.data;
+ i->index = child.index;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_pictscreen_end
+ **
+ ** @param xcb_render_pictscreen_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_pictscreen_end (xcb_render_pictscreen_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ while(i.rem > 0)
+ xcb_render_pictscreen_next(&i);
+ ret.data = i.data;
+ ret.rem = i.rem;
+ ret.index = i.index;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_indexvalue_next
+ **
+ ** @param xcb_render_indexvalue_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_indexvalue_next (xcb_render_indexvalue_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_render_indexvalue_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_indexvalue_end
+ **
+ ** @param xcb_render_indexvalue_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_indexvalue_end (xcb_render_indexvalue_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_color_next
+ **
+ ** @param xcb_render_color_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_color_next (xcb_render_color_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_render_color_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_color_end
+ **
+ ** @param xcb_render_color_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_color_end (xcb_render_color_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_pointfix_next
+ **
+ ** @param xcb_render_pointfix_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_pointfix_next (xcb_render_pointfix_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_render_pointfix_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_pointfix_end
+ **
+ ** @param xcb_render_pointfix_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_pointfix_end (xcb_render_pointfix_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_linefix_next
+ **
+ ** @param xcb_render_linefix_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_linefix_next (xcb_render_linefix_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_render_linefix_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_linefix_end
+ **
+ ** @param xcb_render_linefix_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_linefix_end (xcb_render_linefix_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_triangle_next
+ **
+ ** @param xcb_render_triangle_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_triangle_next (xcb_render_triangle_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_render_triangle_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_triangle_end
+ **
+ ** @param xcb_render_triangle_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_triangle_end (xcb_render_triangle_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_trapezoid_next
+ **
+ ** @param xcb_render_trapezoid_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_trapezoid_next (xcb_render_trapezoid_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_render_trapezoid_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_trapezoid_end
+ **
+ ** @param xcb_render_trapezoid_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_trapezoid_end (xcb_render_trapezoid_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_glyphinfo_next
+ **
+ ** @param xcb_render_glyphinfo_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_glyphinfo_next (xcb_render_glyphinfo_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_render_glyphinfo_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_glyphinfo_end
+ **
+ ** @param xcb_render_glyphinfo_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_glyphinfo_end (xcb_render_glyphinfo_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_version_cookie_t xcb_render_query_version
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t client_major_version
+ ** @param uint32_t client_minor_version
+ ** @returns xcb_render_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_render_query_version_cookie_t
+xcb_render_query_version (xcb_connection_t *c /**< */,
+ uint32_t client_major_version /**< */,
+ uint32_t client_minor_version /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_QUERY_VERSION,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_render_query_version_cookie_t xcb_ret;
+ xcb_render_query_version_request_t xcb_out;
+
+ xcb_out.client_major_version = client_major_version;
+ xcb_out.client_minor_version = client_minor_version;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_version_cookie_t xcb_render_query_version_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t client_major_version
+ ** @param uint32_t client_minor_version
+ ** @returns xcb_render_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_render_query_version_cookie_t
+xcb_render_query_version_unchecked (xcb_connection_t *c /**< */,
+ uint32_t client_major_version /**< */,
+ uint32_t client_minor_version /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_QUERY_VERSION,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_render_query_version_cookie_t xcb_ret;
+ xcb_render_query_version_request_t xcb_out;
+
+ xcb_out.client_major_version = client_major_version;
+ xcb_out.client_minor_version = client_minor_version;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_version_reply_t * xcb_render_query_version_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_query_version_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_render_query_version_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_render_query_version_reply_t *
+xcb_render_query_version_reply (xcb_connection_t *c /**< */,
+ xcb_render_query_version_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_render_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_pict_formats_cookie_t xcb_render_query_pict_formats
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_render_query_pict_formats_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_render_query_pict_formats_cookie_t
+xcb_render_query_pict_formats (xcb_connection_t *c /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_QUERY_PICT_FORMATS,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_render_query_pict_formats_cookie_t xcb_ret;
+ xcb_render_query_pict_formats_request_t xcb_out;
+
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_pict_formats_cookie_t xcb_render_query_pict_formats_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_render_query_pict_formats_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_render_query_pict_formats_cookie_t
+xcb_render_query_pict_formats_unchecked (xcb_connection_t *c /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_QUERY_PICT_FORMATS,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_render_query_pict_formats_cookie_t xcb_ret;
+ xcb_render_query_pict_formats_request_t xcb_out;
+
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_pictforminfo_t * xcb_render_query_pict_formats_formats
+ **
+ ** @param const xcb_render_query_pict_formats_reply_t *R
+ ** @returns xcb_render_pictforminfo_t *
+ **
+ *****************************************************************************/
+
+xcb_render_pictforminfo_t *
+xcb_render_query_pict_formats_formats (const xcb_render_query_pict_formats_reply_t *R /**< */)
+{
+ return (xcb_render_pictforminfo_t *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_render_query_pict_formats_formats_length
+ **
+ ** @param const xcb_render_query_pict_formats_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_render_query_pict_formats_formats_length (const xcb_render_query_pict_formats_reply_t *R /**< */)
+{
+ return R->num_formats;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_pictforminfo_iterator_t xcb_render_query_pict_formats_formats_iterator
+ **
+ ** @param const xcb_render_query_pict_formats_reply_t *R
+ ** @returns xcb_render_pictforminfo_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_render_pictforminfo_iterator_t
+xcb_render_query_pict_formats_formats_iterator (const xcb_render_query_pict_formats_reply_t *R /**< */)
+{
+ xcb_render_pictforminfo_iterator_t i;
+ i.data = (xcb_render_pictforminfo_t *) (R + 1);
+ i.rem = R->num_formats;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_render_query_pict_formats_screens_length
+ **
+ ** @param const xcb_render_query_pict_formats_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_render_query_pict_formats_screens_length (const xcb_render_query_pict_formats_reply_t *R /**< */)
+{
+ return R->num_screens;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_pictscreen_iterator_t xcb_render_query_pict_formats_screens_iterator
+ **
+ ** @param const xcb_render_query_pict_formats_reply_t *R
+ ** @returns xcb_render_pictscreen_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_render_pictscreen_iterator_t
+xcb_render_query_pict_formats_screens_iterator (const xcb_render_query_pict_formats_reply_t *R /**< */)
+{
+ xcb_render_pictscreen_iterator_t i;
+ xcb_generic_iterator_t prev = xcb_render_pictforminfo_end(xcb_render_query_pict_formats_formats_iterator(R));
+ i.data = (xcb_render_pictscreen_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_pictscreen_t, prev.index));
+ i.rem = R->num_screens;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** uint32_t * xcb_render_query_pict_formats_subpixels
+ **
+ ** @param const xcb_render_query_pict_formats_reply_t *R
+ ** @returns uint32_t *
+ **
+ *****************************************************************************/
+
+uint32_t *
+xcb_render_query_pict_formats_subpixels (const xcb_render_query_pict_formats_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t prev = xcb_render_pictscreen_end(xcb_render_query_pict_formats_screens_iterator(R));
+ return (uint32_t *) ((char *) prev.data + XCB_TYPE_PAD(uint32_t, prev.index) + 0);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_render_query_pict_formats_subpixels_length
+ **
+ ** @param const xcb_render_query_pict_formats_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_render_query_pict_formats_subpixels_length (const xcb_render_query_pict_formats_reply_t *R /**< */)
+{
+ return R->num_subpixel;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_query_pict_formats_subpixels_end
+ **
+ ** @param const xcb_render_query_pict_formats_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_query_pict_formats_subpixels_end (const xcb_render_query_pict_formats_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ xcb_generic_iterator_t child = xcb_render_pictscreen_end(xcb_render_query_pict_formats_screens_iterator(R));
+ i.data = ((uint32_t *) child.data) + (R->num_subpixel);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_pict_formats_reply_t * xcb_render_query_pict_formats_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_query_pict_formats_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_render_query_pict_formats_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_render_query_pict_formats_reply_t *
+xcb_render_query_pict_formats_reply (xcb_connection_t *c /**< */,
+ xcb_render_query_pict_formats_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_render_query_pict_formats_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_pict_index_values_cookie_t xcb_render_query_pict_index_values
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_pictformat_t format
+ ** @returns xcb_render_query_pict_index_values_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_render_query_pict_index_values_cookie_t
+xcb_render_query_pict_index_values (xcb_connection_t *c /**< */,
+ xcb_render_pictformat_t format /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_QUERY_PICT_INDEX_VALUES,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_render_query_pict_index_values_cookie_t xcb_ret;
+ xcb_render_query_pict_index_values_request_t xcb_out;
+
+ xcb_out.format = format;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_pict_index_values_cookie_t xcb_render_query_pict_index_values_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_pictformat_t format
+ ** @returns xcb_render_query_pict_index_values_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_render_query_pict_index_values_cookie_t
+xcb_render_query_pict_index_values_unchecked (xcb_connection_t *c /**< */,
+ xcb_render_pictformat_t format /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_QUERY_PICT_INDEX_VALUES,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_render_query_pict_index_values_cookie_t xcb_ret;
+ xcb_render_query_pict_index_values_request_t xcb_out;
+
+ xcb_out.format = format;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_indexvalue_t * xcb_render_query_pict_index_values_values
+ **
+ ** @param const xcb_render_query_pict_index_values_reply_t *R
+ ** @returns xcb_render_indexvalue_t *
+ **
+ *****************************************************************************/
+
+xcb_render_indexvalue_t *
+xcb_render_query_pict_index_values_values (const xcb_render_query_pict_index_values_reply_t *R /**< */)
+{
+ return (xcb_render_indexvalue_t *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_render_query_pict_index_values_values_length
+ **
+ ** @param const xcb_render_query_pict_index_values_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_render_query_pict_index_values_values_length (const xcb_render_query_pict_index_values_reply_t *R /**< */)
+{
+ return R->num_values;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_indexvalue_iterator_t xcb_render_query_pict_index_values_values_iterator
+ **
+ ** @param const xcb_render_query_pict_index_values_reply_t *R
+ ** @returns xcb_render_indexvalue_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_render_indexvalue_iterator_t
+xcb_render_query_pict_index_values_values_iterator (const xcb_render_query_pict_index_values_reply_t *R /**< */)
+{
+ xcb_render_indexvalue_iterator_t i;
+ i.data = (xcb_render_indexvalue_t *) (R + 1);
+ i.rem = R->num_values;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_pict_index_values_reply_t * xcb_render_query_pict_index_values_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_query_pict_index_values_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_render_query_pict_index_values_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_render_query_pict_index_values_reply_t *
+xcb_render_query_pict_index_values_reply (xcb_connection_t *c /**< */,
+ xcb_render_query_pict_index_values_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_render_query_pict_index_values_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_picture_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t pid
+ ** @param xcb_drawable_t drawable
+ ** @param xcb_render_pictformat_t format
+ ** @param uint32_t value_mask
+ ** @param const uint32_t *value_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_picture_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t pid /**< */,
+ xcb_drawable_t drawable /**< */,
+ xcb_render_pictformat_t format /**< */,
+ uint32_t value_mask /**< */,
+ const uint32_t *value_list /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CREATE_PICTURE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_create_picture_request_t xcb_out;
+
+ xcb_out.pid = pid;
+ xcb_out.drawable = drawable;
+ xcb_out.format = format;
+ xcb_out.value_mask = value_mask;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) value_list;
+ xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_picture
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t pid
+ ** @param xcb_drawable_t drawable
+ ** @param xcb_render_pictformat_t format
+ ** @param uint32_t value_mask
+ ** @param const uint32_t *value_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_picture (xcb_connection_t *c /**< */,
+ xcb_render_picture_t pid /**< */,
+ xcb_drawable_t drawable /**< */,
+ xcb_render_pictformat_t format /**< */,
+ uint32_t value_mask /**< */,
+ const uint32_t *value_list /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CREATE_PICTURE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_create_picture_request_t xcb_out;
+
+ xcb_out.pid = pid;
+ xcb_out.drawable = drawable;
+ xcb_out.format = format;
+ xcb_out.value_mask = value_mask;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) value_list;
+ xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_change_picture_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param uint32_t value_mask
+ ** @param const uint32_t *value_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_change_picture_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ uint32_t value_mask /**< */,
+ const uint32_t *value_list /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CHANGE_PICTURE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_change_picture_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.value_mask = value_mask;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) value_list;
+ xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_change_picture
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param uint32_t value_mask
+ ** @param const uint32_t *value_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_change_picture (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ uint32_t value_mask /**< */,
+ const uint32_t *value_list /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CHANGE_PICTURE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_change_picture_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.value_mask = value_mask;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) value_list;
+ xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_set_picture_clip_rectangles_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param int16_t clip_x_origin
+ ** @param int16_t clip_y_origin
+ ** @param uint32_t rectangles_len
+ ** @param const xcb_rectangle_t *rectangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_set_picture_clip_rectangles_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ int16_t clip_x_origin /**< */,
+ int16_t clip_y_origin /**< */,
+ uint32_t rectangles_len /**< */,
+ const xcb_rectangle_t *rectangles /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_SET_PICTURE_CLIP_RECTANGLES,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_set_picture_clip_rectangles_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.clip_x_origin = clip_x_origin;
+ xcb_out.clip_y_origin = clip_y_origin;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) rectangles;
+ xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_set_picture_clip_rectangles
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param int16_t clip_x_origin
+ ** @param int16_t clip_y_origin
+ ** @param uint32_t rectangles_len
+ ** @param const xcb_rectangle_t *rectangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_set_picture_clip_rectangles (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ int16_t clip_x_origin /**< */,
+ int16_t clip_y_origin /**< */,
+ uint32_t rectangles_len /**< */,
+ const xcb_rectangle_t *rectangles /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_SET_PICTURE_CLIP_RECTANGLES,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_set_picture_clip_rectangles_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.clip_x_origin = clip_x_origin;
+ xcb_out.clip_y_origin = clip_y_origin;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) rectangles;
+ xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_free_picture_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_free_picture_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_FREE_PICTURE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_free_picture_request_t xcb_out;
+
+ xcb_out.picture = picture;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_free_picture
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_free_picture (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_FREE_PICTURE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_free_picture_request_t xcb_out;
+
+ xcb_out.picture = picture;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_composite_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t mask
+ ** @param xcb_render_picture_t dst
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param int16_t mask_x
+ ** @param int16_t mask_y
+ ** @param int16_t dst_x
+ ** @param int16_t dst_y
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_composite_checked (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t mask /**< */,
+ xcb_render_picture_t dst /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ int16_t mask_x /**< */,
+ int16_t mask_y /**< */,
+ int16_t dst_x /**< */,
+ int16_t dst_y /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_COMPOSITE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_composite_request_t xcb_out;
+
+ xcb_out.op = op;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.src = src;
+ xcb_out.mask = mask;
+ xcb_out.dst = dst;
+ xcb_out.src_x = src_x;
+ xcb_out.src_y = src_y;
+ xcb_out.mask_x = mask_x;
+ xcb_out.mask_y = mask_y;
+ xcb_out.dst_x = dst_x;
+ xcb_out.dst_y = dst_y;
+ xcb_out.width = width;
+ xcb_out.height = height;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_composite
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t mask
+ ** @param xcb_render_picture_t dst
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param int16_t mask_x
+ ** @param int16_t mask_y
+ ** @param int16_t dst_x
+ ** @param int16_t dst_y
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_composite (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t mask /**< */,
+ xcb_render_picture_t dst /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ int16_t mask_x /**< */,
+ int16_t mask_y /**< */,
+ int16_t dst_x /**< */,
+ int16_t dst_y /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_COMPOSITE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_composite_request_t xcb_out;
+
+ xcb_out.op = op;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.src = src;
+ xcb_out.mask = mask;
+ xcb_out.dst = dst;
+ xcb_out.src_x = src_x;
+ xcb_out.src_y = src_y;
+ xcb_out.mask_x = mask_x;
+ xcb_out.mask_y = mask_y;
+ xcb_out.dst_x = dst_x;
+ xcb_out.dst_y = dst_y;
+ xcb_out.width = width;
+ xcb_out.height = height;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_trapezoids_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t traps_len
+ ** @param const xcb_render_trapezoid_t *traps
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_trapezoids_checked (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t traps_len /**< */,
+ const xcb_render_trapezoid_t *traps /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_TRAPEZOIDS,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_trapezoids_request_t xcb_out;
+
+ xcb_out.op = op;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.src = src;
+ xcb_out.dst = dst;
+ xcb_out.mask_format = mask_format;
+ xcb_out.src_x = src_x;
+ xcb_out.src_y = src_y;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) traps;
+ xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trapezoid_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_trapezoids
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t traps_len
+ ** @param const xcb_render_trapezoid_t *traps
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_trapezoids (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t traps_len /**< */,
+ const xcb_render_trapezoid_t *traps /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_TRAPEZOIDS,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_trapezoids_request_t xcb_out;
+
+ xcb_out.op = op;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.src = src;
+ xcb_out.dst = dst;
+ xcb_out.mask_format = mask_format;
+ xcb_out.src_x = src_x;
+ xcb_out.src_y = src_y;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) traps;
+ xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trapezoid_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_triangles_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t triangles_len
+ ** @param const xcb_render_triangle_t *triangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_triangles_checked (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t triangles_len /**< */,
+ const xcb_render_triangle_t *triangles /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_TRIANGLES,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_triangles_request_t xcb_out;
+
+ xcb_out.op = op;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.src = src;
+ xcb_out.dst = dst;
+ xcb_out.mask_format = mask_format;
+ xcb_out.src_x = src_x;
+ xcb_out.src_y = src_y;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) triangles;
+ xcb_parts[4].iov_len = triangles_len * sizeof(xcb_render_triangle_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_triangles
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t triangles_len
+ ** @param const xcb_render_triangle_t *triangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_triangles (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t triangles_len /**< */,
+ const xcb_render_triangle_t *triangles /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_TRIANGLES,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_triangles_request_t xcb_out;
+
+ xcb_out.op = op;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.src = src;
+ xcb_out.dst = dst;
+ xcb_out.mask_format = mask_format;
+ xcb_out.src_x = src_x;
+ xcb_out.src_y = src_y;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) triangles;
+ xcb_parts[4].iov_len = triangles_len * sizeof(xcb_render_triangle_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_tri_strip_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t points_len
+ ** @param const xcb_render_pointfix_t *points
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_tri_strip_checked (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t points_len /**< */,
+ const xcb_render_pointfix_t *points /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_TRI_STRIP,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_tri_strip_request_t xcb_out;
+
+ xcb_out.op = op;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.src = src;
+ xcb_out.dst = dst;
+ xcb_out.mask_format = mask_format;
+ xcb_out.src_x = src_x;
+ xcb_out.src_y = src_y;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) points;
+ xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_tri_strip
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t points_len
+ ** @param const xcb_render_pointfix_t *points
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_tri_strip (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t points_len /**< */,
+ const xcb_render_pointfix_t *points /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_TRI_STRIP,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_tri_strip_request_t xcb_out;
+
+ xcb_out.op = op;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.src = src;
+ xcb_out.dst = dst;
+ xcb_out.mask_format = mask_format;
+ xcb_out.src_x = src_x;
+ xcb_out.src_y = src_y;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) points;
+ xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_tri_fan_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t points_len
+ ** @param const xcb_render_pointfix_t *points
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_tri_fan_checked (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t points_len /**< */,
+ const xcb_render_pointfix_t *points /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_TRI_FAN,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_tri_fan_request_t xcb_out;
+
+ xcb_out.op = op;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.src = src;
+ xcb_out.dst = dst;
+ xcb_out.mask_format = mask_format;
+ xcb_out.src_x = src_x;
+ xcb_out.src_y = src_y;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) points;
+ xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_tri_fan
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t points_len
+ ** @param const xcb_render_pointfix_t *points
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_tri_fan (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t points_len /**< */,
+ const xcb_render_pointfix_t *points /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_TRI_FAN,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_tri_fan_request_t xcb_out;
+
+ xcb_out.op = op;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.src = src;
+ xcb_out.dst = dst;
+ xcb_out.mask_format = mask_format;
+ xcb_out.src_x = src_x;
+ xcb_out.src_y = src_y;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) points;
+ xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_glyph_set_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t gsid
+ ** @param xcb_render_pictformat_t format
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_glyph_set_checked (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t gsid /**< */,
+ xcb_render_pictformat_t format /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CREATE_GLYPH_SET,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_create_glyph_set_request_t xcb_out;
+
+ xcb_out.gsid = gsid;
+ xcb_out.format = format;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_glyph_set
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t gsid
+ ** @param xcb_render_pictformat_t format
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_glyph_set (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t gsid /**< */,
+ xcb_render_pictformat_t format /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CREATE_GLYPH_SET,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_create_glyph_set_request_t xcb_out;
+
+ xcb_out.gsid = gsid;
+ xcb_out.format = format;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_reference_glyph_set_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t gsid
+ ** @param xcb_render_glyphset_t existing
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_reference_glyph_set_checked (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t gsid /**< */,
+ xcb_render_glyphset_t existing /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_REFERENCE_GLYPH_SET,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_reference_glyph_set_request_t xcb_out;
+
+ xcb_out.gsid = gsid;
+ xcb_out.existing = existing;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_reference_glyph_set
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t gsid
+ ** @param xcb_render_glyphset_t existing
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_reference_glyph_set (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t gsid /**< */,
+ xcb_render_glyphset_t existing /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_REFERENCE_GLYPH_SET,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_reference_glyph_set_request_t xcb_out;
+
+ xcb_out.gsid = gsid;
+ xcb_out.existing = existing;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_free_glyph_set_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t glyphset
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_free_glyph_set_checked (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t glyphset /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_FREE_GLYPH_SET,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_free_glyph_set_request_t xcb_out;
+
+ xcb_out.glyphset = glyphset;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_free_glyph_set
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t glyphset
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_free_glyph_set (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t glyphset /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_FREE_GLYPH_SET,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_free_glyph_set_request_t xcb_out;
+
+ xcb_out.glyphset = glyphset;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_add_glyphs_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param uint32_t glyphs_len
+ ** @param const uint32_t *glyphids
+ ** @param const xcb_render_glyphinfo_t *glyphs
+ ** @param uint32_t data_len
+ ** @param const uint8_t *data
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_add_glyphs_checked (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ uint32_t glyphs_len /**< */,
+ const uint32_t *glyphids /**< */,
+ const xcb_render_glyphinfo_t *glyphs /**< */,
+ uint32_t data_len /**< */,
+ const uint8_t *data /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 8,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_ADD_GLYPHS,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[10];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_add_glyphs_request_t xcb_out;
+
+ xcb_out.glyphset = glyphset;
+ xcb_out.glyphs_len = glyphs_len;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) glyphids;
+ xcb_parts[4].iov_len = glyphs_len * sizeof(uint32_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_parts[6].iov_base = (char *) glyphs;
+ xcb_parts[6].iov_len = glyphs_len * sizeof(xcb_render_glyphinfo_t);
+ xcb_parts[7].iov_base = 0;
+ xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
+ xcb_parts[8].iov_base = (char *) data;
+ xcb_parts[8].iov_len = data_len * sizeof(uint8_t);
+ xcb_parts[9].iov_base = 0;
+ xcb_parts[9].iov_len = -xcb_parts[8].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_add_glyphs
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param uint32_t glyphs_len
+ ** @param const uint32_t *glyphids
+ ** @param const xcb_render_glyphinfo_t *glyphs
+ ** @param uint32_t data_len
+ ** @param const uint8_t *data
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_add_glyphs (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ uint32_t glyphs_len /**< */,
+ const uint32_t *glyphids /**< */,
+ const xcb_render_glyphinfo_t *glyphs /**< */,
+ uint32_t data_len /**< */,
+ const uint8_t *data /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 8,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_ADD_GLYPHS,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[10];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_add_glyphs_request_t xcb_out;
+
+ xcb_out.glyphset = glyphset;
+ xcb_out.glyphs_len = glyphs_len;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) glyphids;
+ xcb_parts[4].iov_len = glyphs_len * sizeof(uint32_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_parts[6].iov_base = (char *) glyphs;
+ xcb_parts[6].iov_len = glyphs_len * sizeof(xcb_render_glyphinfo_t);
+ xcb_parts[7].iov_base = 0;
+ xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
+ xcb_parts[8].iov_base = (char *) data;
+ xcb_parts[8].iov_len = data_len * sizeof(uint8_t);
+ xcb_parts[9].iov_base = 0;
+ xcb_parts[9].iov_len = -xcb_parts[8].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_free_glyphs_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param uint32_t glyphs_len
+ ** @param const xcb_render_glyph_t *glyphs
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_free_glyphs_checked (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ uint32_t glyphs_len /**< */,
+ const xcb_render_glyph_t *glyphs /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_FREE_GLYPHS,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_free_glyphs_request_t xcb_out;
+
+ xcb_out.glyphset = glyphset;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) glyphs;
+ xcb_parts[4].iov_len = glyphs_len * sizeof(xcb_render_glyph_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_free_glyphs
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param uint32_t glyphs_len
+ ** @param const xcb_render_glyph_t *glyphs
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_free_glyphs (xcb_connection_t *c /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ uint32_t glyphs_len /**< */,
+ const xcb_render_glyph_t *glyphs /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_FREE_GLYPHS,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_free_glyphs_request_t xcb_out;
+
+ xcb_out.glyphset = glyphset;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) glyphs;
+ xcb_parts[4].iov_len = glyphs_len * sizeof(xcb_render_glyph_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_composite_glyphs_8_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t glyphcmds_len
+ ** @param const uint8_t *glyphcmds
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_composite_glyphs_8_checked (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t glyphcmds_len /**< */,
+ const uint8_t *glyphcmds /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_COMPOSITE_GLYPHS_8,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_composite_glyphs_8_request_t xcb_out;
+
+ xcb_out.op = op;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.src = src;
+ xcb_out.dst = dst;
+ xcb_out.mask_format = mask_format;
+ xcb_out.glyphset = glyphset;
+ xcb_out.src_x = src_x;
+ xcb_out.src_y = src_y;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) glyphcmds;
+ xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_composite_glyphs_8
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t glyphcmds_len
+ ** @param const uint8_t *glyphcmds
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_composite_glyphs_8 (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t glyphcmds_len /**< */,
+ const uint8_t *glyphcmds /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_COMPOSITE_GLYPHS_8,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_composite_glyphs_8_request_t xcb_out;
+
+ xcb_out.op = op;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.src = src;
+ xcb_out.dst = dst;
+ xcb_out.mask_format = mask_format;
+ xcb_out.glyphset = glyphset;
+ xcb_out.src_x = src_x;
+ xcb_out.src_y = src_y;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) glyphcmds;
+ xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_composite_glyphs_16_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t glyphcmds_len
+ ** @param const uint8_t *glyphcmds
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_composite_glyphs_16_checked (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t glyphcmds_len /**< */,
+ const uint8_t *glyphcmds /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_COMPOSITE_GLYPHS_16,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_composite_glyphs_16_request_t xcb_out;
+
+ xcb_out.op = op;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.src = src;
+ xcb_out.dst = dst;
+ xcb_out.mask_format = mask_format;
+ xcb_out.glyphset = glyphset;
+ xcb_out.src_x = src_x;
+ xcb_out.src_y = src_y;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) glyphcmds;
+ xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_composite_glyphs_16
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t glyphcmds_len
+ ** @param const uint8_t *glyphcmds
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_composite_glyphs_16 (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t glyphcmds_len /**< */,
+ const uint8_t *glyphcmds /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_COMPOSITE_GLYPHS_16,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_composite_glyphs_16_request_t xcb_out;
+
+ xcb_out.op = op;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.src = src;
+ xcb_out.dst = dst;
+ xcb_out.mask_format = mask_format;
+ xcb_out.glyphset = glyphset;
+ xcb_out.src_x = src_x;
+ xcb_out.src_y = src_y;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) glyphcmds;
+ xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_composite_glyphs_32_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t glyphcmds_len
+ ** @param const uint8_t *glyphcmds
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_composite_glyphs_32_checked (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t glyphcmds_len /**< */,
+ const uint8_t *glyphcmds /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_COMPOSITE_GLYPHS_32,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_composite_glyphs_32_request_t xcb_out;
+
+ xcb_out.op = op;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.src = src;
+ xcb_out.dst = dst;
+ xcb_out.mask_format = mask_format;
+ xcb_out.glyphset = glyphset;
+ xcb_out.src_x = src_x;
+ xcb_out.src_y = src_y;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) glyphcmds;
+ xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_composite_glyphs_32
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t src
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_pictformat_t mask_format
+ ** @param xcb_render_glyphset_t glyphset
+ ** @param int16_t src_x
+ ** @param int16_t src_y
+ ** @param uint32_t glyphcmds_len
+ ** @param const uint8_t *glyphcmds
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_composite_glyphs_32 (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t src /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_pictformat_t mask_format /**< */,
+ xcb_render_glyphset_t glyphset /**< */,
+ int16_t src_x /**< */,
+ int16_t src_y /**< */,
+ uint32_t glyphcmds_len /**< */,
+ const uint8_t *glyphcmds /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_COMPOSITE_GLYPHS_32,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_composite_glyphs_32_request_t xcb_out;
+
+ xcb_out.op = op;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.src = src;
+ xcb_out.dst = dst;
+ xcb_out.mask_format = mask_format;
+ xcb_out.glyphset = glyphset;
+ xcb_out.src_x = src_x;
+ xcb_out.src_y = src_y;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) glyphcmds;
+ xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_fill_rectangles_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_color_t color
+ ** @param uint32_t rects_len
+ ** @param const xcb_rectangle_t *rects
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_fill_rectangles_checked (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_color_t color /**< */,
+ uint32_t rects_len /**< */,
+ const xcb_rectangle_t *rects /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_FILL_RECTANGLES,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_fill_rectangles_request_t xcb_out;
+
+ xcb_out.op = op;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.dst = dst;
+ xcb_out.color = color;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) rects;
+ xcb_parts[4].iov_len = rects_len * sizeof(xcb_rectangle_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_fill_rectangles
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t op
+ ** @param xcb_render_picture_t dst
+ ** @param xcb_render_color_t color
+ ** @param uint32_t rects_len
+ ** @param const xcb_rectangle_t *rects
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_fill_rectangles (xcb_connection_t *c /**< */,
+ uint8_t op /**< */,
+ xcb_render_picture_t dst /**< */,
+ xcb_render_color_t color /**< */,
+ uint32_t rects_len /**< */,
+ const xcb_rectangle_t *rects /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_FILL_RECTANGLES,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_fill_rectangles_request_t xcb_out;
+
+ xcb_out.op = op;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.dst = dst;
+ xcb_out.color = color;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) rects;
+ xcb_parts[4].iov_len = rects_len * sizeof(xcb_rectangle_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_cursor_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t cid
+ ** @param xcb_render_picture_t source
+ ** @param uint16_t x
+ ** @param uint16_t y
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_cursor_checked (xcb_connection_t *c /**< */,
+ xcb_cursor_t cid /**< */,
+ xcb_render_picture_t source /**< */,
+ uint16_t x /**< */,
+ uint16_t y /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CREATE_CURSOR,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_create_cursor_request_t xcb_out;
+
+ xcb_out.cid = cid;
+ xcb_out.source = source;
+ xcb_out.x = x;
+ xcb_out.y = y;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_cursor
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t cid
+ ** @param xcb_render_picture_t source
+ ** @param uint16_t x
+ ** @param uint16_t y
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_cursor (xcb_connection_t *c /**< */,
+ xcb_cursor_t cid /**< */,
+ xcb_render_picture_t source /**< */,
+ uint16_t x /**< */,
+ uint16_t y /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CREATE_CURSOR,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_create_cursor_request_t xcb_out;
+
+ xcb_out.cid = cid;
+ xcb_out.source = source;
+ xcb_out.x = x;
+ xcb_out.y = y;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_transform_next
+ **
+ ** @param xcb_render_transform_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_transform_next (xcb_render_transform_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_render_transform_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_transform_end
+ **
+ ** @param xcb_render_transform_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_transform_end (xcb_render_transform_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_set_picture_transform_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_transform_t transform
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_set_picture_transform_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_transform_t transform /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_SET_PICTURE_TRANSFORM,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_set_picture_transform_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.transform = transform;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_set_picture_transform
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_transform_t transform
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_set_picture_transform (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_transform_t transform /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_SET_PICTURE_TRANSFORM,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_set_picture_transform_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.transform = transform;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_filters_cookie_t xcb_render_query_filters
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_drawable_t drawable
+ ** @returns xcb_render_query_filters_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_render_query_filters_cookie_t
+xcb_render_query_filters (xcb_connection_t *c /**< */,
+ xcb_drawable_t drawable /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_QUERY_FILTERS,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_render_query_filters_cookie_t xcb_ret;
+ xcb_render_query_filters_request_t xcb_out;
+
+ xcb_out.drawable = drawable;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_filters_cookie_t xcb_render_query_filters_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_drawable_t drawable
+ ** @returns xcb_render_query_filters_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_render_query_filters_cookie_t
+xcb_render_query_filters_unchecked (xcb_connection_t *c /**< */,
+ xcb_drawable_t drawable /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_QUERY_FILTERS,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_render_query_filters_cookie_t xcb_ret;
+ xcb_render_query_filters_request_t xcb_out;
+
+ xcb_out.drawable = drawable;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** uint16_t * xcb_render_query_filters_aliases
+ **
+ ** @param const xcb_render_query_filters_reply_t *R
+ ** @returns uint16_t *
+ **
+ *****************************************************************************/
+
+uint16_t *
+xcb_render_query_filters_aliases (const xcb_render_query_filters_reply_t *R /**< */)
+{
+ return (uint16_t *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_render_query_filters_aliases_length
+ **
+ ** @param const xcb_render_query_filters_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_render_query_filters_aliases_length (const xcb_render_query_filters_reply_t *R /**< */)
+{
+ return R->num_aliases;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_query_filters_aliases_end
+ **
+ ** @param const xcb_render_query_filters_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_query_filters_aliases_end (const xcb_render_query_filters_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ i.data = ((uint16_t *) (R + 1)) + (R->num_aliases);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_render_query_filters_filters_length
+ **
+ ** @param const xcb_render_query_filters_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_render_query_filters_filters_length (const xcb_render_query_filters_reply_t *R /**< */)
+{
+ return R->num_filters;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_str_iterator_t xcb_render_query_filters_filters_iterator
+ **
+ ** @param const xcb_render_query_filters_reply_t *R
+ ** @returns xcb_str_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_str_iterator_t
+xcb_render_query_filters_filters_iterator (const xcb_render_query_filters_reply_t *R /**< */)
+{
+ xcb_str_iterator_t i;
+ xcb_generic_iterator_t prev = xcb_render_query_filters_aliases_end(R);
+ i.data = (xcb_str_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_str_t, prev.index));
+ i.rem = R->num_filters;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_render_query_filters_reply_t * xcb_render_query_filters_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_query_filters_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_render_query_filters_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_render_query_filters_reply_t *
+xcb_render_query_filters_reply (xcb_connection_t *c /**< */,
+ xcb_render_query_filters_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_render_query_filters_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_set_picture_filter_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param uint16_t filter_len
+ ** @param const char *filter
+ ** @param uint32_t values_len
+ ** @param const xcb_render_fixed_t *values
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_set_picture_filter_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ uint16_t filter_len /**< */,
+ const char *filter /**< */,
+ uint32_t values_len /**< */,
+ const xcb_render_fixed_t *values /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 6,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_SET_PICTURE_FILTER,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[8];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_set_picture_filter_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.filter_len = filter_len;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) filter;
+ xcb_parts[4].iov_len = filter_len * sizeof(char);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_parts[6].iov_base = (char *) values;
+ xcb_parts[6].iov_len = values_len * sizeof(xcb_render_fixed_t);
+ xcb_parts[7].iov_base = 0;
+ xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_set_picture_filter
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param uint16_t filter_len
+ ** @param const char *filter
+ ** @param uint32_t values_len
+ ** @param const xcb_render_fixed_t *values
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_set_picture_filter (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ uint16_t filter_len /**< */,
+ const char *filter /**< */,
+ uint32_t values_len /**< */,
+ const xcb_render_fixed_t *values /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 6,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_SET_PICTURE_FILTER,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[8];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_set_picture_filter_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.filter_len = filter_len;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) filter;
+ xcb_parts[4].iov_len = filter_len * sizeof(char);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_parts[6].iov_base = (char *) values;
+ xcb_parts[6].iov_len = values_len * sizeof(xcb_render_fixed_t);
+ xcb_parts[7].iov_base = 0;
+ xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_animcursorelt_next
+ **
+ ** @param xcb_render_animcursorelt_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_animcursorelt_next (xcb_render_animcursorelt_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_render_animcursorelt_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_animcursorelt_end
+ **
+ ** @param xcb_render_animcursorelt_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_animcursorelt_end (xcb_render_animcursorelt_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_anim_cursor_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t cid
+ ** @param uint32_t cursors_len
+ ** @param const xcb_render_animcursorelt_t *cursors
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_anim_cursor_checked (xcb_connection_t *c /**< */,
+ xcb_cursor_t cid /**< */,
+ uint32_t cursors_len /**< */,
+ const xcb_render_animcursorelt_t *cursors /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CREATE_ANIM_CURSOR,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_create_anim_cursor_request_t xcb_out;
+
+ xcb_out.cid = cid;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) cursors;
+ xcb_parts[4].iov_len = cursors_len * sizeof(xcb_render_animcursorelt_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_anim_cursor
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t cid
+ ** @param uint32_t cursors_len
+ ** @param const xcb_render_animcursorelt_t *cursors
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_anim_cursor (xcb_connection_t *c /**< */,
+ xcb_cursor_t cid /**< */,
+ uint32_t cursors_len /**< */,
+ const xcb_render_animcursorelt_t *cursors /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CREATE_ANIM_CURSOR,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_create_anim_cursor_request_t xcb_out;
+
+ xcb_out.cid = cid;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) cursors;
+ xcb_parts[4].iov_len = cursors_len * sizeof(xcb_render_animcursorelt_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_spanfix_next
+ **
+ ** @param xcb_render_spanfix_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_spanfix_next (xcb_render_spanfix_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_render_spanfix_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_spanfix_end
+ **
+ ** @param xcb_render_spanfix_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_spanfix_end (xcb_render_spanfix_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_render_trap_next
+ **
+ ** @param xcb_render_trap_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_render_trap_next (xcb_render_trap_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_render_trap_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_render_trap_end
+ **
+ ** @param xcb_render_trap_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_render_trap_end (xcb_render_trap_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_add_traps_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param int16_t x_off
+ ** @param int16_t y_off
+ ** @param uint32_t traps_len
+ ** @param const xcb_render_trap_t *traps
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_add_traps_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ int16_t x_off /**< */,
+ int16_t y_off /**< */,
+ uint32_t traps_len /**< */,
+ const xcb_render_trap_t *traps /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_ADD_TRAPS,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_add_traps_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.x_off = x_off;
+ xcb_out.y_off = y_off;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) traps;
+ xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trap_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_add_traps
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param int16_t x_off
+ ** @param int16_t y_off
+ ** @param uint32_t traps_len
+ ** @param const xcb_render_trap_t *traps
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_add_traps (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ int16_t x_off /**< */,
+ int16_t y_off /**< */,
+ uint32_t traps_len /**< */,
+ const xcb_render_trap_t *traps /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_ADD_TRAPS,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_add_traps_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.x_off = x_off;
+ xcb_out.y_off = y_off;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) traps;
+ xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trap_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_solid_fill_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_color_t color
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_solid_fill_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_color_t color /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CREATE_SOLID_FILL,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_create_solid_fill_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.color = color;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_solid_fill
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_color_t color
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_solid_fill (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_color_t color /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CREATE_SOLID_FILL,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_create_solid_fill_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.color = color;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_linear_gradient_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_pointfix_t p1
+ ** @param xcb_render_pointfix_t p2
+ ** @param uint32_t num_stops
+ ** @param const xcb_render_fixed_t *stops
+ ** @param const xcb_render_color_t *colors
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_linear_gradient_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_pointfix_t p1 /**< */,
+ xcb_render_pointfix_t p2 /**< */,
+ uint32_t num_stops /**< */,
+ const xcb_render_fixed_t *stops /**< */,
+ const xcb_render_color_t *colors /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 6,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CREATE_LINEAR_GRADIENT,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[8];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_create_linear_gradient_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.p1 = p1;
+ xcb_out.p2 = p2;
+ xcb_out.num_stops = num_stops;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) stops;
+ xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_parts[6].iov_base = (char *) colors;
+ xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t);
+ xcb_parts[7].iov_base = 0;
+ xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_linear_gradient
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_pointfix_t p1
+ ** @param xcb_render_pointfix_t p2
+ ** @param uint32_t num_stops
+ ** @param const xcb_render_fixed_t *stops
+ ** @param const xcb_render_color_t *colors
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_linear_gradient (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_pointfix_t p1 /**< */,
+ xcb_render_pointfix_t p2 /**< */,
+ uint32_t num_stops /**< */,
+ const xcb_render_fixed_t *stops /**< */,
+ const xcb_render_color_t *colors /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 6,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CREATE_LINEAR_GRADIENT,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[8];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_create_linear_gradient_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.p1 = p1;
+ xcb_out.p2 = p2;
+ xcb_out.num_stops = num_stops;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) stops;
+ xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_parts[6].iov_base = (char *) colors;
+ xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t);
+ xcb_parts[7].iov_base = 0;
+ xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_radial_gradient_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_pointfix_t inner
+ ** @param xcb_render_pointfix_t outer
+ ** @param xcb_render_fixed_t inner_radius
+ ** @param xcb_render_fixed_t outer_radius
+ ** @param uint32_t num_stops
+ ** @param const xcb_render_fixed_t *stops
+ ** @param const xcb_render_color_t *colors
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_radial_gradient_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_pointfix_t inner /**< */,
+ xcb_render_pointfix_t outer /**< */,
+ xcb_render_fixed_t inner_radius /**< */,
+ xcb_render_fixed_t outer_radius /**< */,
+ uint32_t num_stops /**< */,
+ const xcb_render_fixed_t *stops /**< */,
+ const xcb_render_color_t *colors /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 6,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CREATE_RADIAL_GRADIENT,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[8];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_create_radial_gradient_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.inner = inner;
+ xcb_out.outer = outer;
+ xcb_out.inner_radius = inner_radius;
+ xcb_out.outer_radius = outer_radius;
+ xcb_out.num_stops = num_stops;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) stops;
+ xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_parts[6].iov_base = (char *) colors;
+ xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t);
+ xcb_parts[7].iov_base = 0;
+ xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_radial_gradient
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_pointfix_t inner
+ ** @param xcb_render_pointfix_t outer
+ ** @param xcb_render_fixed_t inner_radius
+ ** @param xcb_render_fixed_t outer_radius
+ ** @param uint32_t num_stops
+ ** @param const xcb_render_fixed_t *stops
+ ** @param const xcb_render_color_t *colors
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_radial_gradient (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_pointfix_t inner /**< */,
+ xcb_render_pointfix_t outer /**< */,
+ xcb_render_fixed_t inner_radius /**< */,
+ xcb_render_fixed_t outer_radius /**< */,
+ uint32_t num_stops /**< */,
+ const xcb_render_fixed_t *stops /**< */,
+ const xcb_render_color_t *colors /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 6,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CREATE_RADIAL_GRADIENT,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[8];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_create_radial_gradient_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.inner = inner;
+ xcb_out.outer = outer;
+ xcb_out.inner_radius = inner_radius;
+ xcb_out.outer_radius = outer_radius;
+ xcb_out.num_stops = num_stops;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) stops;
+ xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_parts[6].iov_base = (char *) colors;
+ xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t);
+ xcb_parts[7].iov_base = 0;
+ xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_conical_gradient_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_pointfix_t center
+ ** @param xcb_render_fixed_t angle
+ ** @param uint32_t num_stops
+ ** @param const xcb_render_fixed_t *stops
+ ** @param const xcb_render_color_t *colors
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_conical_gradient_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_pointfix_t center /**< */,
+ xcb_render_fixed_t angle /**< */,
+ uint32_t num_stops /**< */,
+ const xcb_render_fixed_t *stops /**< */,
+ const xcb_render_color_t *colors /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 6,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CREATE_CONICAL_GRADIENT,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[8];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_create_conical_gradient_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.center = center;
+ xcb_out.angle = angle;
+ xcb_out.num_stops = num_stops;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) stops;
+ xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_parts[6].iov_base = (char *) colors;
+ xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t);
+ xcb_parts[7].iov_base = 0;
+ xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_render_create_conical_gradient
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_render_pointfix_t center
+ ** @param xcb_render_fixed_t angle
+ ** @param uint32_t num_stops
+ ** @param const xcb_render_fixed_t *stops
+ ** @param const xcb_render_color_t *colors
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_render_create_conical_gradient (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_render_pointfix_t center /**< */,
+ xcb_render_fixed_t angle /**< */,
+ uint32_t num_stops /**< */,
+ const xcb_render_fixed_t *stops /**< */,
+ const xcb_render_color_t *colors /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 6,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CREATE_CONICAL_GRADIENT,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[8];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_create_conical_gradient_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.center = center;
+ xcb_out.angle = angle;
+ xcb_out.num_stops = num_stops;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) stops;
+ xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_parts[6].iov_base = (char *) colors;
+ xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t);
+ xcb_parts[7].iov_base = 0;
+ xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
diff --git a/src/3rdparty/xcb/libxcb/shape.c b/src/3rdparty/xcb/libxcb/shape.c
new file mode 100644
index 0000000000..948522581e
--- /dev/null
+++ b/src/3rdparty/xcb/libxcb/shape.c
@@ -0,0 +1,1017 @@
+/*
+ * This file generated automatically from shape.xml by c_client.py.
+ * Edit at your peril.
+ */
+
+#include <string.h>
+#include <assert.h>
+#include "xcbext.h"
+#include "shape.h"
+#include "xproto.h"
+
+xcb_extension_t xcb_shape_id = { "SHAPE", 0 };
+
+
+/*****************************************************************************
+ **
+ ** void xcb_shape_op_next
+ **
+ ** @param xcb_shape_op_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_shape_op_next (xcb_shape_op_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_shape_op_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_shape_op_end
+ **
+ ** @param xcb_shape_op_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_shape_op_end (xcb_shape_op_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_shape_kind_next
+ **
+ ** @param xcb_shape_kind_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_shape_kind_next (xcb_shape_kind_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_shape_kind_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_shape_kind_end
+ **
+ ** @param xcb_shape_kind_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_shape_kind_end (xcb_shape_kind_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_shape_query_version_cookie_t xcb_shape_query_version
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_shape_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shape_query_version_cookie_t
+xcb_shape_query_version (xcb_connection_t *c /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shape_id,
+ /* opcode */ XCB_SHAPE_QUERY_VERSION,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_shape_query_version_cookie_t xcb_ret;
+ xcb_shape_query_version_request_t xcb_out;
+
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_shape_query_version_cookie_t xcb_shape_query_version_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_shape_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shape_query_version_cookie_t
+xcb_shape_query_version_unchecked (xcb_connection_t *c /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shape_id,
+ /* opcode */ XCB_SHAPE_QUERY_VERSION,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_shape_query_version_cookie_t xcb_ret;
+ xcb_shape_query_version_request_t xcb_out;
+
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_shape_query_version_reply_t * xcb_shape_query_version_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_query_version_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_shape_query_version_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_shape_query_version_reply_t *
+xcb_shape_query_version_reply (xcb_connection_t *c /**< */,
+ xcb_shape_query_version_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_shape_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_rectangles_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_op_t operation
+ ** @param xcb_shape_kind_t destination_kind
+ ** @param uint8_t ordering
+ ** @param xcb_window_t destination_window
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @param uint32_t rectangles_len
+ ** @param const xcb_rectangle_t *rectangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_rectangles_checked (xcb_connection_t *c /**< */,
+ xcb_shape_op_t operation /**< */,
+ xcb_shape_kind_t destination_kind /**< */,
+ uint8_t ordering /**< */,
+ xcb_window_t destination_window /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */,
+ uint32_t rectangles_len /**< */,
+ const xcb_rectangle_t *rectangles /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_shape_id,
+ /* opcode */ XCB_SHAPE_RECTANGLES,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_shape_rectangles_request_t xcb_out;
+
+ xcb_out.operation = operation;
+ xcb_out.destination_kind = destination_kind;
+ xcb_out.ordering = ordering;
+ xcb_out.pad0 = 0;
+ xcb_out.destination_window = destination_window;
+ xcb_out.x_offset = x_offset;
+ xcb_out.y_offset = y_offset;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) rectangles;
+ xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_rectangles
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_op_t operation
+ ** @param xcb_shape_kind_t destination_kind
+ ** @param uint8_t ordering
+ ** @param xcb_window_t destination_window
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @param uint32_t rectangles_len
+ ** @param const xcb_rectangle_t *rectangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_rectangles (xcb_connection_t *c /**< */,
+ xcb_shape_op_t operation /**< */,
+ xcb_shape_kind_t destination_kind /**< */,
+ uint8_t ordering /**< */,
+ xcb_window_t destination_window /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */,
+ uint32_t rectangles_len /**< */,
+ const xcb_rectangle_t *rectangles /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_shape_id,
+ /* opcode */ XCB_SHAPE_RECTANGLES,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_shape_rectangles_request_t xcb_out;
+
+ xcb_out.operation = operation;
+ xcb_out.destination_kind = destination_kind;
+ xcb_out.ordering = ordering;
+ xcb_out.pad0 = 0;
+ xcb_out.destination_window = destination_window;
+ xcb_out.x_offset = x_offset;
+ xcb_out.y_offset = y_offset;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) rectangles;
+ xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_mask_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_op_t operation
+ ** @param xcb_shape_kind_t destination_kind
+ ** @param xcb_window_t destination_window
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @param xcb_pixmap_t source_bitmap
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_mask_checked (xcb_connection_t *c /**< */,
+ xcb_shape_op_t operation /**< */,
+ xcb_shape_kind_t destination_kind /**< */,
+ xcb_window_t destination_window /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */,
+ xcb_pixmap_t source_bitmap /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shape_id,
+ /* opcode */ XCB_SHAPE_MASK,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_shape_mask_request_t xcb_out;
+
+ xcb_out.operation = operation;
+ xcb_out.destination_kind = destination_kind;
+ memset(xcb_out.pad0, 0, 2);
+ xcb_out.destination_window = destination_window;
+ xcb_out.x_offset = x_offset;
+ xcb_out.y_offset = y_offset;
+ xcb_out.source_bitmap = source_bitmap;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_mask
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_op_t operation
+ ** @param xcb_shape_kind_t destination_kind
+ ** @param xcb_window_t destination_window
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @param xcb_pixmap_t source_bitmap
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_mask (xcb_connection_t *c /**< */,
+ xcb_shape_op_t operation /**< */,
+ xcb_shape_kind_t destination_kind /**< */,
+ xcb_window_t destination_window /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */,
+ xcb_pixmap_t source_bitmap /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shape_id,
+ /* opcode */ XCB_SHAPE_MASK,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_shape_mask_request_t xcb_out;
+
+ xcb_out.operation = operation;
+ xcb_out.destination_kind = destination_kind;
+ memset(xcb_out.pad0, 0, 2);
+ xcb_out.destination_window = destination_window;
+ xcb_out.x_offset = x_offset;
+ xcb_out.y_offset = y_offset;
+ xcb_out.source_bitmap = source_bitmap;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_combine_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_op_t operation
+ ** @param xcb_shape_kind_t destination_kind
+ ** @param xcb_shape_kind_t source_kind
+ ** @param xcb_window_t destination_window
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @param xcb_window_t source_window
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_combine_checked (xcb_connection_t *c /**< */,
+ xcb_shape_op_t operation /**< */,
+ xcb_shape_kind_t destination_kind /**< */,
+ xcb_shape_kind_t source_kind /**< */,
+ xcb_window_t destination_window /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */,
+ xcb_window_t source_window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shape_id,
+ /* opcode */ XCB_SHAPE_COMBINE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_shape_combine_request_t xcb_out;
+
+ xcb_out.operation = operation;
+ xcb_out.destination_kind = destination_kind;
+ xcb_out.source_kind = source_kind;
+ xcb_out.pad0 = 0;
+ xcb_out.destination_window = destination_window;
+ xcb_out.x_offset = x_offset;
+ xcb_out.y_offset = y_offset;
+ xcb_out.source_window = source_window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_combine
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_op_t operation
+ ** @param xcb_shape_kind_t destination_kind
+ ** @param xcb_shape_kind_t source_kind
+ ** @param xcb_window_t destination_window
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @param xcb_window_t source_window
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_combine (xcb_connection_t *c /**< */,
+ xcb_shape_op_t operation /**< */,
+ xcb_shape_kind_t destination_kind /**< */,
+ xcb_shape_kind_t source_kind /**< */,
+ xcb_window_t destination_window /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */,
+ xcb_window_t source_window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shape_id,
+ /* opcode */ XCB_SHAPE_COMBINE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_shape_combine_request_t xcb_out;
+
+ xcb_out.operation = operation;
+ xcb_out.destination_kind = destination_kind;
+ xcb_out.source_kind = source_kind;
+ xcb_out.pad0 = 0;
+ xcb_out.destination_window = destination_window;
+ xcb_out.x_offset = x_offset;
+ xcb_out.y_offset = y_offset;
+ xcb_out.source_window = source_window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_offset_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_kind_t destination_kind
+ ** @param xcb_window_t destination_window
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_offset_checked (xcb_connection_t *c /**< */,
+ xcb_shape_kind_t destination_kind /**< */,
+ xcb_window_t destination_window /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shape_id,
+ /* opcode */ XCB_SHAPE_OFFSET,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_shape_offset_request_t xcb_out;
+
+ xcb_out.destination_kind = destination_kind;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.destination_window = destination_window;
+ xcb_out.x_offset = x_offset;
+ xcb_out.y_offset = y_offset;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_offset
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_kind_t destination_kind
+ ** @param xcb_window_t destination_window
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_offset (xcb_connection_t *c /**< */,
+ xcb_shape_kind_t destination_kind /**< */,
+ xcb_window_t destination_window /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shape_id,
+ /* opcode */ XCB_SHAPE_OFFSET,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_shape_offset_request_t xcb_out;
+
+ xcb_out.destination_kind = destination_kind;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.destination_window = destination_window;
+ xcb_out.x_offset = x_offset;
+ xcb_out.y_offset = y_offset;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_shape_query_extents_cookie_t xcb_shape_query_extents
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t destination_window
+ ** @returns xcb_shape_query_extents_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shape_query_extents_cookie_t
+xcb_shape_query_extents (xcb_connection_t *c /**< */,
+ xcb_window_t destination_window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shape_id,
+ /* opcode */ XCB_SHAPE_QUERY_EXTENTS,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_shape_query_extents_cookie_t xcb_ret;
+ xcb_shape_query_extents_request_t xcb_out;
+
+ xcb_out.destination_window = destination_window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_shape_query_extents_cookie_t xcb_shape_query_extents_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t destination_window
+ ** @returns xcb_shape_query_extents_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shape_query_extents_cookie_t
+xcb_shape_query_extents_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t destination_window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shape_id,
+ /* opcode */ XCB_SHAPE_QUERY_EXTENTS,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_shape_query_extents_cookie_t xcb_ret;
+ xcb_shape_query_extents_request_t xcb_out;
+
+ xcb_out.destination_window = destination_window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_shape_query_extents_reply_t * xcb_shape_query_extents_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_query_extents_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_shape_query_extents_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_shape_query_extents_reply_t *
+xcb_shape_query_extents_reply (xcb_connection_t *c /**< */,
+ xcb_shape_query_extents_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_shape_query_extents_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_select_input_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t destination_window
+ ** @param uint8_t enable
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_select_input_checked (xcb_connection_t *c /**< */,
+ xcb_window_t destination_window /**< */,
+ uint8_t enable /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shape_id,
+ /* opcode */ XCB_SHAPE_SELECT_INPUT,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_shape_select_input_request_t xcb_out;
+
+ xcb_out.destination_window = destination_window;
+ xcb_out.enable = enable;
+ memset(xcb_out.pad0, 0, 3);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shape_select_input
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t destination_window
+ ** @param uint8_t enable
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shape_select_input (xcb_connection_t *c /**< */,
+ xcb_window_t destination_window /**< */,
+ uint8_t enable /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shape_id,
+ /* opcode */ XCB_SHAPE_SELECT_INPUT,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_shape_select_input_request_t xcb_out;
+
+ xcb_out.destination_window = destination_window;
+ xcb_out.enable = enable;
+ memset(xcb_out.pad0, 0, 3);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_shape_input_selected_cookie_t xcb_shape_input_selected
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t destination_window
+ ** @returns xcb_shape_input_selected_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shape_input_selected_cookie_t
+xcb_shape_input_selected (xcb_connection_t *c /**< */,
+ xcb_window_t destination_window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shape_id,
+ /* opcode */ XCB_SHAPE_INPUT_SELECTED,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_shape_input_selected_cookie_t xcb_ret;
+ xcb_shape_input_selected_request_t xcb_out;
+
+ xcb_out.destination_window = destination_window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_shape_input_selected_cookie_t xcb_shape_input_selected_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t destination_window
+ ** @returns xcb_shape_input_selected_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shape_input_selected_cookie_t
+xcb_shape_input_selected_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t destination_window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shape_id,
+ /* opcode */ XCB_SHAPE_INPUT_SELECTED,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_shape_input_selected_cookie_t xcb_ret;
+ xcb_shape_input_selected_request_t xcb_out;
+
+ xcb_out.destination_window = destination_window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_shape_input_selected_reply_t * xcb_shape_input_selected_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_input_selected_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_shape_input_selected_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_shape_input_selected_reply_t *
+xcb_shape_input_selected_reply (xcb_connection_t *c /**< */,
+ xcb_shape_input_selected_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_shape_input_selected_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_shape_get_rectangles_cookie_t xcb_shape_get_rectangles
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_shape_kind_t source_kind
+ ** @returns xcb_shape_get_rectangles_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shape_get_rectangles_cookie_t
+xcb_shape_get_rectangles (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_shape_kind_t source_kind /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shape_id,
+ /* opcode */ XCB_SHAPE_GET_RECTANGLES,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_shape_get_rectangles_cookie_t xcb_ret;
+ xcb_shape_get_rectangles_request_t xcb_out;
+
+ xcb_out.window = window;
+ xcb_out.source_kind = source_kind;
+ memset(xcb_out.pad0, 0, 3);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_shape_get_rectangles_cookie_t xcb_shape_get_rectangles_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_shape_kind_t source_kind
+ ** @returns xcb_shape_get_rectangles_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shape_get_rectangles_cookie_t
+xcb_shape_get_rectangles_unchecked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_shape_kind_t source_kind /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shape_id,
+ /* opcode */ XCB_SHAPE_GET_RECTANGLES,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_shape_get_rectangles_cookie_t xcb_ret;
+ xcb_shape_get_rectangles_request_t xcb_out;
+
+ xcb_out.window = window;
+ xcb_out.source_kind = source_kind;
+ memset(xcb_out.pad0, 0, 3);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_rectangle_t * xcb_shape_get_rectangles_rectangles
+ **
+ ** @param const xcb_shape_get_rectangles_reply_t *R
+ ** @returns xcb_rectangle_t *
+ **
+ *****************************************************************************/
+
+xcb_rectangle_t *
+xcb_shape_get_rectangles_rectangles (const xcb_shape_get_rectangles_reply_t *R /**< */)
+{
+ return (xcb_rectangle_t *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_shape_get_rectangles_rectangles_length
+ **
+ ** @param const xcb_shape_get_rectangles_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_shape_get_rectangles_rectangles_length (const xcb_shape_get_rectangles_reply_t *R /**< */)
+{
+ return R->rectangles_len;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_rectangle_iterator_t xcb_shape_get_rectangles_rectangles_iterator
+ **
+ ** @param const xcb_shape_get_rectangles_reply_t *R
+ ** @returns xcb_rectangle_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_rectangle_iterator_t
+xcb_shape_get_rectangles_rectangles_iterator (const xcb_shape_get_rectangles_reply_t *R /**< */)
+{
+ xcb_rectangle_iterator_t i;
+ i.data = (xcb_rectangle_t *) (R + 1);
+ i.rem = R->rectangles_len;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_shape_get_rectangles_reply_t * xcb_shape_get_rectangles_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shape_get_rectangles_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_shape_get_rectangles_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_shape_get_rectangles_reply_t *
+xcb_shape_get_rectangles_reply (xcb_connection_t *c /**< */,
+ xcb_shape_get_rectangles_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_shape_get_rectangles_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
diff --git a/src/3rdparty/xcb/libxcb/shm.c b/src/3rdparty/xcb/libxcb/shm.c
new file mode 100644
index 0000000000..c1637a8654
--- /dev/null
+++ b/src/3rdparty/xcb/libxcb/shm.c
@@ -0,0 +1,705 @@
+/*
+ * This file generated automatically from shm.xml by c_client.py.
+ * Edit at your peril.
+ */
+
+#include <string.h>
+#include <assert.h>
+#include "xcbext.h"
+#include "shm.h"
+#include "xproto.h"
+
+xcb_extension_t xcb_shm_id = { "MIT-SHM", 0 };
+
+
+/*****************************************************************************
+ **
+ ** void xcb_shm_seg_next
+ **
+ ** @param xcb_shm_seg_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_shm_seg_next (xcb_shm_seg_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_shm_seg_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_shm_seg_end
+ **
+ ** @param xcb_shm_seg_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_shm_seg_end (xcb_shm_seg_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_shm_query_version_cookie_t xcb_shm_query_version
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_shm_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shm_query_version_cookie_t
+xcb_shm_query_version (xcb_connection_t *c /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shm_id,
+ /* opcode */ XCB_SHM_QUERY_VERSION,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_shm_query_version_cookie_t xcb_ret;
+ xcb_shm_query_version_request_t xcb_out;
+
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_shm_query_version_cookie_t xcb_shm_query_version_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_shm_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shm_query_version_cookie_t
+xcb_shm_query_version_unchecked (xcb_connection_t *c /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shm_id,
+ /* opcode */ XCB_SHM_QUERY_VERSION,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_shm_query_version_cookie_t xcb_ret;
+ xcb_shm_query_version_request_t xcb_out;
+
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_shm_query_version_reply_t * xcb_shm_query_version_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shm_query_version_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_shm_query_version_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_shm_query_version_reply_t *
+xcb_shm_query_version_reply (xcb_connection_t *c /**< */,
+ xcb_shm_query_version_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_shm_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shm_attach_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shm_seg_t shmseg
+ ** @param uint32_t shmid
+ ** @param uint8_t read_only
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shm_attach_checked (xcb_connection_t *c /**< */,
+ xcb_shm_seg_t shmseg /**< */,
+ uint32_t shmid /**< */,
+ uint8_t read_only /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shm_id,
+ /* opcode */ XCB_SHM_ATTACH,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_shm_attach_request_t xcb_out;
+
+ xcb_out.shmseg = shmseg;
+ xcb_out.shmid = shmid;
+ xcb_out.read_only = read_only;
+ memset(xcb_out.pad0, 0, 3);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shm_attach
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shm_seg_t shmseg
+ ** @param uint32_t shmid
+ ** @param uint8_t read_only
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shm_attach (xcb_connection_t *c /**< */,
+ xcb_shm_seg_t shmseg /**< */,
+ uint32_t shmid /**< */,
+ uint8_t read_only /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shm_id,
+ /* opcode */ XCB_SHM_ATTACH,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_shm_attach_request_t xcb_out;
+
+ xcb_out.shmseg = shmseg;
+ xcb_out.shmid = shmid;
+ xcb_out.read_only = read_only;
+ memset(xcb_out.pad0, 0, 3);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shm_detach_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shm_seg_t shmseg
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shm_detach_checked (xcb_connection_t *c /**< */,
+ xcb_shm_seg_t shmseg /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shm_id,
+ /* opcode */ XCB_SHM_DETACH,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_shm_detach_request_t xcb_out;
+
+ xcb_out.shmseg = shmseg;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shm_detach
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shm_seg_t shmseg
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shm_detach (xcb_connection_t *c /**< */,
+ xcb_shm_seg_t shmseg /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shm_id,
+ /* opcode */ XCB_SHM_DETACH,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_shm_detach_request_t xcb_out;
+
+ xcb_out.shmseg = shmseg;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shm_put_image_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_drawable_t drawable
+ ** @param xcb_gcontext_t gc
+ ** @param uint16_t total_width
+ ** @param uint16_t total_height
+ ** @param uint16_t src_x
+ ** @param uint16_t src_y
+ ** @param uint16_t src_width
+ ** @param uint16_t src_height
+ ** @param int16_t dst_x
+ ** @param int16_t dst_y
+ ** @param uint8_t depth
+ ** @param uint8_t format
+ ** @param uint8_t send_event
+ ** @param xcb_shm_seg_t shmseg
+ ** @param uint32_t offset
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shm_put_image_checked (xcb_connection_t *c /**< */,
+ xcb_drawable_t drawable /**< */,
+ xcb_gcontext_t gc /**< */,
+ uint16_t total_width /**< */,
+ uint16_t total_height /**< */,
+ uint16_t src_x /**< */,
+ uint16_t src_y /**< */,
+ uint16_t src_width /**< */,
+ uint16_t src_height /**< */,
+ int16_t dst_x /**< */,
+ int16_t dst_y /**< */,
+ uint8_t depth /**< */,
+ uint8_t format /**< */,
+ uint8_t send_event /**< */,
+ xcb_shm_seg_t shmseg /**< */,
+ uint32_t offset /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shm_id,
+ /* opcode */ XCB_SHM_PUT_IMAGE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_shm_put_image_request_t xcb_out;
+
+ xcb_out.drawable = drawable;
+ xcb_out.gc = gc;
+ xcb_out.total_width = total_width;
+ xcb_out.total_height = total_height;
+ xcb_out.src_x = src_x;
+ xcb_out.src_y = src_y;
+ xcb_out.src_width = src_width;
+ xcb_out.src_height = src_height;
+ xcb_out.dst_x = dst_x;
+ xcb_out.dst_y = dst_y;
+ xcb_out.depth = depth;
+ xcb_out.format = format;
+ xcb_out.send_event = send_event;
+ xcb_out.pad0 = 0;
+ xcb_out.shmseg = shmseg;
+ xcb_out.offset = offset;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shm_put_image
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_drawable_t drawable
+ ** @param xcb_gcontext_t gc
+ ** @param uint16_t total_width
+ ** @param uint16_t total_height
+ ** @param uint16_t src_x
+ ** @param uint16_t src_y
+ ** @param uint16_t src_width
+ ** @param uint16_t src_height
+ ** @param int16_t dst_x
+ ** @param int16_t dst_y
+ ** @param uint8_t depth
+ ** @param uint8_t format
+ ** @param uint8_t send_event
+ ** @param xcb_shm_seg_t shmseg
+ ** @param uint32_t offset
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shm_put_image (xcb_connection_t *c /**< */,
+ xcb_drawable_t drawable /**< */,
+ xcb_gcontext_t gc /**< */,
+ uint16_t total_width /**< */,
+ uint16_t total_height /**< */,
+ uint16_t src_x /**< */,
+ uint16_t src_y /**< */,
+ uint16_t src_width /**< */,
+ uint16_t src_height /**< */,
+ int16_t dst_x /**< */,
+ int16_t dst_y /**< */,
+ uint8_t depth /**< */,
+ uint8_t format /**< */,
+ uint8_t send_event /**< */,
+ xcb_shm_seg_t shmseg /**< */,
+ uint32_t offset /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shm_id,
+ /* opcode */ XCB_SHM_PUT_IMAGE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_shm_put_image_request_t xcb_out;
+
+ xcb_out.drawable = drawable;
+ xcb_out.gc = gc;
+ xcb_out.total_width = total_width;
+ xcb_out.total_height = total_height;
+ xcb_out.src_x = src_x;
+ xcb_out.src_y = src_y;
+ xcb_out.src_width = src_width;
+ xcb_out.src_height = src_height;
+ xcb_out.dst_x = dst_x;
+ xcb_out.dst_y = dst_y;
+ xcb_out.depth = depth;
+ xcb_out.format = format;
+ xcb_out.send_event = send_event;
+ xcb_out.pad0 = 0;
+ xcb_out.shmseg = shmseg;
+ xcb_out.offset = offset;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_shm_get_image_cookie_t xcb_shm_get_image
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_drawable_t drawable
+ ** @param int16_t x
+ ** @param int16_t y
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @param uint32_t plane_mask
+ ** @param uint8_t format
+ ** @param xcb_shm_seg_t shmseg
+ ** @param uint32_t offset
+ ** @returns xcb_shm_get_image_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shm_get_image_cookie_t
+xcb_shm_get_image (xcb_connection_t *c /**< */,
+ xcb_drawable_t drawable /**< */,
+ int16_t x /**< */,
+ int16_t y /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */,
+ uint32_t plane_mask /**< */,
+ uint8_t format /**< */,
+ xcb_shm_seg_t shmseg /**< */,
+ uint32_t offset /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shm_id,
+ /* opcode */ XCB_SHM_GET_IMAGE,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_shm_get_image_cookie_t xcb_ret;
+ xcb_shm_get_image_request_t xcb_out;
+
+ xcb_out.drawable = drawable;
+ xcb_out.x = x;
+ xcb_out.y = y;
+ xcb_out.width = width;
+ xcb_out.height = height;
+ xcb_out.plane_mask = plane_mask;
+ xcb_out.format = format;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.shmseg = shmseg;
+ xcb_out.offset = offset;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_shm_get_image_cookie_t xcb_shm_get_image_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_drawable_t drawable
+ ** @param int16_t x
+ ** @param int16_t y
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @param uint32_t plane_mask
+ ** @param uint8_t format
+ ** @param xcb_shm_seg_t shmseg
+ ** @param uint32_t offset
+ ** @returns xcb_shm_get_image_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_shm_get_image_cookie_t
+xcb_shm_get_image_unchecked (xcb_connection_t *c /**< */,
+ xcb_drawable_t drawable /**< */,
+ int16_t x /**< */,
+ int16_t y /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */,
+ uint32_t plane_mask /**< */,
+ uint8_t format /**< */,
+ xcb_shm_seg_t shmseg /**< */,
+ uint32_t offset /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shm_id,
+ /* opcode */ XCB_SHM_GET_IMAGE,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_shm_get_image_cookie_t xcb_ret;
+ xcb_shm_get_image_request_t xcb_out;
+
+ xcb_out.drawable = drawable;
+ xcb_out.x = x;
+ xcb_out.y = y;
+ xcb_out.width = width;
+ xcb_out.height = height;
+ xcb_out.plane_mask = plane_mask;
+ xcb_out.format = format;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.shmseg = shmseg;
+ xcb_out.offset = offset;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_shm_get_image_reply_t * xcb_shm_get_image_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_shm_get_image_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_shm_get_image_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_shm_get_image_reply_t *
+xcb_shm_get_image_reply (xcb_connection_t *c /**< */,
+ xcb_shm_get_image_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_shm_get_image_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shm_create_pixmap_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_pixmap_t pid
+ ** @param xcb_drawable_t drawable
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @param uint8_t depth
+ ** @param xcb_shm_seg_t shmseg
+ ** @param uint32_t offset
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shm_create_pixmap_checked (xcb_connection_t *c /**< */,
+ xcb_pixmap_t pid /**< */,
+ xcb_drawable_t drawable /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */,
+ uint8_t depth /**< */,
+ xcb_shm_seg_t shmseg /**< */,
+ uint32_t offset /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shm_id,
+ /* opcode */ XCB_SHM_CREATE_PIXMAP,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_shm_create_pixmap_request_t xcb_out;
+
+ xcb_out.pid = pid;
+ xcb_out.drawable = drawable;
+ xcb_out.width = width;
+ xcb_out.height = height;
+ xcb_out.depth = depth;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.shmseg = shmseg;
+ xcb_out.offset = offset;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_shm_create_pixmap
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_pixmap_t pid
+ ** @param xcb_drawable_t drawable
+ ** @param uint16_t width
+ ** @param uint16_t height
+ ** @param uint8_t depth
+ ** @param xcb_shm_seg_t shmseg
+ ** @param uint32_t offset
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_shm_create_pixmap (xcb_connection_t *c /**< */,
+ xcb_pixmap_t pid /**< */,
+ xcb_drawable_t drawable /**< */,
+ uint16_t width /**< */,
+ uint16_t height /**< */,
+ uint8_t depth /**< */,
+ xcb_shm_seg_t shmseg /**< */,
+ uint32_t offset /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_shm_id,
+ /* opcode */ XCB_SHM_CREATE_PIXMAP,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_shm_create_pixmap_request_t xcb_out;
+
+ xcb_out.pid = pid;
+ xcb_out.drawable = drawable;
+ xcb_out.width = width;
+ xcb_out.height = height;
+ xcb_out.depth = depth;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.shmseg = shmseg;
+ xcb_out.offset = offset;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
diff --git a/src/3rdparty/xcb/libxcb/sync.c b/src/3rdparty/xcb/libxcb/sync.c
new file mode 100644
index 0000000000..408a263d2b
--- /dev/null
+++ b/src/3rdparty/xcb/libxcb/sync.c
@@ -0,0 +1,1511 @@
+/*
+ * This file generated automatically from sync.xml by c_client.py.
+ * Edit at your peril.
+ */
+
+#include <string.h>
+#include <assert.h>
+#include "xcbext.h"
+#include "sync.h"
+#include "xproto.h"
+
+xcb_extension_t xcb_sync_id = { "SYNC", 0 };
+
+
+/*****************************************************************************
+ **
+ ** void xcb_sync_alarm_next
+ **
+ ** @param xcb_sync_alarm_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_sync_alarm_next (xcb_sync_alarm_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_sync_alarm_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_sync_alarm_end
+ **
+ ** @param xcb_sync_alarm_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_sync_alarm_end (xcb_sync_alarm_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_sync_counter_next
+ **
+ ** @param xcb_sync_counter_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_sync_counter_next (xcb_sync_counter_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_sync_counter_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_sync_counter_end
+ **
+ ** @param xcb_sync_counter_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_sync_counter_end (xcb_sync_counter_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_sync_int64_next
+ **
+ ** @param xcb_sync_int64_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_sync_int64_next (xcb_sync_int64_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_sync_int64_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_sync_int64_end
+ **
+ ** @param xcb_sync_int64_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_sync_int64_end (xcb_sync_int64_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** char * xcb_sync_systemcounter_name
+ **
+ ** @param const xcb_sync_systemcounter_t *R
+ ** @returns char *
+ **
+ *****************************************************************************/
+
+char *
+xcb_sync_systemcounter_name (const xcb_sync_systemcounter_t *R /**< */)
+{
+ return (char *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_sync_systemcounter_name_length
+ **
+ ** @param const xcb_sync_systemcounter_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_sync_systemcounter_name_length (const xcb_sync_systemcounter_t *R /**< */)
+{
+ return R->name_len;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_sync_systemcounter_name_end
+ **
+ ** @param const xcb_sync_systemcounter_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_sync_systemcounter_name_end (const xcb_sync_systemcounter_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ i.data = ((char *) (R + 1)) + (R->name_len);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_sync_systemcounter_next
+ **
+ ** @param xcb_sync_systemcounter_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_sync_systemcounter_next (xcb_sync_systemcounter_iterator_t *i /**< */)
+{
+ xcb_sync_systemcounter_t *R = i->data;
+ xcb_generic_iterator_t child = xcb_sync_systemcounter_name_end(R);
+ --i->rem;
+ i->data = (xcb_sync_systemcounter_t *) child.data;
+ i->index = child.index;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_sync_systemcounter_end
+ **
+ ** @param xcb_sync_systemcounter_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_sync_systemcounter_end (xcb_sync_systemcounter_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ while(i.rem > 0)
+ xcb_sync_systemcounter_next(&i);
+ ret.data = i.data;
+ ret.rem = i.rem;
+ ret.index = i.index;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_sync_trigger_next
+ **
+ ** @param xcb_sync_trigger_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_sync_trigger_next (xcb_sync_trigger_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_sync_trigger_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_sync_trigger_end
+ **
+ ** @param xcb_sync_trigger_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_sync_trigger_end (xcb_sync_trigger_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_sync_waitcondition_next
+ **
+ ** @param xcb_sync_waitcondition_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_sync_waitcondition_next (xcb_sync_waitcondition_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_sync_waitcondition_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_sync_waitcondition_end
+ **
+ ** @param xcb_sync_waitcondition_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_sync_waitcondition_end (xcb_sync_waitcondition_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_sync_initialize_cookie_t xcb_sync_initialize
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t desired_major_version
+ ** @param uint8_t desired_minor_version
+ ** @returns xcb_sync_initialize_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_initialize_cookie_t
+xcb_sync_initialize (xcb_connection_t *c /**< */,
+ uint8_t desired_major_version /**< */,
+ uint8_t desired_minor_version /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_INITIALIZE,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_sync_initialize_cookie_t xcb_ret;
+ xcb_sync_initialize_request_t xcb_out;
+
+ xcb_out.desired_major_version = desired_major_version;
+ xcb_out.desired_minor_version = desired_minor_version;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_sync_initialize_cookie_t xcb_sync_initialize_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t desired_major_version
+ ** @param uint8_t desired_minor_version
+ ** @returns xcb_sync_initialize_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_initialize_cookie_t
+xcb_sync_initialize_unchecked (xcb_connection_t *c /**< */,
+ uint8_t desired_major_version /**< */,
+ uint8_t desired_minor_version /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_INITIALIZE,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_sync_initialize_cookie_t xcb_ret;
+ xcb_sync_initialize_request_t xcb_out;
+
+ xcb_out.desired_major_version = desired_major_version;
+ xcb_out.desired_minor_version = desired_minor_version;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_sync_initialize_reply_t * xcb_sync_initialize_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_initialize_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_sync_initialize_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_sync_initialize_reply_t *
+xcb_sync_initialize_reply (xcb_connection_t *c /**< */,
+ xcb_sync_initialize_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_sync_initialize_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_sync_list_system_counters_cookie_t xcb_sync_list_system_counters
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_sync_list_system_counters_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_list_system_counters_cookie_t
+xcb_sync_list_system_counters (xcb_connection_t *c /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_LIST_SYSTEM_COUNTERS,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_sync_list_system_counters_cookie_t xcb_ret;
+ xcb_sync_list_system_counters_request_t xcb_out;
+
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_sync_list_system_counters_cookie_t xcb_sync_list_system_counters_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_sync_list_system_counters_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_list_system_counters_cookie_t
+xcb_sync_list_system_counters_unchecked (xcb_connection_t *c /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_LIST_SYSTEM_COUNTERS,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_sync_list_system_counters_cookie_t xcb_ret;
+ xcb_sync_list_system_counters_request_t xcb_out;
+
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_sync_list_system_counters_counters_length
+ **
+ ** @param const xcb_sync_list_system_counters_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_sync_list_system_counters_counters_length (const xcb_sync_list_system_counters_reply_t *R /**< */)
+{
+ return R->counters_len;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_sync_systemcounter_iterator_t xcb_sync_list_system_counters_counters_iterator
+ **
+ ** @param const xcb_sync_list_system_counters_reply_t *R
+ ** @returns xcb_sync_systemcounter_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_sync_systemcounter_iterator_t
+xcb_sync_list_system_counters_counters_iterator (const xcb_sync_list_system_counters_reply_t *R /**< */)
+{
+ xcb_sync_systemcounter_iterator_t i;
+ i.data = (xcb_sync_systemcounter_t *) (R + 1);
+ i.rem = R->counters_len;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_sync_list_system_counters_reply_t * xcb_sync_list_system_counters_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_list_system_counters_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_sync_list_system_counters_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_sync_list_system_counters_reply_t *
+xcb_sync_list_system_counters_reply (xcb_connection_t *c /**< */,
+ xcb_sync_list_system_counters_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_sync_list_system_counters_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_create_counter_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t id
+ ** @param xcb_sync_int64_t initial_value
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_create_counter_checked (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t id /**< */,
+ xcb_sync_int64_t initial_value /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_CREATE_COUNTER,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_sync_create_counter_request_t xcb_out;
+
+ xcb_out.id = id;
+ xcb_out.initial_value = initial_value;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_create_counter
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t id
+ ** @param xcb_sync_int64_t initial_value
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_create_counter (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t id /**< */,
+ xcb_sync_int64_t initial_value /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_CREATE_COUNTER,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_sync_create_counter_request_t xcb_out;
+
+ xcb_out.id = id;
+ xcb_out.initial_value = initial_value;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_destroy_counter_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t counter
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_destroy_counter_checked (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t counter /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_DESTROY_COUNTER,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_sync_destroy_counter_request_t xcb_out;
+
+ xcb_out.counter = counter;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_destroy_counter
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t counter
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_destroy_counter (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t counter /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_DESTROY_COUNTER,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_sync_destroy_counter_request_t xcb_out;
+
+ xcb_out.counter = counter;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_sync_query_counter_cookie_t xcb_sync_query_counter
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t counter
+ ** @returns xcb_sync_query_counter_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_query_counter_cookie_t
+xcb_sync_query_counter (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t counter /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_QUERY_COUNTER,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_sync_query_counter_cookie_t xcb_ret;
+ xcb_sync_query_counter_request_t xcb_out;
+
+ xcb_out.counter = counter;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_sync_query_counter_cookie_t xcb_sync_query_counter_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t counter
+ ** @returns xcb_sync_query_counter_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_query_counter_cookie_t
+xcb_sync_query_counter_unchecked (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t counter /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_QUERY_COUNTER,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_sync_query_counter_cookie_t xcb_ret;
+ xcb_sync_query_counter_request_t xcb_out;
+
+ xcb_out.counter = counter;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_sync_query_counter_reply_t * xcb_sync_query_counter_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_query_counter_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_sync_query_counter_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_sync_query_counter_reply_t *
+xcb_sync_query_counter_reply (xcb_connection_t *c /**< */,
+ xcb_sync_query_counter_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_sync_query_counter_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_await_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t wait_list_len
+ ** @param const xcb_sync_waitcondition_t *wait_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_await_checked (xcb_connection_t *c /**< */,
+ uint32_t wait_list_len /**< */,
+ const xcb_sync_waitcondition_t *wait_list /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_AWAIT,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_sync_await_request_t xcb_out;
+
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) wait_list;
+ xcb_parts[4].iov_len = wait_list_len * sizeof(xcb_sync_waitcondition_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_await
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t wait_list_len
+ ** @param const xcb_sync_waitcondition_t *wait_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_await (xcb_connection_t *c /**< */,
+ uint32_t wait_list_len /**< */,
+ const xcb_sync_waitcondition_t *wait_list /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_AWAIT,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_sync_await_request_t xcb_out;
+
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) wait_list;
+ xcb_parts[4].iov_len = wait_list_len * sizeof(xcb_sync_waitcondition_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_change_counter_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t counter
+ ** @param xcb_sync_int64_t amount
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_change_counter_checked (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t counter /**< */,
+ xcb_sync_int64_t amount /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_CHANGE_COUNTER,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_sync_change_counter_request_t xcb_out;
+
+ xcb_out.counter = counter;
+ xcb_out.amount = amount;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_change_counter
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t counter
+ ** @param xcb_sync_int64_t amount
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_change_counter (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t counter /**< */,
+ xcb_sync_int64_t amount /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_CHANGE_COUNTER,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_sync_change_counter_request_t xcb_out;
+
+ xcb_out.counter = counter;
+ xcb_out.amount = amount;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_set_counter_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t counter
+ ** @param xcb_sync_int64_t value
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_set_counter_checked (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t counter /**< */,
+ xcb_sync_int64_t value /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_SET_COUNTER,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_sync_set_counter_request_t xcb_out;
+
+ xcb_out.counter = counter;
+ xcb_out.value = value;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_set_counter
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_counter_t counter
+ ** @param xcb_sync_int64_t value
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_set_counter (xcb_connection_t *c /**< */,
+ xcb_sync_counter_t counter /**< */,
+ xcb_sync_int64_t value /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_SET_COUNTER,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_sync_set_counter_request_t xcb_out;
+
+ xcb_out.counter = counter;
+ xcb_out.value = value;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_create_alarm_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_alarm_t id
+ ** @param uint32_t value_mask
+ ** @param const uint32_t *value_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_create_alarm_checked (xcb_connection_t *c /**< */,
+ xcb_sync_alarm_t id /**< */,
+ uint32_t value_mask /**< */,
+ const uint32_t *value_list /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_CREATE_ALARM,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_sync_create_alarm_request_t xcb_out;
+
+ xcb_out.id = id;
+ xcb_out.value_mask = value_mask;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) value_list;
+ xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_create_alarm
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_alarm_t id
+ ** @param uint32_t value_mask
+ ** @param const uint32_t *value_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_create_alarm (xcb_connection_t *c /**< */,
+ xcb_sync_alarm_t id /**< */,
+ uint32_t value_mask /**< */,
+ const uint32_t *value_list /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_CREATE_ALARM,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_sync_create_alarm_request_t xcb_out;
+
+ xcb_out.id = id;
+ xcb_out.value_mask = value_mask;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) value_list;
+ xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_change_alarm_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_alarm_t id
+ ** @param uint32_t value_mask
+ ** @param const uint32_t *value_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_change_alarm_checked (xcb_connection_t *c /**< */,
+ xcb_sync_alarm_t id /**< */,
+ uint32_t value_mask /**< */,
+ const uint32_t *value_list /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_CHANGE_ALARM,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_sync_change_alarm_request_t xcb_out;
+
+ xcb_out.id = id;
+ xcb_out.value_mask = value_mask;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) value_list;
+ xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_change_alarm
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_alarm_t id
+ ** @param uint32_t value_mask
+ ** @param const uint32_t *value_list
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_change_alarm (xcb_connection_t *c /**< */,
+ xcb_sync_alarm_t id /**< */,
+ uint32_t value_mask /**< */,
+ const uint32_t *value_list /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_CHANGE_ALARM,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_sync_change_alarm_request_t xcb_out;
+
+ xcb_out.id = id;
+ xcb_out.value_mask = value_mask;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) value_list;
+ xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_destroy_alarm_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_alarm_t alarm
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_destroy_alarm_checked (xcb_connection_t *c /**< */,
+ xcb_sync_alarm_t alarm /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_DESTROY_ALARM,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_sync_destroy_alarm_request_t xcb_out;
+
+ xcb_out.alarm = alarm;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_destroy_alarm
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_alarm_t alarm
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_destroy_alarm (xcb_connection_t *c /**< */,
+ xcb_sync_alarm_t alarm /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_DESTROY_ALARM,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_sync_destroy_alarm_request_t xcb_out;
+
+ xcb_out.alarm = alarm;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_sync_query_alarm_cookie_t xcb_sync_query_alarm
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_alarm_t alarm
+ ** @returns xcb_sync_query_alarm_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_query_alarm_cookie_t
+xcb_sync_query_alarm (xcb_connection_t *c /**< */,
+ xcb_sync_alarm_t alarm /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_QUERY_ALARM,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_sync_query_alarm_cookie_t xcb_ret;
+ xcb_sync_query_alarm_request_t xcb_out;
+
+ xcb_out.alarm = alarm;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_sync_query_alarm_cookie_t xcb_sync_query_alarm_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_alarm_t alarm
+ ** @returns xcb_sync_query_alarm_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_query_alarm_cookie_t
+xcb_sync_query_alarm_unchecked (xcb_connection_t *c /**< */,
+ xcb_sync_alarm_t alarm /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_QUERY_ALARM,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_sync_query_alarm_cookie_t xcb_ret;
+ xcb_sync_query_alarm_request_t xcb_out;
+
+ xcb_out.alarm = alarm;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_sync_query_alarm_reply_t * xcb_sync_query_alarm_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_query_alarm_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_sync_query_alarm_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_sync_query_alarm_reply_t *
+xcb_sync_query_alarm_reply (xcb_connection_t *c /**< */,
+ xcb_sync_query_alarm_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_sync_query_alarm_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_set_priority_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t id
+ ** @param int32_t priority
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_set_priority_checked (xcb_connection_t *c /**< */,
+ uint32_t id /**< */,
+ int32_t priority /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_SET_PRIORITY,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_sync_set_priority_request_t xcb_out;
+
+ xcb_out.id = id;
+ xcb_out.priority = priority;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_sync_set_priority
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t id
+ ** @param int32_t priority
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_sync_set_priority (xcb_connection_t *c /**< */,
+ uint32_t id /**< */,
+ int32_t priority /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_SET_PRIORITY,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_sync_set_priority_request_t xcb_out;
+
+ xcb_out.id = id;
+ xcb_out.priority = priority;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_sync_get_priority_cookie_t xcb_sync_get_priority
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t id
+ ** @returns xcb_sync_get_priority_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_get_priority_cookie_t
+xcb_sync_get_priority (xcb_connection_t *c /**< */,
+ uint32_t id /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_GET_PRIORITY,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_sync_get_priority_cookie_t xcb_ret;
+ xcb_sync_get_priority_request_t xcb_out;
+
+ xcb_out.id = id;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_sync_get_priority_cookie_t xcb_sync_get_priority_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t id
+ ** @returns xcb_sync_get_priority_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_sync_get_priority_cookie_t
+xcb_sync_get_priority_unchecked (xcb_connection_t *c /**< */,
+ uint32_t id /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_sync_id,
+ /* opcode */ XCB_SYNC_GET_PRIORITY,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_sync_get_priority_cookie_t xcb_ret;
+ xcb_sync_get_priority_request_t xcb_out;
+
+ xcb_out.id = id;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_sync_get_priority_reply_t * xcb_sync_get_priority_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_sync_get_priority_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_sync_get_priority_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_sync_get_priority_reply_t *
+xcb_sync_get_priority_reply (xcb_connection_t *c /**< */,
+ xcb_sync_get_priority_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_sync_get_priority_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
diff --git a/src/3rdparty/xcb/libxcb/xfixes.c b/src/3rdparty/xcb/libxcb/xfixes.c
new file mode 100644
index 0000000000..541918ce16
--- /dev/null
+++ b/src/3rdparty/xcb/libxcb/xfixes.c
@@ -0,0 +1,2953 @@
+/*
+ * This file generated automatically from xfixes.xml by c_client.py.
+ * Edit at your peril.
+ */
+
+#include <string.h>
+#include <assert.h>
+#include "xcbext.h"
+#include "xfixes.h"
+#include "xproto.h"
+#include "render.h"
+#include "shape.h"
+
+xcb_extension_t xcb_xfixes_id = { "XFIXES", 0 };
+
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_query_version_cookie_t xcb_xfixes_query_version
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t client_major_version
+ ** @param uint32_t client_minor_version
+ ** @returns xcb_xfixes_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_query_version_cookie_t
+xcb_xfixes_query_version (xcb_connection_t *c /**< */,
+ uint32_t client_major_version /**< */,
+ uint32_t client_minor_version /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_QUERY_VERSION,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_xfixes_query_version_cookie_t xcb_ret;
+ xcb_xfixes_query_version_request_t xcb_out;
+
+ xcb_out.client_major_version = client_major_version;
+ xcb_out.client_minor_version = client_minor_version;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_query_version_cookie_t xcb_xfixes_query_version_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint32_t client_major_version
+ ** @param uint32_t client_minor_version
+ ** @returns xcb_xfixes_query_version_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_query_version_cookie_t
+xcb_xfixes_query_version_unchecked (xcb_connection_t *c /**< */,
+ uint32_t client_major_version /**< */,
+ uint32_t client_minor_version /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_QUERY_VERSION,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_xfixes_query_version_cookie_t xcb_ret;
+ xcb_xfixes_query_version_request_t xcb_out;
+
+ xcb_out.client_major_version = client_major_version;
+ xcb_out.client_minor_version = client_minor_version;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_query_version_reply_t * xcb_xfixes_query_version_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_query_version_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_xfixes_query_version_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_xfixes_query_version_reply_t *
+xcb_xfixes_query_version_reply (xcb_connection_t *c /**< */,
+ xcb_xfixes_query_version_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_xfixes_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_change_save_set_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t mode
+ ** @param uint8_t target
+ ** @param uint8_t map
+ ** @param xcb_window_t window
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_change_save_set_checked (xcb_connection_t *c /**< */,
+ uint8_t mode /**< */,
+ uint8_t target /**< */,
+ uint8_t map /**< */,
+ xcb_window_t window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_CHANGE_SAVE_SET,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_change_save_set_request_t xcb_out;
+
+ xcb_out.mode = mode;
+ xcb_out.target = target;
+ xcb_out.map = map;
+ xcb_out.pad0 = 0;
+ xcb_out.window = window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_change_save_set
+ **
+ ** @param xcb_connection_t *c
+ ** @param uint8_t mode
+ ** @param uint8_t target
+ ** @param uint8_t map
+ ** @param xcb_window_t window
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_change_save_set (xcb_connection_t *c /**< */,
+ uint8_t mode /**< */,
+ uint8_t target /**< */,
+ uint8_t map /**< */,
+ xcb_window_t window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_CHANGE_SAVE_SET,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_change_save_set_request_t xcb_out;
+
+ xcb_out.mode = mode;
+ xcb_out.target = target;
+ xcb_out.map = map;
+ xcb_out.pad0 = 0;
+ xcb_out.window = window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_select_selection_input_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_atom_t selection
+ ** @param uint32_t event_mask
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_select_selection_input_checked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_atom_t selection /**< */,
+ uint32_t event_mask /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_SELECT_SELECTION_INPUT,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_select_selection_input_request_t xcb_out;
+
+ xcb_out.window = window;
+ xcb_out.selection = selection;
+ xcb_out.event_mask = event_mask;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_select_selection_input
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param xcb_atom_t selection
+ ** @param uint32_t event_mask
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_select_selection_input (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ xcb_atom_t selection /**< */,
+ uint32_t event_mask /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_SELECT_SELECTION_INPUT,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_select_selection_input_request_t xcb_out;
+
+ xcb_out.window = window;
+ xcb_out.selection = selection;
+ xcb_out.event_mask = event_mask;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_select_cursor_input_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param uint32_t event_mask
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_select_cursor_input_checked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ uint32_t event_mask /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_SELECT_CURSOR_INPUT,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_select_cursor_input_request_t xcb_out;
+
+ xcb_out.window = window;
+ xcb_out.event_mask = event_mask;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_select_cursor_input
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @param uint32_t event_mask
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_select_cursor_input (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */,
+ uint32_t event_mask /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_SELECT_CURSOR_INPUT,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_select_cursor_input_request_t xcb_out;
+
+ xcb_out.window = window;
+ xcb_out.event_mask = event_mask;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_get_cursor_image_cookie_t xcb_xfixes_get_cursor_image
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_xfixes_get_cursor_image_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_get_cursor_image_cookie_t
+xcb_xfixes_get_cursor_image (xcb_connection_t *c /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_GET_CURSOR_IMAGE,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_xfixes_get_cursor_image_cookie_t xcb_ret;
+ xcb_xfixes_get_cursor_image_request_t xcb_out;
+
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_get_cursor_image_cookie_t xcb_xfixes_get_cursor_image_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_xfixes_get_cursor_image_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_get_cursor_image_cookie_t
+xcb_xfixes_get_cursor_image_unchecked (xcb_connection_t *c /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_GET_CURSOR_IMAGE,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_xfixes_get_cursor_image_cookie_t xcb_ret;
+ xcb_xfixes_get_cursor_image_request_t xcb_out;
+
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** uint32_t * xcb_xfixes_get_cursor_image_cursor_image
+ **
+ ** @param const xcb_xfixes_get_cursor_image_reply_t *R
+ ** @returns uint32_t *
+ **
+ *****************************************************************************/
+
+uint32_t *
+xcb_xfixes_get_cursor_image_cursor_image (const xcb_xfixes_get_cursor_image_reply_t *R /**< */)
+{
+ return (uint32_t *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_xfixes_get_cursor_image_cursor_image_length
+ **
+ ** @param const xcb_xfixes_get_cursor_image_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_xfixes_get_cursor_image_cursor_image_length (const xcb_xfixes_get_cursor_image_reply_t *R /**< */)
+{
+ return (R->width * R->height);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_xfixes_get_cursor_image_cursor_image_end
+ **
+ ** @param const xcb_xfixes_get_cursor_image_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_xfixes_get_cursor_image_cursor_image_end (const xcb_xfixes_get_cursor_image_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ i.data = ((uint32_t *) (R + 1)) + ((R->width * R->height));
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_get_cursor_image_reply_t * xcb_xfixes_get_cursor_image_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_get_cursor_image_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_xfixes_get_cursor_image_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_xfixes_get_cursor_image_reply_t *
+xcb_xfixes_get_cursor_image_reply (xcb_connection_t *c /**< */,
+ xcb_xfixes_get_cursor_image_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_xfixes_get_cursor_image_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** void xcb_xfixes_region_next
+ **
+ ** @param xcb_xfixes_region_iterator_t *i
+ ** @returns void
+ **
+ *****************************************************************************/
+
+void
+xcb_xfixes_region_next (xcb_xfixes_region_iterator_t *i /**< */)
+{
+ --i->rem;
+ ++i->data;
+ i->index += sizeof(xcb_xfixes_region_t);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_xfixes_region_end
+ **
+ ** @param xcb_xfixes_region_iterator_t i
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_xfixes_region_end (xcb_xfixes_region_iterator_t i /**< */)
+{
+ xcb_generic_iterator_t ret;
+ ret.data = i.data + i.rem;
+ ret.index = i.index + ((char *) ret.data - (char *) i.data);
+ ret.rem = 0;
+ return ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param uint32_t rectangles_len
+ ** @param const xcb_rectangle_t *rectangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ uint32_t rectangles_len /**< */,
+ const xcb_rectangle_t *rectangles /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_CREATE_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_create_region_request_t xcb_out;
+
+ xcb_out.region = region;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) rectangles;
+ xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param uint32_t rectangles_len
+ ** @param const xcb_rectangle_t *rectangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ uint32_t rectangles_len /**< */,
+ const xcb_rectangle_t *rectangles /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_CREATE_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_create_region_request_t xcb_out;
+
+ xcb_out.region = region;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) rectangles;
+ xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region_from_bitmap_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param xcb_pixmap_t bitmap
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region_from_bitmap_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ xcb_pixmap_t bitmap /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_CREATE_REGION_FROM_BITMAP,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_create_region_from_bitmap_request_t xcb_out;
+
+ xcb_out.region = region;
+ xcb_out.bitmap = bitmap;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region_from_bitmap
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param xcb_pixmap_t bitmap
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region_from_bitmap (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ xcb_pixmap_t bitmap /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_CREATE_REGION_FROM_BITMAP,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_create_region_from_bitmap_request_t xcb_out;
+
+ xcb_out.region = region;
+ xcb_out.bitmap = bitmap;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region_from_window_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param xcb_window_t window
+ ** @param xcb_shape_kind_t kind
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region_from_window_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ xcb_window_t window /**< */,
+ xcb_shape_kind_t kind /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_CREATE_REGION_FROM_WINDOW,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_create_region_from_window_request_t xcb_out;
+
+ xcb_out.region = region;
+ xcb_out.window = window;
+ xcb_out.kind = kind;
+ memset(xcb_out.pad0, 0, 3);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region_from_window
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param xcb_window_t window
+ ** @param xcb_shape_kind_t kind
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region_from_window (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ xcb_window_t window /**< */,
+ xcb_shape_kind_t kind /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_CREATE_REGION_FROM_WINDOW,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_create_region_from_window_request_t xcb_out;
+
+ xcb_out.region = region;
+ xcb_out.window = window;
+ xcb_out.kind = kind;
+ memset(xcb_out.pad0, 0, 3);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region_from_gc_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param xcb_gcontext_t gc
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region_from_gc_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ xcb_gcontext_t gc /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_CREATE_REGION_FROM_GC,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_create_region_from_gc_request_t xcb_out;
+
+ xcb_out.region = region;
+ xcb_out.gc = gc;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region_from_gc
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param xcb_gcontext_t gc
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region_from_gc (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ xcb_gcontext_t gc /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_CREATE_REGION_FROM_GC,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_create_region_from_gc_request_t xcb_out;
+
+ xcb_out.region = region;
+ xcb_out.gc = gc;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region_from_picture_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param xcb_render_picture_t picture
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region_from_picture_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ xcb_render_picture_t picture /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_CREATE_REGION_FROM_PICTURE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_create_region_from_picture_request_t xcb_out;
+
+ xcb_out.region = region;
+ xcb_out.picture = picture;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_create_region_from_picture
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param xcb_render_picture_t picture
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_create_region_from_picture (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ xcb_render_picture_t picture /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_CREATE_REGION_FROM_PICTURE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_create_region_from_picture_request_t xcb_out;
+
+ xcb_out.region = region;
+ xcb_out.picture = picture;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_destroy_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_destroy_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_DESTROY_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_destroy_region_request_t xcb_out;
+
+ xcb_out.region = region;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_destroy_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_destroy_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_DESTROY_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_destroy_region_request_t xcb_out;
+
+ xcb_out.region = region;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param uint32_t rectangles_len
+ ** @param const xcb_rectangle_t *rectangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ uint32_t rectangles_len /**< */,
+ const xcb_rectangle_t *rectangles /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_SET_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_set_region_request_t xcb_out;
+
+ xcb_out.region = region;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) rectangles;
+ xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param uint32_t rectangles_len
+ ** @param const xcb_rectangle_t *rectangles
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ uint32_t rectangles_len /**< */,
+ const xcb_rectangle_t *rectangles /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_SET_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_set_region_request_t xcb_out;
+
+ xcb_out.region = region;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) rectangles;
+ xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_copy_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_copy_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source /**< */,
+ xcb_xfixes_region_t destination /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_COPY_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_copy_region_request_t xcb_out;
+
+ xcb_out.source = source;
+ xcb_out.destination = destination;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_copy_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_copy_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source /**< */,
+ xcb_xfixes_region_t destination /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_COPY_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_copy_region_request_t xcb_out;
+
+ xcb_out.source = source;
+ xcb_out.destination = destination;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_union_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source1
+ ** @param xcb_xfixes_region_t source2
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_union_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source1 /**< */,
+ xcb_xfixes_region_t source2 /**< */,
+ xcb_xfixes_region_t destination /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_UNION_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_union_region_request_t xcb_out;
+
+ xcb_out.source1 = source1;
+ xcb_out.source2 = source2;
+ xcb_out.destination = destination;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_union_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source1
+ ** @param xcb_xfixes_region_t source2
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_union_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source1 /**< */,
+ xcb_xfixes_region_t source2 /**< */,
+ xcb_xfixes_region_t destination /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_UNION_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_union_region_request_t xcb_out;
+
+ xcb_out.source1 = source1;
+ xcb_out.source2 = source2;
+ xcb_out.destination = destination;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_intersect_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source1
+ ** @param xcb_xfixes_region_t source2
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_intersect_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source1 /**< */,
+ xcb_xfixes_region_t source2 /**< */,
+ xcb_xfixes_region_t destination /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_INTERSECT_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_intersect_region_request_t xcb_out;
+
+ xcb_out.source1 = source1;
+ xcb_out.source2 = source2;
+ xcb_out.destination = destination;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_intersect_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source1
+ ** @param xcb_xfixes_region_t source2
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_intersect_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source1 /**< */,
+ xcb_xfixes_region_t source2 /**< */,
+ xcb_xfixes_region_t destination /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_INTERSECT_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_intersect_region_request_t xcb_out;
+
+ xcb_out.source1 = source1;
+ xcb_out.source2 = source2;
+ xcb_out.destination = destination;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_subtract_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source1
+ ** @param xcb_xfixes_region_t source2
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_subtract_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source1 /**< */,
+ xcb_xfixes_region_t source2 /**< */,
+ xcb_xfixes_region_t destination /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_SUBTRACT_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_subtract_region_request_t xcb_out;
+
+ xcb_out.source1 = source1;
+ xcb_out.source2 = source2;
+ xcb_out.destination = destination;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_subtract_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source1
+ ** @param xcb_xfixes_region_t source2
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_subtract_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source1 /**< */,
+ xcb_xfixes_region_t source2 /**< */,
+ xcb_xfixes_region_t destination /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_SUBTRACT_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_subtract_region_request_t xcb_out;
+
+ xcb_out.source1 = source1;
+ xcb_out.source2 = source2;
+ xcb_out.destination = destination;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_invert_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source
+ ** @param xcb_rectangle_t bounds
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_invert_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source /**< */,
+ xcb_rectangle_t bounds /**< */,
+ xcb_xfixes_region_t destination /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_INVERT_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_invert_region_request_t xcb_out;
+
+ xcb_out.source = source;
+ xcb_out.bounds = bounds;
+ xcb_out.destination = destination;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_invert_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source
+ ** @param xcb_rectangle_t bounds
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_invert_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source /**< */,
+ xcb_rectangle_t bounds /**< */,
+ xcb_xfixes_region_t destination /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_INVERT_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_invert_region_request_t xcb_out;
+
+ xcb_out.source = source;
+ xcb_out.bounds = bounds;
+ xcb_out.destination = destination;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_translate_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param int16_t dx
+ ** @param int16_t dy
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_translate_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ int16_t dx /**< */,
+ int16_t dy /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_TRANSLATE_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_translate_region_request_t xcb_out;
+
+ xcb_out.region = region;
+ xcb_out.dx = dx;
+ xcb_out.dy = dy;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_translate_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @param int16_t dx
+ ** @param int16_t dy
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_translate_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */,
+ int16_t dx /**< */,
+ int16_t dy /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_TRANSLATE_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_translate_region_request_t xcb_out;
+
+ xcb_out.region = region;
+ xcb_out.dx = dx;
+ xcb_out.dy = dy;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_region_extents_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_region_extents_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source /**< */,
+ xcb_xfixes_region_t destination /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_REGION_EXTENTS,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_region_extents_request_t xcb_out;
+
+ xcb_out.source = source;
+ xcb_out.destination = destination;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_region_extents
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source
+ ** @param xcb_xfixes_region_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_region_extents (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source /**< */,
+ xcb_xfixes_region_t destination /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_REGION_EXTENTS,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_region_extents_request_t xcb_out;
+
+ xcb_out.source = source;
+ xcb_out.destination = destination;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_fetch_region_cookie_t xcb_xfixes_fetch_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @returns xcb_xfixes_fetch_region_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_fetch_region_cookie_t
+xcb_xfixes_fetch_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_FETCH_REGION,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_xfixes_fetch_region_cookie_t xcb_ret;
+ xcb_xfixes_fetch_region_request_t xcb_out;
+
+ xcb_out.region = region;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_fetch_region_cookie_t xcb_xfixes_fetch_region_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t region
+ ** @returns xcb_xfixes_fetch_region_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_fetch_region_cookie_t
+xcb_xfixes_fetch_region_unchecked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t region /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_FETCH_REGION,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_xfixes_fetch_region_cookie_t xcb_ret;
+ xcb_xfixes_fetch_region_request_t xcb_out;
+
+ xcb_out.region = region;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_rectangle_t * xcb_xfixes_fetch_region_rectangles
+ **
+ ** @param const xcb_xfixes_fetch_region_reply_t *R
+ ** @returns xcb_rectangle_t *
+ **
+ *****************************************************************************/
+
+xcb_rectangle_t *
+xcb_xfixes_fetch_region_rectangles (const xcb_xfixes_fetch_region_reply_t *R /**< */)
+{
+ return (xcb_rectangle_t *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_xfixes_fetch_region_rectangles_length
+ **
+ ** @param const xcb_xfixes_fetch_region_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_xfixes_fetch_region_rectangles_length (const xcb_xfixes_fetch_region_reply_t *R /**< */)
+{
+ return (R->length / 2);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_rectangle_iterator_t xcb_xfixes_fetch_region_rectangles_iterator
+ **
+ ** @param const xcb_xfixes_fetch_region_reply_t *R
+ ** @returns xcb_rectangle_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_rectangle_iterator_t
+xcb_xfixes_fetch_region_rectangles_iterator (const xcb_xfixes_fetch_region_reply_t *R /**< */)
+{
+ xcb_rectangle_iterator_t i;
+ i.data = (xcb_rectangle_t *) (R + 1);
+ i.rem = (R->length / 2);
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_fetch_region_reply_t * xcb_xfixes_fetch_region_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_fetch_region_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_xfixes_fetch_region_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_xfixes_fetch_region_reply_t *
+xcb_xfixes_fetch_region_reply (xcb_connection_t *c /**< */,
+ xcb_xfixes_fetch_region_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_xfixes_fetch_region_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_gc_clip_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_gcontext_t gc
+ ** @param xcb_xfixes_region_t region
+ ** @param int16_t x_origin
+ ** @param int16_t y_origin
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_gc_clip_region_checked (xcb_connection_t *c /**< */,
+ xcb_gcontext_t gc /**< */,
+ xcb_xfixes_region_t region /**< */,
+ int16_t x_origin /**< */,
+ int16_t y_origin /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_SET_GC_CLIP_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_set_gc_clip_region_request_t xcb_out;
+
+ xcb_out.gc = gc;
+ xcb_out.region = region;
+ xcb_out.x_origin = x_origin;
+ xcb_out.y_origin = y_origin;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_gc_clip_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_gcontext_t gc
+ ** @param xcb_xfixes_region_t region
+ ** @param int16_t x_origin
+ ** @param int16_t y_origin
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_gc_clip_region (xcb_connection_t *c /**< */,
+ xcb_gcontext_t gc /**< */,
+ xcb_xfixes_region_t region /**< */,
+ int16_t x_origin /**< */,
+ int16_t y_origin /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_SET_GC_CLIP_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_set_gc_clip_region_request_t xcb_out;
+
+ xcb_out.gc = gc;
+ xcb_out.region = region;
+ xcb_out.x_origin = x_origin;
+ xcb_out.y_origin = y_origin;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_window_shape_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t dest
+ ** @param xcb_shape_kind_t dest_kind
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @param xcb_xfixes_region_t region
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_window_shape_region_checked (xcb_connection_t *c /**< */,
+ xcb_window_t dest /**< */,
+ xcb_shape_kind_t dest_kind /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */,
+ xcb_xfixes_region_t region /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_SET_WINDOW_SHAPE_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_set_window_shape_region_request_t xcb_out;
+
+ xcb_out.dest = dest;
+ xcb_out.dest_kind = dest_kind;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.x_offset = x_offset;
+ xcb_out.y_offset = y_offset;
+ xcb_out.region = region;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_window_shape_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t dest
+ ** @param xcb_shape_kind_t dest_kind
+ ** @param int16_t x_offset
+ ** @param int16_t y_offset
+ ** @param xcb_xfixes_region_t region
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_window_shape_region (xcb_connection_t *c /**< */,
+ xcb_window_t dest /**< */,
+ xcb_shape_kind_t dest_kind /**< */,
+ int16_t x_offset /**< */,
+ int16_t y_offset /**< */,
+ xcb_xfixes_region_t region /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_SET_WINDOW_SHAPE_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_set_window_shape_region_request_t xcb_out;
+
+ xcb_out.dest = dest;
+ xcb_out.dest_kind = dest_kind;
+ memset(xcb_out.pad0, 0, 3);
+ xcb_out.x_offset = x_offset;
+ xcb_out.y_offset = y_offset;
+ xcb_out.region = region;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_picture_clip_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_xfixes_region_t region
+ ** @param int16_t x_origin
+ ** @param int16_t y_origin
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_picture_clip_region_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_xfixes_region_t region /**< */,
+ int16_t x_origin /**< */,
+ int16_t y_origin /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_SET_PICTURE_CLIP_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_set_picture_clip_region_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.region = region;
+ xcb_out.x_origin = x_origin;
+ xcb_out.y_origin = y_origin;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_picture_clip_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_render_picture_t picture
+ ** @param xcb_xfixes_region_t region
+ ** @param int16_t x_origin
+ ** @param int16_t y_origin
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_picture_clip_region (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ xcb_xfixes_region_t region /**< */,
+ int16_t x_origin /**< */,
+ int16_t y_origin /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_SET_PICTURE_CLIP_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_set_picture_clip_region_request_t xcb_out;
+
+ xcb_out.picture = picture;
+ xcb_out.region = region;
+ xcb_out.x_origin = x_origin;
+ xcb_out.y_origin = y_origin;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_cursor_name_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t cursor
+ ** @param uint16_t nbytes
+ ** @param const char *name
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_cursor_name_checked (xcb_connection_t *c /**< */,
+ xcb_cursor_t cursor /**< */,
+ uint16_t nbytes /**< */,
+ const char *name /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_SET_CURSOR_NAME,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_set_cursor_name_request_t xcb_out;
+
+ xcb_out.cursor = cursor;
+ xcb_out.nbytes = nbytes;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) name;
+ xcb_parts[4].iov_len = nbytes * sizeof(char);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_set_cursor_name
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t cursor
+ ** @param uint16_t nbytes
+ ** @param const char *name
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_set_cursor_name (xcb_connection_t *c /**< */,
+ xcb_cursor_t cursor /**< */,
+ uint16_t nbytes /**< */,
+ const char *name /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_SET_CURSOR_NAME,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_set_cursor_name_request_t xcb_out;
+
+ xcb_out.cursor = cursor;
+ xcb_out.nbytes = nbytes;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) name;
+ xcb_parts[4].iov_len = nbytes * sizeof(char);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_get_cursor_name_cookie_t xcb_xfixes_get_cursor_name
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t cursor
+ ** @returns xcb_xfixes_get_cursor_name_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_get_cursor_name_cookie_t
+xcb_xfixes_get_cursor_name (xcb_connection_t *c /**< */,
+ xcb_cursor_t cursor /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_GET_CURSOR_NAME,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_xfixes_get_cursor_name_cookie_t xcb_ret;
+ xcb_xfixes_get_cursor_name_request_t xcb_out;
+
+ xcb_out.cursor = cursor;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_get_cursor_name_cookie_t xcb_xfixes_get_cursor_name_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t cursor
+ ** @returns xcb_xfixes_get_cursor_name_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_get_cursor_name_cookie_t
+xcb_xfixes_get_cursor_name_unchecked (xcb_connection_t *c /**< */,
+ xcb_cursor_t cursor /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_GET_CURSOR_NAME,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_xfixes_get_cursor_name_cookie_t xcb_ret;
+ xcb_xfixes_get_cursor_name_request_t xcb_out;
+
+ xcb_out.cursor = cursor;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** char * xcb_xfixes_get_cursor_name_name
+ **
+ ** @param const xcb_xfixes_get_cursor_name_reply_t *R
+ ** @returns char *
+ **
+ *****************************************************************************/
+
+char *
+xcb_xfixes_get_cursor_name_name (const xcb_xfixes_get_cursor_name_reply_t *R /**< */)
+{
+ return (char *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_xfixes_get_cursor_name_name_length
+ **
+ ** @param const xcb_xfixes_get_cursor_name_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_xfixes_get_cursor_name_name_length (const xcb_xfixes_get_cursor_name_reply_t *R /**< */)
+{
+ return R->nbytes;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_xfixes_get_cursor_name_name_end
+ **
+ ** @param const xcb_xfixes_get_cursor_name_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_xfixes_get_cursor_name_name_end (const xcb_xfixes_get_cursor_name_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ i.data = ((char *) (R + 1)) + (R->nbytes);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_get_cursor_name_reply_t * xcb_xfixes_get_cursor_name_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_get_cursor_name_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_xfixes_get_cursor_name_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_xfixes_get_cursor_name_reply_t *
+xcb_xfixes_get_cursor_name_reply (xcb_connection_t *c /**< */,
+ xcb_xfixes_get_cursor_name_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_xfixes_get_cursor_name_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_get_cursor_image_and_name_cookie_t xcb_xfixes_get_cursor_image_and_name
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_xfixes_get_cursor_image_and_name_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_get_cursor_image_and_name_cookie_t
+xcb_xfixes_get_cursor_image_and_name (xcb_connection_t *c /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_GET_CURSOR_IMAGE_AND_NAME,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_xfixes_get_cursor_image_and_name_cookie_t xcb_ret;
+ xcb_xfixes_get_cursor_image_and_name_request_t xcb_out;
+
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_get_cursor_image_and_name_cookie_t xcb_xfixes_get_cursor_image_and_name_unchecked
+ **
+ ** @param xcb_connection_t *c
+ ** @returns xcb_xfixes_get_cursor_image_and_name_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_xfixes_get_cursor_image_and_name_cookie_t
+xcb_xfixes_get_cursor_image_and_name_unchecked (xcb_connection_t *c /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_GET_CURSOR_IMAGE_AND_NAME,
+ /* isvoid */ 0
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_xfixes_get_cursor_image_and_name_cookie_t xcb_ret;
+ xcb_xfixes_get_cursor_image_and_name_request_t xcb_out;
+
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** char * xcb_xfixes_get_cursor_image_and_name_name
+ **
+ ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
+ ** @returns char *
+ **
+ *****************************************************************************/
+
+char *
+xcb_xfixes_get_cursor_image_and_name_name (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */)
+{
+ return (char *) (R + 1);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_xfixes_get_cursor_image_and_name_name_length
+ **
+ ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_xfixes_get_cursor_image_and_name_name_length (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */)
+{
+ return R->nbytes;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_xfixes_get_cursor_image_and_name_name_end
+ **
+ ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_xfixes_get_cursor_image_and_name_name_end (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ i.data = ((char *) (R + 1)) + (R->nbytes);
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** uint32_t * xcb_xfixes_get_cursor_image_and_name_cursor_image
+ **
+ ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
+ ** @returns uint32_t *
+ **
+ *****************************************************************************/
+
+uint32_t *
+xcb_xfixes_get_cursor_image_and_name_cursor_image (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t prev = xcb_xfixes_get_cursor_image_and_name_name_end(R);
+ return (uint32_t *) ((char *) prev.data + XCB_TYPE_PAD(uint32_t, prev.index) + 0);
+}
+
+
+/*****************************************************************************
+ **
+ ** int xcb_xfixes_get_cursor_image_and_name_cursor_image_length
+ **
+ ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
+ ** @returns int
+ **
+ *****************************************************************************/
+
+int
+xcb_xfixes_get_cursor_image_and_name_cursor_image_length (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */)
+{
+ return (R->width * R->height);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_generic_iterator_t xcb_xfixes_get_cursor_image_and_name_cursor_image_end
+ **
+ ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
+ ** @returns xcb_generic_iterator_t
+ **
+ *****************************************************************************/
+
+xcb_generic_iterator_t
+xcb_xfixes_get_cursor_image_and_name_cursor_image_end (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */)
+{
+ xcb_generic_iterator_t i;
+ xcb_generic_iterator_t child = xcb_xfixes_get_cursor_image_and_name_name_end(R);
+ i.data = ((uint32_t *) child.data) + ((R->width * R->height));
+ i.rem = 0;
+ i.index = (char *) i.data - (char *) R;
+ return i;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_xfixes_get_cursor_image_and_name_reply_t * xcb_xfixes_get_cursor_image_and_name_reply
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_get_cursor_image_and_name_cookie_t cookie
+ ** @param xcb_generic_error_t **e
+ ** @returns xcb_xfixes_get_cursor_image_and_name_reply_t *
+ **
+ *****************************************************************************/
+
+xcb_xfixes_get_cursor_image_and_name_reply_t *
+xcb_xfixes_get_cursor_image_and_name_reply (xcb_connection_t *c /**< */,
+ xcb_xfixes_get_cursor_image_and_name_cookie_t cookie /**< */,
+ xcb_generic_error_t **e /**< */)
+{
+ return (xcb_xfixes_get_cursor_image_and_name_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_change_cursor_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t source
+ ** @param xcb_cursor_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_change_cursor_checked (xcb_connection_t *c /**< */,
+ xcb_cursor_t source /**< */,
+ xcb_cursor_t destination /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_CHANGE_CURSOR,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_change_cursor_request_t xcb_out;
+
+ xcb_out.source = source;
+ xcb_out.destination = destination;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_change_cursor
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t source
+ ** @param xcb_cursor_t destination
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_change_cursor (xcb_connection_t *c /**< */,
+ xcb_cursor_t source /**< */,
+ xcb_cursor_t destination /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_CHANGE_CURSOR,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_change_cursor_request_t xcb_out;
+
+ xcb_out.source = source;
+ xcb_out.destination = destination;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_change_cursor_by_name_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t src
+ ** @param uint16_t nbytes
+ ** @param const char *name
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_change_cursor_by_name_checked (xcb_connection_t *c /**< */,
+ xcb_cursor_t src /**< */,
+ uint16_t nbytes /**< */,
+ const char *name /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_CHANGE_CURSOR_BY_NAME,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_change_cursor_by_name_request_t xcb_out;
+
+ xcb_out.src = src;
+ xcb_out.nbytes = nbytes;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) name;
+ xcb_parts[4].iov_len = nbytes * sizeof(char);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_change_cursor_by_name
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_cursor_t src
+ ** @param uint16_t nbytes
+ ** @param const char *name
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_change_cursor_by_name (xcb_connection_t *c /**< */,
+ xcb_cursor_t src /**< */,
+ uint16_t nbytes /**< */,
+ const char *name /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 4,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_CHANGE_CURSOR_BY_NAME,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[6];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_change_cursor_by_name_request_t xcb_out;
+
+ xcb_out.src = src;
+ xcb_out.nbytes = nbytes;
+ memset(xcb_out.pad0, 0, 2);
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_parts[4].iov_base = (char *) name;
+ xcb_parts[4].iov_len = nbytes * sizeof(char);
+ xcb_parts[5].iov_base = 0;
+ xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_expand_region_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source
+ ** @param xcb_xfixes_region_t destination
+ ** @param uint16_t left
+ ** @param uint16_t right
+ ** @param uint16_t top
+ ** @param uint16_t bottom
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_expand_region_checked (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source /**< */,
+ xcb_xfixes_region_t destination /**< */,
+ uint16_t left /**< */,
+ uint16_t right /**< */,
+ uint16_t top /**< */,
+ uint16_t bottom /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_EXPAND_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_expand_region_request_t xcb_out;
+
+ xcb_out.source = source;
+ xcb_out.destination = destination;
+ xcb_out.left = left;
+ xcb_out.right = right;
+ xcb_out.top = top;
+ xcb_out.bottom = bottom;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_expand_region
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_xfixes_region_t source
+ ** @param xcb_xfixes_region_t destination
+ ** @param uint16_t left
+ ** @param uint16_t right
+ ** @param uint16_t top
+ ** @param uint16_t bottom
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_expand_region (xcb_connection_t *c /**< */,
+ xcb_xfixes_region_t source /**< */,
+ xcb_xfixes_region_t destination /**< */,
+ uint16_t left /**< */,
+ uint16_t right /**< */,
+ uint16_t top /**< */,
+ uint16_t bottom /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_EXPAND_REGION,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_expand_region_request_t xcb_out;
+
+ xcb_out.source = source;
+ xcb_out.destination = destination;
+ xcb_out.left = left;
+ xcb_out.right = right;
+ xcb_out.top = top;
+ xcb_out.bottom = bottom;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_hide_cursor_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_hide_cursor_checked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_HIDE_CURSOR,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_hide_cursor_request_t xcb_out;
+
+ xcb_out.window = window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_hide_cursor
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_hide_cursor (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_HIDE_CURSOR,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_hide_cursor_request_t xcb_out;
+
+ xcb_out.window = window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_show_cursor_checked
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_show_cursor_checked (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_SHOW_CURSOR,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_show_cursor_request_t xcb_out;
+
+ xcb_out.window = window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+
+/*****************************************************************************
+ **
+ ** xcb_void_cookie_t xcb_xfixes_show_cursor
+ **
+ ** @param xcb_connection_t *c
+ ** @param xcb_window_t window
+ ** @returns xcb_void_cookie_t
+ **
+ *****************************************************************************/
+
+xcb_void_cookie_t
+xcb_xfixes_show_cursor (xcb_connection_t *c /**< */,
+ xcb_window_t window /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 2,
+ /* ext */ &xcb_xfixes_id,
+ /* opcode */ XCB_XFIXES_SHOW_CURSOR,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[4];
+ xcb_void_cookie_t xcb_ret;
+ xcb_xfixes_show_cursor_request_t xcb_out;
+
+ xcb_out.window = window;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
diff --git a/src/3rdparty/xcb/sysinclude/render.h b/src/3rdparty/xcb/sysinclude/render.h
new file mode 100644
index 0000000000..00107aa169
--- /dev/null
+++ b/src/3rdparty/xcb/sysinclude/render.h
@@ -0,0 +1 @@
+#include <xcb/render.h>
diff --git a/src/3rdparty/xcb/sysinclude/xcb.h b/src/3rdparty/xcb/sysinclude/xcb.h
new file mode 100644
index 0000000000..e637314c29
--- /dev/null
+++ b/src/3rdparty/xcb/sysinclude/xcb.h
@@ -0,0 +1 @@
+#include <xcb/xcb.h>
diff --git a/src/3rdparty/xcb/sysinclude/xcbext.h b/src/3rdparty/xcb/sysinclude/xcbext.h
new file mode 100644
index 0000000000..c54f14d772
--- /dev/null
+++ b/src/3rdparty/xcb/sysinclude/xcbext.h
@@ -0,0 +1 @@
+#include <xcb/xcbext.h>
diff --git a/src/3rdparty/xcb/sysinclude/xproto.h b/src/3rdparty/xcb/sysinclude/xproto.h
new file mode 100644
index 0000000000..671249a4d7
--- /dev/null
+++ b/src/3rdparty/xcb/sysinclude/xproto.h
@@ -0,0 +1 @@
+#include <xcb/xproto.h>
diff --git a/src/3rdparty/xcb/xcb-util-image/xcb_image.c b/src/3rdparty/xcb/xcb-util-image/xcb_image.c
new file mode 100644
index 0000000000..e426cbd00c
--- /dev/null
+++ b/src/3rdparty/xcb/xcb-util-image/xcb_image.c
@@ -0,0 +1,1011 @@
+/* Copyright © 2007 Bart Massey
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or their
+ * institutions shall not be used in advertising or otherwise to promote the
+ * sale, use or other dealings in this Software without prior written
+ * authorization from the authors.
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <xcb/xcb.h>
+#include <xcb/shm.h>
+#include <xcb/xcb_aux.h>
+#include "xcb_bitops.h"
+#include "xcb_image.h"
+#define BUILD
+#include "xcb_pixel.h"
+
+
+static xcb_format_t *
+find_format_by_depth (const xcb_setup_t *setup, uint8_t depth)
+{
+ xcb_format_t *fmt = xcb_setup_pixmap_formats(setup);
+ xcb_format_t *fmtend = fmt + xcb_setup_pixmap_formats_length(setup);
+ for(; fmt != fmtend; ++fmt)
+ if(fmt->depth == depth)
+ return fmt;
+ return 0;
+}
+
+
+static xcb_image_format_t
+effective_format(xcb_image_format_t format, uint8_t bpp)
+{
+ if (format == XCB_IMAGE_FORMAT_Z_PIXMAP && bpp != 1)
+ return format;
+ return XCB_IMAGE_FORMAT_XY_PIXMAP;
+}
+
+
+static int
+format_valid (uint8_t depth, uint8_t bpp, uint8_t unit,
+ xcb_image_format_t format, uint8_t xpad)
+{
+ xcb_image_format_t ef = effective_format(format, bpp);
+ if (depth > bpp)
+ return 0;
+ switch(ef) {
+ case XCB_IMAGE_FORMAT_XY_PIXMAP:
+ switch(unit) {
+ case 8:
+ case 16:
+ case 32:
+ break;
+ default:
+ return 0;
+ }
+ if (xpad < bpp)
+ return 0;
+ switch (xpad) {
+ case 8:
+ case 16:
+ case 32:
+ break;
+ default:
+ return 0;
+ }
+ break;
+ case XCB_IMAGE_FORMAT_Z_PIXMAP:
+ switch (bpp) {
+ case 4:
+ if (unit != 8)
+ return 0;
+ break;
+ case 8:
+ case 16:
+ case 24:
+ case 32:
+ if (unit != bpp)
+ return 0;
+ break;
+ default:
+ return 0;
+ }
+ break;
+ default:
+ return 0;
+ }
+ return 1;
+}
+
+
+static int
+image_format_valid (xcb_image_t *image) {
+ return format_valid(image->depth,
+ image->bpp,
+ image->unit,
+ image->format,
+ image->scanline_pad);
+}
+
+
+void
+xcb_image_annotate (xcb_image_t *image)
+{
+ xcb_image_format_t ef = effective_format(image->format, image->bpp);
+ switch (ef) {
+ case XCB_IMAGE_FORMAT_XY_PIXMAP:
+ image->stride = xcb_roundup(image->width, image->scanline_pad) >> 3;
+ image->size = image->height * image->stride * image->depth;
+ break;
+ case XCB_IMAGE_FORMAT_Z_PIXMAP:
+ image->stride = xcb_roundup((uint32_t)image->width *
+ (uint32_t)image->bpp,
+ image->scanline_pad) >> 3;
+ image->size = image->height * image->stride;
+ break;
+ default:
+ assert(0);
+ }
+}
+
+
+xcb_image_t *
+xcb_image_create_native (xcb_connection_t * c,
+ uint16_t width,
+ uint16_t height,
+ xcb_image_format_t format,
+ uint8_t depth,
+ void * base,
+ uint32_t bytes,
+ uint8_t * data)
+{
+ const xcb_setup_t * setup = xcb_get_setup(c);
+ xcb_format_t * fmt;
+ xcb_image_format_t ef = format;
+
+ if (ef == XCB_IMAGE_FORMAT_Z_PIXMAP && depth == 1)
+ ef = XCB_IMAGE_FORMAT_XY_PIXMAP;
+ switch (ef) {
+ case XCB_IMAGE_FORMAT_XY_BITMAP:
+ if (depth != 1)
+ return 0;
+ /* fall through */
+ case XCB_IMAGE_FORMAT_XY_PIXMAP:
+ if (depth > 1) {
+ fmt = find_format_by_depth(setup, depth);
+ if (!fmt)
+ return 0;
+ }
+ return xcb_image_create(width, height, format,
+ setup->bitmap_format_scanline_pad,
+ depth, depth, setup->bitmap_format_scanline_unit,
+ setup->image_byte_order,
+ setup->bitmap_format_bit_order,
+ base, bytes, data);
+ case XCB_IMAGE_FORMAT_Z_PIXMAP:
+ fmt = find_format_by_depth(setup, depth);
+ if (!fmt)
+ return 0;
+ return xcb_image_create(width, height, format,
+ fmt->scanline_pad,
+ fmt->depth, fmt->bits_per_pixel, 0,
+ setup->image_byte_order,
+ XCB_IMAGE_ORDER_MSB_FIRST,
+ base, bytes, data);
+ default:
+ assert(0);
+ }
+ assert(0);
+}
+
+
+xcb_image_t *
+xcb_image_create (uint16_t width,
+ uint16_t height,
+ xcb_image_format_t format,
+ uint8_t xpad,
+ uint8_t depth,
+ uint8_t bpp,
+ uint8_t unit,
+ xcb_image_order_t byte_order,
+ xcb_image_order_t bit_order,
+ void * base,
+ uint32_t bytes,
+ uint8_t * data)
+{
+ xcb_image_t * image;
+
+ if (unit == 0) {
+ switch (format) {
+ case XCB_IMAGE_FORMAT_XY_BITMAP:
+ case XCB_IMAGE_FORMAT_XY_PIXMAP:
+ unit = 32;
+ break;
+ case XCB_IMAGE_FORMAT_Z_PIXMAP:
+ if (bpp == 1) {
+ unit = 32;
+ break;
+ }
+ if (bpp < 8) {
+ unit = 8;
+ break;
+ }
+ unit = bpp;
+ break;
+ }
+ }
+ if (!format_valid(depth, bpp, unit, format, xpad))
+ return 0;
+ image = malloc(sizeof(*image));
+ if (image == 0)
+ return 0;
+ image->width = width;
+ image->height = height;
+ image->format = format;
+ image->scanline_pad = xpad;
+ image->depth = depth;
+ image->bpp = bpp;
+ image->unit = unit;
+ image->plane_mask = xcb_mask(depth);
+ image->byte_order = byte_order;
+ image->bit_order = bit_order;
+ xcb_image_annotate(image);
+
+ /*
+ * Ways this function can be called:
+ * * with data: we fail if bytes isn't
+ * large enough, else leave well enough alone.
+ * * with base and !data: if bytes is zero, we
+ * default; otherwise we fail if bytes isn't
+ * large enough, else fill in data
+ * * with !base and !data: we malloc storage
+ * for the data, save that address as the base,
+ * and fail if malloc does.
+ *
+ * When successful, we establish the invariant that data
+ * points at sufficient storage that may have been
+ * supplied, and base is set iff it should be
+ * auto-freed when the image is destroyed.
+ *
+ * Except as a special case when base = 0 && data == 0 &&
+ * bytes == ~0 we just return the image structure and let
+ * the caller deal with getting the allocation right.
+ */
+ if (!base && !data && bytes == ~0) {
+ image->base = 0;
+ image->data = 0;
+ return image;
+ }
+ if (!base && data && bytes == 0)
+ bytes = image->size;
+ image->base = base;
+ image->data = data;
+ if (!image->data) {
+ if (image->base) {
+ image->data = image->base;
+ } else {
+ bytes = image->size;
+ image->base = malloc(bytes);
+ image->data = image->base;
+ }
+ }
+ if (!image->data || bytes < image->size) {
+ free(image);
+ return 0;
+ }
+ return image;
+}
+
+
+void
+xcb_image_destroy (xcb_image_t *image)
+{
+ if (image->base)
+ free (image->base);
+ free (image);
+}
+
+
+xcb_image_t *
+xcb_image_get (xcb_connection_t * conn,
+ xcb_drawable_t draw,
+ int16_t x,
+ int16_t y,
+ uint16_t width,
+ uint16_t height,
+ uint32_t plane_mask,
+ xcb_image_format_t format)
+{
+ xcb_get_image_cookie_t image_cookie;
+ xcb_get_image_reply_t * imrep;
+ xcb_image_t * image = 0;
+ uint32_t bytes;
+ uint8_t * data;
+
+ image_cookie = xcb_get_image(conn, format, draw, x, y,
+ width, height, plane_mask);
+ imrep = xcb_get_image_reply(conn, image_cookie, 0);
+ if (!imrep)
+ return 0;
+ bytes = xcb_get_image_data_length(imrep);
+ data = xcb_get_image_data(imrep);
+ switch (format) {
+ case XCB_IMAGE_FORMAT_XY_PIXMAP:
+ plane_mask &= xcb_mask(imrep->depth);
+ if (plane_mask != xcb_mask(imrep->depth)) {
+ xcb_image_t * tmp_image =
+ xcb_image_create_native(conn, width, height, format,
+ imrep->depth, 0, 0, 0);
+
+ if (!tmp_image) {
+ free(imrep);
+ return 0;
+ }
+
+ int i;
+ uint32_t rpm = plane_mask;
+ uint8_t * src_plane = image->data;
+ uint8_t * dst_plane = tmp_image->data;
+ uint32_t size = image->height * image->stride;
+
+ if (tmp_image->bit_order == XCB_IMAGE_ORDER_MSB_FIRST)
+ rpm = xcb_bit_reverse(plane_mask, imrep->depth);
+ for (i = 0; i < imrep->depth; i++) {
+ if (rpm & 1) {
+ memcpy(dst_plane, src_plane, size);
+ src_plane += size;
+ } else {
+ memset(dst_plane, 0, size);
+ }
+ dst_plane += size;
+ }
+ tmp_image->plane_mask = plane_mask;
+ image = tmp_image;
+ free(imrep);
+ break;
+ }
+ /* fall through */
+ case XCB_IMAGE_FORMAT_Z_PIXMAP:
+ image = xcb_image_create_native(conn, width, height, format,
+ imrep->depth, imrep, bytes, data);
+ if (!image) {
+ free(imrep);
+ return 0;
+ }
+ break;
+ default:
+ assert(0);
+ }
+ assert(bytes == image->size);
+ return image;
+}
+
+
+xcb_image_t *
+xcb_image_native (xcb_connection_t * c,
+ xcb_image_t * image,
+ int convert)
+{
+ xcb_image_t * tmp_image = 0;
+ const xcb_setup_t * setup = xcb_get_setup(c);
+ xcb_format_t * fmt = 0;
+ xcb_image_format_t ef = effective_format(image->format, image->bpp);
+ uint8_t bpp = 1;
+
+ if (image->depth > 1 || ef == XCB_IMAGE_FORMAT_Z_PIXMAP) {
+ fmt = find_format_by_depth(setup, image->depth);
+ /* XXX For now, we don't do depth conversions, even
+ for xy-pixmaps */
+ if (!fmt)
+ return 0;
+ bpp = fmt->bits_per_pixel;
+ }
+ switch (ef) {
+ case XCB_IMAGE_FORMAT_XY_PIXMAP:
+ if (setup->bitmap_format_scanline_unit != image->unit ||
+ setup->bitmap_format_scanline_pad != image->scanline_pad ||
+ setup->image_byte_order != image->byte_order ||
+ setup->bitmap_format_bit_order != image->bit_order ||
+ bpp != image->bpp) {
+ if (!convert)
+ return 0;
+ tmp_image =
+ xcb_image_create(image->width, image->height, image->format,
+ setup->bitmap_format_scanline_pad,
+ image->depth, bpp,
+ setup->bitmap_format_scanline_unit,
+ setup->image_byte_order,
+ setup->bitmap_format_bit_order,
+ 0, 0, 0);
+ if (!tmp_image)
+ return 0;
+ }
+ break;
+ case XCB_IMAGE_FORMAT_Z_PIXMAP:
+ if (fmt->scanline_pad != image->scanline_pad ||
+ setup->image_byte_order != image->byte_order ||
+ bpp != image->bpp) {
+ if (!convert)
+ return 0;
+ tmp_image =
+ xcb_image_create(image->width, image->height, image->format,
+ fmt->scanline_pad,
+ image->depth, bpp, 0,
+ setup->image_byte_order,
+ XCB_IMAGE_ORDER_MSB_FIRST,
+ 0, 0, 0);
+ if (!tmp_image)
+ return 0;
+ }
+ break;
+ default:
+ assert(0);
+ }
+ if (tmp_image) {
+ if (!xcb_image_convert(image, tmp_image)) {
+ xcb_image_destroy(tmp_image);
+ return 0;
+ }
+ image = tmp_image;
+ }
+ return image;
+}
+
+
+xcb_void_cookie_t
+xcb_image_put (xcb_connection_t * conn,
+ xcb_drawable_t draw,
+ xcb_gcontext_t gc,
+ xcb_image_t * image,
+ int16_t x,
+ int16_t y,
+ uint8_t left_pad)
+{
+ return xcb_put_image(conn, image->format, draw, gc,
+ image->width, image->height,
+ x, y, left_pad,
+ image->depth,
+ image->size,
+ image->data);
+}
+
+
+
+/*
+ * Shm stuff
+ */
+
+xcb_image_t *
+xcb_image_shm_put (xcb_connection_t * conn,
+ xcb_drawable_t draw,
+ xcb_gcontext_t gc,
+ xcb_image_t * image,
+ xcb_shm_segment_info_t shminfo,
+ int16_t src_x,
+ int16_t src_y,
+ int16_t dest_x,
+ int16_t dest_y,
+ uint16_t src_width,
+ uint16_t src_height,
+ uint8_t send_event)
+{
+ if (!xcb_image_native(conn, image, 0))
+ return 0;
+ if (!shminfo.shmaddr)
+ return 0;
+ xcb_shm_put_image(conn, draw, gc,
+ image->width, image->height,
+ src_x, src_y, src_width, src_height,
+ dest_x, dest_y,
+ image->depth, image->format,
+ send_event,
+ shminfo.shmseg,
+ image->data - shminfo.shmaddr);
+ return image;
+}
+
+
+int
+xcb_image_shm_get (xcb_connection_t * conn,
+ xcb_drawable_t draw,
+ xcb_image_t * image,
+ xcb_shm_segment_info_t shminfo,
+ int16_t x,
+ int16_t y,
+ uint32_t plane_mask)
+{
+ xcb_shm_get_image_reply_t * setup;
+ xcb_shm_get_image_cookie_t cookie;
+ xcb_generic_error_t * err = 0;
+
+ if (!shminfo.shmaddr)
+ return 0;
+ cookie = xcb_shm_get_image(conn, draw,
+ x, y,
+ image->width, image->height,
+ plane_mask,
+ image->format,
+ shminfo.shmseg,
+ image->data - shminfo.shmaddr);
+ setup = xcb_shm_get_image_reply(conn, cookie, &err);
+ if (err) {
+ fprintf(stderr, "ShmGetImageReply error %d\n", (int)err->error_code);
+ free(err);
+ return 0;
+ } else {
+ free (setup);
+ return 1;
+ }
+}
+
+
+static uint32_t
+xy_image_byte (xcb_image_t *image, uint32_t x)
+{
+ x >>= 3;
+ if (image->byte_order == image->bit_order)
+ return x;
+ switch (image->unit) {
+ default:
+ case 8:
+ return x;
+ case 16:
+ return x ^ 1;
+ case 32:
+ return x ^ 3;
+ }
+}
+
+static uint32_t
+xy_image_bit (xcb_image_t *image, uint32_t x)
+{
+ x &= 7;
+ if (image->bit_order == XCB_IMAGE_ORDER_MSB_FIRST)
+ x = 7 - x;
+ return x;
+}
+
+/* GetPixel/PutPixel */
+
+/* XXX this is the most hideously done cut-and-paste
+ to below. Any bugs fixed there should be fixed here
+ and vice versa. */
+void
+xcb_image_put_pixel (xcb_image_t *image,
+ uint32_t x,
+ uint32_t y,
+ uint32_t pixel)
+{
+ uint8_t *row;
+
+ if (x > image->width || y > image->height)
+ return;
+ row = image->data + (y * image->stride);
+ switch (effective_format(image->format, image->bpp)) {
+ case XCB_IMAGE_FORMAT_XY_BITMAP:
+ case XCB_IMAGE_FORMAT_XY_PIXMAP:
+ /* block */ {
+ int p;
+ uint32_t plane_mask = image->plane_mask;
+ uint8_t * plane = row;
+ uint32_t byte = xy_image_byte(image, x);
+ uint32_t bit = xy_image_bit(image,x);
+ uint8_t mask = 1 << bit;
+
+ for (p = image->bpp - 1; p >= 0; p--) {
+ if ((plane_mask >> p) & 1) {
+ uint8_t * bp = plane + byte;
+ uint8_t this_bit = ((pixel >> p) & 1) << bit;
+ *bp = (*bp & ~mask) | this_bit;
+ }
+ plane += image->stride * image->height;
+ }
+ }
+ break;
+ case XCB_IMAGE_FORMAT_Z_PIXMAP:
+ switch (image->bpp) {
+ uint32_t mask;
+ case 4:
+ mask = 0xf;
+ pixel &= 0xf;
+ if ((x & 1) ==
+ (image->byte_order == XCB_IMAGE_ORDER_MSB_FIRST)) {
+ pixel <<= 4;
+ mask <<= 4;
+ }
+ row[x >> 1] = (row[x >> 1] & ~mask) | pixel;
+ break;
+ case 8:
+ row[x] = pixel;
+ break;
+ case 16:
+ switch (image->byte_order) {
+ case XCB_IMAGE_ORDER_LSB_FIRST:
+ row[x << 1] = pixel;
+ row[(x << 1) + 1] = pixel >> 8;
+ break;
+ case XCB_IMAGE_ORDER_MSB_FIRST:
+ row[x << 1] = pixel >> 8;
+ row[(x << 1) + 1] = pixel;
+ break;
+ }
+ break;
+ case 24:
+ switch (image->byte_order) {
+ case XCB_IMAGE_ORDER_LSB_FIRST:
+ row[x * 3] = pixel;
+ row[x * 3 + 1] = pixel >> 8;
+ row[x * 3 + 2] = pixel >> 16;
+ break;
+ case XCB_IMAGE_ORDER_MSB_FIRST:
+ row[x * 3] = pixel >> 16;
+ row[x * 3 + 1] = pixel >> 8;
+ row[x * 3 + 2] = pixel;
+ break;
+ }
+ break;
+ case 32:
+ switch (image->byte_order) {
+ case XCB_IMAGE_ORDER_LSB_FIRST:
+ row[x << 2] = pixel;
+ row[(x << 2) + 1] = pixel >> 8;
+ row[(x << 2) + 2] = pixel >> 16;
+ row[(x << 2) + 3] = pixel >> 24;
+ break;
+ case XCB_IMAGE_ORDER_MSB_FIRST:
+ row[x << 2] = pixel >> 24;
+ row[(x << 2) + 1] = pixel >> 16;
+ row[(x << 2) + 2] = pixel >> 8;
+ row[(x << 2) + 3] = pixel;
+ break;
+ }
+ break;
+ default:
+ assert(0);
+ }
+ break;
+ default:
+ assert(0);
+ }
+}
+
+
+/* XXX this is the most hideously done cut-and-paste
+ from above. Any bugs fixed there should be fixed here
+ and vice versa. */
+uint32_t
+xcb_image_get_pixel (xcb_image_t *image,
+ uint32_t x,
+ uint32_t y)
+{
+ uint32_t pixel = 0;
+ uint8_t *row;
+
+ assert(x < image->width && y < image->height);
+ row = image->data + (y * image->stride);
+ switch (effective_format(image->format, image->bpp)) {
+ case XCB_IMAGE_FORMAT_XY_BITMAP:
+ case XCB_IMAGE_FORMAT_XY_PIXMAP:
+ /* block */ {
+ int p;
+ uint32_t plane_mask = image->plane_mask;
+ uint8_t * plane = row;
+ uint32_t byte = xy_image_byte(image, x);
+ uint32_t bit = xy_image_bit(image,x);
+
+ for (p = image->bpp - 1; p >= 0; p--) {
+ pixel <<= 1;
+ if ((plane_mask >> p) & 1) {
+ uint8_t * bp = plane + byte;
+ pixel |= (*bp >> bit) & 1;
+ }
+ plane += image->stride * image->height;
+ }
+ }
+ return pixel;
+ case XCB_IMAGE_FORMAT_Z_PIXMAP:
+ switch (image->bpp) {
+ case 4:
+ if ((x & 1) == (image->byte_order == XCB_IMAGE_ORDER_MSB_FIRST))
+ return row[x >> 1] >> 4;
+ return row[x >> 1] & 0xf;
+ case 8:
+ return row[x];
+ case 16:
+ switch (image->byte_order) {
+ case XCB_IMAGE_ORDER_LSB_FIRST:
+ pixel = row[x << 1];
+ pixel |= row[(x << 1) + 1] << 8;
+ break;
+ case XCB_IMAGE_ORDER_MSB_FIRST:
+ pixel = row[x << 1] << 8;
+ pixel |= row[(x << 1) + 1];
+ break;
+ }
+ break;
+ case 24:
+ switch (image->byte_order) {
+ case XCB_IMAGE_ORDER_LSB_FIRST:
+ pixel = row[x * 3];
+ pixel |= row[x * 3 + 1] << 8;
+ pixel |= row[x * 3 + 2] << 16;
+ break;
+ case XCB_IMAGE_ORDER_MSB_FIRST:
+ pixel = row[x * 3] << 16;
+ pixel |= row[x * 3 + 1] << 8;
+ pixel |= row[x * 3 + 2];
+ break;
+ }
+ break;
+ case 32:
+ switch (image->byte_order) {
+ case XCB_IMAGE_ORDER_LSB_FIRST:
+ pixel = row[x << 2];
+ pixel |= row[(x << 2) + 1] << 8;
+ pixel |= row[(x << 2) + 2] << 16;
+ pixel |= row[(x << 2) + 3] << 24;
+ break;
+ case XCB_IMAGE_ORDER_MSB_FIRST:
+ pixel = row[x << 2] << 24;
+ pixel |= row[(x << 2) + 1] << 16;
+ pixel |= row[(x << 2) + 2] << 8;
+ pixel |= row[(x << 2) + 3];
+ break;
+ }
+ break;
+ default:
+ assert(0);
+ }
+ return pixel;
+ default:
+ assert(0);
+ }
+}
+
+
+xcb_image_t *
+xcb_image_create_from_bitmap_data (uint8_t * data,
+ uint32_t width,
+ uint32_t height)
+{
+ return xcb_image_create(width, height, XCB_IMAGE_FORMAT_XY_PIXMAP,
+ 8, 1, 1, 8,
+ XCB_IMAGE_ORDER_LSB_FIRST,
+ XCB_IMAGE_ORDER_LSB_FIRST,
+ 0, 0, data);
+}
+
+
+/*
+ * (Adapted from libX11.)
+ *
+ * xcb_create_pixmap_from_bitmap_data: Routine to make a pixmap of
+ * given depth from user supplied bitmap data.
+ * D is any drawable on the same screen that the pixmap will be used in.
+ * Data is a pointer to the bit data, and
+ * width & height give the size in bits of the pixmap.
+ *
+ * The following format is assumed for data:
+ *
+ * format=XY (will use XYPixmap for depth 1 and XYBitmap for larger)
+ * bit_order=LSBFirst
+ * padding=8
+ * bitmap_unit=8
+ */
+xcb_pixmap_t
+xcb_create_pixmap_from_bitmap_data (xcb_connection_t * display,
+ xcb_drawable_t d,
+ uint8_t * data,
+ uint32_t width,
+ uint32_t height,
+ uint32_t depth,
+ uint32_t fg,
+ uint32_t bg,
+ xcb_gcontext_t * gcp)
+{
+ xcb_pixmap_t pix;
+ xcb_image_t * image;
+ xcb_image_t * final_image;
+ xcb_gcontext_t gc;
+ uint32_t mask = 0;
+ xcb_params_gc_t gcv;
+
+ image = xcb_image_create_from_bitmap_data(data, width, height);
+ if (!image)
+ return 0;
+ if (depth > 1)
+ image->format = XCB_IMAGE_FORMAT_XY_BITMAP;
+ final_image = xcb_image_native(display, image, 1);
+ if (!final_image) {
+ xcb_image_destroy(image);
+ return 0;
+ }
+ pix = xcb_generate_id(display);
+ xcb_create_pixmap(display, depth, pix, d, width, height);
+ gc = xcb_generate_id(display);
+ XCB_AUX_ADD_PARAM(&mask, &gcv, foreground, fg);
+ XCB_AUX_ADD_PARAM(&mask, &gcv, background, bg);
+ xcb_aux_create_gc(display, gc, pix, mask, &gcv);
+ xcb_image_put(display, pix, gc, final_image, 0, 0, 0);
+ if (final_image != image)
+ xcb_image_destroy(final_image);
+ xcb_image_destroy(image);
+ if (gcp)
+ *gcp = gc;
+ else
+ xcb_free_gc(display, gc);
+ return pix;
+}
+
+
+/* Thanks to Keith Packard <keithp@keithp.com> for this code */
+static void
+swap_image(uint8_t * src,
+ uint32_t src_stride,
+ uint8_t * dst,
+ uint32_t dst_stride,
+ uint32_t height,
+ uint32_t byteswap,
+ int bitswap,
+ int nibbleswap)
+{
+ while (height--) {
+ uint32_t s;
+
+ for (s = 0; s < src_stride; s++) {
+ uint8_t b;
+ uint32_t d = s ^ byteswap;
+
+ if (d > dst_stride)
+ continue;
+
+ b = src[s];
+ if (bitswap)
+ b = xcb_bit_reverse(b, 8);
+ if (nibbleswap)
+ b = (b << 4) | (b >> 4);
+ dst[d] = b;
+ }
+ src += src_stride;
+ dst += dst_stride;
+ }
+}
+
+/* Which order are bytes in (low two bits), given
+ * code which accesses an image one byte at a time
+ */
+static uint32_t
+byte_order(xcb_image_t *i)
+{
+ uint32_t flip = i->byte_order == XCB_IMAGE_ORDER_MSB_FIRST;
+
+ switch (i->bpp) {
+ default:
+ case 8:
+ return 0;
+ case 16:
+ return flip;
+ case 32:
+ return flip | (flip << 1);
+ }
+}
+
+static uint32_t
+bit_order(xcb_image_t *i)
+{
+ uint32_t flip = i->byte_order != i->bit_order;
+
+ switch (i->unit) {
+ default:
+ case 8:
+ return 0;
+ case 16:
+ return flip;
+ case 32:
+ return flip | (flip << 1);
+ }
+}
+
+/* Convert from one byte order to another by flipping the
+ * low two bits of the byte index along a scanline
+ */
+static uint32_t
+conversion_byte_swap(xcb_image_t *src, xcb_image_t *dst)
+{
+ xcb_image_format_t ef = effective_format(src->format, src->bpp);
+
+ /* src_ef == dst_ef in all callers of this function */
+ if (ef == XCB_IMAGE_FORMAT_XY_PIXMAP) {
+ return bit_order(src) ^ bit_order(dst);
+ } else {
+ /* src_bpp == dst_bpp in all callers of this function */
+ return byte_order(src) ^ byte_order(dst);
+ }
+}
+
+xcb_image_t *
+xcb_image_convert (xcb_image_t * src,
+ xcb_image_t * dst)
+{
+ xcb_image_format_t ef = effective_format(src->format, src->bpp);
+
+ /* Things will go horribly wrong here if a bad
+ image is passed in, so we check some things
+ up front just to be nice. */
+ assert(image_format_valid(src));
+ assert(image_format_valid(dst));
+
+ /* images must be the same size
+ * (yes, we could copy a sub-set)
+ */
+ if (src->width != dst->width ||
+ src->height != dst->height)
+ return 0;
+
+ if (ef == effective_format(dst->format, dst->bpp) &&
+ src->bpp == dst->bpp)
+ {
+ if (src->unit == dst->unit &&
+ src->scanline_pad == dst->scanline_pad &&
+ src->byte_order == dst->byte_order &&
+ (ef == XCB_IMAGE_FORMAT_Z_PIXMAP ||
+ src->bit_order == dst->bit_order)) {
+ memcpy(dst->data, src->data, src->size);
+ } else {
+ int bitswap = 0;
+ int nibbleswap = 0;
+ uint32_t byteswap = conversion_byte_swap(src, dst);
+ uint32_t height = src->height;;
+
+ if (ef == XCB_IMAGE_FORMAT_Z_PIXMAP) {
+ if (src->bpp == 4 && src->byte_order != dst->byte_order)
+ nibbleswap = 1;
+ } else {
+ if (src->bit_order != dst->bit_order)
+ bitswap = 1;
+ height *= src->depth;
+ }
+ swap_image (src->data, src->stride, dst->data, dst->stride,
+ height, byteswap, bitswap, nibbleswap);
+ }
+ }
+ else
+ {
+ uint32_t x;
+ uint32_t y;
+ /* General case: Slow pixel copy. Should we optimize
+ Z24<->Z32 copies of either endianness? */
+ for (y = 0; y < src->height; y++) {
+ for (x = 0; x < src->width; x++) {
+ uint32_t pixel = xcb_image_get_pixel(src, x, y);
+ xcb_image_put_pixel(dst, x, y, pixel);
+ }
+ }
+ }
+ return dst;
+}
+
+xcb_image_t *
+xcb_image_subimage(xcb_image_t * image,
+ uint32_t x,
+ uint32_t y,
+ uint32_t width,
+ uint32_t height,
+ void * base,
+ uint32_t bytes,
+ uint8_t * data)
+{
+ int i, j;
+ xcb_image_t * result;
+
+ if (x + width > image->width)
+ return 0;
+ if (y + height > image->height)
+ return 0;
+ result = xcb_image_create(width, height, image->format,
+ image->scanline_pad, image->depth,
+ image->bpp, image->unit, image->byte_order,
+ image->bit_order,
+ base, bytes, data);
+ if (!result)
+ return 0;
+ /* XXX FIXME For now, lose on performance. Sorry. */
+ for (j = 0; j < height; j++) {
+ for (i = 0; i < width; i++) {
+ uint32_t pixel = xcb_image_get_pixel(image, x + i, y + j);
+ xcb_image_put_pixel(result, i, j, pixel);
+ }
+ }
+ return result;
+}
diff --git a/src/3rdparty/xcb/xcb-util-keysyms/keysyms.c b/src/3rdparty/xcb/xcb-util-keysyms/keysyms.c
new file mode 100644
index 0000000000..7584cccf39
--- /dev/null
+++ b/src/3rdparty/xcb/xcb-util-keysyms/keysyms.c
@@ -0,0 +1,498 @@
+/*
+ * Copyright © 2008 Ian Osgood <iano@quirkster.com>
+ * Copyright © 2008 Jamey Sharp <jamey@minilop.net>
+ * Copyright © 2008 Josh Triplett <josh@freedesktop.org>
+ * Copyright © 2008 Ulrich Eckhardt <doomster@knuut.de>
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or
+ * their institutions shall not be used in advertising or otherwise to
+ * promote the sale, use or other dealings in this Software without
+ * prior written authorization from the authors.
+ */
+
+#include <stdlib.h>
+
+#include <xcb/xcb.h>
+#define XK_MISCELLANY
+#define XK_XKB_KEYS
+#define XK_LATIN1
+#define XK_LATIN2
+#define XK_LATIN3
+#define XK_LATIN4
+#define XK_CYRILLIC
+#define XK_GREEK
+#define XK_ARMENIAN
+#include <X11/keysymdef.h>
+
+#include "xcb_keysyms.h"
+
+/* Private declaration */
+enum tag_t {
+ TAG_COOKIE,
+ TAG_VALUE
+};
+
+struct _XCBKeySymbols
+{
+ xcb_connection_t *c;
+ enum tag_t tag;
+ union {
+ xcb_get_keyboard_mapping_cookie_t cookie;
+ xcb_get_keyboard_mapping_reply_t *reply;
+ } u;
+};
+
+static void xcb_convert_case(xcb_keysym_t sym,
+ xcb_keysym_t *lower,
+ xcb_keysym_t *upper);
+
+static void xcb_key_symbols_get_reply (xcb_key_symbols_t *syms,
+ xcb_generic_error_t **e);
+
+/* public implementation */
+
+xcb_key_symbols_t *
+xcb_key_symbols_alloc (xcb_connection_t *c)
+{
+ xcb_key_symbols_t *syms;
+ xcb_keycode_t min_keycode;
+ xcb_keycode_t max_keycode;
+
+ if (!c)
+ return NULL;
+
+ syms = malloc (sizeof (xcb_key_symbols_t));
+ if (!syms)
+ return NULL;
+
+ syms->c = c;
+ syms->tag = TAG_COOKIE;
+
+ min_keycode = xcb_get_setup (c)->min_keycode;
+ max_keycode = xcb_get_setup (c)->max_keycode;
+
+ syms->u.cookie = xcb_get_keyboard_mapping(c,
+ min_keycode,
+ max_keycode - min_keycode + 1);
+
+ return syms;
+}
+
+void
+xcb_key_symbols_free (xcb_key_symbols_t *syms)
+{
+ if (syms)
+ {
+ if (syms->tag == TAG_VALUE)
+ free (syms->u.reply);
+ free (syms);
+ syms = NULL;
+ }
+}
+
+/* Use of the 'col' parameter:
+
+A list of KeySyms is associated with each KeyCode. The list is intended
+to convey the set of symbols on the corresponding key. If the list
+(ignoring trailing NoSymbol entries) is a single KeySym ``K'', then the
+list is treated as if it were the list ``K NoSymbol K NoSymbol''. If the
+list (ignoring trailing NoSymbol entries) is a pair of KeySyms ``K1
+K2'', then the list is treated as if it were the list ``K1 K2 K1 K2''.
+If the list (ignoring trailing NoSymbol entries) is a triple of KeySyms
+``K1 K2 K3'', then the list is treated as if it were the list ``K1 K2 K3
+NoSymbol''. When an explicit ``void'' element is desired in the list,
+the value VoidSymbol can be used.
+
+The first four elements of the list are split into two groups of
+KeySyms. Group 1 contains the first and second KeySyms; Group 2 contains
+the third and fourth KeySyms. Within each group, if the second element
+of the group is NoSymbol , then the group should be treated as if the
+second element were the same as the first element, except when the first
+element is an alphabetic KeySym ``K'' for which both lowercase and
+uppercase forms are defined. In that case, the group should be treated
+as if the first element were the lowercase form of ``K'' and the second
+element were the uppercase form of ``K.''
+
+The standard rules for obtaining a KeySym from a KeyPress event make use
+of only the Group 1 and Group 2 KeySyms; no interpretation of other
+KeySyms in the list is given. Which group to use is determined by the
+modifier state. Switching between groups is controlled by the KeySym
+named MODE SWITCH, by attaching that KeySym to some KeyCode and
+attaching that KeyCode to any one of the modifiers Mod1 through Mod5.
+This modifier is called the group modifier. For any KeyCode, Group 1 is
+used when the group modifier is off, and Group 2 is used when the group
+modifier is on.
+
+The Lock modifier is interpreted as CapsLock when the KeySym named
+XK_Caps_Lock is attached to some KeyCode and that KeyCode is attached to
+the Lock modifier. The Lock modifier is interpreted as ShiftLock when
+the KeySym named XK_Shift_Lock is attached to some KeyCode and that
+KeyCode is attached to the Lock modifier. If the Lock modifier could be
+interpreted as both CapsLock and ShiftLock, the CapsLock interpretation
+is used.
+
+The operation of keypad keys is controlled by the KeySym named
+XK_Num_Lock, by attaching that KeySym to some KeyCode and attaching that
+KeyCode to any one of the modifiers Mod1 through Mod5 . This modifier is
+called the numlock modifier. The standard KeySyms with the prefix
+``XK_KP_'' in their name are called keypad KeySyms; these are KeySyms
+with numeric value in the hexadecimal range 0xFF80 to 0xFFBD inclusive.
+In addition, vendor-specific KeySyms in the hexadecimal range 0x11000000
+to 0x1100FFFF are also keypad KeySyms.
+
+Within a group, the choice of KeySym is determined by applying the first
+rule that is satisfied from the following list:
+
+* The numlock modifier is on and the second KeySym is a keypad KeySym. In
+ this case, if the Shift modifier is on, or if the Lock modifier is on
+ and is interpreted as ShiftLock, then the first KeySym is used,
+ otherwise the second KeySym is used.
+
+* The Shift and Lock modifiers are both off. In this case, the first
+ KeySym is used.
+
+* The Shift modifier is off, and the Lock modifier is on and is
+ interpreted as CapsLock. In this case, the first KeySym is used, but
+ if that KeySym is lowercase alphabetic, then the corresponding
+ uppercase KeySym is used instead.
+
+* The Shift modifier is on, and the Lock modifier is on and is
+ interpreted as CapsLock. In this case, the second KeySym is used, but
+ if that KeySym is lowercase alphabetic, then the corresponding
+ uppercase KeySym is used instead.
+
+* The Shift modifier is on, or the Lock modifier is on and is
+ interpreted as ShiftLock, or both. In this case, the second KeySym is
+ used.
+
+*/
+
+xcb_keysym_t xcb_key_symbols_get_keysym (xcb_key_symbols_t *syms,
+ xcb_keycode_t keycode,
+ int col)
+{
+ xcb_keysym_t *keysyms;
+ xcb_keysym_t keysym_null = { XCB_NO_SYMBOL };
+ xcb_keysym_t lsym;
+ xcb_keysym_t usym;
+ xcb_keycode_t min_keycode;
+ xcb_keycode_t max_keycode;
+ int per;
+
+ if (!syms)
+ return keysym_null;
+
+ xcb_key_symbols_get_reply (syms, NULL);
+
+ keysyms = xcb_get_keyboard_mapping_keysyms (syms->u.reply);
+ min_keycode = xcb_get_setup (syms->c)->min_keycode;
+ max_keycode = xcb_get_setup (syms->c)->max_keycode;
+
+ per = syms->u.reply->keysyms_per_keycode;
+ if ((col < 0) || ((col >= per) && (col > 3)) ||
+ (keycode < min_keycode) ||
+ (keycode > max_keycode))
+ return keysym_null;
+
+ keysyms = &keysyms[(keycode - min_keycode) * per];
+ if (col < 4)
+ {
+ if (col > 1)
+ {
+ while ((per > 2) && (keysyms[per - 1] == XCB_NO_SYMBOL))
+ per--;
+ if (per < 3)
+ col -= 2;
+ }
+ if ((per <= (col|1)) || (keysyms[col|1] == XCB_NO_SYMBOL))
+ {
+ xcb_convert_case(keysyms[col&~1], &lsym, &usym);
+ if (!(col & 1))
+ return lsym;
+ else if (usym == lsym)
+ return keysym_null;
+ else
+ return usym;
+ }
+ }
+ return keysyms[col];
+}
+
+xcb_keycode_t *
+xcb_key_symbols_get_keycode(xcb_key_symbols_t *syms,
+ xcb_keysym_t keysym)
+{
+ xcb_keysym_t ks;
+ int j, nresult = 0;
+ xcb_keycode_t i, min, max, *result = NULL, *result_np = NULL;
+
+ if(syms)
+ {
+ xcb_key_symbols_get_reply (syms, NULL);
+ min = xcb_get_setup(syms->c)->min_keycode;
+ max = xcb_get_setup(syms->c)->max_keycode;
+
+ for(j = 0; j < syms->u.reply->keysyms_per_keycode; j++)
+ for(i = min; i && i <= max; i++)
+ {
+ ks = xcb_key_symbols_get_keysym(syms, i, j);
+ if(ks == keysym)
+ {
+ nresult++;
+ result_np = realloc(result,
+ sizeof(xcb_keycode_t) * (nresult + 1));
+
+ if(result_np == NULL)
+ {
+ free(result);
+ return NULL;
+ }
+
+ result = result_np;
+ result[nresult - 1] = i;
+ result[nresult] = XCB_NO_SYMBOL;
+ }
+ }
+ }
+
+ return result;
+}
+
+xcb_keysym_t
+xcb_key_press_lookup_keysym (xcb_key_symbols_t *syms,
+ xcb_key_press_event_t *event,
+ int col)
+{
+ return xcb_key_symbols_get_keysym (syms, event->detail, col);
+}
+
+xcb_keysym_t
+xcb_key_release_lookup_keysym (xcb_key_symbols_t *syms,
+ xcb_key_release_event_t *event,
+ int col)
+{
+ return xcb_key_symbols_get_keysym (syms, event->detail, col);
+}
+
+int
+xcb_refresh_keyboard_mapping (xcb_key_symbols_t *syms,
+ xcb_mapping_notify_event_t *event)
+{
+ if (event->request == XCB_MAPPING_KEYBOARD && syms) {
+ if (syms->tag == TAG_VALUE) {
+ xcb_keycode_t min_keycode;
+ xcb_keycode_t max_keycode;
+
+ if (syms->u.reply) {
+ free (syms->u.reply);
+ syms->u.reply = NULL;
+ }
+ syms->tag = TAG_COOKIE;
+ min_keycode = xcb_get_setup (syms->c)->min_keycode;
+ max_keycode = xcb_get_setup (syms->c)->max_keycode;
+
+ syms->u.cookie = xcb_get_keyboard_mapping(syms->c,
+ min_keycode,
+ max_keycode - min_keycode + 1);
+
+ }
+ return 1;
+ }
+ return 0;
+}
+
+
+/* Tests for classes of symbols */
+
+int
+xcb_is_keypad_key (xcb_keysym_t keysym)
+{
+ return ((keysym >= XK_KP_Space) && (keysym <= XK_KP_Equal));
+}
+
+int
+xcb_is_private_keypad_key (xcb_keysym_t keysym)
+{
+ return ((keysym >= 0x11000000) && (keysym <= 0x1100FFFF));
+}
+
+int
+xcb_is_cursor_key (xcb_keysym_t keysym)
+{
+ return ((keysym >= XK_Home) && (keysym <= XK_Select));
+}
+
+int
+xcb_is_pf_key (xcb_keysym_t keysym)
+{
+ return ((keysym >= XK_KP_F1) && (keysym <= XK_KP_F4));
+}
+
+int
+xcb_is_function_key (xcb_keysym_t keysym)
+{
+ return ((keysym >= XK_F1) && (keysym <= XK_F35));
+}
+
+int
+xcb_is_misc_function_key (xcb_keysym_t keysym)
+{
+ return ((keysym >= XK_Select) && (keysym <= XK_Break));
+}
+
+int
+xcb_is_modifier_key (xcb_keysym_t keysym)
+{
+ return (((keysym >= XK_Shift_L) && (keysym <= XK_Hyper_R)) ||
+ ((keysym >= XK_ISO_Lock) && (keysym <= XK_ISO_Level5_Lock)) ||
+ (keysym == XK_Mode_switch) ||
+ (keysym == XK_Num_Lock));
+}
+
+/* private functions */
+
+void
+xcb_convert_case(xcb_keysym_t sym,
+ xcb_keysym_t *lower,
+ xcb_keysym_t *upper)
+{
+ *lower = sym;
+ *upper = sym;
+
+ switch(sym >> 8)
+ {
+ case 0: /* Latin 1 */
+ if ((sym >= XK_A) && (sym <= XK_Z))
+ *lower += (XK_a - XK_A);
+ else if ((sym >= XK_a) && (sym <= XK_z))
+ *upper -= (XK_a - XK_A);
+ else if ((sym >= XK_Agrave) && (sym <= XK_Odiaeresis))
+ *lower += (XK_agrave - XK_Agrave);
+ else if ((sym >= XK_agrave) && (sym <= XK_odiaeresis))
+ *upper -= (XK_agrave - XK_Agrave);
+ else if ((sym >= XK_Ooblique) && (sym <= XK_Thorn))
+ *lower += (XK_oslash - XK_Ooblique);
+ else if ((sym >= XK_oslash) && (sym <= XK_thorn))
+ *upper -= (XK_oslash - XK_Ooblique);
+ break;
+ case 1: /* Latin 2 */
+ /* Assume the KeySym is a legal value (ignore discontinuities) */
+ if (sym == XK_Aogonek)
+ *lower = XK_aogonek;
+ else if (sym >= XK_Lstroke && sym <= XK_Sacute)
+ *lower += (XK_lstroke - XK_Lstroke);
+ else if (sym >= XK_Scaron && sym <= XK_Zacute)
+ *lower += (XK_scaron - XK_Scaron);
+ else if (sym >= XK_Zcaron && sym <= XK_Zabovedot)
+ *lower += (XK_zcaron - XK_Zcaron);
+ else if (sym == XK_aogonek)
+ *upper = XK_Aogonek;
+ else if (sym >= XK_lstroke && sym <= XK_sacute)
+ *upper -= (XK_lstroke - XK_Lstroke);
+ else if (sym >= XK_scaron && sym <= XK_zacute)
+ *upper -= (XK_scaron - XK_Scaron);
+ else if (sym >= XK_zcaron && sym <= XK_zabovedot)
+ *upper -= (XK_zcaron - XK_Zcaron);
+ else if (sym >= XK_Racute && sym <= XK_Tcedilla)
+ *lower += (XK_racute - XK_Racute);
+ else if (sym >= XK_racute && sym <= XK_tcedilla)
+ *upper -= (XK_racute - XK_Racute);
+ break;
+ case 2: /* Latin 3 */
+ /* Assume the KeySym is a legal value (ignore discontinuities) */
+ if (sym >= XK_Hstroke && sym <= XK_Hcircumflex)
+ *lower += (XK_hstroke - XK_Hstroke);
+ else if (sym >= XK_Gbreve && sym <= XK_Jcircumflex)
+ *lower += (XK_gbreve - XK_Gbreve);
+ else if (sym >= XK_hstroke && sym <= XK_hcircumflex)
+ *upper -= (XK_hstroke - XK_Hstroke);
+ else if (sym >= XK_gbreve && sym <= XK_jcircumflex)
+ *upper -= (XK_gbreve - XK_Gbreve);
+ else if (sym >= XK_Cabovedot && sym <= XK_Scircumflex)
+ *lower += (XK_cabovedot - XK_Cabovedot);
+ else if (sym >= XK_cabovedot && sym <= XK_scircumflex)
+ *upper -= (XK_cabovedot - XK_Cabovedot);
+ break;
+ case 3: /* Latin 4 */
+ /* Assume the KeySym is a legal value (ignore discontinuities) */
+ if (sym >= XK_Rcedilla && sym <= XK_Tslash)
+ *lower += (XK_rcedilla - XK_Rcedilla);
+ else if (sym >= XK_rcedilla && sym <= XK_tslash)
+ *upper -= (XK_rcedilla - XK_Rcedilla);
+ else if (sym == XK_ENG)
+ *lower = XK_eng;
+ else if (sym == XK_eng)
+ *upper = XK_ENG;
+ else if (sym >= XK_Amacron && sym <= XK_Umacron)
+ *lower += (XK_amacron - XK_Amacron);
+ else if (sym >= XK_amacron && sym <= XK_umacron)
+ *upper -= (XK_amacron - XK_Amacron);
+ break;
+ case 6: /* Cyrillic */
+ /* Assume the KeySym is a legal value (ignore discontinuities) */
+ if (sym >= XK_Serbian_DJE && sym <= XK_Serbian_DZE)
+ *lower -= (XK_Serbian_DJE - XK_Serbian_dje);
+ else if (sym >= XK_Serbian_dje && sym <= XK_Serbian_dze)
+ *upper += (XK_Serbian_DJE - XK_Serbian_dje);
+ else if (sym >= XK_Cyrillic_YU && sym <= XK_Cyrillic_HARDSIGN)
+ *lower -= (XK_Cyrillic_YU - XK_Cyrillic_yu);
+ else if (sym >= XK_Cyrillic_yu && sym <= XK_Cyrillic_hardsign)
+ *upper += (XK_Cyrillic_YU - XK_Cyrillic_yu);
+ break;
+ case 7: /* Greek */
+ /* Assume the KeySym is a legal value (ignore discontinuities) */
+ if (sym >= XK_Greek_ALPHAaccent && sym <= XK_Greek_OMEGAaccent)
+ *lower += (XK_Greek_alphaaccent - XK_Greek_ALPHAaccent);
+ else if (sym >= XK_Greek_alphaaccent && sym <= XK_Greek_omegaaccent &&
+ sym != XK_Greek_iotaaccentdieresis &&
+ sym != XK_Greek_upsilonaccentdieresis)
+ *upper -= (XK_Greek_alphaaccent - XK_Greek_ALPHAaccent);
+ else if (sym >= XK_Greek_ALPHA && sym <= XK_Greek_OMEGA)
+ *lower += (XK_Greek_alpha - XK_Greek_ALPHA);
+ else if (sym >= XK_Greek_alpha && sym <= XK_Greek_omega &&
+ sym != XK_Greek_finalsmallsigma)
+ *upper -= (XK_Greek_alpha - XK_Greek_ALPHA);
+ break;
+ case 0x14: /* Armenian */
+ if (sym >= XK_Armenian_AYB && sym <= XK_Armenian_fe) {
+ *lower = sym | 1;
+ *upper = sym & ~1;
+ }
+ break;
+ }
+}
+
+void
+xcb_key_symbols_get_reply (xcb_key_symbols_t *syms,
+ xcb_generic_error_t **e)
+{
+ if (!syms)
+ return;
+
+ if (syms->tag == TAG_COOKIE)
+ {
+ syms->tag = TAG_VALUE;
+ syms->u.reply = xcb_get_keyboard_mapping_reply(syms->c,
+ syms->u.cookie,
+ e);
+ }
+}
diff --git a/src/3rdparty/xcb/xcb-util-renderutil/util.c b/src/3rdparty/xcb/xcb-util-renderutil/util.c
new file mode 100644
index 0000000000..2d8840d204
--- /dev/null
+++ b/src/3rdparty/xcb/xcb-util-renderutil/util.c
@@ -0,0 +1,251 @@
+/* Copyright © 2000 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include "xcb_renderutil.h"
+
+xcb_render_pictvisual_t *
+xcb_render_util_find_visual_format (const xcb_render_query_pict_formats_reply_t *formats,
+ const xcb_visualid_t visual)
+{
+ xcb_render_pictscreen_iterator_t screens;
+ xcb_render_pictdepth_iterator_t depths;
+ xcb_render_pictvisual_iterator_t visuals;
+ if (!formats)
+ return 0;
+ for (screens = xcb_render_query_pict_formats_screens_iterator(formats); screens.rem; xcb_render_pictscreen_next(&screens))
+ for (depths = xcb_render_pictscreen_depths_iterator(screens.data); depths.rem; xcb_render_pictdepth_next(&depths))
+ for (visuals = xcb_render_pictdepth_visuals_iterator(depths.data); visuals.rem; xcb_render_pictvisual_next(&visuals))
+ if (visuals.data->visual == visual)
+ return visuals.data;
+ return 0;
+}
+
+xcb_render_pictforminfo_t *
+xcb_render_util_find_format (const xcb_render_query_pict_formats_reply_t *formats,
+ unsigned long mask,
+ const xcb_render_pictforminfo_t *template,
+ int count)
+{
+ xcb_render_pictforminfo_iterator_t i;
+ if (!formats)
+ return 0;
+ for (i = xcb_render_query_pict_formats_formats_iterator(formats); i.rem; xcb_render_pictforminfo_next(&i))
+ {
+ if (mask & XCB_PICT_FORMAT_ID)
+ if (template->id != i.data->id)
+ continue;
+ if (mask & XCB_PICT_FORMAT_TYPE)
+ if (template->type != i.data->type)
+ continue;
+ if (mask & XCB_PICT_FORMAT_DEPTH)
+ if (template->depth != i.data->depth)
+ continue;
+ if (mask & XCB_PICT_FORMAT_RED)
+ if (template->direct.red_shift != i.data->direct.red_shift)
+ continue;
+ if (mask & XCB_PICT_FORMAT_RED_MASK)
+ if (template->direct.red_mask != i.data->direct.red_mask)
+ continue;
+ if (mask & XCB_PICT_FORMAT_GREEN)
+ if (template->direct.green_shift != i.data->direct.green_shift)
+ continue;
+ if (mask & XCB_PICT_FORMAT_GREEN_MASK)
+ if (template->direct.green_mask != i.data->direct.green_mask)
+ continue;
+ if (mask & XCB_PICT_FORMAT_BLUE)
+ if (template->direct.blue_shift != i.data->direct.blue_shift)
+ continue;
+ if (mask & XCB_PICT_FORMAT_BLUE_MASK)
+ if (template->direct.blue_mask != i.data->direct.blue_mask)
+ continue;
+ if (mask & XCB_PICT_FORMAT_ALPHA)
+ if (template->direct.alpha_shift != i.data->direct.alpha_shift)
+ continue;
+ if (mask & XCB_PICT_FORMAT_ALPHA_MASK)
+ if (template->direct.alpha_mask != i.data->direct.alpha_mask)
+ continue;
+ if (mask & XCB_PICT_FORMAT_COLORMAP)
+ if (template->colormap != i.data->colormap)
+ continue;
+ if (count-- == 0)
+ return i.data;
+ }
+ return 0;
+}
+
+xcb_render_pictforminfo_t *
+xcb_render_util_find_standard_format (const xcb_render_query_pict_formats_reply_t *formats,
+ xcb_pict_standard_t format)
+{
+ static const struct {
+ xcb_render_pictforminfo_t templ;
+ unsigned long mask;
+ } standardFormats[] = {
+ /* XCB_PICT_STANDARD_ARGB_32 */
+ {
+ {
+ 0, /* id */
+ XCB_RENDER_PICT_TYPE_DIRECT, /* type */
+ 32, /* depth */
+ { 0 }, /* pad */
+ { /* direct */
+ 16, /* direct.red */
+ 0xff, /* direct.red_mask */
+ 8, /* direct.green */
+ 0xff, /* direct.green_mask */
+ 0, /* direct.blue */
+ 0xff, /* direct.blue_mask */
+ 24, /* direct.alpha */
+ 0xff, /* direct.alpha_mask */
+ },
+ 0, /* colormap */
+ },
+ XCB_PICT_FORMAT_TYPE |
+ XCB_PICT_FORMAT_DEPTH |
+ XCB_PICT_FORMAT_RED |
+ XCB_PICT_FORMAT_RED_MASK |
+ XCB_PICT_FORMAT_GREEN |
+ XCB_PICT_FORMAT_GREEN_MASK |
+ XCB_PICT_FORMAT_BLUE |
+ XCB_PICT_FORMAT_BLUE_MASK |
+ XCB_PICT_FORMAT_ALPHA |
+ XCB_PICT_FORMAT_ALPHA_MASK,
+ },
+ /* XCB_PICT_STANDARD_RGB_24 */
+ {
+ {
+ 0, /* id */
+ XCB_RENDER_PICT_TYPE_DIRECT, /* type */
+ 24, /* depth */
+ { 0 }, /* pad */
+ { /* direct */
+ 16, /* direct.red */
+ 0xff, /* direct.red_MASK */
+ 8, /* direct.green */
+ 0xff, /* direct.green_MASK */
+ 0, /* direct.blue */
+ 0xff, /* direct.blue_MASK */
+ 0, /* direct.alpha */
+ 0x00, /* direct.alpha_MASK */
+ },
+ 0, /* colormap */
+ },
+ XCB_PICT_FORMAT_TYPE |
+ XCB_PICT_FORMAT_DEPTH |
+ XCB_PICT_FORMAT_RED |
+ XCB_PICT_FORMAT_RED_MASK |
+ XCB_PICT_FORMAT_GREEN |
+ XCB_PICT_FORMAT_GREEN_MASK |
+ XCB_PICT_FORMAT_BLUE |
+ XCB_PICT_FORMAT_BLUE_MASK |
+ XCB_PICT_FORMAT_ALPHA_MASK,
+ },
+ /* XCB_PICT_STANDARD_A_8 */
+ {
+ {
+ 0, /* id */
+ XCB_RENDER_PICT_TYPE_DIRECT, /* type */
+ 8, /* depth */
+ { 0 }, /* pad */
+ { /* direct */
+ 0, /* direct.red */
+ 0x00, /* direct.red_MASK */
+ 0, /* direct.green */
+ 0x00, /* direct.green_MASK */
+ 0, /* direct.blue */
+ 0x00, /* direct.blue_MASK */
+ 0, /* direct.alpha */
+ 0xff, /* direct.alpha_MASK */
+ },
+ 0, /* colormap */
+ },
+ XCB_PICT_FORMAT_TYPE |
+ XCB_PICT_FORMAT_DEPTH |
+ XCB_PICT_FORMAT_RED_MASK |
+ XCB_PICT_FORMAT_GREEN_MASK |
+ XCB_PICT_FORMAT_BLUE_MASK |
+ XCB_PICT_FORMAT_ALPHA |
+ XCB_PICT_FORMAT_ALPHA_MASK,
+ },
+ /* XCB_PICT_STANDARD_A_4 */
+ {
+ {
+ 0, /* id */
+ XCB_RENDER_PICT_TYPE_DIRECT, /* type */
+ 4, /* depth */
+ { 0 }, /* pad */
+ { /* direct */
+ 0, /* direct.red */
+ 0x00, /* direct.red_MASK */
+ 0, /* direct.green */
+ 0x00, /* direct.green_MASK */
+ 0, /* direct.blue */
+ 0x00, /* direct.blue_MASK */
+ 0, /* direct.alpha */
+ 0x0f, /* direct.alpha_MASK */
+ },
+ 0, /* colormap */
+ },
+ XCB_PICT_FORMAT_TYPE |
+ XCB_PICT_FORMAT_DEPTH |
+ XCB_PICT_FORMAT_RED_MASK |
+ XCB_PICT_FORMAT_GREEN_MASK |
+ XCB_PICT_FORMAT_BLUE_MASK |
+ XCB_PICT_FORMAT_ALPHA |
+ XCB_PICT_FORMAT_ALPHA_MASK,
+ },
+ /* XCB_PICT_STANDARD_A_1 */
+ {
+ {
+ 0, /* id */
+ XCB_RENDER_PICT_TYPE_DIRECT, /* type */
+ 1, /* depth */
+ { 0 }, /* pad */
+ { /* direct */
+ 0, /* direct.red */
+ 0x00, /* direct.red_MASK */
+ 0, /* direct.green */
+ 0x00, /* direct.green_MASK */
+ 0, /* direct.blue */
+ 0x00, /* direct.blue_MASK */
+ 0, /* direct.alpha */
+ 0x01, /* direct.alpha_MASK */
+ },
+ 0, /* colormap */
+ },
+ XCB_PICT_FORMAT_TYPE |
+ XCB_PICT_FORMAT_DEPTH |
+ XCB_PICT_FORMAT_RED_MASK |
+ XCB_PICT_FORMAT_GREEN_MASK |
+ XCB_PICT_FORMAT_BLUE_MASK |
+ XCB_PICT_FORMAT_ALPHA |
+ XCB_PICT_FORMAT_ALPHA_MASK,
+ },
+ };
+
+ if (format < 0 || format >= sizeof(standardFormats) / sizeof(*standardFormats))
+ return 0;
+
+ return xcb_render_util_find_format (formats,
+ standardFormats[format].mask,
+ &standardFormats[format].templ,
+ 0);
+}
diff --git a/src/3rdparty/xcb/xcb-util-wm/icccm.c b/src/3rdparty/xcb/xcb-util-wm/icccm.c
new file mode 100644
index 0000000000..ed623d08d1
--- /dev/null
+++ b/src/3rdparty/xcb/xcb-util-wm/icccm.c
@@ -0,0 +1,845 @@
+/*
+ * Copyright © 2008 Arnaud Fontaine <arnau@debian.org>
+ * Copyright © 2007-2008 Vincent Torri <vtorri@univ-evry.fr>
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or
+ * their institutions shall not be used in advertising or otherwise to
+ * promote the sale, use or other dealings in this Software without
+ * prior written authorization from the authors.
+ */
+
+#include <stdlib.h>
+#include <limits.h>
+#include <string.h>
+
+#include <xcb/xcb.h>
+
+#include "xcb_icccm.h"
+
+xcb_get_property_cookie_t
+xcb_icccm_get_text_property(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t property)
+{
+ return xcb_get_property(c, 0, window, property, XCB_GET_PROPERTY_TYPE_ANY, 0, UINT_MAX);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_text_property_unchecked(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t property)
+{
+ return xcb_get_property_unchecked(c, 0, window, property, XCB_GET_PROPERTY_TYPE_ANY, 0, UINT_MAX);
+}
+
+uint8_t
+xcb_icccm_get_text_property_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_icccm_get_text_property_reply_t *prop,
+ xcb_generic_error_t **e)
+{
+ xcb_get_property_reply_t *reply = xcb_get_property_reply(c, cookie, e);
+
+ if(!reply || reply->type == XCB_NONE) {
+ free(reply);
+ return 0;
+ }
+
+ prop->_reply = reply;
+ prop->encoding = prop->_reply->type;
+ prop->format = prop->_reply->format;
+ prop->name_len = xcb_get_property_value_length(prop->_reply);
+ prop->name = xcb_get_property_value(prop->_reply);
+
+ return 1;
+}
+
+void
+xcb_icccm_get_text_property_reply_wipe(xcb_icccm_get_text_property_reply_t *prop)
+{
+ free(prop->_reply);
+}
+
+/* WM_NAME */
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_name_checked(xcb_connection_t *c, xcb_window_t window,
+ xcb_atom_t encoding, uint8_t format,
+ uint32_t name_len, const char *name)
+{
+ return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window,
+ XCB_ATOM_WM_NAME, encoding, format,
+ name_len, name);
+}
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_name(xcb_connection_t *c, xcb_window_t window, xcb_atom_t encoding,
+ uint8_t format, uint32_t name_len, const char *name)
+{
+ return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window,
+ XCB_ATOM_WM_NAME, encoding, format, name_len,
+ name);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_name(xcb_connection_t *c,
+ xcb_window_t window)
+{
+ return xcb_icccm_get_text_property(c, window, XCB_ATOM_WM_NAME);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_name_unchecked(xcb_connection_t *c,
+ xcb_window_t window)
+{
+ return xcb_icccm_get_text_property_unchecked(c, window, XCB_ATOM_WM_NAME);
+}
+
+uint8_t
+xcb_icccm_get_wm_name_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_icccm_get_text_property_reply_t *prop,
+ xcb_generic_error_t **e)
+{
+ return xcb_icccm_get_text_property_reply(c, cookie, prop, e);
+}
+
+/* WM_ICON_NAME */
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_icon_name_checked(xcb_connection_t *c, xcb_window_t window,
+ xcb_atom_t encoding, uint8_t format,
+ uint32_t name_len, const char *name)
+{
+ return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window,
+ XCB_ATOM_WM_ICON_NAME, encoding, format,
+ name_len, name);
+}
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_icon_name(xcb_connection_t *c, xcb_window_t window,
+ xcb_atom_t encoding, uint8_t format, uint32_t name_len,
+ const char *name)
+{
+ return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window,
+ XCB_ATOM_WM_ICON_NAME, encoding, format,
+ name_len, name);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_icon_name(xcb_connection_t *c,
+ xcb_window_t window)
+{
+ return xcb_icccm_get_text_property(c, window, XCB_ATOM_WM_ICON_NAME);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_icon_name_unchecked(xcb_connection_t *c,
+ xcb_window_t window)
+{
+ return xcb_icccm_get_text_property_unchecked(c, window, XCB_ATOM_WM_ICON_NAME);
+}
+
+uint8_t
+xcb_icccm_get_wm_icon_name_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_icccm_get_text_property_reply_t *prop,
+ xcb_generic_error_t **e)
+{
+ return xcb_icccm_get_text_property_reply(c, cookie, prop, e);
+}
+
+/* WM_COLORMAP_WINDOWS */
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_colormap_windows_checked(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t wm_colormap_windows_atom,
+ uint32_t list_len,
+ const xcb_window_t *list)
+{
+ return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window,
+ wm_colormap_windows_atom, XCB_ATOM_WINDOW,
+ 32, list_len, list);
+}
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_colormap_windows(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t wm_colormap_windows_atom,
+ uint32_t list_len,
+ const xcb_atom_t *list)
+{
+ return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window,
+ wm_colormap_windows_atom, XCB_ATOM_WINDOW, 32,
+ list_len, list);
+}
+
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_colormap_windows(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t wm_colormap_windows_atom )
+{
+ return xcb_get_property(c, 0, window, wm_colormap_windows_atom,
+ XCB_ATOM_WINDOW, 0, UINT_MAX);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_colormap_windows_unchecked(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t wm_colormap_windows_atom)
+{
+ return xcb_get_property_unchecked(c, 0, window, wm_colormap_windows_atom,
+ XCB_ATOM_WINDOW, 0, UINT_MAX);
+}
+
+uint8_t
+xcb_icccm_get_wm_colormap_windows_from_reply(xcb_get_property_reply_t *reply,
+ xcb_icccm_get_wm_colormap_windows_reply_t *colormap_windows)
+{
+ if(!reply || reply->type != XCB_ATOM_WINDOW || reply->format != 32)
+ return 0;
+
+ colormap_windows->_reply = reply;
+ colormap_windows->windows_len = xcb_get_property_value_length(colormap_windows->_reply) / (reply->format / 8);
+ colormap_windows->windows = (xcb_window_t *) xcb_get_property_value(colormap_windows->_reply);
+
+ return 1;
+}
+
+uint8_t
+xcb_icccm_get_wm_colormap_windows_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_icccm_get_wm_colormap_windows_reply_t *colormap_windows,
+ xcb_generic_error_t **e)
+{
+ xcb_get_property_reply_t *reply = xcb_get_property_reply(c, cookie, e);
+ uint8_t ret = xcb_icccm_get_wm_colormap_windows_from_reply(reply, colormap_windows);
+ if(!ret)
+ free(reply);
+ return ret;
+}
+
+void
+xcb_icccm_get_wm_colormap_windows_reply_wipe(xcb_icccm_get_wm_colormap_windows_reply_t *colormap_windows)
+{
+ free(colormap_windows->_reply);
+}
+
+/* WM_CLIENT_MACHINE */
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_client_machine_checked(xcb_connection_t *c, xcb_window_t window,
+ xcb_atom_t encoding, uint8_t format,
+ uint32_t name_len, const char *name)
+{
+ return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window,
+ XCB_ATOM_WM_CLIENT_MACHINE, encoding,
+ format, name_len, name);
+}
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_client_machine(xcb_connection_t *c, xcb_window_t window,
+ xcb_atom_t encoding, uint8_t format,
+ uint32_t name_len, const char *name)
+{
+ return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window,
+ XCB_ATOM_WM_CLIENT_MACHINE, encoding, format,
+ name_len, name);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_client_machine(xcb_connection_t *c,
+ xcb_window_t window)
+{
+ return xcb_icccm_get_text_property(c, window, XCB_ATOM_WM_CLIENT_MACHINE);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_client_machine_unchecked(xcb_connection_t *c,
+ xcb_window_t window)
+{
+ return xcb_icccm_get_text_property_unchecked(c, window, XCB_ATOM_WM_CLIENT_MACHINE);
+}
+
+uint8_t
+xcb_icccm_get_wm_client_machine_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_icccm_get_text_property_reply_t *prop,
+ xcb_generic_error_t **e)
+{
+ return xcb_icccm_get_text_property_reply(c, cookie, prop, e);
+}
+
+/* WM_CLASS */
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_class_checked(xcb_connection_t *c,
+ xcb_window_t window,
+ uint32_t class_len,
+ const char *class)
+{
+ return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window,
+ XCB_ATOM_WM_CLASS, XCB_ATOM_STRING, 8,
+ class_len, class);
+}
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_class(xcb_connection_t *c,
+ xcb_window_t window,
+ uint32_t class_len,
+ const char *class)
+{
+ return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window,
+ XCB_ATOM_WM_CLASS, XCB_ATOM_STRING, 8,
+ class_len, class);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_class(xcb_connection_t *c, xcb_window_t window)
+{
+ return xcb_get_property(c, 0, window, XCB_ATOM_WM_CLASS, XCB_ATOM_STRING, 0L, 2048L);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_class_unchecked(xcb_connection_t *c, xcb_window_t window)
+{
+ return xcb_get_property_unchecked(c, 0, window, XCB_ATOM_WM_CLASS, XCB_ATOM_STRING, 0L, 2048L);
+}
+
+uint8_t
+xcb_icccm_get_wm_class_from_reply(xcb_icccm_get_wm_class_reply_t *prop,
+ xcb_get_property_reply_t *reply)
+{
+ if(!reply || reply->type != XCB_ATOM_STRING || reply->format != 8)
+ return 0;
+
+ prop->_reply = reply;
+ prop->instance_name = (char *) xcb_get_property_value(prop->_reply);
+
+ int len = xcb_get_property_value_length(prop->_reply);
+ /* Ensure there's a C end-of-string at the end of the property.
+ Truncate the property if necessary (the spec says there's already
+ a 0 in the last position, so this only hurts invalid props). */
+ if(len < reply->length * 4)
+ prop->instance_name[len] = 0;
+ else
+ prop->instance_name[len-1] = 0;
+
+ int name_len = strlen(prop->instance_name);
+ if(name_len == len)
+ name_len--;
+
+ prop->class_name = prop->instance_name + name_len + 1;
+
+ return 1;
+}
+
+uint8_t
+xcb_icccm_get_wm_class_reply(xcb_connection_t *c, xcb_get_property_cookie_t cookie,
+ xcb_icccm_get_wm_class_reply_t *prop, xcb_generic_error_t **e)
+{
+ xcb_get_property_reply_t *reply = xcb_get_property_reply(c, cookie, e);
+ uint8_t ret = xcb_icccm_get_wm_class_from_reply(prop, reply);
+ /* if reply parsing failed, free the reply to avoid mem leak */
+ if(!ret)
+ free(reply);
+ return ret;
+}
+
+void
+xcb_icccm_get_wm_class_reply_wipe(xcb_icccm_get_wm_class_reply_t *prop)
+{
+ free(prop->_reply);
+}
+
+/* WM_TRANSIENT_FOR */
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_transient_for_checked(xcb_connection_t *c, xcb_window_t window,
+ xcb_window_t transient_for_window)
+{
+ return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window,
+ XCB_ATOM_WM_TRANSIENT_FOR,
+ XCB_ATOM_WINDOW, 32, 1,
+ &transient_for_window);
+}
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_transient_for(xcb_connection_t *c, xcb_window_t window,
+ xcb_window_t transient_for_window)
+{
+ return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window,
+ XCB_ATOM_WM_TRANSIENT_FOR, XCB_ATOM_WINDOW, 32,
+ 1, &transient_for_window);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_transient_for(xcb_connection_t *c, xcb_window_t window)
+{
+ return xcb_get_property(c, 0, window, XCB_ATOM_WM_TRANSIENT_FOR, XCB_ATOM_WINDOW, 0, 1);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_transient_for_unchecked(xcb_connection_t *c, xcb_window_t window)
+{
+ return xcb_get_property_unchecked(c, 0, window, XCB_ATOM_WM_TRANSIENT_FOR, XCB_ATOM_WINDOW, 0, 1);
+}
+
+uint8_t
+xcb_icccm_get_wm_transient_for_from_reply(xcb_window_t *prop,
+ xcb_get_property_reply_t *reply)
+{
+ if(!reply || reply->type != XCB_ATOM_WINDOW || reply->format != 32 || !reply->length)
+ return 0;
+
+ *prop = *((xcb_window_t *) xcb_get_property_value(reply));
+
+ return 1;
+}
+
+uint8_t
+xcb_icccm_get_wm_transient_for_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_window_t *prop,
+ xcb_generic_error_t **e)
+{
+ xcb_get_property_reply_t *reply = xcb_get_property_reply(c, cookie, e);
+ uint8_t ret = xcb_icccm_get_wm_transient_for_from_reply(prop, reply);
+ free(reply);
+ return ret;
+}
+
+/* WM_SIZE_HINTS */
+
+void
+xcb_icccm_size_hints_set_position(xcb_size_hints_t *hints, int user_specified,
+ int32_t x, int32_t y)
+{
+ hints->flags &= ~(XCB_ICCCM_SIZE_HINT_US_POSITION | XCB_ICCCM_SIZE_HINT_P_POSITION);
+ if (user_specified)
+ hints->flags |= XCB_ICCCM_SIZE_HINT_US_POSITION;
+ else
+ hints->flags |= XCB_ICCCM_SIZE_HINT_P_POSITION;
+ hints->x = x;
+ hints->y = y;
+}
+
+void
+xcb_icccm_size_hints_set_size(xcb_size_hints_t *hints, int user_specified,
+ int32_t width, int32_t height)
+{
+ hints->flags &= ~(XCB_ICCCM_SIZE_HINT_US_SIZE | XCB_ICCCM_SIZE_HINT_P_SIZE);
+ if (user_specified)
+ hints->flags |= XCB_ICCCM_SIZE_HINT_US_SIZE;
+ else
+ hints->flags |= XCB_ICCCM_SIZE_HINT_P_SIZE;
+ hints->width = width;
+ hints->height = height;
+}
+
+void
+xcb_icccm_size_hints_set_min_size(xcb_size_hints_t *hints, int32_t min_width,
+ int32_t min_height)
+{
+ hints->flags |= XCB_ICCCM_SIZE_HINT_P_MIN_SIZE;
+ hints->min_width = min_width;
+ hints->min_height = min_height;
+}
+
+void
+xcb_icccm_size_hints_set_max_size(xcb_size_hints_t *hints, int32_t max_width,
+ int32_t max_height)
+{
+ hints->flags |= XCB_ICCCM_SIZE_HINT_P_MAX_SIZE;
+ hints->max_width = max_width;
+ hints->max_height = max_height;
+}
+
+void
+xcb_icccm_size_hints_set_resize_inc(xcb_size_hints_t *hints, int32_t width_inc,
+ int32_t height_inc)
+{
+ hints->flags |= XCB_ICCCM_SIZE_HINT_P_RESIZE_INC;
+ hints->width_inc = width_inc;
+ hints->height_inc = height_inc;
+}
+
+void
+xcb_icccm_size_hints_set_aspect(xcb_size_hints_t *hints, int32_t min_aspect_num,
+ int32_t min_aspect_den, int32_t max_aspect_num,
+ int32_t max_aspect_den)
+{
+ hints->flags |= XCB_ICCCM_SIZE_HINT_P_ASPECT;
+ hints->min_aspect_num = min_aspect_num;
+ hints->min_aspect_den = min_aspect_den;
+ hints->max_aspect_num = max_aspect_num;
+ hints->max_aspect_den = max_aspect_den;
+}
+
+void
+xcb_icccm_size_hints_set_base_size(xcb_size_hints_t *hints, int32_t base_width,
+ int32_t base_height)
+{
+ hints->flags |= XCB_ICCCM_SIZE_HINT_BASE_SIZE;
+ hints->base_width = base_width;
+ hints->base_height = base_height;
+}
+
+void
+xcb_icccm_size_hints_set_win_gravity(xcb_size_hints_t *hints, xcb_gravity_t win_gravity)
+{
+ hints->flags |= XCB_ICCCM_SIZE_HINT_P_WIN_GRAVITY;
+ hints->win_gravity = win_gravity;
+}
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_size_hints_checked(xcb_connection_t *c, xcb_window_t window,
+ xcb_atom_t property, xcb_size_hints_t *hints)
+{
+ return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window, property,
+ XCB_ATOM_WM_SIZE_HINTS, 32, sizeof(*hints) >> 2,
+ hints);
+}
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_size_hints(xcb_connection_t *c, xcb_window_t window,
+ xcb_atom_t property, xcb_size_hints_t *hints)
+{
+ return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window, property,
+ XCB_ATOM_WM_SIZE_HINTS, 32, sizeof(*hints) >> 2, hints);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_size_hints(xcb_connection_t *c, xcb_window_t window,
+ xcb_atom_t property)
+{
+ return xcb_get_property(c, 0, window, property, XCB_ATOM_WM_SIZE_HINTS, 0L, XCB_ICCCM_NUM_WM_SIZE_HINTS_ELEMENTS);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_size_hints_unchecked(xcb_connection_t *c, xcb_window_t window,
+ xcb_atom_t property)
+{
+ return xcb_get_property_unchecked(c, 0, window, property, XCB_ATOM_WM_SIZE_HINTS,
+ 0L, XCB_ICCCM_NUM_WM_SIZE_HINTS_ELEMENTS);
+}
+
+uint8_t
+xcb_icccm_get_wm_size_hints_from_reply(xcb_size_hints_t *hints, xcb_get_property_reply_t *reply)
+{
+ uint32_t flags;
+ int length;
+
+ if(!reply)
+ return 0;
+
+ if (!(reply->type == XCB_ATOM_WM_SIZE_HINTS &&
+ reply->format == 32))
+ return 0;
+
+ length = xcb_get_property_value_length(reply) / (reply->format / 8);
+
+ if(length > XCB_ICCCM_NUM_WM_SIZE_HINTS_ELEMENTS)
+ length = XCB_ICCCM_NUM_WM_SIZE_HINTS_ELEMENTS;
+
+ memcpy(hints, (xcb_size_hints_t *) xcb_get_property_value (reply),
+ length * (reply->format / 8));
+
+ flags = (XCB_ICCCM_SIZE_HINT_US_POSITION | XCB_ICCCM_SIZE_HINT_US_SIZE |
+ XCB_ICCCM_SIZE_HINT_P_POSITION | XCB_ICCCM_SIZE_HINT_P_SIZE |
+ XCB_ICCCM_SIZE_HINT_P_MIN_SIZE | XCB_ICCCM_SIZE_HINT_P_MAX_SIZE |
+ XCB_ICCCM_SIZE_HINT_P_RESIZE_INC | XCB_ICCCM_SIZE_HINT_P_ASPECT);
+
+ /* NumPropSizeElements = 18 (ICCCM version 1) */
+ if(length >= 18)
+ flags |= (XCB_ICCCM_SIZE_HINT_BASE_SIZE | XCB_ICCCM_SIZE_HINT_P_WIN_GRAVITY);
+ else
+ {
+ hints->base_width = 0;
+ hints->base_height = 0;
+ hints->win_gravity = 0;
+ }
+ /* get rid of unwanted bits */
+ hints->flags &= flags;
+
+ return 1;
+}
+
+uint8_t
+xcb_icccm_get_wm_size_hints_reply(xcb_connection_t *c, xcb_get_property_cookie_t cookie,
+ xcb_size_hints_t *hints, xcb_generic_error_t **e)
+{
+ xcb_get_property_reply_t *reply = xcb_get_property_reply(c, cookie, e);
+ uint8_t ret = xcb_icccm_get_wm_size_hints_from_reply(hints, reply);
+ free(reply);
+ return ret;
+}
+
+/* WM_NORMAL_HINTS */
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_normal_hints_checked(xcb_connection_t *c, xcb_window_t window,
+ xcb_size_hints_t *hints)
+{
+ return xcb_icccm_set_wm_size_hints_checked(c, window, XCB_ATOM_WM_NORMAL_HINTS, hints);
+}
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_normal_hints(xcb_connection_t *c, xcb_window_t window,
+ xcb_size_hints_t *hints)
+{
+ return xcb_icccm_set_wm_size_hints(c, window, XCB_ATOM_WM_NORMAL_HINTS, hints);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_normal_hints(xcb_connection_t *c, xcb_window_t window)
+{
+ return xcb_icccm_get_wm_size_hints(c, window, XCB_ATOM_WM_NORMAL_HINTS);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_normal_hints_unchecked(xcb_connection_t *c, xcb_window_t window)
+{
+ return xcb_icccm_get_wm_size_hints_unchecked(c, window, XCB_ATOM_WM_NORMAL_HINTS);
+}
+
+uint8_t
+xcb_icccm_get_wm_normal_hints_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_size_hints_t *hints,
+ xcb_generic_error_t **e)
+{
+ return xcb_icccm_get_wm_size_hints_reply(c, cookie, hints, e);
+}
+
+/* WM_HINTS */
+
+uint32_t
+xcb_icccm_wm_hints_get_urgency(xcb_icccm_wm_hints_t *hints)
+{
+ return (hints->flags & XCB_ICCCM_WM_HINT_X_URGENCY);
+}
+
+void
+xcb_icccm_wm_hints_set_input(xcb_icccm_wm_hints_t *hints, uint8_t input)
+{
+ hints->input = input;
+ hints->flags |= XCB_ICCCM_WM_HINT_INPUT;
+}
+
+void
+xcb_icccm_wm_hints_set_iconic(xcb_icccm_wm_hints_t *hints)
+{
+ hints->initial_state = XCB_ICCCM_WM_STATE_ICONIC;
+ hints->flags |= XCB_ICCCM_WM_HINT_STATE;
+}
+
+void
+xcb_icccm_wm_hints_set_normal(xcb_icccm_wm_hints_t *hints)
+{
+ hints->initial_state = XCB_ICCCM_WM_STATE_NORMAL;
+ hints->flags |= XCB_ICCCM_WM_HINT_STATE;
+}
+
+void
+xcb_icccm_wm_hints_set_withdrawn(xcb_icccm_wm_hints_t *hints)
+{
+ hints->initial_state = XCB_ICCCM_WM_STATE_WITHDRAWN;
+ hints->flags |= XCB_ICCCM_WM_HINT_STATE;
+}
+
+void
+xcb_icccm_wm_hints_set_none(xcb_icccm_wm_hints_t *hints)
+{
+ hints->flags &= ~XCB_ICCCM_WM_HINT_STATE;
+}
+
+void
+xcb_icccm_wm_hints_set_icon_pixmap(xcb_icccm_wm_hints_t *hints, xcb_pixmap_t icon_pixmap)
+{
+ hints->icon_pixmap = icon_pixmap;
+ hints->flags |= XCB_ICCCM_WM_HINT_ICON_PIXMAP;
+}
+
+void
+xcb_icccm_wm_hints_set_icon_mask(xcb_icccm_wm_hints_t *hints, xcb_pixmap_t icon_mask)
+{
+ hints->icon_mask = icon_mask;
+ hints->flags |= XCB_ICCCM_WM_HINT_ICON_MASK;
+}
+
+void
+xcb_icccm_wm_hints_set_icon_window(xcb_icccm_wm_hints_t *hints, xcb_window_t icon_window)
+{
+ hints->icon_window = icon_window;
+ hints->flags |= XCB_ICCCM_WM_HINT_ICON_WINDOW;
+}
+
+void
+xcb_icccm_wm_hints_set_window_group(xcb_icccm_wm_hints_t *hints, xcb_window_t window_group)
+{
+ hints->window_group = window_group;
+ hints->flags |= XCB_ICCCM_WM_HINT_WINDOW_GROUP;
+}
+
+void
+xcb_icccm_wm_hints_set_urgency(xcb_icccm_wm_hints_t *hints)
+{
+ hints->flags |= XCB_ICCCM_WM_HINT_X_URGENCY;
+}
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_hints_checked(xcb_connection_t *c, xcb_window_t window,
+ xcb_icccm_wm_hints_t *hints)
+{
+ return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window, XCB_ATOM_WM_HINTS,
+ XCB_ATOM_WM_HINTS, 32, sizeof(*hints) >> 2, hints);
+}
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_hints(xcb_connection_t *c, xcb_window_t window,
+ xcb_icccm_wm_hints_t *hints)
+{
+ return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window, XCB_ATOM_WM_HINTS,
+ XCB_ATOM_WM_HINTS, 32, sizeof(*hints) >> 2, hints);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_hints(xcb_connection_t *c,
+ xcb_window_t window)
+{
+ return xcb_get_property(c, 0, window, XCB_ATOM_WM_HINTS, XCB_ATOM_WM_HINTS, 0L,
+ XCB_ICCCM_NUM_WM_HINTS_ELEMENTS);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_hints_unchecked(xcb_connection_t *c,
+ xcb_window_t window)
+{
+ return xcb_get_property_unchecked(c, 0, window, XCB_ATOM_WM_HINTS, XCB_ATOM_WM_HINTS, 0L,
+ XCB_ICCCM_NUM_WM_HINTS_ELEMENTS);
+}
+
+uint8_t
+xcb_icccm_get_wm_hints_from_reply(xcb_icccm_wm_hints_t *hints,
+ xcb_get_property_reply_t *reply)
+{
+ if(!reply || reply->type != XCB_ATOM_WM_HINTS || reply->format != 32)
+ return 0;
+
+ int length = xcb_get_property_value_length(reply);
+ int num_elem = length / (reply->format / 8);
+
+ if(num_elem < XCB_ICCCM_NUM_WM_HINTS_ELEMENTS - 1)
+ return 0;
+
+ if(length > sizeof(xcb_size_hints_t))
+ length = sizeof(xcb_size_hints_t);
+
+ memcpy(hints, (xcb_size_hints_t *) xcb_get_property_value(reply), length);
+
+ if(num_elem < XCB_ICCCM_NUM_WM_HINTS_ELEMENTS)
+ hints->window_group = XCB_NONE;
+
+ return 1;
+}
+
+uint8_t
+xcb_icccm_get_wm_hints_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_icccm_wm_hints_t *hints,
+ xcb_generic_error_t **e)
+{
+ xcb_get_property_reply_t *reply = xcb_get_property_reply(c, cookie, e);
+ int ret = xcb_icccm_get_wm_hints_from_reply(hints, reply);
+ free(reply);
+ return ret;
+}
+
+/* WM_PROTOCOLS */
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_protocols_checked(xcb_connection_t *c, xcb_window_t window,
+ xcb_atom_t wm_protocols, uint32_t list_len,
+ xcb_atom_t *list)
+{
+ return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window,
+ wm_protocols, XCB_ATOM_ATOM, 32, list_len, list);
+}
+
+xcb_void_cookie_t
+xcb_icccm_set_wm_protocols(xcb_connection_t *c, xcb_window_t window,
+ xcb_atom_t wm_protocols, uint32_t list_len, xcb_atom_t *list)
+{
+ return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window, wm_protocols,
+ XCB_ATOM_ATOM, 32, list_len, list);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_protocols(xcb_connection_t *c, xcb_window_t window,
+ xcb_atom_t wm_protocol_atom)
+{
+ return xcb_get_property(c, 0, window, wm_protocol_atom, XCB_ATOM_ATOM, 0, UINT_MAX);
+}
+
+xcb_get_property_cookie_t
+xcb_icccm_get_wm_protocols_unchecked(xcb_connection_t *c,
+ xcb_window_t window,
+ xcb_atom_t wm_protocol_atom)
+{
+ return xcb_get_property_unchecked(c, 0, window, wm_protocol_atom, XCB_ATOM_ATOM, 0,
+ UINT_MAX);
+}
+
+uint8_t
+xcb_icccm_get_wm_protocols_from_reply(xcb_get_property_reply_t *reply, xcb_icccm_get_wm_protocols_reply_t *protocols)
+{
+ if(!reply || reply->type != XCB_ATOM_ATOM || reply->format != 32)
+ return 0;
+
+ protocols->_reply = reply;
+ protocols->atoms_len = xcb_get_property_value_length(protocols->_reply) / (reply->format / 8);
+ protocols->atoms = (xcb_atom_t *) xcb_get_property_value(protocols->_reply);
+
+ return 1;
+}
+
+uint8_t
+xcb_icccm_get_wm_protocols_reply(xcb_connection_t *c,
+ xcb_get_property_cookie_t cookie,
+ xcb_icccm_get_wm_protocols_reply_t *protocols,
+ xcb_generic_error_t **e)
+{
+ xcb_get_property_reply_t *reply = xcb_get_property_reply(c, cookie, e);
+ uint8_t ret = xcb_icccm_get_wm_protocols_from_reply(reply, protocols);
+ if(!ret)
+ free(reply);
+ return ret;
+}
+
+void
+xcb_icccm_get_wm_protocols_reply_wipe(xcb_icccm_get_wm_protocols_reply_t *protocols)
+{
+ free(protocols->_reply);
+}
diff --git a/src/3rdparty/xcb/xcb-util/atoms.c b/src/3rdparty/xcb/xcb-util/atoms.c
new file mode 100644
index 0000000000..7b3aec6c0e
--- /dev/null
+++ b/src/3rdparty/xcb/xcb-util/atoms.c
@@ -0,0 +1,76 @@
+/* Rely on vasprintf (GNU extension) instead of vsnprintf if
+ possible... */
+#ifdef HAVE_VASPRINTF
+#define _GNU_SOURCE
+#include <stdio.h>
+#endif
+
+#include <xcb/xcb.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include "xcb_atom.h"
+
+static char *makename(const char *fmt, ...)
+{
+ char *ret;
+ int n;
+ va_list ap;
+
+#ifndef HAVE_VASPRINTF
+ char *np;
+ int size = 64;
+
+ /* First allocate 'size' bytes, should be enough usually */
+ if((ret = malloc(size)) == NULL)
+ return NULL;
+
+ while(1)
+ {
+ va_start(ap, fmt);
+ n = vsnprintf(ret, size, fmt, ap);
+ va_end(ap);
+
+ if(n < 0)
+ return NULL;
+
+ if(n < size)
+ return ret;
+
+ size = n + 1;
+ if((np = realloc(ret, size)) == NULL)
+ {
+ free(ret);
+ return NULL;
+ }
+
+ ret = np;
+ }
+#else
+ va_start(ap, fmt);
+ n = vasprintf(&ret, fmt, ap);
+ va_end(ap);
+
+ if(n < 0)
+ return NULL;
+
+ return ret;
+#endif
+}
+
+char *xcb_atom_name_by_screen(const char *base, uint8_t screen)
+{
+ return makename("%s_S%u", base, screen);
+}
+
+char *xcb_atom_name_by_resource(const char *base, uint32_t resource)
+{
+ return makename("%s_R%08X", base, resource);
+}
+
+char *xcb_atom_name_unique(const char *base, uint32_t id)
+{
+ if(base)
+ return makename("%s_U%lu", base, id);
+ else
+ return makename("U%lu", id);
+}
diff --git a/src/3rdparty/xcb/xcb-util/event.c b/src/3rdparty/xcb/xcb-util/event.c
new file mode 100644
index 0000000000..de8899adcd
--- /dev/null
+++ b/src/3rdparty/xcb/xcb-util/event.c
@@ -0,0 +1,257 @@
+/*
+ * Copyright © 2008-2009 Julien Danjou <julien@danjou.info>
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or
+ * their institutions shall not be used in advertising or otherwise to
+ * promote the sale, use or other dealings in this Software without
+ * prior written authorization from the authors.
+ */
+
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "xcb_event.h"
+
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+
+#define ssizeof(foo) (ssize_t)sizeof(foo)
+#define countof(foo) (ssizeof(foo) / ssizeof(foo[0]))
+
+static const char *labelError[] =
+{
+ "Success",
+ "BadRequest",
+ "BadValue",
+ "BadWindow",
+ "BadPixmap",
+ "BadAtom",
+ "BadCursor",
+ "BadFont",
+ "BadMatch",
+ "BadDrawable",
+ "BadAccess",
+ "BadAlloc",
+ "BadColor",
+ "BadGC",
+ "BadIDChoice",
+ "BadName",
+ "BadLength",
+ "BadImplementation",
+};
+
+static const char *labelRequest[] =
+{
+ "no request",
+ "CreateWindow",
+ "ChangeWindowAttributes",
+ "GetWindowAttributes",
+ "DestroyWindow",
+ "DestroySubwindows",
+ "ChangeSaveSet",
+ "ReparentWindow",
+ "MapWindow",
+ "MapSubwindows",
+ "UnmapWindow",
+ "UnmapSubwindows",
+ "ConfigureWindow",
+ "CirculateWindow",
+ "GetGeometry",
+ "QueryTree",
+ "InternAtom",
+ "GetAtomName",
+ "ChangeProperty",
+ "DeleteProperty",
+ "GetProperty",
+ "ListProperties",
+ "SetSelectionOwner",
+ "GetSelectionOwner",
+ "ConvertSelection",
+ "SendEvent",
+ "GrabPointer",
+ "UngrabPointer",
+ "GrabButton",
+ "UngrabButton",
+ "ChangeActivePointerGrab",
+ "GrabKeyboard",
+ "UngrabKeyboard",
+ "GrabKey",
+ "UngrabKey",
+ "AllowEvents",
+ "GrabServer",
+ "UngrabServer",
+ "QueryPointer",
+ "GetMotionEvents",
+ "TranslateCoords",
+ "WarpPointer",
+ "SetInputFocus",
+ "GetInputFocus",
+ "QueryKeymap",
+ "OpenFont",
+ "CloseFont",
+ "QueryFont",
+ "QueryTextExtents",
+ "ListFonts",
+ "ListFontsWithInfo",
+ "SetFontPath",
+ "GetFontPath",
+ "CreatePixmap",
+ "FreePixmap",
+ "CreateGC",
+ "ChangeGC",
+ "CopyGC",
+ "SetDashes",
+ "SetClipRectangles",
+ "FreeGC",
+ "ClearArea",
+ "CopyArea",
+ "CopyPlane",
+ "PolyPoint",
+ "PolyLine",
+ "PolySegment",
+ "PolyRectangle",
+ "PolyArc",
+ "FillPoly",
+ "PolyFillRectangle",
+ "PolyFillArc",
+ "PutImage",
+ "GetImage",
+ "PolyText",
+ "PolyText",
+ "ImageText",
+ "ImageText",
+ "CreateColormap",
+ "FreeColormap",
+ "CopyColormapAndFree",
+ "InstallColormap",
+ "UninstallColormap",
+ "ListInstalledColormaps",
+ "AllocColor",
+ "AllocNamedColor",
+ "AllocColorCells",
+ "AllocColorPlanes",
+ "FreeColors",
+ "StoreColors",
+ "StoreNamedColor",
+ "QueryColors",
+ "LookupColor",
+ "CreateCursor",
+ "CreateGlyphCursor",
+ "FreeCursor",
+ "RecolorCursor",
+ "QueryBestSize",
+ "QueryExtension",
+ "ListExtensions",
+ "ChangeKeyboardMapping",
+ "GetKeyboardMapping",
+ "ChangeKeyboardControl",
+ "GetKeyboardControl",
+ "Bell",
+ "ChangePointerControl",
+ "GetPointerControl",
+ "SetScreenSaver",
+ "GetScreenSaver",
+ "ChangeHosts",
+ "ListHosts",
+ "SetAccessControl",
+ "SetCloseDownMode",
+ "KillClient",
+ "RotateProperties",
+ "ForceScreenSaver",
+ "SetPointerMapping",
+ "GetPointerMapping",
+ "SetModifierMapping",
+ "GetModifierMapping",
+ "major 120",
+ "major 121",
+ "major 122",
+ "major 123",
+ "major 124",
+ "major 125",
+ "major 126",
+ "NoOperation",
+};
+
+static const char *labelEvent[] =
+{
+ "error",
+ "reply",
+ "KeyPress",
+ "KeyRelease",
+ "ButtonPress",
+ "ButtonRelease",
+ "MotionNotify",
+ "EnterNotify",
+ "LeaveNotify",
+ "FocusIn",
+ "FocusOut",
+ "KeymapNotify",
+ "Expose",
+ "GraphicsExpose",
+ "NoExpose",
+ "VisibilityNotify",
+ "CreateNotify",
+ "DestroyNotify",
+ "UnmapNotify",
+ "MapNotify",
+ "MapRequest",
+ "ReparentNotify",
+ "ConfigureNotify",
+ "ConfigureRequest",
+ "GravityNotify",
+ "ResizeRequest",
+ "CirculateNotify",
+ "CirculateRequest",
+ "PropertyNotify",
+ "SelectionClear",
+ "SelectionRequest",
+ "SelectionNotify",
+ "ColormapNotify",
+ "ClientMessage",
+ "MappingNotify",
+};
+
+const char *
+xcb_event_get_label(uint8_t type)
+{
+ if(type < countof(labelEvent))
+ return labelEvent[type];
+ return NULL;
+}
+
+const char *
+xcb_event_get_error_label(uint8_t type)
+{
+ if(type < countof(labelError))
+ return labelError[type];
+ return NULL;
+}
+
+const char *
+xcb_event_get_request_label(uint8_t type)
+{
+ if(type < countof(labelRequest))
+ return labelRequest[type];
+ return NULL;
+}
diff --git a/src/3rdparty/xcb/xcb-util/xcb_aux.c b/src/3rdparty/xcb/xcb-util/xcb_aux.c
new file mode 100644
index 0000000000..c81039885f
--- /dev/null
+++ b/src/3rdparty/xcb/xcb-util/xcb_aux.c
@@ -0,0 +1,374 @@
+/*
+ * Copyright © 2008 Bart Massey <bart@cs.pdx.edu>
+ * Copyright © 2008 Ian Osgood <iano@quirkster.com>
+ * Copyright © 2008 Jamey Sharp <jamey@minilop.net>
+ * Copyright © 2008 Josh Triplett <josh@freedesktop.org>
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or
+ * their institutions shall not be used in advertising or otherwise to
+ * promote the sale, use or other dealings in this Software without
+ * prior written authorization from the authors.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <xcb/xcb.h>
+#include "xcb_aux.h"
+
+/* Connection related functions */
+
+uint8_t
+xcb_aux_get_depth (xcb_connection_t *c,
+ xcb_screen_t *screen)
+{
+ xcb_drawable_t drawable;
+ xcb_get_geometry_reply_t *geom;
+ int depth = 0;
+
+ drawable = screen->root;
+ geom = xcb_get_geometry_reply (c, xcb_get_geometry(c, drawable), 0);
+
+ if (geom) {
+ depth = geom->depth;
+ free (geom);
+ }
+
+ return depth;
+}
+
+uint8_t
+xcb_aux_get_depth_of_visual (xcb_screen_t *screen,
+ xcb_visualid_t id)
+{
+ xcb_depth_iterator_t i;
+ xcb_visualtype_iterator_t j;
+ for (i = xcb_screen_allowed_depths_iterator(screen);
+ i.rem; xcb_depth_next(&i))
+ for (j = xcb_depth_visuals_iterator(i.data);
+ j.rem; xcb_visualtype_next(&j))
+ if (j.data->visual_id == id)
+ return i.data->depth;
+ return 0;
+}
+
+xcb_screen_t *
+xcb_aux_get_screen (xcb_connection_t *c,
+ int screen)
+{
+ xcb_screen_iterator_t i = xcb_setup_roots_iterator(xcb_get_setup(c));
+ for (; i.rem; --screen, xcb_screen_next(&i))
+ if (screen == 0)
+ return i.data;
+ return 0;
+}
+
+xcb_visualtype_t *
+xcb_aux_get_visualtype (xcb_connection_t *c,
+ int scr,
+ xcb_visualid_t vid)
+{
+ xcb_screen_t *screen;
+ xcb_depth_t *depth;
+ xcb_visualtype_iterator_t iter;
+ int cur;
+
+ screen = xcb_aux_get_screen (c, scr);
+ if (!screen) return NULL;
+
+ depth = xcb_screen_allowed_depths_iterator(screen).data;
+ if (!depth) return NULL;
+
+ iter = xcb_depth_visuals_iterator(depth);
+ for (cur = 0 ; cur < iter.rem ; xcb_visualtype_next(&iter), ++cur)
+ if (vid == iter.data->visual_id)
+ return iter.data;
+
+ return NULL;
+}
+
+xcb_visualtype_t *
+xcb_aux_find_visual_by_id (xcb_screen_t *screen,
+ xcb_visualid_t id)
+{
+ xcb_depth_iterator_t i;
+ xcb_visualtype_iterator_t j;
+ for (i = xcb_screen_allowed_depths_iterator(screen);
+ i.rem; xcb_depth_next(&i))
+ for (j = xcb_depth_visuals_iterator(i.data);
+ j.rem; xcb_visualtype_next(&j))
+ if (j.data->visual_id == id)
+ return j.data;
+ return 0;
+}
+
+xcb_visualtype_t *
+xcb_aux_find_visual_by_attrs (xcb_screen_t *screen,
+ int8_t class,
+ int8_t depth)
+{
+ xcb_depth_iterator_t i;
+ xcb_visualtype_iterator_t j;
+ for (i = xcb_screen_allowed_depths_iterator(screen);
+ i.rem; xcb_depth_next(&i)) {
+ if (depth != -1 && i.data->depth != depth)
+ continue;
+ for (j = xcb_depth_visuals_iterator(i.data);
+ j.rem; xcb_visualtype_next(&j))
+ if (class == -1 || j.data->_class == class)
+ return j.data;
+ }
+ return 0;
+}
+
+void
+xcb_aux_sync (xcb_connection_t *c)
+{
+ free(xcb_get_input_focus_reply(c, xcb_get_input_focus(c), NULL));
+}
+
+/* structs instead of value lists */
+/* TODO: generate the struct types and functions from protocol masks and descriptions */
+
+/* This generic implementation of pack_list depends on:
+ a) structs packed to uint32_t size
+ b) structs consist of just uint32_t/int32_t fields in the same order as bitmask
+*/
+
+static void
+pack_list( uint32_t mask, const uint32_t *src, uint32_t *dest )
+{
+ for ( ; mask; mask >>= 1, src++)
+ if (mask & 1)
+ *dest++ = *src;
+}
+
+xcb_void_cookie_t
+xcb_aux_create_window (xcb_connection_t *c,
+ uint8_t depth,
+ xcb_window_t wid,
+ xcb_window_t parent,
+ int16_t x,
+ int16_t y,
+ uint16_t width,
+ uint16_t height,
+ uint16_t border_width,
+ uint16_t _class,
+ xcb_visualid_t visual,
+ uint32_t mask,
+ const xcb_params_cw_t *params)
+{
+ uint32_t value_list[16];
+ pack_list(mask, (const uint32_t *)params, value_list);
+ return xcb_create_window(c, depth, wid, parent,
+ x, y, width, height, border_width,
+ _class, visual, mask, value_list);
+}
+
+xcb_void_cookie_t
+xcb_aux_create_window_checked (xcb_connection_t *c,
+ uint8_t depth,
+ xcb_window_t wid,
+ xcb_window_t parent,
+ int16_t x,
+ int16_t y,
+ uint16_t width,
+ uint16_t height,
+ uint16_t border_width,
+ uint16_t _class,
+ xcb_visualid_t visual,
+ uint32_t mask,
+ const xcb_params_cw_t *params)
+{
+ uint32_t value_list[16];
+ pack_list(mask, (const uint32_t *)params, value_list);
+ return xcb_create_window_checked(c, depth, wid, parent,
+ x, y, width, height, border_width,
+ _class, visual, mask, value_list);
+}
+
+xcb_void_cookie_t
+xcb_aux_change_window_attributes_checked (xcb_connection_t *c,
+ xcb_window_t window,
+ uint32_t mask,
+ const xcb_params_cw_t *params)
+{
+ uint32_t value_list[16];
+ pack_list(mask, (const uint32_t *)params, value_list);
+ return xcb_change_window_attributes_checked( c, window, mask, value_list );
+}
+
+xcb_void_cookie_t
+xcb_aux_change_window_attributes (xcb_connection_t *c,
+ xcb_window_t window,
+ uint32_t mask,
+ const xcb_params_cw_t *params)
+{
+ uint32_t value_list[16];
+ pack_list(mask, (const uint32_t *)params, value_list);
+ return xcb_change_window_attributes( c, window, mask, value_list );
+}
+
+xcb_void_cookie_t
+xcb_aux_configure_window (xcb_connection_t *c,
+ xcb_window_t window,
+ uint16_t mask,
+ const xcb_params_configure_window_t *params)
+{
+ uint32_t value_list[8];
+ pack_list(mask, (const uint32_t *)params, value_list);
+ return xcb_configure_window( c, window, mask, value_list );
+}
+
+xcb_void_cookie_t
+xcb_aux_create_gc (xcb_connection_t *c,
+ xcb_gcontext_t gid,
+ xcb_drawable_t drawable,
+ uint32_t mask,
+ const xcb_params_gc_t *params)
+{
+ uint32_t value_list[32];
+ pack_list(mask, (const uint32_t *)params, value_list);
+ return xcb_create_gc( c, gid, drawable, mask, value_list );
+}
+
+xcb_void_cookie_t
+xcb_aux_create_gc_checked (xcb_connection_t *c,
+ xcb_gcontext_t gid,
+ xcb_drawable_t drawable,
+ uint32_t mask,
+ const xcb_params_gc_t *params)
+{
+ uint32_t value_list[32];
+ pack_list(mask, (const uint32_t *)params, value_list);
+ return xcb_create_gc_checked( c, gid, drawable, mask, value_list);
+}
+
+xcb_void_cookie_t
+xcb_aux_change_gc (xcb_connection_t *c,
+ xcb_gcontext_t gc,
+ uint32_t mask,
+ const xcb_params_gc_t *params)
+{
+ uint32_t value_list[32];
+ pack_list(mask, (const uint32_t *)params, value_list);
+ return xcb_change_gc( c, gc, mask, value_list );
+}
+
+xcb_void_cookie_t
+xcb_aux_change_gc_checked (xcb_connection_t *c,
+ xcb_gcontext_t gc,
+ uint32_t mask,
+ const xcb_params_gc_t *params)
+{
+ uint32_t value_list[32];
+ pack_list(mask, (const uint32_t *)params, value_list);
+ return xcb_change_gc_checked( c, gc, mask, value_list );
+}
+
+xcb_void_cookie_t
+xcb_aux_change_keyboard_control (xcb_connection_t *c,
+ uint32_t mask,
+ const xcb_params_keyboard_t *params)
+{
+ uint32_t value_list[16];
+ pack_list(mask, (const uint32_t *)params, value_list);
+ return xcb_change_keyboard_control( c, mask, value_list );
+}
+
+/* Color related functions */
+
+/* Return true if the given color name can be translated locally,
+ in which case load the components. Otherwise, a lookup_color request
+ will be needed, so return false. */
+int
+xcb_aux_parse_color(char *color_name,
+ uint16_t *red, uint16_t *green, uint16_t *blue)
+{
+ int n, r, g, b, i;
+ if (!color_name || *color_name != '#')
+ return 0;
+ /*
+ * Excitingly weird RGB parsing code from Xlib.
+ */
+ n = strlen (color_name);
+ color_name++;
+ n--;
+ if (n != 3 && n != 6 && n != 9 && n != 12)
+ return 0;
+ n /= 3;
+ g = b = 0;
+ do {
+ r = g;
+ g = b;
+ b = 0;
+ for (i = n; --i >= 0; ) {
+ char c = *color_name++;
+ b <<= 4;
+ if (c >= '0' && c <= '9')
+ b |= c - '0';
+ else if (c >= 'A' && c <= 'F')
+ b |= c - ('A' - 10);
+ else if (c >= 'a' && c <= 'f')
+ b |= c - ('a' - 10);
+ else return 0;
+ }
+ } while (*color_name != '\0');
+ n <<= 2;
+ n = 16 - n;
+ *red = r << n;
+ *green = g << n;
+ *blue = b << n;
+ return 1;
+}
+
+/* Drawing related functions */
+
+/* Adapted from Xlib */
+xcb_void_cookie_t
+xcb_aux_set_line_attributes_checked (xcb_connection_t *dpy,
+ xcb_gcontext_t gc,
+ uint16_t linewidth,
+ int32_t linestyle,
+ int32_t capstyle,
+ int32_t joinstyle)
+{
+ uint32_t mask = 0;
+ xcb_params_gc_t gv;
+
+ XCB_AUX_ADD_PARAM(&mask, &gv, line_width, linewidth);
+ XCB_AUX_ADD_PARAM(&mask, &gv, line_style, linestyle);
+ XCB_AUX_ADD_PARAM(&mask, &gv, cap_style, capstyle);
+ XCB_AUX_ADD_PARAM(&mask, &gv, join_style, joinstyle);
+ return xcb_aux_change_gc_checked(dpy, gc, mask, &gv);
+}
+
+/* Adapted from Xlib */
+/* XXX It would be wiser for apps just to call
+ clear_area() directly. */
+xcb_void_cookie_t
+xcb_aux_clear_window(xcb_connection_t * dpy,
+ xcb_window_t w)
+{
+ return xcb_clear_area(dpy, 0, w, 0, 0, 0, 0);
+}
diff --git a/src/angle/patches/0001-Dynamically-resolve-functions-of-dwmapi.dll.patch b/src/angle/patches/0001-Dynamically-resolve-functions-of-dwmapi.dll.patch
new file mode 100644
index 0000000000..f58cfe2d03
--- /dev/null
+++ b/src/angle/patches/0001-Dynamically-resolve-functions-of-dwmapi.dll.patch
@@ -0,0 +1,75 @@
+From a5ed22f7c9aa51eebbd3ec48904a4c0999dcced6 Mon Sep 17 00:00:00 2001
+From: Friedemann Kleint <Friedemann.Kleint@digia.com>
+Date: Tue, 6 Nov 2012 09:22:18 +0100
+Subject: [PATCH] Dynamically resolve functions of dwmapi.dll.
+
+The library is not present on Windows XP, for which /DELAYLOAD
+is used in ANGLE. However, as this causes problems with MinGW,
+use dynamic resolution.
+
+Task-number: QTBUG-27741
+Change-Id: I16214d6f98a184d89858c50ee5306371ea25469e
+---
+ src/3rdparty/angle/src/libEGL/Surface.cpp | 39 +++++++++++++++++++++--------
+ 1 file changed, 28 insertions(+), 11 deletions(-)
+
+diff --git a/src/3rdparty/angle/src/libEGL/Surface.cpp b/src/3rdparty/angle/src/libEGL/Surface.cpp
+index 732c404..34df14c 100644
+--- a/src/3rdparty/angle/src/libEGL/Surface.cpp
++++ b/src/3rdparty/angle/src/libEGL/Surface.cpp
+@@ -73,6 +73,9 @@ Surface::~Surface()
+
+ bool Surface::initialize()
+ {
++ typedef HRESULT (STDAPICALLTYPE *PtrDwmIsCompositionEnabled)(BOOL*);
++ typedef HRESULT (STDAPICALLTYPE *PtrDwmSetPresentParameters)(HWND, DWM_PRESENT_PARAMETERS *);
++
+ ASSERT(!mSwapChain && !mOffscreenTexture && !mDepthStencil);
+
+ if (!resetSwapChain())
+@@ -82,17 +85,31 @@ bool Surface::initialize()
+ // to minimize the amount of queuing done by DWM between our calls to
+ // present and the actual screen.
+ if (mWindow && (getComparableOSVersion() >= versionWindowsVista)) {
+- BOOL isComposited;
+- HRESULT result = DwmIsCompositionEnabled(&isComposited);
+- if (SUCCEEDED(result) && isComposited) {
+- DWM_PRESENT_PARAMETERS presentParams;
+- memset(&presentParams, 0, sizeof(presentParams));
+- presentParams.cbSize = sizeof(DWM_PRESENT_PARAMETERS);
+- presentParams.cBuffer = 2;
+-
+- result = DwmSetPresentParameters(mWindow, &presentParams);
+- if (FAILED(result))
+- ERR("Unable to set present parameters: 0x%08X", result);
++ // Resolve dwmapi.dll functions dynamically as the Library is
++ // not present on Windows XP. Alternatively, /DELAYLOAD could be used.
++ static PtrDwmIsCompositionEnabled dwmIsCompositionEnabled = 0;
++ static PtrDwmSetPresentParameters dwmSetPresentParameters = 0;
++ if (!dwmIsCompositionEnabled) {
++ if (const HMODULE dwmLibrary = LoadLibraryW(L"dwmapi.dll")) {
++ dwmIsCompositionEnabled =
++ (PtrDwmIsCompositionEnabled)GetProcAddress(dwmLibrary, "DwmIsCompositionEnabled");
++ dwmSetPresentParameters =
++ (PtrDwmSetPresentParameters)GetProcAddress(dwmLibrary, "DwmSetPresentParameters");
++ }
++ }
++ if (dwmIsCompositionEnabled && dwmSetPresentParameters) {
++ BOOL isComposited;
++ HRESULT result = dwmIsCompositionEnabled(&isComposited);
++ if (SUCCEEDED(result) && isComposited) {
++ DWM_PRESENT_PARAMETERS presentParams;
++ memset(&presentParams, 0, sizeof(presentParams));
++ presentParams.cbSize = sizeof(DWM_PRESENT_PARAMETERS);
++ presentParams.cBuffer = 2;
++
++ result = dwmSetPresentParameters(mWindow, &presentParams);
++ if (FAILED(result))
++ ERR("Unable to set present parameters: 0x%08X", result);
++ }
+ }
+ }
+
+--
+1.7.10.msysgit.1
+
diff --git a/src/angle/src/common/common.pri b/src/angle/src/common/common.pri
index e99080d19f..3313462f63 100644
--- a/src/angle/src/common/common.pri
+++ b/src/angle/src/common/common.pri
@@ -22,7 +22,11 @@ win32-msvc2012 {
DXLIB_DIR = $$quote($${DX_DIR}Lib\\x86)
}
- FXC = "\"$${DX_DIR}Utilities\\bin\\x86\\fxc.exe\""
+ equals(QMAKE_TARGET.arch, x86_64) {
+ FXC = "\"$${DX_DIR}Utilities\\bin\\x64\\fxc.exe\""
+ } else {
+ FXC = "\"$${DX_DIR}Utilities\\bin\\x86\\fxc.exe\""
+ }
msvc {
# Unfortunately MinGW cannot use the DirectX headers from the DX SDK because d3d11shader.h uses
diff --git a/src/angle/src/libEGL/libEGL.pro b/src/angle/src/libEGL/libEGL.pro
index 845b1af0e9..82ca914f7e 100644
--- a/src/angle/src/libEGL/libEGL.pro
+++ b/src/angle/src/libEGL/libEGL.pro
@@ -3,7 +3,10 @@ TARGET = libEGL
include(../common/common.pri)
-LIBS += -ld3d9 -ldxguid -ldwmapi \
+# Note: ANGLE is patched to dynamically resolve DwmIsCompositionEnabled DwmSetPresentParameters
+# in Surface.cpp, which would otherwise require -ldwmapi, which does not exist on Windows XP
+# (QTBUG-27741).
+LIBS += -ld3d9 -ldxguid \
-L$$QT_BUILD_TREE/lib -llibGLESv2
HEADERS += \
diff --git a/src/angle/src/libGLESv2/libGLESv2.pro b/src/angle/src/libGLESv2/libGLESv2.pro
index c8da379862..ae522b2dd5 100644
--- a/src/angle/src/libGLESv2/libGLESv2.pro
+++ b/src/angle/src/libGLESv2/libGLESv2.pro
@@ -7,6 +7,7 @@ include(../common/common.pri)
INCLUDEPATH += $$OUT_PWD/..
+# Remember to adapt tools/configure/configureapp.cpp if the Direct X version changes.
LIBS += -ld3d9 -ld3dcompiler
STATICLIBS = translator_common translator_hlsl preprocessor
diff --git a/src/corelib/Qt5CTestMacros.cmake b/src/corelib/Qt5CTestMacros.cmake
index 715ad9356e..fc39c708f3 100644
--- a/src/corelib/Qt5CTestMacros.cmake
+++ b/src/corelib/Qt5CTestMacros.cmake
@@ -1,4 +1,11 @@
+# This file is not part of the Qt API. It exists purely as an
+# implementation detail. This file, and its contents may change from version to
+# version without notice, or even be removed.
+#
+# We mean it.
+
+
set(BUILD_OPTIONS_LIST)
if (CMAKE_BUILD_TYPE)
diff --git a/src/corelib/animation/qvariantanimation.cpp b/src/corelib/animation/qvariantanimation.cpp
index e2b6fdf70c..5a3641f3de 100644
--- a/src/corelib/animation/qvariantanimation.cpp
+++ b/src/corelib/animation/qvariantanimation.cpp
@@ -240,7 +240,8 @@ void QVariantAnimationPrivate::recalculateCurrentInterval(bool force/*=false*/)
if ((keyValues.count() + (defaultStartEndValue.isValid() ? 1 : 0)) < 2)
return;
- const qreal progress = easing.valueForProgress(((duration == 0) ? qreal(1) : qreal(currentTime) / qreal(duration)));
+ const qreal endProgress = (direction == QAbstractAnimation::Forward) ? qreal(1) : qreal(0);
+ const qreal progress = easing.valueForProgress(((duration == 0) ? endProgress : qreal(currentTime) / qreal(duration)));
//0 and 1 are still the boundaries
if (force || (currentInterval.start.first > 0 && progress < currentInterval.start.first)
diff --git a/src/corelib/codecs/qisciicodec.cpp b/src/corelib/codecs/qisciicodec.cpp
index d2d6376056..2eeeb24e51 100644
--- a/src/corelib/codecs/qisciicodec.cpp
+++ b/src/corelib/codecs/qisciicodec.cpp
@@ -42,7 +42,7 @@
#include "qtextcodec_p.h"
#include "qlist.h"
-#ifndef QT_NO_BIG_CODECS
+#ifndef QT_NO_CODECS
QT_BEGIN_NAMESPACE
@@ -293,4 +293,4 @@ QString QIsciiCodec::convertToUnicode(const char* chars, int len, ConverterState
QT_END_NAMESPACE
-#endif // QT_NO_BIG_CODECS
+#endif // QT_NO_CODECS
diff --git a/src/corelib/codecs/qisciicodec_p.h b/src/corelib/codecs/qisciicodec_p.h
index 8482f2ac36..a1bc0bf297 100644
--- a/src/corelib/codecs/qisciicodec_p.h
+++ b/src/corelib/codecs/qisciicodec_p.h
@@ -57,7 +57,7 @@
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_BIG_CODECS
+#ifndef QT_NO_CODECS
class QIsciiCodec : public QTextCodec {
public:
diff --git a/src/corelib/codecs/qtsciicodec.cpp b/src/corelib/codecs/qtsciicodec.cpp
index 0933289d0e..c45f966750 100644
--- a/src/corelib/codecs/qtsciicodec.cpp
+++ b/src/corelib/codecs/qtsciicodec.cpp
@@ -46,7 +46,7 @@
#include "qtsciicodec_p.h"
#include "qlist.h"
-#ifndef QT_NO_BIG_CODECS
+#ifndef QT_NO_CODECS
QT_BEGIN_NAMESPACE
@@ -496,4 +496,4 @@ static unsigned int qt_TSCIIToUnicode(uint code, uint *s)
QT_END_NAMESPACE
-#endif // QT_NO_BIG_CODECS
+#endif // QT_NO_CODECS
diff --git a/src/corelib/codecs/qtsciicodec_p.h b/src/corelib/codecs/qtsciicodec_p.h
index 4a5727a808..ea83391cb3 100644
--- a/src/corelib/codecs/qtsciicodec_p.h
+++ b/src/corelib/codecs/qtsciicodec_p.h
@@ -86,7 +86,7 @@
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_BIG_CODECS
+#ifndef QT_NO_CODECS
class QTsciiCodec : public QTextCodec {
public:
@@ -99,7 +99,7 @@ public:
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
};
-#endif // QT_NO_BIG_CODECS
+#endif // QT_NO_CODECS
QT_END_NAMESPACE
diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro
index ba9488cbff..46c771e6a5 100644
--- a/src/corelib/corelib.pro
+++ b/src/corelib/corelib.pro
@@ -4,6 +4,7 @@ CONFIG += exceptions
MODULE = core # not corelib, as per project file
MODULE_CONFIG = moc resources
+!isEmpty(QT_NAMESPACE): MODULE_DEFINES = QT_NAMESPACE=$$QT_NAMESPACE
DEFINES += QT_NO_USING_NAMESPACE
win32-msvc*|win32-icc:QMAKE_LFLAGS += /BASE:0x67000000
@@ -41,6 +42,7 @@ mac|darwin {
}
mac:lib_bundle:DEFINES += QT_NO_DEBUG_PLUGIN_CHECK
win32:DEFINES-=QT_NO_CAST_TO_ASCII
+DEFINES += $$MODULE_DEFINES
QMAKE_LIBS += $$QMAKE_LIBS_CORE
diff --git a/src/corelib/global/qcompilerdetection.h b/src/corelib/global/qcompilerdetection.h
index 0cce9e89d2..7fae3d9dbc 100644
--- a/src/corelib/global/qcompilerdetection.h
+++ b/src/corelib/global/qcompilerdetection.h
@@ -647,6 +647,13 @@
# define Q_COMPILER_TEMPLATE_ALIAS
# define Q_COMPILER_UDL
# endif
+# if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408
+# define Q_COMPILER_ATTRIBUTES
+# define Q_COMPILER_ALIGNAS
+# define Q_COMPILER_ALIGNOF
+# define Q_COMPILER_INHERITING_CONSTRUCTORS
+# define Q_COMPILER_THREAD_LOCAL
+# endif
# endif
#endif
diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp
index ffdf8d0fd3..a756577311 100644
--- a/src/corelib/global/qlibraryinfo.cpp
+++ b/src/corelib/global/qlibraryinfo.cpp
@@ -257,18 +257,29 @@ QLibraryInfo::isDebugBuild()
#endif // QT_BOOTSTRAPPED
+/*
+ * To add a new entry in QLibrary::LibraryLocation, add it to the enum above the bootstrapped values and:
+ * - add its relative path in the qtConfEntries[] array below
+ * (the key is what appears in a qt.conf file)
+ * - add a property name in qmake/property.cpp propList[] array
+ * (it's used with qmake -query)
+ * - add to qt_config.prf, qt_module.prf, qt_module_fwdpri.prf
+ */
+
static const struct {
char key[14], value[13];
} qtConfEntries[] = {
{ "Prefix", "." },
- { "Documentation", "doc" },
+ { "Documentation", "doc" }, // should be ${Data}/doc
{ "Headers", "include" },
{ "Libraries", "lib" },
{ "Binaries", "bin" },
- { "Plugins", "plugins" },
- { "Imports", "imports" },
+ { "Plugins", "plugins" }, // should be ${ArchData}/plugins
+ { "Imports", "imports" }, // should be ${ArchData}/imports
+ { "Qml2Imports", "qml" }, // should be ${ArchData}/qml
+ { "ArchData", "." },
{ "Data", "." },
- { "Translations", "translations" },
+ { "Translations", "translations" }, // should be ${Data}/translations
{ "Examples", "examples" },
{ "Tests", "tests" },
#ifdef QT_BOOTSTRAPPED
@@ -325,7 +336,7 @@ QLibraryInfo::rawLocation(LibraryLocation loc, PathGroup group)
#endif
{
const char *path = 0;
- if (loc >= 0 && loc < sizeof(qt_configure_prefix_path_strs)/sizeof(qt_configure_prefix_path_strs[0]))
+ if (unsigned(loc) < sizeof(qt_configure_prefix_path_strs)/sizeof(qt_configure_prefix_path_strs[0]))
path = qt_configure_prefix_path_strs[loc] + 12;
#ifndef Q_OS_WIN // On Windows we use the registry
else if (loc == SettingsPath)
@@ -338,7 +349,7 @@ QLibraryInfo::rawLocation(LibraryLocation loc, PathGroup group)
} else {
QString key;
QString defaultValue;
- if (loc >= 0 && loc < sizeof(qtConfEntries)/sizeof(qtConfEntries[0])) {
+ if (unsigned(loc) < sizeof(qtConfEntries)/sizeof(qtConfEntries[0])) {
key = QLatin1String(qtConfEntries[loc].key);
defaultValue = QLatin1String(qtConfEntries[loc].value);
}
@@ -358,9 +369,13 @@ QLibraryInfo::rawLocation(LibraryLocation loc, PathGroup group)
ret = config->value(key, defaultValue).toString();
#ifdef QT_BOOTSTRAPPED
- if (ret.isEmpty() && loc == HostPrefixPath)
- ret = config->value(QLatin1String(qtConfEntries[PrefixPath].key),
- QLatin1String(qtConfEntries[PrefixPath].value)).toString();
+ if (ret.isEmpty()) {
+ if (loc == HostPrefixPath)
+ ret = config->value(QLatin1String(qtConfEntries[PrefixPath].key),
+ QLatin1String(qtConfEntries[PrefixPath].value)).toString();
+ else if (loc == TargetSpecPath || loc == HostSpecPath)
+ ret = QString::fromLocal8Bit(qt_configure_prefix_path_strs[loc] + 12);
+ }
#endif
// expand environment variables in the form $(ENVVAR)
@@ -439,8 +454,10 @@ QLibraryInfo::rawLocation(LibraryLocation loc, PathGroup group)
\value LibrariesPath The location of installed libraries.
\value BinariesPath The location of installed Qt binaries (tools and applications).
\value PluginsPath The location of installed Qt plugins.
- \value ImportsPath The location of installed QML extensions to import.
- \value DataPath The location of general Qt data.
+ \value ImportsPath The location of installed QML extensions to import (QML 1.x).
+ \value Qml2ImportsPath The location of installed QML extensions to import (QML 2.x).
+ \value ArchDataPath The location of general architecture-dependent Qt data.
+ \value DataPath The location of general architecture-independent Qt data.
\value TranslationsPath The location of translation information for Qt strings.
\value ExamplesPath The location for examples upon install.
\value TestsPath The location of installed Qt testcases.
diff --git a/src/corelib/global/qlibraryinfo.h b/src/corelib/global/qlibraryinfo.h
index 93b0c81562..5d6e42965f 100644
--- a/src/corelib/global/qlibraryinfo.h
+++ b/src/corelib/global/qlibraryinfo.h
@@ -70,11 +70,14 @@ public:
BinariesPath,
PluginsPath,
ImportsPath,
+ Qml2ImportsPath,
+ ArchDataPath,
DataPath,
TranslationsPath,
ExamplesPath,
TestsPath,
// Insert new values above this line
+ // Please read the comments in qlibraryinfo.cpp before adding
#ifdef QT_BOOTSTRAPPED
// These are not subject to binary compatibility constraints
SysrootPath,
diff --git a/src/corelib/io/qfilesystemengine.cpp b/src/corelib/io/qfilesystemengine.cpp
index 8707aec0b8..4564ede979 100644
--- a/src/corelib/io/qfilesystemengine.cpp
+++ b/src/corelib/io/qfilesystemengine.cpp
@@ -315,7 +315,7 @@ void QFileSystemMetaData::fillFromDirEnt(const QT_DIRENT &entry)
if (S_ISLNK(extra_stat->d_stat.st_mode) && extra->d_type == _DTYPE_LSTAT)
continue;
-#if defined(__EXT_LF64SRC)
+#if defined(QT_USE_XOPEN_LFS_EXTENSIONS) && defined(QT_LARGEFILE_SUPPORT)
// Even with large file support, d_stat is always of type struct stat, not struct stat64,
// so it needs to be converted
struct stat64 statBuf;
diff --git a/src/corelib/io/qstandardpaths.cpp b/src/corelib/io/qstandardpaths.cpp
index 4d7e359117..ccf2565fc0 100644
--- a/src/corelib/io/qstandardpaths.cpp
+++ b/src/corelib/io/qstandardpaths.cpp
@@ -44,8 +44,11 @@
#include <qdir.h>
#include <qfileinfo.h>
#include <qhash.h>
+
+#ifndef QT_BOOTSTRAPPED
#include <qobject.h>
#include <qcoreapplication.h>
+#endif
#ifndef QT_NO_STANDARDPATHS
@@ -300,7 +303,7 @@ QString QStandardPaths::findExecutable(const QString &executableName, const QStr
an empty QString if no relevant location can be found.
*/
-#ifndef Q_OS_MAC
+#if !defined(Q_OS_MAC) && !defined(QT_BOOTSTRAPPED)
QString QStandardPaths::displayName(StandardLocation type)
{
switch (type) {
diff --git a/src/corelib/io/qstandardpaths_mac.cpp b/src/corelib/io/qstandardpaths_mac.cpp
index 20a7dcffd6..068bfb45d5 100644
--- a/src/corelib/io/qstandardpaths_mac.cpp
+++ b/src/corelib/io/qstandardpaths_mac.cpp
@@ -42,7 +42,10 @@
#include "qstandardpaths.h"
#include <qdir.h>
#include <private/qcore_mac_p.h>
+
+#ifndef QT_BOOTSTRAPPED
#include <qcoreapplication.h>
+#endif
#include <ApplicationServices/ApplicationServices.h>
@@ -101,12 +104,16 @@ static QString getFullPath(const FSRef &ref)
static void appendOrganizationAndApp(QString &path)
{
+#ifndef QT_BOOTSTRAPPED
const QString org = QCoreApplication::organizationName();
if (!org.isEmpty())
path += QLatin1Char('/') + org;
const QString appName = QCoreApplication::applicationName();
if (!appName.isEmpty())
path += QLatin1Char('/') + appName;
+#else
+ Q_UNUSED(path);
+#endif
}
static QString macLocation(QStandardPaths::StandardLocation type, short domain)
@@ -180,6 +187,7 @@ QStringList QStandardPaths::standardLocations(StandardLocation type)
return dirs;
}
+#ifndef QT_BOOTSTRAPPED
QString QStandardPaths::displayName(StandardLocation type)
{
if (QStandardPaths::HomeLocation == type)
@@ -197,5 +205,6 @@ QString QStandardPaths::displayName(StandardLocation type)
return static_cast<QString>(displayName);
}
+#endif
QT_END_NAMESPACE
diff --git a/src/corelib/io/qstandardpaths_unix.cpp b/src/corelib/io/qstandardpaths_unix.cpp
index 822c687c89..3fb36589d2 100644
--- a/src/corelib/io/qstandardpaths_unix.cpp
+++ b/src/corelib/io/qstandardpaths_unix.cpp
@@ -44,23 +44,30 @@
#include <qfile.h>
#include <qhash.h>
#include <qtextstream.h>
-#include <qcoreapplication.h>
#include <private/qfilesystemengine_p.h>
#include <errno.h>
#include <stdlib.h>
+#ifndef QT_BOOTSTRAPPED
+#include <qcoreapplication.h>
+#endif
+
#ifndef QT_NO_STANDARDPATHS
QT_BEGIN_NAMESPACE
static void appendOrganizationAndApp(QString &path)
{
+#ifndef QT_BOOTSTRAPPED
const QString org = QCoreApplication::organizationName();
if (!org.isEmpty())
path += QLatin1Char('/') + org;
const QString appName = QCoreApplication::applicationName();
if (!appName.isEmpty())
path += QLatin1Char('/') + appName;
+#else
+ Q_UNUSED(path);
+#endif
}
QString QStandardPaths::writableLocation(StandardLocation type)
@@ -141,6 +148,7 @@ QString QStandardPaths::writableLocation(StandardLocation type)
break;
}
+#ifndef QT_BOOTSTRAPPED
// http://www.freedesktop.org/wiki/Software/xdg-user-dirs
QString xdgConfigHome = QFile::decodeName(qgetenv("XDG_CONFIG_HOME"));
if (xdgConfigHome.isEmpty())
@@ -199,6 +207,7 @@ QString QStandardPaths::writableLocation(StandardLocation type)
}
}
}
+#endif
QString path;
switch (type) {
diff --git a/src/corelib/io/qstandardpaths_win.cpp b/src/corelib/io/qstandardpaths_win.cpp
index d7d73eecfc..bcd5097b14 100644
--- a/src/corelib/io/qstandardpaths_win.cpp
+++ b/src/corelib/io/qstandardpaths_win.cpp
@@ -44,7 +44,10 @@
#include <qdir.h>
#include <private/qsystemlibrary_p.h>
#include <qstringlist.h>
+
+#ifndef QT_BOOTSTRAPPED
#include <qcoreapplication.h>
+#endif
#include <qt_windows.h>
#include <shlobj.h>
@@ -107,12 +110,14 @@ QString QStandardPaths::writableLocation(StandardLocation type)
result = convertCharArray(path);
if (isTestModeEnabled())
result += QLatin1String("/qttest");
+#ifndef QT_BOOTSTRAPPED
if (type != GenericDataLocation) {
if (!QCoreApplication::organizationName().isEmpty())
result += QLatin1Char('/') + QCoreApplication::organizationName();
if (!QCoreApplication::applicationName().isEmpty())
result += QLatin1Char('/') + QCoreApplication::applicationName();
}
+#endif
break;
case DesktopLocation:
@@ -189,10 +194,12 @@ QStringList QStandardPaths::standardLocations(StandardLocation type)
if (SHGetSpecialFolderPath(0, path, CSIDL_COMMON_APPDATA, FALSE)) {
QString result = convertCharArray(path);
if (type != GenericDataLocation) {
+#ifndef QT_BOOTSTRAPPED
if (!QCoreApplication::organizationName().isEmpty())
result += QLatin1Char('/') + QCoreApplication::organizationName();
if (!QCoreApplication::applicationName().isEmpty())
result += QLatin1Char('/') + QCoreApplication::applicationName();
+#endif
}
dirs.append(result);
}
diff --git a/src/corelib/io/qwinoverlappedionotifier.cpp b/src/corelib/io/qwinoverlappedionotifier.cpp
index c084912897..8fa3648987 100644
--- a/src/corelib/io/qwinoverlappedionotifier.cpp
+++ b/src/corelib/io/qwinoverlappedionotifier.cpp
@@ -161,12 +161,20 @@ private:
QMutex mutex;
};
-Q_GLOBAL_STATIC(QWinIoCompletionPort, iocp)
+QWinIoCompletionPort *QWinOverlappedIoNotifier::iocp = 0;
+HANDLE QWinOverlappedIoNotifier::iocpInstanceLock = CreateMutex(NULL, FALSE, NULL);
+unsigned int QWinOverlappedIoNotifier::iocpInstanceRefCount = 0;
QWinOverlappedIoNotifier::QWinOverlappedIoNotifier(QObject *parent)
: QObject(parent),
hHandle(INVALID_HANDLE_VALUE)
{
+ WaitForSingleObject(iocpInstanceLock, INFINITE);
+ if (!iocp)
+ iocp = new QWinIoCompletionPort;
+ iocpInstanceRefCount++;
+ ReleaseMutex(iocpInstanceLock);
+
hSemaphore = CreateSemaphore(NULL, 0, 255, NULL);
hResultsMutex = CreateMutex(NULL, FALSE, NULL);
connect(this, &QWinOverlappedIoNotifier::_q_notify,
@@ -178,6 +186,13 @@ QWinOverlappedIoNotifier::~QWinOverlappedIoNotifier()
setEnabled(false);
CloseHandle(hResultsMutex);
CloseHandle(hSemaphore);
+
+ WaitForSingleObject(iocpInstanceLock, INFINITE);
+ if (!--iocpInstanceRefCount) {
+ delete iocp;
+ iocp = 0;
+ }
+ ReleaseMutex(iocpInstanceLock);
}
void QWinOverlappedIoNotifier::setHandle(HANDLE h)
@@ -188,9 +203,9 @@ void QWinOverlappedIoNotifier::setHandle(HANDLE h)
void QWinOverlappedIoNotifier::setEnabled(bool enabled)
{
if (enabled)
- iocp()->registerNotifier(this);
+ iocp->registerNotifier(this);
else
- iocp()->unregisterNotifier(this);
+ iocp->unregisterNotifier(this);
}
/*!
diff --git a/src/corelib/io/qwinoverlappedionotifier_p.h b/src/corelib/io/qwinoverlappedionotifier_p.h
index 331d915ccc..d8d851a3a1 100644
--- a/src/corelib/io/qwinoverlappedionotifier_p.h
+++ b/src/corelib/io/qwinoverlappedionotifier_p.h
@@ -61,6 +61,8 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
+class QWinIoCompletionPort;
+
class Q_CORE_EXPORT QWinOverlappedIoNotifier : public QObject
{
Q_OBJECT
@@ -85,6 +87,9 @@ private:
void notify(DWORD numberOfBytes, DWORD errorCode, OVERLAPPED *overlapped);
private:
+ static QWinIoCompletionPort *iocp;
+ static HANDLE iocpInstanceLock;
+ static unsigned int iocpInstanceRefCount;
HANDLE hHandle;
HANDLE hSemaphore;
HANDLE hResultsMutex;
diff --git a/src/corelib/itemmodels/qabstractitemmodel.h b/src/corelib/itemmodels/qabstractitemmodel.h
index 00e108099d..9513a245d7 100644
--- a/src/corelib/itemmodels/qabstractitemmodel.h
+++ b/src/corelib/itemmodels/qabstractitemmodel.h
@@ -420,6 +420,7 @@ public:
QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
bool dropMimeData(const QMimeData *data, Qt::DropAction action,
int row, int column, const QModelIndex &parent);
+
protected:
QAbstractTableModel(QAbstractItemModelPrivate &dd, QObject *parent);
diff --git a/src/corelib/itemmodels/qabstractproxymodel.cpp b/src/corelib/itemmodels/qabstractproxymodel.cpp
index 680c995fe6..cdf811e29b 100644
--- a/src/corelib/itemmodels/qabstractproxymodel.cpp
+++ b/src/corelib/itemmodels/qabstractproxymodel.cpp
@@ -363,6 +363,15 @@ bool QAbstractProxyModel::hasChildren(const QModelIndex &parent) const
/*!
\reimp
*/
+QModelIndex QAbstractProxyModel::sibling(int row, int column, const QModelIndex &idx) const
+{
+ Q_D(const QAbstractProxyModel);
+ return mapFromSource(d->model->sibling(row, column, mapToSource(idx)));
+}
+
+/*!
+ \reimp
+ */
QMimeData* QAbstractProxyModel::mimeData(const QModelIndexList &indexes) const
{
Q_D(const QAbstractProxyModel);
diff --git a/src/corelib/itemmodels/qabstractproxymodel.h b/src/corelib/itemmodels/qabstractproxymodel.h
index 1310341ac9..2561e5a7e2 100644
--- a/src/corelib/itemmodels/qabstractproxymodel.h
+++ b/src/corelib/itemmodels/qabstractproxymodel.h
@@ -90,6 +90,7 @@ public:
void sort(int column, Qt::SortOrder order = Qt::AscendingOrder);
QSize span(const QModelIndex &index) const;
bool hasChildren(const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex sibling(int row, int column, const QModelIndex &idx) const;
QMimeData* mimeData(const QModelIndexList &indexes) const;
QStringList mimeTypes() const;
diff --git a/src/corelib/itemmodels/qidentityproxymodel.cpp b/src/corelib/itemmodels/qidentityproxymodel.cpp
index 37ec1cd0a9..3dbe93b21a 100644
--- a/src/corelib/itemmodels/qidentityproxymodel.cpp
+++ b/src/corelib/itemmodels/qidentityproxymodel.cpp
@@ -171,6 +171,15 @@ QModelIndex QIdentityProxyModel::index(int row, int column, const QModelIndex& p
/*!
\reimp
*/
+QModelIndex QIdentityProxyModel::sibling(int row, int column, const QModelIndex &idx) const
+{
+ Q_D(const QIdentityProxyModel);
+ return mapFromSource(d->model->sibling(row, column, mapToSource(idx)));
+}
+
+/*!
+ \reimp
+ */
bool QIdentityProxyModel::insertColumns(int column, int count, const QModelIndex& parent)
{
Q_ASSERT(parent.isValid() ? parent.model() == this : true);
diff --git a/src/corelib/itemmodels/qidentityproxymodel.h b/src/corelib/itemmodels/qidentityproxymodel.h
index b402c175d2..da40836dd0 100644
--- a/src/corelib/itemmodels/qidentityproxymodel.h
+++ b/src/corelib/itemmodels/qidentityproxymodel.h
@@ -69,6 +69,7 @@ public:
int rowCount(const QModelIndex& parent = QModelIndex()) const;
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent);
+ QModelIndex sibling(int row, int column, const QModelIndex &idx) const;
QItemSelection mapSelectionFromSource(const QItemSelection& selection) const;
QItemSelection mapSelectionToSource(const QItemSelection& selection) const;
diff --git a/src/corelib/itemmodels/qitemselectionmodel.cpp b/src/corelib/itemmodels/qitemselectionmodel.cpp
index d1cbd7f461..e05b76f5da 100644
--- a/src/corelib/itemmodels/qitemselectionmodel.cpp
+++ b/src/corelib/itemmodels/qitemselectionmodel.cpp
@@ -43,6 +43,8 @@
#include <private/qitemselectionmodel_p.h>
#include <qdebug.h>
+#include <algorithm>
+
#ifndef QT_NO_ITEMVIEWS
QT_BEGIN_NAMESPACE
@@ -1007,8 +1009,8 @@ void QItemSelectionModelPrivate::_q_layoutChanged(const QList<QPersistentModelIn
if (hint != QAbstractItemModel::VerticalSortHint) {
// sort the "new" selection, as preparation for merging
- qStableSort(savedPersistentIndexes.begin(), savedPersistentIndexes.end());
- qStableSort(savedPersistentCurrentIndexes.begin(), savedPersistentCurrentIndexes.end());
+ std::stable_sort(savedPersistentIndexes.begin(), savedPersistentIndexes.end());
+ std::stable_sort(savedPersistentCurrentIndexes.begin(), savedPersistentCurrentIndexes.end());
// update the selection by merging the individual indexes
ranges = mergeIndexes(savedPersistentIndexes);
@@ -1019,8 +1021,8 @@ void QItemSelectionModelPrivate::_q_layoutChanged(const QList<QPersistentModelIn
savedPersistentCurrentIndexes.clear();
} else {
// sort the "new" selection, as preparation for merging
- qStableSort(savedPersistentRowLengths.begin(), savedPersistentRowLengths.end());
- qStableSort(savedPersistentCurrentRowLengths.begin(), savedPersistentCurrentRowLengths.end());
+ std::stable_sort(savedPersistentRowLengths.begin(), savedPersistentRowLengths.end());
+ std::stable_sort(savedPersistentCurrentRowLengths.begin(), savedPersistentCurrentRowLengths.end());
// update the selection by merging the individual indexes
ranges = mergeRowLengths(savedPersistentRowLengths);
diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.cpp b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
index 8551db0c28..6ab32a9366 100644
--- a/src/corelib/itemmodels/qsortfilterproxymodel.cpp
+++ b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
@@ -52,6 +52,8 @@
#include <private/qabstractitemmodel_p.h>
#include <private/qabstractproxymodel_p.h>
+#include <algorithm>
+
QT_BEGIN_NAMESPACE
typedef QList<QPair<QModelIndex, QPersistentModelIndex> > QModelIndexPairList;
@@ -475,13 +477,13 @@ void QSortFilterProxyModelPrivate::sort_source_rows(
if (source_sort_column >= 0) {
if (sort_order == Qt::AscendingOrder) {
QSortFilterProxyModelLessThan lt(source_sort_column, source_parent, model, q);
- qStableSort(source_rows.begin(), source_rows.end(), lt);
+ std::stable_sort(source_rows.begin(), source_rows.end(), lt);
} else {
QSortFilterProxyModelGreaterThan gt(source_sort_column, source_parent, model, q);
- qStableSort(source_rows.begin(), source_rows.end(), gt);
+ std::stable_sort(source_rows.begin(), source_rows.end(), gt);
}
} else { // restore the source model order
- qStableSort(source_rows.begin(), source_rows.end());
+ std::stable_sort(source_rows.begin(), source_rows.end());
}
}
@@ -518,7 +520,7 @@ QVector<QPair<int, int > > QSortFilterProxyModelPrivate::proxy_intervals_for_sou
// Add interval to result
proxy_intervals.append(QPair<int, int>(first_proxy_item, last_proxy_item));
}
- qStableSort(proxy_intervals.begin(), proxy_intervals.end());
+ std::stable_sort(proxy_intervals.begin(), proxy_intervals.end());
return proxy_intervals;
}
@@ -1255,7 +1257,7 @@ void QSortFilterProxyModelPrivate::_q_sourceHeaderDataChanged(Qt::Orientation or
}
}
- qSort(proxy_positions);
+ std::sort(proxy_positions.begin(), proxy_positions.end());
int last_index = 0;
const int numItems = proxy_positions.size();
@@ -1871,6 +1873,22 @@ QModelIndex QSortFilterProxyModel::parent(const QModelIndex &child) const
/*!
\reimp
*/
+QModelIndex QSortFilterProxyModel::sibling(int row, int column, const QModelIndex &idx) const
+{
+ Q_D(const QSortFilterProxyModel);
+ if (!d->indexValid(idx))
+ return QModelIndex();
+
+ const IndexMap::const_iterator it = d->index_to_iterator(idx);
+ if (it.value()->source_rows.count() <= row || it.value()->source_columns.count() <= column)
+ return QModelIndex();
+
+ return d->create_index(row, column, it);
+}
+
+/*!
+ \reimp
+*/
int QSortFilterProxyModel::rowCount(const QModelIndex &parent) const
{
Q_D(const QSortFilterProxyModel);
@@ -2102,7 +2120,7 @@ bool QSortFilterProxyModel::removeRows(int row, int count, const QModelIndex &pa
QVector<int> rows;
for (int i = row; i < row + count; ++i)
rows.append(m->source_rows.at(i));
- qSort(rows.begin(), rows.end());
+ std::sort(rows.begin(), rows.end());
int pos = rows.count() - 1;
bool ok = true;
diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.h b/src/corelib/itemmodels/qsortfilterproxymodel.h
index 905c401886..18b7078375 100644
--- a/src/corelib/itemmodels/qsortfilterproxymodel.h
+++ b/src/corelib/itemmodels/qsortfilterproxymodel.h
@@ -135,6 +135,7 @@ public:
QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
QModelIndex parent(const QModelIndex &child) const;
+ QModelIndex sibling(int row, int column, const QModelIndex &idx) const;
int rowCount(const QModelIndex &parent = QModelIndex()) const;
int columnCount(const QModelIndex &parent = QModelIndex()) const;
diff --git a/src/corelib/itemmodels/qstringlistmodel.cpp b/src/corelib/itemmodels/qstringlistmodel.cpp
index 2bea97d4b4..641dfb28f9 100644
--- a/src/corelib/itemmodels/qstringlistmodel.cpp
+++ b/src/corelib/itemmodels/qstringlistmodel.cpp
@@ -47,6 +47,8 @@
#include <QtCore/qvector.h>
+#include <algorithm>
+
#ifndef QT_NO_STRINGLISTMODEL
QT_BEGIN_NAMESPACE
@@ -127,6 +129,17 @@ int QStringListModel::rowCount(const QModelIndex &parent) const
}
/*!
+ \reimp
+*/
+QModelIndex QStringListModel::sibling(int row, int column, const QModelIndex &idx) const
+{
+ if (!idx.isValid() || column != 0 || row >= lst.count())
+ return QModelIndex();
+
+ return createIndex(row, 0);
+}
+
+/*!
Returns data for the specified \a role, from the item with the
given \a index.
@@ -256,9 +269,9 @@ void QStringListModel::sort(int, Qt::SortOrder order)
list.append(QPair<QString, int>(lst.at(i), i));
if (order == Qt::AscendingOrder)
- qSort(list.begin(), list.end(), ascendingLessThan);
+ std::sort(list.begin(), list.end(), ascendingLessThan);
else
- qSort(list.begin(), list.end(), decendingLessThan);
+ std::sort(list.begin(), list.end(), decendingLessThan);
lst.clear();
QVector<int> forwarding(list.count());
diff --git a/src/corelib/itemmodels/qstringlistmodel.h b/src/corelib/itemmodels/qstringlistmodel.h
index 85d90e7a01..4da435c453 100644
--- a/src/corelib/itemmodels/qstringlistmodel.h
+++ b/src/corelib/itemmodels/qstringlistmodel.h
@@ -60,6 +60,7 @@ public:
explicit QStringListModel(const QStringList &strings, QObject *parent = 0);
int rowCount(const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex sibling(int row, int column, const QModelIndex &idx) const;
QVariant data(const QModelIndex &index, int role) const;
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index 590d127094..507d83a9a4 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -69,6 +69,8 @@
#if defined(Q_OS_UNIX)
# if defined(Q_OS_BLACKBERRY)
# include "qeventdispatcher_blackberry_p.h"
+# include <process.h>
+# include <unistd.h>
# else
# if !defined(QT_NO_GLIB)
# include "qeventdispatcher_glib_p.h"
@@ -1628,9 +1630,11 @@ bool QCoreApplication::removeTranslator(QTranslator *translationFile)
if (!QCoreApplicationPrivate::checkInstance("removeTranslator"))
return false;
QCoreApplicationPrivate *d = self->d_func();
- if (d->translators.removeAll(translationFile) && !self->closingDown()) {
- QEvent ev(QEvent::LanguageChange);
- QCoreApplication::sendEvent(self, &ev);
+ if (d->translators.removeAll(translationFile)) {
+ if (!self->closingDown()) {
+ QEvent ev(QEvent::LanguageChange);
+ QCoreApplication::sendEvent(self, &ev);
+ }
return true;
}
return false;
@@ -1805,11 +1809,34 @@ QString QCoreApplication::applicationFilePath()
d->cachedApplicationFilePath = QFileInfo(qAppFileName()).filePath();
return d->cachedApplicationFilePath;
#elif defined(Q_OS_BLACKBERRY)
- QDir dir(QStringLiteral("./app/native/"));
- QStringList executables = dir.entryList(QDir::Executable | QDir::Files);
- if (!executables.empty()) {
- //We assume that there is only one executable in the folder
- return dir.absoluteFilePath(executables.first());
+ if (!arguments().isEmpty()) { // args is never empty, but the navigator can change behaviour some day
+ QFileInfo fileInfo(arguments().at(0));
+ const bool zygotized = fileInfo.exists();
+ if (zygotized) {
+ // Handle the zygotized case:
+ d->cachedApplicationFilePath = QDir::cleanPath(fileInfo.absoluteFilePath());
+ return d->cachedApplicationFilePath;
+ }
+ }
+
+ // Handle the non-zygotized case:
+ const size_t maximum_path = static_cast<size_t>(pathconf("/",_PC_PATH_MAX));
+ char buff[maximum_path+1];
+ if (_cmdname(buff)) {
+ d->cachedApplicationFilePath = QDir::cleanPath(QString::fromLocal8Bit(buff));
+ return d->cachedApplicationFilePath;
+ } else {
+ qWarning("QCoreApplication::applicationFilePath: _cmdname() failed");
+ // _cmdname() won't fail, but just in case, fallback to the old method
+ QDir dir(QStringLiteral("./app/native/"));
+ QStringList executables = dir.entryList(QDir::Executable | QDir::Files);
+ if (!executables.empty()) {
+ //We assume that there is only one executable in the folder
+ d->cachedApplicationFilePath = dir.absoluteFilePath(executables.first());
+ return d->cachedApplicationFilePath;
+ } else {
+ return QString();
+ }
}
#elif defined(Q_OS_MAC)
QString qAppFileName_str = qAppFileName();
@@ -2294,19 +2321,6 @@ void QCoreApplication::setEventDispatcher(QAbstractEventDispatcher *eventDispatc
mainThread->setEventDispatcher(eventDispatcher);
}
-/*
- \fn void QCoreApplication::watchUnixSignal(int signal, bool watch)
- \internal
-*/
-
-/*!
- \fn void QCoreApplication::unixSignal(int number)
- \internal
-
- This signal is emitted whenever a Unix signal is received by the
- application. The Unix signal received is specified by its \a number.
-*/
-
/*!
\fn void qAddPostRoutine(QtCleanUpFunction ptr)
\relates QCoreApplication
diff --git a/src/corelib/kernel/qcoreapplication.h b/src/corelib/kernel/qcoreapplication.h
index b65f0cd314..94b0566ca0 100644
--- a/src/corelib/kernel/qcoreapplication.h
+++ b/src/corelib/kernel/qcoreapplication.h
@@ -156,10 +156,6 @@ public:
static void flush();
-#if defined(Q_OS_UNIX)
- static void watchUnixSignal(int signal, bool watch);
-#endif
-
void installNativeEventFilter(QAbstractNativeEventFilter *filterObj);
void removeNativeEventFilter(QAbstractNativeEventFilter *filterObj);
@@ -175,11 +171,6 @@ Q_SIGNALS:
QPrivateSignal
#endif
);
- void unixSignal(int
-#if !defined(qdoc)
- , QPrivateSignal
-#endif
- );
protected:
bool event(QEvent *);
diff --git a/src/corelib/kernel/qcoreevent.cpp b/src/corelib/kernel/qcoreevent.cpp
index c0292ee984..b9136b5335 100644
--- a/src/corelib/kernel/qcoreevent.cpp
+++ b/src/corelib/kernel/qcoreevent.cpp
@@ -121,7 +121,7 @@ QT_BEGIN_NAMESPACE
\value Drop A drag and drop operation is completed (QDropEvent).
\value DynamicPropertyChange A dynamic property was added, changed, or removed from the object.
\value EnabledChange Widget's enabled state has changed.
- \value Enter Mouse enters widget's boundaries.
+ \value Enter Mouse enters widget's boundaries (QEnterEvent).
\value EnterEditFocus An editor widget gains focus for editing. QT_KEYPAD_NAVIGATION must be defined.
\value EnterWhatsThisMode Send to toplevel widgets when the application enters "What's This?" mode.
\value Expose Sent to a window when its on-screen contents are invalidated and need to be flushed from the backing store.
diff --git a/src/corelib/kernel/qeventdispatcher_unix.cpp b/src/corelib/kernel/qeventdispatcher_unix.cpp
index 6c2a610a56..995f5101cb 100644
--- a/src/corelib/kernel/qeventdispatcher_unix.cpp
+++ b/src/corelib/kernel/qeventdispatcher_unix.cpp
@@ -72,20 +72,6 @@
QT_BEGIN_NAMESPACE
-/*****************************************************************************
- UNIX signal handling
- *****************************************************************************/
-
-static sig_atomic_t signal_received;
-static sig_atomic_t signals_fired[NSIG];
-
-static void signalHandler(int sig)
-{
- signals_fired[sig] = 1;
- signal_received = 1;
-}
-
-
#if defined(Q_OS_INTEGRITY) || defined(Q_OS_VXWORKS)
static void initThreadPipeFD(int fd)
{
@@ -185,18 +171,6 @@ int QEventDispatcherUNIXPrivate::doSelect(QEventLoop::ProcessEventsFlags flags,
int nsel;
do {
- if (mainThread) {
- while (signal_received) {
- signal_received = 0;
- for (int i = 0; i < NSIG; ++i) {
- if (signals_fired[i]) {
- signals_fired[i] = 0;
- emit QCoreApplication::instance()->unixSignal(i, QCoreApplication::QPrivateSignal());
- }
- }
- }
- }
-
// Process timers and socket notifiers - the common UNIX stuff
int highest = 0;
if (! (flags & QEventLoop::ExcludeSocketNotifiers) && (sn_highest >= 0)) {
@@ -671,23 +645,4 @@ void QEventDispatcherUNIX::interrupt()
void QEventDispatcherUNIX::flush()
{ }
-
-
-/*!
- \internal
-*/
-void QCoreApplication::watchUnixSignal(int sig, bool watch)
-{
- if (sig < NSIG) {
- struct sigaction sa;
- sigemptyset(&(sa.sa_mask));
- sa.sa_flags = 0;
- if (watch)
- sa.sa_handler = signalHandler;
- else
- sa.sa_handler = SIG_DFL;
- sigaction(sig, &sa, 0);
- }
-}
-
QT_END_NAMESPACE
diff --git a/src/corelib/kernel/qobject.h b/src/corelib/kernel/qobject.h
index 689946b6c4..e9316c98f0 100644
--- a/src/corelib/kernel/qobject.h
+++ b/src/corelib/kernel/qobject.h
@@ -279,10 +279,28 @@ public:
static inline typename QtPrivate::QEnableIf<QtPrivate::FunctionPointer<Func2>::ArgumentCount == -1, QMetaObject::Connection>::Type
connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal, Func2 slot)
{
+#ifndef Q_COMPILER_DECLTYPE //Workaround the lack of decltype using another function as indirection
+ return connect_functor(sender, signal, slot, &Func2::operator()); }
+ template <typename Func1, typename Func2, typename Func2Operator>
+ static inline QMetaObject::Connection connect_functor(const QObject *sender, Func1 signal, Func2 slot, Func2Operator) {
+ typedef QtPrivate::FunctionPointer<Func2Operator> SlotType ;
+#else
+
+ typedef QtPrivate::FunctionPointer<decltype(&Func2::operator())> SlotType ;
+#endif
typedef QtPrivate::FunctionPointer<Func1> SignalType;
+ Q_STATIC_ASSERT_X(int(SignalType::ArgumentCount) >= int(SlotType::ArgumentCount),
+ "The slot requires more arguments than the signal provides.");
+ Q_STATIC_ASSERT_X((QtPrivate::CheckCompatibleArguments<typename SignalType::Arguments, typename SlotType::Arguments>::value),
+ "Signal and slot arguments are not compatible.");
+ Q_STATIC_ASSERT_X((QtPrivate::AreArgumentsCompatible<typename SlotType::ReturnType, typename SignalType::ReturnType>::value),
+ "Return type of the slot is not compatible with the return type of the signal.");
+
return connectImpl(sender, reinterpret_cast<void **>(&signal), sender, 0,
- new QtPrivate::QFunctorSlotObject<Func2, SignalType::ArgumentCount, typename SignalType::Arguments, typename SignalType::ReturnType>(slot),
+ new QtPrivate::QFunctorSlotObject<Func2, SlotType::ArgumentCount,
+ typename QtPrivate::List_Left<typename SignalType::Arguments, SlotType::ArgumentCount>::Value,
+ typename SignalType::ReturnType>(slot),
Qt::DirectConnection, 0, &SignalType::Object::staticMetaObject);
}
#endif //Q_QDOC
diff --git a/src/corelib/kernel/qobjectdefs_impl.h b/src/corelib/kernel/qobjectdefs_impl.h
index 2c85b927bb..55a8904f76 100644
--- a/src/corelib/kernel/qobjectdefs_impl.h
+++ b/src/corelib/kernel/qobjectdefs_impl.h
@@ -126,6 +126,7 @@ namespace QtPrivate {
*/
#ifndef Q_COMPILER_VARIADIC_TEMPLATES
template<typename Func> struct FunctionPointer { enum {ArgumentCount = -1}; };
+ //Pointers to member functions
template<class Obj, typename Ret> struct FunctionPointer<Ret (Obj::*) ()>
{
typedef Obj Object;
@@ -225,6 +226,107 @@ namespace QtPrivate {
}
};
+ //Pointers to const member functions
+ template<class Obj, typename Ret> struct FunctionPointer<Ret (Obj::*) () const>
+ {
+ typedef Obj Object;
+ typedef void Arguments;
+ typedef Ret ReturnType;
+ typedef Ret (Obj::*Function) () const;
+ enum {ArgumentCount = 0};
+ template <typename Args, typename R>
+ static void call(Function f, Obj *o, void **arg) { (o->*f)(), ApplyReturnValue<R>(arg[0]); }
+ };
+ template<class Obj, typename Ret, typename Arg1> struct FunctionPointer<Ret (Obj::*) (Arg1) const>
+ {
+ typedef Obj Object;
+ typedef List<Arg1, void> Arguments;
+ typedef Ret ReturnType;
+ typedef Ret (Obj::*Function) (Arg1) const;
+ enum {ArgumentCount = 1};
+ template <typename Args, typename R>
+ static void call(Function f, Obj *o, void **arg) {
+ (o->*f)((*reinterpret_cast<typename RemoveRef<typename Args::Car>::Type *>(arg[1]))), ApplyReturnValue<R>(arg[0]);
+ }
+ };
+ template<class Obj, typename Ret, typename Arg1, typename Arg2> struct FunctionPointer<Ret (Obj::*) (Arg1, Arg2) const>
+ {
+ typedef Obj Object;
+ typedef List<Arg1, List<Arg2, void> > Arguments;
+ typedef Ret ReturnType;
+ typedef Ret (Obj::*Function) (Arg1, Arg2) const;
+ enum {ArgumentCount = 2};
+ template <typename Args, typename R>
+ static void call(Function f, Obj *o, void **arg) {
+ (o->*f)( *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 0>::Value>::Type *>(arg[1]),
+ *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 1>::Value>::Type *>(arg[2])), ApplyReturnValue<R>(arg[0]);
+ }
+ };
+ template<class Obj, typename Ret, typename Arg1, typename Arg2, typename Arg3> struct FunctionPointer<Ret (Obj::*) (Arg1, Arg2, Arg3) const>
+ {
+ typedef Obj Object;
+ typedef List<Arg1, List<Arg2, List<Arg3, void> > > Arguments;
+ typedef Ret ReturnType;
+ typedef Ret (Obj::*Function) (Arg1, Arg2, Arg3) const;
+ enum {ArgumentCount = 3};
+ template <typename Args, typename R>
+ static void call(Function f, Obj *o, void **arg) {
+ (o->*f)( *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 0>::Value>::Type *>(arg[1]),
+ *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 1>::Value>::Type *>(arg[2]),
+ *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 2>::Value>::Type *>(arg[3])), ApplyReturnValue<R>(arg[0]);
+ }
+ };
+ template<class Obj, typename Ret, typename Arg1, typename Arg2, typename Arg3, typename Arg4> struct FunctionPointer<Ret (Obj::*) (Arg1, Arg2, Arg3, Arg4) const>
+ {
+ typedef Obj Object;
+ typedef List<Arg1, List<Arg2, List<Arg3, List<Arg4, void> > > > Arguments;
+ typedef Ret ReturnType;
+ typedef Ret (Obj::*Function) (Arg1, Arg2, Arg3, Arg4) const;
+ enum {ArgumentCount = 4};
+ template <typename Args, typename R>
+ static void call(Function f, Obj *o, void **arg) {
+ (o->*f)( *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 0>::Value>::Type *>(arg[1]),
+ *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 1>::Value>::Type *>(arg[2]),
+ *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 2>::Value>::Type *>(arg[3]),
+ *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 3>::Value>::Type *>(arg[4])), ApplyReturnValue<R>(arg[0]);
+ }
+ };
+ template<class Obj, typename Ret, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5> struct FunctionPointer<Ret (Obj::*) (Arg1, Arg2, Arg3, Arg4, Arg5) const>
+ {
+ typedef Obj Object;
+ typedef List<Arg1, List<Arg2, List<Arg3, List<Arg4, List<Arg5, void> > > > > Arguments;
+ typedef Ret ReturnType;
+ typedef Ret (Obj::*Function) (Arg1, Arg2, Arg3, Arg4, Arg5) const;
+ enum {ArgumentCount = 5};
+ template <typename Args, typename R>
+ static void call(Function f, Obj *o, void **arg) {
+ (o->*f)( *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 0>::Value>::Type *>(arg[1]),
+ *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 1>::Value>::Type *>(arg[2]),
+ *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 2>::Value>::Type *>(arg[3]),
+ *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 3>::Value>::Type *>(arg[4]),
+ *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 4>::Value>::Type *>(arg[5])), ApplyReturnValue<R>(arg[0]);
+ }
+ };
+ template<class Obj, typename Ret, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5, typename Arg6>
+ struct FunctionPointer<Ret (Obj::*) (Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) const>
+ {
+ typedef Obj Object;
+ typedef List<Arg1, List<Arg2, List<Arg3, List<Arg4, List<Arg5, List<Arg6, void> > > > > > Arguments;
+ typedef Ret ReturnType;
+ typedef Ret (Obj::*Function) (Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) const;
+ enum {ArgumentCount = 6};
+ template <typename Args, typename R>
+ static void call(Function f, Obj *o, void **arg) {
+ (o->*f)( *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 0>::Value>::Type *>(arg[1]),
+ *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 1>::Value>::Type *>(arg[2]),
+ *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 2>::Value>::Type *>(arg[3]),
+ *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 3>::Value>::Type *>(arg[4]),
+ *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 4>::Value>::Type *>(arg[5]),
+ *reinterpret_cast<typename RemoveRef<typename List_Select<Args, 5>::Value>::Type *>(arg[6])), ApplyReturnValue<R>(arg[0]);
+ }
+ };
+
+ //Static functions
template<typename Ret> struct FunctionPointer<Ret (*) ()>
{
typedef void Arguments;
@@ -315,6 +417,7 @@ namespace QtPrivate {
}
};
+ //Functors
template<typename F, int N> struct Functor;
template<typename Function> struct Functor<Function, 0>
{
@@ -401,6 +504,12 @@ namespace QtPrivate {
(o->*f)((*reinterpret_cast<typename RemoveRef<SignalArgs>::Type *>(arg[I+1]))...), ApplyReturnValue<R>(arg[0]);
}
};
+ template <int... I, typename... SignalArgs, typename R, typename... SlotArgs, typename SlotRet, class Obj>
+ struct FunctorCall<IndexesList<I...>, List<SignalArgs...>, R, SlotRet (Obj::*)(SlotArgs...) const> {
+ static void call(SlotRet (Obj::*f)(SlotArgs...) const, Obj *o, void **arg) {
+ (o->*f)((*reinterpret_cast<typename RemoveRef<SignalArgs>::Type *>(arg[I+1]))...), ApplyReturnValue<R>(arg[0]);
+ }
+ };
template<class Obj, typename Ret, typename... Args> struct FunctionPointer<Ret (Obj::*) (Args...)>
{
@@ -414,6 +523,18 @@ namespace QtPrivate {
FunctorCall<typename Indexes<ArgumentCount>::Value, SignalArgs, R, Function>::call(f, o, arg);
}
};
+ template<class Obj, typename Ret, typename... Args> struct FunctionPointer<Ret (Obj::*) (Args...) const>
+ {
+ typedef Obj Object;
+ typedef List<Args...> Arguments;
+ typedef Ret ReturnType;
+ typedef Ret (Obj::*Function) (Args...) const;
+ enum {ArgumentCount = sizeof...(Args)};
+ template <typename SignalArgs, typename R>
+ static void call(Function f, Obj *o, void **arg) {
+ FunctorCall<typename Indexes<ArgumentCount>::Value, SignalArgs, R, Function>::call(f, o, arg);
+ }
+ };
template<typename Ret, typename... Args> struct FunctionPointer<Ret (*) (Args...)>
{
diff --git a/src/corelib/kernel/qtranslator.cpp b/src/corelib/kernel/qtranslator.cpp
index c4486d3ae6..f934202cf6 100644
--- a/src/corelib/kernel/qtranslator.cpp
+++ b/src/corelib/kernel/qtranslator.cpp
@@ -58,6 +58,7 @@
#include "qtranslator_p.h"
#include "qlocale.h"
#include "qendian.h"
+#include "qresource.h"
#if defined(Q_OS_UNIX) && !defined(Q_OS_INTEGRITY)
#define QT_USE_MMAP
@@ -292,16 +293,19 @@ public:
#if defined(QT_USE_MMAP)
used_mmap(0),
#endif
- unmapPointer(0), unmapLength(0),
+ unmapPointer(0), unmapLength(0), resource(0),
messageArray(0), offsetArray(0), contextArray(0), numerusRulesArray(0),
messageLength(0), offsetLength(0), contextLength(0), numerusRulesLength(0) {}
#if defined(QT_USE_MMAP)
bool used_mmap : 1;
#endif
- char *unmapPointer; // owned memory (mmap or new)
+ char *unmapPointer; // used memory (mmap, new or resource file)
quint32 unmapLength;
+ // The resource object in case we loaded the translations from a resource
+ QResource *resource;
+
// used if the translator has dependencies
QList<QTranslator*> subTranslators;
@@ -518,22 +522,42 @@ bool QTranslatorPrivate::do_load(const QString &realname, const QString &directo
QTranslatorPrivate *d = this;
bool ok = false;
- QFile file(realname);
- if (!file.open(QIODevice::ReadOnly | QIODevice::Unbuffered))
- return false;
+ if (realname.startsWith(':')) {
+ // If the translation is in a non-compressed resource file, the data is already in
+ // memory, so no need to use QFile to copy it again.
+ Q_ASSERT(!d->resource);
+ d->resource = new QResource(realname);
+ if (resource->isValid() && !resource->isCompressed() && resource->size() > MagicLength
+ && !memcmp(resource->data(), magic, MagicLength)) {
+ d->unmapLength = resource->size();
+ d->unmapPointer = reinterpret_cast<char *>(const_cast<uchar *>(resource->data()));
+#if defined(QT_USE_MMAP)
+ d->used_mmap = false;
+#endif
+ ok = true;
+ } else {
+ delete resource;
+ resource = 0;
+ }
+ }
- qint64 fileSize = file.size();
- if (fileSize <= MagicLength || quint32(-1) <= fileSize)
- return false;
+ if (!ok) {
+ QFile file(realname);
+ if (!file.open(QIODevice::ReadOnly | QIODevice::Unbuffered))
+ return false;
- {
- char magicBuffer[MagicLength];
- if (MagicLength != file.read(magicBuffer, MagicLength)
- || memcmp(magicBuffer, magic, MagicLength))
+ qint64 fileSize = file.size();
+ if (fileSize <= MagicLength || quint32(-1) <= fileSize)
return false;
- }
- d->unmapLength = quint32(fileSize);
+ {
+ char magicBuffer[MagicLength];
+ if (MagicLength != file.read(magicBuffer, MagicLength)
+ || memcmp(magicBuffer, magic, MagicLength))
+ return false;
+ }
+
+ d->unmapLength = quint32(fileSize);
#ifdef QT_USE_MMAP
@@ -544,30 +568,31 @@ bool QTranslatorPrivate::do_load(const QString &realname, const QString &directo
#define MAP_FAILED -1
#endif
- int fd = file.handle();
- if (fd >= 0) {
- char *ptr;
- ptr = reinterpret_cast<char *>(
- mmap(0, d->unmapLength, // any address, whole file
- PROT_READ, // read-only memory
- MAP_FILE | MAP_PRIVATE, // swap-backed map from file
- fd, 0)); // from offset 0 of fd
- if (ptr && ptr != reinterpret_cast<char *>(MAP_FAILED)) {
- file.close();
- d->used_mmap = true;
- d->unmapPointer = ptr;
- ok = true;
+ int fd = file.handle();
+ if (fd >= 0) {
+ char *ptr;
+ ptr = reinterpret_cast<char *>(
+ mmap(0, d->unmapLength, // any address, whole file
+ PROT_READ, // read-only memory
+ MAP_FILE | MAP_PRIVATE, // swap-backed map from file
+ fd, 0)); // from offset 0 of fd
+ if (ptr && ptr != reinterpret_cast<char *>(MAP_FAILED)) {
+ file.close();
+ d->used_mmap = true;
+ d->unmapPointer = ptr;
+ ok = true;
+ }
}
- }
#endif // QT_USE_MMAP
- if (!ok) {
- d->unmapPointer = new char[d->unmapLength];
- if (d->unmapPointer) {
- file.seek(0);
- qint64 readResult = file.read(d->unmapPointer, d->unmapLength);
- if (readResult == qint64(unmapLength))
- ok = true;
+ if (!ok) {
+ d->unmapPointer = new char[d->unmapLength];
+ if (d->unmapPointer) {
+ file.seek(0);
+ qint64 readResult = file.read(d->unmapPointer, d->unmapLength);
+ if (readResult == qint64(unmapLength))
+ ok = true;
+ }
}
}
@@ -580,8 +605,11 @@ bool QTranslatorPrivate::do_load(const QString &realname, const QString &directo
munmap(unmapPointer, unmapLength);
} else
#endif
+ if (!d->resource)
delete [] unmapPointer;
+ delete d->resource;
+ d->resource = 0;
d->unmapPointer = 0;
d->unmapLength = 0;
@@ -1030,9 +1058,12 @@ void QTranslatorPrivate::clear()
munmap(unmapPointer, unmapLength);
} else
#endif
+ if (!resource)
delete [] unmapPointer;
}
+ delete resource;
+ resource = 0;
unmapPointer = 0;
unmapLength = 0;
messageArray = 0;
diff --git a/src/corelib/mimetypes/qmimedatabase.cpp b/src/corelib/mimetypes/qmimedatabase.cpp
index c141eb9eb4..5acc290475 100644
--- a/src/corelib/mimetypes/qmimedatabase.cpp
+++ b/src/corelib/mimetypes/qmimedatabase.cpp
@@ -289,7 +289,12 @@ bool QMimeDatabasePrivate::inherits(const QString &mime, const QString &parent)
/*!
\fn QMimeDatabase::QMimeDatabase();
- Constructs this QMimeDatabase object.
+ Constructs a QMimeDatabase object.
+
+ It is perfectly OK to create an instance of QMimeDatabase every time you need to
+ perform a lookup.
+ The parsing of mimetypes is done on demand (when shared-mime-info is installed)
+ or when the very first instance is constructed (when parsing XML files directly).
*/
QMimeDatabase::QMimeDatabase() :
d(staticQMimeDatabase())
diff --git a/src/corelib/mimetypes/qmimeglobpattern.cpp b/src/corelib/mimetypes/qmimeglobpattern.cpp
index 049a947939..b11add87e4 100644
--- a/src/corelib/mimetypes/qmimeglobpattern.cpp
+++ b/src/corelib/mimetypes/qmimeglobpattern.cpp
@@ -165,15 +165,15 @@ void QMimeAllGlobPatterns::addGlob(const QMimeGlobPattern &glob)
// The bulk of the patterns is *.foo with weight 50 --> those go into the fast patterns hash.
const QString extension = pattern.mid(2).toLower();
QStringList &patterns = m_fastPatterns[extension]; // find or create
- // This would just slow things down: if (!patterns.contains(glob.mimeType()))
- patterns.append(glob.mimeType());
+ if (!patterns.contains(glob.mimeType()))
+ patterns.append(glob.mimeType());
} else {
if (glob.weight() > 50) {
- // This would just slow things down: if (!m_highWeightGlobs.hasPattern(glob.mimeType(), glob.pattern()))
- m_highWeightGlobs.append(glob);
+ if (!m_highWeightGlobs.hasPattern(glob.mimeType(), glob.pattern()))
+ m_highWeightGlobs.append(glob);
} else {
- //This would just slow things down: if (!m_lowWeightGlobs.hasPattern(glob.mimeType(), glob.pattern()))
- m_lowWeightGlobs.append(glob);
+ if (!m_lowWeightGlobs.hasPattern(glob.mimeType(), glob.pattern()))
+ m_lowWeightGlobs.append(glob);
}
}
}
diff --git a/src/corelib/thread/qbasicatomic.h b/src/corelib/thread/qbasicatomic.h
index 6072212350..4177ddbd39 100644
--- a/src/corelib/thread/qbasicatomic.h
+++ b/src/corelib/thread/qbasicatomic.h
@@ -117,7 +117,18 @@ QT_END_HEADER
// New atomics
#if defined(Q_COMPILER_CONSTEXPR) && defined(Q_COMPILER_DEFAULT_MEMBERS) && defined(Q_COMPILER_DELETE_MEMBERS)
-# define QT_BASIC_ATOMIC_HAS_CONSTRUCTORS
+# if defined(Q_CC_CLANG) && ((((__clang_major__ * 100) + __clang_minor__) < 302) \
+ || defined(__apple_build_version__) \
+ )
+ /* Do not define QT_BASIC_ATOMIC_HAS_CONSTRUCTORS for "stock" clang before version 3.2.
+ Apple's version has different (higher!) version numbers, so disable it for all of them for now.
+ (The only way to distinguish between them seems to be a check for __apple_build_version__ .)
+
+ For details about the bug: see http://llvm.org/bugs/show_bug.cgi?id=12670
+ */
+# else
+# define QT_BASIC_ATOMIC_HAS_CONSTRUCTORS
+# endif
#endif
template <typename T>
diff --git a/src/corelib/thread/qfutureinterface.cpp b/src/corelib/thread/qfutureinterface.cpp
index e85f632fdf..bad55811fe 100644
--- a/src/corelib/thread/qfutureinterface.cpp
+++ b/src/corelib/thread/qfutureinterface.cpp
@@ -414,11 +414,6 @@ QFutureInterfaceBase &QFutureInterfaceBase::operator=(const QFutureInterfaceBase
return *this;
}
-bool QFutureInterfaceBase::referenceCountIsOne() const
-{
- return d->refCount.load() == 1;
-}
-
bool QFutureInterfaceBase::refT() const
{
return d->refCount.refT();
diff --git a/src/corelib/thread/qfutureinterface.h b/src/corelib/thread/qfutureinterface.h
index 3cbb9506ec..ea39c86f12 100644
--- a/src/corelib/thread/qfutureinterface.h
+++ b/src/corelib/thread/qfutureinterface.h
@@ -129,7 +129,6 @@ public:
QFutureInterfaceBase &operator=(const QFutureInterfaceBase &other);
protected:
- bool referenceCountIsOne() const;
bool refT() const;
bool derefT() const;
public:
diff --git a/src/corelib/thread/qmutex_linux.cpp b/src/corelib/thread/qmutex_linux.cpp
index 1644469763..4f70014acb 100644
--- a/src/corelib/thread/qmutex_linux.cpp
+++ b/src/corelib/thread/qmutex_linux.cpp
@@ -188,8 +188,8 @@ bool lockInternal_helper(QBasicAtomicPointer<QMutexData> &d_ptr, int timeout = -
QElapsedTimer elapsedTimer;
checkElapsedTimerIsTrivial();
if (IsTimed) {
- ts.tv_sec = timeout / Q_INT64_C(1000) / 1000 / 1000;
- ts.tv_nsec = timeout % Q_INT64_C(1000) * 1000 * 1000;
+ ts.tv_sec = timeout / 1000;
+ ts.tv_nsec = (timeout % 1000) * 1000 * 1000;
elapsedTimer.start();
}
diff --git a/src/corelib/thread/qreadwritelock.cpp b/src/corelib/thread/qreadwritelock.cpp
index 32dbdbba0c..ed88db96cd 100644
--- a/src/corelib/thread/qreadwritelock.cpp
+++ b/src/corelib/thread/qreadwritelock.cpp
@@ -82,7 +82,7 @@ QT_BEGIN_NAMESPACE
priority over any readers that might also be waiting.
Like QMutex, a QReadWriteLock can be recursively locked by the
- same thread when constructed in
+ same thread when constructed with \l{QReadWriteLock::Recursive} as
\l{QReadWriteLock::RecursionMode}. In such cases,
unlock() must be called the same number of times lockForWrite() or
lockForRead() was called. Note that the lock type cannot be
@@ -133,8 +133,10 @@ QReadWriteLock::~QReadWriteLock()
/*!
Locks the lock for reading. This function will block the current
- thread if any thread (including the current) has locked for
- writing.
+ thread if another thread has locked for writing.
+
+ It is not possible to lock for read if the thread already has
+ locked for write.
\sa unlock(), lockForWrite(), tryLockForRead()
*/
@@ -177,7 +179,10 @@ void QReadWriteLock::lockForRead()
writing.
If the lock was obtained, the lock must be unlocked with unlock()
- before another thread can successfully lock it.
+ before another thread can successfully lock it for writing.
+
+ It is not possible to lock for read if the thread already has
+ locked for write.
\sa unlock(), lockForRead()
*/
@@ -222,7 +227,10 @@ bool QReadWriteLock::tryLockForRead()
lock can be locked for reading when \a timeout is negative.
If the lock was obtained, the lock must be unlocked with unlock()
- before another thread can successfully lock it.
+ before another thread can successfully lock it for writing.
+
+ It is not possible to lock for read if the thread already has
+ locked for write.
\sa unlock(), lockForRead()
*/
@@ -262,7 +270,12 @@ bool QReadWriteLock::tryLockForRead(int timeout)
/*!
Locks the lock for writing. This function will block the current
- thread if another thread has locked for reading or writing.
+ thread if another thread (including the current) has locked for
+ reading or writing (unless the lock has been created using the
+ \l{QReadWriteLock::Recursive} mode).
+
+ It is not possible to lock for write if the thread already has
+ locked for read.
\sa unlock(), lockForRead(), tryLockForWrite()
*/
@@ -304,6 +317,9 @@ void QReadWriteLock::lockForWrite()
If the lock was obtained, the lock must be unlocked with unlock()
before another thread can successfully lock it.
+ It is not possible to lock for write if the thread already has
+ locked for read.
+
\sa unlock(), lockForWrite()
*/
bool QReadWriteLock::tryLockForWrite()
@@ -348,6 +364,9 @@ bool QReadWriteLock::tryLockForWrite()
If the lock was obtained, the lock must be unlocked with unlock()
before another thread can successfully lock it.
+ It is not possible to lock for write if the thread already has
+ locked for read.
+
\sa unlock(), lockForWrite()
*/
bool QReadWriteLock::tryLockForWrite(int timeout)
diff --git a/src/corelib/tools/qbytedata_p.h b/src/corelib/tools/qbytedata_p.h
index b05c21033a..a77e741e65 100644
--- a/src/corelib/tools/qbytedata_p.h
+++ b/src/corelib/tools/qbytedata_p.h
@@ -64,8 +64,9 @@ class QByteDataBuffer
private:
QList<QByteArray> buffers;
qint64 bufferCompleteSize;
+ qint64 firstPos;
public:
- QByteDataBuffer() : bufferCompleteSize(0)
+ QByteDataBuffer() : bufferCompleteSize(0), firstPos(0)
{
}
@@ -74,13 +75,29 @@ public:
clear();
}
- inline void append(QByteDataBuffer& other)
+ static inline void popFront(QByteArray &ba, qint64 n)
+ {
+ ba = QByteArray(ba.constData() + n, ba.size() - n);
+ }
+
+ inline void squeezeFirst()
+ {
+ if (!buffers.isEmpty() && firstPos > 0) {
+ popFront(buffers.first(), firstPos);
+ firstPos = 0;
+ }
+ }
+
+ inline void append(const QByteDataBuffer& other)
{
if (other.isEmpty())
return;
buffers.append(other.buffers);
bufferCompleteSize += other.byteAmount();
+
+ if (other.firstPos > 0)
+ popFront(buffers[bufferCount() - other.bufferCount()], other.firstPos);
}
@@ -93,11 +110,13 @@ public:
bufferCompleteSize += bd.size();
}
- inline void prepend(QByteArray& bd)
+ inline void prepend(const QByteArray& bd)
{
if (bd.isEmpty())
return;
+ squeezeFirst();
+
buffers.prepend(bd);
bufferCompleteSize += bd.size();
}
@@ -106,6 +125,7 @@ public:
// preferably use this function to read data.
inline QByteArray read()
{
+ squeezeFirst();
bufferCompleteSize -= buffers.first().size();
return buffers.takeFirst();
}
@@ -137,27 +157,22 @@ public:
char *writeDst = dst;
while (amount > 0) {
- QByteArray first = buffers.takeFirst();
- if (amount >= first.size()) {
+ const QByteArray &first = buffers.first();
+ qint64 firstSize = first.size() - firstPos;
+ if (amount >= firstSize) {
// take it completely
- bufferCompleteSize -= first.size();
- amount -= first.size();
- memcpy(writeDst, first.constData(), first.size());
- writeDst += first.size();
- first.clear();
+ bufferCompleteSize -= firstSize;
+ amount -= firstSize;
+ memcpy(writeDst, first.constData() + firstPos, firstSize);
+ writeDst += firstSize;
+ firstPos = 0;
+ buffers.takeFirst();
} else {
// take a part of it & it is the last one to take
bufferCompleteSize -= amount;
- memcpy(writeDst, first.constData(), amount);
-
- qint64 newFirstSize = first.size() - amount;
- QByteArray newFirstData;
- newFirstData.resize(newFirstSize);
- memcpy(newFirstData.data(), first.constData() + amount, newFirstSize);
- buffers.prepend(newFirstData);
-
+ memcpy(writeDst, first.constData() + firstPos, amount);
+ firstPos += amount;
amount = 0;
- first.clear();
}
}
@@ -175,6 +190,7 @@ public:
{
buffers.clear();
bufferCompleteSize = 0;
+ firstPos = 0;
}
// The byte count of all QByteArrays
@@ -199,18 +215,28 @@ public:
if(buffers.isEmpty())
return 0;
else
- return buffers.first().size();
+ return buffers.first().size() - firstPos;
}
inline QByteArray& operator[](int i)
{
+ if (i == 0)
+ squeezeFirst();
+
return buffers[i];
}
inline bool canReadLine() const {
- for (int i = 0; i < buffers.length(); i++)
- if (buffers.at(i).contains('\n'))
+ int i = 0;
+ if (i < buffers.length()) {
+ if (buffers.at(i).indexOf('\n', firstPos) != -1)
return true;
+ ++i;
+
+ for (; i < buffers.length(); i++)
+ if (buffers.at(i).contains('\n'))
+ return true;
+ }
return false;
}
};
diff --git a/src/corelib/tools/qcollator.cpp b/src/corelib/tools/qcollator.cpp
index 97e23a5eb3..838a23e492 100644
--- a/src/corelib/tools/qcollator.cpp
+++ b/src/corelib/tools/qcollator.cpp
@@ -128,7 +128,7 @@ static const char * const collationStrings[collationStringsCount] = {
initialize the collator with the specified values. The collator can then be used to compare
and sort strings in a locale dependent fashion.
- A QCollator object can be used together with template based sorting algorithms such as qSort
+ A QCollator object can be used together with template based sorting algorithms such as std::sort
to sort a list of QStrings.
In addition to the locale and collation strategy, several optional flags can be set that influence
diff --git a/src/corelib/tools/qhash.h b/src/corelib/tools/qhash.h
index c4d207e28c..169b32ab74 100644
--- a/src/corelib/tools/qhash.h
+++ b/src/corelib/tools/qhash.h
@@ -203,21 +203,21 @@ template <class Key, class T>
struct QHashNode
{
QHashNode *next;
- uint h;
- Key key;
+ const uint h;
+ const Key key;
T value;
inline QHashNode(const Key &key0, const T &value0, uint hash, QHashNode *n)
: next(n), h(hash), key(key0), value(value0) {}
- inline bool same_key(uint h0, const Key &key0) { return h0 == h && key0 == key; }
+ inline bool same_key(uint h0, const Key &key0) const { return h0 == h && key0 == key; }
};
template <class Key, class T>
struct QHashDummyNode
{
QHashNode<Key, T> *next;
- uint h;
- Key key;
+ const uint h;
+ const Key key;
inline QHashDummyNode(const Key &key0, uint hash, QHashNode<Key, T> *n) : next(n), h(hash), key(key0) {}
};
@@ -253,7 +253,7 @@ struct QHashDummyNode
\
inline QHashNode(key_type /* key0 */) {} \
inline QHashNode(key_type /* key0 */, const T &value0) : value(value0) {} \
- inline bool same_key(uint h0, key_type) { return h0 == h; } \
+ inline bool same_key(uint h0, key_type) const { return h0 == h; } \
}
#if defined(Q_BYTE_ORDER) && Q_BYTE_ORDER == Q_LITTLE_ENDIAN
diff --git a/src/corelib/tools/qlist.cpp b/src/corelib/tools/qlist.cpp
index e174a0c09a..4f26b25fec 100644
--- a/src/corelib/tools/qlist.cpp
+++ b/src/corelib/tools/qlist.cpp
@@ -1772,7 +1772,7 @@ void **QListData::erase(void **xi)
\snippet code/src_corelib_tools_qlistdata.cpp 23
- \sa fromVector(), toSet(), QSet::toList(), qSort()
+ \sa fromVector(), toSet(), QSet::toList()
*/
/*! \fn QSet<T> QList<T>::toSet() const
diff --git a/src/corelib/tools/qlocale.h b/src/corelib/tools/qlocale.h
index c9edf76559..9cfa8553ec 100644
--- a/src/corelib/tools/qlocale.h
+++ b/src/corelib/tools/qlocale.h
@@ -293,9 +293,10 @@ public:
CentralMoroccoTamazight = 212,
KoyraboroSenni = 213,
Shambala = 214,
+ Bodo = 215,
NorwegianBokmal = Norwegian,
NorwegianNynorsk = Nynorsk,
- LastLanguage = Shambala
+ LastLanguage = Bodo
};
enum Script {
@@ -309,9 +310,34 @@ public:
LatinScript = 7,
MongolianScript = 8,
TifinaghScript = 9,
+ ArmenianScript = 10,
+ BengaliScript = 11,
+ CherokeeScript = 12,
+ DevanagariScript = 13,
+ EthiopicScript = 14,
+ GeorgianScript = 15,
+ GreekScript = 16,
+ GujaratiScript = 17,
+ HebrewScript = 18,
+ JapaneseScript = 19,
+ KhmerScript = 20,
+ KannadaScript = 21,
+ KoreanScript = 22,
+ LaoScript = 23,
+ MalayalamScript = 24,
+ MyanmarScript = 25,
+ OriyaScript = 26,
+ TamilScript = 27,
+ TeluguScript = 28,
+ ThaanaScript = 29,
+ ThaiScript = 30,
+ TibetanScript = 31,
+ SinhalaScript = 32,
+ SyriacScript = 33,
+ YiScript = 34,
SimplifiedChineseScript = SimplifiedHanScript,
TraditionalChineseScript = TraditionalHanScript,
- LastScript = TifinaghScript
+ LastScript = YiScript
};
enum Country {
AnyCountry = 0,
diff --git a/src/corelib/tools/qlocale_data_p.h b/src/corelib/tools/qlocale_data_p.h
index d678135c26..38ea76d70d 100644
--- a/src/corelib/tools/qlocale_data_p.h
+++ b/src/corelib/tools/qlocale_data_p.h
@@ -77,7 +77,7 @@ static const int ImperialMeasurementSystemsCount =
// GENERATED PART STARTS HERE
/*
- This part of the file was generated on 2012-03-31 from the
+ This part of the file was generated on 2012-11-19 from the
Common Locale Data Repository v1.9.1
http://www.unicode.org/cldr/
@@ -303,6 +303,7 @@ static const quint16 locale_index[] = {
378, // Central Morocco Tamazight
380, // Koyraboro Senni
381, // Shambala
+ 382, // Bodo
0 // trailing 0
};
@@ -311,30 +312,30 @@ static const QLocaleData locale_data[] = {
{ 1, 0, 0, 46, 44, 59, 37, 48, 45, 43, 101, 34, 34, 39, 39, 0,6 , 0,6 , 0,6 , 0,6 , 0,10 , 10,17 , 0,8 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 158,27 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 99,14 , 0,2 , 0,2 , {0,0,0}, 0,0 , 0,7 , 0,4 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // C/AnyScript/AnyCountry
{ 3, 0, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 35,18 , 18,7 , 25,12 , 185,48 , 233,111 , 134,24 , 185,48 , 233,111 , 134,24 , 113,28 , 141,55 , 85,14 , 113,28 , 141,55 , 85,14 , 2,2 , 2,2 , {69,84,66}, 0,2 , 7,24 , 4,4 , 4,0 , 0,6 , 6,10 , 2, 1, 6, 6, 7 }, // Afan/AnyScript/Ethiopia
{ 3, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 35,18 , 18,7 , 25,12 , 185,48 , 233,111 , 134,24 , 185,48 , 233,111 , 134,24 , 113,28 , 141,55 , 85,14 , 113,28 , 141,55 , 85,14 , 2,2 , 2,2 , {75,69,83}, 2,3 , 0,7 , 4,4 , 4,0 , 0,6 , 16,8 , 2, 1, 6, 6, 7 }, // Afan/AnyScript/Kenya
- { 4, 0, 59, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 53,19 , 18,7 , 25,12 , 344,48 , 392,129 , 521,24 , 344,48 , 392,129 , 521,24 , 196,28 , 224,52 , 276,14 , 196,28 , 224,52 , 276,14 , 0,2 , 0,2 , {68,74,70}, 5,3 , 0,7 , 4,4 , 4,0 , 24,5 , 29,7 , 0, 0, 6, 6, 7 }, // Afar/AnyScript/Djibouti
- { 4, 0, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 53,19 , 18,7 , 25,12 , 344,48 , 545,118 , 521,24 , 344,48 , 545,118 , 521,24 , 196,28 , 224,52 , 276,14 , 196,28 , 224,52 , 276,14 , 0,2 , 0,2 , {69,82,78}, 8,3 , 0,7 , 4,4 , 4,0 , 24,5 , 36,7 , 2, 1, 6, 6, 7 }, // Afar/AnyScript/Eritrea
- { 4, 0, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 53,19 , 18,7 , 25,12 , 344,48 , 545,118 , 521,24 , 344,48 , 545,118 , 521,24 , 196,28 , 224,52 , 276,14 , 196,28 , 224,52 , 276,14 , 0,2 , 0,2 , {69,84,66}, 0,2 , 0,7 , 4,4 , 4,0 , 24,5 , 43,7 , 2, 1, 6, 6, 7 }, // Afar/AnyScript/Ethiopia
+ { 4, 0, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 53,19 , 18,7 , 25,12 , 344,48 , 392,118 , 510,24 , 344,48 , 392,118 , 510,24 , 196,28 , 224,52 , 276,14 , 196,28 , 224,52 , 276,14 , 0,2 , 0,2 , {69,84,66}, 0,2 , 0,7 , 4,4 , 4,0 , 24,5 , 29,7 , 2, 1, 6, 6, 7 }, // Afar/AnyScript/Ethiopia
+ { 4, 0, 59, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 53,19 , 18,7 , 25,12 , 344,48 , 534,129 , 510,24 , 344,48 , 534,129 , 510,24 , 196,28 , 224,52 , 276,14 , 196,28 , 224,52 , 276,14 , 0,2 , 0,2 , {68,74,70}, 5,3 , 0,7 , 4,4 , 4,0 , 24,5 , 36,7 , 0, 0, 6, 6, 7 }, // Afar/AnyScript/Djibouti
+ { 4, 0, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 53,19 , 18,7 , 25,12 , 344,48 , 392,118 , 510,24 , 344,48 , 392,118 , 510,24 , 196,28 , 224,52 , 276,14 , 196,28 , 224,52 , 276,14 , 0,2 , 0,2 , {69,82,78}, 8,3 , 0,7 , 4,4 , 4,0 , 24,5 , 43,7 , 2, 1, 6, 6, 7 }, // Afar/AnyScript/Eritrea
{ 5, 0, 195, 44, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 72,10 , 82,17 , 18,7 , 25,12 , 663,48 , 711,92 , 134,24 , 663,48 , 711,92 , 134,24 , 290,21 , 311,58 , 369,14 , 290,21 , 311,58 , 369,14 , 4,3 , 4,3 , {90,65,82}, 11,1 , 31,27 , 4,4 , 4,0 , 50,9 , 59,11 , 2, 1, 1, 6, 7 }, // Afrikaans/AnyScript/SouthAfrica
{ 5, 0, 148, 44, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 72,10 , 99,16 , 37,5 , 8,10 , 663,48 , 711,92 , 134,24 , 663,48 , 711,92 , 134,24 , 290,21 , 311,58 , 369,14 , 290,21 , 311,58 , 369,14 , 4,3 , 4,3 , {78,65,68}, 12,2 , 58,23 , 8,5 , 4,0 , 50,9 , 70,7 , 2, 1, 1, 6, 7 }, // Afrikaans/AnyScript/Namibia
{ 6, 0, 2, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 115,8 , 123,18 , 42,7 , 49,12 , 803,48 , 851,78 , 929,24 , 803,48 , 851,78 , 929,24 , 383,28 , 411,58 , 469,14 , 383,28 , 411,58 , 469,14 , 7,2 , 7,2 , {65,76,76}, 14,3 , 0,7 , 4,4 , 4,0 , 77,6 , 83,9 , 0, 0, 1, 6, 7 }, // Albanian/AnyScript/Albania
{ 7, 0, 69, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 953,46 , 999,62 , 1061,24 , 953,46 , 999,62 , 1061,24 , 483,27 , 510,28 , 538,14 , 483,27 , 510,28 , 538,14 , 9,3 , 9,4 , {69,84,66}, 17,2 , 81,16 , 4,4 , 13,6 , 92,4 , 96,5 , 2, 1, 6, 6, 7 }, // Amharic/AnyScript/Ethiopia
- { 8, 0, 186, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 552,52 , 604,52 , 656,14 , 552,52 , 604,52 , 656,14 , 12,1 , 13,1 , {83,65,82}, 19,5 , 97,77 , 4,4 , 4,0 , 101,7 , 108,24 , 2, 1, 6, 4, 5 }, // Arabic/AnyScript/SaudiArabia
- { 8, 0, 3, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 179,8 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 670,38 , 604,52 , 656,14 , 670,38 , 604,52 , 656,14 , 12,1 , 13,1 , {68,90,68}, 24,5 , 174,91 , 8,5 , 19,6 , 101,7 , 132,7 , 2, 1, 6, 4, 5 }, // Arabic/AnyScript/Algeria
- { 8, 0, 17, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 670,38 , 604,52 , 656,14 , 670,38 , 604,52 , 656,14 , 12,1 , 13,1 , {66,72,68}, 29,5 , 265,91 , 8,5 , 19,6 , 101,7 , 139,7 , 3, 0, 6, 5, 6 }, // Arabic/AnyScript/Bahrain
- { 8, 0, 64, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 670,38 , 604,52 , 656,14 , 670,38 , 604,52 , 656,14 , 12,1 , 13,1 , {69,71,80}, 34,5 , 356,70 , 8,5 , 19,6 , 101,7 , 146,3 , 2, 1, 6, 5, 6 }, // Arabic/AnyScript/Egypt
- { 8, 0, 103, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 670,38 , 604,52 , 656,14 , 670,38 , 604,52 , 656,14 , 12,1 , 13,1 , {73,81,68}, 39,5 , 426,84 , 8,5 , 19,6 , 101,7 , 149,6 , 0, 0, 6, 5, 6 }, // Arabic/AnyScript/Iraq
- { 8, 0, 109, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1184,92 , 1184,92 , 1160,24 , 1184,92 , 1184,92 , 1160,24 , 552,52 , 604,52 , 656,14 , 552,52 , 604,52 , 656,14 , 12,1 , 13,1 , {74,79,68}, 44,5 , 510,84 , 8,5 , 19,6 , 101,7 , 155,6 , 3, 0, 6, 5, 6 }, // Arabic/AnyScript/Jordan
- { 8, 0, 115, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 670,38 , 604,52 , 656,14 , 670,38 , 604,52 , 656,14 , 12,1 , 13,1 , {75,87,68}, 49,5 , 594,84 , 8,5 , 19,6 , 101,7 , 161,6 , 3, 0, 6, 5, 6 }, // Arabic/AnyScript/Kuwait
- { 8, 0, 119, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1184,92 , 1184,92 , 1160,24 , 1184,92 , 1184,92 , 1160,24 , 552,52 , 604,52 , 656,14 , 552,52 , 604,52 , 656,14 , 12,1 , 13,1 , {76,66,80}, 54,5 , 678,84 , 8,5 , 19,6 , 101,7 , 167,5 , 0, 0, 1, 6, 7 }, // Arabic/AnyScript/Lebanon
- { 8, 0, 122, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 670,38 , 604,52 , 656,14 , 670,38 , 604,52 , 656,14 , 12,1 , 13,1 , {76,89,68}, 59,5 , 762,77 , 8,5 , 19,6 , 101,7 , 172,5 , 3, 0, 6, 5, 6 }, // Arabic/AnyScript/LibyanArabJamahiriya
- { 8, 0, 145, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 179,8 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 670,38 , 604,52 , 656,14 , 670,38 , 604,52 , 656,14 , 12,1 , 13,1 , {77,65,68}, 64,5 , 839,77 , 8,5 , 19,6 , 101,7 , 177,6 , 2, 1, 6, 5, 6 }, // Arabic/AnyScript/Morocco
- { 8, 0, 162, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 670,38 , 604,52 , 656,14 , 670,38 , 604,52 , 656,14 , 12,1 , 13,1 , {79,77,82}, 69,5 , 916,77 , 8,5 , 19,6 , 101,7 , 183,5 , 3, 0, 6, 4, 5 }, // Arabic/AnyScript/Oman
- { 8, 0, 175, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 552,52 , 604,52 , 656,14 , 552,52 , 604,52 , 656,14 , 12,1 , 13,1 , {81,65,82}, 74,5 , 993,70 , 4,4 , 4,0 , 101,7 , 188,3 , 2, 1, 6, 5, 6 }, // Arabic/AnyScript/Qatar
- { 8, 0, 201, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 670,38 , 604,52 , 656,14 , 670,38 , 604,52 , 656,14 , 12,1 , 13,1 , {83,68,71}, 0,0 , 1063,18 , 8,5 , 19,6 , 101,7 , 191,7 , 2, 1, 6, 5, 6 }, // Arabic/AnyScript/Sudan
- { 8, 0, 207, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1184,92 , 1184,92 , 1160,24 , 1184,92 , 1184,92 , 1160,24 , 552,52 , 604,52 , 656,14 , 552,52 , 604,52 , 656,14 , 12,1 , 13,1 , {83,89,80}, 79,5 , 1081,70 , 4,4 , 4,0 , 101,7 , 198,5 , 0, 0, 6, 5, 6 }, // Arabic/AnyScript/SyrianArabRepublic
- { 8, 0, 216, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 179,8 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 552,52 , 604,52 , 656,14 , 552,52 , 604,52 , 656,14 , 12,1 , 13,1 , {84,78,68}, 84,5 , 1151,77 , 4,4 , 4,0 , 101,7 , 203,4 , 3, 0, 6, 5, 6 }, // Arabic/AnyScript/Tunisia
- { 8, 0, 223, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 670,38 , 604,52 , 656,14 , 670,38 , 604,52 , 656,14 , 12,1 , 13,1 , {65,69,68}, 89,5 , 1228,91 , 8,5 , 19,6 , 101,7 , 207,24 , 2, 1, 6, 5, 6 }, // Arabic/AnyScript/UnitedArabEmirates
- { 8, 0, 237, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 552,52 , 604,52 , 656,14 , 552,52 , 604,52 , 656,14 , 12,1 , 13,1 , {89,69,82}, 94,5 , 1319,70 , 4,4 , 4,0 , 101,7 , 231,5 , 0, 0, 6, 4, 5 }, // Arabic/AnyScript/Yemen
+ { 8, 0, 64, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 552,38 , 590,52 , 642,14 , 552,38 , 590,52 , 642,14 , 12,1 , 13,1 , {69,71,80}, 19,5 , 97,70 , 8,5 , 19,6 , 101,7 , 108,3 , 2, 1, 6, 5, 6 }, // Arabic/AnyScript/Egypt
+ { 8, 0, 3, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 179,8 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 552,38 , 590,52 , 642,14 , 552,38 , 590,52 , 642,14 , 12,1 , 13,1 , {68,90,68}, 24,5 , 167,91 , 8,5 , 19,6 , 101,7 , 111,7 , 2, 1, 6, 4, 5 }, // Arabic/AnyScript/Algeria
+ { 8, 0, 17, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 552,38 , 590,52 , 642,14 , 552,38 , 590,52 , 642,14 , 12,1 , 13,1 , {66,72,68}, 29,5 , 258,91 , 8,5 , 19,6 , 101,7 , 118,7 , 3, 0, 6, 5, 6 }, // Arabic/AnyScript/Bahrain
+ { 8, 0, 103, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 552,38 , 590,52 , 642,14 , 552,38 , 590,52 , 642,14 , 12,1 , 13,1 , {73,81,68}, 34,5 , 349,84 , 8,5 , 19,6 , 101,7 , 125,6 , 0, 0, 6, 5, 6 }, // Arabic/AnyScript/Iraq
+ { 8, 0, 109, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1184,92 , 1184,92 , 1160,24 , 1184,92 , 1184,92 , 1160,24 , 656,52 , 590,52 , 642,14 , 656,52 , 590,52 , 642,14 , 12,1 , 13,1 , {74,79,68}, 39,5 , 433,84 , 8,5 , 19,6 , 101,7 , 131,6 , 3, 0, 6, 5, 6 }, // Arabic/AnyScript/Jordan
+ { 8, 0, 115, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 552,38 , 590,52 , 642,14 , 552,38 , 590,52 , 642,14 , 12,1 , 13,1 , {75,87,68}, 44,5 , 517,84 , 8,5 , 19,6 , 101,7 , 137,6 , 3, 0, 6, 5, 6 }, // Arabic/AnyScript/Kuwait
+ { 8, 0, 119, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1184,92 , 1184,92 , 1160,24 , 1184,92 , 1184,92 , 1160,24 , 656,52 , 590,52 , 642,14 , 656,52 , 590,52 , 642,14 , 12,1 , 13,1 , {76,66,80}, 49,5 , 601,84 , 8,5 , 19,6 , 101,7 , 143,5 , 0, 0, 1, 6, 7 }, // Arabic/AnyScript/Lebanon
+ { 8, 0, 122, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 552,38 , 590,52 , 642,14 , 552,38 , 590,52 , 642,14 , 12,1 , 13,1 , {76,89,68}, 54,5 , 685,77 , 8,5 , 19,6 , 101,7 , 148,5 , 3, 0, 6, 5, 6 }, // Arabic/AnyScript/LibyanArabJamahiriya
+ { 8, 0, 145, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 179,8 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 552,38 , 590,52 , 642,14 , 552,38 , 590,52 , 642,14 , 12,1 , 13,1 , {77,65,68}, 59,5 , 762,77 , 8,5 , 19,6 , 101,7 , 153,6 , 2, 1, 6, 5, 6 }, // Arabic/AnyScript/Morocco
+ { 8, 0, 162, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 552,38 , 590,52 , 642,14 , 552,38 , 590,52 , 642,14 , 12,1 , 13,1 , {79,77,82}, 64,5 , 839,77 , 8,5 , 19,6 , 101,7 , 159,5 , 3, 0, 6, 4, 5 }, // Arabic/AnyScript/Oman
+ { 8, 0, 175, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 656,52 , 590,52 , 642,14 , 656,52 , 590,52 , 642,14 , 12,1 , 13,1 , {81,65,82}, 69,5 , 916,70 , 4,4 , 4,0 , 101,7 , 164,3 , 2, 1, 6, 5, 6 }, // Arabic/AnyScript/Qatar
+ { 8, 0, 186, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 656,52 , 590,52 , 642,14 , 656,52 , 590,52 , 642,14 , 12,1 , 13,1 , {83,65,82}, 74,5 , 986,77 , 4,4 , 4,0 , 101,7 , 167,24 , 2, 1, 6, 4, 5 }, // Arabic/AnyScript/SaudiArabia
+ { 8, 0, 201, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 552,38 , 590,52 , 642,14 , 552,38 , 590,52 , 642,14 , 12,1 , 13,1 , {83,68,71}, 0,0 , 1063,18 , 8,5 , 19,6 , 101,7 , 191,7 , 2, 1, 6, 5, 6 }, // Arabic/AnyScript/Sudan
+ { 8, 0, 207, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1184,92 , 1184,92 , 1160,24 , 1184,92 , 1184,92 , 1160,24 , 656,52 , 590,52 , 642,14 , 656,52 , 590,52 , 642,14 , 12,1 , 13,1 , {83,89,80}, 79,5 , 1081,70 , 4,4 , 4,0 , 101,7 , 198,5 , 0, 0, 6, 5, 6 }, // Arabic/AnyScript/SyrianArabRepublic
+ { 8, 0, 216, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 179,8 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 656,52 , 590,52 , 642,14 , 656,52 , 590,52 , 642,14 , 12,1 , 13,1 , {84,78,68}, 84,5 , 1151,77 , 4,4 , 4,0 , 101,7 , 203,4 , 3, 0, 6, 5, 6 }, // Arabic/AnyScript/Tunisia
+ { 8, 0, 223, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 552,38 , 590,52 , 642,14 , 552,38 , 590,52 , 642,14 , 12,1 , 13,1 , {65,69,68}, 89,5 , 1228,91 , 8,5 , 19,6 , 101,7 , 207,24 , 2, 1, 6, 5, 6 }, // Arabic/AnyScript/UnitedArabEmirates
+ { 8, 0, 237, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 14,6 , 14,6 , 20,8 , 28,7 , 151,10 , 161,18 , 18,7 , 61,12 , 1085,75 , 1085,75 , 1160,24 , 1085,75 , 1085,75 , 1160,24 , 656,52 , 590,52 , 642,14 , 656,52 , 590,52 , 642,14 , 12,1 , 13,1 , {89,69,82}, 94,5 , 1319,70 , 4,4 , 4,0 , 101,7 , 231,5 , 0, 0, 6, 4, 5 }, // Arabic/AnyScript/Yemen
{ 9, 0, 11, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 187,8 , 35,18 , 37,5 , 8,10 , 1276,48 , 1324,94 , 158,27 , 1276,48 , 1324,94 , 158,27 , 708,28 , 736,62 , 798,14 , 708,28 , 736,62 , 798,14 , 13,3 , 14,3 , {65,77,68}, 99,3 , 0,7 , 25,5 , 4,0 , 236,7 , 243,24 , 0, 0, 1, 6, 7 }, // Armenian/AnyScript/Armenia
{ 10, 0, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 195,8 , 203,18 , 73,8 , 81,12 , 1418,62 , 1480,88 , 158,27 , 1418,62 , 1480,88 , 158,27 , 812,37 , 849,58 , 798,14 , 812,37 , 849,58 , 798,14 , 16,9 , 17,7 , {73,78,82}, 102,3 , 0,7 , 8,5 , 4,0 , 267,6 , 273,4 , 2, 1, 7, 7, 7 }, // Assamese/AnyScript/India
{ 12, 0, 15, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 221,8 , 229,19 , 37,5 , 8,10 , 1568,48 , 1616,77 , 158,27 , 1568,48 , 1616,77 , 158,27 , 907,26 , 933,67 , 99,14 , 907,26 , 933,67 , 99,14 , 0,2 , 0,2 , {65,90,78}, 105,4 , 1389,41 , 8,5 , 4,0 , 277,12 , 289,10 , 2, 1, 7, 6, 7 }, // Azerbaijani/AnyScript/Azerbaijan
@@ -443,15 +444,15 @@ static const QLocaleData locale_data[] = {
{ 43, 0, 56, 44, 46, 44, 37, 48, 45, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 137,9 , 137,9 , 279,6 , 10,17 , 18,7 , 25,12 , 6119,50 , 6169,115 , 6284,24 , 6119,50 , 6308,115 , 6284,24 , 3381,28 , 3409,55 , 3464,14 , 3381,28 , 3409,55 , 3464,14 , 101,4 , 102,4 , {69,85,82}, 113,1 , 3558,19 , 4,4 , 4,0 , 1485,8 , 1499,6 , 2, 1, 1, 6, 7 }, // Greek/AnyScript/Cyprus
{ 44, 0, 86, 44, 46, 59, 37, 48, 8722, 43, 101, 187, 171, 8250, 8249, 146,11 , 0,6 , 0,6 , 146,11 , 72,10 , 82,17 , 18,7 , 25,12 , 4039,48 , 6423,96 , 134,24 , 4039,48 , 6423,96 , 134,24 , 3478,28 , 3506,98 , 3604,14 , 3478,28 , 3506,98 , 3604,14 , 0,2 , 0,2 , {68,75,75}, 142,2 , 3577,24 , 4,4 , 36,5 , 1505,11 , 1516,16 , 2, 1, 7, 6, 7 }, // Greenlandic/AnyScript/Greenland
{ 46, 0, 100, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 34, 34, 0,6 , 0,6 , 157,9 , 157,9 , 630,7 , 203,18 , 322,8 , 330,13 , 6519,67 , 6586,87 , 6673,31 , 6519,67 , 6586,87 , 6673,31 , 3618,32 , 3650,53 , 3703,19 , 3618,32 , 3650,53 , 3703,19 , 105,14 , 106,14 , {73,78,82}, 180,2 , 0,7 , 8,5 , 4,0 , 1532,7 , 1539,4 , 2, 1, 7, 7, 7 }, // Gujarati/AnyScript/India
- { 47, 0, 83, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 203,18 , 37,5 , 8,10 , 6704,48 , 6752,85 , 6837,24 , 6704,48 , 6752,85 , 6837,24 , 3722,21 , 3743,52 , 3795,14 , 3722,21 , 3743,52 , 3795,14 , 0,2 , 0,2 , {71,72,83}, 182,3 , 0,7 , 8,5 , 4,0 , 1543,5 , 1548,4 , 2, 1, 1, 6, 7 }, // Hausa/AnyScript/Ghana
- { 47, 0, 156, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 203,18 , 37,5 , 8,10 , 6704,48 , 6752,85 , 6837,24 , 6704,48 , 6752,85 , 6837,24 , 3722,21 , 3743,52 , 3795,14 , 3722,21 , 3743,52 , 3795,14 , 0,2 , 0,2 , {88,79,70}, 154,3 , 3601,36 , 8,5 , 4,0 , 1543,5 , 1552,5 , 0, 0, 1, 6, 7 }, // Hausa/AnyScript/Niger
- { 47, 0, 157, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 203,18 , 37,5 , 8,10 , 6704,48 , 6752,85 , 6837,24 , 6704,48 , 6752,85 , 6837,24 , 3722,21 , 3743,52 , 3795,14 , 3722,21 , 3743,52 , 3795,14 , 0,2 , 0,2 , {78,71,78}, 185,1 , 3637,12 , 8,5 , 4,0 , 1543,5 , 1557,8 , 2, 1, 1, 6, 7 }, // Hausa/AnyScript/Nigeria
+ { 47, 0, 157, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 203,18 , 37,5 , 8,10 , 6704,48 , 6752,85 , 6837,24 , 6704,48 , 6752,85 , 6837,24 , 3722,21 , 3743,52 , 3795,14 , 3722,21 , 3743,52 , 3795,14 , 0,2 , 0,2 , {78,71,78}, 182,1 , 3601,12 , 8,5 , 4,0 , 1543,5 , 1548,8 , 2, 1, 1, 6, 7 }, // Hausa/AnyScript/Nigeria
+ { 47, 0, 83, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 203,18 , 37,5 , 8,10 , 6704,48 , 6752,85 , 6837,24 , 6704,48 , 6752,85 , 6837,24 , 3722,21 , 3743,52 , 3795,14 , 3722,21 , 3743,52 , 3795,14 , 0,2 , 0,2 , {71,72,83}, 183,3 , 0,7 , 8,5 , 4,0 , 1543,5 , 1556,4 , 2, 1, 1, 6, 7 }, // Hausa/AnyScript/Ghana
+ { 47, 0, 156, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 203,18 , 37,5 , 8,10 , 6704,48 , 6752,85 , 6837,24 , 6704,48 , 6752,85 , 6837,24 , 3722,21 , 3743,52 , 3795,14 , 3722,21 , 3743,52 , 3795,14 , 0,2 , 0,2 , {88,79,70}, 154,3 , 3613,36 , 8,5 , 4,0 , 1543,5 , 1560,5 , 0, 0, 1, 6, 7 }, // Hausa/AnyScript/Niger
{ 47, 0, 201, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 203,18 , 37,5 , 8,10 , 6861,55 , 6916,99 , 6837,24 , 6861,55 , 6916,99 , 6837,24 , 3809,31 , 3840,57 , 3795,14 , 3809,31 , 3840,57 , 3795,14 , 0,2 , 0,2 , {83,68,71}, 0,0 , 3649,20 , 8,5 , 4,0 , 1543,5 , 1565,5 , 2, 1, 6, 5, 6 }, // Hausa/AnyScript/Sudan
- { 47, 1, 157, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 203,18 , 37,5 , 8,10 , 6861,55 , 6916,99 , 6837,24 , 6861,55 , 6916,99 , 6837,24 , 3809,31 , 3840,57 , 3795,14 , 3809,31 , 3840,57 , 3795,14 , 0,2 , 0,2 , {78,71,78}, 185,1 , 3669,13 , 8,5 , 4,0 , 1543,5 , 1557,8 , 2, 1, 1, 6, 7 }, // Hausa/Arabic/Nigeria
+ { 47, 1, 157, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 203,18 , 37,5 , 8,10 , 6861,55 , 6916,99 , 6837,24 , 6861,55 , 6916,99 , 6837,24 , 3809,31 , 3840,57 , 3795,14 , 3809,31 , 3840,57 , 3795,14 , 0,2 , 0,2 , {78,71,78}, 182,1 , 3669,13 , 8,5 , 4,0 , 1543,5 , 1548,8 , 2, 1, 1, 6, 7 }, // Hausa/Arabic/Nigeria
{ 47, 1, 201, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 203,18 , 37,5 , 8,10 , 6861,55 , 6916,99 , 6837,24 , 6861,55 , 6916,99 , 6837,24 , 3809,31 , 3840,57 , 3795,14 , 3809,31 , 3840,57 , 3795,14 , 0,2 , 0,2 , {83,68,71}, 0,0 , 3649,20 , 8,5 , 4,0 , 1543,5 , 1565,5 , 2, 1, 6, 5, 6 }, // Hausa/Arabic/Sudan
- { 47, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 203,18 , 37,5 , 8,10 , 6704,48 , 6752,85 , 6837,24 , 6704,48 , 6752,85 , 6837,24 , 3722,21 , 3743,52 , 3795,14 , 3722,21 , 3743,52 , 3795,14 , 0,2 , 0,2 , {71,72,83}, 182,3 , 0,7 , 8,5 , 4,0 , 1543,5 , 1548,4 , 2, 1, 1, 6, 7 }, // Hausa/Latin/Ghana
- { 47, 7, 156, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 203,18 , 37,5 , 8,10 , 6704,48 , 6752,85 , 6837,24 , 6704,48 , 6752,85 , 6837,24 , 3722,21 , 3743,52 , 3795,14 , 3722,21 , 3743,52 , 3795,14 , 0,2 , 0,2 , {88,79,70}, 154,3 , 3601,36 , 8,5 , 4,0 , 1543,5 , 1552,5 , 0, 0, 1, 6, 7 }, // Hausa/Latin/Niger
- { 47, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 203,18 , 37,5 , 8,10 , 6704,48 , 6752,85 , 6837,24 , 6704,48 , 6752,85 , 6837,24 , 3722,21 , 3743,52 , 3795,14 , 3722,21 , 3743,52 , 3795,14 , 0,2 , 0,2 , {78,71,78}, 185,1 , 3637,12 , 8,5 , 4,0 , 1543,5 , 1557,8 , 2, 1, 1, 6, 7 }, // Hausa/Latin/Nigeria
+ { 47, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 203,18 , 37,5 , 8,10 , 6704,48 , 6752,85 , 6837,24 , 6704,48 , 6752,85 , 6837,24 , 3722,21 , 3743,52 , 3795,14 , 3722,21 , 3743,52 , 3795,14 , 0,2 , 0,2 , {71,72,83}, 183,3 , 0,7 , 8,5 , 4,0 , 1543,5 , 1556,4 , 2, 1, 1, 6, 7 }, // Hausa/Latin/Ghana
+ { 47, 7, 156, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 203,18 , 37,5 , 8,10 , 6704,48 , 6752,85 , 6837,24 , 6704,48 , 6752,85 , 6837,24 , 3722,21 , 3743,52 , 3795,14 , 3722,21 , 3743,52 , 3795,14 , 0,2 , 0,2 , {88,79,70}, 154,3 , 3613,36 , 8,5 , 4,0 , 1543,5 , 1560,5 , 0, 0, 1, 6, 7 }, // Hausa/Latin/Niger
+ { 47, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 203,18 , 37,5 , 8,10 , 6704,48 , 6752,85 , 6837,24 , 6704,48 , 6752,85 , 6837,24 , 3722,21 , 3743,52 , 3795,14 , 3722,21 , 3743,52 , 3795,14 , 0,2 , 0,2 , {78,71,78}, 182,1 , 3601,12 , 8,5 , 4,0 , 1543,5 , 1548,8 , 2, 1, 1, 6, 7 }, // Hausa/Latin/Nigeria
{ 48, 0, 105, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 34, 34, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 637,18 , 37,5 , 8,10 , 7015,58 , 7073,72 , 158,27 , 7145,48 , 7073,72 , 158,27 , 3897,46 , 3943,65 , 4008,14 , 3897,46 , 3943,65 , 4008,14 , 119,6 , 120,5 , {73,76,83}, 186,1 , 3682,21 , 25,5 , 4,0 , 1570,5 , 1575,5 , 2, 1, 7, 5, 6 }, // Hebrew/AnyScript/Israel
{ 49, 0, 100, 46, 44, 59, 37, 2406, 45, 43, 101, 39, 39, 34, 34, 0,6 , 0,6 , 166,8 , 166,8 , 655,6 , 10,17 , 18,7 , 25,12 , 7193,75 , 7193,75 , 7268,30 , 7193,75 , 7193,75 , 7268,30 , 4022,38 , 4060,57 , 4117,19 , 4022,38 , 4060,57 , 4117,19 , 125,9 , 125,7 , {73,78,82}, 187,3 , 3703,19 , 8,5 , 4,0 , 1580,6 , 1586,4 , 2, 1, 7, 7, 7 }, // Hindi/AnyScript/India
{ 50, 0, 98, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8222, 8221, 0,6 , 0,6 , 174,8 , 174,8 , 661,11 , 672,19 , 165,4 , 195,9 , 7298,64 , 7362,98 , 7460,25 , 7298,64 , 7362,98 , 7460,25 , 4136,19 , 4155,52 , 4207,17 , 4136,19 , 4155,52 , 4207,17 , 134,3 , 132,3 , {72,85,70}, 190,2 , 3722,20 , 25,5 , 4,0 , 1590,6 , 1596,12 , 0, 0, 1, 6, 7 }, // Hungarian/AnyScript/Hungary
@@ -467,8 +468,8 @@ static const QLocaleData locale_data[] = {
{ 64, 0, 179, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 221,8 , 314,18 , 37,5 , 8,10 , 8512,60 , 8572,101 , 158,27 , 8512,60 , 8572,101 , 158,27 , 4952,35 , 4987,84 , 798,14 , 4952,35 , 4987,84 , 798,14 , 0,2 , 0,2 , {82,87,70}, 200,2 , 0,7 , 8,5 , 4,0 , 1708,11 , 1281,6 , 0, 0, 1, 6, 7 }, // Kinyarwanda/AnyScript/Rwanda
{ 65, 0, 116, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 0,2 , 0,2 , {75,71,83}, 202,3 , 0,7 , 8,5 , 4,0 , 1719,6 , 1725,10 , 2, 1, 7, 6, 7 }, // Kirghiz/AnyScript/Kyrgyzstan
{ 66, 0, 114, 46, 44, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 713,9 , 722,16 , 353,7 , 360,13 , 8673,39 , 8673,39 , 8673,39 , 8673,39 , 8673,39 , 8673,39 , 5071,14 , 5085,28 , 5071,14 , 5071,14 , 5085,28 , 5071,14 , 151,2 , 150,2 , {75,82,87}, 205,1 , 3856,13 , 4,4 , 4,0 , 1735,3 , 1738,4 , 0, 0, 7, 6, 7 }, // Korean/AnyScript/RepublicOfKorea
- { 67, 0, 102, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 5113,42 , 5113,42 , 5155,14 , 5113,42 , 5113,42 , 5155,14 , 0,2 , 0,2 , {73,82,82}, 0,0 , 0,7 , 8,5 , 4,0 , 1742,5 , 0,0 , 0, 0, 6, 4, 5 }, // Kurdish/AnyScript/Iran
{ 67, 0, 103, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 5113,42 , 5113,42 , 5155,14 , 5113,42 , 5113,42 , 5155,14 , 0,2 , 0,2 , {73,81,68}, 0,0 , 0,7 , 8,5 , 4,0 , 1742,5 , 1747,5 , 0, 0, 6, 5, 6 }, // Kurdish/AnyScript/Iraq
+ { 67, 0, 102, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 5113,42 , 5113,42 , 5155,14 , 5113,42 , 5113,42 , 5155,14 , 0,2 , 0,2 , {73,82,82}, 0,0 , 0,7 , 8,5 , 4,0 , 1742,5 , 0,0 , 0, 0, 6, 4, 5 }, // Kurdish/AnyScript/Iran
{ 67, 0, 207, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 8712,41 , 8753,51 , 8804,27 , 8712,41 , 8753,51 , 8804,27 , 5169,20 , 5189,39 , 5228,14 , 5169,20 , 5189,39 , 5228,14 , 0,2 , 0,2 , {83,89,80}, 206,3 , 0,7 , 8,5 , 4,0 , 1752,5 , 0,0 , 0, 0, 6, 5, 6 }, // Kurdish/AnyScript/SyrianArabRepublic
{ 67, 0, 217, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 8712,41 , 8753,51 , 8804,27 , 8712,41 , 8753,51 , 8804,27 , 5169,20 , 5189,39 , 5228,14 , 5169,20 , 5189,39 , 5228,14 , 0,2 , 0,2 , {84,82,89}, 209,2 , 0,7 , 8,5 , 4,0 , 1752,5 , 1757,7 , 2, 1, 1, 6, 7 }, // Kurdish/AnyScript/Turkey
{ 67, 1, 102, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 5113,42 , 5113,42 , 5155,14 , 5113,42 , 5113,42 , 5155,14 , 0,2 , 0,2 , {73,82,82}, 0,0 , 0,7 , 8,5 , 4,0 , 1742,5 , 0,0 , 0, 0, 6, 4, 5 }, // Kurdish/Arabic/Iran
@@ -501,43 +502,43 @@ static const QLocaleData locale_data[] = {
{ 89, 0, 102, 1643, 1644, 1563, 1642, 1776, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 558,6 , 35,18 , 165,4 , 429,11 , 11486,71 , 11557,70 , 11627,25 , 11486,71 , 11652,73 , 11627,25 , 6780,49 , 6780,49 , 6829,14 , 6780,49 , 6780,49 , 6829,14 , 212,10 , 207,10 , {73,82,82}, 237,1 , 4208,17 , 25,5 , 53,8 , 2002,5 , 2007,5 , 0, 0, 6, 4, 5 }, // Persian/AnyScript/Iran
{ 89, 0, 1, 1643, 1644, 1563, 1642, 1776, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 558,6 , 35,18 , 165,4 , 429,11 , 11725,63 , 11557,70 , 11788,24 , 11725,63 , 11812,68 , 11788,24 , 6780,49 , 6780,49 , 6829,14 , 6780,49 , 6780,49 , 6829,14 , 212,10 , 207,10 , {65,70,78}, 236,1 , 4225,23 , 25,5 , 53,8 , 2012,3 , 1993,9 , 0, 0, 6, 4, 5 }, // Persian/AnyScript/Afghanistan
{ 90, 0, 172, 44, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8222, 8221, 0,6 , 0,6 , 61,7 , 61,7 , 876,10 , 10,17 , 37,5 , 8,10 , 11880,48 , 11928,97 , 12025,24 , 11880,48 , 12049,99 , 12025,24 , 6843,34 , 6877,59 , 6936,14 , 6843,34 , 6877,59 , 6936,14 , 0,2 , 0,2 , {80,76,78}, 238,2 , 4248,60 , 25,5 , 4,0 , 2015,6 , 2021,6 , 2, 1, 1, 6, 7 }, // Polish/AnyScript/Poland
- { 91, 0, 173, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 202,8 , 210,7 , 27,8 , 886,27 , 37,5 , 440,19 , 12148,48 , 12196,89 , 134,24 , 12148,48 , 12196,89 , 134,24 , 6950,28 , 6978,79 , 7057,14 , 6950,28 , 6978,79 , 7057,14 , 222,17 , 217,18 , {69,85,82}, 113,1 , 1933,20 , 25,5 , 4,0 , 2027,17 , 2044,8 , 2, 1, 1, 6, 7 }, // Portuguese/AnyScript/Portugal
- { 91, 0, 6, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 210,7 , 210,7 , 27,8 , 886,27 , 37,5 , 440,19 , 12285,48 , 12333,89 , 134,24 , 12285,48 , 12333,89 , 134,24 , 6950,28 , 7071,79 , 7057,14 , 6950,28 , 7071,79 , 7057,14 , 0,2 , 0,2 , {65,79,65}, 240,2 , 4308,54 , 4,4 , 13,6 , 2052,9 , 2061,6 , 2, 1, 1, 6, 7 }, // Portuguese/AnyScript/Angola
- { 91, 0, 30, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 210,7 , 210,7 , 27,8 , 886,27 , 37,5 , 440,19 , 12285,48 , 12333,89 , 134,24 , 12285,48 , 12333,89 , 134,24 , 6950,28 , 7071,79 , 7057,14 , 6950,28 , 7071,79 , 7057,14 , 0,2 , 0,2 , {66,82,76}, 242,2 , 4362,54 , 4,4 , 13,6 , 2067,19 , 2086,6 , 2, 1, 1, 6, 7 }, // Portuguese/AnyScript/Brazil
- { 91, 0, 92, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 210,7 , 210,7 , 27,8 , 886,27 , 37,5 , 440,19 , 12285,48 , 12333,89 , 134,24 , 12285,48 , 12333,89 , 134,24 , 6950,28 , 7071,79 , 7057,14 , 6950,28 , 7071,79 , 7057,14 , 0,2 , 0,2 , {88,79,70}, 154,3 , 4416,62 , 4,4 , 13,6 , 2052,9 , 2092,12 , 0, 0, 1, 6, 7 }, // Portuguese/AnyScript/GuineaBissau
- { 91, 0, 146, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 210,7 , 210,7 , 27,8 , 886,27 , 37,5 , 440,19 , 12285,48 , 12333,89 , 134,24 , 12285,48 , 12333,89 , 134,24 , 6950,28 , 7071,79 , 7057,14 , 6950,28 , 7071,79 , 7057,14 , 0,2 , 0,2 , {77,90,78}, 244,3 , 4478,72 , 4,4 , 13,6 , 2052,9 , 2104,10 , 2, 1, 1, 6, 7 }, // Portuguese/AnyScript/Mozambique
+ { 91, 0, 30, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 210,7 , 210,7 , 27,8 , 886,27 , 37,5 , 440,19 , 12148,48 , 12196,89 , 134,24 , 12148,48 , 12196,89 , 134,24 , 6950,28 , 6978,79 , 7057,14 , 6950,28 , 6978,79 , 7057,14 , 0,2 , 0,2 , {66,82,76}, 240,2 , 4308,54 , 4,4 , 13,6 , 2027,19 , 2046,6 , 2, 1, 1, 6, 7 }, // Portuguese/AnyScript/Brazil
+ { 91, 0, 6, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 210,7 , 210,7 , 27,8 , 886,27 , 37,5 , 440,19 , 12148,48 , 12196,89 , 134,24 , 12148,48 , 12196,89 , 134,24 , 6950,28 , 6978,79 , 7057,14 , 6950,28 , 6978,79 , 7057,14 , 0,2 , 0,2 , {65,79,65}, 242,2 , 4362,54 , 4,4 , 13,6 , 2052,9 , 2061,6 , 2, 1, 1, 6, 7 }, // Portuguese/AnyScript/Angola
+ { 91, 0, 92, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 210,7 , 210,7 , 27,8 , 886,27 , 37,5 , 440,19 , 12148,48 , 12196,89 , 134,24 , 12148,48 , 12196,89 , 134,24 , 6950,28 , 6978,79 , 7057,14 , 6950,28 , 6978,79 , 7057,14 , 0,2 , 0,2 , {88,79,70}, 154,3 , 4416,62 , 4,4 , 13,6 , 2052,9 , 2067,12 , 0, 0, 1, 6, 7 }, // Portuguese/AnyScript/GuineaBissau
+ { 91, 0, 146, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 210,7 , 210,7 , 27,8 , 886,27 , 37,5 , 440,19 , 12148,48 , 12196,89 , 134,24 , 12148,48 , 12196,89 , 134,24 , 6950,28 , 6978,79 , 7057,14 , 6950,28 , 6978,79 , 7057,14 , 0,2 , 0,2 , {77,90,78}, 244,3 , 4478,72 , 4,4 , 13,6 , 2052,9 , 2079,10 , 2, 1, 1, 6, 7 }, // Portuguese/AnyScript/Mozambique
+ { 91, 0, 173, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 202,8 , 210,7 , 27,8 , 886,27 , 37,5 , 440,19 , 12285,48 , 12333,89 , 134,24 , 12285,48 , 12333,89 , 134,24 , 6950,28 , 7071,79 , 7057,14 , 6950,28 , 7071,79 , 7057,14 , 222,17 , 217,18 , {69,85,82}, 113,1 , 1933,20 , 25,5 , 4,0 , 2089,17 , 2106,8 , 2, 1, 1, 6, 7 }, // Portuguese/AnyScript/Portugal
{ 92, 0, 100, 46, 44, 59, 37, 2662, 45, 43, 101, 39, 39, 34, 34, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 123,18 , 18,7 , 25,12 , 12422,68 , 12422,68 , 12490,27 , 12422,68 , 12422,68 , 12490,27 , 7150,38 , 7188,55 , 7243,23 , 7150,38 , 7188,55 , 7243,23 , 239,5 , 235,4 , {73,78,82}, 247,3 , 4550,12 , 8,5 , 4,0 , 2114,6 , 2120,4 , 2, 1, 7, 7, 7 }, // Punjabi/AnyScript/India
- { 92, 0, 163, 46, 44, 59, 37, 2662, 45, 43, 101, 39, 39, 34, 34, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 123,18 , 18,7 , 25,12 , 12517,67 , 12517,67 , 12490,27 , 12517,67 , 12517,67 , 12490,27 , 7150,38 , 7266,37 , 7243,23 , 7150,38 , 7266,37 , 7243,23 , 239,5 , 235,4 , {80,75,82}, 250,1 , 4562,13 , 8,5 , 4,0 , 2124,5 , 2129,6 , 0, 0, 7, 6, 7 }, // Punjabi/AnyScript/Pakistan
+ { 92, 0, 163, 46, 44, 59, 37, 1632, 45, 43, 101, 39, 39, 34, 34, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 123,18 , 18,7 , 25,12 , 12517,67 , 12517,67 , 12490,27 , 12517,67 , 12517,67 , 12490,27 , 7150,38 , 7266,37 , 7243,23 , 7150,38 , 7266,37 , 7243,23 , 239,5 , 235,4 , {80,75,82}, 250,1 , 4562,13 , 8,5 , 4,0 , 2124,5 , 2129,6 , 0, 0, 7, 6, 7 }, // Punjabi/AnyScript/Pakistan
{ 92, 1, 163, 46, 44, 59, 37, 1632, 45, 43, 101, 39, 39, 34, 34, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 123,18 , 18,7 , 25,12 , 12517,67 , 12517,67 , 12490,27 , 12517,67 , 12517,67 , 12490,27 , 7150,38 , 7266,37 , 7243,23 , 7150,38 , 7266,37 , 7243,23 , 239,5 , 235,4 , {80,75,82}, 250,1 , 4562,13 , 8,5 , 4,0 , 2124,5 , 2129,6 , 0, 0, 7, 6, 7 }, // Punjabi/Arabic/Pakistan
{ 92, 4, 100, 46, 44, 59, 37, 2662, 45, 43, 101, 39, 39, 34, 34, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 123,18 , 18,7 , 25,12 , 12422,68 , 12422,68 , 12490,27 , 12422,68 , 12422,68 , 12490,27 , 7150,38 , 7188,55 , 7243,23 , 7150,38 , 7188,55 , 7243,23 , 239,5 , 235,4 , {73,78,82}, 247,3 , 4550,12 , 8,5 , 4,0 , 2114,6 , 2120,4 , 2, 1, 7, 7, 7 }, // Punjabi/Gurmukhi/India
{ 94, 0, 206, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 332,8 , 502,18 , 37,5 , 8,10 , 12584,67 , 12651,92 , 12743,24 , 12584,67 , 12651,92 , 12743,24 , 7303,23 , 7326,56 , 7382,14 , 7303,23 , 7326,56 , 7382,14 , 149,2 , 239,2 , {67,72,70}, 0,0 , 4575,20 , 25,5 , 4,0 , 2135,9 , 2144,6 , 2, 5, 1, 6, 7 }, // RhaetoRomance/AnyScript/Switzerland
- { 95, 0, 141, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 876,10 , 10,17 , 37,5 , 8,10 , 12767,60 , 12827,98 , 12925,24 , 12767,60 , 12827,98 , 12925,24 , 7396,21 , 7417,48 , 3021,14 , 7396,21 , 7417,48 , 3021,14 , 0,2 , 0,2 , {77,68,76}, 0,0 , 4595,54 , 25,5 , 4,0 , 2150,6 , 2156,17 , 2, 1, 1, 6, 7 }, // Romanian/AnyScript/Moldova
- { 95, 0, 177, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 876,10 , 10,17 , 37,5 , 8,10 , 12767,60 , 12827,98 , 12925,24 , 12767,60 , 12827,98 , 12925,24 , 7396,21 , 7417,48 , 3021,14 , 7396,21 , 7417,48 , 3021,14 , 0,2 , 0,2 , {82,79,78}, 251,3 , 4649,16 , 25,5 , 4,0 , 2150,6 , 2173,7 , 2, 1, 1, 6, 7 }, // Romanian/AnyScript/Romania
+ { 95, 0, 177, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 876,10 , 10,17 , 37,5 , 8,10 , 12767,60 , 12827,98 , 12925,24 , 12767,60 , 12827,98 , 12925,24 , 7396,21 , 7417,48 , 3021,14 , 7396,21 , 7417,48 , 3021,14 , 0,2 , 0,2 , {82,79,78}, 251,3 , 4595,16 , 25,5 , 4,0 , 2150,6 , 2156,7 , 2, 1, 1, 6, 7 }, // Romanian/AnyScript/Romania
+ { 95, 0, 141, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 876,10 , 10,17 , 37,5 , 8,10 , 12767,60 , 12827,98 , 12925,24 , 12767,60 , 12827,98 , 12925,24 , 7396,21 , 7417,48 , 3021,14 , 7396,21 , 7417,48 , 3021,14 , 0,2 , 0,2 , {77,68,76}, 0,0 , 4611,54 , 25,5 , 4,0 , 2150,6 , 2163,17 , 2, 1, 1, 6, 7 }, // Romanian/AnyScript/Moldova
{ 96, 0, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 54,7 , 54,7 , 332,8 , 913,22 , 165,4 , 195,9 , 12949,62 , 13011,80 , 13091,24 , 13115,63 , 13178,82 , 13091,24 , 7465,21 , 7486,62 , 7548,14 , 7562,21 , 7583,62 , 7548,14 , 0,2 , 0,2 , {82,85,66}, 254,4 , 4665,89 , 25,5 , 4,0 , 2180,7 , 2187,6 , 2, 1, 1, 6, 7 }, // Russian/AnyScript/RussianFederation
{ 96, 0, 141, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 54,7 , 54,7 , 332,8 , 913,22 , 165,4 , 195,9 , 12949,62 , 13011,80 , 13091,24 , 13115,63 , 13178,82 , 13091,24 , 7465,21 , 7486,62 , 7548,14 , 7562,21 , 7583,62 , 7548,14 , 0,2 , 0,2 , {77,68,76}, 0,0 , 4754,21 , 25,5 , 4,0 , 2180,7 , 2193,7 , 2, 1, 1, 6, 7 }, // Russian/AnyScript/Moldova
{ 96, 0, 222, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 54,7 , 54,7 , 332,8 , 913,22 , 37,5 , 8,10 , 12949,62 , 13011,80 , 13091,24 , 13115,63 , 13178,82 , 13091,24 , 7465,21 , 7486,62 , 7548,14 , 7562,21 , 7583,62 , 7548,14 , 0,2 , 0,2 , {85,65,72}, 258,1 , 4775,24 , 25,5 , 4,0 , 2180,7 , 2200,7 , 2, 1, 1, 6, 7 }, // Russian/AnyScript/Ukraine
{ 98, 0, 41, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 364,8 , 99,16 , 37,5 , 8,10 , 13260,48 , 13308,91 , 13399,24 , 13260,48 , 13308,91 , 13399,24 , 7645,28 , 7673,66 , 7739,14 , 7645,28 , 7673,66 , 7739,14 , 244,2 , 241,2 , {88,65,70}, 215,4 , 4799,25 , 4,4 , 48,5 , 2207,5 , 2212,22 , 0, 0, 1, 6, 7 }, // Sangho/AnyScript/CentralAfricanRepublic
{ 99, 0, 100, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 630,7 , 99,16 , 322,8 , 330,13 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 0,2 , 0,2 , {73,78,82}, 194,2 , 0,7 , 4,4 , 4,0 , 2234,12 , 2246,6 , 2, 1, 7, 7, 7 }, // Sanskrit/AnyScript/India
- { 100, 0, 241, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 54,7 , 54,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13423,48 , 13471,81 , 9858,24 , 13423,48 , 13471,81 , 9858,24 , 7753,28 , 7781,52 , 7833,14 , 7753,28 , 7781,52 , 7833,14 , 246,9 , 243,7 , {0,0,0}, 0,0 , 4824,0 , 25,5 , 4,0 , 2252,6 , 2258,18 , 2, 1, 1, 6, 7 }, // Serbian/AnyScript/SerbiaAndMontenegro
- { 100, 0, 27, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 54,7 , 54,7 , 115,8 , 942,20 , 37,5 , 459,40 , 13423,48 , 13552,83 , 9858,24 , 13423,48 , 13552,83 , 9858,24 , 7847,28 , 7875,54 , 7833,14 , 7847,28 , 7875,54 , 7833,14 , 246,9 , 243,7 , {66,65,77}, 259,3 , 4824,195 , 25,5 , 4,0 , 2276,6 , 2282,19 , 2, 1, 1, 6, 7 }, // Serbian/AnyScript/BosniaAndHerzegowina
- { 100, 0, 238, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 54,7 , 54,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13423,48 , 13471,81 , 9858,24 , 13423,48 , 13471,81 , 9858,24 , 7753,28 , 7781,52 , 7833,14 , 7753,28 , 7781,52 , 7833,14 , 246,9 , 243,7 , {0,0,0}, 0,0 , 4824,0 , 25,5 , 4,0 , 2252,6 , 0,0 , 2, 1, 1, 6, 7 }, // Serbian/AnyScript/Yugoslavia
- { 100, 0, 242, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 61,7 , 61,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13635,48 , 13683,81 , 13764,24 , 13635,48 , 13683,81 , 13764,24 , 7929,28 , 7957,54 , 2118,14 , 7929,28 , 7957,54 , 2118,14 , 255,9 , 250,7 , {69,85,82}, 113,1 , 5019,27 , 8,5 , 4,0 , 2301,6 , 2307,9 , 2, 1, 1, 6, 7 }, // Serbian/AnyScript/Montenegro
- { 100, 0, 243, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 54,7 , 54,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13423,48 , 13471,81 , 9858,24 , 13423,48 , 13471,81 , 9858,24 , 7753,28 , 7781,52 , 7833,14 , 7753,28 , 7781,52 , 7833,14 , 246,9 , 243,7 , {82,83,68}, 262,4 , 5046,71 , 25,5 , 4,0 , 2252,6 , 2316,6 , 0, 0, 1, 6, 7 }, // Serbian/AnyScript/Serbia
- { 100, 2, 27, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 54,7 , 54,7 , 115,8 , 942,20 , 37,5 , 459,40 , 13423,48 , 13552,83 , 9858,24 , 13423,48 , 13552,83 , 9858,24 , 7847,28 , 7875,54 , 7833,14 , 7847,28 , 7875,54 , 7833,14 , 246,9 , 243,7 , {66,65,77}, 259,3 , 4824,195 , 25,5 , 4,0 , 2276,6 , 2282,19 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/BosniaAndHerzegowina
- { 100, 2, 238, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 54,7 , 54,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13423,48 , 13471,81 , 9858,24 , 13423,48 , 13471,81 , 9858,24 , 7753,28 , 7781,52 , 7833,14 , 7753,28 , 7781,52 , 7833,14 , 246,9 , 243,7 , {0,0,0}, 0,0 , 4824,0 , 25,5 , 4,0 , 2252,6 , 0,0 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Yugoslavia
- { 100, 2, 241, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 54,7 , 54,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13423,48 , 13471,81 , 9858,24 , 13423,48 , 13471,81 , 9858,24 , 7753,28 , 7781,52 , 7833,14 , 7753,28 , 7781,52 , 7833,14 , 246,9 , 243,7 , {0,0,0}, 0,0 , 4824,0 , 25,5 , 4,0 , 2252,6 , 2258,18 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/SerbiaAndMontenegro
+ { 100, 0, 243, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 54,7 , 54,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13423,48 , 13471,81 , 9858,24 , 13423,48 , 13471,81 , 9858,24 , 7753,28 , 7781,52 , 7833,14 , 7753,28 , 7781,52 , 7833,14 , 246,9 , 243,7 , {82,83,68}, 259,4 , 4824,71 , 25,5 , 4,0 , 2252,6 , 2258,6 , 0, 0, 1, 6, 7 }, // Serbian/AnyScript/Serbia
+ { 100, 0, 27, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 54,7 , 54,7 , 115,8 , 942,20 , 37,5 , 459,40 , 13423,48 , 13552,83 , 9858,24 , 13423,48 , 13552,83 , 9858,24 , 7847,28 , 7875,54 , 7833,14 , 7847,28 , 7875,54 , 7833,14 , 246,9 , 243,7 , {66,65,77}, 263,3 , 4895,195 , 25,5 , 4,0 , 2264,6 , 2270,19 , 2, 1, 1, 6, 7 }, // Serbian/AnyScript/BosniaAndHerzegowina
+ { 100, 0, 238, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 54,7 , 54,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13423,48 , 13471,81 , 9858,24 , 13423,48 , 13471,81 , 9858,24 , 7753,28 , 7781,52 , 7833,14 , 7753,28 , 7781,52 , 7833,14 , 246,9 , 243,7 , {0,0,0}, 0,0 , 5090,0 , 25,5 , 4,0 , 2252,6 , 0,0 , 2, 1, 1, 6, 7 }, // Serbian/AnyScript/Yugoslavia
+ { 100, 0, 241, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 54,7 , 54,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13423,48 , 13471,81 , 9858,24 , 13423,48 , 13471,81 , 9858,24 , 7753,28 , 7781,52 , 7833,14 , 7753,28 , 7781,52 , 7833,14 , 246,9 , 243,7 , {0,0,0}, 0,0 , 5090,0 , 25,5 , 4,0 , 2252,6 , 2289,18 , 2, 1, 1, 6, 7 }, // Serbian/AnyScript/SerbiaAndMontenegro
+ { 100, 0, 242, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 61,7 , 61,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13635,48 , 13683,81 , 13764,24 , 13635,48 , 13683,81 , 13764,24 , 7929,28 , 7957,54 , 2118,14 , 7929,28 , 7957,54 , 2118,14 , 255,9 , 250,7 , {69,85,82}, 113,1 , 5090,27 , 8,5 , 4,0 , 2307,6 , 2313,9 , 2, 1, 1, 6, 7 }, // Serbian/AnyScript/Montenegro
+ { 100, 2, 27, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 54,7 , 54,7 , 115,8 , 942,20 , 37,5 , 459,40 , 13423,48 , 13552,83 , 9858,24 , 13423,48 , 13552,83 , 9858,24 , 7847,28 , 7875,54 , 7833,14 , 7847,28 , 7875,54 , 7833,14 , 246,9 , 243,7 , {66,65,77}, 263,3 , 4895,195 , 25,5 , 4,0 , 2264,6 , 2270,19 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/BosniaAndHerzegowina
+ { 100, 2, 238, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 54,7 , 54,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13423,48 , 13471,81 , 9858,24 , 13423,48 , 13471,81 , 9858,24 , 7753,28 , 7781,52 , 7833,14 , 7753,28 , 7781,52 , 7833,14 , 246,9 , 243,7 , {0,0,0}, 0,0 , 5090,0 , 25,5 , 4,0 , 2252,6 , 0,0 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Yugoslavia
+ { 100, 2, 241, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 54,7 , 54,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13423,48 , 13471,81 , 9858,24 , 13423,48 , 13471,81 , 9858,24 , 7753,28 , 7781,52 , 7833,14 , 7753,28 , 7781,52 , 7833,14 , 246,9 , 243,7 , {0,0,0}, 0,0 , 5090,0 , 25,5 , 4,0 , 2252,6 , 2289,18 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/SerbiaAndMontenegro
{ 100, 2, 242, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 54,7 , 54,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13423,48 , 13471,81 , 9858,24 , 13423,48 , 13471,81 , 9858,24 , 7753,28 , 7781,52 , 7833,14 , 7753,28 , 7781,52 , 7833,14 , 246,9 , 243,7 , {69,85,82}, 113,1 , 5117,27 , 25,5 , 4,0 , 2252,6 , 2322,9 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Montenegro
- { 100, 2, 243, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 54,7 , 54,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13423,48 , 13471,81 , 9858,24 , 13423,48 , 13471,81 , 9858,24 , 7753,28 , 7781,52 , 7833,14 , 7753,28 , 7781,52 , 7833,14 , 246,9 , 243,7 , {82,83,68}, 262,4 , 5046,71 , 25,5 , 4,0 , 2252,6 , 2316,6 , 0, 0, 1, 6, 7 }, // Serbian/Cyrillic/Serbia
- { 100, 7, 27, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 61,7 , 61,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13635,48 , 13683,81 , 13764,24 , 13635,48 , 13683,81 , 13764,24 , 7929,28 , 7957,54 , 2118,14 , 7929,28 , 7957,54 , 2118,14 , 255,9 , 250,7 , {66,65,77}, 266,2 , 5144,218 , 25,5 , 4,0 , 2301,6 , 2331,19 , 2, 1, 1, 6, 7 }, // Serbian/Latin/BosniaAndHerzegowina
- { 100, 7, 238, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 61,7 , 61,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13635,48 , 13683,81 , 13764,24 , 13635,48 , 13683,81 , 13764,24 , 7929,28 , 7957,54 , 2118,14 , 7929,28 , 7957,54 , 2118,14 , 255,9 , 250,7 , {0,0,0}, 0,0 , 4824,0 , 25,5 , 4,0 , 2301,6 , 0,0 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Yugoslavia
- { 100, 7, 241, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 61,7 , 61,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13635,48 , 13683,81 , 13764,24 , 13635,48 , 13683,81 , 13764,24 , 7929,28 , 7957,54 , 2118,14 , 7929,28 , 7957,54 , 2118,14 , 255,9 , 250,7 , {0,0,0}, 0,0 , 4824,0 , 25,5 , 4,0 , 2301,6 , 2350,18 , 2, 1, 1, 6, 7 }, // Serbian/Latin/SerbiaAndMontenegro
- { 100, 7, 242, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 61,7 , 61,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13635,48 , 13683,81 , 13764,24 , 13635,48 , 13683,81 , 13764,24 , 7929,28 , 7957,54 , 2118,14 , 7929,28 , 7957,54 , 2118,14 , 255,9 , 250,7 , {69,85,82}, 113,1 , 5019,27 , 8,5 , 4,0 , 2301,6 , 2307,9 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Montenegro
- { 100, 7, 243, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 61,7 , 61,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13635,48 , 13683,81 , 13764,24 , 13635,48 , 13683,81 , 13764,24 , 7929,28 , 7957,54 , 2118,14 , 7929,28 , 7957,54 , 2118,14 , 255,9 , 250,7 , {82,83,68}, 268,4 , 5362,71 , 25,5 , 4,0 , 2301,6 , 2368,6 , 0, 0, 1, 6, 7 }, // Serbian/Latin/Serbia
- { 101, 0, 241, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 61,7 , 61,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13635,48 , 13683,81 , 13764,24 , 13635,48 , 13683,81 , 13764,24 , 7929,28 , 7957,54 , 2118,14 , 7929,28 , 7957,54 , 2118,14 , 255,9 , 250,7 , {0,0,0}, 0,0 , 4824,0 , 25,5 , 4,0 , 2374,14 , 2350,18 , 2, 1, 1, 6, 7 }, // SerboCroatian/AnyScript/SerbiaAndMontenegro
+ { 100, 2, 243, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 54,7 , 54,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13423,48 , 13471,81 , 9858,24 , 13423,48 , 13471,81 , 9858,24 , 7753,28 , 7781,52 , 7833,14 , 7753,28 , 7781,52 , 7833,14 , 246,9 , 243,7 , {82,83,68}, 259,4 , 4824,71 , 25,5 , 4,0 , 2252,6 , 2258,6 , 0, 0, 1, 6, 7 }, // Serbian/Cyrillic/Serbia
+ { 100, 7, 27, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 61,7 , 61,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13635,48 , 13683,81 , 13764,24 , 13635,48 , 13683,81 , 13764,24 , 7929,28 , 7957,54 , 2118,14 , 7929,28 , 7957,54 , 2118,14 , 255,9 , 250,7 , {66,65,77}, 266,2 , 5144,218 , 25,5 , 4,0 , 2307,6 , 2331,19 , 2, 1, 1, 6, 7 }, // Serbian/Latin/BosniaAndHerzegowina
+ { 100, 7, 238, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 61,7 , 61,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13635,48 , 13683,81 , 13764,24 , 13635,48 , 13683,81 , 13764,24 , 7929,28 , 7957,54 , 2118,14 , 7929,28 , 7957,54 , 2118,14 , 255,9 , 250,7 , {0,0,0}, 0,0 , 5090,0 , 25,5 , 4,0 , 2307,6 , 0,0 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Yugoslavia
+ { 100, 7, 241, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 61,7 , 61,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13635,48 , 13683,81 , 13764,24 , 13635,48 , 13683,81 , 13764,24 , 7929,28 , 7957,54 , 2118,14 , 7929,28 , 7957,54 , 2118,14 , 255,9 , 250,7 , {0,0,0}, 0,0 , 5090,0 , 25,5 , 4,0 , 2307,6 , 2350,18 , 2, 1, 1, 6, 7 }, // Serbian/Latin/SerbiaAndMontenegro
+ { 100, 7, 242, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 61,7 , 61,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13635,48 , 13683,81 , 13764,24 , 13635,48 , 13683,81 , 13764,24 , 7929,28 , 7957,54 , 2118,14 , 7929,28 , 7957,54 , 2118,14 , 255,9 , 250,7 , {69,85,82}, 113,1 , 5090,27 , 8,5 , 4,0 , 2307,6 , 2313,9 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Montenegro
+ { 100, 7, 243, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 61,7 , 61,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13635,48 , 13683,81 , 13764,24 , 13635,48 , 13683,81 , 13764,24 , 7929,28 , 7957,54 , 2118,14 , 7929,28 , 7957,54 , 2118,14 , 255,9 , 250,7 , {82,83,68}, 268,4 , 5362,71 , 25,5 , 4,0 , 2307,6 , 2368,6 , 0, 0, 1, 6, 7 }, // Serbian/Latin/Serbia
{ 101, 0, 27, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 61,7 , 61,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13635,48 , 13683,81 , 13764,24 , 13635,48 , 13683,81 , 13764,24 , 7929,28 , 7957,54 , 2118,14 , 7929,28 , 7957,54 , 2118,14 , 255,9 , 250,7 , {66,65,77}, 266,2 , 5144,218 , 25,5 , 4,0 , 2374,14 , 2331,19 , 2, 1, 1, 6, 7 }, // SerboCroatian/AnyScript/BosniaAndHerzegowina
- { 101, 0, 238, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 61,7 , 61,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13635,48 , 13683,81 , 13764,24 , 13635,48 , 13683,81 , 13764,24 , 7929,28 , 7957,54 , 2118,14 , 7929,28 , 7957,54 , 2118,14 , 255,9 , 250,7 , {0,0,0}, 0,0 , 4824,0 , 25,5 , 4,0 , 2374,14 , 0,0 , 2, 1, 1, 6, 7 }, // SerboCroatian/AnyScript/Yugoslavia
- { 102, 0, 120, 44, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 13788,48 , 13836,105 , 158,27 , 13788,48 , 13836,105 , 158,27 , 8011,27 , 8038,61 , 798,14 , 8011,27 , 8038,61 , 798,14 , 0,2 , 0,2 , {90,65,82}, 11,1 , 0,7 , 4,4 , 4,0 , 2388,7 , 0,0 , 2, 1, 1, 6, 7 }, // Sesotho/AnyScript/Lesotho
+ { 101, 0, 238, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 61,7 , 61,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13635,48 , 13683,81 , 13764,24 , 13635,48 , 13683,81 , 13764,24 , 7929,28 , 7957,54 , 2118,14 , 7929,28 , 7957,54 , 2118,14 , 255,9 , 250,7 , {0,0,0}, 0,0 , 5090,0 , 25,5 , 4,0 , 2374,14 , 0,0 , 2, 1, 1, 6, 7 }, // SerboCroatian/AnyScript/Yugoslavia
+ { 101, 0, 241, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 61,7 , 61,7 , 935,7 , 942,20 , 150,5 , 155,10 , 13635,48 , 13683,81 , 13764,24 , 13635,48 , 13683,81 , 13764,24 , 7929,28 , 7957,54 , 2118,14 , 7929,28 , 7957,54 , 2118,14 , 255,9 , 250,7 , {0,0,0}, 0,0 , 5090,0 , 25,5 , 4,0 , 2374,14 , 2350,18 , 2, 1, 1, 6, 7 }, // SerboCroatian/AnyScript/SerbiaAndMontenegro
{ 102, 0, 195, 44, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 13788,48 , 13836,105 , 158,27 , 13788,48 , 13836,105 , 158,27 , 8011,27 , 8038,61 , 798,14 , 8011,27 , 8038,61 , 798,14 , 0,2 , 0,2 , {90,65,82}, 11,1 , 0,7 , 4,4 , 4,0 , 2388,7 , 0,0 , 2, 1, 1, 6, 7 }, // Sesotho/AnyScript/SouthAfrica
+ { 102, 0, 120, 44, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 13788,48 , 13836,105 , 158,27 , 13788,48 , 13836,105 , 158,27 , 8011,27 , 8038,61 , 798,14 , 8011,27 , 8038,61 , 798,14 , 0,2 , 0,2 , {90,65,82}, 11,1 , 0,7 , 4,4 , 4,0 , 2388,7 , 0,0 , 2, 1, 1, 6, 7 }, // Sesotho/AnyScript/Lesotho
{ 103, 0, 195, 44, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 13941,48 , 13989,117 , 158,27 , 13941,48 , 13989,117 , 158,27 , 8099,27 , 8126,64 , 798,14 , 8099,27 , 8126,64 , 798,14 , 0,2 , 0,2 , {90,65,82}, 11,1 , 0,7 , 4,4 , 4,0 , 2395,8 , 0,0 , 2, 1, 1, 6, 7 }, // Setswana/AnyScript/SouthAfrica
{ 104, 0, 240, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8221, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 14106,47 , 14153,100 , 14253,24 , 14106,47 , 14153,100 , 14253,24 , 8190,32 , 8222,55 , 8277,14 , 8190,32 , 8222,55 , 8277,14 , 0,2 , 0,2 , {85,83,68}, 272,3 , 5433,22 , 4,4 , 13,6 , 2403,8 , 944,8 , 2, 1, 7, 6, 7 }, // Shona/AnyScript/Zimbabwe
{ 106, 0, 198, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 576,10 , 962,17 , 18,7 , 25,12 , 14277,54 , 14331,92 , 14423,32 , 14277,54 , 14331,92 , 14423,32 , 8291,30 , 8321,62 , 8383,19 , 8291,30 , 8321,62 , 8383,19 , 264,5 , 257,4 , {76,75,82}, 275,5 , 5455,19 , 4,4 , 13,6 , 2411,5 , 2416,11 , 2, 1, 1, 6, 7 }, // Singhalese/AnyScript/SriLanka
@@ -570,9 +571,9 @@ static const QLocaleData locale_data[] = {
{ 111, 0, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 284,7 , 284,7 , 558,6 , 988,26 , 18,7 , 25,12 , 15242,48 , 15290,89 , 15379,24 , 15242,48 , 15290,89 , 15379,24 , 8767,28 , 8795,53 , 3021,14 , 8767,28 , 8795,53 , 3021,14 , 61,4 , 59,4 , {85,83,68}, 128,1 , 5873,70 , 8,5 , 4,0 , 2540,7 , 2702,14 , 2, 1, 7, 6, 7 }, // Spanish/AnyScript/UnitedStates
{ 111, 0, 227, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 284,7 , 284,7 , 27,8 , 988,26 , 37,5 , 8,10 , 15242,48 , 15290,89 , 15379,24 , 15242,48 , 15290,89 , 15379,24 , 8767,28 , 8795,53 , 3021,14 , 8767,28 , 8795,53 , 3021,14 , 61,4 , 59,4 , {85,89,85}, 128,1 , 6401,48 , 8,5 , 67,7 , 2540,7 , 2716,7 , 2, 1, 1, 6, 7 }, // Spanish/AnyScript/Uruguay
{ 111, 0, 231, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 284,7 , 284,7 , 27,8 , 988,26 , 37,5 , 8,10 , 15242,48 , 15290,89 , 15379,24 , 15242,48 , 15290,89 , 15379,24 , 8767,28 , 8795,53 , 3021,14 , 8767,28 , 8795,53 , 3021,14 , 61,4 , 59,4 , {86,69,70}, 301,5 , 6449,86 , 4,4 , 48,5 , 2540,7 , 2723,9 , 2, 1, 1, 6, 7 }, // Spanish/AnyScript/Venezuela
- { 111, 0, 246, 46, 44, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 284,7 , 284,7 , 27,8 , 988,26 , 37,5 , 8,10 , 15242,48 , 15290,89 , 15379,24 , 15242,48 , 15290,89 , 15379,24 , 8767,28 , 8795,53 , 3021,14 , 8767,28 , 8795,53 , 3021,14 , 61,4 , 59,4 , {0,0,0}, 0,0 , 4824,0 , 8,5 , 4,0 , 2732,23 , 2755,25 , 2, 1, 1, 6, 7 }, // Spanish/AnyScript/LatinAmericaAndTheCaribbean
- { 113, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 39, 39, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 15403,48 , 15451,84 , 134,24 , 15403,48 , 15451,84 , 134,24 , 8848,22 , 8870,60 , 8930,14 , 8848,22 , 8870,60 , 8930,14 , 282,7 , 277,7 , {75,69,83}, 2,3 , 6535,24 , 4,4 , 4,0 , 2780,9 , 2789,5 , 2, 1, 6, 6, 7 }, // Swahili/AnyScript/Kenya
- { 113, 0, 210, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 39, 39, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 15403,48 , 15451,84 , 134,24 , 15403,48 , 15451,84 , 134,24 , 8848,22 , 8870,60 , 8930,14 , 8848,22 , 8870,60 , 8930,14 , 282,7 , 277,7 , {84,90,83}, 306,3 , 6559,27 , 25,5 , 4,0 , 2780,9 , 2794,8 , 0, 0, 1, 6, 7 }, // Swahili/AnyScript/Tanzania
+ { 111, 0, 246, 46, 44, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 284,7 , 284,7 , 27,8 , 988,26 , 37,5 , 8,10 , 15242,48 , 15290,89 , 15379,24 , 15242,48 , 15290,89 , 15379,24 , 8767,28 , 8795,53 , 3021,14 , 8767,28 , 8795,53 , 3021,14 , 61,4 , 59,4 , {0,0,0}, 0,0 , 5090,0 , 8,5 , 4,0 , 2732,23 , 2755,25 , 2, 1, 1, 6, 7 }, // Spanish/AnyScript/LatinAmericaAndTheCaribbean
+ { 113, 0, 210, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 39, 39, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 15403,48 , 15451,84 , 134,24 , 15403,48 , 15451,84 , 134,24 , 8848,22 , 8870,60 , 8930,14 , 8848,22 , 8870,60 , 8930,14 , 282,7 , 277,7 , {84,90,83}, 306,3 , 6535,27 , 25,5 , 4,0 , 2780,9 , 2789,8 , 0, 0, 1, 6, 7 }, // Swahili/AnyScript/Tanzania
+ { 113, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 39, 39, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 15403,48 , 15451,84 , 134,24 , 15403,48 , 15451,84 , 134,24 , 8848,22 , 8870,60 , 8930,14 , 8848,22 , 8870,60 , 8930,14 , 282,7 , 277,7 , {75,69,83}, 2,3 , 6562,24 , 4,4 , 4,0 , 2780,9 , 2797,5 , 2, 1, 6, 6, 7 }, // Swahili/AnyScript/Kenya
{ 114, 0, 205, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 291,9 , 291,9 , 72,10 , 1041,30 , 37,5 , 413,16 , 4039,48 , 15535,86 , 134,24 , 4039,48 , 15535,86 , 134,24 , 8944,29 , 8973,50 , 2295,14 , 8944,29 , 8973,50 , 2295,14 , 289,2 , 284,2 , {83,69,75}, 142,2 , 6586,45 , 25,5 , 4,0 , 2802,7 , 2809,7 , 2, 1, 1, 6, 7 }, // Swedish/AnyScript/Sweden
{ 114, 0, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 291,9 , 291,9 , 72,10 , 1041,30 , 37,5 , 413,16 , 4039,48 , 15535,86 , 134,24 , 4039,48 , 15535,86 , 134,24 , 8944,29 , 8973,50 , 2295,14 , 8944,29 , 8973,50 , 2295,14 , 289,2 , 284,2 , {69,85,82}, 113,1 , 6631,19 , 25,5 , 4,0 , 2802,7 , 2816,7 , 2, 1, 1, 6, 7 }, // Swedish/AnyScript/Finland
{ 115, 0, 170, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 300,8 , 300,8 , 558,6 , 1071,18 , 37,5 , 8,10 , 15621,48 , 15669,88 , 15757,24 , 15621,48 , 15669,88 , 15757,24 , 9023,28 , 9051,55 , 9106,14 , 9120,28 , 9051,55 , 9106,14 , 0,2 , 0,2 , {80,72,80}, 152,1 , 6650,22 , 8,5 , 4,0 , 2823,7 , 2830,9 , 2, 1, 7, 6, 7 }, // Tagalog/AnyScript/Philippines
@@ -585,18 +586,18 @@ static const QLocaleData locale_data[] = {
{ 120, 0, 211, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 344,5 , 344,5 , 349,8 , 357,7 , 364,8 , 1100,19 , 165,4 , 528,27 , 16193,63 , 16256,98 , 16193,63 , 16193,63 , 16256,98 , 16354,24 , 9410,23 , 9433,68 , 9501,14 , 9410,23 , 9433,68 , 9501,14 , 292,10 , 288,10 , {84,72,66}, 318,1 , 6711,13 , 4,4 , 48,5 , 2877,3 , 2877,3 , 2, 1, 7, 6, 7 }, // Thai/AnyScript/Thailand
{ 121, 0, 44, 46, 44, 59, 37, 3872, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 16378,63 , 16441,158 , 158,27 , 16378,63 , 16441,158 , 158,27 , 9515,49 , 9564,77 , 9641,21 , 9515,49 , 9564,77 , 9641,21 , 302,7 , 298,8 , {67,78,89}, 229,3 , 6724,13 , 8,5 , 4,0 , 2880,8 , 2888,6 , 2, 1, 7, 6, 7 }, // Tibetan/AnyScript/China
{ 121, 0, 100, 46, 44, 59, 37, 3872, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 16378,63 , 16441,158 , 158,27 , 16378,63 , 16441,158 , 158,27 , 9515,49 , 9564,77 , 9641,21 , 9515,49 , 9564,77 , 9641,21 , 302,7 , 298,8 , {73,78,82}, 145,2 , 6737,22 , 8,5 , 4,0 , 2880,8 , 2894,7 , 2, 1, 7, 7, 7 }, // Tibetan/AnyScript/India
- { 122, 0, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1119,23 , 18,7 , 25,12 , 16599,46 , 16645,54 , 1061,24 , 16599,46 , 16645,54 , 1061,24 , 9662,29 , 9662,29 , 9691,14 , 9662,29 , 9662,29 , 9691,14 , 309,7 , 306,7 , {69,82,78}, 8,3 , 0,7 , 4,4 , 4,0 , 2901,4 , 2905,4 , 2, 1, 6, 6, 7 }, // Tigrinya/AnyScript/Eritrea
- { 122, 0, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1142,23 , 18,7 , 25,12 , 953,46 , 999,62 , 1061,24 , 953,46 , 999,62 , 1061,24 , 9705,29 , 9705,29 , 9691,14 , 9705,29 , 9705,29 , 9691,14 , 309,7 , 306,7 , {69,84,66}, 0,2 , 81,16 , 4,4 , 4,0 , 2901,4 , 96,5 , 2, 1, 6, 6, 7 }, // Tigrinya/AnyScript/Ethiopia
+ { 122, 0, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1119,23 , 18,7 , 25,12 , 953,46 , 999,62 , 1061,24 , 953,46 , 999,62 , 1061,24 , 9662,29 , 9662,29 , 9691,14 , 9662,29 , 9662,29 , 9691,14 , 309,7 , 306,7 , {69,84,66}, 0,2 , 81,16 , 4,4 , 4,0 , 2901,4 , 96,5 , 2, 1, 6, 6, 7 }, // Tigrinya/AnyScript/Ethiopia
+ { 122, 0, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1142,23 , 18,7 , 25,12 , 16599,46 , 16645,54 , 1061,24 , 16599,46 , 16645,54 , 1061,24 , 9705,29 , 9705,29 , 9691,14 , 9705,29 , 9705,29 , 9691,14 , 309,7 , 306,7 , {69,82,78}, 8,3 , 0,7 , 4,4 , 4,0 , 2901,4 , 2905,4 , 2, 1, 6, 6, 7 }, // Tigrinya/AnyScript/Eritrea
{ 123, 0, 214, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 99,16 , 37,5 , 8,10 , 16699,51 , 16750,87 , 16837,24 , 16699,51 , 16750,87 , 16837,24 , 9734,29 , 9763,60 , 9823,14 , 9734,29 , 9763,60 , 9823,14 , 0,2 , 0,2 , {84,79,80}, 319,2 , 0,7 , 8,5 , 4,0 , 2909,13 , 2922,5 , 2, 1, 1, 6, 7 }, // Tonga/AnyScript/Tonga
{ 124, 0, 195, 44, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 16861,48 , 16909,122 , 158,27 , 16861,48 , 16909,122 , 158,27 , 9837,27 , 9864,72 , 798,14 , 9837,27 , 9864,72 , 798,14 , 0,2 , 0,2 , {90,65,82}, 11,1 , 0,7 , 4,4 , 4,0 , 2927,8 , 0,0 , 2, 1, 1, 6, 7 }, // Tsonga/AnyScript/SouthAfrica
{ 125, 0, 217, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 364,8 , 364,8 , 876,10 , 1165,17 , 37,5 , 8,10 , 17031,48 , 17079,75 , 17154,24 , 17031,48 , 17079,75 , 17154,24 , 9936,28 , 9964,54 , 10018,14 , 9936,28 , 9964,54 , 10018,14 , 0,2 , 0,2 , {84,82,89}, 209,2 , 6759,18 , 25,5 , 4,0 , 2935,6 , 2941,7 , 2, 1, 1, 6, 7 }, // Turkish/AnyScript/Turkey
{ 128, 0, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 0,2 , 0,2 , {67,78,89}, 229,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Uigur/AnyScript/China
{ 128, 1, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 0,2 , 0,2 , {67,78,89}, 229,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Uigur/Arabic/China
{ 129, 0, 222, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 372,8 , 372,8 , 332,8 , 1182,22 , 37,5 , 8,10 , 17178,48 , 17226,95 , 17321,24 , 17345,67 , 17412,87 , 17321,24 , 10032,21 , 10053,56 , 10109,14 , 10032,21 , 10053,56 , 10109,14 , 316,2 , 313,2 , {85,65,72}, 258,1 , 6777,49 , 25,5 , 4,0 , 2948,10 , 2958,7 , 2, 1, 1, 6, 7 }, // Ukrainian/AnyScript/Ukraine
- { 130, 0, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 1204,18 , 18,7 , 25,12 , 17499,67 , 17499,67 , 11788,24 , 17499,67 , 17499,67 , 11788,24 , 10123,36 , 10123,36 , 10159,14 , 10123,36 , 10123,36 , 10159,14 , 0,2 , 0,2 , {73,78,82}, 145,2 , 6826,18 , 8,5 , 4,0 , 2965,4 , 2969,5 , 2, 1, 7, 7, 7 }, // Urdu/AnyScript/India
- { 130, 0, 163, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 1204,18 , 18,7 , 25,12 , 17499,67 , 17499,67 , 11788,24 , 17499,67 , 17499,67 , 11788,24 , 10123,36 , 10123,36 , 10159,14 , 10123,36 , 10123,36 , 10159,14 , 0,2 , 0,2 , {80,75,82}, 321,4 , 6844,21 , 4,4 , 4,0 , 2965,4 , 2974,7 , 0, 0, 7, 6, 7 }, // Urdu/AnyScript/Pakistan
+ { 130, 0, 163, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 1204,18 , 18,7 , 25,12 , 17499,67 , 17499,67 , 11788,24 , 17499,67 , 17499,67 , 11788,24 , 10123,36 , 10123,36 , 10159,14 , 10123,36 , 10123,36 , 10159,14 , 0,2 , 0,2 , {80,75,82}, 321,4 , 6826,21 , 4,4 , 4,0 , 2965,4 , 2969,7 , 0, 0, 7, 6, 7 }, // Urdu/AnyScript/Pakistan
+ { 130, 0, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 1204,18 , 18,7 , 25,12 , 17499,67 , 17499,67 , 11788,24 , 17499,67 , 17499,67 , 11788,24 , 10123,36 , 10123,36 , 10159,14 , 10123,36 , 10123,36 , 10159,14 , 0,2 , 0,2 , {73,78,82}, 145,2 , 6847,18 , 8,5 , 4,0 , 2965,4 , 2976,5 , 2, 1, 7, 7, 7 }, // Urdu/AnyScript/India
{ 131, 0, 228, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 221,8 , 314,18 , 37,5 , 8,10 , 15781,48 , 17566,115 , 13091,24 , 15781,48 , 17566,115 , 13091,24 , 10173,28 , 10201,53 , 10254,14 , 10173,28 , 10201,53 , 10254,14 , 0,2 , 0,2 , {85,90,83}, 325,3 , 6865,21 , 8,5 , 4,0 , 2981,5 , 2986,10 , 0, 0, 7, 6, 7 }, // Uzbek/AnyScript/Uzbekistan
- { 131, 0, 1, 44, 46, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 179,8 , 1222,33 , 165,4 , 429,11 , 17681,48 , 11812,68 , 13091,24 , 17681,48 , 11812,68 , 13091,24 , 10268,21 , 6780,49 , 10254,14 , 10268,21 , 6780,49 , 10254,14 , 0,2 , 0,2 , {65,70,78}, 328,2 , 6886,13 , 25,5 , 4,0 , 2996,6 , 1993,9 , 0, 0, 6, 4, 5 }, // Uzbek/AnyScript/Afghanistan
+ { 131, 0, 1, 1643, 1644, 59, 1642, 1776, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 179,8 , 1222,33 , 165,4 , 429,11 , 17681,48 , 11812,68 , 13091,24 , 17681,48 , 11812,68 , 13091,24 , 10268,21 , 6780,49 , 10254,14 , 10268,21 , 6780,49 , 10254,14 , 0,2 , 0,2 , {65,70,78}, 328,2 , 6886,13 , 25,5 , 4,0 , 2996,6 , 1993,9 , 0, 0, 6, 4, 5 }, // Uzbek/AnyScript/Afghanistan
{ 131, 1, 1, 1643, 1644, 59, 1642, 1776, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 179,8 , 1222,33 , 165,4 , 429,11 , 17681,48 , 11812,68 , 13091,24 , 17681,48 , 11812,68 , 13091,24 , 10268,21 , 6780,49 , 10254,14 , 10268,21 , 6780,49 , 10254,14 , 0,2 , 0,2 , {65,70,78}, 328,2 , 6886,13 , 25,5 , 4,0 , 2996,6 , 1993,9 , 0, 0, 6, 4, 5 }, // Uzbek/Arabic/Afghanistan
{ 131, 2, 228, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 221,8 , 314,18 , 37,5 , 8,10 , 15781,48 , 17566,115 , 13091,24 , 15781,48 , 17566,115 , 13091,24 , 10173,28 , 10201,53 , 10254,14 , 10173,28 , 10201,53 , 10254,14 , 0,2 , 0,2 , {85,90,83}, 325,3 , 6865,21 , 8,5 , 4,0 , 2981,5 , 2986,10 , 0, 0, 7, 6, 7 }, // Uzbek/Cyrillic/Uzbekistan
{ 131, 7, 228, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 221,8 , 314,18 , 37,5 , 8,10 , 17729,52 , 17566,115 , 17781,24 , 17729,52 , 17566,115 , 17781,24 , 10289,34 , 10323,61 , 10384,14 , 10289,34 , 10323,61 , 10384,14 , 0,2 , 0,2 , {85,90,83}, 330,4 , 6899,23 , 8,5 , 4,0 , 3002,9 , 3011,11 , 0, 0, 7, 6, 7 }, // Uzbek/Latin/Uzbekistan
@@ -605,91 +606,92 @@ static const QLocaleData locale_data[] = {
{ 135, 0, 187, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 0,2 , 0,2 , {88,79,70}, 154,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Wolof/AnyScript/Senegal
{ 135, 7, 187, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 0,2 , 0,2 , {88,79,70}, 154,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Wolof/Latin/Senegal
{ 136, 0, 195, 44, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 18322,48 , 18370,91 , 158,27 , 18322,48 , 18370,91 , 158,27 , 10657,28 , 10685,61 , 798,14 , 10657,28 , 10685,61 , 798,14 , 0,2 , 0,2 , {90,65,82}, 11,1 , 0,7 , 4,4 , 4,0 , 3059,8 , 0,0 , 2, 1, 1, 6, 7 }, // Xhosa/AnyScript/SouthAfrica
- { 138, 0, 157, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 39, 39, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 18461,73 , 18534,121 , 158,27 , 18461,73 , 18534,121 , 158,27 , 10746,44 , 10790,69 , 798,14 , 10746,44 , 10790,69 , 798,14 , 320,5 , 317,5 , {78,71,78}, 185,1 , 6961,34 , 4,4 , 13,6 , 3067,10 , 3077,18 , 2, 1, 1, 6, 7 }, // Yoruba/AnyScript/Nigeria
+ { 138, 0, 157, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 39, 39, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 18461,73 , 18534,121 , 158,27 , 18461,73 , 18534,121 , 158,27 , 10746,44 , 10790,69 , 798,14 , 10746,44 , 10790,69 , 798,14 , 320,5 , 317,5 , {78,71,78}, 182,1 , 6961,34 , 4,4 , 13,6 , 3067,10 , 3077,18 , 2, 1, 1, 6, 7 }, // Yoruba/AnyScript/Nigeria
{ 140, 0, 195, 44, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 82,17 , 18,7 , 25,12 , 18655,48 , 18703,104 , 134,24 , 18655,48 , 18807,90 , 134,24 , 10859,28 , 10887,68 , 10955,14 , 10859,28 , 10887,68 , 10955,14 , 0,2 , 0,2 , {90,65,82}, 11,1 , 0,7 , 4,4 , 4,0 , 3095,7 , 3102,17 , 2, 1, 1, 6, 7 }, // Zulu/AnyScript/SouthAfrica
{ 141, 0, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 85,8 , 85,8 , 332,8 , 594,17 , 37,5 , 413,16 , 4869,48 , 11131,83 , 134,24 , 4869,48 , 11131,83 , 134,24 , 10969,28 , 10997,51 , 2295,14 , 10969,28 , 10997,51 , 2295,14 , 325,9 , 322,11 , {78,79,75}, 142,2 , 6995,42 , 25,5 , 4,0 , 3119,7 , 3126,5 , 2, 1, 1, 6, 7 }, // Nynorsk/AnyScript/Norway
{ 142, 0, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 1286,9 , 942,20 , 37,5 , 8,10 , 13635,48 , 18897,83 , 13764,24 , 13635,48 , 18897,83 , 13764,24 , 2032,28 , 2060,58 , 798,14 , 2032,28 , 2060,58 , 798,14 , 0,2 , 0,2 , {66,65,77}, 266,2 , 5144,218 , 8,5 , 4,0 , 3131,8 , 2331,19 , 2, 1, 1, 6, 7 }, // Bosnian/AnyScript/BosniaAndHerzegowina
{ 143, 0, 131, 46, 44, 44, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 655,6 , 99,16 , 322,8 , 330,13 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 0,2 , 0,2 , {77,86,82}, 335,2 , 0,7 , 8,5 , 4,0 , 3139,10 , 3149,13 , 2, 1, 5, 6, 7 }, // Divehi/AnyScript/Maldives
{ 144, 0, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 82,17 , 37,5 , 8,10 , 18980,102 , 19082,140 , 158,27 , 18980,102 , 19082,140 , 158,27 , 11048,30 , 11078,57 , 798,14 , 11048,30 , 11078,57 , 798,14 , 61,4 , 59,4 , {71,66,80}, 153,1 , 0,7 , 4,4 , 4,0 , 3162,5 , 3167,14 , 2, 1, 1, 6, 7 }, // Manx/AnyScript/UnitedKingdom
{ 145, 0, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 99,16 , 37,5 , 8,10 , 19222,46 , 19268,124 , 158,27 , 19222,46 , 19268,124 , 158,27 , 11135,28 , 11163,60 , 798,14 , 11135,28 , 11163,60 , 798,14 , 61,4 , 59,4 , {71,66,80}, 153,1 , 0,7 , 4,4 , 4,0 , 3181,8 , 3167,14 , 2, 1, 1, 6, 7 }, // Cornish/AnyScript/UnitedKingdom
- { 146, 0, 83, 46, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 221,8 , 314,18 , 37,5 , 8,10 , 19392,48 , 19440,192 , 158,27 , 19392,48 , 19440,192 , 158,27 , 11223,28 , 11251,49 , 11300,14 , 11223,28 , 11251,49 , 11300,14 , 334,2 , 333,2 , {71,72,83}, 182,3 , 0,7 , 4,4 , 4,0 , 3189,4 , 3193,5 , 2, 1, 1, 6, 7 }, // Akan/AnyScript/Ghana
+ { 146, 0, 83, 46, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 221,8 , 314,18 , 37,5 , 8,10 , 19392,48 , 19440,192 , 158,27 , 19392,48 , 19440,192 , 158,27 , 11223,28 , 11251,49 , 11300,14 , 11223,28 , 11251,49 , 11300,14 , 334,2 , 333,2 , {71,72,83}, 183,3 , 0,7 , 4,4 , 4,0 , 3189,4 , 3193,5 , 2, 1, 1, 6, 7 }, // Akan/AnyScript/Ghana
{ 147, 0, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 655,6 , 99,16 , 18,7 , 25,12 , 19632,87 , 19632,87 , 158,27 , 19632,87 , 19632,87 , 158,27 , 6251,32 , 11314,55 , 798,14 , 6251,32 , 11314,55 , 798,14 , 336,5 , 335,5 , {73,78,82}, 194,2 , 0,7 , 8,5 , 4,0 , 3198,6 , 1586,4 , 2, 1, 7, 7, 7 }, // Konkani/AnyScript/India
- { 148, 0, 83, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 34, 34, 0,6 , 0,6 , 0,6 , 0,6 , 221,8 , 314,18 , 37,5 , 8,10 , 19719,48 , 19767,94 , 158,27 , 19719,48 , 19767,94 , 158,27 , 11369,26 , 11395,34 , 798,14 , 11369,26 , 11395,34 , 798,14 , 0,2 , 0,2 , {71,72,83}, 182,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Ga/AnyScript/Ghana
- { 149, 0, 157, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 19861,48 , 19909,86 , 158,27 , 19861,48 , 19909,86 , 158,27 , 11429,29 , 11458,57 , 798,14 , 11429,29 , 11458,57 , 798,14 , 341,4 , 340,4 , {78,71,78}, 185,1 , 7037,12 , 4,4 , 13,6 , 3204,4 , 3208,7 , 2, 1, 1, 6, 7 }, // Igbo/AnyScript/Nigeria
- { 150, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 19995,48 , 20043,189 , 20232,24 , 19995,48 , 20043,189 , 20232,24 , 11515,28 , 11543,74 , 11617,14 , 11515,28 , 11543,74 , 11617,14 , 345,9 , 344,7 , {75,69,83}, 2,3 , 7049,23 , 4,4 , 13,6 , 3215,7 , 2789,5 , 2, 1, 6, 6, 7 }, // Kamba/AnyScript/Kenya
+ { 148, 0, 83, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 34, 34, 0,6 , 0,6 , 0,6 , 0,6 , 221,8 , 314,18 , 37,5 , 8,10 , 19719,48 , 19767,94 , 158,27 , 19719,48 , 19767,94 , 158,27 , 11369,26 , 11395,34 , 798,14 , 11369,26 , 11395,34 , 798,14 , 0,2 , 0,2 , {71,72,83}, 183,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Ga/AnyScript/Ghana
+ { 149, 0, 157, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 19861,48 , 19909,86 , 158,27 , 19861,48 , 19909,86 , 158,27 , 11429,29 , 11458,57 , 798,14 , 11429,29 , 11458,57 , 798,14 , 341,4 , 340,4 , {78,71,78}, 182,1 , 7037,12 , 4,4 , 13,6 , 3204,4 , 3208,7 , 2, 1, 1, 6, 7 }, // Igbo/AnyScript/Nigeria
+ { 150, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 19995,48 , 20043,189 , 20232,24 , 19995,48 , 20043,189 , 20232,24 , 11515,28 , 11543,74 , 11617,14 , 11515,28 , 11543,74 , 11617,14 , 345,9 , 344,7 , {75,69,83}, 2,3 , 7049,23 , 4,4 , 13,6 , 3215,7 , 2797,5 , 2, 1, 6, 6, 7 }, // Kamba/AnyScript/Kenya
{ 151, 0, 207, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 1295,13 , 18,7 , 25,12 , 20256,65 , 20256,65 , 158,27 , 20256,65 , 20256,65 , 158,27 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 0,2 , 0,2 , {83,89,80}, 79,5 , 0,7 , 8,5 , 19,6 , 3222,6 , 3222,6 , 0, 0, 6, 5, 6 }, // Syriac/AnyScript/SyrianArabRepublic
{ 152, 0, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1308,22 , 18,7 , 25,12 , 20321,47 , 20368,77 , 20445,24 , 20321,47 , 20368,77 , 20445,24 , 11631,26 , 11657,43 , 11700,14 , 11631,26 , 11657,43 , 11700,14 , 0,2 , 0,2 , {69,82,78}, 8,3 , 0,7 , 4,4 , 4,0 , 3228,3 , 2905,4 , 2, 1, 6, 6, 7 }, // Blin/AnyScript/Eritrea
- { 153, 0, 67, 46, 4808, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1330,23 , 18,7 , 25,12 , 20469,49 , 20469,49 , 20518,24 , 20469,49 , 20469,49 , 20518,24 , 11714,29 , 11714,29 , 11743,14 , 11714,29 , 11714,29 , 11743,14 , 0,2 , 0,2 , {69,82,78}, 8,3 , 0,7 , 4,4 , 4,0 , 3231,4 , 2905,4 , 2, 1, 6, 6, 7 }, // Geez/AnyScript/Eritrea
{ 153, 0, 69, 46, 4808, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1330,23 , 18,7 , 25,12 , 20469,49 , 20469,49 , 20518,24 , 20469,49 , 20469,49 , 20518,24 , 11714,29 , 11714,29 , 11743,14 , 11714,29 , 11714,29 , 11743,14 , 0,2 , 0,2 , {69,84,66}, 0,2 , 81,16 , 4,4 , 4,0 , 3231,4 , 96,5 , 2, 1, 6, 6, 7 }, // Geez/AnyScript/Ethiopia
+ { 153, 0, 67, 46, 4808, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1330,23 , 18,7 , 25,12 , 20469,49 , 20469,49 , 20518,24 , 20469,49 , 20469,49 , 20518,24 , 11714,29 , 11714,29 , 11743,14 , 11714,29 , 11714,29 , 11743,14 , 0,2 , 0,2 , {69,82,78}, 8,3 , 0,7 , 4,4 , 4,0 , 3231,4 , 2905,4 , 2, 1, 6, 6, 7 }, // Geez/AnyScript/Eritrea
{ 154, 0, 53, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 221,8 , 314,18 , 37,5 , 8,10 , 20542,48 , 20590,124 , 158,27 , 20542,48 , 20590,124 , 158,27 , 11757,28 , 11785,54 , 798,14 , 11757,28 , 11785,54 , 798,14 , 0,2 , 0,2 , {88,79,70}, 154,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Koro/AnyScript/IvoryCoast
{ 155, 0, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 53,19 , 18,7 , 25,12 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 11839,28 , 11867,51 , 11918,14 , 11839,28 , 11867,51 , 11918,14 , 0,2 , 0,2 , {69,84,66}, 0,2 , 0,7 , 4,4 , 4,0 , 3235,11 , 3246,11 , 2, 1, 6, 6, 7 }, // Sidamo/AnyScript/Ethiopia
- { 156, 0, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 221,8 , 314,18 , 37,5 , 8,10 , 20714,59 , 20773,129 , 158,27 , 20714,59 , 20773,129 , 158,27 , 11932,35 , 11967,87 , 798,14 , 11932,35 , 11967,87 , 798,14 , 0,2 , 0,2 , {78,71,78}, 185,1 , 7072,11 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Atsam/AnyScript/Nigeria
+ { 156, 0, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 221,8 , 314,18 , 37,5 , 8,10 , 20714,59 , 20773,129 , 158,27 , 20714,59 , 20773,129 , 158,27 , 11932,35 , 11967,87 , 798,14 , 11932,35 , 11967,87 , 798,14 , 0,2 , 0,2 , {78,71,78}, 182,1 , 7072,11 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Atsam/AnyScript/Nigeria
{ 157, 0, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1353,21 , 18,7 , 25,12 , 953,46 , 999,62 , 1061,24 , 953,46 , 999,62 , 1061,24 , 12054,27 , 12081,41 , 12122,14 , 12054,27 , 12081,41 , 12122,14 , 0,2 , 0,2 , {69,82,78}, 8,3 , 0,7 , 4,4 , 4,0 , 3257,3 , 2905,4 , 2, 1, 6, 6, 7 }, // Tigre/AnyScript/Eritrea
- { 158, 0, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 221,8 , 314,18 , 37,5 , 8,10 , 20902,57 , 20959,178 , 158,27 , 20902,57 , 20959,178 , 158,27 , 12136,28 , 12164,44 , 798,14 , 12136,28 , 12164,44 , 798,14 , 0,2 , 0,2 , {78,71,78}, 185,1 , 7083,14 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Jju/AnyScript/Nigeria
+ { 158, 0, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 221,8 , 314,18 , 37,5 , 8,10 , 20902,57 , 20959,178 , 158,27 , 20902,57 , 20959,178 , 158,27 , 12136,28 , 12164,44 , 798,14 , 12136,28 , 12164,44 , 798,14 , 0,2 , 0,2 , {78,71,78}, 182,1 , 7083,14 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Jju/AnyScript/Nigeria
{ 159, 0, 106, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1374,27 , 37,5 , 8,10 , 21137,48 , 21185,77 , 21262,24 , 21137,48 , 21185,77 , 21262,24 , 12208,28 , 12236,50 , 3021,14 , 12208,28 , 12236,50 , 3021,14 , 0,2 , 0,2 , {69,85,82}, 113,1 , 3813,11 , 8,5 , 4,0 , 3260,6 , 3266,6 , 2, 1, 1, 6, 7 }, // Friulian/AnyScript/Italy
{ 160, 0, 195, 44, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 21286,48 , 21334,111 , 158,27 , 21286,48 , 21334,111 , 158,27 , 12286,27 , 12313,70 , 798,14 , 12286,27 , 12313,70 , 798,14 , 0,2 , 0,2 , {90,65,82}, 11,1 , 0,7 , 4,4 , 4,0 , 3272,9 , 0,0 , 2, 1, 1, 6, 7 }, // Venda/AnyScript/SouthAfrica
- { 161, 0, 83, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 21445,48 , 21493,87 , 21580,24 , 21445,48 , 21493,87 , 21580,24 , 12383,32 , 12415,44 , 12459,14 , 12383,32 , 12415,44 , 12459,14 , 334,2 , 333,2 , {71,72,83}, 182,3 , 0,7 , 4,4 , 13,6 , 3281,6 , 3287,7 , 2, 1, 1, 6, 7 }, // Ewe/AnyScript/Ghana
+ { 161, 0, 83, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 21445,48 , 21493,87 , 21580,24 , 21445,48 , 21493,87 , 21580,24 , 12383,32 , 12415,44 , 12459,14 , 12383,32 , 12415,44 , 12459,14 , 334,2 , 333,2 , {71,72,83}, 183,3 , 0,7 , 4,4 , 13,6 , 3281,6 , 3287,7 , 2, 1, 1, 6, 7 }, // Ewe/AnyScript/Ghana
{ 161, 0, 212, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 21445,48 , 21493,87 , 21580,24 , 21445,48 , 21493,87 , 21580,24 , 12383,32 , 12415,44 , 12459,14 , 12383,32 , 12415,44 , 12459,14 , 334,2 , 333,2 , {88,79,70}, 154,3 , 7097,11 , 4,4 , 13,6 , 3281,6 , 3294,6 , 0, 0, 1, 6, 7 }, // Ewe/AnyScript/Togo
{ 162, 0, 69, 46, 8217, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1401,22 , 18,7 , 25,12 , 953,46 , 999,62 , 1061,24 , 953,46 , 999,62 , 1061,24 , 12473,27 , 12473,27 , 12500,14 , 12473,27 , 12473,27 , 12500,14 , 0,2 , 0,2 , {69,84,66}, 0,2 , 81,16 , 4,4 , 4,0 , 3300,5 , 96,5 , 2, 1, 6, 6, 7 }, // Walamo/AnyScript/Ethiopia
{ 163, 0, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 279,6 , 10,17 , 18,7 , 25,12 , 21604,59 , 21663,95 , 158,27 , 21604,59 , 21663,95 , 158,27 , 12514,21 , 12535,57 , 798,14 , 12514,21 , 12535,57 , 798,14 , 0,2 , 0,2 , {85,83,68}, 272,3 , 0,7 , 4,4 , 13,6 , 3305,14 , 3319,19 , 2, 1, 7, 6, 7 }, // Hawaiian/AnyScript/UnitedStates
- { 164, 0, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 221,8 , 314,18 , 37,5 , 8,10 , 21758,48 , 21806,153 , 158,27 , 21758,48 , 21806,153 , 158,27 , 12592,28 , 12620,42 , 798,14 , 12592,28 , 12620,42 , 798,14 , 0,2 , 0,2 , {78,71,78}, 185,1 , 7108,11 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Tyap/AnyScript/Nigeria
+ { 164, 0, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 221,8 , 314,18 , 37,5 , 8,10 , 21758,48 , 21806,153 , 158,27 , 21758,48 , 21806,153 , 158,27 , 12592,28 , 12620,42 , 798,14 , 12592,28 , 12620,42 , 798,14 , 0,2 , 0,2 , {78,71,78}, 182,1 , 7108,11 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Tyap/AnyScript/Nigeria
{ 165, 0, 129, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 21959,48 , 22007,91 , 158,27 , 21959,48 , 22007,91 , 158,27 , 12662,28 , 12690,67 , 798,14 , 12662,28 , 12690,67 , 798,14 , 0,2 , 0,2 , {77,87,75}, 0,0 , 7119,22 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Chewa/AnyScript/Malawi
{ 166, 0, 170, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 300,8 , 300,8 , 558,6 , 1071,18 , 37,5 , 8,10 , 15621,48 , 15669,88 , 15757,24 , 15621,48 , 15669,88 , 15757,24 , 9023,28 , 9051,55 , 9106,14 , 9120,28 , 9051,55 , 9106,14 , 0,2 , 0,2 , {80,72,80}, 152,1 , 6650,22 , 8,5 , 4,0 , 3338,8 , 2830,9 , 2, 1, 7, 6, 7 }, // Filipino/AnyScript/Philippines
{ 167, 0, 206, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 128,9 , 128,9 , 332,8 , 502,18 , 37,5 , 8,10 , 5940,48 , 22098,86 , 134,24 , 5940,48 , 22098,86 , 134,24 , 12757,28 , 12785,63 , 3311,14 , 12757,28 , 12785,63 , 3311,14 , 96,5 , 351,4 , {67,72,70}, 0,0 , 7141,39 , 25,5 , 4,0 , 3346,16 , 3362,7 , 2, 5, 1, 6, 7 }, // Swiss German/AnyScript/Switzerland
{ 168, 0, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 158,27 , 22184,38 , 158,27 , 158,27 , 22184,38 , 158,27 , 12848,21 , 12869,28 , 12897,14 , 12848,21 , 12869,28 , 12897,14 , 354,2 , 355,2 , {67,78,89}, 229,3 , 0,7 , 8,5 , 4,0 , 3369,3 , 3372,2 , 2, 1, 7, 6, 7 }, // Sichuan Yi/AnyScript/China
- { 169, 0, 91, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 0,2 , 0,2 , {71,78,70}, 337,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Kpelle/AnyScript/Guinea
{ 169, 0, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 0,2 , 0,2 , {76,82,68}, 128,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Kpelle/AnyScript/Liberia
+ { 169, 0, 91, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 0,2 , 0,2 , {71,78,70}, 337,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Kpelle/AnyScript/Guinea
{ 170, 0, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 158,27 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 798,14 , 0,2 , 0,2 , {69,85,82}, 113,1 , 0,7 , 25,5 , 4,0 , 3374,12 , 3386,11 , 2, 1, 1, 6, 7 }, // Low German/AnyScript/Germany
{ 171, 0, 195, 44, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 22222,48 , 22270,100 , 158,27 , 22222,48 , 22270,100 , 158,27 , 12911,27 , 12938,66 , 798,14 , 12911,27 , 12938,66 , 798,14 , 0,2 , 0,2 , {90,65,82}, 11,1 , 0,7 , 4,4 , 4,0 , 3397,10 , 0,0 , 2, 1, 1, 6, 7 }, // South Ndebele/AnyScript/SouthAfrica
{ 172, 0, 195, 44, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 22370,48 , 22418,94 , 158,27 , 22370,48 , 22418,94 , 158,27 , 13004,27 , 13031,63 , 798,14 , 13004,27 , 13031,63 , 798,14 , 0,2 , 0,2 , {90,65,82}, 11,1 , 0,7 , 4,4 , 4,0 , 3407,16 , 0,0 , 2, 1, 1, 6, 7 }, // Northern Sotho/AnyScript/SouthAfrica
- { 173, 0, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 112,8 , 112,8 , 72,10 , 314,18 , 37,5 , 8,10 , 22512,85 , 22597,145 , 22742,24 , 22512,85 , 22597,145 , 22742,24 , 13094,33 , 13127,65 , 13192,14 , 13094,33 , 13127,65 , 13192,14 , 0,2 , 0,2 , {69,85,82}, 113,1 , 7180,23 , 25,5 , 4,0 , 3423,15 , 3438,6 , 2, 1, 1, 6, 7 }, // Northern Sami/AnyScript/Finland
- { 173, 0, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 112,8 , 112,8 , 72,10 , 314,18 , 37,5 , 8,10 , 22766,59 , 22597,145 , 22742,24 , 22766,59 , 22597,145 , 22742,24 , 13094,33 , 13206,75 , 13281,14 , 13094,33 , 13206,75 , 13281,14 , 0,2 , 0,2 , {78,79,75}, 339,3 , 7203,21 , 25,5 , 4,0 , 3423,15 , 3444,5 , 2, 1, 1, 6, 7 }, // Northern Sami/AnyScript/Norway
+ { 173, 0, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 112,8 , 112,8 , 72,10 , 314,18 , 37,5 , 8,10 , 22512,59 , 22571,145 , 22716,24 , 22512,59 , 22571,145 , 22716,24 , 13094,33 , 13127,75 , 13202,14 , 13094,33 , 13127,75 , 13202,14 , 0,2 , 0,2 , {78,79,75}, 339,3 , 7180,21 , 25,5 , 4,0 , 3423,15 , 3438,5 , 2, 1, 1, 6, 7 }, // Northern Sami/AnyScript/Norway
+ { 173, 0, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 112,8 , 112,8 , 72,10 , 314,18 , 37,5 , 8,10 , 22740,85 , 22571,145 , 22716,24 , 22740,85 , 22571,145 , 22716,24 , 13094,33 , 13216,65 , 13281,14 , 13094,33 , 13216,65 , 13281,14 , 0,2 , 0,2 , {69,85,82}, 113,1 , 7201,23 , 25,5 , 4,0 , 3423,15 , 3443,6 , 2, 1, 1, 6, 7 }, // Northern Sami/AnyScript/Finland
{ 174, 0, 208, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 72,10 , 314,18 , 37,5 , 8,10 , 22825,48 , 22873,142 , 23015,24 , 22825,48 , 22873,142 , 23015,24 , 13295,28 , 13323,172 , 13495,14 , 13295,28 , 13323,172 , 13495,14 , 0,2 , 0,2 , {84,87,68}, 135,3 , 7224,18 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Taroko/AnyScript/Taiwan
- { 175, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 8216, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 23039,48 , 23087,88 , 23175,24 , 23039,48 , 23087,88 , 23175,24 , 13509,28 , 13537,62 , 13599,14 , 13509,28 , 13537,62 , 13599,14 , 356,5 , 357,10 , {75,69,83}, 2,3 , 7242,24 , 4,4 , 13,6 , 3449,8 , 2789,5 , 2, 1, 6, 6, 7 }, // Gusii/AnyScript/Kenya
- { 176, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 23199,48 , 23247,221 , 23468,24 , 23199,48 , 23247,221 , 23468,24 , 13613,28 , 13641,106 , 13747,14 , 13613,28 , 13641,106 , 13747,14 , 361,10 , 367,10 , {75,69,83}, 2,3 , 7242,24 , 4,4 , 13,6 , 3457,7 , 2789,5 , 2, 1, 6, 6, 7 }, // Taita/AnyScript/Kenya
+ { 175, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 8216, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 23039,48 , 23087,88 , 23175,24 , 23039,48 , 23087,88 , 23175,24 , 13509,28 , 13537,62 , 13599,14 , 13509,28 , 13537,62 , 13599,14 , 356,5 , 357,10 , {75,69,83}, 2,3 , 7242,24 , 4,4 , 13,6 , 3449,8 , 2797,5 , 2, 1, 6, 6, 7 }, // Gusii/AnyScript/Kenya
+ { 176, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 23199,48 , 23247,221 , 23468,24 , 23199,48 , 23247,221 , 23468,24 , 13613,28 , 13641,106 , 13747,14 , 13613,28 , 13641,106 , 13747,14 , 361,10 , 367,10 , {75,69,83}, 2,3 , 7242,24 , 4,4 , 13,6 , 3457,7 , 2797,5 , 2, 1, 6, 6, 7 }, // Taita/AnyScript/Kenya
{ 177, 0, 187, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 39, 39, 0,6 , 0,6 , 0,6 , 0,6 , 364,8 , 99,16 , 37,5 , 8,10 , 23492,48 , 23540,77 , 23617,24 , 23492,48 , 23540,77 , 23617,24 , 13761,28 , 13789,59 , 13848,14 , 13761,28 , 13789,59 , 13848,14 , 371,6 , 377,7 , {88,79,70}, 154,3 , 7266,26 , 25,5 , 4,0 , 3464,6 , 3470,8 , 0, 0, 1, 6, 7 }, // Fulah/AnyScript/Senegal
- { 178, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 23641,48 , 23689,185 , 23874,24 , 23641,48 , 23689,185 , 23874,24 , 13862,28 , 13890,63 , 13953,14 , 13862,28 , 13890,63 , 13953,14 , 377,6 , 384,8 , {75,69,83}, 2,3 , 7292,23 , 4,4 , 13,6 , 3478,6 , 2789,5 , 2, 1, 6, 6, 7 }, // Kikuyu/AnyScript/Kenya
- { 179, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 23898,48 , 23946,173 , 24119,24 , 23898,48 , 23946,173 , 24119,24 , 13967,28 , 13995,105 , 14100,14 , 13967,28 , 13995,105 , 14100,14 , 383,7 , 392,5 , {75,69,83}, 2,3 , 7315,25 , 4,4 , 13,6 , 3484,8 , 2789,5 , 2, 1, 6, 6, 7 }, // Samburu/AnyScript/Kenya
- { 180, 0, 146, 44, 46, 59, 37, 48, 45, 43, 101, 39, 39, 39, 39, 0,6 , 0,6 , 0,6 , 0,6 , 364,8 , 886,27 , 37,5 , 8,10 , 24143,48 , 24191,88 , 134,24 , 24143,48 , 24191,88 , 134,24 , 14114,28 , 14142,55 , 14197,14 , 14114,28 , 14142,55 , 14197,14 , 0,2 , 0,2 , {77,90,78}, 244,3 , 0,7 , 0,4 , 4,0 , 3492,4 , 2104,10 , 2, 1, 1, 6, 7 }, // Sena/AnyScript/Mozambique
+ { 178, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 23641,48 , 23689,185 , 23874,24 , 23641,48 , 23689,185 , 23874,24 , 13862,28 , 13890,63 , 13953,14 , 13862,28 , 13890,63 , 13953,14 , 377,6 , 384,8 , {75,69,83}, 2,3 , 7292,23 , 4,4 , 13,6 , 3478,6 , 2797,5 , 2, 1, 6, 6, 7 }, // Kikuyu/AnyScript/Kenya
+ { 179, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 23898,48 , 23946,173 , 24119,24 , 23898,48 , 23946,173 , 24119,24 , 13967,28 , 13995,105 , 14100,14 , 13967,28 , 13995,105 , 14100,14 , 383,7 , 392,5 , {75,69,83}, 2,3 , 7315,25 , 4,4 , 13,6 , 3484,8 , 2797,5 , 2, 1, 6, 6, 7 }, // Samburu/AnyScript/Kenya
+ { 180, 0, 146, 44, 46, 59, 37, 48, 45, 43, 101, 39, 39, 39, 39, 0,6 , 0,6 , 0,6 , 0,6 , 364,8 , 886,27 , 37,5 , 8,10 , 24143,48 , 24191,88 , 134,24 , 24143,48 , 24191,88 , 134,24 , 14114,28 , 14142,55 , 14197,14 , 14114,28 , 14142,55 , 14197,14 , 0,2 , 0,2 , {77,90,78}, 244,3 , 0,7 , 0,4 , 4,0 , 3492,4 , 2079,10 , 2, 1, 1, 6, 7 }, // Sena/AnyScript/Mozambique
{ 181, 0, 240, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 24279,48 , 24327,112 , 24439,24 , 24279,48 , 24327,112 , 24439,24 , 14211,28 , 14239,50 , 14289,14 , 14211,28 , 14239,50 , 14289,14 , 0,2 , 0,2 , {85,83,68}, 272,3 , 7340,24 , 4,4 , 13,6 , 3397,10 , 944,8 , 2, 1, 7, 6, 7 }, // North Ndebele/AnyScript/Zimbabwe
- { 182, 0, 210, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 24463,39 , 24502,194 , 24696,24 , 24463,39 , 24502,194 , 24696,24 , 14303,28 , 14331,65 , 14396,14 , 14303,28 , 14331,65 , 14396,14 , 390,8 , 397,7 , {84,90,83}, 306,3 , 7364,25 , 4,4 , 4,0 , 3496,9 , 2794,8 , 0, 0, 1, 6, 7 }, // Rombo/AnyScript/Tanzania
+ { 182, 0, 210, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 24463,39 , 24502,194 , 24696,24 , 24463,39 , 24502,194 , 24696,24 , 14303,28 , 14331,65 , 14396,14 , 14303,28 , 14331,65 , 14396,14 , 390,8 , 397,7 , {84,90,83}, 306,3 , 7364,25 , 4,4 , 4,0 , 3496,9 , 2789,8 , 0, 0, 1, 6, 7 }, // Rombo/AnyScript/Tanzania
{ 183, 0, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 364,8 , 99,16 , 37,5 , 8,10 , 24720,48 , 24768,81 , 24849,24 , 24720,48 , 24768,81 , 24849,24 , 14410,30 , 14440,48 , 798,14 , 14410,30 , 14440,48 , 798,14 , 398,6 , 404,8 , {77,65,68}, 0,0 , 7389,21 , 0,4 , 4,0 , 3505,9 , 3514,6 , 2, 1, 6, 5, 6 }, // Tachelhit/AnyScript/Morocco
{ 183, 7, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 364,8 , 99,16 , 37,5 , 8,10 , 24720,48 , 24768,81 , 24849,24 , 24720,48 , 24768,81 , 24849,24 , 14410,30 , 14440,48 , 798,14 , 14410,30 , 14440,48 , 798,14 , 398,6 , 404,8 , {77,65,68}, 0,0 , 7389,21 , 0,4 , 4,0 , 3505,9 , 3514,6 , 2, 1, 6, 5, 6 }, // Tachelhit/Latin/Morocco
{ 183, 9, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 364,8 , 99,16 , 37,5 , 8,10 , 24873,48 , 24921,81 , 25002,24 , 24873,48 , 24921,81 , 25002,24 , 14488,30 , 14518,47 , 798,14 , 14488,30 , 14518,47 , 798,14 , 404,6 , 412,8 , {77,65,68}, 0,0 , 7410,21 , 0,4 , 4,0 , 3520,8 , 3528,6 , 2, 1, 6, 5, 6 }, // Tachelhit/Tifinagh/Morocco
{ 184, 0, 3, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 364,8 , 99,16 , 37,5 , 8,10 , 25026,48 , 25074,84 , 25158,24 , 25026,48 , 25074,84 , 25158,24 , 14565,30 , 14595,51 , 14646,14 , 14565,30 , 14595,51 , 14646,14 , 410,7 , 420,9 , {68,90,68}, 342,2 , 7431,21 , 0,4 , 4,0 , 3534,9 , 3543,8 , 2, 1, 6, 4, 5 }, // Kabyle/AnyScript/Algeria
{ 185, 0, 221, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8222, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 25182,48 , 25230,152 , 134,24 , 25182,48 , 25230,152 , 134,24 , 14660,28 , 14688,74 , 14762,14 , 14660,28 , 14688,74 , 14762,14 , 0,2 , 0,2 , {85,71,88}, 344,3 , 7452,26 , 4,4 , 74,5 , 3551,10 , 3561,6 , 0, 0, 1, 6, 7 }, // Nyankole/AnyScript/Uganda
{ 186, 0, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 25382,48 , 25430,254 , 25684,24 , 25382,48 , 25430,254 , 25684,24 , 14776,28 , 14804,82 , 14886,14 , 14776,28 , 14804,82 , 14886,14 , 417,7 , 429,7 , {84,90,83}, 306,3 , 7478,29 , 0,4 , 4,0 , 3567,6 , 3573,10 , 0, 0, 1, 6, 7 }, // Bena/AnyScript/Tanzania
- { 187, 0, 210, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 15403,48 , 25708,87 , 134,24 , 15403,48 , 25708,87 , 134,24 , 14900,28 , 14928,62 , 14990,14 , 14900,28 , 14928,62 , 14990,14 , 424,5 , 436,9 , {84,90,83}, 306,3 , 7507,27 , 4,4 , 4,0 , 3583,8 , 2794,8 , 0, 0, 1, 6, 7 }, // Vunjo/AnyScript/Tanzania
+ { 187, 0, 210, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 15403,48 , 25708,87 , 134,24 , 15403,48 , 25708,87 , 134,24 , 14900,28 , 14928,62 , 14990,14 , 14900,28 , 14928,62 , 14990,14 , 424,5 , 436,9 , {84,90,83}, 306,3 , 7507,27 , 4,4 , 4,0 , 3583,8 , 2789,8 , 0, 0, 1, 6, 7 }, // Vunjo/AnyScript/Tanzania
{ 188, 0, 132, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 364,8 , 99,16 , 37,5 , 8,10 , 25795,47 , 25842,92 , 25934,24 , 25795,47 , 25842,92 , 25934,24 , 15004,28 , 15032,44 , 15076,14 , 15004,28 , 15032,44 , 15076,14 , 0,2 , 0,2 , {88,79,70}, 154,3 , 7534,24 , 4,4 , 13,6 , 3591,9 , 1249,4 , 0, 0, 1, 6, 7 }, // Bambara/AnyScript/Mali
- { 189, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 25958,48 , 26006,207 , 26213,24 , 25958,48 , 26006,207 , 26213,24 , 15090,28 , 15118,64 , 15182,14 , 15090,28 , 15118,64 , 15182,14 , 429,2 , 445,2 , {75,69,83}, 2,3 , 7242,24 , 4,4 , 13,6 , 3600,6 , 2789,5 , 2, 1, 6, 6, 7 }, // Embu/AnyScript/Kenya
+ { 189, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 25958,48 , 26006,207 , 26213,24 , 25958,48 , 26006,207 , 26213,24 , 15090,28 , 15118,64 , 15182,14 , 15090,28 , 15118,64 , 15182,14 , 429,2 , 445,2 , {75,69,83}, 2,3 , 7242,24 , 4,4 , 13,6 , 3600,6 , 2797,5 , 2, 1, 6, 6, 7 }, // Embu/AnyScript/Kenya
{ 190, 0, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 558,6 , 35,18 , 18,7 , 25,12 , 26237,36 , 26273,58 , 26331,24 , 26237,36 , 26273,58 , 26331,24 , 15196,28 , 15224,49 , 15273,14 , 15196,28 , 15224,49 , 15273,14 , 431,3 , 447,6 , {85,83,68}, 128,1 , 7558,19 , 4,4 , 13,6 , 3606,3 , 3609,4 , 2, 1, 7, 6, 7 }, // Cherokee/AnyScript/UnitedStates
{ 191, 0, 137, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 364,8 , 99,16 , 37,5 , 8,10 , 26355,47 , 26402,68 , 26470,24 , 26355,47 , 26402,68 , 26470,24 , 15287,27 , 15314,48 , 15362,14 , 15287,27 , 15314,48 , 15362,14 , 0,2 , 0,2 , {77,85,82}, 147,4 , 7577,21 , 8,5 , 4,0 , 3613,14 , 3627,5 , 0, 0, 1, 6, 7 }, // Morisyen/AnyScript/Mauritius
- { 192, 0, 210, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 15403,48 , 26494,264 , 134,24 , 15403,48 , 26494,264 , 134,24 , 15376,28 , 15404,133 , 14396,14 , 15376,28 , 15404,133 , 14396,14 , 434,4 , 453,5 , {84,90,83}, 306,3 , 7507,27 , 4,4 , 13,6 , 3632,10 , 2794,8 , 0, 0, 1, 6, 7 }, // Makonde/AnyScript/Tanzania
+ { 192, 0, 210, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 15403,48 , 26494,264 , 134,24 , 15403,48 , 26494,264 , 134,24 , 15376,28 , 15404,133 , 14396,14 , 15376,28 , 15404,133 , 14396,14 , 434,4 , 453,5 , {84,90,83}, 306,3 , 7507,27 , 4,4 , 13,6 , 3632,10 , 2789,8 , 0, 0, 1, 6, 7 }, // Makonde/AnyScript/Tanzania
{ 193, 0, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 39, 39, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 26758,83 , 26841,111 , 26952,24 , 26758,83 , 26841,111 , 26952,24 , 15537,36 , 15573,63 , 15636,14 , 15537,36 , 15573,63 , 15636,14 , 438,3 , 458,3 , {84,90,83}, 306,3 , 7598,29 , 8,5 , 4,0 , 3642,8 , 3650,9 , 0, 0, 1, 6, 7 }, // Langi/AnyScript/Tanzania
{ 194, 0, 221, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 26976,48 , 27024,97 , 134,24 , 26976,48 , 27024,97 , 134,24 , 15650,28 , 15678,66 , 15744,14 , 15650,28 , 15678,66 , 15744,14 , 0,2 , 0,2 , {85,71,88}, 344,3 , 7627,26 , 0,4 , 4,0 , 3659,7 , 3666,7 , 0, 0, 1, 6, 7 }, // Ganda/AnyScript/Uganda
{ 195, 0, 239, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 27121,48 , 27169,83 , 27252,24 , 27121,48 , 27169,83 , 27252,24 , 15758,80 , 15758,80 , 798,14 , 15758,80 , 15758,80 , 798,14 , 441,8 , 461,7 , {90,77,75}, 347,2 , 0,7 , 4,4 , 13,6 , 3673,9 , 3682,6 , 0, 0, 1, 6, 7 }, // Bemba/AnyScript/Zambia
{ 196, 0, 39, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 364,8 , 886,27 , 37,5 , 8,10 , 27276,48 , 27324,86 , 134,24 , 27276,48 , 27324,86 , 134,24 , 15838,28 , 15866,73 , 15939,14 , 15838,28 , 15866,73 , 15939,14 , 149,2 , 148,2 , {67,86,69}, 349,3 , 7653,25 , 0,4 , 4,0 , 3688,12 , 3700,10 , 2, 1, 1, 6, 7 }, // Kabuverdianu/AnyScript/CapeVerde
- { 197, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 27410,48 , 27458,86 , 27544,24 , 27410,48 , 27458,86 , 27544,24 , 15953,28 , 15981,51 , 16032,14 , 15953,28 , 15981,51 , 16032,14 , 449,2 , 468,2 , {75,69,83}, 2,3 , 7242,24 , 4,4 , 13,6 , 3710,6 , 2789,5 , 2, 1, 6, 6, 7 }, // Meru/AnyScript/Kenya
+ { 197, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 27410,48 , 27458,86 , 27544,24 , 27410,48 , 27458,86 , 27544,24 , 15953,28 , 15981,51 , 16032,14 , 15953,28 , 15981,51 , 16032,14 , 449,2 , 468,2 , {75,69,83}, 2,3 , 7242,24 , 4,4 , 13,6 , 3710,6 , 2797,5 , 2, 1, 6, 6, 7 }, // Meru/AnyScript/Kenya
{ 198, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 27568,48 , 27616,111 , 27727,24 , 27568,48 , 27616,111 , 27727,24 , 16046,28 , 16074,93 , 16167,14 , 16046,28 , 16074,93 , 16167,14 , 451,4 , 470,4 , {75,69,83}, 2,3 , 7678,26 , 4,4 , 13,6 , 3716,8 , 3724,12 , 2, 1, 6, 6, 7 }, // Kalenjin/AnyScript/Kenya
{ 199, 0, 148, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 0,48 , 27751,136 , 134,24 , 0,48 , 27751,136 , 134,24 , 16181,23 , 16204,92 , 16296,14 , 16181,23 , 16204,92 , 16296,14 , 455,7 , 474,5 , {78,65,68}, 12,2 , 7704,22 , 4,4 , 4,0 , 3736,13 , 3749,8 , 2, 1, 1, 6, 7 }, // Nama/AnyScript/Namibia
- { 200, 0, 210, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 15403,48 , 25708,87 , 134,24 , 15403,48 , 25708,87 , 134,24 , 14900,28 , 14928,62 , 14990,14 , 14900,28 , 14928,62 , 14990,14 , 424,5 , 436,9 , {84,90,83}, 306,3 , 7507,27 , 4,4 , 4,0 , 3757,9 , 2794,8 , 0, 0, 1, 6, 7 }, // Machame/AnyScript/Tanzania
+ { 200, 0, 210, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 15403,48 , 25708,87 , 134,24 , 15403,48 , 25708,87 , 134,24 , 14900,28 , 14928,62 , 14990,14 , 14900,28 , 14928,62 , 14990,14 , 424,5 , 436,9 , {84,90,83}, 306,3 , 7507,27 , 4,4 , 4,0 , 3757,9 , 2789,8 , 0, 0, 1, 6, 7 }, // Machame/AnyScript/Tanzania
{ 201, 0, 82, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 228,8 , 228,8 , 1423,10 , 1433,23 , 37,5 , 8,10 , 27887,59 , 27946,87 , 134,24 , 27887,59 , 27946,87 , 134,24 , 16310,28 , 16338,72 , 3311,14 , 16310,28 , 16338,72 , 3311,14 , 0,2 , 0,2 , {69,85,82}, 113,1 , 3813,11 , 25,5 , 4,0 , 0,0 , 3766,11 , 2, 1, 1, 6, 7 }, // Colognian/AnyScript/Germany
- { 202, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8221, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 28033,51 , 28084,132 , 158,27 , 28033,51 , 28084,132 , 158,27 , 14900,28 , 16410,58 , 14396,14 , 14900,28 , 16410,58 , 14396,14 , 462,9 , 479,6 , {75,69,83}, 2,3 , 7726,25 , 4,4 , 13,6 , 3777,3 , 2789,5 , 2, 1, 6, 6, 7 }, // Masai/AnyScript/Kenya
+ { 202, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8221, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 28033,51 , 28084,132 , 158,27 , 28033,51 , 28084,132 , 158,27 , 14900,28 , 16410,58 , 14396,14 , 14900,28 , 16410,58 , 14396,14 , 462,9 , 479,6 , {75,69,83}, 2,3 , 7726,25 , 4,4 , 13,6 , 3777,3 , 2797,5 , 2, 1, 6, 6, 7 }, // Masai/AnyScript/Kenya
{ 202, 0, 210, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8221, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 28033,51 , 28084,132 , 158,27 , 28033,51 , 28084,132 , 158,27 , 14900,28 , 16410,58 , 14396,14 , 14900,28 , 16410,58 , 14396,14 , 462,9 , 479,6 , {84,90,83}, 306,3 , 7751,28 , 4,4 , 13,6 , 3777,3 , 3780,8 , 0, 0, 1, 6, 7 }, // Masai/AnyScript/Tanzania
{ 203, 0, 221, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8222, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 26976,48 , 27024,97 , 134,24 , 26976,48 , 27024,97 , 134,24 , 16468,35 , 16503,65 , 16568,14 , 16468,35 , 16503,65 , 16568,14 , 471,6 , 485,6 , {85,71,88}, 344,3 , 7627,26 , 25,5 , 4,0 , 3788,7 , 3666,7 , 0, 0, 1, 6, 7 }, // Soga/AnyScript/Uganda
- { 204, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8222, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 28216,48 , 15451,84 , 134,24 , 28216,48 , 15451,84 , 134,24 , 16582,21 , 16603,75 , 85,14 , 16582,21 , 16603,75 , 85,14 , 61,4 , 59,4 , {75,69,83}, 2,3 , 7779,23 , 4,4 , 79,6 , 3795,7 , 2789,5 , 2, 1, 6, 6, 7 }, // Luyia/AnyScript/Kenya
+ { 204, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8222, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 28216,48 , 15451,84 , 134,24 , 28216,48 , 15451,84 , 134,24 , 16582,21 , 16603,75 , 85,14 , 16582,21 , 16603,75 , 85,14 , 61,4 , 59,4 , {75,69,83}, 2,3 , 7779,23 , 4,4 , 79,6 , 3795,7 , 2797,5 , 2, 1, 6, 6, 7 }, // Luyia/AnyScript/Kenya
{ 205, 0, 210, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 28264,48 , 15451,84 , 134,24 , 28264,48 , 15451,84 , 134,24 , 16678,28 , 8870,60 , 14990,14 , 16678,28 , 8870,60 , 14990,14 , 477,9 , 491,8 , {84,90,83}, 306,3 , 7802,28 , 25,5 , 4,0 , 3802,6 , 3808,8 , 0, 0, 1, 6, 7 }, // Asu/AnyScript/Tanzania
- { 206, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 28312,48 , 28360,94 , 28454,24 , 28312,48 , 28360,94 , 28454,24 , 16706,28 , 16734,69 , 16803,14 , 16706,28 , 16734,69 , 16803,14 , 486,9 , 499,6 , {75,69,83}, 2,3 , 7830,27 , 4,4 , 13,6 , 3816,6 , 3822,5 , 2, 1, 6, 6, 7 }, // Teso/AnyScript/Kenya
- { 206, 0, 221, 46, 44, 59, 37, 48, 45, 43, 101, 39, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 28312,48 , 28360,94 , 28454,24 , 28312,48 , 28360,94 , 28454,24 , 16706,28 , 16734,69 , 16803,14 , 16706,28 , 16734,69 , 16803,14 , 486,9 , 499,6 , {85,71,88}, 344,3 , 7857,28 , 4,4 , 13,6 , 3816,6 , 3561,6 , 0, 0, 1, 6, 7 }, // Teso/AnyScript/Uganda
- { 207, 0, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 53,19 , 18,7 , 25,12 , 344,48 , 545,118 , 521,24 , 344,48 , 545,118 , 521,24 , 16817,28 , 16845,56 , 16901,14 , 16817,28 , 16845,56 , 16901,14 , 0,2 , 0,2 , {69,82,78}, 8,3 , 0,7 , 4,4 , 4,0 , 0,0 , 36,7 , 2, 1, 6, 6, 7 }, // Saho/AnyScript/Eritrea
+ { 206, 0, 221, 46, 44, 59, 37, 48, 45, 43, 101, 39, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 28312,48 , 28360,94 , 28454,24 , 28312,48 , 28360,94 , 28454,24 , 16706,28 , 16734,69 , 16803,14 , 16706,28 , 16734,69 , 16803,14 , 486,9 , 499,6 , {85,71,88}, 344,3 , 7830,28 , 4,4 , 13,6 , 3816,6 , 3561,6 , 0, 0, 1, 6, 7 }, // Teso/AnyScript/Uganda
+ { 206, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 39, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 28312,48 , 28360,94 , 28454,24 , 28312,48 , 28360,94 , 28454,24 , 16706,28 , 16734,69 , 16803,14 , 16706,28 , 16734,69 , 16803,14 , 486,9 , 499,6 , {75,69,83}, 2,3 , 7858,27 , 4,4 , 13,6 , 3816,6 , 3822,5 , 2, 1, 6, 6, 7 }, // Teso/AnyScript/Kenya
+ { 207, 0, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 53,19 , 18,7 , 25,12 , 344,48 , 392,118 , 510,24 , 344,48 , 392,118 , 510,24 , 16817,28 , 16845,56 , 16901,14 , 16817,28 , 16845,56 , 16901,14 , 0,2 , 0,2 , {69,82,78}, 8,3 , 0,7 , 4,4 , 4,0 , 0,0 , 43,7 , 2, 1, 6, 6, 7 }, // Saho/AnyScript/Eritrea
{ 208, 0, 132, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 364,8 , 99,16 , 37,5 , 8,10 , 28478,46 , 28524,88 , 28612,24 , 28478,46 , 28524,88 , 28612,24 , 16915,28 , 16943,53 , 16996,14 , 16915,28 , 16943,53 , 16996,14 , 495,6 , 505,6 , {88,79,70}, 154,3 , 7885,23 , 0,4 , 4,0 , 3827,11 , 3838,5 , 0, 0, 1, 6, 7 }, // Koyra Chiini/AnyScript/Mali
- { 209, 0, 210, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 15403,48 , 25708,87 , 134,24 , 15403,48 , 25708,87 , 134,24 , 14900,28 , 14928,62 , 14990,14 , 14900,28 , 14928,62 , 14990,14 , 424,5 , 436,9 , {84,90,83}, 306,3 , 7507,27 , 0,4 , 4,0 , 3843,6 , 2794,8 , 0, 0, 1, 6, 7 }, // Rwa/AnyScript/Tanzania
- { 210, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 28636,48 , 28684,186 , 28870,24 , 28636,48 , 28684,186 , 28870,24 , 17010,28 , 17038,69 , 17107,14 , 17010,28 , 17038,69 , 17107,14 , 501,2 , 511,2 , {75,69,83}, 2,3 , 7908,23 , 0,4 , 4,0 , 3849,6 , 2789,5 , 2, 1, 6, 6, 7 }, // Luo/AnyScript/Kenya
+ { 209, 0, 210, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 15403,48 , 25708,87 , 134,24 , 15403,48 , 25708,87 , 134,24 , 14900,28 , 14928,62 , 14990,14 , 14900,28 , 14928,62 , 14990,14 , 424,5 , 436,9 , {84,90,83}, 306,3 , 7507,27 , 0,4 , 4,0 , 3843,6 , 2789,8 , 0, 0, 1, 6, 7 }, // Rwa/AnyScript/Tanzania
+ { 210, 0, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 28636,48 , 28684,186 , 28870,24 , 28636,48 , 28684,186 , 28870,24 , 17010,28 , 17038,69 , 17107,14 , 17010,28 , 17038,69 , 17107,14 , 501,2 , 511,2 , {75,69,83}, 2,3 , 7908,23 , 0,4 , 4,0 , 3849,6 , 2797,5 , 2, 1, 6, 6, 7 }, // Luo/AnyScript/Kenya
{ 211, 0, 221, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8222, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 25182,48 , 25230,152 , 134,24 , 25182,48 , 25230,152 , 134,24 , 14660,28 , 14688,74 , 14762,14 , 14660,28 , 14688,74 , 14762,14 , 0,2 , 0,2 , {85,71,88}, 344,3 , 7452,26 , 4,4 , 74,5 , 3855,6 , 3561,6 , 0, 0, 1, 6, 7 }, // Chiga/AnyScript/Uganda
{ 212, 0, 145, 44, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 28894,48 , 28942,86 , 29028,24 , 28894,48 , 28942,86 , 29028,24 , 17121,28 , 17149,48 , 17197,14 , 17121,28 , 17149,48 , 17197,14 , 503,9 , 513,10 , {77,65,68}, 0,0 , 7931,22 , 25,5 , 4,0 , 3861,8 , 3869,6 , 2, 1, 6, 5, 6 }, // Central Morocco Tamazight/AnyScript/Morocco
{ 212, 7, 145, 44, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 28894,48 , 28942,86 , 29028,24 , 28894,48 , 28942,86 , 29028,24 , 17121,28 , 17149,48 , 17197,14 , 17121,28 , 17149,48 , 17197,14 , 503,9 , 513,10 , {77,65,68}, 0,0 , 7931,22 , 25,5 , 4,0 , 3861,8 , 3869,6 , 2, 1, 6, 5, 6 }, // Central Morocco Tamazight/Latin/Morocco
{ 213, 0, 132, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 364,8 , 99,16 , 37,5 , 8,10 , 28478,46 , 28524,88 , 28612,24 , 28478,46 , 28524,88 , 28612,24 , 17211,28 , 17239,54 , 16996,14 , 17211,28 , 17239,54 , 16996,14 , 495,6 , 505,6 , {88,79,70}, 154,3 , 7885,23 , 0,4 , 4,0 , 3875,15 , 3838,5 , 0, 0, 1, 6, 7 }, // Koyraboro Senni/AnyScript/Mali
- { 214, 0, 210, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 15403,48 , 29052,84 , 134,24 , 15403,48 , 29052,84 , 134,24 , 17293,28 , 17321,63 , 8930,14 , 17293,28 , 17321,63 , 8930,14 , 512,5 , 523,8 , {84,90,83}, 306,3 , 6559,27 , 0,4 , 4,0 , 3890,9 , 2794,8 , 0, 0, 1, 6, 7 }, // Shambala/AnyScript/Tanzania
+ { 214, 0, 210, 46, 44, 59, 37, 48, 45, 43, 101, 39, 39, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 141,10 , 10,17 , 18,7 , 25,12 , 15403,48 , 29052,84 , 134,24 , 15403,48 , 29052,84 , 134,24 , 17293,28 , 17321,63 , 8930,14 , 17293,28 , 17321,63 , 8930,14 , 512,5 , 523,8 , {84,90,83}, 306,3 , 6535,27 , 0,4 , 4,0 , 3890,9 , 2789,8 , 0, 0, 1, 6, 7 }, // Shambala/AnyScript/Tanzania
+ { 215, 0, 100, 46, 44, 59, 37, 2406, 45, 43, 101, 39, 39, 34, 34, 0,6 , 0,6 , 0,6 , 0,6 , 558,6 , 35,18 , 18,7 , 25,12 , 29136,88 , 29136,88 , 29224,31 , 29136,88 , 29136,88 , 29224,31 , 17384,33 , 17417,54 , 17471,19 , 17384,33 , 17417,54 , 17471,19 , 517,3 , 531,6 , {73,78,82}, 145,2 , 7953,10 , 8,5 , 4,0 , 0,0 , 1586,4 , 2, 1, 7, 7, 7 }, // Bodo/AnyScript/India
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, {0,0,0}, 0,0, 0,0, 0,0, 0,0, 0, 0, 0, 0, 0, 0,0, 0,0 } // trailing 0s
};
@@ -773,8 +775,8 @@ static const ushort date_format_data[] = {
0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d,
0x4d, 0x20, 0x64, 0x64, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79,
0x64, 0x64, 0x64, 0x64, 0xe17, 0xe35, 0xe48, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64,
-0x64, 0x64, 0x64, 0x1361, 0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x1218, 0x12d3, 0x120d, 0x1272, 0x20, 0x79, 0x79,
-0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x1363, 0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x1218, 0x12d3, 0x120d, 0x1272,
+0x64, 0x64, 0x64, 0x1363, 0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x1218, 0x12d3, 0x120d, 0x1272, 0x20, 0x79, 0x79,
+0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x1361, 0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x1218, 0x12d3, 0x120d, 0x1272,
0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x64, 0x64,
0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20,
0x27, 0x440, 0x27, 0x2e, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79,
@@ -844,18 +846,18 @@ static const ushort months_data[] = {
0x64, 0x65, 0x65, 0x3b, 0x51, 0x75, 0x6e, 0x3b, 0x4e, 0x61, 0x68, 0x3b, 0x43, 0x69, 0x67, 0x3b, 0x41, 0x67, 0x64, 0x3b,
0x43, 0x61, 0x78, 0x3b, 0x51, 0x61, 0x73, 0x3b, 0x51, 0x61, 0x64, 0x3b, 0x4c, 0x65, 0x71, 0x3b, 0x57, 0x61, 0x79, 0x3b,
0x44, 0x69, 0x74, 0x3b, 0x58, 0x69, 0x6d, 0x3b, 0x4b, 0x61, 0x78, 0x3b, 0x51, 0x75, 0x6e, 0x78, 0x61, 0x20, 0x47, 0x61,
-0x72, 0x61, 0x62, 0x6c, 0x75, 0x3b, 0x4e, 0x61, 0x68, 0x61, 0x72, 0x73, 0x69, 0x20, 0x4b, 0x75, 0x64, 0x6f, 0x3b, 0x43,
-0x69, 0x67, 0x67, 0x69, 0x6c, 0x74, 0x61, 0x20, 0x4b, 0x75, 0x64, 0x6f, 0x3b, 0x41, 0x67, 0x64, 0x61, 0x20, 0x42, 0x61,
-0x78, 0x69, 0x73, 0x73, 0x6f, 0x3b, 0x43, 0x61, 0x78, 0x61, 0x68, 0x20, 0x41, 0x6c, 0x73, 0x61, 0x3b, 0x51, 0x61, 0x73,
-0x61, 0x20, 0x44, 0x69, 0x72, 0x72, 0x69, 0x3b, 0x51, 0x61, 0x64, 0x6f, 0x20, 0x44, 0x69, 0x72, 0x72, 0x69, 0x3b, 0x4c,
-0x65, 0x71, 0x65, 0x65, 0x6e, 0x69, 0x3b, 0x57, 0x61, 0x79, 0x73, 0x75, 0x3b, 0x44, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x3b,
-0x58, 0x69, 0x6d, 0x6f, 0x6c, 0x69, 0x3b, 0x4b, 0x61, 0x78, 0x78, 0x61, 0x20, 0x47, 0x61, 0x72, 0x61, 0x62, 0x6c, 0x75,
-0x3b, 0x51, 0x3b, 0x4e, 0x3b, 0x43, 0x3b, 0x41, 0x3b, 0x43, 0x3b, 0x51, 0x3b, 0x51, 0x3b, 0x4c, 0x3b, 0x57, 0x3b, 0x44,
-0x3b, 0x58, 0x3b, 0x4b, 0x3b, 0x51, 0x75, 0x6e, 0x78, 0x61, 0x20, 0x47, 0x61, 0x72, 0x61, 0x62, 0x6c, 0x75, 0x3b, 0x4b,
-0x75, 0x64, 0x6f, 0x3b, 0x43, 0x69, 0x67, 0x67, 0x69, 0x6c, 0x74, 0x61, 0x20, 0x4b, 0x75, 0x64, 0x6f, 0x3b, 0x41, 0x67,
-0x64, 0x61, 0x20, 0x42, 0x61, 0x78, 0x69, 0x73, 0x3b, 0x43, 0x61, 0x78, 0x61, 0x68, 0x20, 0x41, 0x6c, 0x73, 0x61, 0x3b,
-0x51, 0x61, 0x73, 0x61, 0x20, 0x44, 0x69, 0x72, 0x72, 0x69, 0x3b, 0x51, 0x61, 0x64, 0x6f, 0x20, 0x44, 0x69, 0x72, 0x72,
-0x69, 0x3b, 0x4c, 0x69, 0x69, 0x71, 0x65, 0x6e, 0x3b, 0x57, 0x61, 0x79, 0x73, 0x75, 0x3b, 0x44, 0x69, 0x74, 0x65, 0x6c,
+0x72, 0x61, 0x62, 0x6c, 0x75, 0x3b, 0x4b, 0x75, 0x64, 0x6f, 0x3b, 0x43, 0x69, 0x67, 0x67, 0x69, 0x6c, 0x74, 0x61, 0x20,
+0x4b, 0x75, 0x64, 0x6f, 0x3b, 0x41, 0x67, 0x64, 0x61, 0x20, 0x42, 0x61, 0x78, 0x69, 0x73, 0x3b, 0x43, 0x61, 0x78, 0x61,
+0x68, 0x20, 0x41, 0x6c, 0x73, 0x61, 0x3b, 0x51, 0x61, 0x73, 0x61, 0x20, 0x44, 0x69, 0x72, 0x72, 0x69, 0x3b, 0x51, 0x61,
+0x64, 0x6f, 0x20, 0x44, 0x69, 0x72, 0x72, 0x69, 0x3b, 0x4c, 0x69, 0x69, 0x71, 0x65, 0x6e, 0x3b, 0x57, 0x61, 0x79, 0x73,
+0x75, 0x3b, 0x44, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x3b, 0x58, 0x69, 0x6d, 0x6f, 0x6c, 0x69, 0x3b, 0x4b, 0x61, 0x78, 0x78,
+0x61, 0x20, 0x47, 0x61, 0x72, 0x61, 0x62, 0x6c, 0x75, 0x3b, 0x51, 0x3b, 0x4e, 0x3b, 0x43, 0x3b, 0x41, 0x3b, 0x43, 0x3b,
+0x51, 0x3b, 0x51, 0x3b, 0x4c, 0x3b, 0x57, 0x3b, 0x44, 0x3b, 0x58, 0x3b, 0x4b, 0x3b, 0x51, 0x75, 0x6e, 0x78, 0x61, 0x20,
+0x47, 0x61, 0x72, 0x61, 0x62, 0x6c, 0x75, 0x3b, 0x4e, 0x61, 0x68, 0x61, 0x72, 0x73, 0x69, 0x20, 0x4b, 0x75, 0x64, 0x6f,
+0x3b, 0x43, 0x69, 0x67, 0x67, 0x69, 0x6c, 0x74, 0x61, 0x20, 0x4b, 0x75, 0x64, 0x6f, 0x3b, 0x41, 0x67, 0x64, 0x61, 0x20,
+0x42, 0x61, 0x78, 0x69, 0x73, 0x73, 0x6f, 0x3b, 0x43, 0x61, 0x78, 0x61, 0x68, 0x20, 0x41, 0x6c, 0x73, 0x61, 0x3b, 0x51,
+0x61, 0x73, 0x61, 0x20, 0x44, 0x69, 0x72, 0x72, 0x69, 0x3b, 0x51, 0x61, 0x64, 0x6f, 0x20, 0x44, 0x69, 0x72, 0x72, 0x69,
+0x3b, 0x4c, 0x65, 0x71, 0x65, 0x65, 0x6e, 0x69, 0x3b, 0x57, 0x61, 0x79, 0x73, 0x75, 0x3b, 0x44, 0x69, 0x74, 0x65, 0x6c,
0x69, 0x3b, 0x58, 0x69, 0x6d, 0x6f, 0x6c, 0x69, 0x3b, 0x4b, 0x61, 0x78, 0x78, 0x61, 0x20, 0x47, 0x61, 0x72, 0x61, 0x62,
0x6c, 0x75, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d,
0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x75, 0x67, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f,
@@ -1431,20 +1433,20 @@ static const ushort months_data[] = {
0x6d, 0x61, 0x6a, 0x61, 0x3b, 0x63, 0x7a, 0x65, 0x72, 0x77, 0x63, 0x61, 0x3b, 0x6c, 0x69, 0x70, 0x63, 0x61, 0x3b, 0x73,
0x69, 0x65, 0x72, 0x70, 0x6e, 0x69, 0x61, 0x3b, 0x77, 0x72, 0x7a, 0x65, 0x15b, 0x6e, 0x69, 0x61, 0x3b, 0x70, 0x61, 0x17a,
0x64, 0x7a, 0x69, 0x65, 0x72, 0x6e, 0x69, 0x6b, 0x61, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, 0x61, 0x3b,
-0x67, 0x72, 0x75, 0x64, 0x6e, 0x69, 0x61, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x76, 0x3b, 0x4d, 0x61, 0x72, 0x3b,
-0x41, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b,
-0x53, 0x65, 0x74, 0x3b, 0x4f, 0x75, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x7a, 0x3b, 0x4a, 0x61, 0x6e, 0x65,
-0x69, 0x72, 0x6f, 0x3b, 0x46, 0x65, 0x76, 0x65, 0x72, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x4d, 0x61, 0x72, 0xe7, 0x6f, 0x3b,
-0x41, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x6f, 0x3b, 0x4a, 0x75, 0x6e, 0x68, 0x6f, 0x3b, 0x4a, 0x75, 0x6c,
-0x68, 0x6f, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x4f,
-0x75, 0x74, 0x75, 0x62, 0x72, 0x6f, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x44, 0x65, 0x7a, 0x65,
-0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x76, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x62, 0x72,
-0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x67, 0x6f, 0x3b, 0x73, 0x65, 0x74,
-0x3b, 0x6f, 0x75, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x7a, 0x3b, 0x6a, 0x61, 0x6e, 0x65, 0x69, 0x72, 0x6f,
-0x3b, 0x66, 0x65, 0x76, 0x65, 0x72, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0xe7, 0x6f, 0x3b, 0x61, 0x62, 0x72,
-0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6e, 0x68, 0x6f, 0x3b, 0x6a, 0x75, 0x6c, 0x68, 0x6f, 0x3b,
-0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x6f, 0x75, 0x74, 0x75,
-0x62, 0x72, 0x6f, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x64, 0x65, 0x7a, 0x65, 0x6d, 0x62, 0x72,
+0x67, 0x72, 0x75, 0x64, 0x6e, 0x69, 0x61, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x76, 0x3b, 0x6d, 0x61, 0x72, 0x3b,
+0x61, 0x62, 0x72, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x67, 0x6f, 0x3b,
+0x73, 0x65, 0x74, 0x3b, 0x6f, 0x75, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x7a, 0x3b, 0x6a, 0x61, 0x6e, 0x65,
+0x69, 0x72, 0x6f, 0x3b, 0x66, 0x65, 0x76, 0x65, 0x72, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0xe7, 0x6f, 0x3b,
+0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6e, 0x68, 0x6f, 0x3b, 0x6a, 0x75, 0x6c,
+0x68, 0x6f, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x6f,
+0x75, 0x74, 0x75, 0x62, 0x72, 0x6f, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x64, 0x65, 0x7a, 0x65,
+0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x76, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x62, 0x72,
+0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x74,
+0x3b, 0x4f, 0x75, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x7a, 0x3b, 0x4a, 0x61, 0x6e, 0x65, 0x69, 0x72, 0x6f,
+0x3b, 0x46, 0x65, 0x76, 0x65, 0x72, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x4d, 0x61, 0x72, 0xe7, 0x6f, 0x3b, 0x41, 0x62, 0x72,
+0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x6f, 0x3b, 0x4a, 0x75, 0x6e, 0x68, 0x6f, 0x3b, 0x4a, 0x75, 0x6c, 0x68, 0x6f, 0x3b,
+0x41, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x4f, 0x75, 0x74, 0x75,
+0x62, 0x72, 0x6f, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x44, 0x65, 0x7a, 0x65, 0x6d, 0x62, 0x72,
0x6f, 0x3b, 0xa1c, 0xa28, 0xa35, 0xa30, 0xa40, 0x3b, 0xa2b, 0xa3c, 0xa30, 0xa35, 0xa30, 0xa40, 0x3b, 0xa2e, 0xa3e, 0xa30, 0xa1a, 0x3b,
0xa05, 0xa2a, 0xa4d, 0xa30, 0xa48, 0xa32, 0x3b, 0xa2e, 0xa08, 0x3b, 0xa1c, 0xa42, 0xa28, 0x3b, 0xa1c, 0xa41, 0xa32, 0xa3e, 0xa08, 0x3b,
0xa05, 0xa17, 0xa38, 0xa24, 0x3b, 0xa38, 0xa24, 0xa70, 0xa2c, 0xa30, 0x3b, 0xa05, 0xa15, 0xa24, 0xa42, 0xa2c, 0xa30, 0x3b, 0xa28, 0xa35,
@@ -1949,23 +1951,23 @@ static const ushort months_data[] = {
0x161, 0x68, 0x65, 0x3b, 0x41, 0x70, 0x6f, 0x72, 0x65, 0x6c, 0x65, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x65,
0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x65, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x73, 0x65, 0x3b, 0x53, 0x65, 0x74, 0x65,
0x6d, 0x65, 0x72, 0x65, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x6f, 0x72, 0x65, 0x3b, 0x4e, 0x6f, 0x66, 0x65, 0x6d, 0x65,
-0x72, 0x65, 0x3b, 0x44, 0x69, 0x73, 0x65, 0x6d, 0x65, 0x72, 0x65, 0x3b, 0x6f, 0x111, 0x111, 0x61, 0x6a, 0x61, 0x67, 0x65,
-0x3b, 0x67, 0x75, 0x6f, 0x76, 0x76, 0x61, 0x3b, 0x6e, 0x6a, 0x75, 0x6b, 0x10d, 0x61, 0x3b, 0x63, 0x75, 0x6f, 0x14b, 0x6f,
-0x3b, 0x6d, 0x69, 0x65, 0x73, 0x73, 0x65, 0x3b, 0x67, 0x65, 0x61, 0x73, 0x73, 0x65, 0x3b, 0x73, 0x75, 0x6f, 0x69, 0x64,
-0x6e, 0x65, 0x3b, 0x62, 0x6f, 0x72, 0x67, 0x65, 0x3b, 0x10d, 0x61, 0x6b, 0x10d, 0x61, 0x3b, 0x67, 0x6f, 0x6c, 0x67, 0x67,
-0x6f, 0x74, 0x3b, 0x73, 0x6b, 0xe1, 0x62, 0x6d, 0x61, 0x3b, 0x6a, 0x75, 0x6f, 0x76, 0x6c, 0x61, 0x3b, 0x6f, 0x111, 0x111,
-0x61, 0x6a, 0x61, 0x67, 0x65, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x67, 0x75, 0x6f, 0x76, 0x76, 0x61, 0x6d, 0xe1, 0x6e,
-0x6e, 0x75, 0x3b, 0x6e, 0x6a, 0x75, 0x6b, 0x10d, 0x61, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x63, 0x75, 0x6f, 0x14b, 0x6f,
-0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x6d, 0x69, 0x65, 0x73, 0x73, 0x65, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x67, 0x65,
-0x61, 0x73, 0x73, 0x65, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x73, 0x75, 0x6f, 0x69, 0x64, 0x6e, 0x65, 0x6d, 0xe1, 0x6e,
-0x6e, 0x75, 0x3b, 0x62, 0x6f, 0x72, 0x67, 0x65, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x10d, 0x61, 0x6b, 0x10d, 0x61, 0x6d,
-0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x67, 0x6f, 0x6c, 0x67, 0x67, 0x6f, 0x74, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x73, 0x6b,
-0xe1, 0x62, 0x6d, 0x61, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x6a, 0x75, 0x6f, 0x76, 0x6c, 0x61, 0x6d, 0xe1, 0x6e, 0x6e,
-0x75, 0x3b, 0x4f, 0x3b, 0x47, 0x3b, 0x4e, 0x3b, 0x43, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x53, 0x3b, 0x42, 0x3b, 0x10c, 0x3b,
-0x47, 0x3b, 0x53, 0x3b, 0x4a, 0x3b, 0x6f, 0x111, 0x111, 0x6a, 0x3b, 0x67, 0x75, 0x6f, 0x76, 0x3b, 0x6e, 0x6a, 0x75, 0x6b,
-0x3b, 0x63, 0x75, 0x6f, 0x3b, 0x6d, 0x69, 0x65, 0x73, 0x3b, 0x67, 0x65, 0x61, 0x73, 0x3b, 0x73, 0x75, 0x6f, 0x69, 0x3b,
-0x62, 0x6f, 0x72, 0x67, 0x3b, 0x10d, 0x61, 0x6b, 0x10d, 0x3b, 0x67, 0x6f, 0x6c, 0x67, 0x3b, 0x73, 0x6b, 0xe1, 0x62, 0x3b,
-0x6a, 0x75, 0x6f, 0x76, 0x3b, 0x4b, 0x69, 0x69, 0x3b, 0x44, 0x68, 0x69, 0x3b, 0x54, 0x72, 0x69, 0x3b, 0x53, 0x70, 0x69,
+0x72, 0x65, 0x3b, 0x44, 0x69, 0x73, 0x65, 0x6d, 0x65, 0x72, 0x65, 0x3b, 0x6f, 0x111, 0x111, 0x6a, 0x3b, 0x67, 0x75, 0x6f,
+0x76, 0x3b, 0x6e, 0x6a, 0x75, 0x6b, 0x3b, 0x63, 0x75, 0x6f, 0x3b, 0x6d, 0x69, 0x65, 0x73, 0x3b, 0x67, 0x65, 0x61, 0x73,
+0x3b, 0x73, 0x75, 0x6f, 0x69, 0x3b, 0x62, 0x6f, 0x72, 0x67, 0x3b, 0x10d, 0x61, 0x6b, 0x10d, 0x3b, 0x67, 0x6f, 0x6c, 0x67,
+0x3b, 0x73, 0x6b, 0xe1, 0x62, 0x3b, 0x6a, 0x75, 0x6f, 0x76, 0x3b, 0x6f, 0x111, 0x111, 0x61, 0x6a, 0x61, 0x67, 0x65, 0x6d,
+0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x67, 0x75, 0x6f, 0x76, 0x76, 0x61, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x6e, 0x6a, 0x75,
+0x6b, 0x10d, 0x61, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x63, 0x75, 0x6f, 0x14b, 0x6f, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b,
+0x6d, 0x69, 0x65, 0x73, 0x73, 0x65, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x67, 0x65, 0x61, 0x73, 0x73, 0x65, 0x6d, 0xe1,
+0x6e, 0x6e, 0x75, 0x3b, 0x73, 0x75, 0x6f, 0x69, 0x64, 0x6e, 0x65, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x62, 0x6f, 0x72,
+0x67, 0x65, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x10d, 0x61, 0x6b, 0x10d, 0x61, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x67,
+0x6f, 0x6c, 0x67, 0x67, 0x6f, 0x74, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x73, 0x6b, 0xe1, 0x62, 0x6d, 0x61, 0x6d, 0xe1,
+0x6e, 0x6e, 0x75, 0x3b, 0x6a, 0x75, 0x6f, 0x76, 0x6c, 0x61, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x4f, 0x3b, 0x47, 0x3b,
+0x4e, 0x3b, 0x43, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x53, 0x3b, 0x42, 0x3b, 0x10c, 0x3b, 0x47, 0x3b, 0x53, 0x3b, 0x4a, 0x3b,
+0x6f, 0x111, 0x111, 0x61, 0x6a, 0x61, 0x67, 0x65, 0x3b, 0x67, 0x75, 0x6f, 0x76, 0x76, 0x61, 0x3b, 0x6e, 0x6a, 0x75, 0x6b,
+0x10d, 0x61, 0x3b, 0x63, 0x75, 0x6f, 0x14b, 0x6f, 0x3b, 0x6d, 0x69, 0x65, 0x73, 0x73, 0x65, 0x3b, 0x67, 0x65, 0x61, 0x73,
+0x73, 0x65, 0x3b, 0x73, 0x75, 0x6f, 0x69, 0x64, 0x6e, 0x65, 0x3b, 0x62, 0x6f, 0x72, 0x67, 0x65, 0x3b, 0x10d, 0x61, 0x6b,
+0x10d, 0x61, 0x3b, 0x67, 0x6f, 0x6c, 0x67, 0x67, 0x6f, 0x74, 0x3b, 0x73, 0x6b, 0xe1, 0x62, 0x6d, 0x61, 0x3b, 0x6a, 0x75,
+0x6f, 0x76, 0x6c, 0x61, 0x3b, 0x4b, 0x69, 0x69, 0x3b, 0x44, 0x68, 0x69, 0x3b, 0x54, 0x72, 0x69, 0x3b, 0x53, 0x70, 0x69,
0x3b, 0x52, 0x69, 0x69, 0x3b, 0x4d, 0x74, 0x69, 0x3b, 0x45, 0x6d, 0x69, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4d, 0x6e, 0x69,
0x3b, 0x4d, 0x78, 0x69, 0x3b, 0x4d, 0x78, 0x6b, 0x3b, 0x4d, 0x78, 0x64, 0x3b, 0x4b, 0x69, 0x6e, 0x67, 0x61, 0x6c, 0x20,
0x69, 0x64, 0x61, 0x73, 0x3b, 0x44, 0x68, 0x61, 0x20, 0x69, 0x64, 0x61, 0x73, 0x3b, 0x54, 0x72, 0x75, 0x20, 0x69, 0x64,
@@ -2280,7 +2282,13 @@ static const ushort months_data[] = {
0x46, 0x65, 0x62, 0x6c, 0x75, 0x61, 0x6c, 0x69, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x3b, 0x41, 0x70, 0x6c, 0x69, 0x6c,
0x69, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x41, 0x67, 0x6f,
0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x3b,
-0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b
+0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x91c, 0x93e, 0x928, 0x941,
+0x935, 0x93e, 0x930, 0x940, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x935, 0x93e, 0x930, 0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d,
+0x938, 0x3b, 0x90f, 0x92b, 0x94d, 0x930, 0x93f, 0x932, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x941, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x93e,
+0x907, 0x3b, 0x906, 0x917, 0x938, 0x94d, 0x925, 0x3b, 0x938, 0x947, 0x92c, 0x925, 0x947, 0x91c, 0x94d, 0x92c, 0x93c, 0x930, 0x3b, 0x905,
+0x916, 0x925, 0x92c, 0x930, 0x3b, 0x928, 0x92c, 0x947, 0x91c, 0x94d, 0x92c, 0x93c, 0x930, 0x3b, 0x926, 0x93f, 0x938, 0x947, 0x91c, 0x94d,
+0x92c, 0x93c, 0x930, 0x3b, 0x91c, 0x3b, 0x92b, 0x947, 0x3b, 0x92e, 0x93e, 0x3b, 0x90f, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x941, 0x3b,
+0x91c, 0x941, 0x3b, 0x906, 0x3b, 0x938, 0x947, 0x3b, 0x905, 0x3b, 0x928, 0x3b, 0x926, 0x93f, 0x3b
};
static const ushort days_data[] = {
@@ -2311,15 +2319,15 @@ static const ushort days_data[] = {
0x3b, 0x53, 0x3b, 0x12a5, 0x1211, 0x12f5, 0x3b, 0x1230, 0x129e, 0x3b, 0x121b, 0x12ad, 0x1230, 0x3b, 0x1228, 0x1261, 0x12d5, 0x3b, 0x1210, 0x1219,
0x1235, 0x3b, 0x12d3, 0x122d, 0x1265, 0x3b, 0x1245, 0x12f3, 0x121c, 0x3b, 0x12a5, 0x1211, 0x12f5, 0x3b, 0x1230, 0x129e, 0x3b, 0x121b, 0x12ad, 0x1230,
0x129e, 0x3b, 0x1228, 0x1261, 0x12d5, 0x3b, 0x1210, 0x1219, 0x1235, 0x3b, 0x12d3, 0x122d, 0x1265, 0x3b, 0x1245, 0x12f3, 0x121c, 0x3b, 0x12a5, 0x3b,
-0x1230, 0x3b, 0x121b, 0x3b, 0x1228, 0x3b, 0x1210, 0x3b, 0x12d3, 0x3b, 0x1245, 0x3b, 0x627, 0x644, 0x623, 0x62d, 0x62f, 0x3b, 0x627, 0x644,
-0x627, 0x62b, 0x646, 0x64a, 0x646, 0x3b, 0x627, 0x644, 0x62b, 0x644, 0x627, 0x62b, 0x627, 0x621, 0x3b, 0x627, 0x644, 0x623, 0x631, 0x628,
-0x639, 0x627, 0x621, 0x3b, 0x627, 0x644, 0x62e, 0x645, 0x64a, 0x633, 0x3b, 0x627, 0x644, 0x62c, 0x645, 0x639, 0x629, 0x3b, 0x627, 0x644,
-0x633, 0x628, 0x62a, 0x3b, 0x627, 0x644, 0x623, 0x62d, 0x62f, 0x3b, 0x627, 0x644, 0x625, 0x62b, 0x646, 0x64a, 0x646, 0x3b, 0x627, 0x644,
-0x62b, 0x644, 0x627, 0x62b, 0x627, 0x621, 0x3b, 0x627, 0x644, 0x623, 0x631, 0x628, 0x639, 0x627, 0x621, 0x3b, 0x627, 0x644, 0x62e, 0x645,
-0x64a, 0x633, 0x3b, 0x627, 0x644, 0x62c, 0x645, 0x639, 0x629, 0x3b, 0x627, 0x644, 0x633, 0x628, 0x62a, 0x3b, 0x62d, 0x3b, 0x646, 0x3b,
-0x62b, 0x3b, 0x631, 0x3b, 0x62e, 0x3b, 0x62c, 0x3b, 0x633, 0x3b, 0x623, 0x62d, 0x62f, 0x3b, 0x625, 0x62b, 0x646, 0x64a, 0x646, 0x3b,
-0x62b, 0x644, 0x627, 0x62b, 0x627, 0x621, 0x3b, 0x623, 0x631, 0x628, 0x639, 0x627, 0x621, 0x3b, 0x62e, 0x645, 0x64a, 0x633, 0x3b, 0x62c,
-0x645, 0x639, 0x629, 0x3b, 0x633, 0x628, 0x62a, 0x3b, 0x53f, 0x56b, 0x580, 0x3b, 0x535, 0x580, 0x56f, 0x3b, 0x535, 0x580, 0x584, 0x3b,
+0x1230, 0x3b, 0x121b, 0x3b, 0x1228, 0x3b, 0x1210, 0x3b, 0x12d3, 0x3b, 0x1245, 0x3b, 0x623, 0x62d, 0x62f, 0x3b, 0x625, 0x62b, 0x646, 0x64a,
+0x646, 0x3b, 0x62b, 0x644, 0x627, 0x62b, 0x627, 0x621, 0x3b, 0x623, 0x631, 0x628, 0x639, 0x627, 0x621, 0x3b, 0x62e, 0x645, 0x64a, 0x633,
+0x3b, 0x62c, 0x645, 0x639, 0x629, 0x3b, 0x633, 0x628, 0x62a, 0x3b, 0x627, 0x644, 0x623, 0x62d, 0x62f, 0x3b, 0x627, 0x644, 0x625, 0x62b,
+0x646, 0x64a, 0x646, 0x3b, 0x627, 0x644, 0x62b, 0x644, 0x627, 0x62b, 0x627, 0x621, 0x3b, 0x627, 0x644, 0x623, 0x631, 0x628, 0x639, 0x627,
+0x621, 0x3b, 0x627, 0x644, 0x62e, 0x645, 0x64a, 0x633, 0x3b, 0x627, 0x644, 0x62c, 0x645, 0x639, 0x629, 0x3b, 0x627, 0x644, 0x633, 0x628,
+0x62a, 0x3b, 0x62d, 0x3b, 0x646, 0x3b, 0x62b, 0x3b, 0x631, 0x3b, 0x62e, 0x3b, 0x62c, 0x3b, 0x633, 0x3b, 0x627, 0x644, 0x623, 0x62d,
+0x62f, 0x3b, 0x627, 0x644, 0x627, 0x62b, 0x646, 0x64a, 0x646, 0x3b, 0x627, 0x644, 0x62b, 0x644, 0x627, 0x62b, 0x627, 0x621, 0x3b, 0x627,
+0x644, 0x623, 0x631, 0x628, 0x639, 0x627, 0x621, 0x3b, 0x627, 0x644, 0x62e, 0x645, 0x64a, 0x633, 0x3b, 0x627, 0x644, 0x62c, 0x645, 0x639,
+0x629, 0x3b, 0x627, 0x644, 0x633, 0x628, 0x62a, 0x3b, 0x53f, 0x56b, 0x580, 0x3b, 0x535, 0x580, 0x56f, 0x3b, 0x535, 0x580, 0x584, 0x3b,
0x549, 0x578, 0x580, 0x3b, 0x540, 0x576, 0x563, 0x3b, 0x548, 0x582, 0x580, 0x3b, 0x547, 0x561, 0x562, 0x3b, 0x53f, 0x56b, 0x580, 0x561,
0x56f, 0x56b, 0x3b, 0x535, 0x580, 0x56f, 0x578, 0x582, 0x577, 0x561, 0x562, 0x569, 0x56b, 0x3b, 0x535, 0x580, 0x565, 0x584, 0x577, 0x561,
0x562, 0x569, 0x56b, 0x3b, 0x549, 0x578, 0x580, 0x565, 0x584, 0x577, 0x561, 0x562, 0x569, 0x56b, 0x3b, 0x540, 0x56b, 0x576, 0x563, 0x577,
@@ -2632,16 +2640,16 @@ static const ushort days_data[] = {
0x77, 0x74, 0x6f, 0x72, 0x65, 0x6b, 0x3b, 0x15b, 0x72, 0x6f, 0x64, 0x61, 0x3b, 0x63, 0x7a, 0x77, 0x61, 0x72, 0x74, 0x65,
0x6b, 0x3b, 0x70, 0x69, 0x105, 0x74, 0x65, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x4e, 0x3b, 0x50, 0x3b,
0x57, 0x3b, 0x15a, 0x3b, 0x43, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0x64, 0x6f, 0x6d, 0x3b, 0x73, 0x65, 0x67, 0x3b, 0x74, 0x65,
-0x72, 0x3b, 0x71, 0x75, 0x61, 0x3b, 0x71, 0x75, 0x69, 0x3b, 0x73, 0x65, 0x78, 0x3b, 0x73, 0xe1, 0x62, 0x3b, 0x44, 0x6f,
-0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b,
-0x54, 0x65, 0x72, 0xe7, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x51, 0x75, 0x61, 0x72, 0x74, 0x61, 0x2d, 0x66,
-0x65, 0x69, 0x72, 0x61, 0x3b, 0x51, 0x75, 0x69, 0x6e, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x53, 0x65,
-0x78, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x53, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x44, 0x3b, 0x53,
-0x3b, 0x54, 0x3b, 0x51, 0x3b, 0x51, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x73,
-0x65, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x74, 0x65, 0x72, 0xe7, 0x61, 0x2d, 0x66,
-0x65, 0x69, 0x72, 0x61, 0x3b, 0x71, 0x75, 0x61, 0x72, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x71, 0x75,
-0x69, 0x6e, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x73, 0x65, 0x78, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69,
-0x72, 0x61, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0xa10, 0xa24, 0x2e, 0x3b, 0xa38, 0xa4b, 0xa2e, 0x2e, 0x3b, 0xa2e,
+0x72, 0x3b, 0x71, 0x75, 0x61, 0x3b, 0x71, 0x75, 0x69, 0x3b, 0x73, 0x65, 0x78, 0x3b, 0x73, 0xe1, 0x62, 0x3b, 0x64, 0x6f,
+0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x73, 0x65, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b,
+0x74, 0x65, 0x72, 0xe7, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x71, 0x75, 0x61, 0x72, 0x74, 0x61, 0x2d, 0x66,
+0x65, 0x69, 0x72, 0x61, 0x3b, 0x71, 0x75, 0x69, 0x6e, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x73, 0x65,
+0x78, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x44, 0x3b, 0x53,
+0x3b, 0x54, 0x3b, 0x51, 0x3b, 0x51, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x53,
+0x65, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x54, 0x65, 0x72, 0xe7, 0x61, 0x2d, 0x66,
+0x65, 0x69, 0x72, 0x61, 0x3b, 0x51, 0x75, 0x61, 0x72, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x51, 0x75,
+0x69, 0x6e, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x53, 0x65, 0x78, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69,
+0x72, 0x61, 0x3b, 0x53, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0xa10, 0xa24, 0x2e, 0x3b, 0xa38, 0xa4b, 0xa2e, 0x2e, 0x3b, 0xa2e,
0xa70, 0xa17, 0xa32, 0x2e, 0x3b, 0xa2c, 0xa41, 0xa27, 0x2e, 0x3b, 0xa35, 0xa40, 0xa30, 0x2e, 0x3b, 0xa38, 0xa3c, 0xa41, 0xa15, 0xa30,
0x2e, 0x3b, 0xa38, 0xa3c, 0xa28, 0xa40, 0x2e, 0x3b, 0xa10, 0xa24, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa38, 0xa4b, 0xa2e, 0xa35, 0xa3e, 0xa30,
0x3b, 0xa2e, 0xa70, 0xa17, 0xa32, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa2c, 0xa41, 0xa27, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa35, 0xa40, 0xa30, 0xa35,
@@ -2767,10 +2775,10 @@ static const ushort days_data[] = {
0xf0b, 0xf67, 0xfb3, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf55, 0xf74, 0xf62, 0xf0b, 0xf56, 0xf74, 0xf0b, 0x3b,
0xf42, 0xf5f, 0xf60, 0xf0b, 0xf66, 0xf44, 0xf66, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0xf0b, 0xf54, 0xf0b,
0x3b, 0xf49, 0xf72, 0x3b, 0xf5f, 0xfb3, 0x3b, 0xf58, 0xf72, 0x3b, 0xf67, 0xfb3, 0x3b, 0xf55, 0xf74, 0x3b, 0xf66, 0x3b, 0xf66, 0xfa4,
-0xf7a, 0x3b, 0x1230, 0x1295, 0x1260, 0x1275, 0x3b, 0x1230, 0x1291, 0x12ed, 0x3b, 0x1230, 0x1209, 0x1235, 0x3b, 0x1228, 0x1261, 0x12d5, 0x3b, 0x1213,
+0xf7a, 0x3b, 0x1230, 0x1295, 0x1260, 0x1275, 0x3b, 0x1230, 0x1291, 0x12ed, 0x3b, 0x1220, 0x1209, 0x1235, 0x3b, 0x1228, 0x1261, 0x12d5, 0x3b, 0x1283,
0x1219, 0x1235, 0x3b, 0x12d3, 0x122d, 0x1262, 0x3b, 0x1240, 0x12f3, 0x121d, 0x3b, 0x1230, 0x3b, 0x1230, 0x3b, 0x1220, 0x3b, 0x1228, 0x3b, 0x1283,
-0x3b, 0x12d3, 0x3b, 0x1240, 0x3b, 0x1230, 0x1295, 0x1260, 0x1275, 0x3b, 0x1230, 0x1291, 0x12ed, 0x3b, 0x1220, 0x1209, 0x1235, 0x3b, 0x1228, 0x1261,
-0x12d5, 0x3b, 0x1283, 0x1219, 0x1235, 0x3b, 0x12d3, 0x122d, 0x1262, 0x3b, 0x1240, 0x12f3, 0x121d, 0x3b, 0x53, 0x101, 0x70, 0x3b, 0x4d, 0x14d,
+0x3b, 0x12d3, 0x3b, 0x1240, 0x3b, 0x1230, 0x1295, 0x1260, 0x1275, 0x3b, 0x1230, 0x1291, 0x12ed, 0x3b, 0x1230, 0x1209, 0x1235, 0x3b, 0x1228, 0x1261,
+0x12d5, 0x3b, 0x1213, 0x1219, 0x1235, 0x3b, 0x12d3, 0x122d, 0x1262, 0x3b, 0x1240, 0x12f3, 0x121d, 0x3b, 0x53, 0x101, 0x70, 0x3b, 0x4d, 0x14d,
0x6e, 0x3b, 0x54, 0x16b, 0x73, 0x3b, 0x50, 0x75, 0x6c, 0x3b, 0x54, 0x75, 0x2bb, 0x61, 0x3b, 0x46, 0x61, 0x6c, 0x3b, 0x54,
0x6f, 0x6b, 0x3b, 0x53, 0x101, 0x70, 0x61, 0x74, 0x65, 0x3b, 0x4d, 0x14d, 0x6e, 0x69, 0x74, 0x65, 0x3b, 0x54, 0x16b, 0x73,
0x69, 0x74, 0x65, 0x3b, 0x50, 0x75, 0x6c, 0x65, 0x6c, 0x75, 0x6c, 0x75, 0x3b, 0x54, 0x75, 0x2bb, 0x61, 0x70, 0x75, 0x6c,
@@ -2940,15 +2948,15 @@ static const ushort days_data[] = {
0x61, 0x62, 0x6f, 0x72, 0x61, 0x72, 0x6f, 0x3b, 0x4c, 0x61, 0x62, 0x6f, 0x6e, 0x65, 0x3b, 0x4c, 0x61, 0x62, 0x6f, 0x68,
0x6c, 0x61, 0x6e, 0x6f, 0x3b, 0x4d, 0x6f, 0x6b, 0x69, 0x62, 0x65, 0x6c, 0x6f, 0x3b, 0x73, 0x6f, 0x74, 0x6e, 0x3b, 0x76,
0x75, 0x6f, 0x73, 0x3b, 0x6d, 0x61, 0x14b, 0x3b, 0x67, 0x61, 0x73, 0x6b, 0x3b, 0x64, 0x75, 0x6f, 0x72, 0x3b, 0x62, 0x65,
-0x61, 0x72, 0x3b, 0x6c, 0xe1, 0x76, 0x3b, 0x61, 0x65, 0x6a, 0x6c, 0x65, 0x67, 0x65, 0x3b, 0x6d, 0xe5, 0x61, 0x6e, 0x74,
-0x61, 0x3b, 0x64, 0xe4, 0x6a, 0x73, 0x74, 0x61, 0x3b, 0x67, 0x61, 0x73, 0x6b, 0x65, 0x76, 0x61, 0x68, 0x6b, 0x6f, 0x65,
-0x3b, 0x64, 0xe5, 0x61, 0x72, 0x73, 0x74, 0x61, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x6a, 0x61, 0x64, 0x61, 0x68, 0x6b, 0x65,
-0x3b, 0x6c, 0x61, 0x61, 0x76, 0x61, 0x64, 0x61, 0x68, 0x6b, 0x65, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x47, 0x3b,
-0x44, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x73, 0x6f, 0x74, 0x6e, 0x61, 0x62, 0x65, 0x61, 0x69, 0x76, 0x69, 0x3b, 0x76, 0x75,
-0x6f, 0x73, 0x73, 0xe1, 0x72, 0x67, 0x61, 0x3b, 0x6d, 0x61, 0x14b, 0x14b, 0x65, 0x62, 0xe1, 0x72, 0x67, 0x61, 0x3b, 0x67,
-0x61, 0x73, 0x6b, 0x61, 0x76, 0x61, 0x68, 0x6b, 0x6b, 0x75, 0x3b, 0x64, 0x75, 0x6f, 0x72, 0x61, 0x73, 0x64, 0x61, 0x74,
-0x3b, 0x62, 0x65, 0x61, 0x72, 0x6a, 0x61, 0x64, 0x61, 0x74, 0x3b, 0x6c, 0xe1, 0x76, 0x76, 0x61, 0x72, 0x64, 0x61, 0x74,
-0x3b, 0x53, 0x3b, 0x56, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x45, 0x6d, 0x70, 0x3b, 0x4b,
+0x61, 0x72, 0x3b, 0x6c, 0xe1, 0x76, 0x3b, 0x73, 0x6f, 0x74, 0x6e, 0x61, 0x62, 0x65, 0x61, 0x69, 0x76, 0x69, 0x3b, 0x76,
+0x75, 0x6f, 0x73, 0x73, 0xe1, 0x72, 0x67, 0x61, 0x3b, 0x6d, 0x61, 0x14b, 0x14b, 0x65, 0x62, 0xe1, 0x72, 0x67, 0x61, 0x3b,
+0x67, 0x61, 0x73, 0x6b, 0x61, 0x76, 0x61, 0x68, 0x6b, 0x6b, 0x75, 0x3b, 0x64, 0x75, 0x6f, 0x72, 0x61, 0x73, 0x64, 0x61,
+0x74, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x6a, 0x61, 0x64, 0x61, 0x74, 0x3b, 0x6c, 0xe1, 0x76, 0x76, 0x61, 0x72, 0x64, 0x61,
+0x74, 0x3b, 0x53, 0x3b, 0x56, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x61, 0x65, 0x6a, 0x6c,
+0x65, 0x67, 0x65, 0x3b, 0x6d, 0xe5, 0x61, 0x6e, 0x74, 0x61, 0x3b, 0x64, 0xe4, 0x6a, 0x73, 0x74, 0x61, 0x3b, 0x67, 0x61,
+0x73, 0x6b, 0x65, 0x76, 0x61, 0x68, 0x6b, 0x6f, 0x65, 0x3b, 0x64, 0xe5, 0x61, 0x72, 0x73, 0x74, 0x61, 0x3b, 0x62, 0x65,
+0x61, 0x72, 0x6a, 0x61, 0x64, 0x61, 0x68, 0x6b, 0x65, 0x3b, 0x6c, 0x61, 0x61, 0x76, 0x61, 0x64, 0x61, 0x68, 0x6b, 0x65,
+0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x47, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x45, 0x6d, 0x70, 0x3b, 0x4b,
0x69, 0x6e, 0x3b, 0x44, 0x68, 0x61, 0x3b, 0x54, 0x72, 0x75, 0x3b, 0x53, 0x70, 0x61, 0x3b, 0x52, 0x69, 0x6d, 0x3b, 0x4d,
0x61, 0x74, 0x3b, 0x4a, 0x69, 0x79, 0x61, 0x78, 0x20, 0x73, 0x6e, 0x67, 0x61, 0x79, 0x61, 0x6e, 0x3b, 0x74, 0x67, 0x4b,
0x69, 0x6e, 0x67, 0x61, 0x6c, 0x20, 0x6a, 0x69, 0x79, 0x61, 0x78, 0x20, 0x69, 0x79, 0x61, 0x78, 0x20, 0x73, 0x6e, 0x67,
@@ -3153,7 +3161,12 @@ static const ushort days_data[] = {
0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x70, 0x69, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b,
0x4a, 0x75, 0x6d, 0x61, 0x61, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c,
0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x6d,
-0x6f, 0x73, 0x69, 0x3b
+0x6f, 0x73, 0x69, 0x3b, 0x930, 0x92c, 0x93f, 0x3b, 0x938, 0x92e, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x3b, 0x92c, 0x941, 0x926, 0x3b,
+0x92c, 0x93f, 0x938, 0x925, 0x93f, 0x3b, 0x938, 0x941, 0x916, 0x941, 0x930, 0x3b, 0x938, 0x941, 0x928, 0x93f, 0x3b, 0x930, 0x92c, 0x93f,
+0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x92e, 0x92c, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x941,
+0x926, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x93f, 0x938, 0x925, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x941, 0x916, 0x941, 0x930, 0x92c,
+0x93e, 0x930, 0x3b, 0x938, 0x941, 0x928, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x930, 0x3b, 0x938, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941,
+0x3b, 0x92c, 0x93f, 0x3b, 0x938, 0x941, 0x3b, 0x938, 0x941, 0x3b
};
static const ushort am_data[] = {
@@ -3182,7 +3195,8 @@ static const ushort am_data[] = {
0x4f, 0x75, 0x6c, 0x75, 0x63, 0x68, 0x65, 0x6c, 0x6f, 0x52, 0x168, 0x42, 0x65, 0x65, 0x74, 0x1c1, 0x67, 0x6f, 0x61, 0x67,
0x61, 0x73, 0x190, 0x6e, 0x6b, 0x61, 0x6b, 0x25b, 0x6e, 0x79, 0xe1, 0x4d, 0x75, 0x6e, 0x6b, 0x79, 0x6f, 0x69, 0x63, 0x68,
0x65, 0x68, 0x65, 0x61, 0x76, 0x6f, 0x54, 0x61, 0x70, 0x61, 0x72, 0x61, 0x63, 0x68, 0x75, 0x41, 0x64, 0x64, 0x75, 0x68,
-0x61, 0x4f, 0x44, 0x5a, 0x64, 0x61, 0x74, 0x20, 0x61, 0x7a, 0x61, 0x6c, 0x6d, 0x61, 0x6b, 0x65, 0x6f
+0x61, 0x4f, 0x44, 0x5a, 0x64, 0x61, 0x74, 0x20, 0x61, 0x7a, 0x61, 0x6c, 0x6d, 0x61, 0x6b, 0x65, 0x6f, 0x92b, 0x941, 0x902,
+
};
static const ushort pm_data[] = {
@@ -3212,24 +3226,24 @@ static const ushort pm_data[] = {
0x55, 0x61, 0x6b, 0x61, 0x73, 0x75, 0x62, 0x61, 0x168, 0x47, 0x4b, 0x65, 0x6d, 0x6f, 0x1c3, 0x75, 0x69, 0x61, 0x73, 0x190,
0x6e, 0x64, 0xe1, 0x6d, 0xe2, 0x45, 0x69, 0x67, 0x75, 0x6c, 0x6f, 0x69, 0x63, 0x68, 0x61, 0x6d, 0x74, 0x68, 0x69, 0x45,
0x62, 0x6f, 0x6e, 0x67, 0x69, 0x41, 0x6c, 0x75, 0x75, 0x6c, 0x61, 0x4f, 0x54, 0x1e0c, 0x65, 0x66, 0x66, 0x69, 0x72, 0x20,
-0x61, 0x7a, 0x61, 0x6e, 0x79, 0x69, 0x61, 0x67, 0x68, 0x75, 0x6f
+0x61, 0x7a, 0x61, 0x6e, 0x79, 0x69, 0x61, 0x67, 0x68, 0x75, 0x6f, 0x92c, 0x947, 0x932, 0x93e, 0x938, 0x947
};
static const ushort currency_symbol_data[] = {
-0x42, 0x72, 0x4b, 0x73, 0x68, 0x46, 0x64, 0x6a, 0x4e, 0x66, 0x6b, 0x52, 0x4e, 0x24, 0x4c, 0x65, 0x6b, 0x1265, 0x122d, 0x631,
-0x2e, 0x633, 0x2e, 0x200f, 0x62f, 0x2e, 0x62c, 0x2e, 0x200f, 0x62f, 0x2e, 0x628, 0x2e, 0x200f, 0x62c, 0x2e, 0x645, 0x2e, 0x200f, 0x62f,
-0x2e, 0x639, 0x2e, 0x200f, 0x62f, 0x2e, 0x623, 0x2e, 0x200f, 0x62f, 0x2e, 0x643, 0x2e, 0x200f, 0x644, 0x2e, 0x644, 0x2e, 0x200f, 0x62f,
-0x2e, 0x644, 0x2e, 0x200f, 0x62f, 0x2e, 0x645, 0x2e, 0x200f, 0x631, 0x2e, 0x639, 0x2e, 0x200f, 0x631, 0x2e, 0x642, 0x2e, 0x200f, 0x644,
+0x42, 0x72, 0x4b, 0x73, 0x68, 0x46, 0x64, 0x6a, 0x4e, 0x66, 0x6b, 0x52, 0x4e, 0x24, 0x4c, 0x65, 0x6b, 0x1265, 0x122d, 0x62c,
+0x2e, 0x645, 0x2e, 0x200f, 0x62f, 0x2e, 0x62c, 0x2e, 0x200f, 0x62f, 0x2e, 0x628, 0x2e, 0x200f, 0x62f, 0x2e, 0x639, 0x2e, 0x200f, 0x62f,
+0x2e, 0x623, 0x2e, 0x200f, 0x62f, 0x2e, 0x643, 0x2e, 0x200f, 0x644, 0x2e, 0x644, 0x2e, 0x200f, 0x62f, 0x2e, 0x644, 0x2e, 0x200f, 0x62f,
+0x2e, 0x645, 0x2e, 0x200f, 0x631, 0x2e, 0x639, 0x2e, 0x200f, 0x631, 0x2e, 0x642, 0x2e, 0x200f, 0x631, 0x2e, 0x633, 0x2e, 0x200f, 0x644,
0x2e, 0x633, 0x2e, 0x200f, 0x62f, 0x2e, 0x62a, 0x2e, 0x200f, 0x62f, 0x2e, 0x625, 0x2e, 0x200f, 0x631, 0x2e, 0x64a, 0x2e, 0x200f, 0x564,
0x580, 0x2e, 0x99f, 0x995, 0x9be, 0x6d, 0x61, 0x6e, 0x2e, 0x43c, 0x430, 0x43d, 0x2e, 0x20ac, 0x9f3, 0x99f, 0x9be, 0x995, 0x9be, 0x4e,
0x75, 0x2e, 0x43b, 0x432, 0x2e, 0x4b, 0x17db, 0xffe5, 0x24, 0x4d, 0x4f, 0x50, 0x24, 0x53, 0x24, 0x4e, 0x54, 0x24, 0x6b, 0x6e,
0x4b, 0x10d, 0x6b, 0x72, 0x50, 0x52, 0x73, 0x4d, 0x55, 0x52, 0x73, 0x20a8, 0x20b1, 0xa3, 0x43, 0x46, 0x41, 0x42, 0x49, 0x46,
0x58, 0x41, 0x46, 0x46, 0x43, 0x46, 0x72, 0x43, 0x44, 0x44, 0x4a, 0x46, 0x47, 0x4e, 0x46, 0x46, 0x52, 0x43, 0x48, 0x46,
-0xab0, 0xac1, 0x47, 0x48, 0x20b5, 0x20a6, 0x20aa, 0x930, 0x941, 0x2e, 0x46, 0x74, 0x52, 0x70, 0x930, 0x941, 0x442, 0x4a3, 0x433, 0x2e,
+0xab0, 0xac1, 0x20a6, 0x47, 0x48, 0x20b5, 0x20aa, 0x930, 0x941, 0x2e, 0x46, 0x74, 0x52, 0x70, 0x930, 0x941, 0x442, 0x4a3, 0x433, 0x2e,
0x52, 0x46, 0x441, 0x43e, 0x43c, 0x20a9, 0x53, 0x59, 0xa3, 0x54, 0x4c, 0x20ad, 0x4c, 0x73, 0x46, 0x46, 0x43, 0x46, 0x41, 0x4c,
0x74, 0x52, 0x4d, 0xd30, 0xd42, 0x4e, 0x5a, 0x24, 0x20ae, 0x43, 0x4e, 0xa5, 0x928, 0x947, 0x930, 0x942, 0x60b, 0xfdfc, 0x7a, 0x142,
-0x4b, 0x7a, 0x52, 0x24, 0x4d, 0x54, 0x6e, 0xa30, 0xa41, 0x2e, 0x631, 0x52, 0x4f, 0x4e, 0x440, 0x443, 0x431, 0x2e, 0x20b4, 0x41a,
-0x41c, 0x2e, 0x434, 0x438, 0x43d, 0x2e, 0x4b, 0x4d, 0x64, 0x69, 0x6e, 0x2e, 0x55, 0x53, 0x24, 0x53, 0x4c, 0x20, 0x52, 0x65,
+0x52, 0x24, 0x4b, 0x7a, 0x4d, 0x54, 0x6e, 0xa30, 0xa41, 0x2e, 0x631, 0x52, 0x4f, 0x4e, 0x440, 0x443, 0x431, 0x2e, 0x20b4, 0x434,
+0x438, 0x43d, 0x2e, 0x41a, 0x41c, 0x2e, 0x4b, 0x4d, 0x64, 0x69, 0x6e, 0x2e, 0x55, 0x53, 0x24, 0x53, 0x4c, 0x20, 0x52, 0x65,
0x45, 0x53, 0x73, 0x68, 0x42, 0x73, 0x20a1, 0x52, 0x44, 0x24, 0x51, 0x4c, 0x43, 0x24, 0x42, 0x2f, 0x2e, 0x20b2, 0x53, 0x2f,
0x2e, 0x42, 0x73, 0x2e, 0x46, 0x2e, 0x54, 0x53, 0x68, 0xbb0, 0xbc2, 0x53, 0x4c, 0x52, 0x73, 0xc30, 0xc42, 0x2e, 0xe3f, 0x54,
0x24, 0x631, 0x648, 0x67e, 0x6d2, 0x441, 0x45e, 0x43c, 0x41, 0x66, 0x73, 0x6f, 0x2bf, 0x6d, 0x20ab, 0x783, 0x2e, 0x46, 0x47, 0x4e,
@@ -3241,56 +3255,56 @@ static const ushort currency_display_name_data[] = {
0x72, 0x72, 0x69, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x75, 0x69, 0x64, 0x2d, 0x41, 0x66, 0x72, 0x69,
0x6b, 0x61, 0x61, 0x6e, 0x73, 0x65, 0x20, 0x72, 0x61, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x61,
0x6d, 0x69, 0x62, 0x69, 0x65, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
-0x3b, 0x12e8, 0x12a2, 0x1275, 0x12ee, 0x1335, 0x12eb, 0x20, 0x1265, 0x122d, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x631, 0x64a, 0x627,
-0x644, 0x20, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x3b, 0x631,
-0x64a, 0x627, 0x644, 0x20, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x633, 0x639, 0x648, 0x62f, 0x64a,
-0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x633, 0x639, 0x648,
-0x62f, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20,
-0x62c, 0x632, 0x627, 0x626, 0x631, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x62c, 0x632, 0x627, 0x626, 0x631, 0x64a, 0x3b,
+0x3b, 0x12e8, 0x12a2, 0x1275, 0x12ee, 0x1335, 0x12eb, 0x20, 0x1265, 0x122d, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x62c, 0x646, 0x64a,
+0x647, 0x20, 0x645, 0x635, 0x631, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x645, 0x635, 0x631, 0x64a, 0x3b, 0x62c, 0x646, 0x64a,
+0x647, 0x20, 0x645, 0x635, 0x631, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x645, 0x635, 0x631, 0x64a, 0x3b, 0x62c, 0x646, 0x64a,
+0x647, 0x20, 0x645, 0x635, 0x631, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x645, 0x635, 0x631, 0x64a, 0x3b, 0x62c, 0x646, 0x64a,
+0x647, 0x20, 0x645, 0x635, 0x631, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x62c, 0x632, 0x627, 0x626, 0x631, 0x64a, 0x3b,
0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x62c, 0x632, 0x627, 0x626, 0x631, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x62c,
0x632, 0x627, 0x626, 0x631, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x62c, 0x632, 0x627, 0x626, 0x631, 0x64a, 0x3b, 0x62f,
0x64a, 0x646, 0x627, 0x631, 0x20, 0x62c, 0x632, 0x627, 0x626, 0x631, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x62c, 0x632,
-0x627, 0x626, 0x631, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x628, 0x62d, 0x631, 0x64a, 0x646, 0x64a, 0x3b, 0x62f, 0x64a,
+0x627, 0x626, 0x631, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x62c, 0x632, 0x627, 0x626, 0x631, 0x64a, 0x3b, 0x62f, 0x64a,
0x646, 0x627, 0x631, 0x20, 0x628, 0x62d, 0x631, 0x64a, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x628, 0x62d, 0x631,
0x64a, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x628, 0x62d, 0x631, 0x64a, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646,
0x627, 0x631, 0x20, 0x628, 0x62d, 0x631, 0x64a, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x628, 0x62d, 0x631, 0x64a,
-0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x628, 0x62d, 0x631, 0x64a, 0x646, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647,
-0x20, 0x645, 0x635, 0x631, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x645, 0x635, 0x631, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647,
-0x20, 0x645, 0x635, 0x631, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x645, 0x635, 0x631, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647,
-0x20, 0x645, 0x635, 0x631, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x645, 0x635, 0x631, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647,
-0x20, 0x645, 0x635, 0x631, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x639, 0x631, 0x627, 0x642, 0x64a, 0x3b, 0x62f, 0x64a,
-0x646, 0x627, 0x631, 0x20, 0x639, 0x631, 0x627, 0x642, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x639, 0x631, 0x627, 0x642,
-0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x639, 0x631, 0x627, 0x642, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20,
-0x639, 0x631, 0x627, 0x642, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x639, 0x631, 0x627, 0x642, 0x64a, 0x3b, 0x62f, 0x64a,
-0x646, 0x627, 0x631, 0x20, 0x639, 0x631, 0x627, 0x642, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x623, 0x631, 0x62f, 0x646,
-0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x623, 0x631, 0x62f, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20,
-0x623, 0x631, 0x62f, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x623, 0x631, 0x62f, 0x646, 0x64a, 0x3b, 0x62f, 0x64a,
-0x646, 0x627, 0x631, 0x20, 0x623, 0x631, 0x62f, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x623, 0x631, 0x62f, 0x646,
-0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x623, 0x631, 0x62f, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20,
-0x643, 0x648, 0x64a, 0x62a, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x643, 0x648, 0x64a, 0x62a, 0x64a, 0x3b, 0x62f, 0x64a,
-0x646, 0x627, 0x631, 0x20, 0x643, 0x648, 0x64a, 0x62a, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x643, 0x648, 0x64a, 0x62a,
-0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x643, 0x648, 0x64a, 0x62a, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20,
-0x643, 0x648, 0x64a, 0x62a, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x643, 0x648, 0x64a, 0x62a, 0x64a, 0x3b, 0x62c, 0x646,
-0x64a, 0x629, 0x20, 0x644, 0x628, 0x646, 0x627, 0x646, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x629, 0x20, 0x644, 0x628, 0x646, 0x627, 0x646,
-0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x629, 0x20, 0x644, 0x628, 0x646, 0x627, 0x646, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x629, 0x20, 0x644,
-0x628, 0x646, 0x627, 0x646, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x629, 0x20, 0x644, 0x628, 0x646, 0x627, 0x646, 0x64a, 0x3b, 0x62c, 0x646,
-0x64a, 0x629, 0x20, 0x644, 0x628, 0x646, 0x627, 0x646, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x629, 0x20, 0x644, 0x628, 0x646, 0x627, 0x646,
-0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x644, 0x64a, 0x628, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x644,
-0x64a, 0x628, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x644, 0x64a, 0x628, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631,
-0x20, 0x644, 0x64a, 0x628, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x644, 0x64a, 0x628, 0x64a, 0x3b, 0x62f, 0x64a, 0x646,
-0x627, 0x631, 0x20, 0x644, 0x64a, 0x628, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x644, 0x64a, 0x628, 0x64a, 0x3b, 0x62f,
-0x631, 0x647, 0x645, 0x20, 0x645, 0x63a, 0x631, 0x628, 0x64a, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x645, 0x63a, 0x631, 0x628, 0x64a,
-0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x645, 0x63a, 0x631, 0x628, 0x64a, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x645, 0x63a, 0x631,
-0x628, 0x64a, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x645, 0x63a, 0x631, 0x628, 0x64a, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x645,
-0x63a, 0x631, 0x628, 0x64a, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x645, 0x63a, 0x631, 0x628, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644,
-0x20, 0x639, 0x645, 0x627, 0x646, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x639, 0x645, 0x627, 0x646, 0x64a, 0x3b, 0x631, 0x64a,
-0x627, 0x644, 0x20, 0x639, 0x645, 0x627, 0x646, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x639, 0x645, 0x627, 0x646, 0x64a, 0x3b,
-0x631, 0x64a, 0x627, 0x644, 0x20, 0x639, 0x645, 0x627, 0x646, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x639, 0x645, 0x627, 0x646,
-0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x639, 0x645, 0x627, 0x646, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x642, 0x637,
-0x631, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x642, 0x637, 0x631, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x642, 0x637,
-0x631, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x642, 0x637, 0x631, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x642, 0x637,
-0x631, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x642, 0x637, 0x631, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x642, 0x637,
-0x631, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x64a, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
+0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x628, 0x62d, 0x631, 0x64a, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627,
+0x631, 0x20, 0x628, 0x62d, 0x631, 0x64a, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x639, 0x631, 0x627, 0x642, 0x64a,
+0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x639, 0x631, 0x627, 0x642, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x639,
+0x631, 0x627, 0x642, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x639, 0x631, 0x627, 0x642, 0x64a, 0x3b, 0x62f, 0x64a, 0x646,
+0x627, 0x631, 0x20, 0x639, 0x631, 0x627, 0x642, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x639, 0x631, 0x627, 0x642, 0x64a,
+0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x639, 0x631, 0x627, 0x642, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x623,
+0x631, 0x62f, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x623, 0x631, 0x62f, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646,
+0x627, 0x631, 0x20, 0x623, 0x631, 0x62f, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x623, 0x631, 0x62f, 0x646, 0x64a,
+0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x623, 0x631, 0x62f, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x623,
+0x631, 0x62f, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x623, 0x631, 0x62f, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646,
+0x627, 0x631, 0x20, 0x643, 0x648, 0x64a, 0x62a, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x643, 0x648, 0x64a, 0x62a, 0x64a,
+0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x643, 0x648, 0x64a, 0x62a, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x643,
+0x648, 0x64a, 0x62a, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x643, 0x648, 0x64a, 0x62a, 0x64a, 0x3b, 0x62f, 0x64a, 0x646,
+0x627, 0x631, 0x20, 0x643, 0x648, 0x64a, 0x62a, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x643, 0x648, 0x64a, 0x62a, 0x64a,
+0x3b, 0x62c, 0x646, 0x64a, 0x629, 0x20, 0x644, 0x628, 0x646, 0x627, 0x646, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x629, 0x20, 0x644, 0x628,
+0x646, 0x627, 0x646, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x629, 0x20, 0x644, 0x628, 0x646, 0x627, 0x646, 0x64a, 0x3b, 0x62c, 0x646, 0x64a,
+0x629, 0x20, 0x644, 0x628, 0x646, 0x627, 0x646, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x629, 0x20, 0x644, 0x628, 0x646, 0x627, 0x646, 0x64a,
+0x3b, 0x62c, 0x646, 0x64a, 0x629, 0x20, 0x644, 0x628, 0x646, 0x627, 0x646, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x629, 0x20, 0x644, 0x628,
+0x646, 0x627, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x644, 0x64a, 0x628, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627,
+0x631, 0x20, 0x644, 0x64a, 0x628, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x644, 0x64a, 0x628, 0x64a, 0x3b, 0x62f, 0x64a,
+0x646, 0x627, 0x631, 0x20, 0x644, 0x64a, 0x628, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x644, 0x64a, 0x628, 0x64a, 0x3b,
+0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x644, 0x64a, 0x628, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x644, 0x64a, 0x628,
+0x64a, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x645, 0x63a, 0x631, 0x628, 0x64a, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x645, 0x63a,
+0x631, 0x628, 0x64a, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x645, 0x63a, 0x631, 0x628, 0x64a, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20,
+0x645, 0x63a, 0x631, 0x628, 0x64a, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x645, 0x63a, 0x631, 0x628, 0x64a, 0x3b, 0x62f, 0x631, 0x647,
+0x645, 0x20, 0x645, 0x63a, 0x631, 0x628, 0x64a, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x645, 0x63a, 0x631, 0x628, 0x64a, 0x3b, 0x631,
+0x64a, 0x627, 0x644, 0x20, 0x639, 0x645, 0x627, 0x646, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x639, 0x645, 0x627, 0x646, 0x64a,
+0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x639, 0x645, 0x627, 0x646, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x639, 0x645, 0x627,
+0x646, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x639, 0x645, 0x627, 0x646, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x639,
+0x645, 0x627, 0x646, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x639, 0x645, 0x627, 0x646, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644,
+0x20, 0x642, 0x637, 0x631, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x642, 0x637, 0x631, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644,
+0x20, 0x642, 0x637, 0x631, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x642, 0x637, 0x631, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644,
+0x20, 0x642, 0x637, 0x631, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x642, 0x637, 0x631, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644,
+0x20, 0x642, 0x637, 0x631, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x3b, 0x631, 0x64a, 0x627,
+0x644, 0x20, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x3b, 0x631,
+0x64a, 0x627, 0x644, 0x20, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x633, 0x639, 0x648, 0x62f, 0x64a,
+0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x633, 0x639, 0x648,
+0x62f, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x64a, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x633, 0x648, 0x631, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x633, 0x648, 0x631, 0x64a,
0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x633, 0x648, 0x631, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x633, 0x648, 0x631, 0x64a,
0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x633, 0x648, 0x631, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x633, 0x648, 0x631, 0x64a,
@@ -3417,9 +3431,9 @@ static const ushort currency_display_name_data[] = {
0x53, 0x63, 0x68, 0x77, 0x65, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x6e, 0x3b, 0x395, 0x3c5,
0x3c1, 0x3ce, 0x3b, 0x3b, 0x3b5, 0x3c5, 0x3c1, 0x3ce, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b5, 0x3c5, 0x3c1, 0x3ce, 0x3b, 0x64, 0x61, 0x6e,
0x73, 0x6b, 0x69, 0x6e, 0x75, 0x74, 0x20, 0x6b, 0x6f, 0x72, 0x75, 0x75, 0x6e, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
-0x3b, 0x4b, 0x75, 0x257, 0x69, 0x6e, 0x20, 0x53, 0x65, 0x66, 0x61, 0x20, 0x6e, 0x61, 0x20, 0x41, 0x66, 0x69, 0x72, 0x6b,
-0x61, 0x20, 0x54, 0x61, 0x20, 0x59, 0x61, 0x6d, 0x6d, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x61, 0x69,
-0x72, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x61, 0x6d, 0x20, 0x6b, 0x69, 0x6e, 0x20, 0x53, 0x75, 0x64,
+0x3b, 0x4e, 0x61, 0x69, 0x72, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4b, 0x75, 0x257, 0x69, 0x6e, 0x20, 0x53,
+0x65, 0x66, 0x61, 0x20, 0x6e, 0x61, 0x20, 0x41, 0x66, 0x69, 0x72, 0x6b, 0x61, 0x20, 0x54, 0x61, 0x20, 0x59, 0x61, 0x6d,
+0x6d, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x61, 0x6d, 0x20, 0x6b, 0x69, 0x6e, 0x20, 0x53, 0x75, 0x64,
0x61, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x646, 0x64e, 0x64a, 0x652, 0x631, 0x64e, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
0x3b, 0x3b, 0x5e9, 0x5f4, 0x5d7, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x5e9, 0x5e7, 0x5dc, 0x5d9, 0x5dd, 0x20, 0x5d7, 0x5d3, 0x5e9,
0x5d9, 0x5dd, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x942, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
@@ -3452,12 +3466,12 @@ static const ushort currency_display_name_data[] = {
0x646, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x79, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69,
0x3b, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x79, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x3b, 0x3b, 0x7a, 0x142, 0x6f, 0x74,
0x65, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x65, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x79, 0x63, 0x68, 0x20, 0x70, 0x6f,
-0x6c, 0x73, 0x6b, 0x69, 0x63, 0x68, 0x3b, 0x3b, 0x43, 0x75, 0x61, 0x6e, 0x7a, 0x61, 0x20, 0x61, 0x6e, 0x67, 0x6f, 0x6c,
-0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x4b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x20, 0x61, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x6f,
-0x3b, 0x3b, 0x3b, 0x3b, 0x4b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x6f,
-0x73, 0x3b, 0x52, 0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x3b, 0x52,
-0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x65,
-0x61, 0x69, 0x73, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f, 0x73, 0x3b, 0x46, 0x72, 0x61, 0x6e,
+0x6c, 0x73, 0x6b, 0x69, 0x63, 0x68, 0x3b, 0x3b, 0x52, 0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65,
+0x69, 0x72, 0x6f, 0x3b, 0x3b, 0x52, 0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f,
+0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x65, 0x61, 0x69, 0x73, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f,
+0x73, 0x3b, 0x43, 0x75, 0x61, 0x6e, 0x7a, 0x61, 0x20, 0x61, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x4b,
+0x77, 0x61, 0x6e, 0x7a, 0x61, 0x20, 0x61, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x4b, 0x77,
+0x61, 0x6e, 0x7a, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x46, 0x72, 0x61, 0x6e,
0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x6f,
0x20, 0x43, 0x46, 0x41, 0x20, 0x64, 0x65, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x72, 0x61,
0x6e, 0x63, 0x6f, 0x73, 0x20, 0x43, 0x46, 0x41, 0x20, 0x64, 0x65, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x4d, 0x65,
@@ -3466,11 +3480,11 @@ static const ushort currency_display_name_data[] = {
0x75, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x65, 0x73, 0x20, 0x64, 0x65, 0x20, 0x4d,
0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x71, 0x75, 0x65, 0x3b, 0xa30, 0xa41, 0xa2a, 0xa3f, 0xa2f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
0x3b, 0x3b, 0x631, 0x648, 0x67e, 0x626, 0x6cc, 0x6c1, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63,
-0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x6c, 0x65, 0x75, 0x20, 0x6d,
-0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, 0x73, 0x63, 0x3b, 0x3b, 0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x20, 0x6d, 0x6f,
-0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x20, 0x6d, 0x6f, 0x6c, 0x64,
-0x6f, 0x76, 0x65, 0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x6c, 0x65, 0x75, 0x3b, 0x3b, 0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x3b,
-0x3b, 0x6c, 0x65, 0x69, 0x3b, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, 0x443, 0x431, 0x43b,
+0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x6c, 0x65, 0x75, 0x3b, 0x3b,
+0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x3b, 0x6c, 0x65, 0x75, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f,
+0x76, 0x65, 0x6e, 0x65, 0x73, 0x63, 0x3b, 0x3b, 0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76,
+0x65, 0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e,
+0x65, 0x219, 0x74, 0x69, 0x3b, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, 0x443, 0x431, 0x43b,
0x44c, 0x3b, 0x3b, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44c, 0x3b,
0x3b, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44f, 0x3b, 0x420, 0x43e,
0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x435, 0x439, 0x3b, 0x420, 0x43e, 0x441, 0x441,
@@ -3478,21 +3492,21 @@ static const ushort currency_display_name_data[] = {
0x441, 0x43a, 0x438, 0x439, 0x20, 0x43b, 0x435, 0x439, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x423, 0x43a, 0x440, 0x430, 0x438,
0x43d, 0x441, 0x43a, 0x430, 0x44f, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x430, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x66,
0x61, 0x72, 0xe2, 0x6e, 0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x3b,
-0x3b, 0x3b, 0x3b, 0x3b, 0x41a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x430, 0x20, 0x41c, 0x430,
-0x440, 0x43a, 0x430, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433,
-0x43e, 0x432, 0x430, 0x447, 0x43a, 0x430, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x430,
-0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440,
-0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x435, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438,
-0x43b, 0x43d, 0x435, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435,
-0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x438, 0x445, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x430,
-0x431, 0x438, 0x43b, 0x43d, 0x438, 0x445, 0x20, 0x43c, 0x430, 0x440, 0x430, 0x43a, 0x430, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441,
-0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x438, 0x445, 0x20, 0x43a, 0x43e, 0x43d,
-0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x438, 0x445, 0x20, 0x43c, 0x430, 0x440, 0x430, 0x43a, 0x430, 0x3b, 0x45,
-0x76, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x76, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x76, 0x72, 0x61, 0x3b, 0x65, 0x76, 0x72, 0x61,
-0x3b, 0x65, 0x76, 0x72, 0x61, 0x3b, 0x421, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x3b, 0x3b,
-0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x3b, 0x3b, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x430,
-0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x430, 0x3b, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x434, 0x438, 0x43d, 0x430,
-0x440, 0x430, 0x3b, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x438, 0x3b, 0x415, 0x432, 0x440,
+0x3b, 0x3b, 0x3b, 0x3b, 0x421, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x3b, 0x3b, 0x441, 0x440,
+0x43f, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x3b, 0x3b, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x430, 0x20, 0x434,
+0x438, 0x43d, 0x430, 0x440, 0x430, 0x3b, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x430,
+0x3b, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x438, 0x3b, 0x41a, 0x43e, 0x43d, 0x432, 0x435,
+0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x430, 0x20, 0x41c, 0x430, 0x440, 0x43a, 0x430, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430,
+0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x430, 0x20, 0x43a, 0x43e,
+0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x3b, 0x3b, 0x431,
+0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x435,
+0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x435, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x3b,
+0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a,
+0x438, 0x445, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x430, 0x431, 0x438, 0x43b, 0x43d, 0x438, 0x445, 0x20, 0x43c, 0x430,
+0x440, 0x430, 0x43a, 0x430, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433,
+0x43e, 0x432, 0x430, 0x447, 0x43a, 0x438, 0x445, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d,
+0x438, 0x445, 0x20, 0x43c, 0x430, 0x440, 0x430, 0x43a, 0x430, 0x3b, 0x45, 0x76, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x76, 0x72, 0x6f,
+0x3b, 0x3b, 0x65, 0x76, 0x72, 0x61, 0x3b, 0x65, 0x76, 0x72, 0x61, 0x3b, 0x65, 0x76, 0x72, 0x61, 0x3b, 0x415, 0x432, 0x440,
0x43e, 0x3b, 0x3b, 0x435, 0x432, 0x440, 0x43e, 0x3b, 0x3b, 0x435, 0x432, 0x440, 0x430, 0x3b, 0x435, 0x432, 0x440, 0x430, 0x3b, 0x435,
0x432, 0x440, 0x430, 0x3b, 0x42, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x2d, 0x48, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f,
0x76, 0x61, 0x10d, 0x6b, 0x61, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x61, 0x20,
@@ -3564,8 +3578,8 @@ static const ushort currency_display_name_data[] = {
0x76, 0x61, 0x72, 0x20, 0x66, 0x75, 0x65, 0x72, 0x74, 0x65, 0x20, 0x76, 0x65, 0x6e, 0x65, 0x7a, 0x6f, 0x6c, 0x61, 0x6e,
0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x62, 0x6f, 0x6c, 0xed, 0x76, 0x61, 0x72, 0x65, 0x73, 0x20, 0x66, 0x75, 0x65, 0x72, 0x74,
0x65, 0x73, 0x20, 0x76, 0x65, 0x6e, 0x65, 0x7a, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69,
-0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73,
-0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b,
+0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
+0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b,
0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x61, 0x3b, 0x3b,
0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x76, 0x65, 0x6e,
0x73, 0x6b, 0x61, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x6f, 0x72, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72,
@@ -3578,8 +3592,8 @@ static const ushort currency_display_name_data[] = {
0xfc, 0x72, 0x6b, 0x20, 0x4c, 0x69, 0x72, 0x61, 0x73, 0x131, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x423, 0x43a, 0x440,
0x430, 0x457, 0x43d, 0x441, 0x44c, 0x43a, 0x430, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44f, 0x3b, 0x3b, 0x433, 0x440, 0x438, 0x432,
0x43d, 0x44f, 0x3b, 0x3b, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x456, 0x3b, 0x433, 0x440, 0x438, 0x432, 0x435, 0x43d, 0x44c, 0x3b, 0x433,
-0x440, 0x438, 0x432, 0x43d, 0x456, 0x3b, 0x627, 0x646, 0x688, 0x6cc, 0x646, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x3b, 0x3b,
-0x3b, 0x3b, 0x3b, 0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x3b,
+0x440, 0x438, 0x432, 0x43d, 0x456, 0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1,
+0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x627, 0x646, 0x688, 0x6cc, 0x646, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x3b,
0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x20, 0x441, 0x45e, 0x43c, 0x3b,
0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cc, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4f,
0x2bf, 0x7a, 0x62, 0x65, 0x6b, 0x69, 0x73, 0x74, 0x6f, 0x6e, 0x20, 0x73, 0x6f, 0x2bf, 0x6d, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
@@ -3596,9 +3610,9 @@ static const ushort currency_display_name_data[] = {
0x61, 0x6c, 0x61, 0x77, 0x69, 0x61, 0x6e, 0x20, 0x4b, 0x77, 0x61, 0x63, 0x68, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
0x3b, 0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x3b, 0x3b, 0x3b,
0x3b, 0x3b, 0x3b, 0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x3b,
-0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x65, 0x75,
-0x72, 0x6f, 0x3b, 0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b,
-0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x69, 0x6c, 0x61, 0x20, 0x54, 0x61, 0x69, 0x77, 0x61, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
+0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
+0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x65,
+0x75, 0x72, 0x6f, 0x3b, 0x70, 0x69, 0x6c, 0x61, 0x20, 0x54, 0x61, 0x69, 0x77, 0x61, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
0x3b, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b,
0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x62, 0x75, 0x75, 0x257, 0x75, 0x20, 0x53, 0x65, 0x65, 0x66, 0x61, 0x61, 0x20,
0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x43, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x20,
@@ -3629,12 +3643,13 @@ static const ushort currency_display_name_data[] = {
0x69, 0x72, 0x69, 0x6e, 0x6a, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x64, 0x68, 0x61,
0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x41, 0x6e, 0x67, 0x6f, 0x27, 0x6f, 0x74, 0x6f, 0x6c, 0x20,
-0x6c, 0x6f, 0x6b, 0x27, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x41, 0x6e, 0x67,
-0x6f, 0x27, 0x6f, 0x74, 0x6f, 0x6c, 0x20, 0x6c, 0x6f, 0x6b, 0x27, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b,
+0x6c, 0x6f, 0x6b, 0x27, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x41, 0x6e,
+0x67, 0x6f, 0x27, 0x6f, 0x74, 0x6f, 0x6c, 0x20, 0x6c, 0x6f, 0x6b, 0x27, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b,
0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x43, 0x46, 0x41, 0x20, 0x46, 0x72, 0x61, 0x14b, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f,
0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x4b,
0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x65, 0x72, 0x68, 0x65, 0x6d, 0x20, 0x55, 0x6d,
-0x65, 0x1e5b, 0x1e5b, 0x75, 0x6b, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b
+0x65, 0x1e5b, 0x1e5b, 0x75, 0x6b, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x930, 0x93e, 0x902, 0x3b, 0x3b, 0x3b, 0x3b,
+0x3b, 0x3b, 0x3b
};
static const ushort currency_format_data[] = {
@@ -3646,15 +3661,15 @@ static const ushort currency_format_data[] = {
};
static const ushort endonyms_data[] = {
0x4f, 0x72, 0x6f, 0x6d, 0x6f, 0x6f, 0x49, 0x74, 0x6f, 0x6f, 0x70, 0x68, 0x69, 0x79, 0x61, 0x61, 0x4b, 0x65, 0x65, 0x6e,
-0x69, 0x79, 0x61, 0x61, 0x51, 0x61, 0x66, 0x61, 0x72, 0x59, 0x61, 0x62, 0x75, 0x75, 0x74, 0x69, 0x45, 0x72, 0x65, 0x74,
-0x72, 0x69, 0x61, 0x4f, 0x74, 0x6f, 0x62, 0x62, 0x69, 0x61, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x61, 0x6e, 0x73, 0x53,
+0x69, 0x79, 0x61, 0x61, 0x51, 0x61, 0x66, 0x61, 0x72, 0x4f, 0x74, 0x6f, 0x62, 0x62, 0x69, 0x61, 0x59, 0x61, 0x62, 0x75,
+0x75, 0x74, 0x69, 0x45, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x61, 0x6e, 0x73, 0x53,
0x75, 0x69, 0x64, 0x2d, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0xeb, 0x73, 0x68, 0x71,
0x69, 0x70, 0x65, 0x53, 0x68, 0x71, 0x69, 0x70, 0xeb, 0x72, 0x69, 0x61, 0x12a0, 0x121b, 0x122d, 0x129b, 0x12a2, 0x1275, 0x12ee, 0x1335,
-0x12eb, 0x627, 0x644, 0x639, 0x631, 0x628, 0x64a, 0x629, 0x627, 0x644, 0x645, 0x645, 0x644, 0x643, 0x629, 0x20, 0x627, 0x644, 0x639, 0x631,
-0x628, 0x64a, 0x629, 0x20, 0x627, 0x644, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x629, 0x627, 0x644, 0x62c, 0x632, 0x627, 0x626, 0x631, 0x627,
-0x644, 0x628, 0x62d, 0x631, 0x64a, 0x646, 0x645, 0x635, 0x631, 0x627, 0x644, 0x639, 0x631, 0x627, 0x642, 0x627, 0x644, 0x623, 0x631, 0x62f,
-0x646, 0x627, 0x644, 0x643, 0x648, 0x64a, 0x62a, 0x644, 0x628, 0x646, 0x627, 0x646, 0x644, 0x64a, 0x628, 0x64a, 0x627, 0x627, 0x644, 0x645,
-0x63a, 0x631, 0x628, 0x639, 0x64f, 0x645, 0x627, 0x646, 0x642, 0x637, 0x631, 0x627, 0x644, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x633, 0x648,
+0x12eb, 0x627, 0x644, 0x639, 0x631, 0x628, 0x64a, 0x629, 0x645, 0x635, 0x631, 0x627, 0x644, 0x62c, 0x632, 0x627, 0x626, 0x631, 0x627, 0x644,
+0x628, 0x62d, 0x631, 0x64a, 0x646, 0x627, 0x644, 0x639, 0x631, 0x627, 0x642, 0x627, 0x644, 0x623, 0x631, 0x62f, 0x646, 0x627, 0x644, 0x643,
+0x648, 0x64a, 0x62a, 0x644, 0x628, 0x646, 0x627, 0x646, 0x644, 0x64a, 0x628, 0x64a, 0x627, 0x627, 0x644, 0x645, 0x63a, 0x631, 0x628, 0x639,
+0x64f, 0x645, 0x627, 0x646, 0x642, 0x637, 0x631, 0x627, 0x644, 0x645, 0x645, 0x644, 0x643, 0x629, 0x20, 0x627, 0x644, 0x639, 0x631, 0x628,
+0x64a, 0x629, 0x20, 0x627, 0x644, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x629, 0x627, 0x644, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x633, 0x648,
0x631, 0x64a, 0x627, 0x62a, 0x648, 0x646, 0x633, 0x627, 0x644, 0x627, 0x645, 0x627, 0x631, 0x627, 0x62a, 0x20, 0x627, 0x644, 0x639, 0x631,
0x628, 0x64a, 0x629, 0x20, 0x627, 0x644, 0x645, 0x62a, 0x62d, 0x62f, 0x629, 0x627, 0x644, 0x64a, 0x645, 0x646, 0x540, 0x561, 0x575, 0x565,
0x580, 0x567, 0x576, 0x540, 0x561, 0x575, 0x561, 0x57d, 0x57f, 0x561, 0x576, 0x56b, 0x20, 0x540, 0x561, 0x576, 0x580, 0x561, 0x57a, 0x565,
@@ -3722,8 +3737,8 @@ static const ushort endonyms_data[] = {
0x68, 0x77, 0x65, 0x69, 0x7a, 0x395, 0x3bb, 0x3bb, 0x3b7, 0x3bd, 0x3b9, 0x3ba, 0x3ac, 0x395, 0x3bb, 0x3bb, 0x3ac, 0x3b4, 0x3b1, 0x39a,
0x3cd, 0x3c0, 0x3c1, 0x3bf, 0x3c2, 0x6b, 0x61, 0x6c, 0x61, 0x61, 0x6c, 0x6c, 0x69, 0x73, 0x75, 0x74, 0x4b, 0x61, 0x6c, 0x61,
0x61, 0x6c, 0x6c, 0x69, 0x74, 0x20, 0x4e, 0x75, 0x6e, 0x61, 0x61, 0x74, 0xa97, 0xac1, 0xa9c, 0xab0, 0xabe, 0xaa4, 0xac0, 0xaad,
-0xabe, 0xab0, 0xaa4, 0x48, 0x61, 0x75, 0x73, 0x61, 0x47, 0x61, 0x6e, 0x61, 0x4e, 0x69, 0x6a, 0x61, 0x72, 0x4e, 0x61, 0x6a,
-0x65, 0x72, 0x69, 0x79, 0x61, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x5e2, 0x5d1, 0x5e8, 0x5d9, 0x5ea, 0x5d9, 0x5e9, 0x5e8, 0x5d0, 0x5dc,
+0xabe, 0xab0, 0xaa4, 0x48, 0x61, 0x75, 0x73, 0x61, 0x4e, 0x61, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x47, 0x61, 0x6e, 0x61,
+0x4e, 0x69, 0x6a, 0x61, 0x72, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x5e2, 0x5d1, 0x5e8, 0x5d9, 0x5ea, 0x5d9, 0x5e9, 0x5e8, 0x5d0, 0x5dc,
0x939, 0x93f, 0x928, 0x94d, 0x926, 0x940, 0x92d, 0x93e, 0x930, 0x924, 0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x4d, 0x61, 0x67, 0x79,
0x61, 0x72, 0x6f, 0x72, 0x73, 0x7a, 0xe1, 0x67, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0xcd, 0x73, 0x6c, 0x61,
0x6e, 0x64, 0x42, 0x61, 0x68, 0x61, 0x73, 0x61, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61, 0x49, 0x6e,
@@ -3746,22 +3761,22 @@ static const ushort endonyms_data[] = {
0xe5, 0x6c, 0x4e, 0x6f, 0x72, 0x67, 0x65, 0x6f, 0x63, 0x63, 0x69, 0x74, 0x61, 0x6e, 0x46, 0x72, 0x61, 0x6e, 0xe7, 0x61,
0xb13, 0xb21, 0xb3c, 0xb3f, 0xb06, 0xb2d, 0xb3e, 0xb30, 0xb24, 0x67e, 0x69a, 0x62a, 0x648, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x633, 0x62a,
0x627, 0x646, 0x641, 0x627, 0x631, 0x633, 0x6cc, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x62f, 0x631, 0x6cc, 0x70, 0x6f, 0x6c, 0x73, 0x6b,
-0x69, 0x50, 0x6f, 0x6c, 0x73, 0x6b, 0x61, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xea, 0x73, 0x20, 0x65, 0x75, 0x72,
-0x6f, 0x70, 0x65, 0x75, 0x50, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x61, 0x6c, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xea,
-0x73, 0x41, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xea, 0x73, 0x20, 0x64, 0x6f, 0x20,
-0x42, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x42, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x47, 0x75, 0x69, 0x6e, 0xe9, 0x20, 0x42, 0x69,
-0x73, 0x73, 0x61, 0x75, 0x4d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x71, 0x75, 0x65, 0xa2a, 0xa70, 0xa1c, 0xa3e, 0xa2c, 0xa40,
+0x69, 0x50, 0x6f, 0x6c, 0x73, 0x6b, 0x61, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xea, 0x73, 0x20, 0x64, 0x6f, 0x20,
+0x42, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x42, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xea,
+0x73, 0x41, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x47, 0x75, 0x69, 0x6e, 0xe9, 0x20, 0x42, 0x69, 0x73, 0x73, 0x61, 0x75, 0x4d,
+0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x71, 0x75, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xea, 0x73, 0x20, 0x65,
+0x75, 0x72, 0x6f, 0x70, 0x65, 0x75, 0x50, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x61, 0x6c, 0xa2a, 0xa70, 0xa1c, 0xa3e, 0xa2c, 0xa40,
0xa2d, 0xa3e, 0xa30, 0xa24, 0x67e, 0x646, 0x62c, 0x627, 0x628, 0x67e, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x72, 0x75, 0x6d, 0x61, 0x6e,
-0x74, 0x73, 0x63, 0x68, 0x53, 0x76, 0x69, 0x7a, 0x72, 0x61, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x103, 0x52, 0x65, 0x70, 0x75,
-0x62, 0x6c, 0x69, 0x63, 0x61, 0x20, 0x4d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x61, 0x52, 0x6f, 0x6d, 0xe2, 0x6e, 0x69, 0x61,
+0x74, 0x73, 0x63, 0x68, 0x53, 0x76, 0x69, 0x7a, 0x72, 0x61, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x103, 0x52, 0x6f, 0x6d, 0xe2,
+0x6e, 0x69, 0x61, 0x52, 0x65, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x20, 0x4d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x61,
0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x439, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x44f, 0x41c, 0x43e, 0x43b, 0x434, 0x43e, 0x432, 0x430,
0x423, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x430, 0x53, 0xe4, 0x6e, 0x67, 0xf6, 0x4b, 0xf6, 0x64, 0xf6, 0x72, 0xf6, 0x73, 0xea,
0x73, 0x65, 0x20, 0x74, 0xee, 0x20, 0x42, 0xea, 0x61, 0x66, 0x72, 0xee, 0x6b, 0x61, 0x938, 0x902, 0x938, 0x94d, 0x915, 0x943,
0x924, 0x20, 0x92d, 0x93e, 0x937, 0x93e, 0x92d, 0x93e, 0x930, 0x924, 0x92e, 0x94d, 0x421, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x421, 0x440,
-0x431, 0x438, 0x458, 0x430, 0x20, 0x438, 0x20, 0x426, 0x440, 0x43d, 0x430, 0x20, 0x413, 0x43e, 0x440, 0x430, 0x441, 0x440, 0x43f, 0x441,
-0x43a, 0x438, 0x411, 0x43e, 0x441, 0x43d, 0x430, 0x20, 0x438, 0x20, 0x425, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x438, 0x43d,
-0x430, 0x53, 0x72, 0x70, 0x73, 0x6b, 0x69, 0x43, 0x72, 0x6e, 0x61, 0x20, 0x47, 0x6f, 0x72, 0x61, 0x421, 0x440, 0x431, 0x438,
-0x458, 0x430, 0x426, 0x440, 0x43d, 0x430, 0x20, 0x413, 0x43e, 0x440, 0x430, 0x42, 0x6f, 0x73, 0x6e, 0x61, 0x20, 0x69, 0x20, 0x48,
+0x431, 0x438, 0x458, 0x430, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x411, 0x43e, 0x441, 0x43d, 0x430, 0x20, 0x438, 0x20, 0x425, 0x435,
+0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x438, 0x43d, 0x430, 0x421, 0x440, 0x431, 0x438, 0x458, 0x430, 0x20, 0x438, 0x20, 0x426, 0x440,
+0x43d, 0x430, 0x20, 0x413, 0x43e, 0x440, 0x430, 0x53, 0x72, 0x70, 0x73, 0x6b, 0x69, 0x43, 0x72, 0x6e, 0x61, 0x20, 0x47, 0x6f,
+0x72, 0x61, 0x426, 0x440, 0x43d, 0x430, 0x20, 0x413, 0x43e, 0x440, 0x430, 0x42, 0x6f, 0x73, 0x6e, 0x61, 0x20, 0x69, 0x20, 0x48,
0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x69, 0x6e, 0x61, 0x53, 0x72, 0x62, 0x69, 0x6a, 0x61, 0x20, 0x69, 0x20, 0x43,
0x72, 0x6e, 0x61, 0x20, 0x47, 0x6f, 0x72, 0x61, 0x53, 0x72, 0x62, 0x69, 0x6a, 0x61, 0x53, 0x72, 0x70, 0x73, 0x6b, 0x6f,
0x68, 0x72, 0x76, 0x61, 0x74, 0x73, 0x6b, 0x69, 0x53, 0x65, 0x73, 0x6f, 0x74, 0x68, 0x6f, 0x53, 0x65, 0x74, 0x73, 0x77,
@@ -3784,8 +3799,8 @@ static const ushort endonyms_data[] = {
0x75, 0x61, 0x79, 0x56, 0x65, 0x6e, 0x65, 0x7a, 0x75, 0x65, 0x6c, 0x61, 0x65, 0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, 0x20,
0x6c, 0x61, 0x74, 0x69, 0x6e, 0x6f, 0x61, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x4c, 0x61, 0x74, 0x69, 0x6e,
0x6f, 0x61, 0x6d, 0xe9, 0x72, 0x69, 0x63, 0x61, 0x20, 0x79, 0x20, 0x65, 0x6c, 0x20, 0x43, 0x61, 0x72, 0x69, 0x62, 0x65,
-0x4b, 0x69, 0x73, 0x77, 0x61, 0x68, 0x69, 0x6c, 0x69, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e,
-0x69, 0x61, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0x53, 0x76, 0x65, 0x72, 0x69, 0x67, 0x65, 0x46, 0x69, 0x6e, 0x6c,
+0x4b, 0x69, 0x73, 0x77, 0x61, 0x68, 0x69, 0x6c, 0x69, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x4b, 0x65, 0x6e,
+0x79, 0x61, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0x53, 0x76, 0x65, 0x72, 0x69, 0x67, 0x65, 0x46, 0x69, 0x6e, 0x6c,
0x61, 0x6e, 0x64, 0x54, 0x61, 0x67, 0x61, 0x6c, 0x6f, 0x67, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0xba4,
0xbae, 0xbbf, 0xbb4, 0xbcd, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0xbbe, 0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8, 0x422, 0x430, 0x442,
0x430, 0x440, 0xc24, 0xc46, 0xc32, 0xc41, 0xc17, 0xc41, 0xc2d, 0xc3e, 0xc30, 0xc24, 0x20, 0xc26, 0xc47, 0xc36, 0xc02, 0xe44, 0xe17, 0xe22,
@@ -3793,8 +3808,8 @@ static const ushort endonyms_data[] = {
0xf0b, 0x1275, 0x130d, 0x122d, 0x129b, 0x12a4, 0x122d, 0x1275, 0x122b, 0x6c, 0x65, 0x61, 0x20, 0x66, 0x61, 0x6b, 0x61, 0x74, 0x6f, 0x6e,
0x67, 0x61, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x58, 0x69, 0x74, 0x73, 0x6f, 0x6e, 0x67, 0x61, 0x54, 0xfc, 0x72, 0x6b, 0xe7,
0x65, 0x54, 0xfc, 0x72, 0x6b, 0x69, 0x79, 0x65, 0x443, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x441, 0x44c, 0x43a, 0x430, 0x423, 0x43a,
-0x440, 0x430, 0x457, 0x43d, 0x430, 0x627, 0x631, 0x62f, 0x648, 0x628, 0x6be, 0x627, 0x631, 0x62a, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627,
-0x646, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x627, 0x6c9, 0x632, 0x628,
+0x440, 0x430, 0x457, 0x43d, 0x430, 0x627, 0x631, 0x62f, 0x648, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x628, 0x6be, 0x627, 0x631,
+0x62a, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x627, 0x6c9, 0x632, 0x628,
0x6d0, 0x6a9, 0x6f, 0x27, 0x7a, 0x62, 0x65, 0x6b, 0x63, 0x68, 0x61, 0x4f, 0x2bf, 0x7a, 0x62, 0x65, 0x6b, 0x69, 0x73, 0x74,
0x6f, 0x6e, 0x54, 0x69, 0x1ebf, 0x6e, 0x67, 0x20, 0x56, 0x69, 0x1ec7, 0x74, 0x56, 0x69, 0x1ec7, 0x74, 0x20, 0x4e, 0x61, 0x6d,
0x43, 0x79, 0x6d, 0x72, 0x61, 0x65, 0x67, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x20, 0x46, 0x61, 0x77, 0x72, 0x69,
@@ -3816,8 +3831,8 @@ static const ushort endonyms_data[] = {
0x63, 0x68, 0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0xa188, 0xa320, 0xa259, 0xa34f, 0xa1e9, 0x50, 0x6c, 0x61, 0x74, 0x74, 0x64,
0xfc, 0xfc, 0x74, 0x73, 0x63, 0x68, 0x44, 0xfc, 0xfc, 0x74, 0x73, 0x63, 0x68, 0x6c, 0x61, 0x6e, 0x64, 0x69, 0x73, 0x69,
0x4e, 0x64, 0x65, 0x62, 0x65, 0x6c, 0x65, 0x53, 0x65, 0x73, 0x6f, 0x74, 0x68, 0x6f, 0x20, 0x73, 0x61, 0x20, 0x4c, 0x65,
-0x62, 0x6f, 0x61, 0x64, 0x61, 0x76, 0x76, 0x69, 0x73, 0xe1, 0x6d, 0x65, 0x67, 0x69, 0x65, 0x6c, 0x6c, 0x61, 0x53, 0x75,
-0x6f, 0x70, 0x6d, 0x61, 0x4e, 0x6f, 0x72, 0x67, 0x61, 0x45, 0x6b, 0x65, 0x67, 0x75, 0x73, 0x69, 0x69, 0x4b, 0x69, 0x74,
+0x62, 0x6f, 0x61, 0x64, 0x61, 0x76, 0x76, 0x69, 0x73, 0xe1, 0x6d, 0x65, 0x67, 0x69, 0x65, 0x6c, 0x6c, 0x61, 0x4e, 0x6f,
+0x72, 0x67, 0x61, 0x53, 0x75, 0x6f, 0x70, 0x6d, 0x61, 0x45, 0x6b, 0x65, 0x67, 0x75, 0x73, 0x69, 0x69, 0x4b, 0x69, 0x74,
0x61, 0x69, 0x74, 0x61, 0x50, 0x75, 0x6c, 0x61, 0x61, 0x72, 0x53, 0x65, 0x6e, 0x65, 0x67, 0x61, 0x61, 0x6c, 0x47, 0x69,
0x6b, 0x75, 0x79, 0x75, 0x4b, 0x69, 0x73, 0x61, 0x6d, 0x70, 0x75, 0x72, 0x73, 0x65, 0x6e, 0x61, 0x4b, 0x69, 0x68, 0x6f,
0x72, 0x6f, 0x6d, 0x62, 0x6f, 0x74, 0x61, 0x6d, 0x61, 0x7a, 0x69, 0x67, 0x68, 0x74, 0x6c, 0x6d, 0x263, 0x72, 0x69, 0x62,
@@ -4058,6 +4073,7 @@ static const char language_name_list[] =
"Central Morocco Tamazight\0"
"Koyraboro Senni\0"
"Shambala\0"
+"Bodo\0"
;
static const quint16 language_name_index[] = {
@@ -4276,6 +4292,7 @@ static const quint16 language_name_index[] = {
1652, // Central Morocco Tamazight
1678, // Koyraboro Senni
1694, // Shambala
+ 1703, // Bodo
};
static const char script_name_list[] =
@@ -4289,6 +4306,31 @@ static const char script_name_list[] =
"Latin\0"
"Mongolian\0"
"Tifinagh\0"
+"Armenian\0"
+"Bengali\0"
+"Cherokee\0"
+"Devanagari\0"
+"Ethiopic\0"
+"Georgian\0"
+"Greek\0"
+"Gujarati\0"
+"Hebrew\0"
+"Japanese\0"
+"Khmer\0"
+"Kannada\0"
+"Korean\0"
+"Lao\0"
+"Malayalam\0"
+"Myanmar\0"
+"Oriya\0"
+"Tamil\0"
+"Telugu\0"
+"Thaana\0"
+"Thai\0"
+"Tibetan\0"
+"Sinhala\0"
+"Syriac\0"
+"Yi\0"
;
static const quint16 script_name_index[] = {
@@ -4302,6 +4344,31 @@ static const quint16 script_name_index[] = {
72, // Latin
78, // Mongolian
88, // Tifinagh
+ 97, // Armenian
+ 106, // Bengali
+ 114, // Cherokee
+ 123, // Devanagari
+ 134, // Ethiopic
+ 143, // Georgian
+ 152, // Greek
+ 158, // Gujarati
+ 167, // Hebrew
+ 174, // Japanese
+ 183, // Khmer
+ 189, // Kannada
+ 197, // Korean
+ 204, // Lao
+ 208, // Malayalam
+ 218, // Myanmar
+ 226, // Oriya
+ 232, // Tamil
+ 238, // Telugu
+ 245, // Thaana
+ 252, // Thai
+ 257, // Tibetan
+ 265, // Sinhala
+ 273, // Syriac
+ 280, // Yi
};
static const char country_name_list[] =
@@ -5020,10 +5087,11 @@ static const unsigned char language_code_list[] =
"tzm" // Central Morocco Tamazight
"ses" // Koyraboro Senni
"ksb" // Shambala
+"brx" // Bodo
;
static const unsigned char script_code_list[] =
-"\0\0\0\0" // AnyScript
+"Zzzz" // AnyScript
"Arab" // Arabic
"Cyrl" // Cyrillic
"Dsrt" // Deseret
@@ -5033,9 +5101,34 @@ static const unsigned char script_code_list[] =
"Latn" // Latin
"Mong" // Mongolian
"Tfng" // Tifinagh
+"Armn" // Armenian
+"Beng" // Bengali
+"Cher" // Cherokee
+"Deva" // Devanagari
+"Ethi" // Ethiopic
+"Geor" // Georgian
+"Grek" // Greek
+"Gujr" // Gujarati
+"Hebr" // Hebrew
+"Jpan" // Japanese
+"Khmr" // Khmer
+"Knda" // Kannada
+"Kore" // Korean
+"Laoo" // Lao
+"Mlym" // Malayalam
+"Mymr" // Myanmar
+"Orya" // Oriya
+"Taml" // Tamil
+"Telu" // Telugu
+"Thaa" // Thaana
+"Thai" // Thai
+"Tibt" // Tibetan
+"Sinh" // Sinhala
+"Syri" // Syriac
+"Yiii" // Yi
;
static const unsigned char country_code_list[] =
-" \0" // AnyCountry
+"ZZ\0" // AnyCountry
"AF\0" // Afghanistan
"AL\0" // Albania
"DZ\0" // Algeria
diff --git a/src/corelib/tools/qlocale_tools.cpp b/src/corelib/tools/qlocale_tools.cpp
index 39c47bc161..095e35d2c5 100644
--- a/src/corelib/tools/qlocale_tools.cpp
+++ b/src/corelib/tools/qlocale_tools.cpp
@@ -2254,6 +2254,15 @@ Q_CORE_EXPORT char *qdtoa ( double d, int mode, int ndigits, int *decpt, int *si
#ifndef _M_X64
_control87(oldbits, 0xFFFFF);
#else
+# ifndef _MCW_EM // Potentially missing on MinGW
+# define _MCW_EM 0x0008001f
+# endif
+# ifndef _MCW_RC
+# define _MCW_RC 0x00000300
+# endif
+# ifndef _MCW_DN
+# define _MCW_DN 0x03000000
+# endif
_control87(oldbits, _MCW_EM|_MCW_DN|_MCW_RC);
#endif //_M_X64
#endif //Q_OS_WIN
diff --git a/src/corelib/tools/qregexp.cpp b/src/corelib/tools/qregexp.cpp
index 7aea083788..4d73fc7478 100644
--- a/src/corelib/tools/qregexp.cpp
+++ b/src/corelib/tools/qregexp.cpp
@@ -3812,7 +3812,7 @@ struct QRegExpPrivate
};
#if !defined(QT_NO_REGEXP_OPTIM)
-uint qHash(const QRegExpEngineKey &key, uint seed)
+uint qHash(const QRegExpEngineKey &key, uint seed = 0) Q_DECL_NOTHROW
{
return qHash(key.pattern, seed);
}
diff --git a/src/corelib/tools/qset.qdoc b/src/corelib/tools/qset.qdoc
index 38b363187e..6649d5ba69 100644
--- a/src/corelib/tools/qset.qdoc
+++ b/src/corelib/tools/qset.qdoc
@@ -906,7 +906,7 @@
\snippet code/doc_src_qset.cpp 13
- \sa fromList(), QList::fromSet(), qSort()
+ \sa fromList(), QList::fromSet()
*/
/*! \fn QList<T> QSet<T>::values() const
@@ -916,7 +916,7 @@
This is the same as toList().
- \sa fromList(), QList::fromSet(), qSort()
+ \sa fromList(), QList::fromSet()
*/
diff --git a/src/corelib/tools/qtextboundaryfinder.cpp b/src/corelib/tools/qtextboundaryfinder.cpp
index 259a63335a..968a580725 100644
--- a/src/corelib/tools/qtextboundaryfinder.cpp
+++ b/src/corelib/tools/qtextboundaryfinder.cpp
@@ -172,13 +172,6 @@ static void init(QTextBoundaryFinder::BoundaryType type, const QChar *chars, int
(can occur for a Line boundary type only).
\value SoftHyphen The boundary finder is at the soft hyphen
(can occur for a Line boundary type only).
-
- \value StartWord Deprecated since 5.0. Use StartOfItem instead.
- The boundary finder is at the start of a word.
- (can occur for a Word boundary type only).
- \value EndWord Deprecated since 5.0. Use EndOfItem instead.
- The boundary finder is at the end of a word.
- (can occur for a Word boundary type only).
*/
/*!
@@ -496,9 +489,9 @@ QTextBoundaryFinder::BoundaryReasons QTextBoundaryFinder::boundaryReasons() cons
if (attr.wordBreak) {
reasons |= BreakOpportunity;
if (attr.wordStart)
- reasons |= StartOfItem | StartWord;
+ reasons |= StartOfItem;
if (attr.wordEnd)
- reasons |= EndOfItem | EndWord;
+ reasons |= EndOfItem;
}
break;
case Sentence:
diff --git a/src/corelib/tools/qtextboundaryfinder.h b/src/corelib/tools/qtextboundaryfinder.h
index 6e33167bcb..745dc4e764 100644
--- a/src/corelib/tools/qtextboundaryfinder.h
+++ b/src/corelib/tools/qtextboundaryfinder.h
@@ -73,10 +73,7 @@ public:
StartOfItem = 0x20,
EndOfItem = 0x40,
MandatoryBreak = 0x80,
- SoftHyphen = 0x100,
- // ### Qt6: remove
- StartWord = 0x1000,
- EndWord = 0x2000
+ SoftHyphen = 0x100
};
Q_DECLARE_FLAGS( BoundaryReasons, BoundaryReason )
diff --git a/src/gui/accessible/qaccessible.cpp b/src/gui/accessible/qaccessible.cpp
index 61f1773d70..c21f2ad707 100644
--- a/src/gui/accessible/qaccessible.cpp
+++ b/src/gui/accessible/qaccessible.cpp
@@ -179,7 +179,7 @@ QT_BEGIN_NAMESPACE
/*!
\fn QAccessible::State::State()
- Creates a new QAccessible::State with all states set to false.
+ Constructs a new QAccessible::State with all states set to false.
*/
/*!
@@ -187,6 +187,7 @@ QT_BEGIN_NAMESPACE
This enum type defines accessible event types.
+ \omitvalue InvalidEvent Internal: Used when creating subclasses of QAccessibleEvent.
\value AcceleratorChanged The keyboard accelerator for an action has been changed.
\value ActionChanged An action has been changed.
\value ActiveDescendantChanged
@@ -263,7 +264,7 @@ QT_BEGIN_NAMESPACE
\value TableColumnDescriptionChanged The description of a table column, typically found in
the column's header, has been changed.
\value TableColumnHeaderChanged A table column header has been changed.
- \value TableModelChanged The model providing data for a table has been changed.
+ \omitvalue TableModelChanged The model providing data for a table has been changed.
\value TableRowDescriptionChanged The description of a table row, typically found in the
row's header, has been changed.
\value TableRowHeaderChanged A table row header has been changed.
@@ -434,19 +435,23 @@ QAccessible::RootObjectHandler QAccessible::rootObjectHandler = 0;
static bool accessibility_active = false;
static bool cleanupAdded = false;
+#ifndef QT_NO_ACCESSIBILITY
static QPlatformAccessibility *platformAccessibility()
{
QPlatformIntegration *pfIntegration = QGuiApplicationPrivate::platformIntegration();
return pfIntegration ? pfIntegration->accessibility() : 0;
}
+#endif
/*!
\internal
*/
void QAccessible::cleanup()
{
+#ifndef QT_NO_ACCESSIBILITY
if (QPlatformAccessibility *pfAccessibility = platformAccessibility())
pfAccessibility->cleanup();
+#endif
}
static void qAccessibleCleanup()
@@ -588,8 +593,10 @@ QAccessibleInterface *QAccessible::queryAccessibleInterface(QObject *object)
mo = mo->superClass();
}
+#ifndef QT_NO_ACCESSIBILITY
if (object == qApp)
return new QAccessibleApplication;
+#endif
return 0;
}
@@ -629,8 +636,10 @@ void QAccessible::setRootObject(QObject *object)
return;
}
+#ifndef QT_NO_ACCESSIBILITY
if (QPlatformAccessibility *pfAccessibility = platformAccessibility())
pfAccessibility->setRootObject(object);
+#endif
}
/*!
@@ -650,7 +659,7 @@ void QAccessible::setRootObject(QObject *object)
If there are no accessibility tools listening to this event, the
performance penalty for calling this function is small, but if
determining the parameters of the call is expensive you can test
- isActive() to avoid unnecessary computation.
+ QAccessible::isActive() to avoid unnecessary computation.
*/
void QAccessible::updateAccessibility(QAccessibleEvent *event)
{
@@ -662,10 +671,21 @@ void QAccessible::updateAccessibility(QAccessibleEvent *event)
if (!isActive())
return;
+#ifndef QT_NO_ACCESSIBILITY
if (QPlatformAccessibility *pfAccessibility = platformAccessibility())
pfAccessibility->notifyAccessibilityUpdate(event);
+#endif
}
+#if QT_DEPRECATED_SINCE(5, 0)
+/*!
+ \obsolete
+ \fn void QAccessible::updateAccessibility(QObject *object, int child, Event reason);
+
+ \brief Use QAccessible::updateAccessibility(QAccessibleEvent*) instead.
+*/
+#endif
+
/*!
\class QAccessibleInterface
\brief The QAccessibleInterface class defines an interface that exposes information
@@ -807,6 +827,8 @@ void QAccessible::updateAccessibility(QAccessibleEvent *event)
Returns the meaningful relations to other widgets. Usually this will not return parent/child
relations, unless they are handled in a specific way such as in tree views.
It will typically return the labelled-by and label relations.
+
+ It is possible to filter the relations by using \a match.
It should never return itself.
\sa parent(), child()
@@ -1015,8 +1037,10 @@ QColor QAccessibleInterface::backgroundColor() const
/*!
\class QAccessibleEvent
\internal
+ \ingroup accessibility
+ \inmodule QtGui
- \brief The QAccessibleEvent class provides detailed updates to the
+ \brief The QAccessibleEvent class contains parameters that describe updates in the
accessibility framework.
This class is used with \l QAccessible::updateAccessibility().
@@ -1024,13 +1048,13 @@ QColor QAccessibleInterface::backgroundColor() const
The event type is one of the values of \l QAccessible::Event, which
determines the subclass of QAccessibleEvent that applies.
- \ingroup accessibility
- \inmodule QtGui
+ To enable in process screen readers, all events must be sent after the change has happened.
*/
-/*! \fn QAccessibleEvent::QAccessibleEvent(QObject *obj, QAccessible::Event type)
- Constructs a QAccessibleEvent of the specified \a type. It also
- expects an \a object, which is the source of the event.
+/*! \fn QAccessibleEvent::QAccessibleEvent(QObject *object, QAccessible::Event type)
+
+ Constructs a QAccessibleEvent to notify that \a object has changed.
+ The event \a type explains what changed.
*/
/*! \fn QAccessibleEvent::~QAccessibleEvent()
@@ -1053,6 +1077,247 @@ QColor QAccessibleInterface::backgroundColor() const
Returns the child index.
*/
+
+/*!
+ \class QAccessibleValueChangeEvent
+ \internal
+ \ingroup accessibility
+ \inmodule QtGui
+
+ \brief The QAccessibleValueChangeEvent describes a change in value for an accessible object.
+
+ It contains the new value.
+
+ This class is used with \l QAccessible::updateAccessibility().
+*/
+
+/*! \fn QAccessibleValueChangeEvent::QAccessibleValueChangeEvent(QObject *object, const QVariant &value)
+ Constructs a new QAccessibleValueChangeEvent for \a object.
+ The event contains the new \a value.
+*/
+/*! \fn void QAccessibleValueChangeEvent::setValue(const QVariant & value)
+ Sets the new \a value for this event.
+*/
+/*!
+ \fn QVariant QAccessibleValueChangeEvent::value() const
+
+ Returns the new value of the accessible object of this event.
+*/
+
+/*!
+ \class QAccessibleStateChangeEvent
+ \internal
+ \ingroup accessibility
+ \inmodule QtGui
+
+ \brief The QAccessibleStateChangeEvent notfies the accessibility framework
+ that the state of an object has changed.
+
+ This class is used with \l QAccessible::updateAccessibility().
+
+ \sa QAccessibleInterface::state()
+*/
+/*! \fn QAccessibleStateChangeEvent::QAccessibleStateChangeEvent(QObject *object, QAccessible::State state)
+ Constructs a new QAccessibleStateChangeEvent for \a object.
+ The difference to the object's previous state is in \a state.
+*/
+/*!
+ \fn QAccessible::State QAccessibleStateChangeEvent::changedStates() const
+ \internal
+
+ \brief Returns the states that have been changed.
+
+ Be aware that the returned states are the ones that have changed,
+ to find out about the state of an object, use QAccessibleInterface::state().
+
+ For example, if an object used to have the focus but loses it,
+ the object's state will have focused set to \c false. This event on the
+ other hand tells about the change and has focused set to \c true since
+ the focus state is changed from \c true to \c false.
+*/
+
+
+/*!
+ \class QAccessibleTableModelChangeEvent
+ \internal
+ \ingroup accessibility
+ \inmodule QtGui
+
+ \brief The QAccessibleTableModelChangeEvent signifies a change in a table, list, or tree where cells
+ are added or removed.
+ If the change affected a number of rows, firstColumn and lastColumn will return \c -1.
+ Likewise for columns, the row functions may return \c -1.
+
+ This class is used with \l QAccessible::updateAccessibility().
+*/
+
+/*! \enum QAccessibleTableModelChangeEvent::ModelChangeType
+ This enum describes different types of changes in the table model.
+ \value ModelReset The model has been reset, all previous knowledge about the model is now invalid.
+ \value DataChanged No cells have been added or removed, but the data of the specified cell range is invalid.
+ \value RowsInserted New rows have been inserted.
+ \value ColumnsInserted New columns have been inserted.
+ \value RowsRemoved Rows have been removed.
+ \value ColumnsRemoved Columns have been removed.
+*/
+/*! \fn QAccessibleTableModelChangeEvent::QAccessibleTableModelChangeEvent(QObject *object, ModelChangeType changeType)
+ Constructs a new QAccessibleTableModelChangeEvent for \a object of with \a changeType.
+*/
+/*! \fn int QAccessibleTableModelChangeEvent::firstColumn() const
+ Returns the first changed column.
+*/
+/*! \fn int QAccessibleTableModelChangeEvent::firstRow() const
+ Returns the first changed row.
+*/
+/*! \fn int QAccessibleTableModelChangeEvent::lastColumn() const
+ Returns the last changed column.
+*/
+/*! \fn int QAccessibleTableModelChangeEvent::lastRow() const
+ Returns the last changed row.
+*/
+/*! \fn QAccessibleTableModelChangeEvent::ModelChangeType QAccessibleTableModelChangeEvent::modelChangeType() const
+ Returns the type of change.
+*/
+/*! \fn void QAccessibleTableModelChangeEvent::setFirstColumn(int column)
+ Sets the first changed \a column.
+*/
+/*! \fn void QAccessibleTableModelChangeEvent::setFirstRow(int row)
+ Sets the first changed \a row.
+*/
+/*! \fn void QAccessibleTableModelChangeEvent::setLastColumn(int column)
+ Sets the last changed \a column.
+*/
+/*! \fn void QAccessibleTableModelChangeEvent::setLastRow(int row)
+ Sets the last changed \a row.
+*/
+/*! \fn void QAccessibleTableModelChangeEvent::setModelChangeType(ModelChangeType changeType)
+ Sets the type of change to \a changeType.
+*/
+
+
+/*!
+ \class QAccessibleTextCursorEvent
+ \internal
+ \ingroup accessibility
+ \inmodule QtGui
+
+ \brief The QAccessibleEvent class
+
+ This class is used with \l QAccessible::updateAccessibility().
+*/
+/*! \fn QAccessibleTextCursorEvent::QAccessibleTextCursorEvent(QObject *object, int cursorPosition)
+ Create a new QAccessibleTextCursorEvent for \a object.
+ The \a cursorPosition is the new cursor position.
+*/
+/*! \fn int QAccessibleTextCursorEvent::cursorPosition() const
+ Returns the cursor position.
+*/
+/*! \fn void QAccessibleTextCursorEvent::setCursorPosition(int position)
+ Sets the cursor \a position for this event.
+*/
+
+/*!
+ \class QAccessibleTextInsertEvent
+ \internal
+ \ingroup accessibility
+ \inmodule QtGui
+
+ \brief The QAccessibleEvent class
+
+ This class is used with \l QAccessible::updateAccessibility().
+*/
+/*! \fn QAccessibleTextInsertEvent::QAccessibleTextInsertEvent(QObject *object, int position, const QString &text)
+ Constructs a new QAccessibleTextInsertEvent event for \a object.
+ The \a text has been inserted at \a position.
+ By default, it is assumed that the cursor has moved to the end
+ of the selection. If that is not the case, one needs to manually
+ set it with \l QAccessibleTextCursorEvent::setCursorPosition for this event.
+*/
+/*! \fn int QAccessibleTextInsertEvent::changePosition() const
+ Returns the position where the text was inserted.
+*/
+/*! \fn QString QAccessibleTextInsertEvent::textInserted() const
+ Returns the text that has been inserted.
+*/
+
+/*!
+ \class QAccessibleTextRemoveEvent
+ \internal
+ \ingroup accessibility
+ \inmodule QtGui
+
+ \brief The QAccessibleEvent class
+
+ This class is used with \l QAccessible::updateAccessibility().
+*/
+/*! \fn QAccessibleTextRemoveEvent::QAccessibleTextRemoveEvent(QObject *object, int position, const QString &text)
+ Constructs a new QAccessibleTextRemoveEvent event for \a object.
+ The \a text has been removed at \a position.
+ By default it is assumed that the cursor has moved to \a position.
+ If that is not the case, one needs to manually
+ set it with \l QAccessibleTextCursorEvent::setCursorPosition for this event.
+*/
+
+/*! \fn int QAccessibleTextRemoveEvent::changePosition() const
+ Returns the position where the text was removed.
+*/
+/*! \fn QString QAccessibleTextRemoveEvent::textRemoved() const
+ Returns the text that has been removed.
+*/
+
+/*!
+ \class QAccessibleTextUpdateEvent
+ \internal
+ \ingroup accessibility
+ \inmodule QtGui
+
+ \brief The QAccessibleEvent class notifies about text changes.
+ This is for accessibles that support editable text such as line edits.
+ This event occurs for example when a portion of selected text
+ gets replaced by pasting a new text or in override mode of editors.
+
+ This class is used with \l QAccessible::updateAccessibility().
+*/
+/*! \fn QAccessibleTextUpdateEvent::QAccessibleTextUpdateEvent(QObject *object, int position, const QString &oldText, const QString &text)
+ Constructs a new QAccessibleTextUpdateEvent for \a object.
+ The text change takes place at \a position where the \a oldText was removed and \a text inserted instead.
+*/
+/*! \fn int QAccessibleTextUpdateEvent::changePosition() const
+ Returns where the change took place.
+*/
+/*! \fn QString QAccessibleTextUpdateEvent::textInserted() const
+ Returns the inserted text.
+*/
+/*! \fn QString QAccessibleTextUpdateEvent::textRemoved() const
+ Returns the removed text.
+*/
+
+/*!
+ \class QAccessibleTextSelectionEvent
+ \internal
+ \ingroup accessibility
+ \inmodule QtGui
+
+ \brief The QAccessibleEvent class
+
+ This class is used with \l QAccessible::updateAccessibility().
+*/
+/*! \fn QAccessibleTextSelectionEvent::QAccessibleTextSelectionEvent(QObject *object, int start, int end)
+ Constructs a new QAccessibleTextSelectionEvent for \a object.
+ The new selection this event notifies about is from position \a start to \a end.
+*/
+/*! \fn int QAccessibleTextSelectionEvent::selectionEnd() const
+ Returns the position of the last selected character.
+*/
+/*! \fn int QAccessibleTextSelectionEvent::selectionStart() const
+ Returns the position of the first selected character.
+*/
+/*! \fn void QAccessibleTextSelectionEvent::setSelection(int start, int end)
+ Sets the selection for this event from position \a start to \a end.
+*/
+
+
+
/*!
Returns the QAccessibleInterface associated with the event.
The caller of this function takes ownership of the returned interface.
@@ -1060,8 +1325,10 @@ QColor QAccessibleInterface::backgroundColor() const
QAccessibleInterface *QAccessibleEvent::accessibleInterface() const
{
QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(m_object);
- if (!iface)
+ if (!iface) {
+ qWarning() << "Cannot create accessible interface for object: " << m_object;
return 0;
+ }
if (m_child >= 0) {
QAccessibleInterface *child = iface->child(m_child);
@@ -1087,7 +1354,7 @@ QAccessibleInterface *QAccessibleEvent::accessibleInterface() const
return a valid QWindow pointer).
The default implementation of this returns 0.
- \preliminary
+ \internal
*/
QWindow *QAccessibleInterface::window() const
{
diff --git a/src/gui/accessible/qaccessible.h b/src/gui/accessible/qaccessible.h
index 1fb6c65482..5f61634ba2 100644
--- a/src/gui/accessible/qaccessible.h
+++ b/src/gui/accessible/qaccessible.h
@@ -462,7 +462,7 @@ public:
void setChild(int chld) { m_child = chld; }
int child() const { return m_child; }
- QAccessibleInterface *accessibleInterface() const;
+ virtual QAccessibleInterface *accessibleInterface() const;
protected:
QAccessible::Event m_type;
diff --git a/src/gui/accessible/qaccessibleobject.cpp b/src/gui/accessible/qaccessibleobject.cpp
index 5d958f01a9..bc108980cf 100644
--- a/src/gui/accessible/qaccessibleobject.cpp
+++ b/src/gui/accessible/qaccessibleobject.cpp
@@ -201,7 +201,7 @@ static QObjectList topLevelObjects()
const QWindowList tlw(QGuiApplication::topLevelWindows());
for (int i = 0; i < tlw.count(); ++i) {
QWindow *w = tlw.at(i);
- if (w->windowType() != Qt::Popup && w->windowType() != Qt::Desktop) {
+ if (w->type() != Qt::Popup && w->type() != Qt::Desktop) {
if (QAccessibleInterface *root = w->accessibleRoot()) {
if (root->object())
list.append(root->object());
diff --git a/src/gui/image/qgifhandler.cpp b/src/gui/image/qgifhandler.cpp
index cedb27c193..b60d1a1711 100644
--- a/src/gui/image/qgifhandler.cpp
+++ b/src/gui/image/qgifhandler.cpp
@@ -488,7 +488,7 @@ int QGIFFormat::decode(QImage *image, const uchar *buffer, int length,
} else {
if (needfirst) {
firstcode=oldcode=code;
- if (!out_of_bounds && image->height() > y && firstcode!=trans_index)
+ if (!out_of_bounds && image->height() > y && ((frame == 0) || (firstcode != trans_index)))
((QRgb*)FAST_SCAN_LINE(bits, bpl, y))[x] = color(firstcode);
x++;
if (x>=swidth) out_of_bounds = true;
@@ -540,17 +540,13 @@ int QGIFFormat::decode(QImage *image, const uchar *buffer, int length,
}
oldcode=incode;
const int h = image->height();
- const QRgb *map = lcmap ? localcmap : globalcmap;
QRgb *line = 0;
if (!out_of_bounds && h > y)
line = (QRgb*)FAST_SCAN_LINE(bits, bpl, y);
while (sp>stack) {
const uchar index = *(--sp);
- if (!out_of_bounds && h > y && index!=trans_index) {
- if (index > ncols)
- line[x] = Q_TRANSPARENT;
- else
- line[x] = map ? map[index] : 0;
+ if (!out_of_bounds && h > y && ((frame == 0) || (index != trans_index))) {
+ line[x] = color(index);
}
x++;
if (x>=swidth) out_of_bounds = true;
@@ -1031,11 +1027,12 @@ void QGIFFormat::nextY(unsigned char *bits, int bpl)
inline QRgb QGIFFormat::color(uchar index) const
{
- if (index == trans_index || index > ncols)
+ if (index > ncols)
return Q_TRANSPARENT;
QRgb *map = lcmap ? localcmap : globalcmap;
- return map ? map[index] : 0;
+ QRgb col = map ? map[index] : 0;
+ return index == trans_index ? col & Q_TRANSPARENT : col;
}
//-------------------------------------------------------------------------
diff --git a/src/gui/image/qpnghandler.cpp b/src/gui/image/qpnghandler.cpp
index 8434282178..bedf881a9a 100644
--- a/src/gui/image/qpnghandler.cpp
+++ b/src/gui/image/qpnghandler.cpp
@@ -102,7 +102,6 @@ QT_BEGIN_NAMESPACE
All PNG files load to the minimal QImage equivalent.
All QImage formats output to reasonably efficient PNG equivalents.
- Never to grayscale.
*/
class QPngHandlerPrivate
@@ -834,8 +833,12 @@ bool Q_INTERNAL_WIN_NO_THROW QPNGImageWriter::writeImage(const QImage& image, vo
int color_type = 0;
- if (image.colorCount())
- color_type = PNG_COLOR_TYPE_PALETTE;
+ if (image.colorCount()) {
+ if (image.isGrayscale())
+ color_type = PNG_COLOR_TYPE_GRAY;
+ else
+ color_type = PNG_COLOR_TYPE_PALETTE;
+ }
else if (image.hasAlphaChannel())
color_type = PNG_COLOR_TYPE_RGB_ALPHA;
else
@@ -852,7 +855,7 @@ bool Q_INTERNAL_WIN_NO_THROW QPNGImageWriter::writeImage(const QImage& image, vo
if (image.format() == QImage::Format_MonoLSB)
png_set_packswap(png_ptr);
- if (image.colorCount()) {
+ if (color_type == PNG_COLOR_TYPE_PALETTE) {
// Paletted
int num_palette = qMin(256, image.colorCount());
png_color palette[256];
diff --git a/src/gui/itemmodels/qstandarditemmodel.cpp b/src/gui/itemmodels/qstandarditemmodel.cpp
index fdd00fe980..13d7a5c7a7 100644
--- a/src/gui/itemmodels/qstandarditemmodel.cpp
+++ b/src/gui/itemmodels/qstandarditemmodel.cpp
@@ -2712,6 +2712,15 @@ bool QStandardItemModel::hasChildren(const QModelIndex &parent) const
/*!
\reimp
*/
+QModelIndex QStandardItemModel::sibling(int row, int column, const QModelIndex &idx) const
+{
+ Q_D(const QStandardItemModel);
+ return createIndex(row, column, idx.internalPointer());
+}
+
+/*!
+ \reimp
+*/
QVariant QStandardItemModel::headerData(int section, Qt::Orientation orientation, int role) const
{
Q_D(const QStandardItemModel);
diff --git a/src/gui/itemmodels/qstandarditemmodel.h b/src/gui/itemmodels/qstandarditemmodel.h
index c21e8cef5d..e243085f4c 100644
--- a/src/gui/itemmodels/qstandarditemmodel.h
+++ b/src/gui/itemmodels/qstandarditemmodel.h
@@ -332,6 +332,7 @@ public:
int rowCount(const QModelIndex &parent = QModelIndex()) const;
int columnCount(const QModelIndex &parent = QModelIndex()) const;
bool hasChildren(const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex sibling(int row, int column, const QModelIndex &idx) const;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp
index 3dbef228a5..66434f9a53 100644
--- a/src/gui/kernel/qevent.cpp
+++ b/src/gui/kernel/qevent.cpp
@@ -56,6 +56,40 @@
QT_BEGIN_NAMESPACE
/*!
+ \class QEnterEvent
+ \ingroup events
+
+ \brief The QEnterEvent class contains parameters that describe an enter event.
+
+ Enter events occur when the mouse cursor enters a window or a widget.
+
+ \since 5.0
+*/
+
+/*!
+ Constructs an enter event object.
+
+ The points \a localPos, \a windowPos and \a screenPos specify the
+ mouse cursor's position relative to the receiving widget or item,
+ window, and screen, respectively.
+*/
+
+QEnterEvent::QEnterEvent(const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos)
+ : QEvent(QEvent::Enter)
+ , l(localPos)
+ , w(windowPos)
+ , s(screenPos)
+{
+}
+
+/*!
+ \internal
+*/
+QEnterEvent::~QEnterEvent()
+{
+}
+
+/*!
\class QInputEvent
\ingroup events
\inmodule QtGui
diff --git a/src/gui/kernel/qevent.h b/src/gui/kernel/qevent.h
index b35dd88c2a..82d22aec05 100644
--- a/src/gui/kernel/qevent.h
+++ b/src/gui/kernel/qevent.h
@@ -83,6 +83,28 @@ protected:
ulong ts;
};
+class Q_GUI_EXPORT QEnterEvent : public QEvent
+{
+public:
+ QEnterEvent(const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos);
+ ~QEnterEvent();
+
+#ifndef QT_NO_INTEGER_EVENT_COORDINATES
+ inline QPoint pos() const { return l.toPoint(); }
+ inline QPoint globalPos() const { return s.toPoint(); }
+ inline int x() const { return qRound(l.x()); }
+ inline int y() const { return qRound(l.y()); }
+ inline int globalX() const { return qRound(s.x()); }
+ inline int globalY() const { return qRound(s.y()); }
+#endif
+ const QPointF &localPos() const { return l; }
+ const QPointF &windowPos() const { return w; }
+ const QPointF &screenPos() const { return s; }
+
+protected:
+ QPointF l, w, s;
+};
+
class Q_GUI_EXPORT QMouseEvent : public QInputEvent
{
public:
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index efb34ffe9f..949c963d0c 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -151,6 +151,7 @@ QWindow *QGuiApplicationPrivate::focus_window = 0;
static QBasicMutex applicationFontMutex;
QFont *QGuiApplicationPrivate::app_font = 0;
bool QGuiApplicationPrivate::obey_desktop_settings = true;
+bool QGuiApplicationPrivate::noGrab = false;
static qreal fontSmoothingGamma = 1.7;
@@ -422,14 +423,14 @@ QString QGuiApplication::applicationDisplayName()
visible, this function returns zero.
A modal window is a window which has its
- \l{QWindow::windowModality}{windowModality} property set to Qt::WindowModal
+ \l{QWindow::modality}{modality} property set to Qt::WindowModal
or Qt::ApplicationModal. A modal window must be closed before the user can
continue with other parts of the program.
Modal window are organized in a stack. This function returns the modal
window at the top of the stack.
- \sa Qt::WindowModality, QWindow::setWindowModality()
+ \sa Qt::WindowModality, QWindow::setModality()
*/
QWindow *QGuiApplication::modalWindow()
{
@@ -441,7 +442,7 @@ QWindow *QGuiApplication::modalWindow()
void QGuiApplicationPrivate::updateBlockedStatus(QWindow *window)
{
bool shouldBeBlocked = false;
- if ((window->windowType() & Qt::Popup) != Qt::Popup && !self->modalWindowList.isEmpty())
+ if ((window->type() & Qt::Popup) != Qt::Popup && !self->modalWindowList.isEmpty())
shouldBeBlocked = self->isWindowBlocked(window);
if (shouldBeBlocked != window->d_func()->blockedByModalWindow) {
@@ -457,7 +458,7 @@ void QGuiApplicationPrivate::showModalWindow(QWindow *modal)
self->modalWindowList.prepend(modal);
// Send leave for currently entered window if it should be blocked
- if (currentMouseWindow && (currentMouseWindow->windowType() & Qt::Popup) != Qt::Popup) {
+ if (currentMouseWindow && (currentMouseWindow->type() & Qt::Popup) != Qt::Popup) {
bool shouldBeBlocked = self->isWindowBlocked(currentMouseWindow);
if (shouldBeBlocked) {
// Remove the new window from modalWindowList temporarily so leave can go through
@@ -525,7 +526,7 @@ bool QGuiApplicationPrivate::isWindowBlocked(QWindow *window, QWindow **blocking
}
}
- Qt::WindowModality windowModality = modalWindow->windowModality();
+ Qt::WindowModality windowModality = modalWindow->modality();
switch (windowModality) {
case Qt::ApplicationModal:
{
@@ -864,8 +865,18 @@ void QGuiApplicationPrivate::setEventDispatcher(QAbstractEventDispatcher *eventD
}
+#if defined(QT_DEBUG) && defined(Q_OS_LINUX)
+// Find out if our parent process is gdb by looking at the 'exe' symlink under /proc.
+static bool runningUnderDebugger()
+{
+ const QFileInfo parentProcExe(QStringLiteral("/proc/") + QString::number(getppid()) + QStringLiteral("/exe"));
+ return parentProcExe.isSymLink() && parentProcExe.symLinkTarget().endsWith(QStringLiteral("/gdb"));
+}
+#endif
+
void QGuiApplicationPrivate::init()
{
+ bool doGrabUnderDebugger = false;
QList<QByteArray> pluginList;
// Get command line params
@@ -894,6 +905,10 @@ void QGuiApplicationPrivate::init()
QDir::setCurrent(qbundlePath.section(QLatin1Char('/'), 0, -2));
}
#endif
+ } else if (arg == "-nograb") {
+ QGuiApplicationPrivate::noGrab = true;
+ } else if (arg == "-dograb") {
+ doGrabUnderDebugger = true;
} else {
argv[j++] = argv[i];
}
@@ -904,6 +919,16 @@ void QGuiApplicationPrivate::init()
argc = j;
}
+#if defined(QT_DEBUG) && defined(Q_OS_LINUX)
+ if (!doGrabUnderDebugger && !QGuiApplicationPrivate::noGrab && runningUnderDebugger()) {
+ QGuiApplicationPrivate::noGrab = true;
+ qDebug("Qt: gdb: -nograb added to command-line options.\n"
+ "\t Use the -dograb option to enforce grabbing.");
+ }
+#else
+ Q_UNUSED(doGrabUnderDebugger)
+#endif
+
// Load environment exported generic plugins
foreach (const QByteArray &plugin, qgetenv("QT_QPA_GENERIC_PLUGINS").split(','))
pluginList << plugin;
@@ -1424,7 +1449,7 @@ void QGuiApplicationPrivate::processEnterEvent(QWindowSystemInterfacePrivate::En
currentMouseWindow = e->enter;
- QEvent event(QEvent::Enter);
+ QEnterEvent event(e->localPos, e->localPos, e->globalPos);
QCoreApplication::sendSpontaneousEvent(e->enter.data(), &event);
}
@@ -2359,7 +2384,7 @@ static inline void applyCursor(const QList<QWindow *> &l, const QCursor &c)
{
for (int i = 0; i < l.size(); ++i) {
QWindow *w = l.at(i);
- if (w->handle() && w->windowType() != Qt::Desktop)
+ if (w->handle() && w->type() != Qt::Desktop)
applyCursor(w, c);
}
}
@@ -2368,7 +2393,7 @@ static inline void applyWindowCursor(const QList<QWindow *> &l)
{
for (int i = 0; i < l.size(); ++i) {
QWindow *w = l.at(i);
- if (w->handle() && w->windowType() != Qt::Desktop)
+ if (w->handle() && w->type() != Qt::Desktop)
applyCursor(w, w->cursor());
}
}
diff --git a/src/gui/kernel/qguiapplication_p.h b/src/gui/kernel/qguiapplication_p.h
index c9eb672220..9044d40ab0 100644
--- a/src/gui/kernel/qguiapplication_p.h
+++ b/src/gui/kernel/qguiapplication_p.h
@@ -42,6 +42,17 @@
#ifndef QGUIAPPLICATION_P_H
#define QGUIAPPLICATION_P_H
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
#include <QtGui/qguiapplication.h>
#include <QtCore/QPointF>
@@ -209,6 +220,7 @@ public:
QStyleHints *styleHints;
static bool obey_desktop_settings;
+ static bool noGrab;
QInputMethod *inputMethod;
static QList<QObject *> generic_plugin_list;
diff --git a/src/gui/kernel/qinputmethod_p.h b/src/gui/kernel/qinputmethod_p.h
index f35d135e5d..566b341b51 100644
--- a/src/gui/kernel/qinputmethod_p.h
+++ b/src/gui/kernel/qinputmethod_p.h
@@ -42,6 +42,17 @@
#ifndef QINPUTMETHOD_P_H
#define QINPUTMETHOD_P_H
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
#include <qinputmethod.h>
#include <private/qobject_p.h>
#include <QtCore/QWeakPointer>
diff --git a/src/gui/kernel/qopenglcontext.cpp b/src/gui/kernel/qopenglcontext.cpp
index 6c006ab8b3..d2de6aa125 100644
--- a/src/gui/kernel/qopenglcontext.cpp
+++ b/src/gui/kernel/qopenglcontext.cpp
@@ -62,6 +62,10 @@ QT_BEGIN_NAMESPACE
class QGuiGLThreadContext
{
public:
+ QGuiGLThreadContext()
+ : context(0)
+ {
+ }
~QGuiGLThreadContext() {
if (context)
context->doneCurrent();
@@ -151,18 +155,25 @@ QMutex QOpenGLContextPrivate::makeCurrentTrackerMutex;
\sa QOpenGLFunctions, QOpenGLBuffer, QOpenGLShaderProgram, QOpenGLFramebufferObject
*/
-void QOpenGLContextPrivate::setCurrentContext(QOpenGLContext *context)
+/*!
+ \internal
+
+ Set the current context. Returns the previously current context.
+*/
+QOpenGLContext *QOpenGLContextPrivate::setCurrentContext(QOpenGLContext *context)
{
QGuiGLThreadContext *threadContext = qwindow_context_storage.localData();
if (!threadContext) {
if (!QThread::currentThread()) {
qWarning("No QTLS available. currentContext wont work");
- return;
+ return 0;
}
threadContext = new QGuiGLThreadContext;
qwindow_context_storage.setLocalData(threadContext);
}
+ QOpenGLContext *previous = threadContext->context;
threadContext->context = context;
+ return previous;
}
int QOpenGLContextPrivate::maxTextureSize()
@@ -505,9 +516,9 @@ bool QOpenGLContext::makeCurrent(QSurface *surface)
return false;
}
+ QOpenGLContext *previous = QOpenGLContextPrivate::setCurrentContext(this);
if (d->platformGLContext->makeCurrent(surface->surfaceHandle())) {
- QOpenGLContextPrivate::setCurrentContext(this);
d->surface = surface;
d->shareGroup->d_func()->deletePendingResources(this);
@@ -519,6 +530,8 @@ bool QOpenGLContext::makeCurrent(QSurface *surface)
return true;
}
+ QOpenGLContextPrivate::setCurrentContext(previous);
+
return false;
}
@@ -561,11 +574,6 @@ QSurface *QOpenGLContext::surface() const
Call this to finish a frame of OpenGL rendering, and make sure to
call makeCurrent() again before you begin a new frame.
-
- If you have bound a non-default framebuffer object, you need to
- use bindDefaultFramebufferObject() to make sure that the default
- framebuffer object is bound before calling swapBuffers(), as
- some Qt platforms assume that the default framebuffer object is bound.
*/
void QOpenGLContext::swapBuffers(QSurface *surface)
{
@@ -594,17 +602,8 @@ void QOpenGLContext::swapBuffers(QSurface *surface)
return;
#if !defined(QT_NO_DEBUG)
- if (currentContext() != this)
- qWarning() << "QOpenGLContext::swapBuffers() called with non-current surface";
- else if (!QOpenGLContextPrivate::toggleMakeCurrentTracker(this, false))
+ if (!QOpenGLContextPrivate::toggleMakeCurrentTracker(this, false))
qWarning() << "QOpenGLContext::swapBuffers() called without corresponding makeCurrent()";
-
- GLint framebufferBinding = 0;
- glGetIntegerv(GL_FRAMEBUFFER_BINDING, &framebufferBinding);
-
- GLint platformFramebuffer = GLint(d->platformGLContext->defaultFramebufferObject(surfaceHandle));
- if (framebufferBinding != platformFramebuffer)
- qWarning() << "QOpenGLContext::swapBuffers() called with non-default framebuffer object bound";
#endif
if (surface->format().swapBehavior() == QSurfaceFormat::SingleBuffer)
glFlush();
diff --git a/src/gui/kernel/qopenglcontext_p.h b/src/gui/kernel/qopenglcontext_p.h
index 704ff09411..198528dc4a 100644
--- a/src/gui/kernel/qopenglcontext_p.h
+++ b/src/gui/kernel/qopenglcontext_p.h
@@ -42,6 +42,17 @@
#ifndef QOPENGLCONTEXT_P_H
#define QOPENGLCONTEXT_P_H
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
#ifndef QT_NO_OPENGL
#include "qopengl.h"
@@ -224,7 +235,7 @@ public:
QPaintEngineEx *active_engine;
- static void setCurrentContext(QOpenGLContext *context);
+ static QOpenGLContext *setCurrentContext(QOpenGLContext *context);
int maxTextureSize();
diff --git a/src/gui/kernel/qplatforminputcontext_p.h b/src/gui/kernel/qplatforminputcontext_p.h
index 3dc2ad2a0f..19a3619667 100644
--- a/src/gui/kernel/qplatforminputcontext_p.h
+++ b/src/gui/kernel/qplatforminputcontext_p.h
@@ -42,6 +42,17 @@
#ifndef QPLATFORMINPUTCONTEXT_P_H
#define QPLATFORMINPUTCONTEXT_P_H
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
#include <private/qobject_p.h>
QT_BEGIN_HEADER
diff --git a/src/gui/kernel/qplatformnativeinterface.cpp b/src/gui/kernel/qplatformnativeinterface.cpp
index 52e2d969b3..925b2ad3de 100644
--- a/src/gui/kernel/qplatformnativeinterface.cpp
+++ b/src/gui/kernel/qplatformnativeinterface.cpp
@@ -59,6 +59,14 @@ void *QPlatformNativeInterface::nativeResourceForIntegration(const QByteArray &r
Q_UNUSED(resource);
return 0;
}
+
+void *QPlatformNativeInterface::nativeResourceForScreen(const QByteArray &resource, QScreen *screen)
+{
+ Q_UNUSED(resource);
+ Q_UNUSED(screen);
+ return 0;
+}
+
void *QPlatformNativeInterface::nativeResourceForWindow(const QByteArray &resource, QWindow *window)
{
Q_UNUSED(resource);
diff --git a/src/gui/kernel/qplatformnativeinterface.h b/src/gui/kernel/qplatformnativeinterface.h
index 97b36274e8..cbf997bec4 100644
--- a/src/gui/kernel/qplatformnativeinterface.h
+++ b/src/gui/kernel/qplatformnativeinterface.h
@@ -61,6 +61,7 @@ QT_BEGIN_NAMESPACE
class QOpenGLContext;
+class QScreen;
class QWindow;
class QPlatformWindow;
class QBackingStore;
@@ -71,6 +72,7 @@ class Q_GUI_EXPORT QPlatformNativeInterface : public QObject
public:
virtual void *nativeResourceForIntegration(const QByteArray &resource);
virtual void *nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context);
+ virtual void *nativeResourceForScreen(const QByteArray &resource, QScreen *screen);
virtual void *nativeResourceForWindow(const QByteArray &resource, QWindow *window);
virtual void *nativeResourceForBackingStore(const QByteArray &resource, QBackingStore *backingStore);
diff --git a/src/gui/kernel/qplatformwindow.cpp b/src/gui/kernel/qplatformwindow.cpp
index 2bc6b01b3e..edd9a3d436 100644
--- a/src/gui/kernel/qplatformwindow.cpp
+++ b/src/gui/kernel/qplatformwindow.cpp
@@ -466,12 +466,18 @@ bool QPlatformWindow::frameStrutEventsEnabled() const
\li Mouse grab: Qt expects windows to automatically grab the mouse if the user presses
a button until the button is released.
Automatic grab should be released if some window is explicitly grabbed.
- \li Enter/Leave events: Enter and leave events should be sent independently of
- explicit mouse grabs (\c{setMouseGrabEnabled()}). That is, if the mouse leaves
- a window that has explicit mouse grab, a leave event should be sent and other
- windows should get enter/leave events as well as the mouse traverses them.
- For automatic mouse grab, however, a leave event should be sent when the
- button is released.
+ \li Enter/Leave events: If there is a window explicitly grabbing mouse events
+ (\c{setMouseGrabEnabled()}), enter and leave events should only be sent to the
+ grabbing window when mouse cursor passes over the grabbing window boundary.
+ Other windows will not receive enter or leave events while the grab is active.
+ While an automatic mouse grab caused by a mouse button press is active, no window
+ will receive enter or leave events. When the last mouse button is released, the
+ autograbbing window will receive leave event if mouse cursor is no longer within
+ the window boundary.
+ When any grab starts, the window under cursor will receive a leave event unless
+ it is the grabbing window.
+ When any grab ends, the window under cursor will receive an enter event unless it
+ was the grabbing window.
\li Window positioning: When calling \c{QWindow::setFramePos()}, the flag
\c{QWindowPrivate::positionPolicy} is set to \c{QWindowPrivate::WindowFrameInclusive}.
This means the position includes the window frame, whose size is at this point
diff --git a/src/gui/kernel/qscreen_p.h b/src/gui/kernel/qscreen_p.h
index f3b6082c15..aea108f926 100644
--- a/src/gui/kernel/qscreen_p.h
+++ b/src/gui/kernel/qscreen_p.h
@@ -42,6 +42,17 @@
#ifndef QSCREEN_P_H
#define QSCREEN_P_H
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
#include <QtGui/qscreen.h>
#include <qpa/qplatformscreen.h>
diff --git a/src/gui/kernel/qtouchdevice_p.h b/src/gui/kernel/qtouchdevice_p.h
index e58c795653..ff6e0ffb01 100644
--- a/src/gui/kernel/qtouchdevice_p.h
+++ b/src/gui/kernel/qtouchdevice_p.h
@@ -42,6 +42,17 @@
#ifndef QTOUCHDEVICE_P_H
#define QTOUCHDEVICE_P_H
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
#include <QtCore/qobject.h>
#include <QtGui/qtouchdevice.h>
diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp
index d845be3d01..1b02eb586f 100644
--- a/src/gui/kernel/qwindow.cpp
+++ b/src/gui/kernel/qwindow.cpp
@@ -52,7 +52,9 @@
#include "qwindow_p.h"
#include "qguiapplication_p.h"
-#include "qaccessible.h"
+#ifndef QT_NO_ACCESSIBILITY
+# include "qaccessible.h"
+#endif
#include <private/qevent_p.h>
@@ -409,7 +411,7 @@ bool QWindow::isTopLevel() const
A modal window prevents other windows from getting any input.
- \sa QWindow::windowModality
+ \sa QWindow::modality
*/
bool QWindow::isModal() const
{
@@ -417,7 +419,7 @@ bool QWindow::isModal() const
return d->modality != Qt::NonModal;
}
-/*! \property QWindow::windowModality
+/*! \property QWindow::modality
\brief the modality of the window
A modal window prevents other windows from receiving input events. Qt
@@ -428,24 +430,24 @@ bool QWindow::isModal() const
\sa Qt::WindowModality
*/
-Qt::WindowModality QWindow::windowModality() const
+Qt::WindowModality QWindow::modality() const
{
Q_D(const QWindow);
return d->modality;
}
-void QWindow::setWindowModality(Qt::WindowModality modality)
+void QWindow::setModality(Qt::WindowModality modality)
{
Q_D(QWindow);
if (d->modality == modality)
return;
d->modality = modality;
- emit windowModalityChanged(modality);
+ emit modalityChanged(modality);
}
-/*! \fn void QWindow::windowModalityChanged(Qt::WindowModality windowModality)
+/*! \fn void QWindow::modalityChanged(Qt::WindowModality modality)
- This signal is emitted when the Qwindow::windowModality property changes to \a windowModality.
+ This signal is emitted when the Qwindow::modality property changes to \a modality.
*/
/*!
@@ -508,15 +510,17 @@ QSurfaceFormat QWindow::format() const
}
/*!
- Sets the window flags of the window to \a flags.
+ \property QWindow::flags
+ \brief the window flags of the window
The window flags control the window's appearance in the windowing system,
whether it's a dialog, popup, or a regular window, and whether it should
have a title bar, etc.
- \sa windowFlags()
+ The actual window flags might differ from the flags set with setFlags()
+ if the requested flags could not be fulfilled.
*/
-void QWindow::setWindowFlags(Qt::WindowFlags flags)
+void QWindow::setFlags(Qt::WindowFlags flags)
{
Q_D(QWindow);
if (d->platformWindow)
@@ -524,15 +528,7 @@ void QWindow::setWindowFlags(Qt::WindowFlags flags)
d->windowFlags = flags;
}
-/*!
- Returns the window flags of the window.
-
- This might differ from the flags set with setWindowFlags() if the
- requested flags could not be fulfilled.
-
- \sa setWindowFlags()
-*/
-Qt::WindowFlags QWindow::windowFlags() const
+Qt::WindowFlags QWindow::flags() const
{
Q_D(const QWindow);
return d->windowFlags;
@@ -544,16 +540,16 @@ Qt::WindowFlags QWindow::windowFlags() const
This returns the part of the window flags that represents
whether the window is a dialog, tooltip, popup, regular window, etc.
- \sa windowFlags(), setWindowFlags()
+ \sa flags(), setFlags()
*/
-Qt::WindowType QWindow::windowType() const
+Qt::WindowType QWindow::type() const
{
Q_D(const QWindow);
return static_cast<Qt::WindowType>(int(d->windowFlags & Qt::WindowType_Mask));
}
/*!
- \property QWindow::windowTitle
+ \property QWindow::title
\brief the window's title in the windowing system
The window title might appear in the title area of the window decorations,
@@ -561,9 +557,9 @@ Qt::WindowType QWindow::windowType() const
be used by the windowing system to identify the window in other contexts,
such as in the task switcher.
- \sa windowFlags()
+ \sa flags()
*/
-void QWindow::setWindowTitle(const QString &title)
+void QWindow::setTitle(const QString &title)
{
Q_D(QWindow);
d->windowTitle = title;
@@ -571,20 +567,20 @@ void QWindow::setWindowTitle(const QString &title)
d->platformWindow->setWindowTitle(title);
}
-QString QWindow::windowTitle() const
+QString QWindow::title() const
{
Q_D(const QWindow);
return d->windowTitle;
}
/*!
- \property QWindow::windowFilePath
- \brief the file name this window is representing.
+ \brief set the file name this window is representing.
- This property might be used by the windowing system to display the file
+ The windowing system might use \a filePath to display the
path of the document this window is representing in the tile bar.
+
*/
-void QWindow::setWindowFilePath(const QString &filePath)
+void QWindow::setFilePath(const QString &filePath)
{
Q_D(QWindow);
d->windowFilePath = filePath;
@@ -592,20 +588,24 @@ void QWindow::setWindowFilePath(const QString &filePath)
d->platformWindow->setWindowFilePath(filePath);
}
-QString QWindow::windowFilePath() const
+/*!
+ \brief the file name this window is representing.
+
+ \sa setFilePath()
+*/
+QString QWindow::filePath() const
{
Q_D(const QWindow);
return d->windowFilePath;
}
/*!
- \property QWindow::windowIcon
- \brief the window's icon in the windowing system
+ \brief set the window's \a icon in the windowing system
The window icon might be used by the windowing system for example to
decorate the window, and/or in the task switcher.
*/
-void QWindow::setWindowIcon(const QIcon &icon)
+void QWindow::setIcon(const QIcon &icon)
{
Q_D(QWindow);
d->windowIcon = icon;
@@ -613,7 +613,12 @@ void QWindow::setWindowIcon(const QIcon &icon)
d->platformWindow->setWindowIcon(icon);
}
-QIcon QWindow::windowIcon() const
+/*!
+ \brief set the window's icon in the windowing system
+
+ \sa setIcon()
+*/
+QIcon QWindow::icon() const
{
Q_D(const QWindow);
return d->windowIcon;
@@ -666,7 +671,7 @@ void QWindow::setOpacity(qreal level)
\sa isActive(), QGuiApplication::focusWindow()
*/
-void QWindow::requestActivateWindow()
+void QWindow::requestActivate()
{
Q_D(QWindow);
if (d->platformWindow)
@@ -739,7 +744,7 @@ bool QWindow::isActive() const
The default value is Qt::PrimaryOrientation
- \sa requestWindowOrientation(), QScreen::orientation()
+ \sa requestOrientation(), QScreen::orientation()
*/
void QWindow::reportContentOrientationChange(Qt::ScreenOrientation orientation)
{
@@ -772,12 +777,12 @@ Qt::ScreenOrientation QWindow::contentOrientation() const
on a device that only handles landscape buffers, typically a desktop
system).
- If the return value is false, call windowOrientation() to get the actual
+ If the return value is false, call \l orientation() to get the actual
supported orientation.
- \sa windowOrientation(), reportContentOrientationChange(), QScreen::orientation()
+ \sa orientation(), reportContentOrientationChange(), QScreen::orientation()
*/
-bool QWindow::requestWindowOrientation(Qt::ScreenOrientation orientation)
+bool QWindow::requestOrientation(Qt::ScreenOrientation orientation)
{
Q_D(QWindow);
if (!d->platformWindow)
@@ -792,34 +797,23 @@ bool QWindow::requestWindowOrientation(Qt::ScreenOrientation orientation)
The default value is Qt::PrimaryOrientation.
- \sa requestWindowOrientation()
+ \sa requestOrientation()
*/
-Qt::ScreenOrientation QWindow::windowOrientation() const
+Qt::ScreenOrientation QWindow::orientation() const
{
Q_D(const QWindow);
return d->windowOrientation;
}
/*!
- Returns the window state.
+ \brief set the screen-occupation state of the window
- \sa setWindowState()
-*/
-Qt::WindowState QWindow::windowState() const
-{
- Q_D(const QWindow);
- return d->windowState;
-}
-
-/*!
- Sets the desired window \a state.
-
- The window state represents whether the window appears in the
+ The window \a state represents whether the window appears in the
windowing system as maximized, minimized, fullscreen, or normal.
The enum value Qt::WindowActive is not an accepted parameter.
- \sa windowState(), showNormal(), showFullScreen(), showMinimized(), showMaximized()
+ \sa showNormal(), showFullScreen(), showMinimized(), showMaximized()
*/
void QWindow::setWindowState(Qt::WindowState state)
{
@@ -832,9 +826,29 @@ void QWindow::setWindowState(Qt::WindowState state)
if (d->platformWindow)
d->platformWindow->setWindowState(state);
d->windowState = state;
+ emit windowStateChanged(d->windowState);
}
/*!
+ \brief the screen-occupation state of the window
+
+ \sa setWindowState()
+*/
+Qt::WindowState QWindow::windowState() const
+{
+ Q_D(const QWindow);
+ return d->windowState;
+}
+
+/*!
+ \fn QWindow::windowStateChanged(Qt::WindowState windowState)
+
+ This signal is emitted when the \a windowState changes, either
+ by being set explicitly with setWindowState(), or automatically when
+ the user clicks one of the titlebar buttons or by other means.
+*/
+
+/*!
Sets the transient \a parent
This is a hint to the window manager that this window is a dialog or pop-up
@@ -1042,9 +1056,14 @@ void QWindow::setSizeIncrement(const QSize &size)
Sets the geometry of the window, excluding its window frame, to a
rectangle constructed from \a posx, \a posy, \a w and \a h.
- \sa geometry
+ \sa geometry()
*/
+/*!
+ \brief Sets the geometry of the window, excluding its window frame, to \a rect.
+
+ \sa geometry()
+*/
void QWindow::setGeometry(const QRect &rect)
{
Q_D(QWindow);
@@ -1184,40 +1203,52 @@ void QWindow::setFramePos(const QPoint &point)
}
/*!
- \property QWindow::pos
- \brief the position of the window on the desktop
+ \fn void QWindow::setPosition(const QPoint &pt)
+ \brief set the position of the window on the desktop to \a pt
+
+ \sa position()
+*/
+
+/*!
+ \fn void QWindow::setPosition(int posx, int posy)
+ \brief set the position of the window on the desktop to \a posx, \a posy
- \sa geometry
+ \sa position()
*/
/*!
- \property QWindow::size
- \brief the size of the window excluding any window frame
+ \fn QPoint QWindow::position() const
+ \brief get the position of the window on the desktop excluding any window frame
- \sa geometry
+ \sa setPosition()
*/
/*!
- \property QWindow::geometry
- \brief the geometry of the window excluding any window frame
+ \fn QSize QWindow::size() const
+ \brief get the size of the window excluding any window frame
- To make sure the window is visible, make sure the geometry is within
- the virtual geometry of its screen.
+ \sa resize()
+*/
- See the \l{Window Geometry} documentation for an overview of geometry
- issues with windows.
+/*!
+ \fn void QWindow::resize(int w, int h)
- By default, this property contains a value that depends on the user's
- platform and screen geometry.
+ set the size of the window, excluding any window frame, to a QSize
+ constructed from width \a w and height \a h
- \sa size, pos
+ \sa size(), geometry()
*/
+/*!
+ \brief set the size of the window, excluding any window frame, to \a newSize
+
+ \sa size(), geometry()
+*/
void QWindow::resize(const QSize &newSize)
{
Q_D(QWindow);
if (d->platformWindow) {
- d->platformWindow->setGeometry(QRect(pos(), newSize));
+ d->platformWindow->setGeometry(QRect(position(), newSize));
} else {
d->geometry.setSize(newSize);
}
@@ -1283,6 +1314,8 @@ QPlatformSurface *QWindow::surfaceHandle() const
bool QWindow::setKeyboardGrabEnabled(bool grab)
{
Q_D(QWindow);
+ if (grab && QGuiApplicationPrivate::noGrab)
+ return false;
if (d->platformWindow)
return d->platformWindow->setKeyboardGrabEnabled(grab);
return false;
@@ -1300,6 +1333,8 @@ bool QWindow::setKeyboardGrabEnabled(bool grab)
bool QWindow::setMouseGrabEnabled(bool grab)
{
Q_D(QWindow);
+ if (grab && QGuiApplicationPrivate::noGrab)
+ return false;
if (d->platformWindow)
return d->platformWindow->setMouseGrabEnabled(grab);
return false;
@@ -1461,7 +1496,7 @@ void QWindow::showFullScreen()
{
setWindowState(Qt::WindowFullScreen);
setVisible(true);
- requestActivateWindow();
+ requestActivate();
}
/*!
@@ -1669,6 +1704,12 @@ bool QWindow::event(QEvent *ev)
hideEvent(static_cast<QHideEvent *>(ev));
break;
+ case QEvent::WindowStateChange: {
+ Q_D(QWindow);
+ emit windowStateChanged(d->windowState);
+ break;
+ }
+
#ifndef QT_NO_TABLETEVENT
case QEvent::TabletPress:
case QEvent::TabletMove:
@@ -1880,17 +1921,16 @@ void QWindowPrivate::maybeQuitOnLastWindowClosed()
}
+#ifndef QT_NO_CURSOR
/*!
- \property QWindow::cursor
- \brief the cursor shape for this window
+ \brief set the cursor shape for this window
- The mouse cursor will assume this shape when it is over this
+ The mouse \a cursor will assume this shape when it is over this
window, unless an override cursor is set.
See the \l{Qt::CursorShape}{list of predefined cursor objects} for a
range of useful shapes.
- By default, this property contains a cursor with the Qt::ArrowCursor
- shape.
+ By default, the cursor has the Qt::ArrowCursor shape.
Some underlying window implementations will reset the cursor if it
leaves a window even if the mouse is grabbed. If you want to have
@@ -1899,14 +1939,6 @@ void QWindowPrivate::maybeQuitOnLastWindowClosed()
\sa QGuiApplication::setOverrideCursor()
*/
-
-#ifndef QT_NO_CURSOR
-QCursor QWindow::cursor() const
-{
- Q_D(const QWindow);
- return d->cursor;
-}
-
void QWindow::setCursor(const QCursor &cursor)
{
Q_D(QWindow);
@@ -1927,6 +1959,17 @@ void QWindow::unsetCursor()
setCursor(Qt::ArrowCursor);
}
+/*!
+ \brief the cursor shape for this window
+
+ \sa setCursor(), unsetCursor()
+*/
+QCursor QWindow::cursor() const
+{
+ Q_D(const QWindow);
+ return d->cursor;
+}
+
void QWindowPrivate::applyCursor()
{
Q_Q(QWindow);
@@ -1938,6 +1981,6 @@ void QWindowPrivate::applyCursor()
}
}
}
-#endif
+#endif // QT_NO_CURSOR
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qwindow.h b/src/gui/kernel/qwindow.h
index 4832adfb63..b2889539ef 100644
--- a/src/gui/kernel/qwindow.h
+++ b/src/gui/kernel/qwindow.h
@@ -93,26 +93,54 @@ class Q_GUI_EXPORT QWindow : public QObject, public QSurface
Q_OBJECT
Q_DECLARE_PRIVATE(QWindow)
- Q_PROPERTY(QString windowTitle READ windowTitle WRITE setWindowTitle)
- Q_PROPERTY(QString windowFilePath READ windowFilePath WRITE setWindowFilePath)
- Q_PROPERTY(QIcon windowIcon READ windowIcon WRITE setWindowIcon)
- Q_PROPERTY(Qt::WindowModality windowModality READ windowModality WRITE setWindowModality NOTIFY windowModalityChanged)
+ // All properties which are declared here are inherited by QQuickWindow and therefore available in QML.
+ // So please think carefully about what it does to the QML namespace if you add any new ones,
+ // particularly the possible meanings these names might have in any specializations of Window.
+ // For example "state" (meaning windowState) is not a good property to declare, because it has
+ // a different meaning in QQuickItem, and users will tend to assume it is the same for Window.
+
+ Q_PROPERTY(QString title READ title WRITE setTitle)
+ Q_PROPERTY(Qt::WindowModality modality READ modality WRITE setModality NOTIFY modalityChanged)
+ Q_PROPERTY(Qt::WindowFlags flags READ flags WRITE setFlags)
Q_PROPERTY(int x READ x WRITE setX NOTIFY xChanged)
Q_PROPERTY(int y READ y WRITE setY NOTIFY yChanged)
Q_PROPERTY(int width READ width WRITE setWidth NOTIFY widthChanged)
Q_PROPERTY(int height READ height WRITE setHeight NOTIFY heightChanged)
- Q_PROPERTY(QPoint pos READ pos WRITE setPos)
- Q_PROPERTY(QSize size READ size WRITE resize)
- Q_PROPERTY(QRect geometry READ geometry WRITE setGeometry)
Q_PROPERTY(int minimumWidth READ minimumWidth WRITE setMinimumWidth NOTIFY minimumWidthChanged)
Q_PROPERTY(int minimumHeight READ minimumHeight WRITE setMinimumHeight NOTIFY minimumHeightChanged)
Q_PROPERTY(int maximumWidth READ maximumWidth WRITE setMaximumWidth NOTIFY maximumWidthChanged)
Q_PROPERTY(int maximumHeight READ maximumHeight WRITE setMaximumHeight NOTIFY maximumHeightChanged)
Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged)
Q_PROPERTY(Qt::ScreenOrientation contentOrientation READ contentOrientation WRITE reportContentOrientationChange NOTIFY contentOrientationChanged)
-#ifndef QT_NO_CURSOR
- Q_PROPERTY(QCursor cursor READ cursor WRITE setCursor RESET unsetCursor)
-#endif
+
+ // ------------------------------------------------------------------------
+ // Temporary backwards-compatibility properties to be removed ASAP
+ Q_PROPERTY(QString windowTitle READ windowTitle WRITE setWindowTitle)
+ Q_PROPERTY(QString windowFilePath READ windowFilePath WRITE setWindowFilePath)
+ Q_PROPERTY(QIcon windowIcon READ windowIcon WRITE setWindowIcon)
+ Q_PROPERTY(Qt::WindowModality windowModality READ windowModality WRITE setWindowModality NOTIFY windowModalityChanged)
+
+public:
+
+ Qt::WindowModality windowModality() const { return modality(); }
+ void setWindowModality(Qt::WindowModality wm) { setModality(wm); }
+ void setWindowFlags(Qt::WindowFlags f) { setFlags(f); }
+ Qt::WindowFlags windowFlags() const { return flags(); }
+ Qt::WindowType windowType() const { return type(); }
+ QString windowTitle() const { return title(); }
+ void requestActivateWindow() { requestActivate(); }
+ bool requestWindowOrientation(Qt::ScreenOrientation o) { return requestOrientation(o); }
+ Qt::ScreenOrientation windowOrientation() const { return orientation(); }
+ void setWindowFilePath(const QString &fp) { setFilePath(fp); }
+ QString windowFilePath() const { return filePath(); }
+ void setWindowIcon(const QIcon &i) { setIcon(i); }
+ QIcon windowIcon() const { return icon(); }
+ void setWindowTitle(const QString &t) { setTitle(t); }
+
+Q_SIGNALS:
+ void windowModalityChanged(Qt::WindowModality windowModality);
+ // End of temporary backwards-compatibility properties
+ // ------------------------------------------------------------------------
public:
@@ -135,29 +163,29 @@ public:
bool isTopLevel() const;
bool isModal() const;
- Qt::WindowModality windowModality() const;
- void setWindowModality(Qt::WindowModality windowModality);
+ Qt::WindowModality modality() const;
+ void setModality(Qt::WindowModality modality);
void setFormat(const QSurfaceFormat &format);
QSurfaceFormat format() const;
QSurfaceFormat requestedFormat() const;
- void setWindowFlags(Qt::WindowFlags flags);
- Qt::WindowFlags windowFlags() const;
- Qt::WindowType windowType() const;
+ void setFlags(Qt::WindowFlags flags);
+ Qt::WindowFlags flags() const;
+ Qt::WindowType type() const;
- QString windowTitle() const;
+ QString title() const;
void setOpacity(qreal level);
- void requestActivateWindow();
+ void requestActivate();
bool isActive() const;
void reportContentOrientationChange(Qt::ScreenOrientation orientation);
Qt::ScreenOrientation contentOrientation() const;
- bool requestWindowOrientation(Qt::ScreenOrientation orientation);
- Qt::ScreenOrientation windowOrientation() const;
+ bool requestOrientation(Qt::ScreenOrientation orientation);
+ Qt::ScreenOrientation orientation() const;
Qt::WindowState windowState() const;
void setWindowState(Qt::WindowState state);
@@ -205,19 +233,25 @@ public:
inline int y() const { return geometry().y(); }
inline QSize size() const { return geometry().size(); }
- inline QPoint pos() const { return geometry().topLeft(); }
+ inline QPoint position() const { return geometry().topLeft(); }
- inline void setPos(const QPoint &pt) { setGeometry(QRect(pt, size())); }
- inline void setPos(int posx, int posy) { setPos(QPoint(posx, posy)); }
+ inline void setPosition(const QPoint &pt) { setGeometry(QRect(pt, size())); }
+ inline void setPosition(int posx, int posy) { setPosition(QPoint(posx, posy)); }
+
+// Temporary backwards-compatible accessors for the benefit of Declarative
+// to be removed ASAP
+ inline void setPos(const QPoint &pt) { setPosition(pt); }
+ inline void setPos(int posx, int posy) { setPosition(posx, posy); }
+// end of temporary accessors
void resize(const QSize &newSize);
inline void resize(int w, int h) { resize(QSize(w, h)); }
- void setWindowFilePath(const QString &filePath);
- QString windowFilePath() const;
+ void setFilePath(const QString &filePath);
+ QString filePath() const;
- void setWindowIcon(const QIcon &icon);
- QIcon windowIcon() const;
+ void setIcon(const QIcon &icon);
+ QIcon icon() const;
void destroy();
@@ -256,7 +290,7 @@ public Q_SLOTS:
void raise();
void lower();
- void setWindowTitle(const QString &);
+ void setTitle(const QString &);
void setX(int arg)
{
@@ -289,7 +323,8 @@ public Q_SLOTS:
Q_SIGNALS:
void screenChanged(QScreen *screen);
- void windowModalityChanged(Qt::WindowModality windowModality);
+ void modalityChanged(Qt::WindowModality modality);
+ void windowStateChanged(Qt::WindowState windowState);
void xChanged(int arg);
void yChanged(int arg);
diff --git a/src/gui/kernel/qwindow_p.h b/src/gui/kernel/qwindow_p.h
index bce6a4ff04..fcc5540185 100644
--- a/src/gui/kernel/qwindow_p.h
+++ b/src/gui/kernel/qwindow_p.h
@@ -42,6 +42,17 @@
#ifndef QWINDOW_P_H
#define QWINDOW_P_H
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
#include <QtGui/qwindow.h>
#include <qpa/qplatformwindow.h>
@@ -52,7 +63,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-
#define QWINDOWSIZE_MAX ((1<<24)-1)
class Q_GUI_EXPORT QWindowPrivate : public QObjectPrivate
@@ -104,9 +114,9 @@ public:
QPoint globalPosition() const {
Q_Q(const QWindow);
- QPoint offset = q->pos();
+ QPoint offset = q->position();
for (const QWindow *p = q->parent(); p; p = p->parent())
- offset += p->pos();
+ offset += p->position();
return offset;
}
diff --git a/src/gui/kernel/qwindowsysteminterface.cpp b/src/gui/kernel/qwindowsysteminterface.cpp
index 6fb10b6c75..acc6eace99 100644
--- a/src/gui/kernel/qwindowsysteminterface.cpp
+++ b/src/gui/kernel/qwindowsysteminterface.cpp
@@ -75,10 +75,10 @@ extern QPointer<QWindow> qt_last_mouse_receiver;
until sendWindowSystemEvents() is called by the event dispatcher.
*/
-void QWindowSystemInterface::handleEnterEvent(QWindow *tlw)
+void QWindowSystemInterface::handleEnterEvent(QWindow *tlw, const QPointF &local, const QPointF &global)
{
if (tlw) {
- QWindowSystemInterfacePrivate::EnterEvent *e = new QWindowSystemInterfacePrivate::EnterEvent(tlw);
+ QWindowSystemInterfacePrivate::EnterEvent *e = new QWindowSystemInterfacePrivate::EnterEvent(tlw, local, global);
QWindowSystemInterfacePrivate::handleWindowSystemEvent(e);
}
}
@@ -96,13 +96,13 @@ void QWindowSystemInterface::handleLeaveEvent(QWindow *tlw)
determine where mouse went and act accordingly. E.g. QWidgetWindow needs to know if mouse
cursor moves between windows in same window hierarchy.
*/
-void QWindowSystemInterface::handleEnterLeaveEvent(QWindow *enter, QWindow *leave)
+void QWindowSystemInterface::handleEnterLeaveEvent(QWindow *enter, QWindow *leave, const QPointF &local, const QPointF& global)
{
bool wasSynchronous = QWindowSystemInterfacePrivate::synchronousWindowsSystemEvents;
if (wasSynchronous)
setSynchronousWindowsSystemEvents(false);
handleLeaveEvent(leave);
- handleEnterEvent(enter);
+ handleEnterEvent(enter, local, global);
if (wasSynchronous) {
flushWindowSystemEvents();
setSynchronousWindowsSystemEvents(true);
diff --git a/src/gui/kernel/qwindowsysteminterface.h b/src/gui/kernel/qwindowsysteminterface.h
index b4b2e845fc..a3d2f1b000 100644
--- a/src/gui/kernel/qwindowsysteminterface.h
+++ b/src/gui/kernel/qwindowsysteminterface.h
@@ -134,9 +134,9 @@ public:
static void handleGeometryChange(QWindow *w, const QRect &newRect);
static void handleCloseEvent(QWindow *w);
- static void handleEnterEvent(QWindow *w);
+ static void handleEnterEvent(QWindow *w, const QPointF &local = QPointF(), const QPointF& global = QPointF());
static void handleLeaveEvent(QWindow *w);
- static void handleEnterLeaveEvent(QWindow *enter, QWindow *leave);
+ static void handleEnterLeaveEvent(QWindow *enter, QWindow *leave, const QPointF &local = QPointF(), const QPointF& global = QPointF());
static void handleWindowActivated(QWindow *w);
static void handleWindowStateChanged(QWindow *w, Qt::WindowState newState);
diff --git a/src/gui/kernel/qwindowsysteminterface_p.h b/src/gui/kernel/qwindowsysteminterface_p.h
index 1b5351db71..b174fd0ca2 100644
--- a/src/gui/kernel/qwindowsysteminterface_p.h
+++ b/src/gui/kernel/qwindowsysteminterface_p.h
@@ -41,6 +41,17 @@
#ifndef QWINDOWSYSTEMINTERFACE_P_H
#define QWINDOWSYSTEMINTERFACE_P_H
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
#include "qwindowsysteminterface.h"
#include <QElapsedTimer>
@@ -108,10 +119,12 @@ public:
class EnterEvent : public WindowSystemEvent {
public:
- explicit EnterEvent(QWindow *enter)
- : WindowSystemEvent(Enter), enter(enter)
+ explicit EnterEvent(QWindow *enter, const QPointF &local, const QPointF &global)
+ : WindowSystemEvent(Enter), enter(enter), localPos(local), globalPos(global)
{ }
QPointer<QWindow> enter;
+ const QPointF localPos;
+ const QPointF globalPos;
};
class LeaveEvent : public WindowSystemEvent {
diff --git a/src/gui/opengl/qopenglbuffer.cpp b/src/gui/opengl/qopenglbuffer.cpp
index f84bbcbaa5..11c85f8f25 100644
--- a/src/gui/opengl/qopenglbuffer.cpp
+++ b/src/gui/opengl/qopenglbuffer.cpp
@@ -209,8 +209,10 @@ QOpenGLBuffer &QOpenGLBuffer::operator=(const QOpenGLBuffer &other)
{
if (d_ptr != other.d_ptr) {
other.d_ptr->ref.ref();
- if (!d_ptr->ref.deref())
+ if (!d_ptr->ref.deref()) {
destroy();
+ delete d_ptr;
+ }
d_ptr = other.d_ptr;
}
return *this;
diff --git a/src/gui/opengl/qopenglframebufferobject.cpp b/src/gui/opengl/qopenglframebufferobject.cpp
index 380ada37e0..1e0a9e025b 100644
--- a/src/gui/opengl/qopenglframebufferobject.cpp
+++ b/src/gui/opengl/qopenglframebufferobject.cpp
@@ -1014,66 +1014,25 @@ QOpenGLFramebufferObjectFormat QOpenGLFramebufferObject::format() const
return d->format;
}
-namespace {
-/*
- Read back the contents of the currently bound framebuffer, used in
- QGLWidget::grabFrameBuffer(), QGLPixelbuffer::toImage() and
- QGLFramebufferObject::toImage()
-*/
-
-void convertFromGLImage(QImage &img, int w, int h, bool alpha_format, bool include_alpha)
-{
- if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
- // OpenGL gives RGBA; Qt wants ARGB
- uint *p = (uint*)img.bits();
- uint *end = p + w*h;
- if (alpha_format && include_alpha) {
- while (p < end) {
- uint a = *p << 24;
- *p = (*p >> 8) | a;
- p++;
- }
- } else {
- // This is an old legacy fix for PowerPC based Macs, which
- // we shouldn't remove
- while (p < end) {
- *p = 0xff000000 | (*p>>8);
- ++p;
- }
- }
- } else {
- // OpenGL gives ABGR (i.e. RGBA backwards); Qt wants ARGB
- for (int y = 0; y < h; y++) {
- uint *q = (uint*)img.scanLine(y);
- for (int x=0; x < w; ++x) {
- const uint pixel = *q;
- if (alpha_format && include_alpha) {
- *q = ((pixel << 16) & 0xff0000) | ((pixel >> 16) & 0xff)
- | (pixel & 0xff00ff00);
- } else {
- *q = 0xff000000 | ((pixel << 16) & 0xff0000)
- | ((pixel >> 16) & 0xff) | (pixel & 0x00ff00);
- }
-
- q++;
- }
- }
-
- }
- img = img.mirrored();
-}
-
-}
-
Q_GUI_EXPORT QImage qt_gl_read_framebuffer(const QSize &size, bool alpha_format, bool include_alpha)
{
QImage img(size, (alpha_format && include_alpha) ? QImage::Format_ARGB32_Premultiplied
: QImage::Format_RGB32);
int w = size.width();
int h = size.height();
- glReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, img.bits());
- convertFromGLImage(img, w, h, alpha_format, include_alpha);
- return img;
+
+#ifdef QT_OPENGL_ES
+ GLint fmt = GL_BGRA_EXT;
+#else
+ GLint fmt = GL_BGRA;
+#endif
+ while (glGetError());
+ glReadPixels(0, 0, w, h, fmt, GL_UNSIGNED_BYTE, img.bits());
+ if (glGetError()) {
+ glReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, img.bits());
+ img = img.rgbSwapped();
+ }
+ return img.mirrored();
}
/*!
diff --git a/src/gui/opengl/qopenglfunctions.cpp b/src/gui/opengl/qopenglfunctions.cpp
index e2191d6f3a..4d6a0e437d 100644
--- a/src/gui/opengl/qopenglfunctions.cpp
+++ b/src/gui/opengl/qopenglfunctions.cpp
@@ -344,6 +344,10 @@ static int qt_gl_resolve_extensions()
extensions |= QOpenGLExtensions::ElementIndexUint;
if (extensionMatcher.match("GL_OES_depth24"))
extensions |= QOpenGLExtensions::Depth24;
+
+ if (extensionMatcher.match("GL_EXT_bgra"))
+ extensions |= QOpenGLExtensions::BGRATextureFormat;
+
#else
extensions |= QOpenGLExtensions::ElementIndexUint | QOpenGLExtensions::MapBuffer;
diff --git a/src/gui/opengl/qopengltextureglyphcache.cpp b/src/gui/opengl/qopengltextureglyphcache.cpp
index 4538961359..4e20f6aad2 100644
--- a/src/gui/opengl/qopengltextureglyphcache.cpp
+++ b/src/gui/opengl/qopengltextureglyphcache.cpp
@@ -42,6 +42,7 @@
#include "qopengltextureglyphcache_p.h"
#include "qopenglpaintengine_p.h"
#include "private/qopenglengineshadersource_p.h"
+#include "qopenglextensions_p.h"
QT_BEGIN_NAMESPACE
@@ -301,6 +302,11 @@ void QOpenGLTextureGlyphCache::fillTexture(const Coord &c, glyph_t glyph, QFixed
const int maskWidth = mask.width();
const int maskHeight = mask.height();
+#if defined(QT_OPENGL_ES_2)
+ QOpenGLExtensions extensions(ctx);
+ bool hasBGRA = extensions.hasOpenGLExtension(QOpenGLExtensions::BGRATextureFormat);
+#endif
+
if (mask.format() == QImage::Format_Mono) {
mask = mask.convertToFormat(QImage::Format_Indexed8);
for (int y = 0; y < maskHeight; ++y) {
@@ -318,7 +324,14 @@ void QOpenGLTextureGlyphCache::fillTexture(const Coord &c, glyph_t glyph, QFixed
uchar g = src[x] >> 8;
uchar b = src[x];
quint32 avg = (quint32(r) + quint32(g) + quint32(b) + 1) / 3; // "+1" for rounding.
- src[x] = (src[x] & 0x00ffffff) | (avg << 24);
+
+#if defined(QT_OPENGL_ES_2)
+ if (!hasBGRA) {
+ // Reverse bytes to match GL_RGBA
+ src[x] = (avg << 24) | (quint32(r) << 0) | (quint32(g) << 8) | (quint32(b) << 16);
+ } else
+#endif
+ src[x] = (src[x] & 0x00ffffff) | (avg << 24);
}
}
}
@@ -326,8 +339,7 @@ void QOpenGLTextureGlyphCache::fillTexture(const Coord &c, glyph_t glyph, QFixed
glBindTexture(GL_TEXTURE_2D, m_textureResource->m_texture);
if (mask.format() == QImage::Format_RGB32) {
#if defined(QT_OPENGL_ES_2)
- // ###TODO Ensure extension is actually present on ES2
- glTexSubImage2D(GL_TEXTURE_2D, 0, c.x, c.y, maskWidth, maskHeight, GL_BGRA_EXT, GL_UNSIGNED_BYTE, mask.bits());
+ glTexSubImage2D(GL_TEXTURE_2D, 0, c.x, c.y, maskWidth, maskHeight, hasBGRA ? GL_BGRA_EXT : GL_RGBA, GL_UNSIGNED_BYTE, mask.bits());
#else
glTexSubImage2D(GL_TEXTURE_2D, 0, c.x, c.y, maskWidth, maskHeight, GL_BGRA, GL_UNSIGNED_BYTE, mask.bits());
#endif
diff --git a/src/gui/painting/qpaintengine_blitter.cpp b/src/gui/painting/qpaintengine_blitter.cpp
index 1acdf8c433..c45513b4aa 100644
--- a/src/gui/painting/qpaintengine_blitter.cpp
+++ b/src/gui/painting/qpaintengine_blitter.cpp
@@ -330,7 +330,11 @@ void QBlitterPaintEnginePrivate::updateTransformState(QPainterState *s)
{
QTransform::TransformationType type = s->matrix.type();
- caps.updateState(STATE_XFORM_COMPLEX, type > QTransform::TxScale);
+ // consider scaling operations with a negative factor as "complex" for now.
+ // as some blitters could handle axisymmetrical operations, we should improve blitter
+ // paint engine to handle them as a capability
+ caps.updateState(STATE_XFORM_COMPLEX, (type > QTransform::TxScale) ||
+ ((type == QTransform::TxScale) && ((s->matrix.m11() < 0.0) || (s->matrix.m22() < 0.0))));
caps.updateState(STATE_XFORM_SCALE, type > QTransform::TxTranslate);
hasXForm = type >= QTransform::TxTranslate;
diff --git a/src/gui/text/qfont_p.h b/src/gui/text/qfont_p.h
index 2a37b56d87..ad8ba0758f 100644
--- a/src/gui/text/qfont_p.h
+++ b/src/gui/text/qfont_p.h
@@ -73,7 +73,8 @@ struct QFontDef
: pointSize(-1.0), pixelSize(-1),
styleStrategy(QFont::PreferDefault), styleHint(QFont::AnyStyle),
weight(50), fixedPitch(false), style(QFont::StyleNormal), stretch(100),
- ignorePitch(true), hintingPreference(QFont::PreferDefaultHinting)
+ hintingPreference(QFont::PreferDefaultHinting), ignorePitch(true),
+ fixedPitchComputed(0), reserved(0)
{
}
@@ -93,8 +94,8 @@ struct QFontDef
uint style : 2;
uint stretch : 12; // 0-400
- uint ignorePitch : 1;
uint hintingPreference : 2;
+ uint ignorePitch : 1;
uint fixedPitchComputed : 1; // for Mac OS X only
int reserved : 14; // for future extensions
diff --git a/src/network/kernel/qdnslookup.cpp b/src/network/kernel/qdnslookup.cpp
index a49301f27b..85aaa096c1 100644
--- a/src/network/kernel/qdnslookup.cpp
+++ b/src/network/kernel/qdnslookup.cpp
@@ -47,6 +47,8 @@
#include <qthreadstorage.h>
#include <qurl.h>
+#include <algorithm>
+
QT_BEGIN_NAMESPACE
Q_GLOBAL_STATIC(QDnsLookupThreadPool, theDnsLookupThreadPool);
@@ -69,7 +71,7 @@ static void qt_qdnsmailexchangerecord_sort(QList<QDnsMailExchangeRecord> &record
return;
// Order the records by preference.
- qSort(records.begin(), records.end(), qt_qdnsmailexchangerecord_less_than);
+ std::sort(records.begin(), records.end(), qt_qdnsmailexchangerecord_less_than);
int i = 0;
while (i < records.size()) {
@@ -112,7 +114,7 @@ static void qt_qdnsservicerecord_sort(QList<QDnsServiceRecord> &records)
// Order the records by priority, and for records with an equal
// priority, put records with a zero weight first.
- qSort(records.begin(), records.end(), qt_qdnsservicerecord_less_than);
+ std::sort(records.begin(), records.end(), qt_qdnsservicerecord_less_than);
int i = 0;
while (i < records.size()) {
diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp
index 398a3d447e..eeae9d461f 100644
--- a/src/network/ssl/qsslsocket_openssl_symbols.cpp
+++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp
@@ -57,6 +57,8 @@
#include <link.h>
#endif
+#include <algorithm>
+
QT_BEGIN_NAMESPACE
/*
@@ -410,7 +412,7 @@ static QStringList findAllLibSsl()
QDir dir(path);
QStringList entryList = dir.entryList(QStringList() << QLatin1String("libssl.*"), QDir::Files);
- qSort(entryList.begin(), entryList.end(), libGreaterThan);
+ std::sort(entryList.begin(), entryList.end(), libGreaterThan);
foreach (const QString &entry, entryList)
foundSsls << path + QLatin1Char('/') + entry;
}
@@ -427,7 +429,7 @@ static QStringList findAllLibCrypto()
QDir dir(path);
QStringList entryList = dir.entryList(QStringList() << QLatin1String("libcrypto.*"), QDir::Files);
- qSort(entryList.begin(), entryList.end(), libGreaterThan);
+ std::sort(entryList.begin(), entryList.end(), libGreaterThan);
foreach (const QString &entry, entryList)
foundCryptos << path + QLatin1Char('/') + entry;
}
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index 9b456f6a64..817b7c329b 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -3854,6 +3854,7 @@ void QGLWidget::initializeGL()
void QGLWidget::paintGL()
{
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
diff --git a/src/opengl/qglbuffer.cpp b/src/opengl/qglbuffer.cpp
index 5e503d9985..acb13d69f5 100644
--- a/src/opengl/qglbuffer.cpp
+++ b/src/opengl/qglbuffer.cpp
@@ -211,8 +211,10 @@ QGLBuffer &QGLBuffer::operator=(const QGLBuffer &other)
{
if (d_ptr != other.d_ptr) {
other.d_ptr->ref.ref();
- if (!d_ptr->ref.deref())
+ if (!d_ptr->ref.deref()) {
destroy();
+ delete d_ptr;
+ }
d_ptr = other.d_ptr;
}
return *this;
diff --git a/src/platformsupport/dnd/qshapedpixmapdndwindow.cpp b/src/platformsupport/dnd/qshapedpixmapdndwindow.cpp
index 94a9a390e5..e02ab1e10d 100644
--- a/src/platformsupport/dnd/qshapedpixmapdndwindow.cpp
+++ b/src/platformsupport/dnd/qshapedpixmapdndwindow.cpp
@@ -54,7 +54,7 @@ QShapedPixmapWindow::QShapedPixmapWindow()
format.setAlphaBufferSize(8);
setFormat(format);
setSurfaceType(RasterSurface);
- setWindowFlags(Qt::ToolTip | Qt::FramelessWindowHint |
+ setFlags(Qt::ToolTip | Qt::FramelessWindowHint |
Qt::X11BypassWindowManagerHint | Qt::WindowTransparentForInput);
create();
m_backingStore = new QBackingStore(this);
diff --git a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm
index 66ca2d37fa..99a316bef3 100644
--- a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm
+++ b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm
@@ -137,22 +137,44 @@ QCoreTextFontDatabase::QCoreTextFontDatabase()
if (appleValue.isValid()) {
font_smoothing = appleValue.toInt();
} else {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- // find the primary display (which is always the first NSScreen
- // according to the documentation)
- NSScreen *defaultScreen = [[NSScreen screens] objectAtIndex:0];
- CGDirectDisplayID displayId = [[[defaultScreen deviceDescription] objectForKey:@"NSScreenNumber"] unsignedIntValue];
- io_service_t iodisplay = CGDisplayIOServicePort(displayId);
-
- // determine if font smoothing is available based on the subpixel
- // layout of the primary display
- NSDictionary *d = (NSDictionary *) IODisplayCreateInfoDictionary(iodisplay, kIODisplayOnlyPreferredName);
- uint displaySubpixelLayout = [[d objectForKey:@kDisplaySubPixelLayout] unsignedIntValue];
- [d release];
- font_smoothing = (displaySubpixelLayout == kDisplaySubPixelLayoutUndefined ? 0 : 1);
-
- [pool release];
+ // non-Apple displays do not provide enough information about subpixel rendering so
+ // draw text with cocoa and compare pixel colors to see if subpixel rendering is enabled
+ int w = 10;
+ int h = 10;
+ NSRect rect = NSMakeRect(0.0, 0.0, w, h);
+ NSImage *fontImage = [[NSImage alloc] initWithSize:NSMakeSize(w, h)];
+
+ [fontImage lockFocus];
+
+ [[NSColor whiteColor] setFill];
+ NSRectFill(rect);
+
+ NSString *str = @"X\\";
+ NSFont *font = [NSFont fontWithName:@"Helvetica" size:10.0];
+ NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
+ [attrs setObject:font forKey:NSFontAttributeName];
+ [attrs setObject:[NSColor blackColor] forKey:NSForegroundColorAttributeName];
+
+ [str drawInRect:rect withAttributes:attrs];
+
+ NSBitmapImageRep *nsBitmapImage = [[NSBitmapImageRep alloc] initWithFocusedViewRect:rect];
+
+ [fontImage unlockFocus];
+
+ float red, green, blue;
+ for (int x = 0; x < w; x++) {
+ for (int y = 0; y < h; y++) {
+ NSColor *pixelColor = [nsBitmapImage colorAtX:x y:y];
+ red = [pixelColor redComponent];
+ green = [pixelColor greenComponent];
+ blue = [pixelColor blueComponent];
+ if (red != green || red != blue)
+ font_smoothing = 1;
+ }
+ }
+
+ [nsBitmapImage release];
+ [fontImage release];
}
QCoreTextFontEngine::defaultGlyphFormat = (font_smoothing > 0
? QFontEngineGlyphCache::Raster_RGBMask
@@ -387,7 +409,7 @@ QStringList QCoreTextFontDatabase::addApplicationFont(const QByteArray &fontData
}
} else {
CFErrorRef error;
- QCFType<CFURLRef> fontURL = CFURLCreateWithFileSystemPath(NULL, QCFString(fileName), 0, false);
+ QCFType<CFURLRef> fontURL = CFURLCreateWithFileSystemPath(NULL, QCFString(fileName), kCFURLPOSIXPathStyle, false);
bool success = CTFontManagerRegisterFontsForURL(fontURL, kCTFontManagerScopeProcess, &error);
if (success) {
const void *keys[] = { fontURL };
diff --git a/src/platformsupport/input/evdevtouch/qevdevtouch.cpp b/src/platformsupport/input/evdevtouch/qevdevtouch.cpp
index 0a3bd8d669..9dd607b425 100644
--- a/src/platformsupport/input/evdevtouch/qevdevtouch.cpp
+++ b/src/platformsupport/input/evdevtouch/qevdevtouch.cpp
@@ -350,6 +350,11 @@ void QEvdevTouchScreenData::processInputEvent(input_event *data)
m_currentSlot = data->value;
}
+ } else if (data->type == EV_KEY && !m_typeB) {
+ if (data->code == BTN_TOUCH && data->value == 0)
+ {
+ m_contacts[m_currentSlot].state = Qt::TouchPointReleased;
+ }
} else if (data->type == EV_SYN && data->code == SYN_MT_REPORT && m_lastEventType != EV_SYN) {
// If there is no tracking id, one will be generated later.
diff --git a/src/platformsupport/linuxaccessibility/linuxaccessibility.pri b/src/platformsupport/linuxaccessibility/linuxaccessibility.pri
index 66d69add1f..85a02da004 100644
--- a/src/platformsupport/linuxaccessibility/linuxaccessibility.pri
+++ b/src/platformsupport/linuxaccessibility/linuxaccessibility.pri
@@ -1,7 +1,5 @@
contains(QT_CONFIG, dbus):contains(QT_CONFIG, xcb):contains(QT_CONFIG, accessibility) {
- PKGCONFIG += atspi-2
- CONFIG += link_pkgconfig
QT += dbus
include(../../3rdparty/atspi2/atspi2.pri)
diff --git a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp
index d219fbef4e..a39f26efc8 100644
--- a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp
+++ b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp
@@ -427,9 +427,9 @@ QStringList QGenericUnixTheme::themeNames()
} else if (QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment() == QByteArray("GNOME")) {
result.push_back(QLatin1String(QGnomeTheme::name));
}
- const QByteArray session = qgetenv("DESKTOP_SESSION");
- if (!session.isEmpty() && session != "default")
- result.push_back(QString::fromLocal8Bit(session));
+ const QString session = QString::fromLocal8Bit(qgetenv("DESKTOP_SESSION"));
+ if (!session.isEmpty() && session != QStringLiteral("default") && !result.contains(session))
+ result.push_back(session);
} // desktopSettingsAware
if (result.isEmpty())
result.push_back(QLatin1String(QGenericUnixTheme::name));
diff --git a/src/plugins/accessible/widgets/simplewidgets.cpp b/src/plugins/accessible/widgets/simplewidgets.cpp
index 9bdb1decde..a45c199419 100644
--- a/src/plugins/accessible/widgets/simplewidgets.cpp
+++ b/src/plugins/accessible/widgets/simplewidgets.cpp
@@ -653,6 +653,8 @@ void *QAccessibleLineEdit::interface_cast(QAccessible::InterfaceType t)
{
if (t == QAccessible::TextInterface)
return static_cast<QAccessibleTextInterface*>(this);
+ if (t == QAccessible::EditableTextInterface)
+ return static_cast<QAccessibleEditableTextInterface*>(this);
return QAccessibleWidget::interface_cast(t);
}
@@ -784,6 +786,21 @@ void QAccessibleLineEdit::scrollToSubstring(int startIndex, int endIndex)
lineEdit()->setCursorPosition(startIndex);
}
+void QAccessibleLineEdit::deleteText(int startOffset, int endOffset)
+{
+ lineEdit()->setText(lineEdit()->text().remove(startOffset, endOffset - startOffset));
+}
+
+void QAccessibleLineEdit::insertText(int offset, const QString &text)
+{
+ lineEdit()->setText(lineEdit()->text().insert(offset, text));
+}
+
+void QAccessibleLineEdit::replaceText(int startOffset, int endOffset, const QString &text)
+{
+ lineEdit()->setText(lineEdit()->text().replace(startOffset, endOffset - startOffset, text));
+}
+
#endif // QT_NO_LINEEDIT
#ifndef QT_NO_PROGRESSBAR
diff --git a/src/plugins/accessible/widgets/simplewidgets.h b/src/plugins/accessible/widgets/simplewidgets.h
index 7891e13c20..2e1bca88b4 100644
--- a/src/plugins/accessible/widgets/simplewidgets.h
+++ b/src/plugins/accessible/widgets/simplewidgets.h
@@ -137,7 +137,7 @@ private:
#endif
#ifndef QT_NO_LINEEDIT
-class QAccessibleLineEdit : public QAccessibleWidget, public QAccessibleTextInterface
+class QAccessibleLineEdit : public QAccessibleWidget, public QAccessibleTextInterface, public QAccessibleEditableTextInterface
{
public:
explicit QAccessibleLineEdit(QWidget *o, const QString &name = QString());
@@ -168,6 +168,10 @@ public:
int characterCount() const;
void scrollToSubstring(int startIndex, int endIndex);
+ // QAccessibleEditableTextInterface
+ void deleteText(int startOffset, int endOffset);
+ void insertText(int offset, const QString &text);
+ void replaceText(int startOffset, int endOffset, const QString &text);
protected:
QLineEdit *lineEdit() const;
};
diff --git a/src/plugins/platforms/cocoa/cocoa.pro b/src/plugins/platforms/cocoa/cocoa.pro
index 3ea5dc2d1c..ce46c46b0e 100644
--- a/src/plugins/platforms/cocoa/cocoa.pro
+++ b/src/plugins/platforms/cocoa/cocoa.pro
@@ -37,6 +37,7 @@ OBJECTIVE_SOURCES += main.mm \
qcocoainputcontext.mm \
qcocoaservices.mm \
qcocoasystemtrayicon.mm \
+ qcocoaintrospection.mm \
HEADERS += qcocoaintegration.h \
qcocoatheme.h \
@@ -70,6 +71,7 @@ HEADERS += qcocoaintegration.h \
qcocoainputcontext.h \
qcocoaservices.h \
qcocoasystemtrayicon.h \
+ qcocoaintrospection.h \
RESOURCES += qcocoaresources.qrc
diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibility.h b/src/plugins/platforms/cocoa/qcocoaaccessibility.h
index ad2267c6bf..e2a64331ac 100644
--- a/src/plugins/platforms/cocoa/qcocoaaccessibility.h
+++ b/src/plugins/platforms/cocoa/qcocoaaccessibility.h
@@ -44,6 +44,18 @@
#include <Cocoa/Cocoa.h>
#include <QtGui>
+#include <qpa/qplatformaccessibility.h>
+
+class QCococaAccessibility : public QPlatformAccessibility
+{
+public:
+ QCococaAccessibility();
+ ~QCococaAccessibility();
+ void notifyAccessibilityUpdate(QAccessibleEvent *event);
+ void setRootObject(QObject *o);
+ void initialize();
+ void cleanup();
+};
namespace QCocoaAccessible {
@@ -52,9 +64,9 @@ namespace QCocoaAccessible {
Cocoa accessibility is implemented in the following files:
+ - qcocoaaccessibility (this file) : QCocoaAccessibility "plugin", conversion and helper functions.
- qnsviewaccessibility : Root accessibility implementation for QNSView
- qcocoaaccessibilityelement : Cocoa accessibility protocol wrapper for QAccessibleInterface
- - qcocoaaccessibility (this file) : Conversion and helper functions.
The accessibility implementation wraps QAccessibleInterfaces in QCocoaAccessibleElements, which
implements the cocoa accessibility protocol. The root QAccessibleInterface (the one returned
@@ -70,6 +82,8 @@ bool shouldBeIgnrored(QAccessibleInterface *interface);
NSString *getTranslatedAction(const QString &qtAction);
NSMutableArray *createTranslatedActionsList(const QStringList &qtActions);
QString translateAction(NSString *nsAction);
+bool hasValueAttribute(QAccessibleInterface *interface);
+id getValueAttribute(QAccessibleInterface *interface);
}
diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibility.mm b/src/plugins/platforms/cocoa/qcocoaaccessibility.mm
index 4b897fc211..66cb979031 100644
--- a/src/plugins/platforms/cocoa/qcocoaaccessibility.mm
+++ b/src/plugins/platforms/cocoa/qcocoaaccessibility.mm
@@ -39,6 +39,60 @@
**
****************************************************************************/
#include "qcocoaaccessibility.h"
+#include "qcocoaaccessibilityelement.h"
+#include <qaccessible.h>
+#include <qaccessible2.h>
+#include <private/qcore_mac_p.h>
+
+QCococaAccessibility::QCococaAccessibility()
+{
+
+}
+
+QCococaAccessibility::~QCococaAccessibility()
+{
+
+}
+
+void QCococaAccessibility::notifyAccessibilityUpdate(QAccessibleEvent *event)
+{
+ QObject *object = event->object();
+ if (!object)
+ return;
+
+ QAccessibleInterface *interface = QAccessible::queryAccessibleInterface(object);
+ if (!interface)
+ return;
+
+ switch (event->type()) {
+ case QAccessible::ValueChanged:
+ case QAccessible::TextInserted :
+ case QAccessible::TextRemoved :
+ case QAccessible::TextUpdated : {
+ QCocoaAccessibleElement *element = [QCocoaAccessibleElement elementWithInterface : interface parent : nil];
+ NSAccessibilityPostNotification(element, NSAccessibilityValueChangedNotification);
+ break; }
+
+ default:
+ delete interface;
+ break;
+ }
+}
+
+void QCococaAccessibility::setRootObject(QObject *o)
+{
+ Q_UNUSED(o)
+}
+
+void QCococaAccessibility::initialize()
+{
+
+}
+
+void QCococaAccessibility::cleanup()
+{
+
+}
namespace QCocoaAccessible {
@@ -218,4 +272,43 @@ QString translateAction(NSString *nsAction)
return QString();
}
+bool hasValueAttribute(QAccessibleInterface *interface)
+{
+ const QAccessible::Role qtrole = interface->role();
+ if (qtrole == QAccessible::EditableText
+ || interface->valueInterface()) {
+ return true;
+ }
+
+ return false;
+}
+
+id getValueAttribute(QAccessibleInterface *interface)
+{
+ const QAccessible::Role qtrole = interface->role();
+ if (qtrole == QAccessible::EditableText) {
+ if (QAccessibleTextInterface *textInterface = interface->textInterface()) {
+ // VoiceOver will read out the entire text string at once when returning
+ // text as a value. For large text edits the size of the returned string
+ // needs to be limited and text range attributes need to be used instead.
+ // NSTextEdit returns the first sentence as the value, Do the same here:
+ int begin = 0;
+ int end = textInterface->characterCount();
+ // ### call to textAfterOffset hangs. Booo!
+ //if (textInterface->characterCount() > 0)
+ // textInterface->textAfterOffset(0, QAccessible2::SentenceBoundary, &begin, &end);
+
+ QString text = textInterface->text(begin, end);
+ //qDebug() << "text" << begin << end << text;
+ return QCFString::toNSString(text);
+ }
+ }
+
+ if (QAccessibleValueInterface *valueInterface = interface->valueInterface()) {
+ return QCFString::toNSString(QString::number(valueInterface->currentValue().toDouble()));
+ }
+
+ return nil;
+}
+
} // namespace QCocoaAccessible
diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm
index c39290357e..cc1d393029 100644
--- a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm
+++ b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm
@@ -96,9 +96,9 @@ static QAccessibleInterface *acast(void *ptr)
// attributes
- (NSArray *)accessibilityAttributeNames {
- static NSArray *attributes = nil;
- if (attributes == nil) {
- attributes = [[NSArray alloc] initWithObjects:
+ static NSArray *defaultAttributes = nil;
+ if (defaultAttributes == nil) {
+ defaultAttributes = [[NSArray alloc] initWithObjects:
NSAccessibilityRoleAttribute,
NSAccessibilityRoleDescriptionAttribute,
NSAccessibilityChildrenAttribute,
@@ -112,6 +112,14 @@ static QAccessibleInterface *acast(void *ptr)
NSAccessibilityEnabledAttribute,
nil];
}
+
+ NSMutableArray *attributes = [[NSMutableArray alloc] initWithCapacity : [defaultAttributes count]];
+ [attributes addObjectsFromArray : defaultAttributes];
+
+ if (QCocoaAccessible::hasValueAttribute(acast(accessibleInterface))) {
+ [attributes addObject : NSAccessibilityValueAttribute];
+ }
+
return attributes;
}
@@ -153,6 +161,13 @@ static QAccessibleInterface *acast(void *ptr)
return QCFString::toNSString(acast(accessibleInterface)->text(QAccessible::Name));
} else if ([attribute isEqualToString:NSAccessibilityEnabledAttribute]) {
return [NSNumber numberWithBool:!acast(accessibleInterface)->state().disabled];
+ } else if ([attribute isEqualToString:NSAccessibilityValueAttribute]) {
+ // VoiceOver asks for the value attribute for all elements. Return nil
+ // if we don't want the element to have a value attribute.
+ if (!QCocoaAccessible::hasValueAttribute(acast(accessibleInterface)))
+ return nil;
+
+ return QCocoaAccessible::getValueAttribute(acast(accessibleInterface));
}
return nil;
diff --git a/src/plugins/platforms/cocoa/qcocoaapplication.h b/src/plugins/platforms/cocoa/qcocoaapplication.h
index 783edada77..66700281ac 100644
--- a/src/plugins/platforms/cocoa/qcocoaapplication.h
+++ b/src/plugins/platforms/cocoa/qcocoaapplication.h
@@ -102,13 +102,14 @@
- (BOOL)qt_filterEvent:(NSEvent *)event;
@end
-@interface QNSApplication : NSApplication {
+@interface QT_MANGLE_NAMESPACE(QNSApplication) : NSApplication {
}
@end
QT_BEGIN_NAMESPACE
void qt_redirectNSApplicationSendEvent();
+void qt_resetNSApplicationSendEvent();
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/cocoa/qcocoaapplication.mm b/src/plugins/platforms/cocoa/qcocoaapplication.mm
index 5b646d8942..a50c480f1f 100644
--- a/src/plugins/platforms/cocoa/qcocoaapplication.mm
+++ b/src/plugins/platforms/cocoa/qcocoaapplication.mm
@@ -75,6 +75,7 @@
#include <qcocoaapplication.h>
+#include <qcocoaintrospection.h>
#include <qcocoaapplicationdelegate.h>
#include <qcocoahelpers.h>
#include <qguiapplication.h>
@@ -107,8 +108,6 @@ QT_USE_NAMESPACE
- (void)qt_sendPostedMessage:(NSEvent *)event
{
- Q_UNUSED(event);
-/*
// WARNING: data1 and data2 is truncated to from 64-bit to 32-bit on OS 10.5!
// That is why we need to split the address in two parts:
quint64 lower = [event data1];
@@ -131,14 +130,14 @@ QT_USE_NAMESPACE
}
delete args;
-*/
}
+static const QByteArray q_macLocalEventType = QByteArrayLiteral("mac_generic_NSEvent");
+
- (BOOL)qt_filterEvent:(NSEvent *)event
{
- Q_UNUSED(event);
-/*
- if (qApp && qApp->macEventFilter(0, reinterpret_cast<EventRef>(event)))
+ if (qApp && qApp->eventDispatcher()->
+ filterNativeEvent(q_macLocalEventType, static_cast<void*>(event), 0))
return true;
if ([event type] == NSApplicationDefined) {
@@ -150,13 +149,13 @@ QT_USE_NAMESPACE
break;
}
}
-*/
+
return false;
}
@end
-@implementation QNSApplication
+@implementation QT_MANGLE_NAMESPACE(QNSApplication)
- (void)qt_sendEvent_original:(NSEvent *)event
{
@@ -190,8 +189,7 @@ QT_BEGIN_NAMESPACE
void qt_redirectNSApplicationSendEvent()
{
-/*
- if ([NSApp isMemberOfClass:[QNSApplication class]]) {
+ if ([NSApp isMemberOfClass:[QT_MANGLE_NAMESPACE(QNSApplication) class]]) {
// No need to change implementation since Qt
// already controls a subclass of NSApplication
return;
@@ -204,10 +202,16 @@ void qt_redirectNSApplicationSendEvent()
qt_cocoa_change_implementation(
[NSApplication class],
@selector(sendEvent:),
- [QNSApplication class],
+ [QT_MANGLE_NAMESPACE(QNSApplication) class],
@selector(qt_sendEvent_replacement:),
@selector(qt_sendEvent_original:));
- */
}
+void qt_resetNSApplicationSendEvent()
+{
+ qt_cocoa_change_back_implementation([NSApplication class],
+ @selector(sendEvent:),
+ @selector(QT_MANGLE_NAMESPACE(qt_sendEvent_original):));
+}
+
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm b/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm
index 3023100d93..d44ff0fae1 100644
--- a/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm
+++ b/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm
@@ -344,12 +344,6 @@ static void cleanupCocoaApplicationDelegate()
*/
}
-- (void)applicationDidChangeScreenParameters:(NSNotification *)notification
-{
- Q_UNUSED(notification);
- ((QCocoaIntegration*)QGuiApplicationPrivate::platformIntegration())->updateScreens();
-}
-
- (void)setReflectionDelegate:(NSObject <NSApplicationDelegate> *)oldDelegate
{
[oldDelegate retain];
diff --git a/src/plugins/platforms/cocoa/qcocoabackingstore.mm b/src/plugins/platforms/cocoa/qcocoabackingstore.mm
index eb0eb77905..ef67275208 100644
--- a/src/plugins/platforms/cocoa/qcocoabackingstore.mm
+++ b/src/plugins/platforms/cocoa/qcocoabackingstore.mm
@@ -73,15 +73,12 @@ void QCocoaBackingStore::flush(QWindow *widget, const QRegion &region, const QPo
NSRect rect = NSMakeRect(geo.x(), geo.y(), geo.width(), geo.height());
QCocoaWindow *cocoaWindow = static_cast<QCocoaWindow *>(window()->handle());
if (cocoaWindow) {
-
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_8
- if (QSysInfo::QSysInfo::MacintoshVersion >= QSysInfo::MV_10_8) {
- // Workaround for malfunctioning displayRect on 10.8 where
- // calling it seems to have no effect. Call setImage like
- // resize() does.
- [cocoaWindow->m_contentView setImage:m_image];
- }
-#endif
+ if (QSysInfo::QSysInfo::MacintoshVersion >= QSysInfo::MV_10_8) {
+ // Workaround for malfunctioning displayRect on 10.8 where
+ // calling it seems to have no effect. Call setImage like
+ // resize() does.
+ [cocoaWindow->m_contentView setImage:m_image];
+ }
[cocoaWindow->m_contentView displayRect:rect];
}
}
diff --git a/src/plugins/platforms/cocoa/qcocoahelpers.h b/src/plugins/platforms/cocoa/qcocoahelpers.h
index 45c35cccbf..de98d5219e 100644
--- a/src/plugins/platforms/cocoa/qcocoahelpers.h
+++ b/src/plugins/platforms/cocoa/qcocoahelpers.h
@@ -99,6 +99,7 @@ void qt_mac_transformProccessToForegroundApplication();
QString qt_mac_removeMnemonics(const QString &original);
CGColorSpaceRef qt_mac_genericColorSpace();
CGColorSpaceRef qt_mac_displayColorSpace(const QWidget *widget);
+CGColorSpaceRef qt_mac_colorSpaceForDeviceType(const QPaintDevice *paintDevice);
QString qt_mac_applicationName();
inline int qt_mac_flipYCoordinate(int y)
@@ -129,6 +130,36 @@ bool qt_mac_execute_apple_script(const QString &script, AEDesc *ret);
// accelerators.
QString qt_mac_removeAmpersandEscapes(QString s);
+enum {
+ QtCocoaEventSubTypeWakeup = SHRT_MAX,
+ QtCocoaEventSubTypePostMessage = SHRT_MAX-1
+};
+
+class QCocoaPostMessageArgs {
+public:
+ id target;
+ SEL selector;
+ int argCount;
+ id arg1;
+ id arg2;
+ QCocoaPostMessageArgs(id target, SEL selector, int argCount=0, id arg1=0, id arg2=0)
+ : target(target), selector(selector), argCount(argCount), arg1(arg1), arg2(arg2)
+ {
+ [target retain];
+ [arg1 retain];
+ [arg2 retain];
+ }
+
+ ~QCocoaPostMessageArgs()
+ {
+ [arg2 release];
+ [arg1 release];
+ [target release];
+ }
+};
+
+CGContextRef qt_mac_cg_context(const QPaintDevice *pdev);
+
QT_END_NAMESPACE
#endif //QCOCOAHELPERS_H
diff --git a/src/plugins/platforms/cocoa/qcocoahelpers.mm b/src/plugins/platforms/cocoa/qcocoahelpers.mm
index bd89f26fca..0a8da0a956 100644
--- a/src/plugins/platforms/cocoa/qcocoahelpers.mm
+++ b/src/plugins/platforms/cocoa/qcocoahelpers.mm
@@ -48,6 +48,10 @@
#include <qpa/qplatformscreen.h>
#include <private/qguiapplication_p.h>
+#ifndef QT_NO_WIDGETS
+#include <QtWidgets/QWidget>
+#endif
+
QT_BEGIN_NAMESPACE
//
@@ -551,6 +555,17 @@ void qt_mac_cleanUpMacColorSpaces()
m_displayColorSpaceHash.clear();
}
+CGColorSpaceRef qt_mac_colorSpaceForDeviceType(const QPaintDevice *paintDevice)
+{
+#ifdef QT_NO_WIDGETS
+ return qt_mac_displayColorSpace(0);
+#else
+ bool isWidget = (paintDevice->devType() == QInternal::Widget);
+ return qt_mac_displayColorSpace(isWidget ? static_cast<const QWidget *>(paintDevice): 0);
+#endif
+
+}
+
QString qt_mac_applicationName()
{
QString appName;
@@ -696,4 +711,44 @@ QString qt_mac_removeAmpersandEscapes(QString s)
return s.trimmed();
}
+/*! \internal
+
+ Returns the CoreGraphics CGContextRef of the paint device. 0 is
+ returned if it can't be obtained. It is the caller's responsibility to
+ CGContextRelease the context when finished using it.
+
+ \warning This function is only available on Mac OS X.
+ \warning This function is duplicated in qmacstyle_mac.mm
+ */
+CGContextRef qt_mac_cg_context(const QPaintDevice *pdev)
+{
+ if (pdev->devType() == QInternal::Pixmap) {
+ const QPixmap *pm = static_cast<const QPixmap*>(pdev);
+ CGColorSpaceRef colorspace = qt_mac_colorSpaceForDeviceType(pdev);
+ uint flags = kCGImageAlphaPremultipliedFirst;
+ flags |= kCGBitmapByteOrder32Host;
+ CGContextRef ret = 0;
+
+ QPlatformPixmap *data = const_cast<QPixmap *>(pm)->data_ptr().data();
+ if (data && data->classId() == QPlatformPixmap::RasterClass) {
+ QImage *image = data->buffer();
+ ret = CGBitmapContextCreate(image->bits(), image->width(), image->height(),
+ 8, image->bytesPerLine(), colorspace, flags);
+ } else {
+ qDebug() << "qt_mac_cg_context: Unsupported pixmap class";
+ }
+
+ CGContextTranslateCTM(ret, 0, pm->height());
+ CGContextScaleCTM(ret, 1, -1);
+ return ret;
+ } else if (pdev->devType() == QInternal::Widget) {
+ //CGContextRef ret = static_cast<CGContextRef>(static_cast<const QWidget *>(pdev)->macCGHandle());
+ ///CGContextRetain(ret);
+ //return ret;
+ qDebug() << "qt_mac_cg_context: not implemented: Widget class";
+ return 0;
+ }
+ return 0;
+}
+
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.mm b/src/plugins/platforms/cocoa/qcocoaintegration.mm
index 481055aae4..83c3efb2c6 100644
--- a/src/plugins/platforms/cocoa/qcocoaintegration.mm
+++ b/src/plugins/platforms/cocoa/qcocoaintegration.mm
@@ -53,6 +53,7 @@
#include "qcocoatheme.h"
#include "qcocoainputcontext.h"
#include "qmacmime.h"
+#include "qcocoaaccessibility.h"
#include <qpa/qplatformaccessibility.h>
#include <QtCore/qcoreapplication.h>
@@ -97,9 +98,8 @@ void QCocoaScreen::updateGeometry()
CGDirectDisplayID dpy = [[devDesc objectForKey:@"NSScreenNumber"] unsignedIntValue];
CGSize size = CGDisplayScreenSize(dpy);
m_physicalSize = QSizeF(size.width, size.height);
- NSSize resolution = [[devDesc valueForKey:NSDeviceResolution] sizeValue];
- m_logicalDpi.first = resolution.width;
- m_logicalDpi.second = resolution.height;
+ m_logicalDpi.first = 72;
+ m_logicalDpi.second = 72;
m_refreshRate = CGDisplayModeGetRefreshRate(CGDisplayCopyDisplayMode(dpy));
// Get m_name (brand/model of the monitor)
@@ -110,7 +110,7 @@ void QCocoaScreen::updateGeometry()
[deviceInfo release];
QWindowSystemInterface::handleScreenGeometryChange(screen(), geometry());
- QWindowSystemInterface::handleScreenLogicalDotsPerInchChange(screen(), resolution.width, resolution.height);
+ QWindowSystemInterface::handleScreenLogicalDotsPerInchChange(screen(), m_logicalDpi.first, m_logicalDpi.second);
QWindowSystemInterface::handleScreenRefreshRateChange(screen(), m_refreshRate);
QWindowSystemInterface::handleScreenAvailableGeometryChange(screen(), availableGeometry());
}
@@ -181,7 +181,7 @@ QCocoaIntegration::QCocoaIntegration()
, mEventDispatcher(new QCocoaEventDispatcher())
, mInputContext(new QCocoaInputContext)
#ifndef QT_NO_ACCESSIBILITY
- , mAccessibility(new QPlatformAccessibility)
+ , mAccessibility(new QCococaAccessibility)
#endif
, mCocoaClipboard(new QCocoaClipboard)
, mCocoaDrag(new QCocoaDrag)
@@ -193,7 +193,8 @@ QCocoaIntegration::QCocoaIntegration()
qApp->setAttribute(Qt::AA_DontUseNativeMenuBar, false);
- NSApplication *cocoaApplication = [NSApplication sharedApplication];
+ NSApplication *cocoaApplication = [QT_MANGLE_NAMESPACE(QNSApplication) sharedApplication];
+ qt_redirectNSApplicationSendEvent();
if (qEnvironmentVariableIsEmpty("QT_MAC_DISABLE_FOREGROUND_APPLICATION_TRANSFORM")) {
// Applications launched from plain executables (without an app
@@ -234,6 +235,8 @@ QCocoaIntegration::QCocoaIntegration()
QCocoaIntegration::~QCocoaIntegration()
{
+ qt_resetNSApplicationSendEvent();
+
QCocoaAutoReleasePool pool;
if (!QCoreApplication::testAttribute(Qt::AA_MacPluginApplication)) {
// remove the apple event handlers installed by QCocoaApplicationDelegate
diff --git a/src/plugins/platforms/cocoa/qcocoaintrospection.h b/src/plugins/platforms/cocoa/qcocoaintrospection.h
new file mode 100644
index 0000000000..ffe3d96290
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qcocoaintrospection.h
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/****************************************************************************
+**
+** Copyright (c) 2007-2008, Apple, Inc.
+**
+** All rights reserved.
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are met:
+**
+** * Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+**
+** * Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+**
+** * Neither the name of Apple, Inc. nor the names of its contributors
+** may be used to endorse or promote products derived from this software
+** without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+****************************************************************************/
+
+#include <qglobal.h>
+#import <objc/objc-class.h>
+
+QT_BEGIN_NAMESPACE
+
+void qt_cocoa_change_implementation(Class baseClass, SEL originalSel, Class proxyClass, SEL replacementSel = 0, SEL backupSel = 0);
+void qt_cocoa_change_back_implementation(Class baseClass, SEL originalSel, SEL backupSel);
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/cocoa/qcocoaintrospection.mm b/src/plugins/platforms/cocoa/qcocoaintrospection.mm
new file mode 100644
index 0000000000..e1af986487
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qcocoaintrospection.mm
@@ -0,0 +1,125 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/****************************************************************************
+**
+** Copyright (c) 2007-2008, Apple, Inc.
+**
+** All rights reserved.
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are met:
+**
+** * Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+**
+** * Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+**
+** * Neither the name of Apple, Inc. nor the names of its contributors
+** may be used to endorse or promote products derived from this software
+** without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+****************************************************************************/
+
+#include "qcocoaintrospection.h"
+
+QT_BEGIN_NAMESPACE
+
+void qt_cocoa_change_implementation(Class baseClass, SEL originalSel, Class proxyClass, SEL replacementSel, SEL backupSel)
+{
+#ifndef QT_MAC_USE_COCOA
+ if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_5)
+#endif
+ {
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+ // The following code replaces the _implementation_ for the selector we want to hack
+ // (originalSel) with the implementation found in proxyClass. Then it creates
+ // a new 'backup' method inside baseClass containing the old, original,
+ // implementation (fakeSel). You can let the proxy implementation of originalSel
+ // call fakeSel if needed (similar approach to calling a super class implementation).
+ // fakeSel must also be implemented in proxyClass, as the signature is used
+ // as template for the method one we add into baseClass.
+ // NB: You will typically never create any instances of proxyClass; we use it
+ // only for stealing its contents and put it into baseClass.
+ if (!replacementSel)
+ replacementSel = originalSel;
+
+ Method originalMethod = class_getInstanceMethod(baseClass, originalSel);
+ Method replacementMethod = class_getInstanceMethod(proxyClass, replacementSel);
+ IMP originalImp = method_setImplementation(originalMethod, method_getImplementation(replacementMethod));
+
+ if (backupSel) {
+ Method backupMethod = class_getInstanceMethod(proxyClass, backupSel);
+ class_addMethod(baseClass, backupSel, originalImp, method_getTypeEncoding(backupMethod));
+ }
+#endif
+ }
+}
+
+void qt_cocoa_change_back_implementation(Class baseClass, SEL originalSel, SEL backupSel)
+{
+#ifndef QT_MAC_USE_COCOA
+ if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_5)
+#endif
+ {
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+ Method originalMethod = class_getInstanceMethod(baseClass, originalSel);
+ Method backupMethodInBaseClass = class_getInstanceMethod(baseClass, backupSel);
+ method_setImplementation(originalMethod, method_getImplementation(backupMethodInBaseClass));
+#endif
+ }
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/cocoa/qcocoamenu.mm b/src/plugins/platforms/cocoa/qcocoamenu.mm
index 36d5c81f34..676f0683fa 100644
--- a/src/plugins/platforms/cocoa/qcocoamenu.mm
+++ b/src/plugins/platforms/cocoa/qcocoamenu.mm
@@ -45,6 +45,13 @@
#include "qcocoaautoreleasepool.h"
#include <QtCore/QtDebug>
+#include "qcocoaapplication.h"
+#include "qcocoamenuloader.h"
+
+static inline QT_MANGLE_NAMESPACE(QCocoaMenuLoader) *getMenuLoader()
+{
+ return [NSApp QT_MANGLE_NAMESPACE(qt_qcocoamenuLoader)];
+}
@interface QT_MANGLE_NAMESPACE(QCocoaMenuDelegate) : NSObject <NSMenuDelegate> {
QCocoaMenu *m_menu;
@@ -215,12 +222,19 @@ void QCocoaMenu::syncMenuItem(QPlatformMenuItem *menuItem)
}
bool wasMerged = cocoaItem->isMerged();
- NSMenuItem *oldItem = [m_nativeMenu itemWithTag:(NSInteger) cocoaItem];
+ NSMenu *oldMenu = wasMerged ? [getMenuLoader() applicationMenu] : m_nativeMenu;
+ NSMenuItem *oldItem = [oldMenu itemWithTag:(NSInteger) cocoaItem];
if (cocoaItem->sync() != oldItem) {
// native item was changed for some reason
- if (!wasMerged && oldItem)
- [m_nativeMenu removeItem:oldItem];
+ if (oldItem) {
+ if (wasMerged) {
+ [oldItem setEnabled:NO];
+ [oldItem setHidden:YES];
+ } else {
+ [m_nativeMenu removeItem:oldItem];
+ }
+ }
QCocoaMenuItem* beforeItem = itemOrNull(m_menuItems.indexOf(cocoaItem) + 1);
insertNative(cocoaItem, beforeItem);
diff --git a/src/plugins/platforms/cocoa/qcocoamenubar.mm b/src/plugins/platforms/cocoa/qcocoamenubar.mm
index 8434cb75e9..bae52c91b8 100644
--- a/src/plugins/platforms/cocoa/qcocoamenubar.mm
+++ b/src/plugins/platforms/cocoa/qcocoamenubar.mm
@@ -219,7 +219,7 @@ QList<QCocoaMenuItem*> QCocoaMenuBar::merged() const
bool QCocoaMenuBar::shouldDisable(QCocoaWindow *active) const
{
- if (active && (active->window()->windowModality() == Qt::NonModal))
+ if (active && (active->window()->modality() == Qt::NonModal))
return false;
if (m_window == active) {
@@ -232,7 +232,7 @@ bool QCocoaMenuBar::shouldDisable(QCocoaWindow *active) const
// the menubar should be disabled. The exception in Qt is that if the
// modal window is the only window on screen, then we enable the menu bar.
foreach (QWindow *w, topWindows) {
- if (w->isVisible() && w->windowModality() == Qt::ApplicationModal) {
+ if (w->isVisible() && w->modality() == Qt::ApplicationModal) {
// check for other visible windows
foreach (QWindow *other, topWindows) {
if ((w != other) && (other->isVisible())) {
diff --git a/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm b/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm
index 2cb15b141f..8a08924bda 100755
--- a/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm
+++ b/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm
@@ -79,7 +79,6 @@
#include "qcocoasystemtrayicon.h"
#include <qtemporaryfile.h>
#include <qimagewriter.h>
-#include <qapplication.h>
#include <qdebug.h>
#include "qcocoamenu.h"
@@ -238,7 +237,7 @@ void QCocoaSystemTrayIcon::showMessage(const QString &title, const QString &mess
return;
QPixmap notificationIconPixmap = icon.pixmap(32, 32);
QTemporaryFile notificationIconFile;
- QString notificationType(QLatin1String("Notification")), notificationIcon, notificationApp(QApplication::applicationName());
+ QString notificationType(QLatin1String("Notification")), notificationIcon, notificationApp(qt_mac_applicationName());
if (notificationApp.isEmpty())
notificationApp = QLatin1String("Application");
if (!notificationIconPixmap.isNull() && notificationIconFile.open()) {
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h
index db3a20c2be..a9ea135b3e 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.h
+++ b/src/plugins/platforms/cocoa/qcocoawindow.h
@@ -66,6 +66,8 @@ class QT_PREPEND_NAMESPACE(QCocoaWindow);
- (BOOL)canBecomeKeyWindow;
@end
+@class QNSWindowDelegate;
+
QT_BEGIN_NAMESPACE
// QCocoaWindow
//
@@ -157,6 +159,7 @@ public: // for QNSView
QNSView *m_contentView;
NSWindow *m_nsWindow;
+ QNSWindowDelegate *m_nsWindowDelegate;
Qt::WindowFlags m_windowFlags;
Qt::WindowState m_synchedWindowState;
Qt::WindowModality m_windowModality;
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm
index de6e7dc43e..d17df81011 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -148,12 +148,10 @@ static bool isMouseEvent(NSEvent *ev)
- (BOOL)canBecomeKeyWindow
{
- // Most panels can be come the key window. Exceptions are:
- if (m_cocoaPlatformWindow->window()->windowType() == Qt::ToolTip)
- return NO;
- if (m_cocoaPlatformWindow->window()->windowType() == Qt::SplashScreen)
- return NO;
- return YES;
+ // Only tool windows should become key for popup types:
+ if (m_cocoaPlatformWindow->window()->type() == Qt::Tool)
+ return YES;
+ return NO;
}
- (void) sendEvent: (NSEvent*) theEvent
@@ -186,6 +184,7 @@ static bool isMouseEvent(NSEvent *ev)
QCocoaWindow::QCocoaWindow(QWindow *tlw)
: QPlatformWindow(tlw)
, m_nsWindow(0)
+ , m_nsWindowDelegate(0)
, m_synchedWindowState(Qt::WindowActive)
, m_windowModality(Qt::NonModal)
, m_inConstructor(true)
@@ -217,6 +216,7 @@ QCocoaWindow::~QCocoaWindow()
clearNSWindow(m_nsWindow);
[m_contentView release];
[m_nsWindow release];
+ [m_nsWindowDelegate release];
}
void QCocoaWindow::setGeometry(const QRect &rect)
@@ -250,7 +250,7 @@ void QCocoaWindow::setVisible(bool visible)
#endif
if (visible) {
// We need to recreate if the modality has changed as the style mask will need updating
- if (m_windowModality != window()->windowModality())
+ if (m_windowModality != window()->modality())
recreateWindow(parent());
QCocoaWindow *parentCocoaWindow = 0;
if (window()->transientParent()) {
@@ -262,8 +262,8 @@ void QCocoaWindow::setVisible(bool visible)
// Register popup windows so that the parent window can
// close them when needed.
- if (window()->windowType() == Qt::Popup) {
- // qDebug() << "transientParent and popup" << window()->windowType() << Qt::Popup << (window()->windowType() & Qt::Popup);
+ if (window()->type() == Qt::Popup) {
+ // qDebug() << "transientParent and popup" << window()->type() << Qt::Popup << (window()->type() & Qt::Popup);
parentCocoaWindow->m_activePopupWindow = window();
}
@@ -279,12 +279,12 @@ void QCocoaWindow::setVisible(bool visible)
syncWindowState(window()->windowState());
if (window()->windowState() != Qt::WindowMinimized) {
- if ((window()->windowModality() == Qt::WindowModal
- || window()->windowType() == Qt::Sheet)
+ if ((window()->modality() == Qt::WindowModal
+ || window()->type() == Qt::Sheet)
&& parentCocoaWindow) {
// show the window as a sheet
[NSApp beginSheet:m_nsWindow modalForWindow:parentCocoaWindow->m_nsWindow modalDelegate:nil didEndSelector:nil contextInfo:nil];
- } else if (window()->windowModality() != Qt::NonModal) {
+ } else if (window()->modality() != Qt::NonModal) {
// show the window as application modal
QCocoaEventDispatcher *cocoaEventDispatcher = qobject_cast<QCocoaEventDispatcher *>(QGuiApplication::instance()->eventDispatcher());
Q_ASSERT(cocoaEventDispatcher != 0);
@@ -298,7 +298,7 @@ void QCocoaWindow::setVisible(bool visible)
}
// We want the events to properly reach the popup
- if (window()->windowType() == Qt::Popup)
+ if (window()->type() == Qt::Popup)
[(NSPanel *)m_nsWindow setWorksWhenModal:YES];
}
}
@@ -364,7 +364,7 @@ NSUInteger QCocoaWindow::windowStyleMask(Qt::WindowFlags flags)
Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint;
if (flags == Qt::Window) {
styleMask = (NSResizableWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSTitledWindowMask);
- } else if ((flags & Qt::Dialog) && (window()->windowModality() != Qt::NonModal)) {
+ } else if ((flags & Qt::Dialog) && (window()->modality() != Qt::NonModal)) {
styleMask = NSTitledWindowMask;
} else if (!(flags & Qt::FramelessWindowHint)) {
if (flags & Qt::WindowMaximizeButtonHint)
@@ -433,7 +433,7 @@ void QCocoaWindow::setWindowIcon(const QIcon &icon)
NSButton *iconButton = [m_nsWindow standardWindowButton:NSWindowDocumentIconButton];
if (iconButton == nil) {
- NSString *title = QCFString::toNSString(window()->windowTitle());
+ NSString *title = QCFString::toNSString(window()->title());
[m_nsWindow setRepresentedURL:[NSURL fileURLWithPath:title]];
iconButton = [m_nsWindow standardWindowButton:NSWindowDocumentIconButton];
}
@@ -594,7 +594,7 @@ void QCocoaWindow::windowWillClose()
bool QCocoaWindow::windowIsPopupType(Qt::WindowType type) const
{
if (type == Qt::Widget)
- type = window()->windowType();
+ type = window()->type();
if (type == Qt::Tool)
return false; // Qt::Tool has the Popup bit set but isn't, at least on Mac.
@@ -619,6 +619,8 @@ void QCocoaWindow::recreateWindow(const QPlatformWindow *parentWindow)
[m_nsWindow close];
[m_nsWindow release];
m_nsWindow = 0;
+ [m_nsWindowDelegate release];
+ m_nsWindowDelegate = 0;
}
if (!parentWindow) {
@@ -628,8 +630,8 @@ void QCocoaWindow::recreateWindow(const QPlatformWindow *parentWindow)
// QPlatformWindow subclasses must sync up with QWindow on creation:
propagateSizeHints();
- setWindowFlags(window()->windowFlags());
- setWindowTitle(window()->windowTitle());
+ setWindowFlags(window()->flags());
+ setWindowTitle(window()->title());
setWindowState(window()->windowState());
} else {
// Child windows have no NSWindow, link the NSViews instead.
@@ -644,8 +646,8 @@ NSWindow * QCocoaWindow::createNSWindow()
NSRect frame = qt_mac_flipRect(window()->geometry(), window());
- Qt::WindowType type = window()->windowType();
- Qt::WindowFlags flags = window()->windowFlags();
+ Qt::WindowType type = window()->type();
+ Qt::WindowFlags flags = window()->flags();
NSUInteger styleMask = windowStyleMask(flags);
NSWindow *createdWindow = 0;
@@ -691,14 +693,14 @@ NSWindow * QCocoaWindow::createNSWindow()
NSInteger level = windowLevel(flags);
[createdWindow setLevel:level];
- m_windowModality = window()->windowModality();
+ m_windowModality = window()->modality();
return createdWindow;
}
void QCocoaWindow::setNSWindow(NSWindow *window)
{
- QNSWindowDelegate *delegate = [[QNSWindowDelegate alloc] initWithQCocoaWindow:this];
- [window setDelegate:delegate];
+ m_nsWindowDelegate = [[QNSWindowDelegate alloc] initWithQCocoaWindow:this];
+ [window setDelegate:m_nsWindowDelegate];
[window setAcceptsMouseMovedEvents:YES];
// Prevent Cocoa from releasing the window on close. Qt
@@ -713,7 +715,9 @@ void QCocoaWindow::setNSWindow(NSWindow *window)
name:nil // Get all notifications
object:m_nsWindow];
+ [m_contentView setPostsFrameChangedNotifications: NO];
[window setContentView:m_contentView];
+ [m_contentView setPostsFrameChangedNotifications: YES];
}
void QCocoaWindow::clearNSWindow(NSWindow *window)
diff --git a/src/plugins/platforms/cocoa/qmacclipboard.mm b/src/plugins/platforms/cocoa/qmacclipboard.mm
index e7c03726d6..e8d12abaed 100644
--- a/src/plugins/platforms/cocoa/qmacclipboard.mm
+++ b/src/plugins/platforms/cocoa/qmacclipboard.mm
@@ -193,7 +193,10 @@ QMacPasteboard::hasOSType(int c_flavor) const
const int type_count = CFArrayGetCount(types);
for (int i = 0; i < type_count; ++i) {
CFStringRef flavor = (CFStringRef)CFArrayGetValueAtIndex(types, i);
- const int os_flavor = UTGetOSTypeFromString(UTTypeCopyPreferredTagWithClass(flavor, kUTTagClassOSType));
+ CFStringRef preferredTag = UTTypeCopyPreferredTagWithClass(flavor, kUTTagClassOSType);
+ const int os_flavor = UTGetOSTypeFromString(preferredTag);
+ if (preferredTag)
+ CFRelease(preferredTag);
if (os_flavor == c_flavor) {
#ifdef DEBUG_PASTEBOARD
qDebug(" - Found!");
diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm
index d62913a7af..4fb099341e 100644
--- a/src/plugins/platforms/cocoa/qnsview.mm
+++ b/src/plugins/platforms/cocoa/qnsview.mm
@@ -263,6 +263,7 @@ static CGImageRef qt_mac_toCGImage(QImage *qImage, bool isMask, uchar **dataCopy
kCGRenderingIntentDefault);
CGColorSpaceRelease(cgColourSpaceRef);
}
+ CGDataProviderRelease(cgDataProviderRef);
return cgImage;
}
@@ -339,7 +340,7 @@ static CGImageRef qt_mac_toCGImage(QImage *qImage, bool isMask, uchar **dataCopy
return YES;
}
-- (void)handleMouseEvent:(NSEvent *)theEvent
+- (void)convertFromEvent:(NSEvent *)event toWindowPoint:(QPoint *)qtWindowPoint andScreenPoint:(QPoint *)qtScreenPoint
{
// Calculate the mouse position in the QWindow and Qt screen coordinate system,
// starting from coordinates in the NSWindow coordinate system.
@@ -359,25 +360,29 @@ static CGImageRef qt_mac_toCGImage(QImage *qImage, bool isMask, uchar **dataCopy
// NSView and QWindow are equal coordinate systems: the QWindow covers the
// entire NSView, and we've set the NSView's isFlipped property to true.
- NSPoint nsWindowPoint = [theEvent locationInWindow]; // NSWindow coordinates
+ NSPoint nsWindowPoint = [event locationInWindow]; // NSWindow coordinates
NSPoint nsViewPoint = [self convertPoint: nsWindowPoint fromView: nil]; // NSView/QWindow coordinates
- QPoint qtWindowPoint(nsViewPoint.x, nsViewPoint.y); // NSView/QWindow coordinates
-
- QPoint qtScreenPoint;
+ *qtWindowPoint = QPoint(nsViewPoint.x, nsViewPoint.y); // NSView/QWindow coordinates
NSWindow *window = [self window];
// Use convertRectToScreen if available (added in 10.7).
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
if ([window respondsToSelector:@selector(convertRectToScreen:)]) {
NSRect screenRect = [window convertRectToScreen : NSMakeRect(nsWindowPoint.x, nsWindowPoint.y, 0, 0)]; // OS X screen coordinates
- qtScreenPoint = QPoint(screenRect.origin.x, qt_mac_flipYCoordinate(screenRect.origin.y)); // Qt screen coordinates
+ *qtScreenPoint = QPoint(screenRect.origin.x, qt_mac_flipYCoordinate(screenRect.origin.y)); // Qt screen coordinates
} else
#endif
{
NSPoint screenPoint = [window convertBaseToScreen : NSMakePoint(nsWindowPoint.x, nsWindowPoint.y)];
- qtScreenPoint = QPoint(screenPoint.x, qt_mac_flipYCoordinate(screenPoint.y));
+ *qtScreenPoint = QPoint(screenPoint.x, qt_mac_flipYCoordinate(screenPoint.y));
}
+}
+
+- (void)handleMouseEvent:(NSEvent *)theEvent
+{
+ QPoint qtWindowPoint, qtScreenPoint;
+ [self convertFromEvent:theEvent toWindowPoint:&qtWindowPoint andScreenPoint:&qtScreenPoint];
ulong timestamp = [theEvent timestamp] * 1000;
QCocoaDrag* nativeDrag = static_cast<QCocoaDrag *>(QGuiApplicationPrivate::platformIntegration()->drag());
@@ -462,8 +467,9 @@ static CGImageRef qt_mac_toCGImage(QImage *qImage, bool isMask, uchar **dataCopy
- (void)mouseEntered:(NSEvent *)theEvent
{
- Q_UNUSED(theEvent);
- QWindowSystemInterface::handleEnterEvent(m_window);
+ QPoint windowPoint, screenPoint;
+ [self convertFromEvent:theEvent toWindowPoint:&windowPoint andScreenPoint:&screenPoint];
+ QWindowSystemInterface::handleEnterEvent(m_window, windowPoint, screenPoint);
}
- (void)mouseExited:(NSEvent *)theEvent
diff --git a/src/plugins/platforms/cocoa/qpaintengine_mac.mm b/src/plugins/platforms/cocoa/qpaintengine_mac.mm
index 404c03dd30..5b83477881 100644
--- a/src/plugins/platforms/cocoa/qpaintengine_mac.mm
+++ b/src/plugins/platforms/cocoa/qpaintengine_mac.mm
@@ -116,13 +116,6 @@ void qt_mac_clip_cg(CGContextRef hd, const QRegion &rgn, CGAffineTransform *orig
}
}
-CGColorSpaceRef qt_mac_colorSpaceForDeviceType(const QPaintDevice *paintDevice)
-{
- bool isWidget = (paintDevice->devType() == QInternal::Widget);
- return QCoreGraphicsPaintEngine::macDisplayColorSpace(isWidget ? static_cast<const QWidget *>(paintDevice)
- : 0);
-}
-
// Implemented for qt_mac_p.h
QMacCGContext::QMacCGContext(QPainter *p)
{
@@ -206,46 +199,6 @@ CGAffineTransform qt_mac_convert_transform_to_cg(const QTransform &t) {
return CGAffineTransformMake(t.m11(), t.m12(), t.m21(), t.m22(), t.dx(), t.dy());
}
-/*! \internal
-
- Returns the CoreGraphics CGContextRef of the paint device. 0 is
- returned if it can't be obtained. It is the caller's responsibility to
- CGContextRelease the context when finished using it.
-
- \warning This function is only available on Mac OS X.
- \warning This function is duplicated in qmacstyle_mac.mm
-*/
-CGContextRef qt_mac_cg_context(const QPaintDevice *pdev)
-{
- if (pdev->devType() == QInternal::Pixmap) {
- const QPixmap *pm = static_cast<const QPixmap*>(pdev);
- CGColorSpaceRef colorspace = qt_mac_colorSpaceForDeviceType(pdev);
- uint flags = kCGImageAlphaPremultipliedFirst;
- flags |= kCGBitmapByteOrder32Host;
- CGContextRef ret = 0;
-
- QPlatformPixmap *data = const_cast<QPixmap *>(pm)->data_ptr().data();
- if (data && data->classId() == QPlatformPixmap::RasterClass) {
- QImage *image = data->buffer();
- ret = CGBitmapContextCreate(image->bits(), image->width(), image->height(),
- 8, image->bytesPerLine(), colorspace, flags);
- } else {
- qDebug() << "qt_mac_cg_context: Unsupported pixmap class";
- }
-
- CGContextTranslateCTM(ret, 0, pm->height());
- CGContextScaleCTM(ret, 1, -1);
- return ret;
- } else if (pdev->devType() == QInternal::Widget) {
- //CGContextRef ret = static_cast<CGContextRef>(static_cast<const QWidget *>(pdev)->macCGHandle());
- ///CGContextRetain(ret);
- //return ret;
- qDebug() << "qt_mac_cg_context: not implemented: Widget class";
- return 0;
- }
- return 0;
-}
-
inline static QCFType<CGColorRef> cgColorForQColor(const QColor &col, QPaintDevice *pdev)
{
CGFloat components[] = {
diff --git a/src/plugins/platforms/qnx/qqnxintegration.cpp b/src/plugins/platforms/qnx/qqnxintegration.cpp
index adb92741f9..d35ec935fd 100644
--- a/src/plugins/platforms/qnx/qqnxintegration.cpp
+++ b/src/plugins/platforms/qnx/qqnxintegration.cpp
@@ -130,6 +130,7 @@ QQnxIntegration::QQnxIntegration()
#if !defined(QT_NO_CLIPBOARD)
, m_clipboard(0)
#endif
+ , m_navigator(0)
#if !defined(QT_NO_DRAGANDDROP)
, m_drag(new QSimpleDrag())
#endif
diff --git a/src/plugins/platforms/windows/qwindowsbackingstore.cpp b/src/plugins/platforms/windows/qwindowsbackingstore.cpp
index 592586fde0..04fe558541 100644
--- a/src/plugins/platforms/windows/qwindowsbackingstore.cpp
+++ b/src/plugins/platforms/windows/qwindowsbackingstore.cpp
@@ -87,7 +87,7 @@ void QWindowsBackingStore::flush(QWindow *window, const QRegion &region,
QWindowsWindow *rw = QWindowsWindow::baseWindowOf(window);
#ifndef Q_OS_WINCE
- if (rw->format().hasAlpha() && (window->windowFlags() & Qt::FramelessWindowHint)) {
+ if (rw->format().hasAlpha() && (window->flags() & Qt::FramelessWindowHint)) {
const long wl = GetWindowLong(rw->handle(), GWL_EXSTYLE);
if ((wl & WS_EX_LAYERED) == 0)
SetWindowLong(rw->handle(), GWL_EXSTYLE, wl | WS_EX_LAYERED);
diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp
index a0749388f9..aaa5573899 100644
--- a/src/plugins/platforms/windows/qwindowscontext.cpp
+++ b/src/plugins/platforms/windows/qwindowscontext.cpp
@@ -374,7 +374,7 @@ void QWindowsContext::setKeyGrabber(QWindow *w)
QString QWindowsContext::registerWindowClass(const QWindow *w, bool isGL)
{
- const Qt::WindowFlags flags = w ? w->windowFlags() : (Qt::WindowFlags)0;
+ const Qt::WindowFlags flags = w ? w->flags() : (Qt::WindowFlags)0;
const Qt::WindowFlags type = flags & Qt::WindowType_Mask;
uint style = 0;
diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp
index 323cff1646..76fe5f1a43 100644
--- a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp
+++ b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp
@@ -533,7 +533,7 @@ QWindowsFontEngineData::QWindowsFontEngineData()
QWindowsFontEngineData::~QWindowsFontEngineData()
{
if (hdc)
- ReleaseDC(0, hdc);
+ DeleteDC(hdc);
#if !defined(QT_NO_DIRECTWRITE)
if (directWriteGdiInterop)
directWriteGdiInterop->Release();
diff --git a/src/plugins/platforms/windows/qwindowsfontengine.cpp b/src/plugins/platforms/windows/qwindowsfontengine.cpp
index 0e592aee7b..578a0cd20b 100644
--- a/src/plugins/platforms/windows/qwindowsfontengine.cpp
+++ b/src/plugins/platforms/windows/qwindowsfontengine.cpp
@@ -1110,7 +1110,7 @@ QWindowsNativeImage *QWindowsFontEngine::drawGDIGlyph(HFONT font, glyph_t glyph,
SetGraphicsMode(hdc, GM_COMPATIBLE);
SelectObject(hdc, old_font);
- ReleaseDC(0, hdc);
+ DeleteDC(hdc);
}
#else // else wince
unsigned int options = 0;
@@ -1166,8 +1166,11 @@ QImage QWindowsFontEngine::alphaMapForGlyph(glyph_t glyph, const QTransform &xfo
mask_format = QImage::Format_RGB32;
QWindowsNativeImage *mask = drawGDIGlyph(font, glyph, 0, xform, mask_format);
- if (mask == 0)
+ if (mask == 0) {
+ if (m_fontEngineData->clearTypeEnabled)
+ DeleteObject(font);
return QImage();
+ }
QImage indexed(mask->width(), mask->height(), QImage::Format_Indexed8);
diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp
index a02f0cd494..f6011ae082 100644
--- a/src/plugins/platforms/windows/qwindowsintegration.cpp
+++ b/src/plugins/platforms/windows/qwindowsintegration.cpp
@@ -354,10 +354,10 @@ QPlatformPixmap *QWindowsIntegration::createPlatformPixmap(QPlatformPixmap::Pixe
QPlatformWindow *QWindowsIntegration::createPlatformWindow(QWindow *window) const
{
QWindowsWindow::WindowData requested;
- requested.flags = window->windowFlags();
+ requested.flags = window->flags();
requested.geometry = window->geometry();
const QWindowsWindow::WindowData obtained
- = QWindowsWindow::WindowData::create(window, requested, window->windowTitle());
+ = QWindowsWindow::WindowData::create(window, requested, window->title());
if (QWindowsContext::verboseIntegration || QWindowsContext::verboseWindows)
qDebug().nospace()
<< __FUNCTION__ << '<' << window << '\n'
@@ -372,7 +372,7 @@ QPlatformWindow *QWindowsIntegration::createPlatformWindow(QWindow *window) cons
if (!obtained.hwnd)
return 0;
if (requested.flags != obtained.flags)
- window->setWindowFlags(obtained.flags);
+ window->setFlags(obtained.flags);
return new QWindowsWindow(window, obtained);
}
diff --git a/src/plugins/platforms/windows/qwindowskeymapper.cpp b/src/plugins/platforms/windows/qwindowskeymapper.cpp
index c11bd8c53c..5a11aee802 100644
--- a/src/plugins/platforms/windows/qwindowskeymapper.cpp
+++ b/src/plugins/platforms/windows/qwindowskeymapper.cpp
@@ -481,6 +481,14 @@ static inline int toKeyOrUnicode(int vk, int scancode, unsigned char *kbdBuffer,
int code = 0;
QChar unicodeBuffer[5];
int res = ToUnicode(vk, scancode, kbdBuffer, reinterpret_cast<LPWSTR>(unicodeBuffer), 5, 0);
+ // When Ctrl modifier is used ToUnicode does not return correct values. In order to assign the
+ // right key the control modifier is removed for just that function if the previous call failed.
+ if (res == 0 && kbdBuffer[VK_CONTROL]) {
+ const unsigned char controlState = kbdBuffer[VK_CONTROL];
+ kbdBuffer[VK_CONTROL] = 0;
+ res = ToUnicode(vk, scancode, kbdBuffer, reinterpret_cast<LPWSTR>(unicodeBuffer), 5, 0);
+ kbdBuffer[VK_CONTROL] = controlState;
+ }
if (res)
code = unicodeBuffer[0].toUpper().unicode();
@@ -682,16 +690,16 @@ static void showSystemMenu(QWindow* w)
#define enabled (MF_BYCOMMAND | MF_ENABLED)
#define disabled (MF_BYCOMMAND | MF_GRAYED)
- EnableMenuItem(menu, SC_MINIMIZE, (topLevel->windowFlags() & Qt::WindowMinimizeButtonHint)?enabled:disabled);
+ EnableMenuItem(menu, SC_MINIMIZE, (topLevel->flags() & Qt::WindowMinimizeButtonHint)?enabled:disabled);
bool maximized = IsZoomed(topLevelHwnd);
- EnableMenuItem(menu, SC_MAXIMIZE, ! (topLevel->windowFlags() & Qt::WindowMaximizeButtonHint) || maximized?disabled:enabled);
+ EnableMenuItem(menu, SC_MAXIMIZE, ! (topLevel->flags() & Qt::WindowMaximizeButtonHint) || maximized?disabled:enabled);
EnableMenuItem(menu, SC_RESTORE, maximized?enabled:disabled);
// We should _not_ check with the setFixedSize(x,y) case here, since Windows is not able to check
// this and our menu here would be out-of-sync with the menu produced by mouse-click on the
// System Menu, or right-click on the title bar.
- EnableMenuItem(menu, SC_SIZE, (topLevel->windowFlags() & Qt::MSWindowsFixedSizeDialogHint) || maximized?disabled:enabled);
+ EnableMenuItem(menu, SC_SIZE, (topLevel->flags() & Qt::MSWindowsFixedSizeDialogHint) || maximized?disabled:enabled);
EnableMenuItem(menu, SC_MOVE, maximized?disabled:enabled);
EnableMenuItem(menu, SC_CLOSE, enabled);
// Set bold on close menu item
diff --git a/src/plugins/platforms/windows/qwindowsmousehandler.cpp b/src/plugins/platforms/windows/qwindowsmousehandler.cpp
index 2d60c87438..d202da1d31 100644
--- a/src/plugins/platforms/windows/qwindowsmousehandler.cpp
+++ b/src/plugins/platforms/windows/qwindowsmousehandler.cpp
@@ -129,7 +129,9 @@ static inline void compressMouseMove(MSG *msg)
QWindowsMouseHandler::QWindowsMouseHandler() :
m_windowUnderMouse(0),
m_trackedWindow(0),
- m_touchDevice(0)
+ m_touchDevice(0),
+ m_leftButtonDown(false),
+ m_previousCaptureWindow(0)
{
}
@@ -143,6 +145,10 @@ Qt::MouseButtons QWindowsMouseHandler::queryMouseButtons()
result |= mouseSwapped ? Qt::LeftButton : Qt::RightButton;
if (GetAsyncKeyState(VK_MBUTTON) < 0)
result |= Qt::MidButton;
+ if (GetAsyncKeyState(VK_XBUTTON1) < 0)
+ result |= Qt::XButton1;
+ if (GetAsyncKeyState(VK_XBUTTON2) < 0)
+ result |= Qt::XButton2;
return result;
}
@@ -164,7 +170,6 @@ bool QWindowsMouseHandler::translateMouseEvent(QWindow *window, HWND hwnd,
return false; // Allow further event processing (dragging of windows).
}
-
*result = 0;
if (msg.message == WM_MOUSELEAVE) {
if (QWindowsContext::verboseEvents)
@@ -185,6 +190,36 @@ bool QWindowsMouseHandler::translateMouseEvent(QWindow *window, HWND hwnd,
}
QWindowsWindow *platformWindow = static_cast<QWindowsWindow *>(window->handle());
+ const Qt::MouseButtons buttons = keyStateToMouseButtons((int)msg.wParam);
+
+ // If the window was recently resized via mouse doubleclick on the frame or title bar,
+ // we don't get WM_LBUTTONDOWN or WM_LBUTTONDBLCLK for the second click,
+ // but we will get at least one WM_MOUSEMOVE with left button down and the WM_LBUTTONUP,
+ // which will result undesired mouse press and release events.
+ // To avoid those, we ignore any events with left button down if we didn't
+ // get the original WM_LBUTTONDOWN/WM_LBUTTONDBLCLK.
+ if (msg.message == WM_LBUTTONDOWN || msg.message == WM_LBUTTONDBLCLK) {
+ m_leftButtonDown = true;
+ } else {
+ const bool actualLeftDown = buttons & Qt::LeftButton;
+ if (!m_leftButtonDown && actualLeftDown) {
+ // Autocapture the mouse for current window to and ignore further events until release.
+ // Capture is necessary so we don't get WM_MOUSELEAVEs to confuse matters.
+ // This autocapture is released normally when button is released.
+ if (!platformWindow->hasMouseCapture()) {
+ QWindowsWindow::baseWindowOf(window)->applyCursor();
+ platformWindow->setMouseGrabEnabled(true);
+ platformWindow->setFlag(QWindowsWindow::AutoMouseCapture);
+ if (QWindowsContext::verboseEvents)
+ qDebug() << "Automatic mouse capture for missing buttondown event" << window;
+ }
+ m_previousCaptureWindow = window;
+ return true;
+ } else if (m_leftButtonDown && !actualLeftDown) {
+ m_leftButtonDown = false;
+ }
+ }
+
const QPoint globalPosition = QWindowsGeometryHint::mapToGlobal(hwnd, winEventPosition);
QWindow *currentWindowUnderMouse = platformWindow->hasMouseCapture() ?
QWindowsScreen::windowAt(globalPosition) : window;
@@ -194,7 +229,9 @@ bool QWindowsMouseHandler::translateMouseEvent(QWindow *window, HWND hwnd,
// any button press until release.
if (!platformWindow->hasMouseCapture()
&& (msg.message == WM_LBUTTONDOWN || msg.message == WM_MBUTTONDOWN
- || msg.message == WM_RBUTTONDOWN)) {
+ || msg.message == WM_RBUTTONDOWN || msg.message == WM_XBUTTONDOWN
+ || msg.message == WM_LBUTTONDBLCLK || msg.message == WM_MBUTTONDBLCLK
+ || msg.message == WM_RBUTTONDBLCLK || msg.message == WM_XBUTTONDBLCLK)) {
platformWindow->setMouseGrabEnabled(true);
platformWindow->setFlag(QWindowsWindow::AutoMouseCapture);
if (QWindowsContext::verboseEvents)
@@ -202,27 +239,20 @@ bool QWindowsMouseHandler::translateMouseEvent(QWindow *window, HWND hwnd,
} else if (platformWindow->hasMouseCapture()
&& platformWindow->testFlag(QWindowsWindow::AutoMouseCapture)
&& (msg.message == WM_LBUTTONUP || msg.message == WM_MBUTTONUP
- || msg.message == WM_RBUTTONUP)) {
+ || msg.message == WM_RBUTTONUP || msg.message == WM_XBUTTONUP)
+ && !buttons) {
platformWindow->setMouseGrabEnabled(false);
if (QWindowsContext::verboseEvents)
qDebug() << "Releasing automatic mouse capture " << window;
}
- // Eat mouse move after size grip drag.
- if (msg.message == WM_MOUSEMOVE) {
- if (platformWindow->testFlag(QWindowsWindow::SizeGripOperation)) {
- MSG mouseMsg;
- while (PeekMessage(&mouseMsg, platformWindow->handle(), WM_MOUSEMOVE, WM_MOUSEMOVE, PM_REMOVE)) ;
- platformWindow->clearFlag(QWindowsWindow::SizeGripOperation);
- return true;
- }
- }
+ const bool hasCapture = platformWindow->hasMouseCapture();
+ const bool currentNotCapturing = hasCapture && currentWindowUnderMouse != window;
#ifndef Q_OS_WINCE
// Enter new window: track to generate leave event.
- // If there is an active capture, we must track the actual capture window instead of window
- // under cursor or leaves will trigger constantly, so always track the window we got
- // native mouse event for.
- if (window != m_trackedWindow) {
+ // If there is an active capture, only track if the current window is capturing,
+ // so we don't get extra leave when cursor leaves the application.
+ if (window != m_trackedWindow && !currentNotCapturing) {
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(TRACKMOUSEEVENT);
tme.dwFlags = TME_LEAVE;
@@ -234,38 +264,53 @@ bool QWindowsMouseHandler::translateMouseEvent(QWindow *window, HWND hwnd,
}
#endif // !Q_OS_WINCE
- // Qt expects enter/leave events for windows even when some window is capturing mouse input,
- // except for automatic capture when mouse button is pressed - in that case enter/leave
- // should be sent only after the last button is released.
- // We need to track m_windowUnderMouse separately from m_trackedWindow, as
- // Windows mouse tracking will not trigger WM_MOUSELEAVE for leaving window when
- // mouse capture is set.
- if (!platformWindow->hasMouseCapture()
- || !platformWindow->testFlag(QWindowsWindow::AutoMouseCapture)) {
- if (m_windowUnderMouse != currentWindowUnderMouse) {
- if (m_windowUnderMouse) {
- if (QWindowsContext::verboseEvents)
- qDebug() << "Synthetic leave for " << m_windowUnderMouse;
- QWindowSystemInterface::handleLeaveEvent(m_windowUnderMouse);
- // Clear tracking if we are no longer over application,
- // since we have already sent the leave.
- if (!currentWindowUnderMouse)
- m_trackedWindow = 0;
- }
-
- if (currentWindowUnderMouse) {
- if (QWindowsContext::verboseEvents)
- qDebug() << "Entering " << currentWindowUnderMouse;
- QWindowsWindow::baseWindowOf(currentWindowUnderMouse)->applyCursor();
- QWindowSystemInterface::handleEnterEvent(currentWindowUnderMouse);
+ // No enter or leave events are sent as long as there is an autocapturing window.
+ if (!hasCapture || !platformWindow->testFlag(QWindowsWindow::AutoMouseCapture)) {
+ // Leave is needed if:
+ // 1) There is no capture and we move from a window to another window.
+ // Note: Leaving the application entirely is handled in WM_MOUSELEAVE case.
+ // 2) There is capture and we move out of the capturing window.
+ // 3) There is a new capture and we were over another window.
+ if ((m_windowUnderMouse && m_windowUnderMouse != currentWindowUnderMouse
+ && (!hasCapture || window == m_windowUnderMouse))
+ || (hasCapture && m_previousCaptureWindow != window && m_windowUnderMouse
+ && m_windowUnderMouse != window)) {
+ if (QWindowsContext::verboseEvents)
+ qDebug() << "Synthetic leave for " << m_windowUnderMouse;
+ QWindowSystemInterface::handleLeaveEvent(m_windowUnderMouse);
+ if (currentNotCapturing) {
+ // Clear tracking if capturing and current window is not the capturing window
+ // to avoid leave when mouse actually leaves the application.
+ m_trackedWindow = 0;
+ // We are not officially in any window, but we need to set some cursor to clear
+ // whatever cursor the left window had, so apply the cursor of the capture window.
+ QWindowsWindow::baseWindowOf(window)->applyCursor();
}
}
+ // Enter is needed if:
+ // 1) There is no capture and we move to a new window.
+ // 2) There is capture and we move into the capturing window.
+ // 3) The capture just ended and we are over non-capturing window.
+ if ((currentWindowUnderMouse && m_windowUnderMouse != currentWindowUnderMouse
+ && (!hasCapture || currentWindowUnderMouse == window))
+ || (m_previousCaptureWindow && window != m_previousCaptureWindow && currentWindowUnderMouse
+ && currentWindowUnderMouse != m_previousCaptureWindow)) {
+ if (QWindowsContext::verboseEvents)
+ qDebug() << "Entering " << currentWindowUnderMouse;
+ QWindowsWindow::baseWindowOf(currentWindowUnderMouse)->applyCursor();
+ QWindowSystemInterface::handleEnterEvent(currentWindowUnderMouse,
+ currentWindowUnderMouse->mapFromGlobal(globalPosition),
+ globalPosition);
+ }
+ // We need to track m_windowUnderMouse separately from m_trackedWindow, as
+ // Windows mouse tracking will not trigger WM_MOUSELEAVE for leaving window when
+ // mouse capture is set.
m_windowUnderMouse = currentWindowUnderMouse;
}
- QWindowSystemInterface::handleMouseEvent(window, winEventPosition, globalPosition,
- keyStateToMouseButtons((int)msg.wParam),
+ QWindowSystemInterface::handleMouseEvent(window, winEventPosition, globalPosition, buttons,
QWindowsKeyMapper::queryKeyboardModifiers());
+ m_previousCaptureWindow = hasCapture ? window : 0;
return true;
}
diff --git a/src/plugins/platforms/windows/qwindowsmousehandler.h b/src/plugins/platforms/windows/qwindowsmousehandler.h
index 1b19b34458..965deb4e0f 100644
--- a/src/plugins/platforms/windows/qwindowsmousehandler.h
+++ b/src/plugins/platforms/windows/qwindowsmousehandler.h
@@ -81,6 +81,8 @@ private:
QPointer<QWindow> m_trackedWindow;
QHash<DWORD, int> m_touchInputIDToTouchPointID;
QTouchDevice *m_touchDevice;
+ bool m_leftButtonDown;
+ QWindow *m_previousCaptureWindow;
};
Qt::MouseButtons QWindowsMouseHandler::keyStateToMouseButtons(int wParam)
diff --git a/src/plugins/platforms/windows/qwindowsscreen.cpp b/src/plugins/platforms/windows/qwindowsscreen.cpp
index 0717a8ec60..a09ab583c8 100644
--- a/src/plugins/platforms/windows/qwindowsscreen.cpp
+++ b/src/plugins/platforms/windows/qwindowsscreen.cpp
@@ -125,11 +125,19 @@ BOOL QT_WIN_CALLBACK monitorEnumCallback(HMONITOR hMonitor, HDC, LPRECT, LPARAM
Qt::PortraitOrientation : Qt::LandscapeOrientation;
// EnumDisplayMonitors (as opposed to EnumDisplayDevices) enumerates only
// virtual desktop screens.
+ data.name = QString::fromWCharArray(info.szDevice);
data.flags = QWindowsScreenData::VirtualDesktop;
- if (info.dwFlags & MONITORINFOF_PRIMARY)
+ if (info.dwFlags & MONITORINFOF_PRIMARY) {
data.flags |= QWindowsScreenData::PrimaryScreen;
- data.name = QString::fromWCharArray(info.szDevice);
- result->append(data);
+ // QPlatformIntegration::screenAdded() documentation specifies that first
+ // added screen will be the primary screen, so order accordingly.
+ // Note that the side effect of this policy is that there is no way to change primary
+ // screen reported by Qt, unless we want to delete all existing screens and add them
+ // again whenever primary screen changes.
+ result->prepend(data);
+ } else {
+ result->append(data);
+ }
return TRUE;
}
diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp
index 9aada91e73..25aae11d87 100644
--- a/src/plugins/platforms/windows/qwindowswindow.cpp
+++ b/src/plugins/platforms/windows/qwindowswindow.cpp
@@ -715,7 +715,7 @@ QWindowsWindow::QWindowsWindow(QWindow *aWindow, const WindowData &data) :
setFlag(OpenGLSurface);
QWindowsContext::instance()->addWindow(m_data.hwnd, this);
if (aWindow->isTopLevel()) {
- switch (aWindow->windowType()) {
+ switch (aWindow->type()) {
case Qt::Window:
case Qt::Dialog:
case Qt::Sheet:
@@ -893,8 +893,8 @@ void QWindowsWindow::show_sys() const
int sm = SW_SHOWNORMAL;
bool fakedMaximize = false;
const QWindow *w = window();
- const Qt::WindowFlags flags = w->windowFlags();
- const Qt::WindowType type = w->windowType();
+ const Qt::WindowFlags flags = w->flags();
+ const Qt::WindowType type = w->type();
if (w->isTopLevel()) {
const Qt::WindowState state = w->windowState();
if (state & Qt::WindowMinimized) {
@@ -931,7 +931,7 @@ void QWindowsWindow::show_sys() const
// partially from QWidgetPrivate::hide_sys()
void QWindowsWindow::hide_sys() const
{
- const Qt::WindowFlags flags = window()->windowFlags();
+ const Qt::WindowFlags flags = window()->flags();
if (flags != Qt::Desktop) {
if (flags & Qt::Popup)
ShowWindow(m_data.hwnd, SW_HIDE);
@@ -979,7 +979,7 @@ void QWindowsWindow::setParent_sys(const QPlatformWindow *parent) const
// to dialog frames, etc (see SetParent() ) if the top level state changes.
if (wasTopLevel != isTopLevel) {
const unsigned flags = isTopLevel ? unsigned(0) : unsigned(WindowCreationData::ForceChild);
- setWindowFlags_sys(window()->windowFlags(), flags);
+ setWindowFlags_sys(window()->flags(), flags);
}
}
}
diff --git a/src/plugins/platforms/xcb/README b/src/plugins/platforms/xcb/README
index 59d9ffe39b..2f666bebfd 100644
--- a/src/plugins/platforms/xcb/README
+++ b/src/plugins/platforms/xcb/README
@@ -1,5 +1,7 @@
Requires libxcb >= 1.5.
+PACKAGE DEPENDENCIES
+
Required packages:
libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm1 libxcb-icccm1-dev libxcb-sync0 libxcb-sync0-dev libxcb-render-util0 libxcb-render-util0-dev libxcb-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-glx0-dev
@@ -13,3 +15,9 @@ libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-d
On Fedora, the following packages are required:
libxcb libxcb-devel libXrender libXrender-devel xcb-util-wm xcb-util-wm-devel xcb-util xcb-util-devel xcb-util-image xcb-util-image-devel xcb-util-keysyms xcb-util-keysyms-devel
+
+REDUCING RUNTIME DEPENDENCIES
+
+The '-qt-xcb' configure option can be used to get rid of most xcb- dependencies. Only libxcb will
+still be linked dynamically, since it will be most likely be pulled in via other dependencies anyway.
+This should allow for binaries that are portable across most modern Linux distributions.
diff --git a/src/plugins/platforms/xcb/qglxintegration.cpp b/src/plugins/platforms/xcb/qglxintegration.cpp
index 8c300d6c19..10aaa5a3b5 100644
--- a/src/plugins/platforms/xcb/qglxintegration.cpp
+++ b/src/plugins/platforms/xcb/qglxintegration.cpp
@@ -86,6 +86,7 @@ static Window createDummyWindow(QXcbScreen *screen, XVisualInfo *visualInfo)
0, 0, 100, 100,
0, visualInfo->depth, InputOutput, visualInfo->visual,
CWBackPixel|CWBorderPixel|CWColormap, &a);
+ XFreeColormap(DISPLAY_FROM_XCB(screen), cmap);
return window;
}
diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp
index 85f6fc9213..405a16d488 100644
--- a/src/plugins/platforms/xcb/qxcbconnection.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection.cpp
@@ -58,6 +58,7 @@
#include <QTimer>
#include <QByteArray>
+#include <dlfcn.h>
#include <stdio.h>
#include <errno.h>
#include <xcb/shm.h>
@@ -281,17 +282,16 @@ QXcbConnection::QXcbConnection(QXcbNativeInterface *nativeInterface, const char
qFatal("QXcbConnection: Could not connect to display %s", m_displayName.constData());
m_reader = new QXcbEventReader(this);
-#ifdef XCB_POLL_FOR_QUEUED_EVENT
connect(m_reader, SIGNAL(eventPending()), this, SLOT(processXcbEvents()), Qt::QueuedConnection);
- m_reader->start();
-#else
- QSocketNotifier *notifier = new QSocketNotifier(xcb_get_file_descriptor(xcb_connection()), QSocketNotifier::Read, this);
- connect(notifier, SIGNAL(activated(int)), this, SLOT(processXcbEvents()));
-
- QAbstractEventDispatcher *dispatcher = QGuiApplicationPrivate::eventDispatcher;
- connect(dispatcher, SIGNAL(aboutToBlock()), this, SLOT(processXcbEvents()));
- connect(dispatcher, SIGNAL(awake()), this, SLOT(processXcbEvents()));
-#endif
+ connect(m_reader, SIGNAL(finished()), this, SLOT(processXcbEvents()));
+ if (!m_reader->startThread()) {
+ QSocketNotifier *notifier = new QSocketNotifier(xcb_get_file_descriptor(xcb_connection()), QSocketNotifier::Read, this);
+ connect(notifier, SIGNAL(activated(int)), this, SLOT(processXcbEvents()));
+
+ QAbstractEventDispatcher *dispatcher = QGuiApplicationPrivate::eventDispatcher;
+ connect(dispatcher, SIGNAL(aboutToBlock()), this, SLOT(processXcbEvents()));
+ connect(dispatcher, SIGNAL(awake()), this, SLOT(processXcbEvents()));
+ }
xcb_extension_t *extensions[] = {
&xcb_shm_id, &xcb_xfixes_id, &xcb_randr_id, &xcb_shape_id, &xcb_sync_id,
@@ -363,10 +363,11 @@ QXcbConnection::~QXcbConnection()
finalizeXInput2();
#endif
-#ifdef XCB_POLL_FOR_QUEUED_EVENT
- sendConnectionEvent(QXcbAtom::_QT_CLOSE_CONNECTION);
- m_reader->wait();
-#endif
+ if (m_reader->isRunning()) {
+ sendConnectionEvent(QXcbAtom::_QT_CLOSE_CONNECTION);
+ m_reader->wait();
+ }
+
delete m_reader;
#ifdef XCB_USE_EGL
@@ -807,14 +808,37 @@ void QXcbConnection::addPeekFunc(PeekFunc f)
m_peekFuncs.append(f);
}
-#ifdef XCB_POLL_FOR_QUEUED_EVENT
+QXcbEventReader::QXcbEventReader(QXcbConnection *connection)
+ : m_connection(connection)
+ , m_xcb_poll_for_queued_event(0)
+{
+#ifdef RTLD_DEFAULT
+ m_xcb_poll_for_queued_event = (XcbPollForQueuedEventFunctionPointer)dlsym(RTLD_DEFAULT, "xcb_poll_for_queued_event");
+#endif
+
+#ifdef Q_XCB_DEBUG
+ if (m_xcb_poll_for_queued_event)
+ qDebug("Using threaded event reader with xcb_poll_for_queued_event");
+#endif
+}
+
+bool QXcbEventReader::startThread()
+{
+ if (m_xcb_poll_for_queued_event) {
+ QThread::start();
+ return true;
+ }
+
+ return false;
+}
+
void QXcbEventReader::run()
{
xcb_generic_event_t *event;
while (m_connection && (event = xcb_wait_for_event(m_connection->xcb_connection()))) {
m_mutex.lock();
addEvent(event);
- while (m_connection && (event = xcb_poll_for_queued_event(m_connection->xcb_connection())))
+ while (m_connection && (event = m_xcb_poll_for_queued_event(m_connection->xcb_connection())))
addEvent(event);
m_mutex.unlock();
emit eventPending();
@@ -823,7 +847,6 @@ void QXcbEventReader::run()
for (int i = 0; i < m_events.size(); ++i)
free(m_events.at(i));
}
-#endif
void QXcbEventReader::addEvent(xcb_generic_event_t *event)
{
@@ -836,10 +859,10 @@ void QXcbEventReader::addEvent(xcb_generic_event_t *event)
QXcbEventArray *QXcbEventReader::lock()
{
m_mutex.lock();
-#ifndef XCB_POLL_FOR_QUEUED_EVENT
- while (xcb_generic_event_t *event = xcb_poll_for_event(m_connection->xcb_connection()))
- m_events << event;
-#endif
+ if (!m_xcb_poll_for_queued_event) {
+ while (xcb_generic_event_t *event = xcb_poll_for_event(m_connection->xcb_connection()))
+ m_events << event;
+ }
return &m_events;
}
@@ -919,6 +942,12 @@ xcb_timestamp_t QXcbConnection::getTimestamp()
void QXcbConnection::processXcbEvents()
{
+ int connection_error = xcb_connection_has_error(xcb_connection());
+ if (connection_error) {
+ qWarning("The X11 connection broke (error %d). Did the X11 server die?", connection_error);
+ exit(1);
+ }
+
QXcbEventArray *eventqueue = m_reader->lock();
for(int i = 0; i < eventqueue->size(); ++i) {
@@ -932,6 +961,30 @@ void QXcbConnection::processXcbEvents()
if (!response_type) {
handleXcbError((xcb_generic_error_t *)event);
} else {
+ if (response_type == XCB_MOTION_NOTIFY) {
+ // compress multiple motion notify events in a row
+ // to avoid swamping the event queue
+ xcb_generic_event_t *next = eventqueue->value(i+1, 0);
+ if (next && (next->response_type & ~0x80) == XCB_MOTION_NOTIFY)
+ continue;
+ }
+
+ if (response_type == XCB_CONFIGURE_NOTIFY) {
+ // compress multiple configure notify events for the same window
+ bool found = false;
+ for (int j = i; j < eventqueue->size(); ++j) {
+ xcb_generic_event_t *other = eventqueue->at(j);
+ if (other && (other->response_type & ~0x80) == XCB_CONFIGURE_NOTIFY
+ && ((xcb_configure_notify_event_t *)other)->event == ((xcb_configure_notify_event_t *)event)->event)
+ {
+ found = true;
+ break;
+ }
+ }
+ if (found)
+ continue;
+ }
+
QVector<PeekFunc>::iterator it = m_peekFuncs.begin();
while (it != m_peekFuncs.end()) {
// These callbacks return true if the event is what they were
diff --git a/src/plugins/platforms/xcb/qxcbconnection.h b/src/plugins/platforms/xcb/qxcbconnection.h
index 8b2315c67e..c67acb3218 100644
--- a/src/plugins/platforms/xcb/qxcbconnection.h
+++ b/src/plugins/platforms/xcb/qxcbconnection.h
@@ -278,18 +278,15 @@ class QXcbEventReader : public QThread
{
Q_OBJECT
public:
- QXcbEventReader(QXcbConnection *connection)
- : m_connection(connection)
- {
- }
+ QXcbEventReader(QXcbConnection *connection);
-#ifdef XCB_POLL_FOR_QUEUED_EVENT
void run();
-#endif
QXcbEventArray *lock();
void unlock();
+ bool startThread();
+
signals:
void eventPending();
@@ -299,6 +296,9 @@ private:
QMutex m_mutex;
QXcbEventArray m_events;
QXcbConnection *m_connection;
+
+ typedef xcb_generic_event_t * (*XcbPollForQueuedEventFunctionPointer)(xcb_connection_t *c);
+ XcbPollForQueuedEventFunctionPointer m_xcb_poll_for_queued_event;
};
class QAbstractEventDispatcher;
@@ -376,6 +376,8 @@ public:
bool hasXRandr() const { return has_randr_extension; }
bool hasInputShape() const { return has_input_shape; }
+ bool supportsThreadedRendering() const { return m_reader->isRunning(); }
+
xcb_timestamp_t getTimestamp();
private slots:
diff --git a/src/plugins/platforms/xcb/qxcbdrag.cpp b/src/plugins/platforms/xcb/qxcbdrag.cpp
index 27a926eca2..cd7237e4b4 100644
--- a/src/plugins/platforms/xcb/qxcbdrag.cpp
+++ b/src/plugins/platforms/xcb/qxcbdrag.cpp
@@ -396,7 +396,7 @@ void QXcbDrag::move(const QMouseEvent *me)
QXcbWindow *w = 0;
if (target) {
w = connection()->platformWindowFromId(target);
- if (w && (w->window()->windowType() == Qt::Desktop) /*&& !w->acceptDrops()*/)
+ if (w && (w->window()->type() == Qt::Desktop) /*&& !w->acceptDrops()*/)
w = 0;
} else {
w = 0;
@@ -507,7 +507,7 @@ void QXcbDrag::drop(const QMouseEvent *event)
QXcbWindow *w = connection()->platformWindowFromId(current_proxy_target);
- if (w && (w->window()->windowType() == Qt::Desktop) /*&& !w->acceptDrops()*/)
+ if (w && (w->window()->type() == Qt::Desktop) /*&& !w->acceptDrops()*/)
w = 0;
Transaction t = {
@@ -722,7 +722,7 @@ void QXcbDrag::handle_xdnd_position(QWindow *w, const xcb_client_message_event_t
p -= geometry.topLeft();
- if (!w || (w->windowType() == Qt::Desktop))
+ if (!w || (w->type() == Qt::Desktop))
return;
if (e->data.data32[0] != xdnd_dragsource) {
@@ -912,7 +912,7 @@ void QXcbDrag::send_leave()
QXcbWindow *w = connection()->platformWindowFromId(current_proxy_target);
- if (w && (w->window()->windowType() == Qt::Desktop) /*&& !w->acceptDrops()*/)
+ if (w && (w->window()->type() == Qt::Desktop) /*&& !w->acceptDrops()*/)
w = 0;
if (w)
@@ -1157,7 +1157,7 @@ bool QXcbDrag::dndEnable(QXcbWindow *w, bool on)
DNDDEBUG << "xdndEnable" << w << on;
if (on) {
QXcbWindow *xdnd_widget = 0;
- if ((w->window()->windowType() == Qt::Desktop)) {
+ if ((w->window()->type() == Qt::Desktop)) {
if (desktop_proxy) // *WE* already have one.
return false;
@@ -1191,7 +1191,7 @@ bool QXcbDrag::dndEnable(QXcbWindow *w, bool on)
return false;
}
} else {
- if ((w->window()->windowType() == Qt::Desktop)) {
+ if ((w->window()->type() == Qt::Desktop)) {
xcb_delete_property(xcb_connection(), w->xcb_window(), atom(QXcbAtom::XdndProxy));
delete desktop_proxy;
desktop_proxy = 0;
@@ -1225,7 +1225,7 @@ QVariant QXcbDropData::xdndObtainData(const QByteArray &format, QVariant::Type r
QXcbConnection *c = drag->connection();
QXcbWindow *xcb_window = c->platformWindowFromId(drag->xdnd_dragsource);
- if (xcb_window && drag->currentDrag() && xcb_window->window()->windowType() != Qt::Desktop) {
+ if (xcb_window && drag->currentDrag() && xcb_window->window()->type() != Qt::Desktop) {
QMimeData *data = drag->currentDrag()->mimeData();
if (data->hasFormat(QLatin1String(format)))
result = data->data(QLatin1String(format));
diff --git a/src/plugins/platforms/xcb/qxcbintegration.cpp b/src/plugins/platforms/xcb/qxcbintegration.cpp
index 2ffe53c04b..22e5386937 100644
--- a/src/plugins/platforms/xcb/qxcbintegration.cpp
+++ b/src/plugins/platforms/xcb/qxcbintegration.cpp
@@ -214,7 +214,7 @@ bool QXcbIntegration::hasCapability(QPlatformIntegration::Capability cap) const
#else
case OpenGL: return false;
#endif
- case ThreadedOpenGL: return false;
+ case ThreadedOpenGL: return m_connections.at(0)->supportsThreadedRendering();
case WindowMasks: return true;
case MultipleWindows: return true;
default: return QPlatformIntegration::hasCapability(cap);
diff --git a/src/plugins/platforms/xcb/qxcbkeyboard.cpp b/src/plugins/platforms/xcb/qxcbkeyboard.cpp
index a8542af156..d35ce181e3 100644
--- a/src/plugins/platforms/xcb/qxcbkeyboard.cpp
+++ b/src/plugins/platforms/xcb/qxcbkeyboard.cpp
@@ -53,6 +53,7 @@
#include <qpa/qplatforminputcontext.h>
#include <qpa/qplatformintegration.h>
+#include <qpa/qplatformcursor.h>
#ifndef XK_ISO_Left_Tab
#define XK_ISO_Left_Tab 0xFE20
@@ -1106,9 +1107,15 @@ void QXcbKeyboard::handleKeyEvent(QWindow *window, QEvent::Type type, xcb_keycod
filtered = inputContext->filterEvent(&event);
}
- if (!filtered)
+ if (!filtered) {
+ if (type == QEvent::KeyPress && qtcode == Qt::Key_Menu) {
+ const QPoint globalPos = window->screen()->handle()->cursor()->pos();
+ const QPoint pos = window->mapFromGlobal(globalPos);
+ QWindowSystemInterface::handleContextMenuEvent(window, false, pos, globalPos, modifiers);
+ }
QWindowSystemInterface::handleExtendedKeyEvent(window, time, type, qtcode, modifiers,
code, sym, state, string.left(count), isAutoRepeat);
+ }
if (isAutoRepeat && type == QEvent::KeyRelease) {
// since we removed it from the event queue using checkEvent we need to send the key press here
diff --git a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
index fa5f5f43d0..a44e7fb959 100644
--- a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
+++ b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
@@ -104,6 +104,25 @@ void *QXcbNativeInterface::nativeResourceForContext(const QByteArray &resourceSt
return result;
}
+void *QXcbNativeInterface::nativeResourceForScreen(const QByteArray &resource, QScreen *screen)
+{
+ const QXcbResourceMap::const_iterator it = qXcbResourceMap()->constFind(resource.toLower());
+ if (it == qXcbResourceMap()->constEnd() || !screen->handle())
+ return 0;
+ const QXcbScreen *xcbScreen = static_cast<QXcbScreen *>(screen->handle());
+ switch (it.value()) {
+ case Display:
+#ifdef XCB_USE_XLIB
+ return xcbScreen->connection()->xlib_display();
+#else
+ break;
+#endif
+ default:
+ break;
+ }
+ return 0;
+}
+
void *QXcbNativeInterface::nativeResourceForWindow(const QByteArray &resourceString, QWindow *window)
{
QByteArray lowerCaseResource = resourceString.toLower();
diff --git a/src/plugins/platforms/xcb/qxcbnativeinterface.h b/src/plugins/platforms/xcb/qxcbnativeinterface.h
index c15d00255a..a7e0a207cb 100644
--- a/src/plugins/platforms/xcb/qxcbnativeinterface.h
+++ b/src/plugins/platforms/xcb/qxcbnativeinterface.h
@@ -65,6 +65,7 @@ public:
QXcbNativeInterface();
void *nativeResourceForContext(const QByteArray &resourceString, QOpenGLContext *context);
+ void *nativeResourceForScreen(const QByteArray &resource, QScreen *screen);
void *nativeResourceForWindow(const QByteArray &resourceString, QWindow *window);
NativeResourceForContextFunction nativeResourceFunctionForContext(const QByteArray &resource);
diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp
index eab18e2435..e0f5dbc435 100644
--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
@@ -121,13 +121,13 @@ QT_BEGIN_NAMESPACE
// Returns true if we should set WM_TRANSIENT_FOR on \a w
static inline bool isTransient(const QWindow *w)
{
- return w->windowType() == Qt::Dialog
- || w->windowType() == Qt::Sheet
- || w->windowType() == Qt::Tool
- || w->windowType() == Qt::SplashScreen
- || w->windowType() == Qt::ToolTip
- || w->windowType() == Qt::Drawer
- || w->windowType() == Qt::Popup;
+ return w->type() == Qt::Dialog
+ || w->type() == Qt::Sheet
+ || w->type() == Qt::Tool
+ || w->type() == Qt::SplashScreen
+ || w->type() == Qt::ToolTip
+ || w->type() == Qt::Drawer
+ || w->type() == Qt::Popup;
}
static inline QImage::Format imageFormatForDepth(int depth)
@@ -175,7 +175,7 @@ void QXcbWindow::create()
m_configureNotifyPending = true;
m_windowState = Qt::WindowNoState;
- Qt::WindowType type = window()->windowType();
+ Qt::WindowType type = window()->type();
if (type == Qt::Desktop) {
m_window = m_screen->root();
@@ -309,7 +309,7 @@ void QXcbWindow::create()
if (m_screen->syncRequestSupported())
properties[propertyCount++] = atom(QXcbAtom::_NET_WM_SYNC_REQUEST);
- if (window()->windowFlags() & Qt::WindowContextHelpButtonHint)
+ if (window()->flags() & Qt::WindowContextHelpButtonHint)
properties[propertyCount++] = atom(QXcbAtom::_NET_WM_CONTEXT_HELP);
Q_XCB_CALL(xcb_change_property(xcb_connection(),
@@ -347,7 +347,7 @@ void QXcbWindow::create()
memset(&hints, 0, sizeof(hints));
xcb_wm_hints_set_normal(&hints);
- xcb_wm_hints_set_input(&hints, !(window()->windowFlags() & Qt::WindowDoesNotAcceptFocus));
+ xcb_wm_hints_set_input(&hints, !(window()->flags() & Qt::WindowDoesNotAcceptFocus));
xcb_set_wm_hints(xcb_connection(), m_window, &hints);
@@ -375,11 +375,11 @@ void QXcbWindow::create()
connection()->xi2Select(m_window);
#endif
- setWindowFlags(window()->windowFlags());
- setWindowTitle(window()->windowTitle());
setWindowState(window()->windowState());
+ setWindowFlags(window()->flags());
+ setWindowTitle(window()->title());
- if (window()->windowFlags() & Qt::WindowTransparentForInput)
+ if (window()->flags() & Qt::WindowTransparentForInput)
setTransparentForMouseEvents(true);
#ifndef QT_NO_DRAGANDDROP
@@ -534,7 +534,7 @@ void QXcbWindow::show()
else
xcb_wm_hints_set_normal(&hints);
- xcb_wm_hints_set_input(&hints, !(window()->windowFlags() & Qt::WindowDoesNotAcceptFocus));
+ xcb_wm_hints_set_input(&hints, !(window()->flags() & Qt::WindowDoesNotAcceptFocus));
xcb_set_wm_hints(xcb_connection(), m_window, &hints);
@@ -943,8 +943,8 @@ void QXcbWindow::updateMotifWmHintsBeforeMap()
{
QtMotifWmHints mwmhints = getMotifWmHints(connection(), m_window);
- if (window()->windowModality() != Qt::NonModal) {
- switch (window()->windowModality()) {
+ if (window()->modality() != Qt::NonModal) {
+ switch (window()->modality()) {
case Qt::WindowModal:
mwmhints.input_mode = MWM_INPUT_PRIMARY_APPLICATION_MODAL;
break;
@@ -979,17 +979,17 @@ void QXcbWindow::updateMotifWmHintsBeforeMap()
}
}
- if (window()->windowFlags() & Qt::WindowMinimizeButtonHint) {
+ if (window()->flags() & Qt::WindowMinimizeButtonHint) {
mwmhints.flags |= MWM_HINTS_DECORATIONS;
mwmhints.decorations |= MWM_DECOR_MINIMIZE;
mwmhints.functions |= MWM_FUNC_MINIMIZE;
}
- if (window()->windowFlags() & Qt::WindowMaximizeButtonHint) {
+ if (window()->flags() & Qt::WindowMaximizeButtonHint) {
mwmhints.flags |= MWM_HINTS_DECORATIONS;
mwmhints.decorations |= MWM_DECOR_MAXIMIZE;
mwmhints.functions |= MWM_FUNC_MAXIMIZE;
}
- if (window()->windowFlags() & Qt::WindowCloseButtonHint)
+ if (window()->flags() & Qt::WindowCloseButtonHint)
mwmhints.functions |= MWM_FUNC_CLOSE;
setMotifWmHints(connection(), m_window, mwmhints);
@@ -999,7 +999,7 @@ void QXcbWindow::updateNetWmStateBeforeMap()
{
NetWmStates states(0);
- const Qt::WindowFlags flags = window()->windowFlags();
+ const Qt::WindowFlags flags = window()->flags();
if (flags & Qt::WindowStaysOnTopHint) {
states |= NetWmStateAbove;
states |= NetWmStateStaysOnTop;
@@ -1015,7 +1015,7 @@ void QXcbWindow::updateNetWmStateBeforeMap()
states |= NetWmStateMaximizedVert;
}
- if (window()->windowModality() != Qt::NonModal)
+ if (window()->modality() != Qt::NonModal)
states |= NetWmStateModal;
setNetWmStates(states);
@@ -1303,6 +1303,42 @@ QXcbEGLSurface *QXcbWindow::eglSurface() const
}
#endif
+class ExposeCompressor
+{
+public:
+ ExposeCompressor(xcb_window_t window, QRegion *region)
+ : m_window(window)
+ , m_region(region)
+ , m_pending(true)
+ {
+ }
+
+ bool checkEvent(xcb_generic_event_t *event)
+ {
+ if (!event)
+ return false;
+ if ((event->response_type & ~0x80) != XCB_EXPOSE)
+ return false;
+ xcb_expose_event_t *expose = (xcb_expose_event_t *)event;
+ if (expose->window != m_window)
+ return false;
+ if (expose->count == 0)
+ m_pending = false;
+ *m_region |= QRect(expose->x, expose->y, expose->width, expose->height);
+ return true;
+ }
+
+ bool pending() const
+ {
+ return m_pending;
+ }
+
+private:
+ xcb_window_t m_window;
+ QRegion *m_region;
+ bool m_pending;
+};
+
void QXcbWindow::handleExposeEvent(const xcb_expose_event_t *event)
{
QRect rect(event->x, event->y, event->width, event->height);
@@ -1312,8 +1348,15 @@ void QXcbWindow::handleExposeEvent(const xcb_expose_event_t *event)
else
m_exposeRegion |= rect;
+ ExposeCompressor compressor(m_window, &m_exposeRegion);
+ xcb_generic_event_t *filter = 0;
+ do {
+ filter = connection()->checkEvent(compressor);
+ free(filter);
+ } while (filter);
+
// if count is non-zero there are more expose events pending
- if (event->count == 0) {
+ if (event->count == 0 || !compressor.pending()) {
QWindowSystemInterface::handleExposeEvent(window(), m_exposeRegion);
m_exposeRegion = QRegion();
}
@@ -1529,7 +1572,9 @@ void QXcbWindow::handleEnterNotifyEvent(const xcb_enter_notify_event_t *event)
return;
}
- QWindowSystemInterface::handleEnterEvent(window());
+ const QPoint local(event->event_x, event->event_y);
+ const QPoint global(event->root_x, event->root_y);
+ QWindowSystemInterface::handleEnterEvent(window(), local, global);
}
void QXcbWindow::handleLeaveNotifyEvent(const xcb_leave_notify_event_t *event)
@@ -1570,8 +1615,8 @@ void QXcbWindow::handlePropertyNotifyEvent(const xcb_property_notify_event_t *ev
const long *data = (const long *)xcb_get_property_value(reply);
if (reply->length != 0 && XCB_WM_STATE_ICONIC == data[0])
newState = Qt::WindowMinimized;
- free(reply);
}
+ free(reply);
} // WM_STATE: Quick check for 'Minimize'.
if (newState != Qt::WindowMinimized) { // Something else changed, get _NET_WM_STATE.
const NetWmStates states = netWmStates();
diff --git a/src/plugins/platforms/xcb/xcb-plugin.pro b/src/plugins/platforms/xcb/xcb-plugin.pro
new file mode 100644
index 0000000000..b7b5650eea
--- /dev/null
+++ b/src/plugins/platforms/xcb/xcb-plugin.pro
@@ -0,0 +1,117 @@
+TARGET = xcb
+
+PLUGIN_TYPE = platforms
+load(qt_plugin)
+
+QT += core-private gui-private platformsupport-private
+
+
+SOURCES = \
+ qxcbclipboard.cpp \
+ qxcbconnection.cpp \
+ qxcbintegration.cpp \
+ qxcbkeyboard.cpp \
+ qxcbmime.cpp \
+ qxcbdrag.cpp \
+ qxcbscreen.cpp \
+ qxcbwindow.cpp \
+ qxcbbackingstore.cpp \
+ qxcbwmsupport.cpp \
+ main.cpp \
+ qxcbnativeinterface.cpp \
+ qxcbcursor.cpp \
+ qxcbimage.cpp \
+ qxlibconvenience.cpp
+
+HEADERS = \
+ qxcbclipboard.h \
+ qxcbconnection.h \
+ qxcbintegration.h \
+ qxcbkeyboard.h \
+ qxcbdrag.h \
+ qxcbmime.h \
+ qxcbobject.h \
+ qxcbscreen.h \
+ qxcbwindow.h \
+ qxcbbackingstore.h \
+ qxcbwmsupport.h \
+ qxcbnativeinterface.h \
+ qxcbcursor.h \
+ qxcbimage.h \
+ qxlibconvenience.h
+
+LIBS += -ldl
+
+# needed by GLX, Xcursor, XLookupString, ...
+contains(QT_CONFIG, xcb-xlib) {
+ DEFINES += XCB_USE_XLIB
+ LIBS += -lX11 -lX11-xcb
+
+ *-maemo* {
+ contains(QT_CONFIG, xinput2) {
+ # XInput2 support for Harmattan.
+ DEFINES += XCB_USE_XINPUT2_MAEMO
+ SOURCES += qxcbconnection_maemo.cpp
+ LIBS += -lXi
+ }
+ DEFINES += XCB_USE_MAEMO_WINDOW_PROPERTIES
+ } else {
+ contains(QT_CONFIG, xinput2) {
+ DEFINES += XCB_USE_XINPUT2
+ SOURCES += qxcbconnection_xi2.cpp
+ LIBS += -lXi
+ }
+ }
+}
+
+# to support custom cursors with depth > 1
+contains(QT_CONFIG, xcb-render) {
+ DEFINES += XCB_USE_RENDER
+ LIBS += -lxcb-render -lxcb-render-util -lXrender
+}
+
+contains(QT_CONFIG, opengl) {
+ contains(QT_CONFIG, opengles2) {
+ DEFINES += XCB_USE_EGL
+ LIBS += -lEGL
+ HEADERS += qxcbeglsurface.h
+
+ # EGL on MeeGo 1.2 Harmattan needs this macro to map EGLNativeDisplayType
+ # and other types to the correct X11 types
+ DEFINES += SUPPORT_X11
+ } else:contains(QT_CONFIG, xcb-xlib) {
+ DEFINES += XCB_USE_GLX
+ HEADERS += qglxintegration.h
+ SOURCES += qglxintegration.cpp
+ LIBS += $$QMAKE_LIBS_DYNLOAD
+ contains(QT_CONFIG, xcb-glx) {
+ DEFINES += XCB_HAS_XCB_GLX
+ LIBS += -lxcb-glx
+ }
+ }
+}
+
+DEFINES += $$QMAKE_DEFINES_XCB
+LIBS += $$QMAKE_LIBS_XCB
+QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_XCB
+
+CONFIG += qpa/genericunixfontdatabase
+
+contains(QT_CONFIG, dbus) {
+DEFINES += XCB_USE_IBUS
+QT += dbus
+LIBS += -ldbus-1
+}
+
+OTHER_FILES += xcb.json README
+
+contains(QT_CONFIG, xcb-qt) {
+ DEFINES += XCB_USE_RENDER
+ XCB_DIR = ../../../3rdparty/xcb
+ INCLUDEPATH += $$XCB_DIR/include $$XCB_DIR/sysinclude
+ LIBS += -lxcb -L ./xcb-static -l xcb-static
+} else {
+ LIBS += -lxcb -lxcb-image -lxcb-keysyms -lxcb-icccm -lxcb-sync -lxcb-xfixes -lxcb-shm -lxcb-randr
+ !contains(DEFINES, QT_NO_SHAPE):LIBS += -lxcb-shape
+}
+
diff --git a/src/plugins/platforms/xcb/xcb-static/xcb-static.pro b/src/plugins/platforms/xcb/xcb-static/xcb-static.pro
new file mode 100644
index 0000000000..0257826e09
--- /dev/null
+++ b/src/plugins/platforms/xcb/xcb-static/xcb-static.pro
@@ -0,0 +1,70 @@
+#
+# Statically compile in code for
+# libxcb-fixes, libxcb-randr, libxcb-shm, libxcb-sync, libxcb-image, libxcb-keysyms, libxcb-icccm, libxcb-renderutil
+#
+TEMPLATE = lib
+TARGET = xcb-static
+CONFIG += staticlib
+
+XCB_DIR = ../../../../3rdparty/xcb
+
+INCLUDEPATH += $$XCB_DIR/include/xcb $$XCB_DIR/sysinclude
+
+# ignore compiler warnings in 3rdparty code
+QMAKE_CFLAGS_STATIC_LIB+=-w
+
+#
+# libxcb
+#
+LIBXCB_DIR = $$XCB_DIR/libxcb
+
+SOURCES += \
+ $$LIBXCB_DIR/xfixes.c \
+ $$LIBXCB_DIR/randr.c \
+ $$LIBXCB_DIR/shm.c \
+ $$LIBXCB_DIR/sync.c \
+ $$LIBXCB_DIR/render.c \
+ $$LIBXCB_DIR/shape.c
+
+#
+# xcb-util
+#
+XCB_UTIL_DIR = $$XCB_DIR/xcb-util
+
+
+SOURCES += \
+ $$XCB_UTIL_DIR/xcb_aux.c \
+ $$XCB_UTIL_DIR/atoms.c \
+ $$XCB_UTIL_DIR/event.c
+
+#
+# xcb-util-image
+#
+XCB_IMAGE_DIR = $$XCB_DIR/xcb-util-image
+
+SOURCES += $$XCB_IMAGE_DIR/xcb_image.c
+
+#
+# xcb-util-keysyms
+#
+XCB_KEYSYMS_DIR = $$XCB_DIR/xcb-util-keysyms
+
+SOURCES += $$XCB_KEYSYMS_DIR/keysyms.c
+
+#
+# xcb-util-renderutil
+#
+
+XCB_RENDERUTIL_DIR = $$XCB_DIR/xcb-util-renderutil
+
+SOURCES += $$XCB_RENDERUTIL_DIR/util.c
+
+#
+# xcb-util-wm
+#
+XCB_WM_DIR = $$XCB_DIR/xcb-util-wm
+
+SOURCES += \
+ $$XCB_WM_DIR/icccm.c
+
+OTHER_FILES = $$XCB_DIR/README
diff --git a/src/plugins/platforms/xcb/xcb.pro b/src/plugins/platforms/xcb/xcb.pro
index 34f7c74675..dab0d8cb14 100644
--- a/src/plugins/platforms/xcb/xcb.pro
+++ b/src/plugins/platforms/xcb/xcb.pro
@@ -1,112 +1,5 @@
-TARGET = xcb
+TEMPLATE = subdirs
+CONFIG += ordered
-PLUGIN_TYPE = platforms
-load(qt_plugin)
-
-QT += core-private gui-private platformsupport-private
-
-
-SOURCES = \
- qxcbclipboard.cpp \
- qxcbconnection.cpp \
- qxcbintegration.cpp \
- qxcbkeyboard.cpp \
- qxcbmime.cpp \
- qxcbdrag.cpp \
- qxcbscreen.cpp \
- qxcbwindow.cpp \
- qxcbbackingstore.cpp \
- qxcbwmsupport.cpp \
- main.cpp \
- qxcbnativeinterface.cpp \
- qxcbcursor.cpp \
- qxcbimage.cpp \
- qxlibconvenience.cpp
-
-HEADERS = \
- qxcbclipboard.h \
- qxcbconnection.h \
- qxcbintegration.h \
- qxcbkeyboard.h \
- qxcbdrag.h \
- qxcbmime.h \
- qxcbobject.h \
- qxcbscreen.h \
- qxcbwindow.h \
- qxcbbackingstore.h \
- qxcbwmsupport.h \
- qxcbnativeinterface.h \
- qxcbcursor.h \
- qxcbimage.h \
- qxlibconvenience.h
-
-contains(QT_CONFIG, xcb-poll-for-queued-event) {
- DEFINES += XCB_POLL_FOR_QUEUED_EVENT
-}
-
-# needed by GLX, Xcursor, XLookupString, ...
-contains(QT_CONFIG, xcb-xlib) {
- DEFINES += XCB_USE_XLIB
- LIBS += -lX11 -lX11-xcb
-
- *-maemo* {
- contains(QT_CONFIG, xinput2) {
- # XInput2 support for Harmattan.
- DEFINES += XCB_USE_XINPUT2_MAEMO
- SOURCES += qxcbconnection_maemo.cpp
- LIBS += -lXi
- }
- DEFINES += XCB_USE_MAEMO_WINDOW_PROPERTIES
- } else {
- contains(QT_CONFIG, xinput2) {
- DEFINES += XCB_USE_XINPUT2
- SOURCES += qxcbconnection_xi2.cpp
- LIBS += -lXi
- }
- }
-}
-
-# to support custom cursors with depth > 1
-contains(QT_CONFIG, xcb-render) {
- DEFINES += XCB_USE_RENDER
- LIBS += -lxcb-render -lxcb-render-util -lXrender
-}
-
-!contains(DEFINES, QT_NO_SHAPE):LIBS += -lxcb-shape
-
-contains(QT_CONFIG, opengl) {
- contains(QT_CONFIG, opengles2) {
- DEFINES += XCB_USE_EGL
- LIBS += -lEGL
- HEADERS += qxcbeglsurface.h
-
- # EGL on MeeGo 1.2 Harmattan needs this macro to map EGLNativeDisplayType
- # and other types to the correct X11 types
- DEFINES += SUPPORT_X11
- } else:contains(QT_CONFIG, xcb-xlib) {
- DEFINES += XCB_USE_GLX
- HEADERS += qglxintegration.h
- SOURCES += qglxintegration.cpp
- LIBS += $$QMAKE_LIBS_DYNLOAD
- contains(QT_CONFIG, xcb-glx) {
- DEFINES += XCB_HAS_XCB_GLX
- LIBS += -lxcb-glx
- }
- }
-}
-
-LIBS += -lxcb -lxcb-image -lxcb-keysyms -lxcb-icccm -lxcb-sync -lxcb-xfixes -lxcb-shape -lxcb-shm -lxcb-randr
-
-DEFINES += $$QMAKE_DEFINES_XCB
-LIBS += $$QMAKE_LIBS_XCB
-QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_XCB
-
-CONFIG += qpa/genericunixfontdatabase
-
-contains(QT_CONFIG, dbus) {
-DEFINES += XCB_USE_IBUS
-QT += dbus
-LIBS += -ldbus-1
-}
-
-OTHER_FILES += xcb.json
+contains(QT_CONFIG, xcb-qt):SUBDIRS+=xcb-static
+SUBDIRS += xcb-plugin.pro
diff --git a/src/plugins/printsupport/cocoa/cocoa.pro b/src/plugins/printsupport/cocoa/cocoa.pro
index 4e99b4a8f5..c0206fd2bc 100644
--- a/src/plugins/printsupport/cocoa/cocoa.pro
+++ b/src/plugins/printsupport/cocoa/cocoa.pro
@@ -1,5 +1,5 @@
TARGET = cocoaprintersupport
-
+MODULE = cocoaprintersupport
PLUGIN_TYPE = printsupport
load(qt_plugin)
diff --git a/src/plugins/printsupport/cups/cups.pro b/src/plugins/printsupport/cups/cups.pro
index bd0b6af114..0ea5058c00 100644
--- a/src/plugins/printsupport/cups/cups.pro
+++ b/src/plugins/printsupport/cups/cups.pro
@@ -1,5 +1,5 @@
TARGET = cupsprintersupport
-
+MODULE = cupsprintersupport
PLUGIN_TYPE = printsupport
load(qt_plugin)
diff --git a/src/plugins/printsupport/windows/windows.pro b/src/plugins/printsupport/windows/windows.pro
index 5e8738554c..5b5dd86beb 100644
--- a/src/plugins/printsupport/windows/windows.pro
+++ b/src/plugins/printsupport/windows/windows.pro
@@ -1,5 +1,5 @@
TARGET = windowsprintersupport
-
+MODULE = windowsprintersupport
PLUGIN_TYPE = printsupport
load(qt_plugin)
diff --git a/src/printsupport/dialogs/qprintdialog_mac.mm b/src/printsupport/dialogs/qprintdialog_mac.mm
index ddbe0d0f2e..dc940d5d6d 100644
--- a/src/printsupport/dialogs/qprintdialog_mac.mm
+++ b/src/printsupport/dialogs/qprintdialog_mac.mm
@@ -192,6 +192,11 @@ void QPrintDialogPrivate::openCocoaPrintPanel(Qt::WindowModality modality)
[printPanel retain];
[printPanel setOptions:macOptions];
+ // Call processEvents in case the event dispatcher has been interrupted, and needs to do
+ // cleanup of modal sessions. Do this before showing the native dialog, otherwise it will
+ // close down during the cleanup (QTBUG-17913):
+ qApp->processEvents(QEventLoop::ExcludeUserInputEvents, QEventLoop::ExcludeSocketNotifiers);
+
QT_MANGLE_NAMESPACE(QCocoaPrintPanelDelegate) *delegate = [[QT_MANGLE_NAMESPACE(QCocoaPrintPanelDelegate) alloc] init];
if (modality == Qt::ApplicationModal) {
int rval = [printPanel runModalWithPrintInfo:printInfo];
diff --git a/src/sql/drivers/db2/qsql_db2.cpp b/src/sql/drivers/db2/qsql_db2.cpp
index ac3489f675..0d5c52a36c 100644
--- a/src/sql/drivers/db2/qsql_db2.cpp
+++ b/src/sql/drivers/db2/qsql_db2.cpp
@@ -1119,10 +1119,7 @@ bool QDB2Result::nextResult()
void QDB2Result::virtual_hook(int id, void *data)
{
- switch (id) {
- default:
- QSqlResult::virtual_hook(id, data);
- }
+ QSqlResult::virtual_hook(id, data);
}
void QDB2Result::detachFromResultSet()
diff --git a/src/sql/drivers/mysql/qsql_mysql.cpp b/src/sql/drivers/mysql/qsql_mysql.cpp
index 6cc9edffa8..6a5d67f80b 100644
--- a/src/sql/drivers/mysql/qsql_mysql.cpp
+++ b/src/sql/drivers/mysql/qsql_mysql.cpp
@@ -838,10 +838,7 @@ bool QMYSQLResult::nextResult()
void QMYSQLResult::virtual_hook(int id, void *data)
{
- switch (id) {
- default:
- QSqlResult::virtual_hook(id, data);
- }
+ QSqlResult::virtual_hook(id, data);
}
@@ -987,11 +984,16 @@ bool QMYSQLResult::exec()
break; }
case QVariant::UInt:
case QVariant::Int:
- case QVariant::Bool:
currBind->buffer_type = MYSQL_TYPE_LONG;
currBind->buffer = data;
currBind->buffer_length = sizeof(int);
currBind->is_unsigned = (val.type() != QVariant::Int);
+ break;
+ case QVariant::Bool:
+ currBind->buffer_type = MYSQL_TYPE_TINY;
+ currBind->buffer = data;
+ currBind->buffer_length = sizeof(bool);
+ currBind->is_unsigned = false;
break;
case QVariant::Double:
currBind->buffer_type = MYSQL_TYPE_DOUBLE;
diff --git a/src/sql/drivers/oci/qsql_oci.cpp b/src/sql/drivers/oci/qsql_oci.cpp
index f0f77339e5..b467fdc6d2 100644
--- a/src/sql/drivers/oci/qsql_oci.cpp
+++ b/src/sql/drivers/oci/qsql_oci.cpp
@@ -82,7 +82,9 @@
//#define QOCI_DEBUG
+Q_DECLARE_OPAQUE_POINTER(OCIEnv*);
Q_DECLARE_METATYPE(OCIEnv*)
+Q_DECLARE_OPAQUE_POINTER(OCIStmt*);
Q_DECLARE_METATYPE(OCIStmt*)
QT_BEGIN_NAMESPACE
@@ -2040,18 +2042,15 @@ QVariant QOCIResult::lastInsertId() const
bool QOCIResult::execBatch(bool arrayBind)
{
QOCICols::execBatch(d, boundValues(), arrayBind);
- d->resetBindCount();
- return d->error.type() == QSqlError::NoError;
+ resetBindCount();
+ return lastError().type() == QSqlError::NoError;
}
void QOCIResult::virtual_hook(int id, void *data)
{
Q_ASSERT(data);
- switch (id) {
- default:
- QSqlCachedResult::virtual_hook(id, data);
- }
+ QSqlCachedResult::virtual_hook(id, data);
}
////////////////////////////////////////////////////////////////////////////
diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp
index 2cb8fcc100..0eb078b0e4 100644
--- a/src/sql/drivers/odbc/qsql_odbc.cpp
+++ b/src/sql/drivers/odbc/qsql_odbc.cpp
@@ -1723,10 +1723,7 @@ bool QODBCResult::nextResult()
void QODBCResult::virtual_hook(int id, void *data)
{
- switch (id) {
- default:
- QSqlResult::virtual_hook(id, data);
- }
+ QSqlResult::virtual_hook(id, data);
}
void QODBCResult::detachFromResultSet()
diff --git a/src/sql/drivers/psql/qsql_psql.cpp b/src/sql/drivers/psql/qsql_psql.cpp
index 6211f25cca..8a0e2b86ea 100644
--- a/src/sql/drivers/psql/qsql_psql.cpp
+++ b/src/sql/drivers/psql/qsql_psql.cpp
@@ -512,10 +512,7 @@ void QPSQLResult::virtual_hook(int id, void *data)
{
Q_ASSERT(data);
- switch (id) {
- default:
- QSqlResult::virtual_hook(id, data);
- }
+ QSqlResult::virtual_hook(id, data);
}
static QString qReplacePlaceholderMarkers(const QString &query)
diff --git a/src/sql/drivers/sqlite/qsql_sqlite.cpp b/src/sql/drivers/sqlite/qsql_sqlite.cpp
index debc304a80..595ef496ec 100644
--- a/src/sql/drivers/sqlite/qsql_sqlite.cpp
+++ b/src/sql/drivers/sqlite/qsql_sqlite.cpp
@@ -333,10 +333,7 @@ QSQLiteResult::~QSQLiteResult()
void QSQLiteResult::virtual_hook(int id, void *data)
{
- switch (id) {
- default:
- QSqlCachedResult::virtual_hook(id, data);
- }
+ QSqlCachedResult::virtual_hook(id, data);
}
bool QSQLiteResult::reset(const QString &query)
diff --git a/src/sql/drivers/sqlite2/qsql_sqlite2.cpp b/src/sql/drivers/sqlite2/qsql_sqlite2.cpp
index 5dc292c39b..9dce21e9bd 100644
--- a/src/sql/drivers/sqlite2/qsql_sqlite2.cpp
+++ b/src/sql/drivers/sqlite2/qsql_sqlite2.cpp
@@ -266,10 +266,7 @@ QSQLite2Result::~QSQLite2Result()
void QSQLite2Result::virtual_hook(int id, void *data)
{
- switch (id) {
- default:
- QSqlCachedResult::virtual_hook(id, data);
- }
+ QSqlCachedResult::virtual_hook(id, data);
}
/*
diff --git a/src/sql/drivers/tds/qsql_tds.cpp b/src/sql/drivers/tds/qsql_tds.cpp
index 35195c6f02..f740360550 100644
--- a/src/sql/drivers/tds/qsql_tds.cpp
+++ b/src/sql/drivers/tds/qsql_tds.cpp
@@ -138,10 +138,11 @@ QSqlError qMakeError(const QString& err, QSqlError::ErrorType type, int errNo =
class QTDSDriverPrivate
{
public:
- QTDSDriverPrivate(): login(0) {}
+ QTDSDriverPrivate(): login(0), initialized(false) {}
LOGINREC* login; // login information
QString hostName;
QString db;
+ bool initialized;
};
@@ -537,6 +538,7 @@ QVariant QTDSDriver::handle() const
void QTDSDriver::init()
{
d = new QTDSDriverPrivate();
+ d->initialized = (dbinit() == SUCCEED);
// the following two code-lines will fail compilation on some FreeTDS versions
// just comment them out if you have FreeTDS (you won't get any errors and warnings then)
dberrhandle((QERRHANDLE)qTdsErrHandler);
@@ -578,7 +580,7 @@ bool QTDSDriver::open(const QString & db,
{
if (isOpen())
close();
- if (!dbinit()) {
+ if (!d->initialized) {
setOpenError(true);
return false;
}
diff --git a/src/sql/kernel/qsqlcachedresult.cpp b/src/sql/kernel/qsqlcachedresult.cpp
index 103fb0aeab..9a817da8ea 100644
--- a/src/sql/kernel/qsqlcachedresult.cpp
+++ b/src/sql/kernel/qsqlcachedresult.cpp
@@ -304,10 +304,7 @@ QSqlCachedResult::ValueCache &QSqlCachedResult::cache()
void QSqlCachedResult::virtual_hook(int id, void *data)
{
- switch (id) {
- default:
- QSqlResult::virtual_hook(id, data);
- }
+ QSqlResult::virtual_hook(id, data);
}
void QSqlCachedResult::detachFromResultSet()
diff --git a/src/sql/kernel/qsqlresult.h b/src/sql/kernel/qsqlresult.h
index 153af92096..5037ce1dc5 100644
--- a/src/sql/kernel/qsqlresult.h
+++ b/src/sql/kernel/qsqlresult.h
@@ -132,10 +132,10 @@ protected:
virtual void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy policy);
QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const;
virtual bool nextResult();
+ void resetBindCount(); // HACK
private:
QSqlResultPrivate* d;
- void resetBindCount(); // HACK
private:
Q_DISABLE_COPY(QSqlResult)
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index 55e6f9b622..6f8b12bded 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -82,10 +82,8 @@
#include <time.h>
#endif
-#ifdef Q_WS_MAC
-#include <Carbon/Carbon.h> // for SetFrontProcess
+#ifdef Q_OS_MAC
#include <IOKit/pwr_mgt/IOPMLib.h>
-#undef verify
#endif
QT_BEGIN_NAMESPACE
@@ -2079,7 +2077,7 @@ int QTest::qExec(QObject *testObject, int argc, char **argv)
int callgrindChildExitCode = 0;
#endif
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
bool macNeedsActivate = qApp && (qstrcmp(qApp->metaObject()->className(), "QApplication") == 0);
IOPMAssertionID powerID;
#endif
@@ -2094,14 +2092,11 @@ int QTest::qExec(QObject *testObject, int argc, char **argv)
SetErrorMode(SetErrorMode(0) | SEM_NOGPFAULTERRORBOX);
#endif
-#ifdef Q_WS_MAC
- // Starting with Qt 4.4, applications launched from the command line
- // no longer get focus automatically. Since some tests might depend
- // on this, call SetFrontProcess here to get the pre 4.4 behavior.
+#ifdef Q_OS_MAC
if (macNeedsActivate) {
- ProcessSerialNumber psn = { 0, kCurrentProcess };
- SetFrontProcess(&psn);
- IOReturn ok = IOPMAssertionCreate(kIOPMAssertionTypeNoDisplaySleep, kIOPMAssertionLevelOn, &powerID);
+ CFStringRef reasonForActivity= CFSTR("No Display Sleep");
+ IOReturn ok = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep, kIOPMAssertionLevelOn, reasonForActivity, &powerID);
+
if (ok != kIOReturnSuccess)
macNeedsActivate = false; // no need to release the assertion on exit.
}
@@ -2150,7 +2145,7 @@ int QTest::qExec(QObject *testObject, int argc, char **argv)
}
QTestLog::stopLogging();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
if (macNeedsActivate) {
IOPMAssertionRelease(powerID);
}
@@ -2167,7 +2162,7 @@ int QTest::qExec(QObject *testObject, int argc, char **argv)
QSignalDumper::endDump();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
if (macNeedsActivate) {
IOPMAssertionRelease(powerID);
}
diff --git a/src/testlib/qtestsystem.h b/src/testlib/qtestsystem.h
index 094570bb8c..dd60aae148 100644
--- a/src/testlib/qtestsystem.h
+++ b/src/testlib/qtestsystem.h
@@ -92,7 +92,7 @@ namespace QTest
// qWaitForWindowShown() will generate bogus results.
if (window->isActive()) {
int waitNo = 0; // 0, 0 might be a valid position after all, so do not wait for ever
- while (window->pos().isNull()) {
+ while (window->position().isNull()) {
if (waitNo++ > timeout / 10)
break;
qWait(10);
diff --git a/src/testlib/testlib.pro b/src/testlib/testlib.pro
index 06d7612185..6d29e8e86a 100644
--- a/src/testlib/testlib.pro
+++ b/src/testlib/testlib.pro
@@ -68,10 +68,7 @@ wince*::LIBS += libcmt.lib \
mac {
LIBS += -framework IOKit -framework Security
!ios {
- LIBS_PRIVATE += -framework CoreServices
LIBS += -framework ApplicationServices
- } else {
- LIBS_PRIVATE += -framework CoreFoundation
}
}
diff --git a/src/tools/bootstrap/bootstrap.pri b/src/tools/bootstrap/bootstrap.pri
deleted file mode 100644
index 2b64b291b9..0000000000
--- a/src/tools/bootstrap/bootstrap.pri
+++ /dev/null
@@ -1,65 +0,0 @@
-CONFIG += console qtinc
-CONFIG -= qt
-!build_pass:contains(QT_CONFIG, build_all):CONFIG += release
-CONFIG -= app_bundle
-CONFIG += exceptions_off
-
-DEFINES += \
- QT_BOOTSTRAPPED \
- QT_LITE_UNICODE \
- QT_NO_CAST_FROM_ASCII \
- QT_NO_CAST_TO_ASCII \
- QT_NO_CODECS \
- QT_NO_DATASTREAM \
- QT_NO_LIBRARY \
- QT_NO_QOBJECT \
- QT_NO_SYSTEMLOCALE \
- QT_NO_THREAD \
- QT_NO_UNICODETABLES \
- QT_NO_USING_NAMESPACE \
- QT_NO_DEPRECATED
-
-INCLUDEPATH += $$QT_BUILD_TREE/include \
- $$QT_BUILD_TREE/include/QtCore \
- $$QT_BUILD_TREE/include/QtCore/$$QT_VERSION \
- $$QT_BUILD_TREE/include/QtCore/$$QT_VERSION/QtCore
-DEPENDPATH += $$INCLUDEPATH \
- $$QT_SOURCE_TREE/src/corelib/global \
- $$QT_SOURCE_TREE/src/corelib/kernel \
- $$QT_SOURCE_TREE/src/corelib/tools \
- $$QT_SOURCE_TREE/src/corelib/io \
- $$QT_SOURCE_TREE/src/corelib/codecs
-
-hpux-acc*|hpuxi-acc* {
- LIBS += $$QT_BUILD_TREE/src/tools/bootstrap/libbootstrap.a
-} else {
- contains(CONFIG, debug_and_release_target) {
- CONFIG(debug, debug|release) {
- QMAKE_LIBDIR += $$QT_BUILD_TREE/src/tools/bootstrap/debug
- } else {
- QMAKE_LIBDIR += $$QT_BUILD_TREE/src/tools/bootstrap/release
- }
- } else {
- QMAKE_LIBDIR += $$QT_BUILD_TREE/src/tools/bootstrap
- }
- LIBS += -lbootstrap
-}
-!contains(QT_CONFIG, zlib):!contains(QT_CONFIG, no-zlib):!cross_compile {
- include($$PWD/../../3rdparty/zlib_dependency.pri)
-}
-win32:LIBS += -luser32 -lole32 -ladvapi32
-
-mac {
- CONFIG -= incremental
- LIBS += -framework CoreServices
-}
-
-# Make dummy "sis" and "freeze" target to keep recursive "make sis/freeze" working.
-sis_target.target = sis
-sis_target.commands =
-sis_target.depends = first
-QMAKE_EXTRA_TARGETS += sis_target
-freeze_target.target = freeze
-freeze_target.commands =
-freeze_target.depends = first
-QMAKE_EXTRA_TARGETS += freeze_target
diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro
index 07c4a10573..e57f4dfb2b 100644
--- a/src/tools/bootstrap/bootstrap.pro
+++ b/src/tools/bootstrap/bootstrap.pro
@@ -1,18 +1,12 @@
option(host_build)
-TEMPLATE = lib
-TARGET = bootstrap
-CONFIG += static
-CONFIG += console qtinc
-CONFIG -= qt
-CONFIG += exceptions_off
-!build_pass:contains(QT_CONFIG, build_all):CONFIG += release
-mac:CONFIG -= app_bundle incremental
+TARGET = QtBootstrap
+QT =
+CONFIG += no_module_headers internal_module
-DEFINES += \
+MODULE_DEFINES = \
QT_BOOTSTRAPPED \
QT_LITE_UNICODE \
- QT_NO_CAST_FROM_ASCII \
QT_NO_CAST_TO_ASCII \
QT_NO_CODECS \
QT_NO_DATASTREAM \
@@ -23,13 +17,27 @@ DEFINES += \
QT_NO_UNICODETABLES \
QT_NO_USING_NAMESPACE \
QT_NO_DEPRECATED \
+ QT_NO_TRANSLATION \
QT_QMAKE_LOCATION=\\\"$$QMAKE_QMAKE\\\"
-INCLUDEPATH += $$QT_BUILD_TREE/include \
- $$QT_BUILD_TREE/include/QtCore \
- $$QT_BUILD_TREE/include/QtCore/$$QT_VERSION \
- $$QT_BUILD_TREE/include/QtCore/$$QT_VERSION/QtCore \
- $$QT_BUILD_TREE/src/corelib/global
+DEFINES += \
+ $$MODULE_DEFINES \
+ QT_NO_CAST_FROM_ASCII
+
+MODULE_PRIVATE_INCLUDES = \
+ \$\$QT_MODULE_INCLUDE_BASE \
+ \$\$QT_MODULE_INCLUDE_BASE/QtCore \
+ \$\$QT_MODULE_INCLUDE_BASE/QtCore/$$QT_VERSION \
+ \$\$QT_MODULE_INCLUDE_BASE/QtCore/$$QT_VERSION/QtCore \
+ \$\$QT_MODULE_INCLUDE_BASE/QtXml \
+ \$\$QT_MODULE_INCLUDE_BASE/QtXml/$$QT_VERSION \
+ \$\$QT_MODULE_INCLUDE_BASE/QtXml/$$QT_VERSION/QtXml
+
+CONFIG += release
+
+load(qt_module)
+
+INCLUDEPATH += $$QT_BUILD_TREE/src/corelib/global
DEPENDPATH += $$INCLUDEPATH \
../../corelib/global \
@@ -37,7 +45,9 @@ DEPENDPATH += $$INCLUDEPATH \
../../corelib/tools \
../../corelib/io \
../../corelib/codecs \
- ../../corelib/json
+ ../../corelib/json \
+ ../../xml/dom \
+ ../../xml/sax
SOURCES += \
../../corelib/codecs/qlatincodec.cpp \
@@ -76,6 +86,7 @@ SOURCES += \
../../corelib/tools/qdatetime.cpp \
../../corelib/tools/qhash.cpp \
../../corelib/tools/qlist.cpp \
+ ../../corelib/tools/qlinkedlist.cpp \
../../corelib/tools/qlocale.cpp \
../../corelib/tools/qlocale_tools.cpp \
../../corelib/tools/qmap.cpp \
@@ -96,7 +107,9 @@ SOURCES += \
../../corelib/json/qjsonarray.cpp \
../../corelib/json/qjsonvalue.cpp \
../../corelib/json/qjsonparser.cpp \
- ../../corelib/json/qjsonwriter.cpp
+ ../../corelib/json/qjsonwriter.cpp \
+ ../../xml/dom/qdom.cpp \
+ ../../xml/sax/qxml.cpp
unix:SOURCES += ../../corelib/io/qfilesystemengine_unix.cpp \
../../corelib/io/qfilesystemiterator_unix.cpp \
@@ -119,6 +132,8 @@ macx: {
if(contains(QT_CONFIG, zlib)|cross_compile):include(../../3rdparty/zlib.pri)
else:include(../../3rdparty/zlib_dependency.pri)
+win32:LIBS += -luser32 -lole32 -ladvapi32
+
lib.CONFIG = dummy_install
INSTALLS += lib
diff --git a/src/tools/moc/moc.pro b/src/tools/moc/moc.pro
index 8b53578e23..3a6fd2a02d 100644
--- a/src/tools/moc/moc.pro
+++ b/src/tools/moc/moc.pro
@@ -1,19 +1,11 @@
option(host_build)
-TEMPLATE = app
-TARGET = moc
-DEFINES += QT_MOC QT_NO_CAST_FROM_BYTEARRAY QT_NO_COMPRESS
-DESTDIR = ../../../bin
-INCLUDEPATH += $$OUT_PWD/../../corelib/global
-DEPENDPATH += $$OUT_PWD/../../corelib/global
-LIBS =
-OBJECTS_DIR = .
+DEFINES += QT_MOC QT_NO_CAST_FROM_ASCII QT_NO_CAST_FROM_BYTEARRAY QT_NO_COMPRESS
+
+INCLUDEPATH += $$QT_BUILD_TREE/src/corelib/global
include(moc.pri)
HEADERS += qdatetime_p.h
SOURCES += main.cpp
-include(../bootstrap/bootstrap.pri)
-target.path = $$[QT_HOST_BINS]
-INSTALLS += target
-load(qt_targets)
+load(qt_tool)
diff --git a/src/tools/moc/preprocessor.cpp b/src/tools/moc/preprocessor.cpp
index 566be9c039..cb53e665d0 100644
--- a/src/tools/moc/preprocessor.cpp
+++ b/src/tools/moc/preprocessor.cpp
@@ -567,7 +567,7 @@ void Preprocessor::macroExpandIdentifier(int lineNum, Symbols &preprocessed, Mac
// don't expand macros with arguments for now
if (macro.isFunction) {
- while (test(PP_WHITESPACE));
+ while (test(PP_WHITESPACE)) {}
if (!test(PP_LPAREN)) {
preprocessed += s;
return;
@@ -576,7 +576,7 @@ void Preprocessor::macroExpandIdentifier(int lineNum, Symbols &preprocessed, Mac
while (hasNext()) {
Symbols argument;
// strip leading space
- while (test(PP_WHITESPACE));
+ while (test(PP_WHITESPACE)) {}
int nesting = 0;
bool vararg = macro.isVariadic && (arguments.size() == macro.arguments.size() - 1);
while (hasNext()) {
@@ -1173,7 +1173,7 @@ void Preprocessor::parseDefineArguments(Macro *m)
{
Symbols arguments;
while (hasNext()) {
- while (test(PP_WHITESPACE));
+ while (test(PP_WHITESPACE)) {}
Token t = next();
if (t == PP_RPAREN)
break;
@@ -1182,7 +1182,7 @@ void Preprocessor::parseDefineArguments(Macro *m)
if (l == "...") {
m->isVariadic = true;
arguments += Symbol(symbol().lineNum, PP_IDENTIFIER, "__VA_ARGS__");
- while (test(PP_WHITESPACE));
+ while (test(PP_WHITESPACE)) {}
if (!test(PP_RPAREN))
error("missing ')' in macro argument list");
break;
@@ -1197,7 +1197,7 @@ void Preprocessor::parseDefineArguments(Macro *m)
error("Duplicate macro parameter.");
arguments += symbol();
- while (test(PP_WHITESPACE));
+ while (test(PP_WHITESPACE)) {}
t = next();
if (t == PP_RPAREN)
break;
@@ -1207,7 +1207,7 @@ void Preprocessor::parseDefineArguments(Macro *m)
//GCC extension: #define FOO(x, y...) x(y)
// The last argument was already parsed. Just mark the macro as variadic.
m->isVariadic = true;
- while (test(PP_WHITESPACE));
+ while (test(PP_WHITESPACE)) {}
if (!test(PP_RPAREN))
error("missing ')' in macro argument list");
break;
@@ -1215,7 +1215,7 @@ void Preprocessor::parseDefineArguments(Macro *m)
error("Unexpected character in macro argument list.");
}
m->arguments = arguments;
- while (test(PP_WHITESPACE));
+ while (test(PP_WHITESPACE)) {}
}
void Preprocessor::until(Token t)
diff --git a/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro b/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro
index 0fee3efbe4..a17b91dd79 100644
--- a/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro
+++ b/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro
@@ -1,11 +1,9 @@
option(host_build)
-TEMPLATE = app
-TARGET = qdbuscpp2xml
-
-DESTDIR = ../../../bin
include(../moc/moc.pri)
+DEFINES += QT_NO_CAST_FROM_ASCII
+
INCLUDEPATH += $$QT_BUILD_TREE/include \
$$QT_BUILD_TREE/include/QtDBus \
$$QT_BUILD_TREE/include/QtDBus/$$QT_VERSION \
@@ -26,8 +24,4 @@ SOURCES += qdbuscpp2xml.cpp \
$$QT_SOURCE_TREE/src/dbus/qdbus_symbols.cpp \
$$QT_SOURCE_TREE/src/dbus/qdbusunixfiledescriptor.cpp
-include(../bootstrap/bootstrap.pri)
-
-target.path = $$[QT_HOST_BINS]
-INSTALLS += target
-load(qt_targets)
+load(qt_tool)
diff --git a/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro b/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro
index 1d5c4d2fc3..7c2bb2e22f 100644
--- a/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro
+++ b/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro
@@ -1,10 +1,6 @@
option(host_build)
-TEMPLATE = app
-TARGET = qdbusxml2cpp
-DESTDIR = ../../../bin
-
-include(../bootstrap/bootstrap.pri)
+DEFINES += QT_NO_CAST_FROM_ASCII
INCLUDEPATH += $$QT_BUILD_TREE/include \
$$QT_BUILD_TREE/include/QtDBus \
@@ -28,6 +24,4 @@ SOURCES = qdbusxml2cpp.cpp \
$$QT_SOURCE_TREE/src/dbus/qdbus_symbols.cpp \
$$QT_SOURCE_TREE/src/dbus/qdbusunixfiledescriptor.cpp
-target.path = $$[QT_HOST_BINS]
-INSTALLS += target
-load(qt_targets)
+load(qt_tool)
diff --git a/src/tools/qdoc/qdoc.pro b/src/tools/qdoc/qdoc.pro
index 0c3521c5d7..b489668059 100644
--- a/src/tools/qdoc/qdoc.pro
+++ b/src/tools/qdoc/qdoc.pro
@@ -1,23 +1,12 @@
option(host_build)
-TEMPLATE = app
-TARGET = qdoc
-DESTDIR = ../../../bin
DEFINES += QDOC2_COMPAT
-include(../bootstrap/bootstrap.pri)
-DEFINES -= QT_NO_CAST_FROM_ASCII
-DEFINES += QT_NO_TRANSLATION
-
INCLUDEPATH += $$QT_SOURCE_TREE/src/tools/qdoc \
- $$QT_SOURCE_TREE/src/tools/qdoc/qmlparser \
- $$QT_BUILD_TREE/include/QtXml \
- $$QT_BUILD_TREE/include/QtXml/$$QT_VERSION \
- $$QT_BUILD_TREE/include/QtXml/$$QT_VERSION/QtXml
+ $$QT_SOURCE_TREE/src/tools/qdoc/qmlparser
DEPENDPATH += $$QT_SOURCE_TREE/src/tools/qdoc \
- $$QT_SOURCE_TREE/src/tools/qdoc/qmlparser \
- $$QT_SOURCE_TREE/src/xml
+ $$QT_SOURCE_TREE/src/tools/qdoc/qmlparser
# Increase the stack size on MSVC to 4M to avoid a stack overflow
win32-msvc*:{
@@ -79,9 +68,7 @@ SOURCES += atom.cpp \
tokenizer.cpp \
tree.cpp \
yyindent.cpp \
- ../../corelib/tools/qcryptographichash.cpp \
- ../../xml/dom/qdom.cpp \
- ../../xml/sax/qxml.cpp
+ ../../corelib/tools/qcryptographichash.cpp
### QML/JS Parser ###
@@ -121,7 +108,4 @@ qch-docs.CONFIG += no_check_exist directory
QMAKE_EXTRA_TARGETS += html-docs qch-docs
-target.path = $$[QT_HOST_BINS]
-INSTALLS += target
-
-load(qt_targets)
+load(qt_tool)
diff --git a/src/tools/rcc/rcc.pro b/src/tools/rcc/rcc.pro
index b224f98b61..f4ad2f63d7 100644
--- a/src/tools/rcc/rcc.pro
+++ b/src/tools/rcc/rcc.pro
@@ -1,15 +1,9 @@
option(host_build)
-TEMPLATE = app
-TARGET = rcc
-DESTDIR = ../../../bin
-DEFINES += QT_RCC
+DEFINES += QT_RCC QT_NO_CAST_FROM_ASCII
include(rcc.pri)
HEADERS += ../../corelib/kernel/qcorecmdlineargs_p.h
SOURCES += main.cpp
-include(../bootstrap/bootstrap.pri)
-target.path = $$[QT_HOST_BINS]
-INSTALLS += target
-load(qt_targets)
+load(qt_tool)
diff --git a/src/tools/uic/uic.pro b/src/tools/uic/uic.pro
index d481168ac2..77b8c4ba02 100644
--- a/src/tools/uic/uic.pro
+++ b/src/tools/uic/uic.pro
@@ -1,9 +1,6 @@
option(host_build)
-TEMPLATE = app
-TARGET = uic
-DESTDIR = ../../../bin
-DEFINES += QT_UIC
+DEFINES += QT_UIC QT_NO_CAST_FROM_ASCII
include(uic.pri)
include(cpp/cpp.pri)
@@ -19,8 +16,4 @@ SOURCES += main.cpp \
QMAKE_CXXFLAGS_RELEASE -= -O2
}
-include(../bootstrap/bootstrap.pri)
-
-target.path = $$[QT_HOST_BINS]
-INSTALLS += target
-load(qt_targets)
+load(qt_tool)
diff --git a/src/widgets/dialogs/qfontdialog.cpp b/src/widgets/dialogs/qfontdialog.cpp
index 30004df1a7..2a68d29bda 100644
--- a/src/widgets/dialogs/qfontdialog.cpp
+++ b/src/widgets/dialogs/qfontdialog.cpp
@@ -333,13 +333,6 @@ void QFontDialogPrivate::init()
QFontDialog::~QFontDialog()
{
-#ifdef Q_WS_MAC
- Q_D(QFontDialog);
- if (d->delegate) {
- d->closeCocoaFontPanel();
- return;
- }
-#endif
}
/*!
@@ -804,11 +797,6 @@ void QFontDialog::setCurrentFont(const QFont &font)
if (QPlatformFontDialogHelper *helper = d->platformFontDialogHelper())
helper->setCurrentFont(font);
}
-
-#ifdef Q_WS_MAC
- if (d->delegate)
- QFontDialogPrivate::setFont(d->delegate, font);
-#endif
}
/*!
@@ -911,11 +899,6 @@ QFontDialog::FontDialogOptions QFontDialog::options() const
return QFontDialog::FontDialogOptions(int(d->options->options()));
}
-#ifdef Q_WS_MAC
-// can only have one Cocoa font panel active
-bool QFontDialogPrivate::sharedFontPanelAvailable = true;
-#endif
-
/*!
\since 4.5
\overload
diff --git a/src/widgets/dialogs/qfontdialog_p.h b/src/widgets/dialogs/qfontdialog_p.h
index 015a605af0..93d12010d8 100644
--- a/src/widgets/dialogs/qfontdialog_p.h
+++ b/src/widgets/dialogs/qfontdialog_p.h
@@ -145,22 +145,6 @@ public:
bool canBeNativeDialog() const;
void _q_runNativeAppModalPanel();
-#ifdef Q_WS_MAC
- static void setFont(void *delegate, const QFont &font);
-
- inline void done(int result) { q_func()->done(result); }
- inline QFontDialog *fontDialog() { return q_func(); }
-
- void *delegate;
- void closeCocoaFontPanel();
-
- bool setVisible_sys(bool visible);
- void createNSFontPanelDelegate();
- bool showCocoaFontPanel();
- bool hideCocoaFontPanel();
-
- static bool sharedFontPanelAvailable;
-#endif
private:
virtual void initHelper(QPlatformDialogHelper *);
diff --git a/src/widgets/dialogs/qwizard.cpp b/src/widgets/dialogs/qwizard.cpp
index 7f1cb09225..44518ec7d5 100644
--- a/src/widgets/dialogs/qwizard.cpp
+++ b/src/widgets/dialogs/qwizard.cpp
@@ -3384,6 +3384,13 @@ QWizardPage::QWizardPage(QWidget *parent)
}
/*!
+ Destructor.
+*/
+QWizardPage::~QWizardPage()
+{
+}
+
+/*!
\property QWizardPage::title
\brief the title of the page
diff --git a/src/widgets/dialogs/qwizard.h b/src/widgets/dialogs/qwizard.h
index 9d7f28dc41..9101162620 100644
--- a/src/widgets/dialogs/qwizard.h
+++ b/src/widgets/dialogs/qwizard.h
@@ -217,7 +217,8 @@ class Q_WIDGETS_EXPORT QWizardPage : public QWidget
Q_PROPERTY(QString subTitle READ subTitle WRITE setSubTitle)
public:
- QWizardPage(QWidget *parent = 0);
+ explicit QWizardPage(QWidget *parent = 0);
+ ~QWizardPage();
void setTitle(const QString &title);
QString title() const;
diff --git a/src/widgets/doc/src/widgets-and-layouts/styles.qdoc b/src/widgets/doc/src/widgets-and-layouts/styles.qdoc
index 56801bc1d9..80b7eb9987 100644
--- a/src/widgets/doc/src/widgets-and-layouts/styles.qdoc
+++ b/src/widgets/doc/src/widgets-and-layouts/styles.qdoc
@@ -44,9 +44,9 @@
drawing, ensuring that they look exactly like the equivalent
native widgets.
- Several styles are built into Qt (e.g., windows style and motif style).
+ Several styles are built into Qt (e.g., Windows style and motif style).
Other styles are only available on specific platforms (such as
- the windows XP style). Custom styles are made available as plugins
+ the Windows XP style). Custom styles are made available as plugins
or by creating an instance of the style class in an application and
setting it with QApplication::setStyle().
@@ -84,7 +84,7 @@
helper functions to do common and difficult tasks (e.g.,
calculating the position of slider handles) and functions to do
the various calculations necessary while drawing (e.g., for the
- widgets to calculate their size hints). The style also help some
+ widgets to calculate their size hints). The style also helps some
widgets with the layout of their contents. In addition, it creates
a QPalette that contains \l{QBrush}es to draw with.
@@ -111,15 +111,15 @@
it to perform special effects (such as animated default buttons on
Mac OS X), but it isn't mandatory.
- We will in the course of this section look at the style elements,
+ In the course of this section, we will look at the style elements,
the style options, and the functions of QStyle. Finally, we describe
how the palette is used.
- Items in item views is drawn by \l{Delegate Classes}{delegates} in
+ Items in item views are drawn by \l{Delegate Classes}{delegates} in
Qt. The item view headers are still drawn by the style. Qt's
default delegate, QStyledItemDelegate, draws its items partially
through the current style; it draws the check box indicators and
- calculate bounding rectangles for the elements of which the item
+ calculates bounding rectangles for the elements of which the item
consists. In this document, we only describe how to implement a
QStyle subclass. If you wish to add support for other datatypes
than those supported by the QStyledItemDelegate, you need to
@@ -181,17 +181,17 @@
the user. Controls that consist of several elements often use the
style to calculate the bounding rectangles of the elements. The
available sub elements are defined by the \l{QStyle::}{SubElement}
- enum. This enum is only used for calculating bounding rectangles,
- and sub elements are as such not graphical elements to be drawn
- like primitive, control, and complex elements.
+ enum. This enum is only used for calculating bounding rectangles;
+ sub elements are not graphical elements to be drawn like primitive,
+ control, and complex elements.
\section3 Complex Control Elements
Complex control elements contain sub controls. Complex controls
behave differently depending on where the user handles them with
the mouse and which keyboard keys are pressed. This is dependent
- on which sub control (if any) that the mouse is over or received a
- mouse press. Examples of complex controls are scroll bars and
+ on which sub control (if any) the mouse is over or pressed on.
+ Examples of complex controls are scroll bars and
combo boxes. With a scroll bar, you can use the mouse to move the
slider and press the line up and line down buttons. The available
sub controls are defined by the \l{QStyle}{SubControl} enum.
@@ -210,22 +210,22 @@
frequently used by the built-in styles in Qt and also the Java
style. For instance, the Java style uses PE_IndicatorCheckBox to
draw the check box in group boxes (which is a sub control of
- CC_GroupBox). Some sub controls have an equivalent control element,
- e.g., the scroll bar slider (SC_SCrollBarSlider and
- CE_ScrollBarSlider).
+ \c CC_GroupBox). Some sub controls have an equivalent control element,
+ e.g., the scroll bar slider (\c SC_SCrollBarSlider and
+ \c CE_ScrollBarSlider).
\section3 Other QStyle Tasks
The style elements and widgets, as mentioned, use the style to
- calculate bounding rectangles of sub elements and sub controls,
- and pixel metrics, which is a style dependent size in screen
- pixels, for measures when drawing. The available rectangles and
- pixel metrics are represented by three enums in QStyle:
- \l{QStyle::}{SubElement}, \l{QStyle::}{SubControl}, and
+ calculate bounding rectangles of sub elements and sub controls.
+ Pixel metrics, which are style-dependent sizes in screen
+ pixels, are also used for measurements when drawing. The available
+ rectangles and pixel metrics are represented by three enums in
+ QStyle: \l{QStyle::}{SubElement}, \l{QStyle::}{SubControl}, and
\l{QStyle::}{PixelMetric}. Values of the enums can easily by
identified as they start with SE_, SC_ and PM_.
- The style also contain a set of style hints, which is
+ The style also contains a set of style hints, which is
represented as values in the \l{QStyle::}{StyleHint} enum. All
widgets do not have the same functionality and look in the
different styles. For instance, when the menu items in a menu do not
@@ -241,8 +241,8 @@
The style calculates the spacing between widgets in layouts. There
are two ways the style can handle these calculations. You can set
- the PM_LayoutHorizontalSpacing and PM_LayoutVerticalSpacing, which
- is the way the java style does it (through QCommonStyle).
+ the \c PM_LayoutHorizontalSpacing and \c PM_LayoutVerticalSpacing, which
+ is the way the Java style does it (through QCommonStyle).
Alternatively, you can implement QStyle::layoutSpacing() and
QStyle::layoutSpacingImplementation() if you need more control over
this part of the layout. In these functions you can calculate the
@@ -257,7 +257,7 @@
usually on the stack - and filled out by the caller of the QStyle
function. Depending on what is drawn the style will expect
different a different style option class. For example, the
- QStyle::PE_FrameFocusRect element expects a QStyleOptionFocusRect
+ \c QStyle::PE_FrameFocusRect element expects a QStyleOptionFocusRect
argument, and it's possible to create custom subclasses that a
custom style can use. The style options keep public variables
for performance reasons.
@@ -265,16 +265,16 @@
The widgets can be in a number of different states, which are
defined by the \l{QStyle::}{State} enum. Some of the state flags have
different meanings depending on the widget, but others are common
- for all widgets like State_Disabled. It is QStyleOption that sets
+ for all widgets like \c State_Disabled. It is QStyleOption that sets
the common states with QStyleOption::initFrom(); the rest of the
states are set by the individual widgets.
Most notably, the style options contain the palette and bounding
rectangles of the widgets to be drawn. Most widgets have
specialized style options. QPushButton and QCheckBox, for
- instance, use QStyleOptionButton as style option, which contain
+ instance, use QStyleOptionButton as their style option, which contains
the text, icon, and the size of their icon. The exact contents of
- all options are described when we go through individual widgets.
+ all options are described when we go through the individual widgets.
When reimplementing QStyle functions that take a
QStyleOption parameter, you often need to cast the
@@ -309,7 +309,7 @@
following parameters:
\list
- \li the enum value of the element to draw
+ \li the enum value of the element to draw.
\li a QStyleOption which contains the information needed to
draw the element.
\li a QPainter with which to draw the element.
@@ -324,24 +324,23 @@
The QStyle class also provides helper functions that are used
when drawing the elements. The \l{QStyle::}{drawItemText()}
- function draws text within a specified rectangle and taking a
+ function draws text within a specified rectangle, taking a
QPalette as a parameter. The \l{QStyle::}{drawItemPixmap()}
function helps to align a pixmap within a specified bounding
rectangle.
Other QStyle functions do various calculations for the
- functions that draw. The widgets also use these functions for
- calculating size hints and also for bounding rectangle
- calculations if they draw several style elements themselves.
- As with the functions that draw elements the helper functions
- typically takes the same arguments.
+ functions that do drawing. The widgets also use these functions for
+ calculating size hints and bounding rectangles if they draw several
+ style elements themselves. As with the functions that draw elements,
+ the helper functions typically take the same arguments.
\list
\li The \l{QStyle::}{subElementRect()} function takes a
- \l{QStyle::}{SubElement} enum value, and calculates a bounding
+ \l{QStyle::}{SubElement} enum value and calculates a bounding
rectangle for a sub element. The style uses this function to
know where to draw the different parts of an element. This is
- mainly done for reuse. If you create a new style, you can use
+ mainly done for reuse; if you create a new style, you can use
the same location of sub elements as the super class.
\li The \l{QStyle::}{subControlRect()} function is used to
@@ -351,28 +350,28 @@
from the super class.
\li The \l{QStyle::}{pixelMetric()} function returns a pixel
- metric, which is a style dependent size given in screen
+ metric, which is a style-dependent size given in screen
pixels. It takes a value of the \l{QStyle::}{PixelMetric} enum
- and returns the correct measure. Note that pixel metrics do
- not necessarily have to be static measures, but can be
+ and returns the correct measurement. Note that pixel metrics do
+ not necessarily have to be static measurements, but can be
calculated with, for example, the style option.
\li The \l{QStyle::}{hitTestComplexControl()} function returns the
sub control that the mouse pointer is over in a complex control.
Usually, this is simply a matter of using
\l{QStyle::}{subControlRect()} to get the bounding rectangles of
- the sub controls, and see which rectangle contains the position of
- the cursor.
+ the sub controls, and then seeing which rectangle contains the
+ position of the cursor.
\endlist
- QStyle also have the functions \l{QStyle::}{polish()} and
+ QStyle also has the functions \l{QStyle::}{polish()} and
\l{QStyle::}{unpolish()}. All widgets are sent to the \c polish()
function before being shown and to \c unpolish() when they
are hidden. You can use these functions to set attributes on the
widgets or do other work that is required by your style. For
instance, if you need to know when the mouse is hovering over the
widget, you need to set the \l{Qt::}{WA_Hover} widget attribute.
- The State_MouseOver state flag will then be set in the widget's
+ The \c State_MouseOver state flag will then be set in the widget's
style options.
QStyle has a few static helper functions that do some common and
@@ -391,10 +390,10 @@
Each style provides a color - that is, QBrush - palette that
should be used for drawing the widgets. There is one set of colors
for the different widget states (QPalette::ColorGroup): active
- (widgets in the window that has keyboard focus), inactive (widgets
- used for other windows), and disabled (widgets that are set
- disabled). The states can be found by querying the State_Active
- and State_Enabled state flags. Each set contains color certain
+ (widgets in the window that have keyboard focus), inactive (widgets
+ used for other windows), and disabled (widgets that are disabled).
+ The states can be found by querying the \c State_Active
+ and \c State_Enabled state flags. Each set contains certain color
roles given by the QPalette::ColorRole enum. The roles describe in
which situations the colors should be used (e.g., for painting
widget backgrounds, text, or buttons).
@@ -413,12 +412,12 @@
(QWidget::setStyle()), so you must set the palette yourself
with (QApplication::setPalette()) or (QWidget::setPalette()).
- It is not recommended to hard code colors as applications and
- individual widgets can set their own palette and also use the
- styles palette for drawing. Note that none of Qt's widgets set
- their own palette. The java style does hard code some colors, but
- its author looks past this in silence. Of course, it is not
- intended that the style should look good with any palette.
+ It is not recommended to hard-code colors, as applications and
+ individual widgets can set their own palette and also use their
+ style's palette for drawing. Note that none of Qt's widgets set
+ their own palette. The Java style does hard-code some colors, but
+ only as a decision of the author; it is not advised. Of course,
+ it is not intended that the style should look good with any palette.
\section2 Implementation Issues
@@ -429,42 +428,31 @@
When implementing styles, it is necessary to look through the
code of the widgets and code of the base class and its ancestors.
This is because the widgets use the style differently, because the
- implementation in the different styles virtual functions can
+ implementation in the different styles' virtual functions can
affect the state of the drawing (e.g., by altering the QPainter
state without restoring it and drawing some elements without using
the appropriate pixel metrics and sub elements).
It is recommended that the styles do not alter the proposed size
- of widgets with the QStyle::sizeFromContents() function but let
- the QCommonStyle implementation handle it. If changes need to be
- made, you should try to keep them small; application development
+ of widgets with the QStyle::sizeFromContents() function, but let
+ the QCommonStyle implementation handle it instead. If changes need
+ to be made, you should try to keep them small; application development
may be difficult if the layout of widgets looks considerably
different in the various styles.
- We recommend using the QPainter directly for drawing, i.e., not
- use pixmaps or images. This makes it easier for the style conform
- to the palette (although you can set your own color table on a
- QImage with \l{QImage::}{setColorTable()}).
-
- It is, naturally, possible to draw elements without using the
- style to draw the sub elements as intended by Qt. This is
- discouraged as custom widgets may depend on these sub elements to
- be implemented correctly. The widget walkthrough shows how Qt
- uses the sub elements.
-
\section1 Java Style
We have implemented a style that resembles the Java default look
and feel (previously known as Metal). We have done this as it is
relatively simple to implement and we wanted to build a style for
- this overview document. To keep it simple and not to extensive, we
+ this overview document. To keep it simple and not too extensive, we
have simplified the style somewhat, but Qt is perfectly able to
make an exact copy of the style. However, there are no concrete
plans to implement the style as a part of Qt.
In this section we will have a look at some implementation
issues. Finally, we will see a complete example on the styling of
- a Java widget. We will continue to use the java style
+ a Java widget. We will continue to use the Java style
throughout the document for examples and widget images. The
implementation itself is somewhat involved, and it is not
intended that you should read through it.
@@ -473,8 +461,8 @@
The first step in designing the style was to select the base
class. We chose to subclass QWindowsStyle. This class implements
- most of the functionality we need other than performing the actual
- drawing. Also, windows and java share layout of sub controls for
+ most of the functionality we need, other than performing the actual
+ drawing. Also, Windows and Java share the layout of sub controls for
several of the complex controls (which reduces the amount of code
required considerably).
@@ -496,19 +484,19 @@
itself.
Not all widgets have every state implemented. This goes for
- states that are common, e.g., State_Disabled. Each state is,
+ states that are common, e.g., \c State_Disabled. Each state is,
however, implemented for at least one widget.
We have only implemented ticks below the slider. Flat push
buttons are also left out. We do not handle the case where the
- title bars and dock window titles grows to small for their
+ title bars and dock window titles grow too small for their
contents, but simply draw sub controls over each other.
We have not tried to emulate the Java fonts. Java and Qt use very
different font engines, so we don't consider it worth the effort
as we only use the style as an example for this overview.
- We have hardcoded the colors (we don't use the QPalette) for
+ We have hard-coded the colors (we don't use the QPalette) for
the linear gradients, which are used, for example, for button
bevels, tool bars, and check boxes. This is because the Java
palette cannot produce these colors. Java does not change these
@@ -525,13 +513,13 @@
layout direction is left to right. QWindowsStyle handles reverse
widgets; if we implemented reverse layouts, widgets that we change
the position of sub elements, or handle text alignment in labels
- our selves would need to be updated.
+ ourselves would need to be updated.
\section2 Styling Java Check Boxes
As an example, we will examine the styling of check boxes in the
- java style. We describe the complete process and print all code in
- both the java style and Qt classes involved. In the rest of this
+ Java style. We describe the complete process and print all code in
+ both the Java style and Qt classes involved. In the rest of this
document, we will not examine the source code of the individual
widgets. Hopefully, this will give you an idea on how to search
through the code if you need to check specific implementation
@@ -539,7 +527,7 @@
boxes. We have edited the QCommonStyle code somewhat to remove
code that is not directly relevant for check box styling.
- We start with a look at how QCheckBox builds it style option,
+ We start with a look at how QCheckBox builds its style option,
which is QStyleOptionButton for checkboxes:
\snippet code/doc_src_styles.cpp 0
@@ -548,12 +536,12 @@
that is common for all widgets with \c initFrom(). We will look at
this shortly.
- The down boolean is true when the user press the box down; this is
- true whether the box is checked or not of the checkbox. The
- State_NoChange state is set when we have a tristate checkbox and
- it is partially checked. It has State_On if the box is checked and
- State_Off if it is unchecked. State_MouseOver is set if the mouse
- hovers over the checkbox and the widget has attribute Qt::WA_Hover
+ QStyleOption's \c down variable is \c true when the user presses the box down;
+ this is true of the checkbox whether the box is checked or not. The
+ \c State_NoChange state is set when we have a tri-state checkbox and
+ it is partially checked. It has \c State_On if the box is checked and
+ \c State_Off if it is unchecked. \c State_MouseOver is set if the mouse
+ hovers over the checkbox and the widget has attribute \c Qt::WA_Hover
set - you set this in QStyle::polish(). In addition, the style
option also contains the text, icon, and icon size of the button.
@@ -563,12 +551,12 @@
\snippet code/doc_src_styles.cpp 1
- The State_Enabled is set when the widget is enabled. When the
- widget has focus the State_HasFocus flag is set. Equally, the
- State_Active flag is set when the widget is a child of the active
- window. The State_MouseOver will only be set if the widget has
- the WA_HoverEnabled windows flag set. Notice that keypad
- navigation must be enabled in Qt for the State_HasEditFocus to
+ The \c State_Enabled is set when the widget is enabled. When the
+ widget has focus the \c State_HasFocus flag is set. Equally, the
+ \c State_Active flag is set when the widget is a child of the active
+ window. The \c State_MouseOver will only be set if the widget has
+ the \c WA_HoverEnabled windows flag set. Notice that keypad
+ navigation must be enabled in Qt for the \c State_HasEditFocus to
be included; it is not included by default.
In addition to setting state flags the QStyleOption contains
@@ -581,7 +569,7 @@
We give an image of a checkbox and the style option to match
it.
- \image javastyle/checkboxexample.png A java style checkbox
+ \image javastyle/checkboxexample.png A Java style checkbox
The above checkbox will have the following state flags in its
style option:
@@ -591,31 +579,31 @@
\li State flag
\li Set
\row
- \li State_Sunken
+ \li \c State_Sunken
\li Yes
\row
- \li State_NoChange
+ \li \c State_NoChange
\li No
\row
- \li State_On
+ \li \c State_On
\li Yes
\row
- \li State_Off
+ \li \c State_Off
\li No
\row
- \li State_MouseOver
+ \li \c State_MouseOver
\li Yes
\row
- \li State_Enabled
+ \li \c State_Enabled
\li Yes
\row
- \li State_HasFocus
+ \li \c State_HasFocus
\li Yes
\row
- \li State_KeyboardFocusChange
+ \li \c State_KeyboardFocusChange
\li No
\row
- \li State_Active
+ \li \c State_Active
\li Yes
\endtable
@@ -629,9 +617,9 @@
QCommonStyle handles the CE_CheckBox element. The QCheckBox
has two sub elements: SE_CheckBoxIndicator (the checked indicator)
- and SE_CheckBoxContents (the contents, which is used for the
+ and SE_CheckBoxContents (the contents, which are used for the
checkbox label). QCommonStyle also implements these sub element
- bounding rectangles. We have a look at the QCommonStyle code:
+ bounding rectangles. Next, we'll have a look at the QCommonStyle code:
\snippet code/doc_src_styles.cpp 3
@@ -640,7 +628,7 @@
CE_CheckBox, and then draws them. If the checkbox has focus,
the focus frame is also drawn.
- The java style draws CE_CheckBoxIndicator, while QCommonStyle
+ The Java style draws CE_CheckBoxIndicator, while QCommonStyle
handles CE_CheckboxLabel. We will examine each implementation and
start with CE_CheckBoxLabel:
@@ -649,81 +637,81 @@
\l{QStyle::}{visualAlignment()} adjusts the alignment of text
according to the layout direction. We then draw an icon if it
exists, and adjust the space left for the text.
- \l{QStyle::}{drawItemText()} draws the text taking alignment,
+ \l{QStyle::}{drawItemText()} draws the text, taking alignment,
layout direction, and the mnemonic into account. It also uses the
palette to draw the text in the right color.
- The drawing of labels often get somewhat involved. Luckily, it
- can usually be handled by the base class. The java style
- implements its own push button label since Java-contrary to
- windows-center button contents also when the button has an icon.
+ The drawing of labels often gets somewhat involved. Luckily, it
+ can usually be handled by the base class. The Java style
+ implements its own push button label, since Java - contrary to
+ Windows - centers button contents also when the button has an icon.
You can examine that implementation if you need an example of
reimplementing label drawing.
- We take a look at the java implementation
+ We'll now take a look at the Java implementation
of CE_CheckBoxIndicator in \c drawControl():
\snippet javastyle.cpp 0
We first save the state of the painter. This is not always
- necessary but in this case the QWindowsStyle needs the painter in
+ necessary, but in this case the QWindowsStyle needs the painter in
the same state as it was when PE_IndicatorCheckBox was called (We
could also set the state with function calls, of course). We then
use \c drawButtonBackground() to draw the background of the check
box indicator. This is a helper function that draws the background
and also the frame of push buttons and check boxes. We take a look
at that function below. We then check if the mouse is hovering
- over the checkbox. If it is, we draw the frame java checkboxes
+ over the checkbox. If it is, we draw the frame that Java checkboxes
have when the box is not pressed down and the mouse is over it.
- You may note that java does not handle tristate boxes, so we have
+ You may note that Java does not handle tri-state boxes, so we have
not implemented it.
- Here we use a png image for our indicator. We could also check
- here if the widget is disabled. We would then have to use
+ Here we use a PNG image for our indicator. We could also check
+ if the widget is disabled. We would then have to use
another image with the indicator in the disabled color.
\snippet javastyle.cpp 1
- We have seen how check boxes are styled in the java style from the
- widget gets a paint request to the style is finished painting. To
- learn in detail how each widget is painted, you need to go through
- the code step-by-step as we have done here. However, it is
- usually enough to know which style elements the widgets draw. The
- widget builds a style option and calls on the style one or more
- times to draw the style elements of which it consists. Usually,
- it is also sufficient to know the states a widget can be in and the
- other contents of the style option, i.e., what we list in the next
- section.
+ We have seen how check boxes are styled in the Java style from the
+ time the widget gets a paint request to the time the style is
+ finished painting. To learn in detail how each widget is painted,
+ you need to go through the code step-by-step as we have done here.
+ However, it is usually enough to know which style elements the
+ widgets draw. The widget builds a style option and calls on the
+ style one or more times to draw the style elements of which it
+ consists. Usually, it is also sufficient to know the states a widget
+ can be in and the other contents of the style option, i.e., what we
+ list in the next section.
\section1 Widget Walkthrough
In this section, we will examine how most of Qt's widgets are
- styled. Hopefully, this will save you some time and effort while
+ styled. Hopefully, this will save you some time and effort while
developing your own styles and widgets. You will not find
information here that is not attainable elsewhere (i.e., by
examining the source code or the class descriptions for the style
related classes).
- We mostly use java style widgets as examples. The java style does not
+ We mostly use Java style widgets as examples. The Java style does not
draw every element in the element trees. This is because they are
- not visible for that widget in the java style. We still make sure
+ not visible for that widget in the Java style. We still make sure
that all elements are implemented in a way that conforms with the
- java style as custom widgets might need them (this does not
+ Java style, as custom widgets might need them (this does not
exclude leaving implementations to QWindowsStyle though).
The following is given for each widget:
\list
\li A table with the members (variables, etc.) of its style option.
- \li A table over the state flags (QStyle::StateFlag) that
+ \li A table of the state flags (QStyle::StateFlag) that
can be set on the widget and when the states are set.
\li Its element tree (see section \l{The Style Elements}).
\li An image of the widget in which the elements are outlined.
\omit This is not written yet - probably never will be
either
- \li List of style hints that should be checked for the
+ \li A list of style hints that should be checked for the
widget.
- \li List of standard pixmaps that could be used by the
+ \li A list of standard pixmaps that could be used by the
elements.
\endomit
\endlist
@@ -735,7 +723,7 @@
elements, and pixel metrics that should be considered when drawing
the element of the node.
- Our approach on styling center on the drawing of the widgets. The
+ Our approach on styling centers on the drawing of the widgets. The
calculations of sub elements rectangles, sub controls, and pixel
metrics used \b during drawing is only listed as contents in
the element trees. Note that there are rectangles and pixel
@@ -781,25 +769,25 @@
\li State
\li State Set When
\row
- \li State_Enabled
+ \li \c State_Enabled
\li Set if the widget is not disabled (see
QWidget::setEnabled())
\row
- \li State_Focus
+ \li \c State_Focus
\li Set if the widget has focus (see
QWidget::hasFocus())
\row
- \li State_KeyobordFocusChange
+ \li \c State_KeyobordFocusChange
\li Set when the user changes focus with the keyboard
(see Qt::WA_KeyboardFocusChange)
\row
- \li State_MouseOver
+ \li \c State_MouseOver
\li Set if the mouse cursor is over the widget
\row
- \li State_Active
+ \li \c State_Active
\li Set if the widget is a child of the active window.
\row
- \li State_HasEditFocus
+ \li \c State_HasEditFocus
\li Set if the widget has the edit focus
\endtable
@@ -836,7 +824,7 @@
indicate which sub controls the complex control consists of and
which of these controls are currently active.
- As mentioned, the style calculates the size of the widgets
+ As mentioned, the style calculates the size of the widget's
contents, which the widgets calculate their size hints from. In
addition, complex controls also use the style to test which
sub-controls the mouse is over.
@@ -854,18 +842,18 @@
\image javastyle/pushbutton.png The style structure for push buttons
- The layout of the buttons, with regard element bounds, varies from
+ The layout of the buttons, with regard to element bounds, varies from
style to style. This makes it difficult to show conceptual images
of this. Also, elements may - even be intended to - have the same
- bounds; the PE_PushButtonBevel, for instance, is used in
- QCommonStyle to draw the elements that contains it:
- PE_FrameDefaultButton, PE_FrameButtonBevel, and
- PE_PanelButtonCommand, all of which have the same bounds in common
- and windows style. PE_PushButtonBevel is also responsible for
+ bounds; the \c PE_PushButtonBevel, for instance, is used in
+ QCommonStyle to draw the elements that it contains:
+ \c PE_FrameDefaultButton, \c PE_FrameButtonBevel, and
+ \c PE_PanelButtonCommand, all of which have the same bounds in common
+ and Windows style. \c PE_PushButtonBevel is also responsible for
drawing the menu indicator (QCommonStyle draws
- PE_IndicatorArrowDown).
+ \c PE_IndicatorArrowDown).
- An image of a push button in the java style that show the bounding
+ An image of a push button in the Java style that shows the bounding
rectangles of the elements is given below. Colors are used to
separate the bounding rectangles in the image; they do not fill
any other purpose. This is also true for similar images for the
@@ -873,11 +861,11 @@
\image javastyle/button.png
- The java style, as well as all other styles implemented in Qt,
- does not use PE_FrameButtonBevel. It is usual that a button
- with a PE_DefaultFrame adjusts the PE_PanelButtonCommand's
- rectangle by PM_ButtonDefaultIndicator. The CE_PushButtonLabel
- is found by adjusting the rect by PM_DefaultFrameWidth.
+ The Java style, as well as all other styles implemented in Qt,
+ does not use \c PE_FrameButtonBevel. It is usual that a button
+ with a \c PE_DefaultFrame adjusts the \c PE_PanelButtonCommand's
+ rectangle by \c PM_ButtonDefaultIndicator. The \c CE_PushButtonLabel
+ is found by adjusting the rect by \c PM_DefaultFrameWidth.
We will now examine the style option for push
buttons - QStyleOptionButton. A table for the states that
@@ -888,13 +876,13 @@
\li State
\li State Set When
\row
- \li State_Sunken
+ \li \c State_Sunken
\li Button is down or menu is pressed shown
\row
- \li State_On
+ \li \c State_On
\li Button is checked
\row
- \li State_Raised
+ \li \c State_Raised
\li Button is not flat and not pressed down
\endtable
@@ -936,17 +924,17 @@
\li State
\li State Set When
\row
- \li State_sunken
+ \li \c State_sunken
\li The box is pressed down
\row
- \li State_NoChange
- \li The box is partially checked (for tristate
+ \li \c State_NoChange
+ \li The box is partially checked (for tri-state
checkboxes.)
\row
- \li State_On
+ \li \c State_On
\li The box is checked
\row
- \li State_Off
+ \li \c State_Off
\li The box is unchecked
\endtable
@@ -961,13 +949,13 @@
QTabBar lays out the tabs, so the style does not have control over
tab placement. However, while laying out its tabs, the bar asks
- the style for PM_TabBarTabHSpace and PM_TabBarTabVSpace, which is
+ the style for \c PM_TabBarTabHSpace and \c PM_TabBarTabVSpace, which is
extra width and height over the minimum size of the tab bar tab
label (icon and text). The style can also further influence the
tab size before it is laid out, as the tab bar asks for
- CT_TabBarTab. The bounding rectangle of the bar is decided by the
+ \c CT_TabBarTab. The bounding rectangle of the bar is decided by the
tab widget when it is part of the widget (still considering
- CT_TabBarTab).
+ \c CT_TabBarTab).
The tab bar is responsible for drawing the buttons that appear on
the tab bar when all tabs do not fit. Their placement is not
@@ -979,33 +967,33 @@
\image javastyle/tab.png
The dotted lines indicate that the QTabWidget contains a tab bar,
- but does not draw it itself, that QTabBar only draws its base line
- when not part of a tab widget, and that the tab bar keeps two tool
+ but does not draw it itself. QTabBar only draws its base line
+ when not part of a tab widget, and it keeps two tool
buttons that scroll the bar when all tabs do not fit; see \l{Tool
Buttons} for their element tree. Also note that since the buttons
are children of the tab bar, they are drawn after the bar. The
- tabs bounding rectangles overlap the base by PM_TabBarBaseOverlap.
+ tabs' bounding rectangles overlap the base by \c PM_TabBarBaseOverlap.
- Here is a tab widget in the java style:
+ Here is a tab widget in the Java style:
\image javastyle/tabwidget.png
- In the java style (and also windows), the tab bar shape and label
- have the same bounding rectangle as CE_TabBarTab. Notice that the
+ In the Java style (and also Windows), the tab bar shape and label
+ have the same bounding rectangle as \c CE_TabBarTab. Notice that the
tabs overlap with the tab widget frame. The base of the tab bar
(if drawn) is the area where the tabs and frame overlap.
The style option for tabs (QStyleOptionTab) contains the necessary
information for drawing tabs. The option contains the position of
the tab in the tab bar, the position of the selected tab, the
- shape of the tab, the text, and icon. After Qt 4.1 the option
+ shape of the tab, the text, and the icon. After Qt 4.1, the option
should be cast to a QStyleOptionTabV2, which also contains the
- icons size.
+ icon's size.
- As the java style tabs don't overlap, we also present an image of
- a tab widget in the windows style. Note that if you want the tabs
+ As the Java style tabs don't overlap, we also present an image of
+ a tab widget in the Windows style. Note that if you want the tabs
to overlap horizontally, you do that when drawing the tabs in
- CE_TabBarTabShape; the tabs bounding rectangles will not be
+ \c CE_TabBarTabShape; the tabs bounding rectangles will not be
altered by the tab bar. The tabs are drawn from left to right in a
north tab bar shape, top to bottom in an east tab bar shape, etc.
The selected tab is drawn last, so that it is easy to draw it over
@@ -1020,14 +1008,14 @@
\li State
\li State Set When
\row
- \li State_Sunken
+ \li \c State_Sunken
\li The tab is pressed on with the mouse.
\row
- \li State_Selected
+ \li \c State_Selected
\li If it is the current tab.
\row
- \li State_HasFocus
- \li The tab bar has focus and the tab is selected
+ \li \c State_HasFocus
+ \li The tab bar has focus and the tab is selected.
\endtable
Note that individual tabs may be disabled even if the tab bar
@@ -1041,21 +1029,21 @@
\li Content
\row
\li cornerWidgets
- \li Is flags of the CornerWidget enum, which indicate
+ \li Flags of the CornerWidget enum, which indicate
if and which corner widgets the tab bar has.
\row
\li icon
- \li The QIcon of the tab
+ \li The QIcon of the tab.
\row
\li iconSize
- \li The QSize of the icon
+ \li The QSize of the icon.
\row
\li position
- \li A TabPosition enum value that indicates the tabs
+ \li A TabPosition enum value that indicates the tab's
position on the bar relative to the other tabs.
\row
\li row
- \li holds which row the tab is in
+ \li Holds which row the tab is in.
\row
\li selectedPosition
\li A value of the SelectedPosition enum that indicates
@@ -1063,12 +1051,12 @@
tab.
\row
\li shape
- \li A value of the QTabBar::Shape enum indication
+ \li A value of the QTabBar::Shape enum indicating
whether the tab has rounded or triangular corners
and the orientation of the tab.
\row
\li text
- \li The tab text
+ \li The tab text.
\endtable
The frame for tab widgets use QStyleOptionTabWidgetFrame as
@@ -1087,10 +1075,10 @@
\li The QSize of the right corner widget (if any).
\row
\li lineWidth
- \li holds the line with for drawing the panel.
+ \li Holds the line with for drawing the panel.
\row
\li midLineWith
- \li this value is currently always 0.
+ \li This value is currently always 0.
\row
\li shape
\li The shape of the tabs on the tab bar.
@@ -1101,28 +1089,28 @@
\section3 Scroll Bars
- Here is the style structure for scrollBars:
+ Here is the style structure for scrollbars:
\image javastyle/scrollbar.png
QScrollBar simply creates its style option and then draws
- CC_ScrollBar. Some styles draw the background of add page and sub
- page with PE_PanelButtonBevel and also use indicator arrows to
- draw the arrows in the nest and previous line indicators; we have
+ \c CC_ScrollBar. Some styles draw the background of add page and sub
+ page with \c PE_PanelButtonBevel, and also use indicator arrows to
+ draw the arrows in the next and previous line indicators; we have
not included these in the tree as their use is up to the
- individual style. The style's PM_MaximumDragDistance is the
+ individual style. The style's \c PM_MaximumDragDistance is the
maximum distance in pixels the mouse can move from the bounds
of the scroll bar and still move the handle.
- Here is an image of a scrollbar in the java style:
+ Here is an image of a scrollbar in the Java style:
\image javastyle/scrollbarimage.png
You may notice that the scrollbar is slightly different from
- Java's as it has two line up indicators. We have done this to show
- how that you can have two separate bounding rectangles for a
+ Java's, as it has two line up indicators. We have done this to show
+ that you can have two separate bounding rectangles for a
single sub control. The scroll bar is an example of a widget that
- is entirely implemented by the java style - neither QWindowsStyle
+ is entirely implemented by the Java style - neither QWindowsStyle
nor QCommonStyle are involved in the drawing.
We have a look at the different states a scroll bar can set on
@@ -1133,8 +1121,8 @@
\li State
\li State Set When
\row
- \li State_Horizontal
- \li The scroll bar is horizontal
+ \li \c State_Horizontal
+ \li The scroll bar is horizontal.
\endtable
The style option of QScrollBar is QStyleOptionSlider. Its
@@ -1148,57 +1136,57 @@
\li Content
\row
\li maximum
- \li the maximum value of the scroll bar
+ \li The maximum value of the scroll bar.
\row
\li minimum
- \li the minimum value of the scroll bar
+ \li The minimum value of the scroll bar.
\row
\li notchTarget
- \li the number of pixels between notches
+ \li The number of pixels between notches.
\row
\li orientation
- \li a value of the Qt::Orientation enum that specifies
- whether the scroll bar is vertical or horizontal
+ \li A value of the Qt::Orientation enum that specifies
+ whether the scroll bar is vertical or horizontal.
\row
\li pageStep
- \li the number to increase or decrease the sliders
+ \li The number by which to increase or decrease the slider's
value (relative to the size of the slider and its value
range) on page steps.
\row
\li singleStep
- \li the number to increase or decrease the sliders
- value on single (or line) steps
+ \li The number by which to increase or decrease the slider's
+ value on single (or line) steps.
\row
\li sliderValue
- \li The value of the slider
+ \li The value of the slider.
\row
\li sliderPosition
- \li the position of the slider handle. This is the same
+ \li The position of the slider handle. This is the same
as \c sliderValue if the scroll bar is
QAbstractSlider::tracking. If not, the scroll
bar does not update its value before the mouse
releases the handle.
\row
\li upsideDown
- \li holds the direction in which the scroll bar
+ \li Holds the direction in which the scroll bar
increases its value. This is used instead of
QStyleOption::direction for all abstract sliders.
\endtable
\section3 Sliders
- When calculating the sliders size hint, PM_SliderTickness and
- PM_SliderLength is queried from the style. As with scroll bars,
+ When calculating the slider's size hint, \c PM_SliderThickness and
+ \c PM_SliderLength are queried from the style. As with scroll bars,
the QSlider only lets the user move the handle if the mouse is
- within PM_MaximumDragDistance from the slider bounds. When it
- draws itself it creates the style option and calls \c
- drawComplexControl() with CC_Slider:
+ within \c PM_MaximumDragDistance from the slider bounds. When it
+ draws itself, it creates the style option and calls \c
+ drawComplexControl() with \c CC_Slider:
\image javastyle/slider.png
- We also show a picture of a slider in the java style. We show
- the bounding rectangles of the sub elements as all drawing is done
- in CC_Slider.
+ We also show a picture of a slider in the Java style. We show
+ the bounding rectangles of the sub elements, as all drawing is done
+ in \c CC_Slider.
\image javastyle/sliderimage.png
@@ -1211,38 +1199,38 @@
\li Content
\row
\li maximum
- \li the maximum value of the slider
+ \li The maximum value of the slider.
\row
\li minimum
- \li the minimum value of the slider
+ \li The minimum value of the slider.
\row
\li notchTarget
- \li this is the number of pixels between each notch
+ \li This is the number of pixels between each notch.
\row
\li orientation
- \li a Qt::Orientation enum value that gives whether the
+ \li A Qt::Orientation enum value that indicates whether the
slider is vertical or horizontal.
\row
\li pageStep
- \li a number in slider value to increase or decrease
- for page steps
+ \li The number by which to increase or decrease the slider's
+ value on page steps.
\row
\li singleStep
- \li the number to increase or decrease the sliders
+ \li The number by which to increase or decrease the slider's
value on single (or line) steps.
\row
\li sliderValue
- \li the value of the slider.
+ \li The value of the slider.
\row
\li sliderPosition
- \li the position of the slider given as a slider value.
+ \li The position of the slider given as a slider value.
This will be equal to the \c sliderValue if the
slider is \l{QAbstractSlider::}{tracking}; if
- not, the sliders value will not change until the handle is
+ not, the slider's value will not change until the handle is
released with the mouse.
\row
- \li upsideDown
- \li this member is used instead of QStyleOption::direction
+ \li upsideDown
+ \li This member is used instead of QStyleOption::direction
for all abstract sliders.
\endtable
@@ -1251,34 +1239,34 @@
\section3 Spin Boxes
- When QSpinBox paints itself it creates a QStyleOptionSpinBox and
- asks the style to draw CC_SpinBox. The edit field is a line
+ When QSpinBox paints itself, it creates a QStyleOptionSpinBox and
+ asks the style to draw \c CC_SpinBox. The edit field is a line
edit that is a child of the spin box. The dimensions of the
- field is calculated by the style with SC_SpinBoxEditField.
+ field are calculated by the style with \c SC_SpinBoxEditField.
Here follows the style tree for spin boxes. It is not
required that a style uses the button panel primitive to paint
the indicator backgrounds. You can see an image below the tree
- showing the sub elements in QSpinBox in the java style.
+ showing the sub elements in QSpinBox in the Java style.
\image javastyle/spinbox.png
\image javastyle/spinboximage.png
The QStyleOptionSpinBox, which is the style option for spin
- boxes. It can set the following states on the spin box.:
+ boxes. It can set the following states on the spin box:
\table 90%
\header
\li State
\li State Set When
\row
- \li State_Sunken
- \li Is set if one of the sub controls CC_SpinUp or
- CC_SpinDown is pressed on with the mouse.
+ \li \c State_Sunken
+ \li Is set if one of the sub controls \c CC_SpinUp or
+ \c CC_SpinDown is pressed on with the mouse.
\endtable
- The rest of the members in the spin boxes style options are:
+ The rest of the members in the spin box style options are:
\table 90%
\header
@@ -1286,7 +1274,7 @@
\li Function
\row
\li frame
- \li boolean that is true if the spin box is to draw a
+ \li Boolean that is \c true if the spin box is to draw a
frame.
\row
\li buttonSymbols
@@ -1294,34 +1282,34 @@
symbol on the up/down buttons.
\row
\li stepEnabled
- \li A value of the StepEnabled indication which of the
+ \li A value of the StepEnabled enum, indicating which of the
spin box buttons are pressed down.
\endtable
\section3 Title Bar
- The title bar complex control, CC_TitleBar, is used to draw
+ The title bar complex control, \c CC_TitleBar, is used to draw
the title bars of internal windows in QMdiArea. It typically
- consists of a window title and close, minimize, system menu, and
+ consists of a window title, and close, minimize, system menu, and
maximize buttons. Some styles also provide buttons for shading
- the window, and a button for context sensitive help.
+ the window, as well as a button for context sensitive help.
- The bar is drawn in CC_TitleBar without using any sub elements.
- How the individual styles draw their buttons is individual, but
+ The bar is drawn in \c CC_TitleBar without using any sub elements.
+ How the individual styles draw their buttons is up to them, but
there are standard pixmaps for the buttons that the style should
provide.
\image javastyle/titlebar.png
- In an image over a title bar in the java style, we show the
- bounding rectangles of the sub elements supported by the java style
+ In an image over a title bar in the Java style, we show the
+ bounding rectangles of the sub elements supported by the Java style
(all of which are drawn with standard pixmaps). It is usual to
- draw the button backgrounds using PE_PanelButtonTool, but it's no
- rule.
+ draw the button backgrounds using \c PE_PanelButtonTool, but it's not
+ mandatory.
\image javastyle/titlebarimage.png
- The style option for title bars is QStyleOptionTitleBar. It's
+ The style option for title bars is QStyleOptionTitleBar. Its
members are:
\table 90%
@@ -1330,42 +1318,42 @@
\li Content
\row
\li icon
- \li The title bars icon
+ \li The title bar's icon.
\row
\li text
- \li the text for the title bar's label
+ \li The text for the title bar's label.
\row
\li windowFlags
- \li flags of the Qt::WindowFlag enum. The window flags
+ \li Flags of the Qt::WindowFlag enum. The window flags
used by QMdiArea for window management.
\row
\li titleBarState
- \li this is the QWidget::windowState() of the window
+ \li This is the QWidget::windowState() of the window
that contains the title bar.
\endtable
\section3 Combo Box
A QComboBox uses the style to draw the button and label of
- non-editable boxes with CC_ComboBox and CE_ComboBoxLabel.
+ non-editable boxes with \c CC_ComboBox and \c CE_ComboBoxLabel.
The list that pops up when the user clicks on the combo box is
drawn by a \l{Delegate Classes}{delegate}, which we do not cover
in this overview. You can, however, use the style to control the
list's size and position with the sub element
- SC_ComboBoxListBoxPopup. The style also decides where the edit
- field for editable boxes should be with SC_ComboBoxEditField; the
+ \c SC_ComboBoxListBoxPopup. The style also decides where the edit
+ field for editable boxes should be with \c SC_ComboBoxEditField; the
field itself is a QLineEdit that is a child of the combo box.
\image javastyle/combobox.png
- We show an image over a java style combo box in which we have
+ We show an image over a Java style combo box in which we have
outlined its sub elements and sub element rectangles:
\image javastyle/comboboximage.png
Java combo boxes do not use the focus rect; it changes its
- background color when it has focus. The SC_ComboBoxEdit field is
+ background color when it has focus. The \c SC_ComboBoxEdit field is
used both by QComboBox to calculate the size of the edit field and
the style for calculating the size of the combo box label.
@@ -1377,14 +1365,14 @@
\li State
\li Set When
\row
- \li State_Selected
- \li The box is not editable and has focus
+ \li \c State_Selected
+ \li The box is not editable and has focus.
\row
- \li State_Sunken
- \li SC_ComboBoxArrow is active
+ \li \c State_Sunken
+ \li \c SC_ComboBoxArrow is active.
\row
- \li State_on
- \li The container (list) of the box is visible
+ \li \c State_on
+ \li The container (list) of the box is visible.
\endtable
The style options other members are:
@@ -1395,37 +1383,37 @@
\li Content
\row
\li currentIcon
- \li the icon of the current (selected) item of the
+ \li The icon of the current (selected) item of the
combo box.
\row
\li currentText
- \li the text of the current item in the box.
+ \li The text of the current item in the box.
\row
\li editable
- \li holds whether the combo box is editable or not
+ \li Holds whether the combo box is editable or not.
\row
\li frame
- \li holds whether the combo box has a frame or not
+ \li Holds whether the combo box has a frame or not.
\row
\li iconSize
- \li the size of the current items icon.
+ \li The size of the current items icon.
\row
\li popupRect
- \li the bounding rectangle of the combo box's popup
+ \li The bounding rectangle of the combo box's popup
list.
\endtable
\section3 Group Boxes
When calculating the size hint, QGroupBox fetches three pixel
- metrics from the style: PM_IndicatorWidth,
- PM_CheckBoxLabelSpacing, and PM_IndicatorHeight. QGroupBox has
+ metrics from the style: \c PM_IndicatorWidth,
+ \c PM_CheckBoxLabelSpacing, and \c PM_IndicatorHeight. QGroupBox has
the following style element tree:
\image javastyle/groupbox.png
Qt does not impose restrictions on how the check box is drawn; the
- java style draws it with CE_IndicatorCheckBox. See \l{Check and
+ Java style draws it with \c CE_IndicatorCheckBox. See \l{Check and
Radio Buttons} for the complete tree.
We also give an image of the widget with the sub controls and
@@ -1433,7 +1421,7 @@
\image javastyle/groupboximage.png
- The style option for group boxes are QStyleOptionGroupBox. The
+ The style option for group boxes is QStyleOptionGroupBox. The
following states can be set on it:
\table 90%
@@ -1441,14 +1429,14 @@
\li State
\li Set When
\row
- \li State_On
- \li The check box is checked
+ \li \c State_On
+ \li The check box is checked.
\row
- \li State_Sunken
- \li The checkbox is pressed down
+ \li \c State_Sunken
+ \li The check box is pressed down.
\row
- \li State_Off
- \li The check box is unchecked (or there is no check box)
+ \li \c State_Off
+ \li The check box is unchecked (or there is no check box).
\endtable
The remaining members of QStyleOptionGroupBox are:
@@ -1459,30 +1447,30 @@
\li Content
\row
\li features
- \li flags of the QStyleOptionFrameV2::FrameFeatures
+ \li Flags of the QStyleOptionFrameV2::FrameFeatures
enum describing the frame of the group box.
\row
\li lineWidth
- \li the line width with which to draw the panel. This
+ \li The line width with which to draw the panel. This
is always 1.
\row
\li text
- \li the text of the group box.
+ \li The text of the group box.
\row
\li textAlignment
- \li the alignment of the group box title
+ \li The alignment of the group box title.
\row
\li textColor
- \li the QColor of the text
+ \li The QColor of the text.
\endtable
\section3 Splitters
As the structure of splitters are simple and do not contain any
- sub elements, we do not include image of splitters. CE_Splitter
+ sub elements, we do not include any images of splitters. \c CE_Splitter
does not use any other elements or metrics.
- For its style option, Splitters uses the base class QStyleOption.
+ For its style option, the splitter uses the base class QStyleOption.
It can set the following state flags on it:
\table 90%
@@ -1490,23 +1478,22 @@
\li State
\li Set When
\row
- \li State_Horizontal
- \li Set if it is a horizontal splitter
+ \li \c State_Horizontal
+ \li Set if it is a horizontal splitter.
\endtable
QSplitter does not use \l{QStyleOption::}{initFrom()} to set up its
- option; it sets the State_MouseOver and State_Disabled flags
+ option; it sets the \c State_MouseOver and \c State_Disabled flags
itself.
\section3 Progress Bar
- The CE_ProgressBar element is used by QProgressBar, and it is the
- only element used by this widget. We start with looking at the
- style structure:
+ The \c CE_ProgressBar element is used by QProgressBar, and it is the
+ only element used by this widget. We start with the style structure:
\image javastyle/progressbar.png
- Here is a progress bar in the windows style (the java style
+ Here is a progress bar in the Windows style (the Java style
bounding rectangles are equal):
\image javastyle/progressbarimage.png
@@ -1521,32 +1508,32 @@
\li Content
\row
\li minimum
- \li The minimum value of the bar
+ \li The minimum value of the bar.
\row
\li maximum
- \li The maximum value of the bar
+ \li The maximum value of the bar.
\row
\li progress
- \li The current value of the bar
+ \li The current value of the bar.
\row
\li textAlignment
- \li How the text is aligned in the label
+ \li How the text is aligned in the label.
\row
\li textVisible
- \li Whether the label is drawn
+ \li Whether the label is drawn.
\row
\li text
- \li The label text
+ \li The label text.
\row
\li orientation
- \li Progress bars can be vertical or horizontal
+ \li Progress bars can be vertical or horizontal.
\row
\li invertedAppearance
\li The progress is inverted (i.e., right to left in a
- horizontal bar)
+ horizontal bar).
\row
\li bottomToTop
- \li Boolean that if true, turns the label of vertical
+ \li Boolean, that, if \c true, turns the label of vertical
progress bars 90 degrees.
\endtable
@@ -1554,20 +1541,18 @@
Tool buttons exist either independently or as part of tool bars.
They are drawn equally either way. The QToolButton draws only one
- style element: CC_ToolButton.
+ style element: \c CC_ToolButton.
- As you must be used to by now (at least if you have read this
- document sequentially), we have a tree of the widget's style
- structure:
+ Below is a tree of the widget's style structure:
\image javastyle/toolbutton.png
- Note that PE_FrameButtonTool and PE_IndicatorArrowDown are
- included in the tree as the java style draws them, but they can
+ Note that \c PE_FrameButtonTool and \c PE_IndicatorArrowDown are
+ included in the tree as the Java style draws them, but they can
safely be omitted if you prefer it. The structure may also be
different. QWindowsStyle, for instance, draws both
- PE_IndicatorButtonDropDown and PE_IndicatorArrowDown in
- CE_ToolButton.
+ \c PE_IndicatorButtonDropDown and \c PE_IndicatorArrowDown in
+ \c CE_ToolButton.
We also have an image of a tool button where we have outlined
the sub element bounding rectangles and sub controls.
@@ -1581,18 +1566,18 @@
\li State
\li Set When
\row
- \li State_AutoRise
- \li the tool button has the autoRise property set
+ \li \c State_AutoRise
+ \li The tool button has the autoRise property set.
\row
- \li State_raised
- \li the button is not sunken (i.e., by being checked or
+ \li \c State_Raised
+ \li The button is not sunken (i.e., by being checked or
pressed on with the mouse).
\row
- \li State_Sunken
- \li the button is down
+ \li \c State_Sunken
+ \li The button is down.
\row
- \li State_On
- \li the button is checkable and checked.
+ \li \c State_On
+ \li The button is checkable and checked.
\endtable
QStyleOptionToolButton also contains the following members:
@@ -1603,50 +1588,50 @@
\li Content
\row
\li arrowType
- \li a Qt::ArrowType enum value, which contains the
+ \li A Qt::ArrowType enum value, which contains the
direction of the buttons arrow (if an arrow is to
- be used in place of an icon)
+ be used in place of an icon).
\row
\li features
- \li flags of the QStyleOptionToolButton::ButtonFeature
+ \li Flags of the QStyleOptionToolButton::ButtonFeature
enum describing if the button has an arrow, a menu,
and/or has a popup-delay.
\row
\li font
- \li the QFont of the buttons label
+ \li The QFont of the buttons label.
\row
\li icon
- \li the QIcon of the tool button
+ \li The QIcon of the tool button.
\row
\li iconSize
- \li the icon size of the button's icon
+ \li The icon size of the button's icon.
\row
\li pos
- \li the position of the button, as given by
+ \li The position of the button, as given by
QWidget::pos()
\row
\li text
- \li the text of the button
+ \li The text of the button.
\row
\li toolButtonStyle
- \li a Qt::ToolButtonStyle enum value which decides
+ \li A Qt::ToolButtonStyle enum value which decides
whether the button shows the icon, the text, or both.
\endtable
\section3 Toolbars
- Toolbars are part of the \l{QMainWindow}{main window framework}
- and cooperates with the QMainWindow to which it belongs while it
+ Toolbars are part of the \l{QMainWindow}{main window framework},
+ and cooperate with the QMainWindow to which they belong while it
builds its style option. A main window has 4 areas that toolbars
can be placed in. They are positioned next to the four sides of
- the window (i.e., north, south, west, and east). Within each area
+ the window (i.e., north, south, east and west). Within each area
there can be more than one line of toolbars; a line consists of
toolbars with equal orientation (vertical or horizontal) placed
next to each other.
- \l{QToolbar}{QToolbar}s in Qt consists of three elements
- CE_ToolBar, PE_IndicatorToolBarHandle, and
- PE_IndicatorToolBarSeparator. It is QMainWindowLayout that
+ \l{QToolbar}{QToolbar}s in Qt consist of three elements:
+ \c CE_ToolBar, \c PE_IndicatorToolBarHandle, and
+ \c PE_IndicatorToolBarSeparator. It is QMainWindowLayout that
calculates the bounding rectangles (i.e., position and size of the
toolbars and their contents. The main window also uses the \c
sizeHint() of the items in the toolbars when calculating the size
@@ -1659,19 +1644,19 @@
The dotted lines indicate that the QToolBar keeps an instance of
QToolBarLayout and that QToolBarSeparators are kept by
QToolBarLayout. When the toolbar is floating (i.e., has its own
- window) the PE_FrameMenu element is drawn, else QToolbar draws
- CE_ToolBar.
+ window) the \c PE_FrameMenu element is drawn, else QToolbar draws
+ \c CE_ToolBar.
- Here is an image of a toolbar in the java style:
+ Here is an image of a toolbar in the Java style:
\image javastyle/toolbarimage.png
- QToolBarSaparator uses QStyleOption for their style option. It
- sets the State_horizontal flag if the toolbar they live in is
+ QToolBarSaparator uses QStyleOption for its style option. It
+ sets the \c State_Horizontal flag if the toolbar it lives in is
horizontal. Other than that, they use \l{QStyleOption::}{initFrom()}.
The style option for QToolBar is QStyleOptionToolBar. The only
- state flag set (besides the common flags) is State_Horizontal
+ state flag set (besides the common flags) is \c State_Horizontal
if the bar is horizontal (i.e., in the north or south toolbar area).
The member variables of the style option are:
@@ -1688,8 +1673,7 @@
\li The width of the tool bar frame.
\row
\li midLineWidth
- \li This variable is currently not used and is always
- 0.
+ \li This variable is currently not used and is always 0.
\row
\li positionOfLine
\li The position of the toolbar line within the toolbar
@@ -1705,31 +1689,31 @@
\section3 Menus
Menus in Qt are implemented in QMenu. The QMenu keeps a list of
- action, which it draws as menu items. When QMenu receives paint
- events ,it calculates the size of each menu item and draws them
- individually with CE_MenuItem. (Menu items do not have a separate
+ actions, which it draws as menu items. When QMenu receives paint
+ events, it calculates the size of each menu item and draws them
+ individually with \c CE_MenuItem. Menu items do not have a separate
element for their label (contents), so all drawing is done in
- CE_MenuItem. The menu also draws the frame of the menu with
- PE_FrameMenu. It also draws CE_MenuScroller if the style supports
- scrolling. CE_MenuTearOff is drawn if the menu is to large for its
+ \c CE_MenuItem. The menu also draws the frame of the menu with
+ \c PE_FrameMenu. It also draws \c CE_MenuScroller if the style supports
+ scrolling. \c CE_MenuTearOff is drawn if the menu is too large for its
bounding rectangle.
In the style structure tree, we also include QMenu as it also does
styling related work. The bounding rectangles of menu items are
- calculated for the menus size hint and when the menu is displayed
+ calculated for the menu's size hint and when the menu is displayed
or resized.
\image javastyle/menu.png
- The CE_MenuScroller and CE_MenuTearOff elements are handled by
- QCommonStyle and are not shown unless the menu is to large to fit
- on the screen. PE_FrameMenu is only drawn for pop-up menus.
+ The \c CE_MenuScroller and \c CE_MenuTearOff elements are handled by
+ QCommonStyle and are not shown unless the menu is too large to fit
+ on the screen. \c PE_FrameMenu is only drawn for pop-up menus.
QMenu calculates rectangles based on its actions and calls
- CE_MenuItem and CE_MenuScroller if the style supports that.
+ \c CE_MenuItem and \c CE_MenuScroller if the style supports that.
- It is also usual to use PE_IndicatorCheckBox (instead of using
- PE_IndicatorMenuCheckMark) and PE_IndicatorRadioButton for drawing
+ It is also usual to use \c PE_IndicatorCheckBox (instead of using
+ \c PE_IndicatorMenuCheckMark) and \c PE_IndicatorRadioButton for drawing
checkable menu items; we have not included them in the style tree
as this is optional and varies from style to style.
@@ -1743,14 +1727,14 @@
\li State
\li Set When
\row
- \li State_Selected
+ \li \c State_Selected
\li The mouse is over the action and the action is not
a separator.
\row
- \li State_Sunken
+ \li \c State_Sunken
\li The mouse is pressed down on the menu item.
\row
- \li State_DownArrow
+ \li \c State_DownArrow
\li Set if the menu item is a menu scroller and it scrolls
the menu downwards.
\endtable
@@ -1766,19 +1750,19 @@
NonExclusive.
\row
\li checked
- \li Boolean that is true if the menu item is checked.
+ \li Boolean that is \c true if the menu item is checked.
\row
\li font
\li The QFont to use for the menu item's text.
\row
\li icon
- \li the QIcon of the menu item.
+ \li The QIcon of the menu item.
\row
\li maxIconWidth
- \li The maximum width allowed for the icon
+ \li The maximum width allowed for the icon.
\row
\li menuHasChecableItem
- \li Boolean which is true if at least one item in the
+ \li Boolean which is \c true if at least one item in the
menu is checkable.
\row
\li menuItemType
@@ -1797,8 +1781,8 @@
\li The text of the menu item.
\endtable
- The setup of the style option for CE_MenuTearOff and
- CE_MenuScroller also uses QStyleOptionMenuItem; they only set the
+ The setup of the style option for \c CE_MenuTearOff and
+ \c CE_MenuScroller also uses QStyleOptionMenuItem; they only set the
\c menuRect variable in addition to the common settings with
QStyleOption's \l{QStyleOption::}{initFrom()}.
@@ -1811,17 +1795,17 @@
\image javastyle/menubar.png
- The panel and empty area is drawn after the menu items. The
+ The panel and empty area are drawn after the menu items. The
QPainter that the QMenuBar sends to the style has the bounding
rectangles of the items clipped out (i.e., clip region), so you
don't need to worry about drawing over the items. The pixel
- metrics in QMenuBar is used when the bounding rectangles of the
+ metrics in QMenuBar are used when the bounding rectangles of the
menu bar items are calculated.
\image javastyle/menubarimage.png
QStyleOptionMenuItem is used for menu bar items. The members that
- are used by QMenuBar is described in the following table:
+ are used by QMenuBar are described in the following table:
\table
\header
@@ -1829,31 +1813,31 @@
\li Content
\row
\li menuRect
- \li the bounding rectangle of the entire menu bar to
+ \li The bounding rectangle of the entire menu bar to
which the item belongs.
\row
\li text
- \li the text of the item
+ \li The text of the item.
\row
\li icon
- \li the icon of the menu item (it is not common that
- styles draw this icon)
+ \li The icon of the menu item (it is not common that
+ styles draw this icon).
\endtable
- QStyleOptionMenuItem is also used for drawing CE_EmptyMenuBarArea.
+ QStyleOptionMenuItem is also used for drawing \c CE_EmptyMenuBarArea.
- QStyleOptionFrame is used for drawing the panel frame The
- \l{QStyleOptionFrame::}{lineWidth} is set to PM_MenuBarPanelWidth.
+ QStyleOptionFrame is used for drawing the panel frame. The
+ \l{QStyleOptionFrame::}{lineWidth} is set to \c PM_MenuBarPanelWidth.
The \l{QStyleOptionFrame::}{midLineWidth} is currently always set
to 0.
\section3 Item View Headers
It is the style that draws the headers of Qt's item views. The
- item views keeps the dimensions on individual sections. Also
+ item views keep the dimensions on individual sections. Also
note that the delegates may use the style to paint decorations
and frames around items. QItemDelegate, for instance, draws
- PE_FrameFocusRect and PE_IndicatorViewItemCheck.
+ \c PE_FrameFocusRect and \c PE_IndicatorViewItemCheck.
\image javastyle/header.png
@@ -1862,11 +1846,11 @@
\image javastyle/headerimage.png
- The QHeaderView uses CT_HeaderSection, PM_HeaderMargin and
- PM_HeaderGripMargin for size and hit test calculations. The
- PM_HeaderMarkSize is currently not used by Qt. QTableView draws
+ The QHeaderView uses \c CT_HeaderSection, \c PM_HeaderMargin and
+ \c PM_HeaderGripMargin for size and hit test calculations. The
+ \c PM_HeaderMarkSize is currently not used by Qt. QTableView draws
the button in the top-left corner (i.e., the area where the
- vertical and horizontal headers intersect) as a CE_Header.
+ vertical and horizontal headers intersect) as a \c CE_Header.
The style option for header views is QStyleOptionHeader. The view
paints one header section at a time, so the data is for the
@@ -1878,51 +1862,49 @@
\li Content
\row
\li icon
- \li the icon of the header (for section that is being
- drawn).
+ \li The icon of the header (for section that is being drawn).
\row
\li iconAlignment
- \li the alignment (Qt::Alignment) of the icon in the header.
+ \li The alignment (Qt::Alignment) of the icon in the header.
\row
\li orientation
- \li a Qt::Orientation value deciding whether the header
+ \li A Qt::Orientation value deciding whether the header
is the horizontal header above the view or the
vertical header on the left.
\row
\li position
- \li a QStyleOptionHeader::SectionPosition value
+ \li A QStyleOptionHeader::SectionPosition value
giving the header section's position relative to
the other sections.
\row
\li section
- \li holds the section that is being drawn.
+ \li Holds the section that is being drawn.
\row
\li selectedPosition
- \li a QStyleOptionHeader::SelectedPosition value giving
+ \li A QStyleOptionHeader::SelectedPosition value giving
the selected section's position relative to the
section that is being painted.
\row
\li sortIndicator
- \li a QStyleOptionHeader::SortIndicator value that
+ \li A QStyleOptionHeader::SortIndicator value that
describes the direction in which the section's sort
indicator should be drawn.
\row
\li text
- \li the text of the currently drawn section.
+ \li The text of the currently drawn section.
\row
\li textAlignment
- \li the Qt::Alignment of the text within the
- headersection.
+ \li The Qt::Alignment of the text within the header section.
\endtable
\section3 Tree Branch Indicators
- The branch indicators in a tree view is drawn by the style with
- PE_IndicatorBranch. We think of indicators here as the indicators
+ The branch indicators in a tree view are drawn by the style with
+ \c PE_IndicatorBranch. We think of indicators here as the indicators
that describe the relationship of the nodes in the tree. The
- generic QStyleOption is sent to the style for drawing this
+ generic QStyleOption is sent to the style for drawing these
elements. The various branch types are described by states. Since
- there are no specific style option, we simply present the states
+ there is no specific style option, we simply present the states
table:
\table 90%
@@ -1930,30 +1912,30 @@
\li State
\li Set When
\row
- \li State_Sibling
- \li the node in the tree has a sibling (i.e., there is
+ \li \c State_Sibling
+ \li The node in the tree has a sibling (i.e., there is
another node in the same column).
\row
- \li State_Item
- \li this branch indicator has an item.
+ \li \c State_Item
+ \li This branch indicator has an item.
\row
- \li State_Children
- \li the branch has children (i.e., a new sub-tree can
+ \li \c State_Children
+ \li The branch has children (i.e., a new sub-tree can
be opened at the branch).
\row
- \li State_Open
- \li the branch indicator has an opened sub-tree.
+ \li \c State_Open
+ \li The branch indicator has an opened sub-tree.
\endtable
The tree view (and tree widget) use the style to draw the branches
- (or nodes if you will) of the tree.
+ (nodes) of the tree.
- QStyleOption is used as the style for PE_IndicatorBranch has state
+ QStyleOption is used as the style for \c PE_IndicatorBranch has state
flags set depending on what type of branch it is.
Since there is no tree structure for branch indicators, we only
- present an image of a tree in the java style. Each state is marked
- in the image with a rectangle in a specific color (i.e., these
+ present an image of a tree in the Java style. Each state is marked
+ in the image with a rectangle in a specific color (i.e., the
rectangles are not bounding rectangles). All combinations of
states you must be aware of are represented in the image.
@@ -1961,10 +1943,10 @@
\section3 Tool Boxes
- PM_SmallIconSize for sizeHints.
+ \c PM_SmallIconSize for sizeHints.
QToolBox is a container that keeps a collection of widgets. It has
- one tab for each widget and display one of them at a time. The
+ one tab for each widget and displays one of them at a time. The
tool box lays the components it displays (the tool box buttons
and selected widget) in a QVBoxLayout. The style tree for tool
boxes looks like this:
@@ -1976,11 +1958,11 @@
\image javastyle/toolboximage.png
All elements have the same bounding rectangles in the
- Plastique as well as the other Qt built-in styles.
+ Plastique style as well as the other built-in Qt styles.
The style option for tool boxes is QStyleOptionToolBox. It
contains the text and icon of the tool box contents. The only
- state set by QToolBox is State_Sunken, which is set when the user
+ state set by QToolBox is \c State_Sunken, which is set when the user
presses a tab down with the mouse. The rest of the
QStyleOptionToolBox members are:
@@ -1990,27 +1972,27 @@
\li Content
\row
\li icon
- \li the icon on the toolbox tab
+ \li The icon on the toolbox tab.
\row
\li text
- \li the text on the toolbox tab
+ \li The text on the toolbox tab.
\endtable
\section3 Size Grip
- The size grip calculates its size hint with CT_SizeGrip. The pixel
- metric PM_SizeGripSize is currently unused by Qt. The element tree
- for and an image in the Plastique style of QSizeGrip follows:
+ The size grip calculates its size hint with \c CT_SizeGrip. The pixel
+ metric \c PM_SizeGripSize is currently unused by Qt. The element tree
+ for an image in the Plastique style of QSizeGrip follows:
\image javastyle/sizegrip.png
\image javastyle/sizegripimage.png
- We show the size grip in a \l{QMainWindow}'s bottom right
+ We show the size grip in \l{QMainWindow}'s bottom right
corner.
- The size grip style option, QStyleOptionSizeGrip, have one
- member except the common members from QStyleOption:
+ The size grip style option, QStyleOptionSizeGrip, has one
+ member besides the common members from QStyleOption:
\table 90%
\header
@@ -2018,7 +2000,7 @@
\li Content
\row
\li corner
- \li a Qt::Corner value that describe which corner in a
+ \li A Qt::Corner value that describes which corner in a
window (or equivalent) the grip is located.
\endtable
@@ -2042,29 +2024,29 @@
\li Content
\row
\li opaque
- \li boolean that is true if the rubber band must be
- drawn in an opaque style (i.e., color)
+ \li Boolean that is \c true if the rubber band must be
+ drawn in an opaque style (i.e., color).
\row
\li shape
- \li a QRubberBand::Shape enum value that holds the
+ \li A QRubberBand::Shape enum value that holds the
shape of the band (which is either a rectangle or a
- line)
+ line).
\endtable
\section3 Dock Widgets
When the dock widget lays out its contents it asks the style for
- these pixel metrics: PM_DockWidgetSeparatorExtent,
- PM_DockWidgetTitleBarButtonMargin, PM_DockWidgetFrameWidth, and
- PM_DockWidgetTitleMargin. It also calculates the bounding
+ these pixel metrics: \c PM_DockWidgetSeparatorExtent,
+ \c PM_DockWidgetTitleBarButtonMargin, \c PM_DockWidgetFrameWidth, and
+ \c PM_DockWidgetTitleMargin. It also calculates the bounding
rectangles of the float and close buttons with
- SE_DockWidgetCloseButton and SE_DockWidgetFloatButton.
+ \c SE_DockWidgetCloseButton and \c SE_DockWidgetFloatButton.
\image javastyle/dockwidget.png
The dotted lines indicate that the sender keeps instances of the
recipient of the arrow (i.e., it is not a style element to draw).
- The dock widget only draws PE_frameDockWidget when it is detached
+ The dock widget only draws \c PE_frameDockWidget when it is detached
from its main window (i.e., it is a top level window). If it is
docked it draws the indicator dock widget resize handle. We show a
dock widget in both docked and floating state in the plastique
@@ -2080,20 +2062,20 @@
\li Content
\row
\li closeable
- \li boolean that holds whether the dock window can be
- closed
+ \li Boolean that holds whether the dock window can be
+ closed.
\row
\li floatable
- \li boolean that holds whether the dock window can
+ \li Boolean that holds whether the dock window can
float (i.e., detach from the main window in which
- it lives)
+ it lives).
\row
\li movable
- \li boolean that holds whether the window is movable
- (i.e., can move to other dock widget areas)
+ \li Boolean that holds whether the window is movable
+ (i.e., can move to other dock widget areas).
\row
\li title
- \li the title text of the dock window
+ \li The title text of the dock window.
\endtable
For the buttons, QStyleOptionButton is used (see \l{Tool Buttons}
diff --git a/src/widgets/graphicsview/qgraphicsitem.cpp b/src/widgets/graphicsview/qgraphicsitem.cpp
index c432902fc2..95244b8534 100644
--- a/src/widgets/graphicsview/qgraphicsitem.cpp
+++ b/src/widgets/graphicsview/qgraphicsitem.cpp
@@ -2405,7 +2405,7 @@ void QGraphicsItem::setVisible(bool visible)
/*!
\fn void QGraphicsItem::hide()
- Hides the item. (Items are visible by default.)
+ Hides the item (items are visible by default).
This convenience function is equivalent to calling \c setVisible(false).
@@ -2415,7 +2415,7 @@ void QGraphicsItem::setVisible(bool visible)
/*!
\fn void QGraphicsItem::show()
- Shows the item. (Items are visible by default.)
+ Shows the item (items are visible by default).
This convenience function is equivalent to calling \c setVisible(true).
@@ -3742,7 +3742,7 @@ void QGraphicsItem::ensureVisible(const QRectF &rect, int xmargin, int ymargin)
int xmargin = 50, int ymargin = 50)
This convenience function is equivalent to calling
- ensureVisible(QRectF(\a x, \a y, \a w, \a h), \a xmargin, \a ymargin):
+ ensureVisible(QRectF(\a x, \a y, \a w, \a h), \a xmargin, \a ymargin).
*/
/*!
@@ -4709,9 +4709,9 @@ QRectF QGraphicsItem::childrenBoundingRect() const
If you want to change the item's bounding rectangle, you must first call
prepareGeometryChange(). This notifies the scene of the imminent change,
- so that its can update its item geometry index; otherwise, the scene will
+ so that it can update its item geometry index; otherwise, the scene will
be unaware of the item's new geometry, and the results are undefined
- (typically, rendering artifacts are left around in the view).
+ (typically, rendering artifacts are left within the view).
Reimplement this function to let QGraphicsView determine what
parts of the widget, if any, need to be redrawn.
@@ -4810,8 +4810,8 @@ bool QGraphicsItem::isClipped() const
Returns this item's clip path, or an empty QPainterPath if this item is
not clipped. The clip path constrains the item's appearance and
- interaction (i.e., restricts the area the item can draw, and it also
- restricts the area that the item receives events).
+ interaction (i.e., restricts the area the item can draw within and receive
+ events for).
You can enable clipping by setting the ItemClipsToShape or
ItemClipsChildrenToShape flags. The item's clip path is calculated by
@@ -6716,9 +6716,9 @@ bool QGraphicsItem::sceneEvent(QEvent *event)
menu events. The \a event parameter contains details about the event to
be handled.
- If you ignore the event, (i.e., by calling QEvent::ignore(),) \a event
+ If you ignore the event (i.e., by calling QEvent::ignore()), \a event
will propagate to any item beneath this item. If no items accept the
- event, it will be ignored by the scene, and propagate to the view.
+ event, it will be ignored by the scene and propagate to the view.
It's common to open a QMenu in response to receiving a context menu
event. Example:
@@ -6739,7 +6739,7 @@ void QGraphicsItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
drag enter events for this item. Drag enter events are generated as the
cursor enters the item's area.
- By accepting the event, (i.e., by calling QEvent::accept(),) the item will
+ By accepting the event (i.e., by calling QEvent::accept()), the item will
accept drop events, in addition to receiving drag move and drag
leave. Otherwise, the event will be ignored and propagate to the item
beneath. If the event is accepted, the item will receive a drag move event
@@ -7576,6 +7576,13 @@ QGraphicsObject::QGraphicsObject(QGraphicsItemPrivate &dd, QGraphicsItem *parent
}
/*!
+ Destructor.
+*/
+QGraphicsObject::~QGraphicsObject()
+{
+}
+
+/*!
\reimp
*/
bool QGraphicsObject::event(QEvent *ev)
diff --git a/src/widgets/graphicsview/qgraphicsitem.h b/src/widgets/graphicsview/qgraphicsitem.h
index ce7adfcfad..0cb936bebb 100644
--- a/src/widgets/graphicsview/qgraphicsitem.h
+++ b/src/widgets/graphicsview/qgraphicsitem.h
@@ -162,7 +162,7 @@ public:
SceneModal
};
- QGraphicsItem(QGraphicsItem *parent = 0);
+ explicit QGraphicsItem(QGraphicsItem *parent = 0);
virtual ~QGraphicsItem();
QGraphicsScene *scene() const;
@@ -562,7 +562,8 @@ class Q_WIDGETS_EXPORT QGraphicsObject : public QObject, public QGraphicsItem
Q_CLASSINFO("DefaultProperty", "children")
Q_INTERFACES(QGraphicsItem)
public:
- QGraphicsObject(QGraphicsItem *parent = 0);
+ explicit QGraphicsObject(QGraphicsItem *parent = 0);
+ ~QGraphicsObject();
#ifdef Q_NO_USING_KEYWORD
const QObjectList &children() const { return QObject::children(); }
@@ -607,7 +608,7 @@ class QAbstractGraphicsShapeItemPrivate;
class Q_WIDGETS_EXPORT QAbstractGraphicsShapeItem : public QGraphicsItem
{
public:
- QAbstractGraphicsShapeItem(QGraphicsItem *parent = 0);
+ explicit QAbstractGraphicsShapeItem(QGraphicsItem *parent = 0);
~QAbstractGraphicsShapeItem();
QPen pen() const;
@@ -632,8 +633,8 @@ class QGraphicsPathItemPrivate;
class Q_WIDGETS_EXPORT QGraphicsPathItem : public QAbstractGraphicsShapeItem
{
public:
- QGraphicsPathItem(QGraphicsItem *parent = 0);
- QGraphicsPathItem(const QPainterPath &path, QGraphicsItem *parent = 0);
+ explicit QGraphicsPathItem(QGraphicsItem *parent = 0);
+ explicit QGraphicsPathItem(const QPainterPath &path, QGraphicsItem *parent = 0);
~QGraphicsPathItem();
QPainterPath path() const;
@@ -665,9 +666,9 @@ class QGraphicsRectItemPrivate;
class Q_WIDGETS_EXPORT QGraphicsRectItem : public QAbstractGraphicsShapeItem
{
public:
- QGraphicsRectItem(QGraphicsItem *parent = 0);
- QGraphicsRectItem(const QRectF &rect, QGraphicsItem *parent = 0);
- QGraphicsRectItem(qreal x, qreal y, qreal w, qreal h, QGraphicsItem *parent = 0);
+ explicit QGraphicsRectItem(QGraphicsItem *parent = 0);
+ explicit QGraphicsRectItem(const QRectF &rect, QGraphicsItem *parent = 0);
+ explicit QGraphicsRectItem(qreal x, qreal y, qreal w, qreal h, QGraphicsItem *parent = 0);
~QGraphicsRectItem();
QRectF rect() const;
@@ -703,9 +704,9 @@ class QGraphicsEllipseItemPrivate;
class Q_WIDGETS_EXPORT QGraphicsEllipseItem : public QAbstractGraphicsShapeItem
{
public:
- QGraphicsEllipseItem(QGraphicsItem *parent = 0);
- QGraphicsEllipseItem(const QRectF &rect, QGraphicsItem *parent = 0);
- QGraphicsEllipseItem(qreal x, qreal y, qreal w, qreal h, QGraphicsItem *parent = 0);
+ explicit QGraphicsEllipseItem(QGraphicsItem *parent = 0);
+ explicit QGraphicsEllipseItem(const QRectF &rect, QGraphicsItem *parent = 0);
+ explicit QGraphicsEllipseItem(qreal x, qreal y, qreal w, qreal h, QGraphicsItem *parent = 0);
~QGraphicsEllipseItem();
QRectF rect() const;
@@ -747,9 +748,9 @@ class QGraphicsPolygonItemPrivate;
class Q_WIDGETS_EXPORT QGraphicsPolygonItem : public QAbstractGraphicsShapeItem
{
public:
- QGraphicsPolygonItem(QGraphicsItem *parent = 0);
- QGraphicsPolygonItem(const QPolygonF &polygon,
- QGraphicsItem *parent = 0);
+ explicit QGraphicsPolygonItem(QGraphicsItem *parent = 0);
+ explicit QGraphicsPolygonItem(const QPolygonF &polygon,
+ QGraphicsItem *parent = 0);
~QGraphicsPolygonItem();
QPolygonF polygon() const;
@@ -784,9 +785,9 @@ class QGraphicsLineItemPrivate;
class Q_WIDGETS_EXPORT QGraphicsLineItem : public QGraphicsItem
{
public:
- QGraphicsLineItem(QGraphicsItem *parent = 0);
- QGraphicsLineItem(const QLineF &line, QGraphicsItem *parent = 0);
- QGraphicsLineItem(qreal x1, qreal y1, qreal x2, qreal y2, QGraphicsItem *parent = 0);
+ explicit QGraphicsLineItem(QGraphicsItem *parent = 0);
+ explicit QGraphicsLineItem(const QLineF &line, QGraphicsItem *parent = 0);
+ explicit QGraphicsLineItem(qreal x1, qreal y1, qreal x2, qreal y2, QGraphicsItem *parent = 0);
~QGraphicsLineItem();
QPen pen() const;
@@ -829,8 +830,8 @@ public:
HeuristicMaskShape
};
- QGraphicsPixmapItem(QGraphicsItem *parent = 0);
- QGraphicsPixmapItem(const QPixmap &pixmap, QGraphicsItem *parent = 0);
+ explicit QGraphicsPixmapItem(QGraphicsItem *parent = 0);
+ explicit QGraphicsPixmapItem(const QPixmap &pixmap, QGraphicsItem *parent = 0);
~QGraphicsPixmapItem();
QPixmap pixmap() const;
@@ -881,8 +882,8 @@ class Q_WIDGETS_EXPORT QGraphicsTextItem : public QGraphicsObject
QDOC_PROPERTY(QTextCursor textCursor READ textCursor WRITE setTextCursor)
public:
- QGraphicsTextItem(QGraphicsItem *parent = 0);
- QGraphicsTextItem(const QString &text, QGraphicsItem *parent = 0);
+ explicit QGraphicsTextItem(QGraphicsItem *parent = 0);
+ explicit QGraphicsTextItem(const QString &text, QGraphicsItem *parent = 0);
~QGraphicsTextItem();
QString toHtml() const;
@@ -972,8 +973,8 @@ class QGraphicsSimpleTextItemPrivate;
class Q_WIDGETS_EXPORT QGraphicsSimpleTextItem : public QAbstractGraphicsShapeItem
{
public:
- QGraphicsSimpleTextItem(QGraphicsItem *parent = 0);
- QGraphicsSimpleTextItem(const QString &text, QGraphicsItem *parent = 0);
+ explicit QGraphicsSimpleTextItem(QGraphicsItem *parent = 0);
+ explicit QGraphicsSimpleTextItem(const QString &text, QGraphicsItem *parent = 0);
~QGraphicsSimpleTextItem();
void setText(const QString &text);
@@ -1008,7 +1009,7 @@ class QGraphicsItemGroupPrivate;
class Q_WIDGETS_EXPORT QGraphicsItemGroup : public QGraphicsItem
{
public:
- QGraphicsItemGroup(QGraphicsItem *parent = 0);
+ explicit QGraphicsItemGroup(QGraphicsItem *parent = 0);
~QGraphicsItemGroup();
void addToGroup(QGraphicsItem *item);
diff --git a/src/widgets/graphicsview/qgraphicsproxywidget.cpp b/src/widgets/graphicsview/qgraphicsproxywidget.cpp
index 762f93f55b..289f9919ef 100644
--- a/src/widgets/graphicsview/qgraphicsproxywidget.cpp
+++ b/src/widgets/graphicsview/qgraphicsproxywidget.cpp
@@ -267,7 +267,7 @@ void QGraphicsProxyWidgetPrivate::sendWidgetMouseEvent(QGraphicsSceneMouseEvent
}
if (!lastWidgetUnderMouse) {
- QApplicationPrivate::dispatchEnterLeave(embeddedMouseGrabber ? embeddedMouseGrabber : receiver, 0);
+ QApplicationPrivate::dispatchEnterLeave(embeddedMouseGrabber ? embeddedMouseGrabber : receiver, 0, event->screenPos());
lastWidgetUnderMouse = receiver;
}
@@ -293,7 +293,7 @@ void QGraphicsProxyWidgetPrivate::sendWidgetMouseEvent(QGraphicsSceneMouseEvent
else // released on the frame our outside the item, or doesn't accept hover events.
lastWidgetUnderMouse = 0;
- QApplicationPrivate::dispatchEnterLeave(lastWidgetUnderMouse, embeddedMouseGrabber);
+ QApplicationPrivate::dispatchEnterLeave(lastWidgetUnderMouse, embeddedMouseGrabber, event->screenPos());
embeddedMouseGrabber = 0;
#ifndef QT_NO_CURSOR
@@ -1142,7 +1142,7 @@ void QGraphicsProxyWidget::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
Q_D(QGraphicsProxyWidget);
// If hoverMove was compressed away, make sure we update properly here.
if (d->lastWidgetUnderMouse) {
- QApplicationPrivate::dispatchEnterLeave(0, d->lastWidgetUnderMouse);
+ QApplicationPrivate::dispatchEnterLeave(0, d->lastWidgetUnderMouse, event->screenPos());
d->lastWidgetUnderMouse = 0;
}
}
@@ -1159,7 +1159,7 @@ void QGraphicsProxyWidget::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
// Ignore events on the window frame.
if (!d->widget || !rect().contains(event->pos())) {
if (d->lastWidgetUnderMouse) {
- QApplicationPrivate::dispatchEnterLeave(0, d->lastWidgetUnderMouse);
+ QApplicationPrivate::dispatchEnterLeave(0, d->lastWidgetUnderMouse, event->screenPos());
d->lastWidgetUnderMouse = 0;
}
return;
diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp
index e7e3a58670..21c2e9050c 100644
--- a/src/widgets/itemviews/qheaderview.cpp
+++ b/src/widgets/itemviews/qheaderview.cpp
@@ -2268,7 +2268,12 @@ void QHeaderView::mousePressEvent(QMouseEvent *e)
d->pressed = logicalIndexAt(pos);
if (d->clickableSections)
emit sectionPressed(d->pressed);
- if (d->movableSections) {
+
+ bool acceptMoveSection = d->movableSections;
+ if (acceptMoveSection && d->pressed == 0 && !d->allowUserMoveOfSection0)
+ acceptMoveSection = false; // Do not allow moving the tree nod
+
+ if (acceptMoveSection) {
d->section = d->target = d->pressed;
if (d->section == -1)
return;
@@ -2332,7 +2337,10 @@ void QHeaderView::mouseMoveEvent(QMouseEvent *e)
int visual = visualIndexAt(pos);
if (visual == -1)
return;
- int posThreshold = d->headerSectionPosition(visual) + d->headerSectionSize(visual) / 2;
+ if (visual == 0 && logicalIndex(0) == 0 && !d->allowUserMoveOfSection0)
+ return;
+
+ int posThreshold = d->headerSectionPosition(visual) - d->offset + d->headerSectionSize(visual) / 2;
int moving = visualIndex(d->section);
if (visual < moving) {
if (pos < posThreshold)
@@ -3230,6 +3238,7 @@ void QHeaderViewPrivate::clear()
sectionHidden.clear();
hiddenSectionSize.clear();
sectionItems.clear();
+ invalidateCachedSizeHint();
}
}
@@ -3373,6 +3382,7 @@ void QHeaderViewPrivate::setDefaultSectionSize(int size)
}
}
}
+ sectionStartposRecalc = true;
}
void QHeaderViewPrivate::recalcSectionStartPos() const // linear (but fast)
diff --git a/src/widgets/itemviews/qheaderview.h b/src/widgets/itemviews/qheaderview.h
index 1054e10ba1..847758aa12 100644
--- a/src/widgets/itemviews/qheaderview.h
+++ b/src/widgets/itemviews/qheaderview.h
@@ -240,6 +240,9 @@ protected:
QRegion visualRegionForSelection(const QItemSelection &selection) const;
void initStyleOption(QStyleOptionHeader *option) const;
+ friend class QTableView;
+ friend class QTreeView;
+
private:
Q_PRIVATE_SLOT(d_func(), void _q_sectionsRemoved(const QModelIndex &parent, int logicalFirst, int logicalLast))
Q_PRIVATE_SLOT(d_func(), void _q_layoutAboutToBeChanged())
diff --git a/src/widgets/itemviews/qheaderview_p.h b/src/widgets/itemviews/qheaderview_p.h
index 4d9d0b8c93..7dcfcad01b 100644
--- a/src/widgets/itemviews/qheaderview_p.h
+++ b/src/widgets/itemviews/qheaderview_p.h
@@ -91,6 +91,7 @@ public:
stretchLastSection(false),
cascadingResizing(false),
resizeRecursionBlock(false),
+ allowUserMoveOfSection0(true), // will be false for QTreeView and true for QTableView
stretchSections(0),
contentsSections(0),
minimumSectionSize(-1),
@@ -234,6 +235,10 @@ public:
}
}
+ inline void setAllowUserMoveOfSection0(bool b) {
+ allowUserMoveOfSection0 = b;
+ }
+
void clear();
void flipSortIndicator(int section);
void cascadingResize(int visual, int newSize);
@@ -274,6 +279,7 @@ public:
bool stretchLastSection;
bool cascadingResizing;
bool resizeRecursionBlock;
+ bool allowUserMoveOfSection0;
int stretchSections;
int contentsSections;
int defaultSectionSize;
diff --git a/src/widgets/itemviews/qtableview.cpp b/src/widgets/itemviews/qtableview.cpp
index d84dc608b9..32869ad292 100644
--- a/src/widgets/itemviews/qtableview.cpp
+++ b/src/widgets/itemviews/qtableview.cpp
@@ -53,6 +53,7 @@
#include <qscrollbar.h>
#include <qabstractbutton.h>
#include <private/qtableview_p.h>
+#include <private/qheaderview_p.h>
#ifndef QT_NO_ACCESSIBILITY
#include <qaccessible.h>
#endif
@@ -1181,6 +1182,7 @@ void QTableView::setHorizontalHeader(QHeaderView *header)
delete d->horizontalHeader;
d->horizontalHeader = header;
d->horizontalHeader->setParent(this);
+ d->horizontalHeader->d_func()->setAllowUserMoveOfSection0(true);
if (!d->horizontalHeader->model()) {
d->horizontalHeader->setModel(d->model);
if (d->selectionModel)
@@ -1218,6 +1220,7 @@ void QTableView::setVerticalHeader(QHeaderView *header)
delete d->verticalHeader;
d->verticalHeader = header;
d->verticalHeader->setParent(this);
+ d->verticalHeader->d_func()->setAllowUserMoveOfSection0(true);
if (!d->verticalHeader->model()) {
d->verticalHeader->setModel(d->model);
if (d->selectionModel)
diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp
index bcaf8dc2c3..cf3d7155c1 100644
--- a/src/widgets/itemviews/qtreeview.cpp
+++ b/src/widgets/itemviews/qtreeview.cpp
@@ -58,6 +58,7 @@
#endif
#include <private/qtreeview_p.h>
+#include <private/qheaderview_p.h>
QT_BEGIN_NAMESPACE
@@ -313,6 +314,7 @@ void QTreeView::setHeader(QHeaderView *header)
delete d->header;
d->header = header;
d->header->setParent(this);
+ d->header->d_func()->setAllowUserMoveOfSection0(false);
if (!d->header->model()) {
d->header->setModel(d->model);
diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp
index efa52456e8..d62b8ef146 100644
--- a/src/widgets/kernel/qapplication.cpp
+++ b/src/widgets/kernel/qapplication.cpp
@@ -2114,20 +2114,23 @@ QWidget *QApplicationPrivate::focusNextPrevChild_helper(QWidget *toplevel, bool
}
/*!
- \fn void QApplicationPrivate::dispatchEnterLeave(QWidget* enter, QWidget* leave)
+ \fn void QApplicationPrivate::dispatchEnterLeave(QWidget* enter, QWidget* leave, const QPointF &globalPosF)
\internal
Creates the proper Enter/Leave event when widget \a enter is entered and
widget \a leave is left.
*/
-void QApplicationPrivate::dispatchEnterLeave(QWidget* enter, QWidget* leave) {
+void QApplicationPrivate::dispatchEnterLeave(QWidget* enter, QWidget* leave, const QPointF &globalPosF)
+{
+ const QPoint globalPos = globalPosF.toPoint();
#if 0
if (leave) {
QEvent e(QEvent::Leave);
QApplication::sendEvent(leave, & e);
}
if (enter) {
- QEvent e(QEvent::Enter);
+ const QPoint windowPos = enter->window()->mapFromGlobal(globalPos);
+ QEnterEvent e(enter->mapFromGlobal(globalPos), windowPos, globalPos);
QApplication::sendEvent(enter, & e);
}
return;
@@ -2205,17 +2208,20 @@ void QApplicationPrivate::dispatchEnterLeave(QWidget* enter, QWidget* leave) {
}
}
}
- QPoint posEnter = QCursor::pos();
- QEvent enterEvent(QEvent::Enter);
- for (int i = 0; i < enterList.size(); ++i) {
- w = enterList.at(i);
- if (!QApplication::activeModalWidget() || QApplicationPrivate::tryModalHelper(w, 0)) {
- QApplication::sendEvent(w, &enterEvent);
- if (w->testAttribute(Qt::WA_Hover) &&
- (!QApplication::activePopupWidget() || QApplication::activePopupWidget() == w->window())) {
- QHoverEvent he(QEvent::HoverEnter, w->mapFromGlobal(posEnter), QPoint(-1, -1),
- QApplication::keyboardModifiers());
- qApp->d_func()->notify_helper(w, &he);
+ if (!enterList.isEmpty()) {
+ const QPoint windowPos = enterList.front()->window()->mapFromGlobal(globalPos);
+ for (int i = 0; i < enterList.size(); ++i) {
+ w = enterList.at(i);
+ if (!QApplication::activeModalWidget() || QApplicationPrivate::tryModalHelper(w, 0)) {
+ const QPointF localPos = w->mapFromGlobal(globalPos);
+ QEnterEvent enterEvent(localPos, windowPos, globalPosF);
+ QApplication::sendEvent(w, &enterEvent);
+ if (w->testAttribute(Qt::WA_Hover) &&
+ (!QApplication::activePopupWidget() || QApplication::activePopupWidget() == w->window())) {
+ QHoverEvent he(QEvent::HoverEnter, localPos, QPoint(-1, -1),
+ QApplication::keyboardModifiers());
+ qApp->d_func()->notify_helper(w, &he);
+ }
}
}
}
@@ -2331,7 +2337,7 @@ bool QApplicationPrivate::isWindowBlocked(QWindow *window, QWindow **blockingWin
return false;
}
- Qt::WindowModality windowModality = modalWindow->windowModality();
+ Qt::WindowModality windowModality = modalWindow->modality();
QWidgetWindow *modalWidgetWindow = qobject_cast<QWidgetWindow *>(modalWindow);
if (windowModality == Qt::NonModal) {
// determine the modality type if it hasn't been set on the
@@ -2482,6 +2488,12 @@ bool QApplicationPrivate::sendMouseEvent(QWidget *receiver, QMouseEvent *event,
bool widgetUnderMouse = QRectF(receiver->rect()).contains(event->localPos());
+ // Clear the obsolete leaveAfterRelease value, if mouse button has been released but
+ // leaveAfterRelease has not been updated.
+ // This happens e.g. when modal dialog or popup is shown as a response to button click.
+ if (leaveAfterRelease && !*buttonDown && !event->buttons())
+ leaveAfterRelease = 0;
+
if (*buttonDown) {
if (!graphicsWidget) {
// Register the widget that shall receive a leave event
@@ -2500,9 +2512,9 @@ bool QApplicationPrivate::sendMouseEvent(QWidget *receiver, QMouseEvent *event,
|| (isAlien(lastMouseReceiver) && !alienWidget)) {
if (activePopupWidget) {
if (!QWidget::mouseGrabber())
- dispatchEnterLeave(alienWidget ? alienWidget : nativeWidget, lastMouseReceiver);
+ dispatchEnterLeave(alienWidget ? alienWidget : nativeWidget, lastMouseReceiver, event->screenPos());
} else {
- dispatchEnterLeave(receiver, lastMouseReceiver);
+ dispatchEnterLeave(receiver, lastMouseReceiver, event->screenPos());
}
}
@@ -2534,7 +2546,7 @@ bool QApplicationPrivate::sendMouseEvent(QWidget *receiver, QMouseEvent *event,
enter = alienGuard ? alienWidget : nativeWidget;
else // The receiver is typically deleted on mouse release with drag'n'drop.
enter = QApplication::widgetAt(event->globalPos());
- dispatchEnterLeave(enter, leaveAfterRelease);
+ dispatchEnterLeave(enter, leaveAfterRelease, event->screenPos());
leaveAfterRelease = 0;
lastMouseReceiver = enter;
} else if (!wasLeaveAfterRelease) {
diff --git a/src/widgets/kernel/qapplication_p.h b/src/widgets/kernel/qapplication_p.h
index 5682d794cf..5b3493f478 100644
--- a/src/widgets/kernel/qapplication_p.h
+++ b/src/widgets/kernel/qapplication_p.h
@@ -135,7 +135,7 @@ public:
void createEventDispatcher();
- static void dispatchEnterLeave(QWidget *enter, QWidget *leave);
+ static void dispatchEnterLeave(QWidget *enter, QWidget *leave, const QPointF &globalPosF);
//modality
bool isWindowBlocked(QWindow *window, QWindow **blockingWindow = 0) const Q_DECL_OVERRIDE;
diff --git a/src/widgets/kernel/qapplication_qpa.cpp b/src/widgets/kernel/qapplication_qpa.cpp
index 5dc68e47e0..21bc9506d4 100644
--- a/src/widgets/kernel/qapplication_qpa.cpp
+++ b/src/widgets/kernel/qapplication_qpa.cpp
@@ -250,12 +250,6 @@ void QApplicationPrivate::openPopup(QWidget *popup)
QApplication::sendEvent(fw, &e);
}
}
-
- // Dispatch leave for last mouse receiver to update undermouse states
- if (qt_last_mouse_receiver && !QWidget::mouseGrabber()) {
- QApplicationPrivate::dispatchEnterLeave(0, qt_last_mouse_receiver.data());
- qt_last_mouse_receiver = 0;
- }
}
void QApplicationPrivate::initializeMultitouch_sys()
diff --git a/src/widgets/kernel/qgesture.cpp b/src/widgets/kernel/qgesture.cpp
index 28e3213c83..1f12d1a60d 100644
--- a/src/widgets/kernel/qgesture.cpp
+++ b/src/widgets/kernel/qgesture.cpp
@@ -295,6 +295,12 @@ QPanGesture::QPanGesture(QObject *parent)
d_func()->gestureType = Qt::PanGesture;
}
+/*!
+ Destructor.
+*/
+QPanGesture::~QPanGesture()
+{
+}
QPointF QPanGesture::lastOffset() const
{
@@ -486,6 +492,13 @@ QPinchGesture::QPinchGesture(QObject *parent)
d_func()->gestureType = Qt::PinchGesture;
}
+/*!
+ Destructor.
+*/
+QPinchGesture::~QPinchGesture()
+{
+}
+
QPinchGesture::ChangeFlags QPinchGesture::totalChangeFlags() const
{
return d_func()->totalChangeFlags;
@@ -673,6 +686,13 @@ QSwipeGesture::QSwipeGesture(QObject *parent)
d_func()->gestureType = Qt::SwipeGesture;
}
+/*!
+ Destructor.
+*/
+QSwipeGesture::~QSwipeGesture()
+{
+}
+
QSwipeGesture::SwipeDirection QSwipeGesture::horizontalDirection() const
{
Q_D(const QSwipeGesture);
@@ -732,6 +752,13 @@ QTapGesture::QTapGesture(QObject *parent)
d_func()->gestureType = Qt::TapGesture;
}
+/*!
+ Destructor.
+*/
+QTapGesture::~QTapGesture()
+{
+}
+
QPointF QTapGesture::position() const
{
return d_func()->position;
@@ -769,6 +796,13 @@ QTapAndHoldGesture::QTapAndHoldGesture(QObject *parent)
d_func()->gestureType = Qt::TapAndHoldGesture;
}
+/*!
+ Destructor.
+*/
+QTapAndHoldGesture::~QTapAndHoldGesture()
+{
+}
+
QPointF QTapAndHoldGesture::position() const
{
return d_func()->position;
diff --git a/src/widgets/kernel/qgesture.h b/src/widgets/kernel/qgesture.h
index a289622276..0f09f209c0 100644
--- a/src/widgets/kernel/qgesture.h
+++ b/src/widgets/kernel/qgesture.h
@@ -117,7 +117,8 @@ class Q_WIDGETS_EXPORT QPanGesture : public QGesture
Q_PRIVATE_PROPERTY(QPanGesture::d_func(), qreal verticalVelocity READ verticalVelocity WRITE setVerticalVelocity)
public:
- QPanGesture(QObject *parent = 0);
+ explicit QPanGesture(QObject *parent = 0);
+ ~QPanGesture();
QPointF lastOffset() const;
QPointF offset() const;
@@ -163,7 +164,8 @@ public:
Q_PROPERTY(QPointF centerPoint READ centerPoint WRITE setCenterPoint)
public:
- QPinchGesture(QObject *parent = 0);
+ explicit QPinchGesture(QObject *parent = 0);
+ ~QPinchGesture();
ChangeFlags totalChangeFlags() const;
void setTotalChangeFlags(ChangeFlags value);
@@ -217,7 +219,9 @@ class Q_WIDGETS_EXPORT QSwipeGesture : public QGesture
public:
enum SwipeDirection { NoDirection, Left, Right, Up, Down };
- QSwipeGesture(QObject *parent = 0);
+
+ explicit QSwipeGesture(QObject *parent = 0);
+ ~QSwipeGesture();
SwipeDirection horizontalDirection() const;
SwipeDirection verticalDirection() const;
@@ -237,7 +241,8 @@ class Q_WIDGETS_EXPORT QTapGesture : public QGesture
Q_PROPERTY(QPointF position READ position WRITE setPosition)
public:
- QTapGesture(QObject *parent = 0);
+ explicit QTapGesture(QObject *parent = 0);
+ ~QTapGesture();
QPointF position() const;
void setPosition(const QPointF &pos);
@@ -254,7 +259,8 @@ class Q_WIDGETS_EXPORT QTapAndHoldGesture : public QGesture
Q_PROPERTY(QPointF position READ position WRITE setPosition)
public:
- QTapAndHoldGesture(QObject *parent = 0);
+ explicit QTapAndHoldGesture(QObject *parent = 0);
+ ~QTapAndHoldGesture();
QPointF position() const;
void setPosition(const QPointF &pos);
diff --git a/src/widgets/kernel/qgesturemanager.cpp b/src/widgets/kernel/qgesturemanager.cpp
index 806bfcefb7..72a2469f23 100644
--- a/src/widgets/kernel/qgesturemanager.cpp
+++ b/src/widgets/kernel/qgesturemanager.cpp
@@ -46,6 +46,7 @@
#include "private/qgraphicsitem_p.h"
#include "private/qevent_p.h"
#include "private/qapplication_p.h"
+#include "private/qwidgetwindow_qpa_p.h"
#include "qgesture.h"
#include "qevent.h"
#include "qgraphicsitem.h"
@@ -531,6 +532,13 @@ bool QGestureManager::filterEvent(QGraphicsObject *receiver, QEvent *event)
bool QGestureManager::filterEvent(QObject *receiver, QEvent *event)
{
+ // if the receiver is actually a widget, we need to call the correct event
+ // filter method.
+ QWidgetWindow *widgetWindow = qobject_cast<QWidgetWindow *>(receiver);
+
+ if (widgetWindow)
+ return filterEvent(widgetWindow->widget(), event);
+
if (!m_gestureToRecognizer.contains(static_cast<QGesture *>(receiver)))
return false;
QGesture *state = static_cast<QGesture *>(receiver);
diff --git a/src/widgets/kernel/qlayoutitem.cpp b/src/widgets/kernel/qlayoutitem.cpp
index 5ef3c17454..7de3f47c5b 100644
--- a/src/widgets/kernel/qlayoutitem.cpp
+++ b/src/widgets/kernel/qlayoutitem.cpp
@@ -263,6 +263,11 @@ void QLayoutItem::setAlignment(Qt::Alignment alignment)
*/
/*!
+ Destructor.
+*/
+QSpacerItem::~QSpacerItem() {}
+
+/*!
Changes this spacer item to have preferred width \a w, preferred
height \a h, horizontal size policy \a hPolicy and vertical size
policy \a vPolicy.
@@ -291,6 +296,11 @@ void QSpacerItem::changeSize(int w, int h, QSizePolicy::Policy hPolicy,
*/
/*!
+ Destructor.
+*/
+QWidgetItem::~QWidgetItem() {}
+
+/*!
Destroys the QLayoutItem.
*/
QLayoutItem::~QLayoutItem()
diff --git a/src/widgets/kernel/qlayoutitem.h b/src/widgets/kernel/qlayoutitem.h
index a2f60b1696..093e7fe61b 100644
--- a/src/widgets/kernel/qlayoutitem.h
+++ b/src/widgets/kernel/qlayoutitem.h
@@ -99,6 +99,8 @@ public:
QSizePolicy::Policy hData = QSizePolicy::Minimum,
QSizePolicy::Policy vData = QSizePolicy::Minimum)
: width(w), height(h), sizeP(hData, vData) { }
+ ~QSpacerItem();
+
void changeSize(int w, int h,
QSizePolicy::Policy hData = QSizePolicy::Minimum,
QSizePolicy::Policy vData = QSizePolicy::Minimum);
@@ -124,6 +126,8 @@ class Q_WIDGETS_EXPORT QWidgetItem : public QLayoutItem
public:
explicit QWidgetItem(QWidget *w) : wid(w) { }
+ ~QWidgetItem();
+
QSize sizeHint() const;
QSize minimumSize() const;
QSize maximumSize() const;
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
index 2feb797985..243ba93f5e 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -7907,8 +7907,8 @@ bool QWidget::event(QEvent *event)
}
}
query->accept();
- break;
}
+ break;
case QEvent::PolishRequest:
ensurePolished();
@@ -8563,6 +8563,8 @@ void QWidget::enterEvent(QEvent *)
{
}
+// ### Qt 6: void QWidget::enterEvent(QEnterEvent *).
+
/*!
\fn void QWidget::leaveEvent(QEvent *event)
diff --git a/src/widgets/kernel/qwidget_qpa.cpp b/src/widgets/kernel/qwidget_qpa.cpp
index 2950c19768..b4d9b9d2e3 100644
--- a/src/widgets/kernel/qwidget_qpa.cpp
+++ b/src/widgets/kernel/qwidget_qpa.cpp
@@ -107,7 +107,7 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
win = topData()->window;
}
- win->setWindowFlags(data.window_flags);
+ win->setFlags(data.window_flags);
fixPosIncludesFrame();
win->setGeometry(q->geometry());
win->setScreen(QGuiApplication::screens().value(topData()->screenIndex, 0));
@@ -134,7 +134,7 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
QWindowPrivate::WindowFrameInclusive : QWindowPrivate::WindowFrameExclusive;
win->create();
- data.window_flags = win->windowFlags();
+ data.window_flags = win->flags();
QBackingStore *store = q->backingStore();
@@ -227,7 +227,7 @@ void QWidgetPrivate::setParent_sys(QWidget *newparent, Qt::WindowFlags f)
if (parent != newparent) {
QObjectPrivate::setParent_helper(newparent); //### why does this have to be done in the _sys function???
if (q->windowHandle()) {
- q->windowHandle()->setWindowFlags(f);
+ q->windowHandle()->setFlags(f);
QWidget *parentWithWindow =
newparent ? (newparent->windowHandle() ? newparent : newparent->nativeParentWidget()) : 0;
if (parentWithWindow) {
@@ -342,7 +342,7 @@ void QWidgetPrivate::setWindowTitle_sys(const QString &caption)
return;
if (QWindow *window = q->windowHandle())
- window->setWindowTitle(caption);
+ window->setTitle(caption);
}
@@ -353,14 +353,14 @@ void QWidgetPrivate::setWindowFilePath_sys(const QString &filePath)
return;
if (QWindow *window = q->windowHandle())
- window->setWindowFilePath(filePath);
+ window->setFilePath(filePath);
}
void QWidgetPrivate::setWindowIcon_sys()
{
Q_Q(QWidget);
if (QWindow *window = q->windowHandle())
- window->setWindowIcon(q->windowIcon());
+ window->setIcon(q->windowIcon());
}
void QWidgetPrivate::setWindowIconText_sys(const QString &iconText)
@@ -463,7 +463,7 @@ void QWidget::activateWindow()
QWindow *const wnd = window()->windowHandle();
if (wnd)
- wnd->requestActivateWindow();
+ wnd->requestActivate();
}
// Position top level windows at the center, avoid showing
@@ -640,7 +640,7 @@ void QWidgetPrivate::setFocus_sys()
if (QWindow *nativeWindow = q->window()->windowHandle()) {
if (nativeWindow != QGuiApplication::focusWindow()
&& q->testAttribute(Qt::WA_WState_Created)) {
- nativeWindow->requestActivateWindow();
+ nativeWindow->requestActivate();
}
}
}
@@ -987,7 +987,7 @@ void QWidgetPrivate::setModal_sys()
{
Q_Q(QWidget);
if (q->windowHandle())
- q->windowHandle()->setWindowModality(q->windowModality());
+ q->windowHandle()->setModality(q->windowModality());
}
#ifndef QT_NO_CURSOR
diff --git a/src/widgets/kernel/qwidgetbackingstore_p.h b/src/widgets/kernel/qwidgetbackingstore_p.h
index 69f8a0708e..a4d4ee2f71 100644
--- a/src/widgets/kernel/qwidgetbackingstore_p.h
+++ b/src/widgets/kernel/qwidgetbackingstore_p.h
@@ -240,7 +240,7 @@ private:
}
inline bool hasStaticContents() const
- { return !staticWidgets.isEmpty(); }
+ { return !staticWidgets.isEmpty() && false; }
friend QRegion qt_dirtyRegion(QWidget *);
friend class QWidgetPrivate;
diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp
index b49441beba..b700d33f52 100644
--- a/src/widgets/kernel/qwidgetwindow.cpp
+++ b/src/widgets/kernel/qwidgetwindow.cpp
@@ -205,6 +205,12 @@ bool QWidgetWindow::event(QEvent *event)
handleContextMenuEvent(static_cast<QContextMenuEvent *>(event));
return true;
#endif
+
+ // Handing show events to widgets (see below) here would cause them to be triggered twice
+ case QEvent::Show:
+ case QEvent::Hide:
+ return QWindow::event(event);
+
default:
break;
}
@@ -224,6 +230,7 @@ void QWidgetWindow::handleEnterLeaveEvent(QEvent *event)
QWindowSystemInterfacePrivate::EnterEvent *systemEvent =
static_cast<QWindowSystemInterfacePrivate::EnterEvent *>
(QWindowSystemInterfacePrivate::peekWindowSystemEvent(QWindowSystemInterfacePrivate::Enter));
+ const QPointF globalPosF = systemEvent ? systemEvent->globalPos : QGuiApplicationPrivate::lastCursorPosition;
if (systemEvent) {
if (QWidgetWindow *enterWindow = qobject_cast<QWidgetWindow *>(systemEvent->enter))
{
@@ -244,13 +251,20 @@ void QWidgetWindow::handleEnterLeaveEvent(QEvent *event)
// both native and non-native widgets work similarly.
// When mousegrabbing, leaves are only generated if leaving the parent window.
if (!enter || !QWidget::mouseGrabber()) {
- QWidget *leave = qt_last_mouse_receiver ? qt_last_mouse_receiver.data() : m_widget;
- QApplicationPrivate::dispatchEnterLeave(enter, leave);
+ // Preferred leave target is the last mouse receiver, unless it has native window,
+ // in which case it is assumed to receive it's own leave event when relevant.
+ QWidget *leave = m_widget;
+ if (qt_last_mouse_receiver && !qt_last_mouse_receiver->internalWinId())
+ leave = qt_last_mouse_receiver.data();
+ QApplicationPrivate::dispatchEnterLeave(enter, leave, globalPosF);
qt_last_mouse_receiver = enter;
}
} else {
- QApplicationPrivate::dispatchEnterLeave(m_widget, 0);
- qt_last_mouse_receiver = m_widget;
+ const QEnterEvent *ee = static_cast<QEnterEvent *>(event);
+ QWidget *child = m_widget->childAt(ee->pos());
+ QWidget *receiver = child ? child : m_widget;
+ QApplicationPrivate::dispatchEnterLeave(receiver, 0, ee->screenPos());
+ qt_last_mouse_receiver = receiver;
}
}
@@ -485,6 +499,10 @@ void QWidgetWindow::handleDragEnterMoveEvent(QDragMoveEvent *event)
const QPoint mapped = widget->mapFromGlobal(m_widget->mapToGlobal(event->pos()));
QDragMoveEvent translated(mapped, event->possibleActions(), event->mimeData(), event->mouseButtons(), event->keyboardModifiers());
translated.setDropAction(event->dropAction());
+ if (event->isAccepted()) { // Handling 'DragEnter' should suffice for the application.
+ translated.accept();
+ translated.setDropAction(event->dropAction());
+ }
QGuiApplication::sendSpontaneousEvent(widget, &translated);
if (translated.isAccepted()) {
event->accept();
diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp
index 2b6d843723..96a2078905 100644
--- a/src/widgets/styles/qcommonstyle.cpp
+++ b/src/widgets/styles/qcommonstyle.cpp
@@ -5016,6 +5016,9 @@ int QCommonStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget
case SH_RequestSoftwareInputPanel:
ret = RSIP_OnMouseClickAndAlreadyFocused;
break;
+ case SH_ScrollBar_Transient:
+ ret = false;
+ break;
default:
ret = 0;
break;
diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp
index 8e52a4b425..4121292cc7 100644
--- a/src/widgets/styles/qfusionstyle.cpp
+++ b/src/widgets/styles/qfusionstyle.cpp
@@ -1417,7 +1417,7 @@ void QFusionStyle::drawControl(ControlElement element, const QStyleOption *optio
QRect leftRect;
QRect rect = bar->rect;
QColor textColor = option->palette.text().color();
- QColor alternateTextColor = option->palette.highlightedText().color();
+ QColor alternateTextColor = d->highlightedText(option->palette);
painter->save();
bool vertical = false, inverted = false;
diff --git a/src/widgets/styles/qfusionstyle_p.h b/src/widgets/styles/qfusionstyle_p.h
index 1c8089e736..affb85bbb1 100644
--- a/src/widgets/styles/qfusionstyle_p.h
+++ b/src/widgets/styles/qfusionstyle_p.h
@@ -55,6 +55,8 @@
#include "qcommonstyle.h"
#include "qcommonstyle_p.h"
+#include <qpa/qplatformtheme.h>
+#include "private/qguiapplication_p.h"
#ifndef QT_NO_STYLE_FUSION
@@ -83,10 +85,32 @@ public:
return QColor(255, 255, 255, 30);
}
+ // On mac we want a standard blue color used when the system palette is used
+ bool isMacSystemPalette(const QPalette &pal) const {
+ Q_UNUSED(pal);
+#ifdef Q_OS_MAC
+ const QPalette *themePalette = QGuiApplicationPrivate::platformTheme()->palette();
+ if (themePalette->color(QPalette::Normal, QPalette::Highlight) ==
+ pal.color(QPalette::Normal, QPalette::Highlight) &&
+ themePalette->color(QPalette::Normal, QPalette::HighlightedText) ==
+ pal.color(QPalette::Normal, QPalette::HighlightedText))
+ return true;
+#endif
+ return false;
+ }
+
QColor highlight(const QPalette &pal) const {
+ if (isMacSystemPalette(pal))
+ return QColor(60, 140, 230);
return pal.color(QPalette::Active, QPalette::Highlight);
}
+ QColor highlightedText(const QPalette &pal) const {
+ if (isMacSystemPalette(pal))
+ return Qt::white;
+ return pal.color(QPalette::Active, QPalette::HighlightedText);
+ }
+
QColor outline(const QPalette &pal) const {
if (!pal.window().texture().isNull())
return QColor(0, 0, 0, 160);
@@ -94,7 +118,7 @@ public:
}
QColor highlightedOutline(const QPalette &pal) const {
- QColor highlightedOutline = pal.highlight().color().darker(125);
+ QColor highlightedOutline = highlight(pal).darker(125);
if (highlightedOutline.value() > 160)
highlightedOutline.setHsl(highlightedOutline.hue(), highlightedOutline.saturation(), 160);
return highlightedOutline;
@@ -109,7 +133,7 @@ public:
QColor buttonColor(const QPalette &pal) const {
QColor buttonColor = pal.button().color();
int val = qGray(buttonColor.rgb());
- buttonColor = buttonColor.lighter(100 + qMax(0, (180- val)/6));
+ buttonColor = buttonColor.lighter(100 + qMax(1, (180 - val)/6));
buttonColor.setHsv(buttonColor.hue(), buttonColor.saturation() * 0.75, buttonColor.value());
return buttonColor;
}
diff --git a/src/widgets/styles/qgtk2painter.cpp b/src/widgets/styles/qgtk2painter.cpp
new file mode 100644
index 0000000000..427041ac76
--- /dev/null
+++ b/src/widgets/styles/qgtk2painter.cpp
@@ -0,0 +1,705 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qgtk2painter_p.h"
+
+#include <QtCore/qglobal.h>
+#if !defined(QT_NO_STYLE_GTK)
+
+// This class is primarily a wrapper around the gtk painter functions
+// and takes care of converting all such calls into cached Qt pixmaps.
+
+#include <private/qgtkstyle_p.h>
+#include <private/qhexstring_p.h>
+#include <QtWidgets/QWidget>
+#include <QtGui/QPixmapCache>
+#include <QtCore/QLibrary>
+
+QT_BEGIN_NAMESPACE
+
+typedef GdkPixbuf* (*Ptr_gdk_pixbuf_get_from_drawable) (GdkPixbuf *, GdkDrawable *, GdkColormap *, int, int, int, int, int, int);
+typedef GdkPixmap* (*Ptr_gdk_pixmap_new) (GdkDrawable *, gint, gint, gint);
+typedef void (*Ptr_gdk_draw_rectangle) (GdkDrawable *, GdkGC *, gboolean, gint, gint, gint, gint);
+typedef void (*Ptr_gdk_drawable_unref)(GdkDrawable *);
+
+typedef void (*Ptr_gtk_paint_check) (GtkStyle *, GdkWindow *, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , gint , gint);
+typedef void (*Ptr_gtk_paint_box) (GtkStyle *, GdkWindow *, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , gint , gint);
+typedef void (*Ptr_gtk_paint_box_gap) (GtkStyle *, GdkWindow *, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint, gint, gint , gint, GtkPositionType, gint, gint);
+typedef void (*Ptr_gtk_paint_resize_grip) (GtkStyle *, GdkWindow *, GtkStateType, const GdkRectangle *, GtkWidget *, const gchar *, GdkWindowEdge, gint , gint , gint , gint);
+typedef void (*Ptr_gtk_paint_focus) (GtkStyle *, GdkWindow *, GtkStateType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , gint , gint);
+typedef void (*Ptr_gtk_paint_shadow) (GtkStyle *, GdkWindow *, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , gint , gint);
+typedef void (*Ptr_gtk_paint_slider) (GtkStyle *, GdkWindow *, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , gint , gint, GtkOrientation);
+typedef void (*Ptr_gtk_paint_expander) (GtkStyle *, GdkWindow *, GtkStateType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , GtkExpanderStyle );
+typedef void (*Ptr_gtk_paint_handle) (GtkStyle *, GdkWindow *, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , gint , gint, GtkOrientation);
+typedef void (*Ptr_gtk_paint_arrow) (GtkStyle *, GdkWindow *, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, GtkArrowType, gboolean, gint , gint , gint , gint);
+typedef void (*Ptr_gtk_paint_option) (GtkStyle *, GdkWindow *, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , gint , gint);
+typedef void (*Ptr_gtk_paint_flat_box) (GtkStyle *, GdkWindow *, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , gint , gint);
+typedef void (*Ptr_gtk_paint_extension) (GtkStyle *, GdkWindow *, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint, gint, gint, gint, GtkPositionType);
+typedef void (*Ptr_gtk_paint_hline) (GtkStyle *, GdkWindow *, GtkStateType, const GdkRectangle *, GtkWidget *, const gchar *, gint, gint, gint y);
+typedef void (*Ptr_gtk_paint_vline) (GtkStyle *, GdkWindow *, GtkStateType, const GdkRectangle *, GtkWidget *, const gchar *, gint, gint, gint);
+
+namespace QGtk2PainterPrivate {
+ static Ptr_gdk_pixmap_new gdk_pixmap_new = 0;
+ static Ptr_gdk_pixbuf_get_from_drawable gdk_pixbuf_get_from_drawable = 0;
+ static Ptr_gdk_draw_rectangle gdk_draw_rectangle = 0;
+ static Ptr_gdk_drawable_unref gdk_drawable_unref = 0;
+
+ static Ptr_gtk_paint_check gtk_paint_check = 0;
+ static Ptr_gtk_paint_box gtk_paint_box = 0;
+ static Ptr_gtk_paint_box_gap gtk_paint_box_gap = 0;
+ static Ptr_gtk_paint_flat_box gtk_paint_flat_box = 0;
+ static Ptr_gtk_paint_option gtk_paint_option = 0;
+ static Ptr_gtk_paint_extension gtk_paint_extension = 0;
+ static Ptr_gtk_paint_slider gtk_paint_slider = 0;
+ static Ptr_gtk_paint_shadow gtk_paint_shadow = 0;
+ static Ptr_gtk_paint_resize_grip gtk_paint_resize_grip = 0;
+ static Ptr_gtk_paint_focus gtk_paint_focus = 0;
+ static Ptr_gtk_paint_arrow gtk_paint_arrow = 0;
+ static Ptr_gtk_paint_handle gtk_paint_handle = 0;
+ static Ptr_gtk_paint_expander gtk_paint_expander = 0;
+ static Ptr_gtk_paint_vline gtk_paint_vline = 0;
+ static Ptr_gtk_paint_hline gtk_paint_hline = 0;
+}
+
+static void initGtk()
+{
+ static bool initialized = false;
+ if (!initialized) {
+ // enforce the "0" suffix, so we'll open libgtk-x11-2.0.so.0
+ QLibrary libgtk(QLS("gtk-x11-2.0"), 0, 0);
+
+ QGtk2PainterPrivate::gdk_pixmap_new = (Ptr_gdk_pixmap_new)libgtk.resolve("gdk_pixmap_new");
+ QGtk2PainterPrivate::gdk_pixbuf_get_from_drawable = (Ptr_gdk_pixbuf_get_from_drawable)libgtk.resolve("gdk_pixbuf_get_from_drawable");
+ QGtk2PainterPrivate::gdk_draw_rectangle = (Ptr_gdk_draw_rectangle)libgtk.resolve("gdk_draw_rectangle");
+ QGtk2PainterPrivate::gdk_drawable_unref = (Ptr_gdk_drawable_unref)libgtk.resolve("gdk_drawable_unref");
+
+ QGtk2PainterPrivate::gtk_paint_check = (Ptr_gtk_paint_check)libgtk.resolve("gtk_paint_check");
+ QGtk2PainterPrivate::gtk_paint_box = (Ptr_gtk_paint_box)libgtk.resolve("gtk_paint_box");
+ QGtk2PainterPrivate::gtk_paint_flat_box = (Ptr_gtk_paint_flat_box)libgtk.resolve("gtk_paint_flat_box");
+ QGtk2PainterPrivate::gtk_paint_check = (Ptr_gtk_paint_check)libgtk.resolve("gtk_paint_check");
+ QGtk2PainterPrivate::gtk_paint_box = (Ptr_gtk_paint_box)libgtk.resolve("gtk_paint_box");
+ QGtk2PainterPrivate::gtk_paint_resize_grip = (Ptr_gtk_paint_resize_grip)libgtk.resolve("gtk_paint_resize_grip");
+ QGtk2PainterPrivate::gtk_paint_focus = (Ptr_gtk_paint_focus)libgtk.resolve("gtk_paint_focus");
+ QGtk2PainterPrivate::gtk_paint_shadow = (Ptr_gtk_paint_shadow)libgtk.resolve("gtk_paint_shadow");
+ QGtk2PainterPrivate::gtk_paint_slider = (Ptr_gtk_paint_slider)libgtk.resolve("gtk_paint_slider");
+ QGtk2PainterPrivate::gtk_paint_expander = (Ptr_gtk_paint_expander)libgtk.resolve("gtk_paint_expander");
+ QGtk2PainterPrivate::gtk_paint_handle = (Ptr_gtk_paint_handle)libgtk.resolve("gtk_paint_handle");
+ QGtk2PainterPrivate::gtk_paint_option = (Ptr_gtk_paint_option)libgtk.resolve("gtk_paint_option");
+ QGtk2PainterPrivate::gtk_paint_arrow = (Ptr_gtk_paint_arrow)libgtk.resolve("gtk_paint_arrow");
+ QGtk2PainterPrivate::gtk_paint_box_gap = (Ptr_gtk_paint_box_gap)libgtk.resolve("gtk_paint_box_gap");
+ QGtk2PainterPrivate::gtk_paint_extension = (Ptr_gtk_paint_extension)libgtk.resolve("gtk_paint_extension");
+ QGtk2PainterPrivate::gtk_paint_hline = (Ptr_gtk_paint_hline)libgtk.resolve("gtk_paint_hline");
+ QGtk2PainterPrivate::gtk_paint_vline = (Ptr_gtk_paint_vline)libgtk.resolve("gtk_paint_vline");
+
+ initialized = true;
+ }
+}
+
+// To recover alpha we apply the gtk painting function two times to
+// white, and black window backgrounds. This can be used to
+// recover the premultiplied alpha channel
+QPixmap QGtk2Painter::renderTheme(uchar *bdata, uchar *wdata, const QRect &rect) const
+{
+ const int bytecount = rect.width() * rect.height() * 4;
+ for (int index = 0; index < bytecount ; index += 4) {
+ uchar val = bdata[index + GTK_BLUE];
+ if (m_alpha) {
+ int alphaval = qMax(bdata[index + GTK_BLUE] - wdata[index + GTK_BLUE],
+ bdata[index + GTK_GREEN] - wdata[index + GTK_GREEN]);
+ alphaval = qMax(alphaval, bdata[index + GTK_RED] - wdata[index + GTK_RED]) + 255;
+ bdata[index + QT_ALPHA] = alphaval;
+ }
+ bdata[index + QT_RED] = bdata[index + GTK_RED];
+ bdata[index + QT_GREEN] = bdata[index + GTK_GREEN];
+ bdata[index + QT_BLUE] = val;
+ }
+ QImage converted((const uchar*)bdata, rect.width(), rect.height(), m_alpha ?
+ QImage::Format_ARGB32_Premultiplied : QImage::Format_RGB32);
+
+ if (m_hflipped || m_vflipped) {
+ return QPixmap::fromImage(converted.mirrored(m_hflipped, m_vflipped));
+ } else {
+ // on raster graphicssystem we need to do a copy here, because
+ // we intend to deallocate the qimage bits shortly after...
+ return QPixmap::fromImage(converted.copy());
+ }
+}
+
+// This macro is responsible for painting any GtkStyle painting function onto a QPixmap
+#define DRAW_TO_CACHE(draw_func) \
+ if (rect.width() > QWIDGETSIZE_MAX || rect.height() > QWIDGETSIZE_MAX) \
+ return; \
+ QRect pixmapRect(0, 0, rect.width(), rect.height()); \
+ { \
+ GdkPixmap *pixmap = QGtk2PainterPrivate::gdk_pixmap_new((GdkDrawable*)(m_window->window), \
+ rect.width(), rect.height(), -1); \
+ if (!pixmap) \
+ return; \
+ style = QGtkStylePrivate::gtk_style_attach (style, m_window->window); \
+ QGtk2PainterPrivate::gdk_draw_rectangle(pixmap, m_alpha ? style->black_gc : *style->bg_gc, \
+ true, 0, 0, rect.width(), rect.height()); \
+ draw_func; \
+ GdkPixbuf *imgb = QGtkStylePrivate::gdk_pixbuf_new(GDK_COLORSPACE_RGB, true, 8, \
+ rect.width(), rect.height()); \
+ if (!imgb) \
+ return; \
+ imgb = QGtk2PainterPrivate::gdk_pixbuf_get_from_drawable(imgb, pixmap, NULL, 0, 0, 0, 0, \
+ rect.width(), rect.height()); \
+ uchar* bdata = (uchar*)QGtkStylePrivate::gdk_pixbuf_get_pixels(imgb); \
+ if (m_alpha) { \
+ QGtk2PainterPrivate::gdk_draw_rectangle(pixmap, style->white_gc, true, 0, 0, \
+ rect.width(), rect.height()); \
+ draw_func; \
+ GdkPixbuf *imgw = QGtkStylePrivate::gdk_pixbuf_new(GDK_COLORSPACE_RGB, true, 8, \
+ rect.width(), rect.height()); \
+ if (!imgw) \
+ return; \
+ imgw = QGtk2PainterPrivate::gdk_pixbuf_get_from_drawable(imgw, pixmap, NULL, 0, 0, 0, 0,\
+ rect.width(), rect.height()); \
+ uchar* wdata = (uchar*)QGtkStylePrivate::gdk_pixbuf_get_pixels(imgw); \
+ cache = renderTheme(bdata, wdata, rect); \
+ QGtkStylePrivate::gdk_pixbuf_unref(imgw); \
+ } else { \
+ cache = renderTheme(bdata, 0, rect); \
+ } \
+ QGtk2PainterPrivate::gdk_drawable_unref(pixmap); \
+ QGtkStylePrivate::gdk_pixbuf_unref(imgb); \
+ }
+
+QGtk2Painter::QGtk2Painter() : QGtkPainter(), m_window(QGtkStylePrivate::gtkWidget("GtkWindow"))
+{
+ initGtk();
+}
+
+// Note currently painted without alpha for performance reasons
+void QGtk2Painter::paintBoxGap(GtkWidget *gtkWidget, const gchar* part,
+ const QRect &paintRect, GtkStateType state,
+ GtkShadowType shadow, GtkPositionType gap_side,
+ gint x, gint width,
+ GtkStyle *style)
+{
+ if (!paintRect.isValid())
+ return;
+
+ QPixmap cache;
+ QRect rect = paintRect;
+
+ // To avoid exhausting cache on large tabframes we cheat a bit by
+ // tiling the center part.
+
+ const int maxHeight = 256;
+ const int border = 16;
+ if (rect.height() > maxHeight && (gap_side == GTK_POS_TOP || gap_side == GTK_POS_BOTTOM))
+ rect.setHeight(2 * border + 1);
+
+ QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size(), gtkWidget)
+ % HexString<uchar>(gap_side)
+ % HexString<gint>(width)
+ % HexString<gint>(x);
+
+ if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
+ DRAW_TO_CACHE(QGtk2PainterPrivate::gtk_paint_box_gap (style,
+ pixmap,
+ state,
+ shadow,
+ NULL,
+ gtkWidget,
+ (gchar*)part,
+ 0, 0,
+ rect.width(),
+ rect.height(),
+ gap_side,
+ x,
+ width));
+ if (m_usePixmapCache)
+ QPixmapCache::insert(pixmapName, cache);
+ }
+ if (rect.size() != paintRect.size()) {
+ // We assume we can stretch the middle tab part
+ // Note: the side effect of this is that pinstripe patterns will get fuzzy
+ const QSize size = cache.size();
+ // top part
+ m_painter->drawPixmap(QRect(paintRect.left(), paintRect.top(),
+ paintRect.width(), border), cache,
+ QRect(0, 0, size.width(), border));
+
+ // tiled center part
+ QPixmap tilePart(cache.width(), 1);
+ QPainter scanLinePainter(&tilePart);
+ scanLinePainter.drawPixmap(QRect(0, 0, tilePart.width(), tilePart.height()), cache, QRect(0, border, size.width(), 1));
+ scanLinePainter.end();
+ m_painter->drawTiledPixmap(QRect(paintRect.left(), paintRect.top() + border,
+ paintRect.width(), paintRect.height() - 2*border), tilePart);
+
+ // bottom part
+ m_painter->drawPixmap(QRect(paintRect.left(), paintRect.top() + paintRect.height() - border,
+ paintRect.width(), border), cache,
+ QRect(0, size.height() - border, size.width(), border));
+ } else
+ m_painter->drawPixmap(paintRect.topLeft(), cache);
+}
+
+void QGtk2Painter::paintBox(GtkWidget *gtkWidget, const gchar* part,
+ const QRect &paintRect, GtkStateType state,
+ GtkShadowType shadow, GtkStyle *style,
+ const QString &pmKey)
+{
+ if (!paintRect.isValid())
+ return;
+
+ QPixmap cache;
+ QRect rect = paintRect;
+
+ // To avoid exhausting cache on large tabframes we cheat a bit by
+ // tiling the center part.
+
+ const int maxHeight = 256;
+ const int maxArea = 256*512;
+ const int border = 32;
+ if (rect.height() > maxHeight && (rect.width()*rect.height() > maxArea))
+ rect.setHeight(2 * border + 1);
+
+ QString pixmapName = uniqueName(QLS(part), state, shadow,
+ rect.size(), gtkWidget) % pmKey;
+
+ if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
+ DRAW_TO_CACHE(QGtk2PainterPrivate::gtk_paint_box (style,
+ pixmap,
+ state,
+ shadow,
+ NULL,
+ gtkWidget,
+ part,
+ 0, 0,
+ rect.width(),
+ rect.height()));
+ if (m_usePixmapCache)
+ QPixmapCache::insert(pixmapName, cache);
+ }
+ if (rect.size() != paintRect.size()) {
+ // We assume we can stretch the middle tab part
+ // Note: the side effect of this is that pinstripe patterns will get fuzzy
+ const QSize size = cache.size();
+ // top part
+ m_painter->drawPixmap(QRect(paintRect.left(), paintRect.top(),
+ paintRect.width(), border), cache,
+ QRect(0, 0, size.width(), border));
+
+ // tiled center part
+ QPixmap tilePart(cache.width(), 1);
+ QPainter scanLinePainter(&tilePart);
+ scanLinePainter.drawPixmap(QRect(0, 0, tilePart.width(), tilePart.height()), cache, QRect(0, border, size.width(), 1));
+ scanLinePainter.end();
+ m_painter->drawTiledPixmap(QRect(paintRect.left(), paintRect.top() + border,
+ paintRect.width(), paintRect.height() - 2*border), tilePart);
+
+ // bottom part
+ m_painter->drawPixmap(QRect(paintRect.left(), paintRect.top() + paintRect.height() - border,
+ paintRect.width(), border), cache,
+ QRect(0, size.height() - border, size.width(), border));
+ } else
+ m_painter->drawPixmap(paintRect.topLeft(), cache);
+}
+
+void QGtk2Painter::paintHline(GtkWidget *gtkWidget, const gchar* part,
+ const QRect &rect, GtkStateType state,
+ GtkStyle *style, int x1, int x2, int y,
+ const QString &pmKey)
+{
+ if (!rect.isValid())
+ return;
+
+ QPixmap cache;
+ QString pixmapName = uniqueName(QLS(part), state, GTK_SHADOW_NONE, rect.size(), gtkWidget)
+ % HexString<int>(x1)
+ % HexString<int>(x2)
+ % HexString<int>(y)
+ % pmKey;
+ if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
+ DRAW_TO_CACHE(QGtk2PainterPrivate::gtk_paint_hline (style,
+ pixmap,
+ state,
+ NULL,
+ gtkWidget,
+ part,
+ x1, x2, y));
+ if (m_usePixmapCache)
+ QPixmapCache::insert(pixmapName, cache);
+ }
+
+ m_painter->drawPixmap(rect.topLeft(), cache);
+}
+
+void QGtk2Painter::paintVline(GtkWidget *gtkWidget, const gchar* part,
+ const QRect &rect, GtkStateType state,
+ GtkStyle *style, int y1, int y2, int x,
+ const QString &pmKey)
+{
+ if (!rect.isValid())
+ return;
+
+ QPixmap cache;
+ QString pixmapName = uniqueName(QLS(part), state, GTK_SHADOW_NONE, rect.size(), gtkWidget)
+ % HexString<int>(y1)
+ % HexString<int>(y2)
+ % HexString<int>(x)
+ % pmKey;
+
+ if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
+ DRAW_TO_CACHE(QGtk2PainterPrivate::gtk_paint_vline (style,
+ pixmap,
+ state,
+ NULL,
+ gtkWidget,
+ part,
+ y1, y2,
+ x));
+ if (m_usePixmapCache)
+ QPixmapCache::insert(pixmapName, cache);
+ }
+ m_painter->drawPixmap(rect.topLeft(), cache);
+}
+
+
+void QGtk2Painter::paintExpander(GtkWidget *gtkWidget,
+ const gchar* part, const QRect &rect,
+ GtkStateType state, GtkExpanderStyle expander_state,
+ GtkStyle *style, const QString &pmKey)
+{
+ if (!rect.isValid())
+ return;
+
+ QPixmap cache;
+ QString pixmapName = uniqueName(QLS(part), state, GTK_SHADOW_NONE, rect.size(), gtkWidget)
+ % HexString<uchar>(expander_state)
+ % pmKey;
+
+ if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
+ DRAW_TO_CACHE(QGtk2PainterPrivate::gtk_paint_expander (style, pixmap,
+ state, NULL,
+ gtkWidget, part,
+ rect.width()/2,
+ rect.height()/2,
+ expander_state));
+ if (m_usePixmapCache)
+ QPixmapCache::insert(pixmapName, cache);
+ }
+
+ m_painter->drawPixmap(rect.topLeft(), cache);
+}
+
+void QGtk2Painter::paintFocus(GtkWidget *gtkWidget, const gchar* part,
+ const QRect &rect, GtkStateType state,
+ GtkStyle *style, const QString &pmKey)
+{
+ if (!rect.isValid())
+ return;
+
+ QPixmap cache;
+ QString pixmapName = uniqueName(QLS(part), state, GTK_SHADOW_NONE, rect.size(), gtkWidget) % pmKey;
+ if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
+ DRAW_TO_CACHE(QGtk2PainterPrivate::gtk_paint_focus (style, pixmap, state, NULL,
+ gtkWidget,
+ part,
+ 0, 0,
+ rect.width(),
+ rect.height()));
+ if (m_usePixmapCache)
+ QPixmapCache::insert(pixmapName, cache);
+ }
+
+ m_painter->drawPixmap(rect.topLeft(), cache);
+}
+
+
+void QGtk2Painter::paintResizeGrip(GtkWidget *gtkWidget, const gchar* part,
+ const QRect &rect, GtkStateType state,
+ GtkShadowType shadow, GdkWindowEdge edge,
+ GtkStyle *style, const QString &pmKey)
+{
+ if (!rect.isValid())
+ return;
+
+ QPixmap cache;
+ QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size(), gtkWidget) % pmKey;
+ if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
+ DRAW_TO_CACHE(QGtk2PainterPrivate::gtk_paint_resize_grip (style, pixmap, state,
+ NULL, gtkWidget,
+ part, edge, 0, 0,
+ rect.width(),
+ rect.height()));
+ if (m_usePixmapCache)
+ QPixmapCache::insert(pixmapName, cache);
+ }
+
+ m_painter->drawPixmap(rect.topLeft(), cache);
+}
+
+
+void QGtk2Painter::paintArrow(GtkWidget *gtkWidget, const gchar* part,
+ const QRect &arrowrect, GtkArrowType arrow_type,
+ GtkStateType state, GtkShadowType shadow,
+ gboolean fill, GtkStyle *style, const QString &pmKey)
+{
+ QRect rect = m_cliprect.isValid() ? m_cliprect : arrowrect;
+ if (!rect.isValid())
+ return;
+
+ QPixmap cache;
+ QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size())
+ % HexString<uchar>(arrow_type)
+ % pmKey;
+
+ GdkRectangle gtkCliprect = {0, 0, rect.width(), rect.height()};
+ int xOffset = m_cliprect.isValid() ? arrowrect.x() - m_cliprect.x() : 0;
+ int yOffset = m_cliprect.isValid() ? arrowrect.y() - m_cliprect.y() : 0;
+ if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
+ DRAW_TO_CACHE(QGtk2PainterPrivate::gtk_paint_arrow (style, pixmap, state, shadow,
+ &gtkCliprect,
+ gtkWidget,
+ part,
+ arrow_type, fill,
+ xOffset, yOffset,
+ arrowrect.width(),
+ arrowrect.height()))
+ if (m_usePixmapCache)
+ QPixmapCache::insert(pixmapName, cache);
+ }
+
+ m_painter->drawPixmap(rect.topLeft(), cache);
+}
+
+
+void QGtk2Painter::paintHandle(GtkWidget *gtkWidget, const gchar* part, const QRect &rect,
+ GtkStateType state, GtkShadowType shadow,
+ GtkOrientation orientation, GtkStyle *style)
+{
+ if (!rect.isValid())
+ return;
+
+ QPixmap cache;
+ QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size())
+ % HexString<uchar>(orientation);
+
+ if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
+ DRAW_TO_CACHE(QGtk2PainterPrivate::gtk_paint_handle (style,
+ pixmap,
+ state,
+ shadow,
+ NULL,
+ gtkWidget,
+ part, 0, 0,
+ rect.width(),
+ rect.height(),
+ orientation));
+ if (m_usePixmapCache)
+ QPixmapCache::insert(pixmapName, cache);
+ }
+ m_painter->drawPixmap(rect.topLeft(), cache);
+}
+
+
+void QGtk2Painter::paintSlider(GtkWidget *gtkWidget, const gchar* part, const QRect &rect,
+ GtkStateType state, GtkShadowType shadow,
+ GtkStyle *style, GtkOrientation orientation,
+ const QString &pmKey)
+{
+ if (!rect.isValid())
+ return;
+
+ QPixmap cache;
+ QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size(), gtkWidget) % pmKey;
+ if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
+ DRAW_TO_CACHE(QGtk2PainterPrivate::gtk_paint_slider (style,
+ pixmap,
+ state,
+ shadow,
+ NULL,
+ gtkWidget,
+ part,
+ 0, 0,
+ rect.width(),
+ rect.height(),
+ orientation));
+ if (m_usePixmapCache)
+ QPixmapCache::insert(pixmapName, cache);
+ }
+ m_painter->drawPixmap(rect.topLeft(), cache);
+}
+
+
+void QGtk2Painter::paintShadow(GtkWidget *gtkWidget, const gchar* part,
+ const QRect &rect, GtkStateType state,
+ GtkShadowType shadow, GtkStyle *style,
+ const QString &pmKey)
+
+{
+ if (!rect.isValid())
+ return;
+
+ QPixmap cache;
+ QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size()) % pmKey;
+ if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
+ DRAW_TO_CACHE(QGtk2PainterPrivate::gtk_paint_shadow(style, pixmap, state, shadow, NULL,
+ gtkWidget, part, 0, 0, rect.width(), rect.height()));
+ if (m_usePixmapCache)
+ QPixmapCache::insert(pixmapName, cache);
+ }
+ m_painter->drawPixmap(rect.topLeft(), cache);
+}
+
+void QGtk2Painter::paintFlatBox(GtkWidget *gtkWidget, const gchar* part,
+ const QRect &rect, GtkStateType state,
+ GtkShadowType shadow, GtkStyle *style,
+ const QString &pmKey)
+{
+ if (!rect.isValid())
+ return;
+ QPixmap cache;
+ QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size()) % pmKey;
+ if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
+ DRAW_TO_CACHE(QGtk2PainterPrivate::gtk_paint_flat_box (style,
+ pixmap,
+ state,
+ shadow,
+ NULL,
+ gtkWidget,
+ part, 0, 0,
+ rect.width(),
+ rect.height()));
+ if (m_usePixmapCache)
+ QPixmapCache::insert(pixmapName, cache);
+ }
+ m_painter->drawPixmap(rect.topLeft(), cache);
+}
+
+void QGtk2Painter::paintExtention(GtkWidget *gtkWidget,
+ const gchar *part, const QRect &rect,
+ GtkStateType state, GtkShadowType shadow,
+ GtkPositionType gap_pos, GtkStyle *style)
+{
+ if (!rect.isValid())
+ return;
+
+ QPixmap cache;
+ QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size(), gtkWidget)
+ % HexString<uchar>(gap_pos);
+
+ if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
+ DRAW_TO_CACHE(QGtk2PainterPrivate::gtk_paint_extension (style, pixmap, state, shadow,
+ NULL, gtkWidget,
+ (gchar*)part, 0, 0,
+ rect.width(),
+ rect.height(),
+ gap_pos));
+ if (m_usePixmapCache)
+ QPixmapCache::insert(pixmapName, cache);
+ }
+
+ m_painter->drawPixmap(rect.topLeft(), cache);
+}
+
+void QGtk2Painter::paintOption(GtkWidget *gtkWidget, const QRect &radiorect,
+ GtkStateType state, GtkShadowType shadow,
+ GtkStyle *style, const QString &detail)
+
+{
+ QRect rect = m_cliprect.isValid() ? m_cliprect : radiorect;
+ if (!rect.isValid())
+ return;
+
+ QPixmap cache;
+ QString pixmapName = uniqueName(detail, state, shadow, rect.size());
+ GdkRectangle gtkCliprect = {0, 0, rect.width(), rect.height()};
+ int xOffset = m_cliprect.isValid() ? radiorect.x() - m_cliprect.x() : 0;
+ int yOffset = m_cliprect.isValid() ? radiorect.y() - m_cliprect.y() : 0;
+ if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
+ DRAW_TO_CACHE(QGtk2PainterPrivate::gtk_paint_option(style, pixmap,
+ state, shadow,
+ &gtkCliprect,
+ gtkWidget,
+ detail.toLatin1(),
+ xOffset, yOffset,
+ radiorect.width(),
+ radiorect.height()));
+
+ if (m_usePixmapCache)
+ QPixmapCache::insert(pixmapName, cache);
+ }
+
+ m_painter->drawPixmap(rect.topLeft(), cache);
+}
+
+void QGtk2Painter::paintCheckbox(GtkWidget *gtkWidget, const QRect &checkrect,
+ GtkStateType state, GtkShadowType shadow,
+ GtkStyle *style, const QString &detail)
+
+{
+ QRect rect = m_cliprect.isValid() ? m_cliprect : checkrect;
+ if (!rect.isValid())
+ return;
+
+ QPixmap cache;
+ QString pixmapName = uniqueName(detail, state, shadow, rect.size());
+ GdkRectangle gtkCliprect = {0, 0, rect.width(), rect.height()};
+ int xOffset = m_cliprect.isValid() ? checkrect.x() - m_cliprect.x() : 0;
+ int yOffset = m_cliprect.isValid() ? checkrect.y() - m_cliprect.y() : 0;
+ if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
+ DRAW_TO_CACHE(QGtk2PainterPrivate::gtk_paint_check (style,
+ pixmap,
+ state,
+ shadow,
+ &gtkCliprect,
+ gtkWidget,
+ detail.toLatin1(),
+ xOffset, yOffset,
+ checkrect.width(),
+ checkrect.height()));
+ if (m_usePixmapCache)
+ QPixmapCache::insert(pixmapName, cache);
+ }
+
+ m_painter->drawPixmap(rect.topLeft(), cache);
+}
+
+QT_END_NAMESPACE
+
+#endif //!defined(QT_NO_STYLE_GTK)
diff --git a/src/widgets/styles/qgtk2painter_p.h b/src/widgets/styles/qgtk2painter_p.h
new file mode 100644
index 0000000000..cbb49bf89d
--- /dev/null
+++ b/src/widgets/styles/qgtk2painter_p.h
@@ -0,0 +1,108 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QGTK2PAINTER_P_H
+#define QGTK2PAINTER_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtCore/qglobal.h>
+#if !defined(QT_NO_STYLE_GTK)
+
+#include <private/qgtkpainter_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class QGtk2Painter : public QGtkPainter
+{
+public:
+ QGtk2Painter();
+
+ void paintBoxGap(GtkWidget *gtkWidget, const gchar* part, const QRect &rect,
+ GtkStateType state, GtkShadowType shadow, GtkPositionType gap_side, gint x,
+ gint width, GtkStyle *style);
+ void paintBox(GtkWidget *gtkWidget, const gchar* part,
+ const QRect &rect, GtkStateType state, GtkShadowType shadow, GtkStyle *style,
+ const QString &pmKey = QString());
+ void paintHline(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkStyle *style,
+ int x1, int x2, int y, const QString &pmKey = QString());
+ void paintVline(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkStyle *style,
+ int y1, int y2, int x, const QString &pmKey = QString());
+ void paintExpander(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state,
+ GtkExpanderStyle expander_state, GtkStyle *style, const QString &pmKey = QString());
+ void paintFocus(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkStyle *style,
+ const QString &pmKey = QString());
+ void paintResizeGrip(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkShadowType shadow,
+ GdkWindowEdge edge, GtkStyle *style, const QString &pmKey = QString());
+ void paintArrow(GtkWidget *gtkWidget, const gchar* part, const QRect &arrowrect, GtkArrowType arrow_type, GtkStateType state, GtkShadowType shadow,
+ gboolean fill, GtkStyle *style, const QString &pmKey = QString());
+ void paintHandle(GtkWidget *gtkWidget, const gchar* part, const QRect &rect,
+ GtkStateType state, GtkShadowType shadow, GtkOrientation orientation, GtkStyle *style);
+ void paintSlider(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkShadowType shadow,
+ GtkStyle *style, GtkOrientation orientation, const QString &pmKey = QString());
+ void paintShadow(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkShadowType shadow,
+ GtkStyle *style, const QString &pmKey = QString());
+ void paintFlatBox(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkShadowType shadow, GtkStyle *style, const QString & = QString());
+ void paintExtention(GtkWidget *gtkWidget, const gchar *part, const QRect &rect, GtkStateType state, GtkShadowType shadow,
+ GtkPositionType gap_pos, GtkStyle *style);
+ void paintOption(GtkWidget *gtkWidget, const QRect &rect, GtkStateType state, GtkShadowType shadow, GtkStyle *style, const QString &detail);
+ void paintCheckbox(GtkWidget *gtkWidget, const QRect &rect, GtkStateType state, GtkShadowType shadow, GtkStyle *style, const QString &detail);
+
+private:
+ QPixmap renderTheme(uchar *bdata, uchar *wdata, const QRect &rect) const;
+
+ GtkWidget *m_window;
+};
+
+QT_END_NAMESPACE
+
+#endif //!defined(QT_NO_STYLE_QGTK)
+
+#endif // QGTK2PAINTER_P_H
diff --git a/src/widgets/styles/qgtkglobal_p.h b/src/widgets/styles/qgtkglobal_p.h
new file mode 100644
index 0000000000..6f693ec22d
--- /dev/null
+++ b/src/widgets/styles/qgtkglobal_p.h
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QGTKGLOBAL_P_H
+#define QGTKGLOBAL_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtCore/qglobal.h>
+#if !defined(QT_NO_STYLE_GTK)
+
+#undef signals // Collides with GTK symbols
+#include <gtk/gtk.h>
+
+typedef unsigned long XID;
+
+#undef GTK_OBJECT_FLAGS
+#define GTK_OBJECT_FLAGS(obj)(((GtkObject*)(obj))->flags)
+
+#define QLS(x) QLatin1String(x)
+
+QT_BEGIN_NAMESPACE
+
+#if Q_BYTE_ORDER == Q_BIG_ENDIAN
+# define QT_RED 3
+# define QT_GREEN 2
+# define QT_BLUE 1
+# define QT_ALPHA 0
+#else
+# define QT_RED 0
+# define QT_GREEN 1
+# define QT_BLUE 2
+# define QT_ALPHA 3
+#endif
+# define GTK_RED 2
+# define GTK_GREEN 1
+# define GTK_BLUE 0
+# define GTK_ALPHA 3
+
+QT_END_NAMESPACE
+
+#endif // !QT_NO_STYLE_GTK
+#endif // QGTKGLOBAL_P_H
diff --git a/src/widgets/styles/qgtkpainter.cpp b/src/widgets/styles/qgtkpainter.cpp
index 55430a72e7..a5c408f20d 100644
--- a/src/widgets/styles/qgtkpainter.cpp
+++ b/src/widgets/styles/qgtkpainter.cpp
@@ -41,119 +41,32 @@
#include "qgtkpainter_p.h"
-#include <QtCore/qglobal.h>
#if !defined(QT_NO_STYLE_GTK)
-// This class is primarily a wrapper around the gtk painter functions
-// and takes care of converting all such calls into cached Qt pixmaps.
-
-#include <private/qstylehelper_p.h>
-#include <QtWidgets/QWidget>
-#include <QtWidgets/QStyleOption>
-#include <QtGui/QPixmapCache>
+#include <private/qhexstring_p.h>
QT_BEGIN_NAMESPACE
-#undef GTK_OBJECT_FLAGS
-#define GTK_OBJECT_FLAGS(obj)(((GtkObject*)(obj))->flags)
-
-#if Q_BYTE_ORDER == Q_BIG_ENDIAN
-# define QT_RED 3
-# define QT_GREEN 2
-# define QT_BLUE 1
-# define QT_ALPHA 0
-#else
-# define QT_RED 0
-# define QT_GREEN 1
-# define QT_BLUE 2
-# define QT_ALPHA 3
-#endif
-# define GTK_RED 2
-# define GTK_GREEN 1
-# define GTK_BLUE 0
-# define GTK_ALPHA 3
-
-// To recover alpha we apply the gtk painting function two times to
-// white, and black window backgrounds. This can be used to
-// recover the premultiplied alpha channel
-QPixmap QGtkPainter::renderTheme(uchar *bdata, uchar *wdata, const QRect &rect)
+QGtkPainter::QGtkPainter()
{
- const int bytecount = rect.width() * rect.height() * 4;
- for (int index = 0; index < bytecount ; index += 4) {
- uchar val = bdata[index + GTK_BLUE];
- if (m_alpha) {
- int alphaval = qMax(bdata[index + GTK_BLUE] - wdata[index + GTK_BLUE],
- bdata[index + GTK_GREEN] - wdata[index + GTK_GREEN]);
- alphaval = qMax(alphaval, bdata[index + GTK_RED] - wdata[index + GTK_RED]) + 255;
- bdata[index + QT_ALPHA] = alphaval;
- }
- bdata[index + QT_RED] = bdata[index + GTK_RED];
- bdata[index + QT_GREEN] = bdata[index + GTK_GREEN];
- bdata[index + QT_BLUE] = val;
- }
- QImage converted((const uchar*)bdata, rect.width(), rect.height(), m_alpha ?
- QImage::Format_ARGB32_Premultiplied : QImage::Format_RGB32);
-
- if (m_hflipped || m_vflipped) {
- return QPixmap::fromImage(converted.mirrored(m_hflipped, m_vflipped));
- } else {
- // on raster graphicssystem we need to do a copy here, because
- // we intend to deallocate the qimage bits shortly after...
- return QPixmap::fromImage(converted.copy());
- }
+ reset(0);
}
-// This macro is responsible for painting any GtkStyle painting function onto a QPixmap
-#define DRAW_TO_CACHE(draw_func) \
- if (rect.width() > QWIDGETSIZE_MAX || rect.height() > QWIDGETSIZE_MAX) \
- return; \
- QRect pixmapRect(0, 0, rect.width(), rect.height()); \
- { \
- GdkPixmap *pixmap = QGtkStylePrivate::gdk_pixmap_new((GdkDrawable*)(m_window->window), \
- rect.width(), rect.height(), -1); \
- if (!pixmap) \
- return; \
- style = QGtkStylePrivate::gtk_style_attach (style, m_window->window); \
- QGtkStylePrivate::gdk_draw_rectangle(pixmap, m_alpha ? style->black_gc : *style->bg_gc, true, \
- 0, 0, rect.width(), rect.height()); \
- draw_func; \
- GdkPixbuf *imgb = QGtkStylePrivate::gdk_pixbuf_new(GDK_COLORSPACE_RGB, true, 8, rect.width(), rect.height());\
- if (!imgb) \
- return; \
- imgb = QGtkStylePrivate::gdk_pixbuf_get_from_drawable(imgb, pixmap, NULL, 0, 0, 0, 0, \
- rect.width(), rect.height()); \
- uchar* bdata = (uchar*)QGtkStylePrivate::gdk_pixbuf_get_pixels(imgb); \
- if (m_alpha) { \
- QGtkStylePrivate::gdk_draw_rectangle(pixmap, style->white_gc, true, 0, 0, rect.width(), rect.height()); \
- draw_func; \
- GdkPixbuf *imgw = QGtkStylePrivate::gdk_pixbuf_new(GDK_COLORSPACE_RGB, true, 8, rect. \
- width(), rect.height()); \
- if (!imgw) \
- return; \
- imgw = QGtkStylePrivate::gdk_pixbuf_get_from_drawable(imgw, pixmap, NULL, 0, 0, 0, 0, \
- rect.width(), rect.height()); \
- uchar* wdata = (uchar*)QGtkStylePrivate::gdk_pixbuf_get_pixels(imgw); \
- cache = renderTheme(bdata, wdata, rect); \
- QGtkStylePrivate::gdk_pixbuf_unref(imgw); \
- } else { \
- cache = renderTheme(bdata, 0, rect); \
- } \
- QGtkStylePrivate::gdk_drawable_unref(pixmap); \
- QGtkStylePrivate::gdk_pixbuf_unref(imgb); \
- }
-
-QGtkPainter::QGtkPainter(QPainter *_painter)
- : m_window(QGtkStylePrivate::gtkWidget("GtkWindow"))
- , m_painter(_painter)
- , m_alpha(true)
- , m_hflipped(false)
- , m_vflipped(false)
- , m_usePixmapCache(true)
-{}
+QGtkPainter::~QGtkPainter()
+{
+}
+void QGtkPainter::reset(QPainter *painter)
+{
+ m_painter = painter;
+ m_alpha = true;
+ m_hflipped = false;
+ m_vflipped = false;
+ m_usePixmapCache = true;
+}
-static QString uniqueName(const QString &key, GtkStateType state, GtkShadowType shadow,
- const QSize &size, GtkWidget *widget = 0)
+QString QGtkPainter::uniqueName(const QString &key, GtkStateType state, GtkShadowType shadow,
+ const QSize &size, GtkWidget *widget)
{
// Note the widget arg should ideally use the widget path, though would compromise performance
QString tmp = key
@@ -165,552 +78,6 @@ static QString uniqueName(const QString &key, GtkStateType state, GtkShadowType
return tmp;
}
-
-GtkStateType QGtkPainter::gtkState(const QStyleOption *option)
-
-{
- GtkStateType state = GTK_STATE_NORMAL;
- if (!(option->state & QStyle::State_Enabled))
- state = GTK_STATE_INSENSITIVE;
- else if (option->state & QStyle::State_MouseOver)
- state = GTK_STATE_PRELIGHT;
-
- return state;
-}
-
-
-GtkStyle* QGtkPainter::getStyle(GtkWidget *gtkWidget)
-
-{
- Q_ASSERT(gtkWidget);
- GtkStyle* style = gtkWidget->style;
- Q_ASSERT(style);
- return style;
-}
-
-QPixmap QGtkPainter::getIcon(const char* iconName, GtkIconSize size)
-{
- GtkStyle *style = QGtkStylePrivate::gtkStyle();
- GtkIconSet* iconSet = QGtkStylePrivate::gtk_icon_factory_lookup_default (iconName);
- GdkPixbuf* icon = QGtkStylePrivate::gtk_icon_set_render_icon(iconSet,
- style,
- GTK_TEXT_DIR_LTR,
- GTK_STATE_NORMAL,
- size,
- NULL,
- "button");
- uchar* data = (uchar*)QGtkStylePrivate::gdk_pixbuf_get_pixels(icon);
- int width = QGtkStylePrivate::gdk_pixbuf_get_width(icon);
- int height = QGtkStylePrivate::gdk_pixbuf_get_height(icon);
- QImage converted(width, height, QImage::Format_ARGB32);
- uchar* tdata = (uchar*)converted.bits();
-
- for ( int index = 0 ; index < height * width*4 ; index +=4 ) {
- //int index = y * rowstride + x;
- tdata[index + QT_RED] = data[index + GTK_RED];
- tdata[index + QT_GREEN] = data[index + GTK_GREEN];
- tdata[index + QT_BLUE] = data[index + GTK_BLUE];
- tdata[index + QT_ALPHA] = data[index + GTK_ALPHA];
- }
-
- QGtkStylePrivate::gdk_pixbuf_unref(icon);
-
- // should we free iconset?
- return QPixmap::fromImage(converted);
-
-}
-
-// Note currently painted without alpha for performance reasons
-void QGtkPainter::paintBoxGap(GtkWidget *gtkWidget, const gchar* part,
- const QRect &paintRect, GtkStateType state,
- GtkShadowType shadow, GtkPositionType gap_side,
- gint x, gint width,
- GtkStyle *style)
-{
- if (!paintRect.isValid())
- return;
-
- QPixmap cache;
- QRect rect = paintRect;
-
- // To avoid exhausting cache on large tabframes we cheat a bit by
- // tiling the center part.
-
- const int maxHeight = 256;
- const int border = 16;
- if (rect.height() > maxHeight && (gap_side == GTK_POS_TOP || gap_side == GTK_POS_BOTTOM))
- rect.setHeight(2 * border + 1);
-
- QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size(), gtkWidget)
- % HexString<uchar>(gap_side)
- % HexString<gint>(width)
- % HexString<gint>(x);
-
- if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
- DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_box_gap (style,
- pixmap,
- state,
- shadow,
- NULL,
- gtkWidget,
- (gchar*)part,
- 0, 0,
- rect.width(),
- rect.height(),
- gap_side,
- x,
- width));
- if (m_usePixmapCache)
- QPixmapCache::insert(pixmapName, cache);
- }
- if (rect.size() != paintRect.size()) {
- // We assume we can stretch the middle tab part
- // Note: the side effect of this is that pinstripe patterns will get fuzzy
- const QSize size = cache.size();
- // top part
- m_painter->drawPixmap(QRect(paintRect.left(), paintRect.top(),
- paintRect.width(), border), cache,
- QRect(0, 0, size.width(), border));
-
- // tiled center part
- QPixmap tilePart(cache.width(), 1);
- QPainter scanLinePainter(&tilePart);
- scanLinePainter.drawPixmap(QRect(0, 0, tilePart.width(), tilePart.height()), cache, QRect(0, border, size.width(), 1));
- scanLinePainter.end();
- m_painter->drawTiledPixmap(QRect(paintRect.left(), paintRect.top() + border,
- paintRect.width(), paintRect.height() - 2*border), tilePart);
-
- // bottom part
- m_painter->drawPixmap(QRect(paintRect.left(), paintRect.top() + paintRect.height() - border,
- paintRect.width(), border), cache,
- QRect(0, size.height() - border, size.width(), border));
- } else
- m_painter->drawPixmap(paintRect.topLeft(), cache);
-}
-
-void QGtkPainter::paintBox(GtkWidget *gtkWidget, const gchar* part,
- const QRect &paintRect, GtkStateType state,
- GtkShadowType shadow, GtkStyle *style,
- const QString &pmKey)
-{
- if (!paintRect.isValid())
- return;
-
- QPixmap cache;
- QRect rect = paintRect;
-
- // To avoid exhausting cache on large tabframes we cheat a bit by
- // tiling the center part.
-
- const int maxHeight = 256;
- const int maxArea = 256*512;
- const int border = 32;
- if (rect.height() > maxHeight && (rect.width()*rect.height() > maxArea))
- rect.setHeight(2 * border + 1);
-
- QString pixmapName = uniqueName(QLS(part), state, shadow,
- rect.size(), gtkWidget) % pmKey;
-
- if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
- DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_box (style,
- pixmap,
- state,
- shadow,
- NULL,
- gtkWidget,
- part,
- 0, 0,
- rect.width(),
- rect.height()));
- if (m_usePixmapCache)
- QPixmapCache::insert(pixmapName, cache);
- }
- if (rect.size() != paintRect.size()) {
- // We assume we can stretch the middle tab part
- // Note: the side effect of this is that pinstripe patterns will get fuzzy
- const QSize size = cache.size();
- // top part
- m_painter->drawPixmap(QRect(paintRect.left(), paintRect.top(),
- paintRect.width(), border), cache,
- QRect(0, 0, size.width(), border));
-
- // tiled center part
- QPixmap tilePart(cache.width(), 1);
- QPainter scanLinePainter(&tilePart);
- scanLinePainter.drawPixmap(QRect(0, 0, tilePart.width(), tilePart.height()), cache, QRect(0, border, size.width(), 1));
- scanLinePainter.end();
- m_painter->drawTiledPixmap(QRect(paintRect.left(), paintRect.top() + border,
- paintRect.width(), paintRect.height() - 2*border), tilePart);
-
- // bottom part
- m_painter->drawPixmap(QRect(paintRect.left(), paintRect.top() + paintRect.height() - border,
- paintRect.width(), border), cache,
- QRect(0, size.height() - border, size.width(), border));
- } else
- m_painter->drawPixmap(paintRect.topLeft(), cache);
-}
-
-void QGtkPainter::paintHline(GtkWidget *gtkWidget, const gchar* part,
- const QRect &rect, GtkStateType state,
- GtkStyle *style, int x1, int x2, int y,
- const QString &pmKey)
-{
- if (!rect.isValid())
- return;
-
- QPixmap cache;
- QString pixmapName = uniqueName(QLS(part), state, GTK_SHADOW_NONE, rect.size(), gtkWidget)
- % HexString<int>(x1)
- % HexString<int>(x2)
- % HexString<int>(y)
- % pmKey;
- if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
- DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_hline (style,
- pixmap,
- state,
- NULL,
- gtkWidget,
- part,
- x1, x2, y));
- if (m_usePixmapCache)
- QPixmapCache::insert(pixmapName, cache);
- }
-
- m_painter->drawPixmap(rect.topLeft(), cache);
-}
-
-void QGtkPainter::paintVline(GtkWidget *gtkWidget, const gchar* part,
- const QRect &rect, GtkStateType state,
- GtkStyle *style, int y1, int y2, int x,
- const QString &pmKey)
-{
- if (!rect.isValid())
- return;
-
- QPixmap cache;
- QString pixmapName = uniqueName(QLS(part), state, GTK_SHADOW_NONE, rect.size(), gtkWidget)
- % HexString<int>(y1)
- % HexString<int>(y2)
- % HexString<int>(x)
- % pmKey;
-
- if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
- DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_vline (style,
- pixmap,
- state,
- NULL,
- gtkWidget,
- part,
- y1, y2,
- x));
- if (m_usePixmapCache)
- QPixmapCache::insert(pixmapName, cache);
- }
- m_painter->drawPixmap(rect.topLeft(), cache);
-}
-
-
-void QGtkPainter::paintExpander(GtkWidget *gtkWidget,
- const gchar* part, const QRect &rect,
- GtkStateType state, GtkExpanderStyle expander_state,
- GtkStyle *style, const QString &pmKey)
-{
- if (!rect.isValid())
- return;
-
- QPixmap cache;
- QString pixmapName = uniqueName(QLS(part), state, GTK_SHADOW_NONE, rect.size(), gtkWidget)
- % HexString<uchar>(expander_state)
- % pmKey;
-
- if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
- DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_expander (style, pixmap,
- state, NULL,
- gtkWidget, part,
- rect.width()/2,
- rect.height()/2,
- expander_state));
- if (m_usePixmapCache)
- QPixmapCache::insert(pixmapName, cache);
- }
-
- m_painter->drawPixmap(rect.topLeft(), cache);
-}
-
-void QGtkPainter::paintFocus(GtkWidget *gtkWidget, const gchar* part,
- const QRect &rect, GtkStateType state,
- GtkStyle *style, const QString &pmKey)
-{
- if (!rect.isValid())
- return;
-
- QPixmap cache;
- QString pixmapName = uniqueName(QLS(part), state, GTK_SHADOW_NONE, rect.size(), gtkWidget) % pmKey;
- if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
- DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_focus (style, pixmap, state, NULL,
- gtkWidget,
- part,
- 0, 0,
- rect.width(),
- rect.height()));
- if (m_usePixmapCache)
- QPixmapCache::insert(pixmapName, cache);
- }
-
- m_painter->drawPixmap(rect.topLeft(), cache);
-}
-
-
-void QGtkPainter::paintResizeGrip(GtkWidget *gtkWidget, const gchar* part,
- const QRect &rect, GtkStateType state,
- GtkShadowType shadow, GdkWindowEdge edge,
- GtkStyle *style, const QString &pmKey)
-{
- if (!rect.isValid())
- return;
-
- QPixmap cache;
- QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size(), gtkWidget) % pmKey;
- if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
- DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_resize_grip (style, pixmap, state,
- NULL, gtkWidget,
- part, edge, 0, 0,
- rect.width(),
- rect.height()));
- if (m_usePixmapCache)
- QPixmapCache::insert(pixmapName, cache);
- }
-
- m_painter->drawPixmap(rect.topLeft(), cache);
-}
-
-
-void QGtkPainter::paintArrow(GtkWidget *gtkWidget, const gchar* part,
- const QRect &arrowrect, GtkArrowType arrow_type,
- GtkStateType state, GtkShadowType shadow,
- gboolean fill, GtkStyle *style, const QString &pmKey)
-{
- QRect rect = m_cliprect.isValid() ? m_cliprect : arrowrect;
- if (!rect.isValid())
- return;
-
- QPixmap cache;
- QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size())
- % HexString<uchar>(arrow_type)
- % pmKey;
-
- GdkRectangle gtkCliprect = {0, 0, rect.width(), rect.height()};
- int xOffset = m_cliprect.isValid() ? arrowrect.x() - m_cliprect.x() : 0;
- int yOffset = m_cliprect.isValid() ? arrowrect.y() - m_cliprect.y() : 0;
- if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
- DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_arrow (style, pixmap, state, shadow,
- &gtkCliprect,
- gtkWidget,
- part,
- arrow_type, fill,
- xOffset, yOffset,
- arrowrect.width(),
- arrowrect.height()))
- if (m_usePixmapCache)
- QPixmapCache::insert(pixmapName, cache);
- }
-
- m_painter->drawPixmap(rect.topLeft(), cache);
-}
-
-
-void QGtkPainter::paintHandle(GtkWidget *gtkWidget, const gchar* part, const QRect &rect,
- GtkStateType state, GtkShadowType shadow,
- GtkOrientation orientation, GtkStyle *style)
-{
- if (!rect.isValid())
- return;
-
- QPixmap cache;
- QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size())
- % HexString<uchar>(orientation);
-
- if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
- DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_handle (style,
- pixmap,
- state,
- shadow,
- NULL,
- gtkWidget,
- part, 0, 0,
- rect.width(),
- rect.height(),
- orientation));
- if (m_usePixmapCache)
- QPixmapCache::insert(pixmapName, cache);
- }
- m_painter->drawPixmap(rect.topLeft(), cache);
-}
-
-
-void QGtkPainter::paintSlider(GtkWidget *gtkWidget, const gchar* part, const QRect &rect,
- GtkStateType state, GtkShadowType shadow,
- GtkStyle *style, GtkOrientation orientation,
- const QString &pmKey)
-{
- if (!rect.isValid())
- return;
-
- QPixmap cache;
- QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size(), gtkWidget) % pmKey;
- if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
- DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_slider (style,
- pixmap,
- state,
- shadow,
- NULL,
- gtkWidget,
- part,
- 0, 0,
- rect.width(),
- rect.height(),
- orientation));
- if (m_usePixmapCache)
- QPixmapCache::insert(pixmapName, cache);
- }
- m_painter->drawPixmap(rect.topLeft(), cache);
-}
-
-
-void QGtkPainter::paintShadow(GtkWidget *gtkWidget, const gchar* part,
- const QRect &rect, GtkStateType state,
- GtkShadowType shadow, GtkStyle *style,
- const QString &pmKey)
-
-{
- if (!rect.isValid())
- return;
-
- QPixmap cache;
- QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size()) % pmKey;
- if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
- DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_shadow(style, pixmap, state, shadow, NULL,
- gtkWidget, part, 0, 0, rect.width(), rect.height()));
- if (m_usePixmapCache)
- QPixmapCache::insert(pixmapName, cache);
- }
- m_painter->drawPixmap(rect.topLeft(), cache);
-}
-
-void QGtkPainter::paintFlatBox(GtkWidget *gtkWidget, const gchar* part,
- const QRect &rect, GtkStateType state,
- GtkShadowType shadow, GtkStyle *style,
- const QString &pmKey)
-{
- if (!rect.isValid())
- return;
- QPixmap cache;
- QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size()) % pmKey;
- if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
- DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_flat_box (style,
- pixmap,
- state,
- shadow,
- NULL,
- gtkWidget,
- part, 0, 0,
- rect.width(),
- rect.height()));
- if (m_usePixmapCache)
- QPixmapCache::insert(pixmapName, cache);
- }
- m_painter->drawPixmap(rect.topLeft(), cache);
-}
-
-void QGtkPainter::paintExtention(GtkWidget *gtkWidget,
- const gchar *part, const QRect &rect,
- GtkStateType state, GtkShadowType shadow,
- GtkPositionType gap_pos, GtkStyle *style)
-{
- if (!rect.isValid())
- return;
-
- QPixmap cache;
- QString pixmapName = uniqueName(QLS(part), state, shadow, rect.size(), gtkWidget)
- % HexString<uchar>(gap_pos);
-
- if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
- DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_extension (style, pixmap, state, shadow,
- NULL, gtkWidget,
- (gchar*)part, 0, 0,
- rect.width(),
- rect.height(),
- gap_pos));
- if (m_usePixmapCache)
- QPixmapCache::insert(pixmapName, cache);
- }
-
- m_painter->drawPixmap(rect.topLeft(), cache);
-}
-
-void QGtkPainter::paintOption(GtkWidget *gtkWidget, const QRect &radiorect,
- GtkStateType state, GtkShadowType shadow,
- GtkStyle *style, const QString &detail)
-
-{
- QRect rect = m_cliprect.isValid() ? m_cliprect : radiorect;
- if (!rect.isValid())
- return;
-
- QPixmap cache;
- QString pixmapName = uniqueName(detail, state, shadow, rect.size());
- GdkRectangle gtkCliprect = {0, 0, rect.width(), rect.height()};
- int xOffset = m_cliprect.isValid() ? radiorect.x() - m_cliprect.x() : 0;
- int yOffset = m_cliprect.isValid() ? radiorect.y() - m_cliprect.y() : 0;
- if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
- DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_option(style, pixmap,
- state, shadow,
- &gtkCliprect,
- gtkWidget,
- detail.toLatin1(),
- xOffset, yOffset,
- radiorect.width(),
- radiorect.height()));
-
- if (m_usePixmapCache)
- QPixmapCache::insert(pixmapName, cache);
- }
-
- m_painter->drawPixmap(rect.topLeft(), cache);
-}
-
-void QGtkPainter::paintCheckbox(GtkWidget *gtkWidget, const QRect &checkrect,
- GtkStateType state, GtkShadowType shadow,
- GtkStyle *style, const QString &detail)
-
-{
- QRect rect = m_cliprect.isValid() ? m_cliprect : checkrect;
- if (!rect.isValid())
- return;
-
- QPixmap cache;
- QString pixmapName = uniqueName(detail, state, shadow, rect.size());
- GdkRectangle gtkCliprect = {0, 0, rect.width(), rect.height()};
- int xOffset = m_cliprect.isValid() ? checkrect.x() - m_cliprect.x() : 0;
- int yOffset = m_cliprect.isValid() ? checkrect.y() - m_cliprect.y() : 0;
- if (!m_usePixmapCache || !QPixmapCache::find(pixmapName, cache)) {
- DRAW_TO_CACHE(QGtkStylePrivate::gtk_paint_check (style,
- pixmap,
- state,
- shadow,
- &gtkCliprect,
- gtkWidget,
- detail.toLatin1(),
- xOffset, yOffset,
- checkrect.width(),
- checkrect.height()));
- if (m_usePixmapCache)
- QPixmapCache::insert(pixmapName, cache);
- }
-
- m_painter->drawPixmap(rect.topLeft(), cache);
-}
-
QT_END_NAMESPACE
#endif //!defined(QT_NO_STYLE_GTK)
diff --git a/src/widgets/styles/qgtkpainter_p.h b/src/widgets/styles/qgtkpainter_p.h
index 90b8dd276b..8dc9391902 100644
--- a/src/widgets/styles/qgtkpainter_p.h
+++ b/src/widgets/styles/qgtkpainter_p.h
@@ -56,20 +56,22 @@
#include <QtCore/qglobal.h>
#if !defined(QT_NO_STYLE_GTK)
-#include <QtGui/QPainter>
-#include <QtGui/QPalette>
-#include <QtGui/QFont>
-#include <private/qgtkstyle_p.h>
+#include <private/qgtkglobal_p.h>
+#include <QtCore/qsize.h>
+#include <QtCore/qrect.h>
+#include <QtCore/qpoint.h>
+#include <QtGui/qpixmap.h>
+#include <QtGui/qpainter.h>
QT_BEGIN_NAMESPACE
class QGtkPainter
{
-
public:
- QGtkPainter(QPainter *painter);
- GtkStyle *getStyle(GtkWidget *gtkWidget);
- GtkStateType gtkState(const QStyleOption *option);
+ QGtkPainter();
+ virtual ~QGtkPainter();
+
+ void reset(QPainter *painter = 0);
void setAlphaSupport(bool value) { m_alpha = value; }
void setClipRect(const QRect &rect) { m_cliprect = rect; }
@@ -77,48 +79,45 @@ public:
void setFlipVertical(bool value) { m_vflipped = value; }
void setUsePixmapCache(bool value) { m_usePixmapCache = value; }
- void paintBoxGap(GtkWidget *gtkWidget, const gchar* part, const QRect &rect,
- GtkStateType state, GtkShadowType shadow, GtkPositionType gap_side, gint x,
- gint width, GtkStyle *style);
- void paintBox(GtkWidget *gtkWidget, const gchar* part,
- const QRect &rect, GtkStateType state, GtkShadowType shadow, GtkStyle *style,
- const QString &pmKey = QString());
- void paintHline(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkStyle *style,
- int x1, int x2, int y, const QString &pmKey = QString());
- void paintVline(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkStyle *style,
- int y1, int y2, int x, const QString &pmKey = QString());
- void paintExpander(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state,
- GtkExpanderStyle expander_state, GtkStyle *style, const QString &pmKey = QString());
- void paintFocus(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkStyle *style,
- const QString &pmKey = QString());
- void paintResizeGrip(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkShadowType shadow,
- GdkWindowEdge edge, GtkStyle *style, const QString &pmKey = QString());
- void paintArrow(GtkWidget *gtkWidget, const gchar* part, const QRect &arrowrect, GtkArrowType arrow_type, GtkStateType state, GtkShadowType shadow,
- gboolean fill, GtkStyle *style, const QString &pmKey = QString());
- void paintHandle(GtkWidget *gtkWidget, const gchar* part, const QRect &rect,
- GtkStateType state, GtkShadowType shadow, GtkOrientation orientation, GtkStyle *style);
- void paintSlider(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkShadowType shadow,
- GtkStyle *style, GtkOrientation orientation, const QString &pmKey = QString());
- void paintShadow(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkShadowType shadow,
- GtkStyle *style, const QString &pmKey = QString());
- void paintFlatBox(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkShadowType shadow, GtkStyle *style, const QString & = QString());
- void paintExtention(GtkWidget *gtkWidget, const gchar *part, const QRect &rect, GtkStateType state, GtkShadowType shadow,
- GtkPositionType gap_pos, GtkStyle *style);
- void paintOption(GtkWidget *gtkWidget, const QRect &rect, GtkStateType state, GtkShadowType shadow, GtkStyle *style, const QString &detail);
- void paintCheckbox(GtkWidget *gtkWidget, const QRect &rect, GtkStateType state, GtkShadowType shadow, GtkStyle *style, const QString &detail);
+ virtual void paintBoxGap(GtkWidget *gtkWidget, const gchar* part, const QRect &rect,
+ GtkStateType state, GtkShadowType shadow, GtkPositionType gap_side, gint x,
+ gint width, GtkStyle *style) = 0;
+ virtual void paintBox(GtkWidget *gtkWidget, const gchar* part,
+ const QRect &rect, GtkStateType state, GtkShadowType shadow, GtkStyle *style,
+ const QString &pmKey = QString()) = 0;
+ virtual void paintHline(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkStyle *style,
+ int x1, int x2, int y, const QString &pmKey = QString()) = 0;
+ virtual void paintVline(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkStyle *style,
+ int y1, int y2, int x, const QString &pmKey = QString()) = 0;
+ virtual void paintExpander(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state,
+ GtkExpanderStyle expander_state, GtkStyle *style, const QString &pmKey = QString()) = 0;
+ virtual void paintFocus(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkStyle *style,
+ const QString &pmKey = QString()) = 0;
+ virtual void paintResizeGrip(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkShadowType shadow,
+ GdkWindowEdge edge, GtkStyle *style, const QString &pmKey = QString()) = 0;
+ virtual void paintArrow(GtkWidget *gtkWidget, const gchar* part, const QRect &arrowrect, GtkArrowType arrow_type, GtkStateType state, GtkShadowType shadow,
+ gboolean fill, GtkStyle *style, const QString &pmKey = QString()) = 0;
+ virtual void paintHandle(GtkWidget *gtkWidget, const gchar* part, const QRect &rect,
+ GtkStateType state, GtkShadowType shadow, GtkOrientation orientation, GtkStyle *style) = 0;
+ virtual void paintSlider(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkShadowType shadow,
+ GtkStyle *style, GtkOrientation orientation, const QString &pmKey = QString()) = 0;
+ virtual void paintShadow(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkShadowType shadow,
+ GtkStyle *style, const QString &pmKey = QString()) = 0;
+ virtual void paintFlatBox(GtkWidget *gtkWidget, const gchar* part, const QRect &rect, GtkStateType state, GtkShadowType shadow, GtkStyle *style, const QString & = QString()) = 0;
+ virtual void paintExtention(GtkWidget *gtkWidget, const gchar *part, const QRect &rect, GtkStateType state, GtkShadowType shadow,
+ GtkPositionType gap_pos, GtkStyle *style) = 0;
+ virtual void paintOption(GtkWidget *gtkWidget, const QRect &rect, GtkStateType state, GtkShadowType shadow, GtkStyle *style, const QString &detail) = 0;
+ virtual void paintCheckbox(GtkWidget *gtkWidget, const QRect &rect, GtkStateType state, GtkShadowType shadow, GtkStyle *style, const QString &detail) = 0;
- static QPixmap getIcon(const char* iconName, GtkIconSize size = GTK_ICON_SIZE_BUTTON);
-private:
- QPixmap renderTheme(uchar *bdata, uchar *wdata, const QRect&);
+protected:
+ static QString uniqueName(const QString &key, GtkStateType state, GtkShadowType shadow, const QSize &size, GtkWidget *widget = 0);
- GtkWidget *m_window;
QPainter *m_painter;
bool m_alpha;
bool m_hflipped;
bool m_vflipped;
bool m_usePixmapCache;
QRect m_cliprect;
-
};
QT_END_NAMESPACE
diff --git a/src/widgets/styles/qgtkstyle.cpp b/src/widgets/styles/qgtkstyle.cpp
index 4a7f972436..6aaa3234d6 100644
--- a/src/widgets/styles/qgtkstyle.cpp
+++ b/src/widgets/styles/qgtkstyle.cpp
@@ -79,6 +79,48 @@
QT_BEGIN_NAMESPACE
+static GtkStateType qt_gtk_state(const QStyleOption *option)
+{
+ GtkStateType state = GTK_STATE_NORMAL;
+ if (!(option->state & QStyle::State_Enabled))
+ state = GTK_STATE_INSENSITIVE;
+ else if (option->state & QStyle::State_MouseOver)
+ state = GTK_STATE_PRELIGHT;
+
+ return state;
+}
+
+static QPixmap qt_gtk_get_icon(const char* iconName, GtkIconSize size = GTK_ICON_SIZE_BUTTON)
+{
+ GtkStyle *style = QGtkStylePrivate::gtkStyle();
+ GtkIconSet* iconSet = QGtkStylePrivate::gtk_icon_factory_lookup_default (iconName);
+ GdkPixbuf* icon = QGtkStylePrivate::gtk_icon_set_render_icon(iconSet,
+ style,
+ GTK_TEXT_DIR_LTR,
+ GTK_STATE_NORMAL,
+ size,
+ NULL,
+ "button");
+ uchar* data = (uchar*)QGtkStylePrivate::gdk_pixbuf_get_pixels(icon);
+ int width = QGtkStylePrivate::gdk_pixbuf_get_width(icon);
+ int height = QGtkStylePrivate::gdk_pixbuf_get_height(icon);
+ QImage converted(width, height, QImage::Format_ARGB32);
+ uchar* tdata = (uchar*)converted.bits();
+
+ for ( int index = 0 ; index < height * width*4 ; index +=4 ) {
+ //int index = y * rowstride + x;
+ tdata[index + QT_RED] = data[index + GTK_RED];
+ tdata[index + QT_GREEN] = data[index + GTK_GREEN];
+ tdata[index + QT_BLUE] = data[index + GTK_BLUE];
+ tdata[index + QT_ALPHA] = data[index + GTK_ALPHA];
+ }
+
+ QGtkStylePrivate::gdk_pixbuf_unref(icon);
+
+ // should we free iconset?
+ return QPixmap::fromImage(converted);
+}
+
static void qt_gtk_draw_mdibutton(QPainter *painter, const QStyleOptionTitleBar *option, const QRect &tmp, bool hover, bool sunken)
{
QColor dark;
@@ -861,7 +903,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
}
GtkStyle* style = d->gtkStyle();
- QGtkPainter gtkPainter(painter);
+ QGtkPainter* gtkPainter = d->gtkPainter(painter);
switch (element) {
case PE_Frame: {
@@ -886,8 +928,8 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
pixmap = QPixmap(pmSize, pmSize);
pixmap.fill(Qt::transparent);
QPainter pmPainter(&pixmap);
- QGtkPainter gtkFramePainter(&pmPainter);
- gtkFramePainter.setUsePixmapCache(false); // Don't cache twice
+ gtkPainter->reset(&pmPainter);
+ gtkPainter->setUsePixmapCache(false); // Don't cache twice
GtkShadowType shadow_type = GTK_SHADOW_NONE;
if (option->state & State_Sunken)
@@ -898,10 +940,11 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
GtkStyle *style = d->gtk_rc_get_style_by_paths(d->gtk_settings_get_default(),
"*.GtkScrolledWindow", "*.GtkScrolledWindow", d->gtk_window_get_type());
if (style)
- gtkFramePainter.paintShadow(d->gtkWidget("GtkFrame"), "viewport", pmRect,
- option->state & State_Enabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE,
- shadow_type, style);
+ gtkPainter->paintShadow(d->gtkWidget("GtkFrame"), "viewport", pmRect,
+ option->state & State_Enabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE,
+ shadow_type, style);
QPixmapCache::insert(pmKey, pixmap);
+ gtkPainter->reset(painter);
}
QRect rect = option->rect;
@@ -945,7 +988,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
GtkWidget *gtkWindow = d->gtkWidget("GtkWindow"); // The Murrine Engine currently assumes a widget is passed
style = d->gtk_rc_get_style_by_paths(d->gtk_settings_get_default(), "gtk-tooltips", "GtkWindow",
d->gtk_window_get_type());
- gtkPainter.paintFlatBox(gtkWindow, "tooltip", option->rect, GTK_STATE_NORMAL, GTK_SHADOW_NONE, style);
+ gtkPainter->paintFlatBox(gtkWindow, "tooltip", option->rect, GTK_STATE_NORMAL, GTK_SHADOW_NONE, style);
}
break;
@@ -959,15 +1002,15 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
GtkShadowType shadow_type;
GtkWidget *gtkStatusbarFrame = d->gtkWidget("GtkStatusbar.GtkFrame");
d->gtk_widget_style_get(d->gtk_widget_get_parent(gtkStatusbarFrame), "shadow-type", &shadow_type, NULL);
- gtkPainter.paintShadow(gtkStatusbarFrame, "frame", option->rect, GTK_STATE_NORMAL,
- shadow_type, d->gtk_widget_get_style(gtkStatusbarFrame));
+ gtkPainter->paintShadow(gtkStatusbarFrame, "frame", option->rect, GTK_STATE_NORMAL,
+ shadow_type, d->gtk_widget_get_style(gtkStatusbarFrame));
}
break;
case PE_IndicatorHeaderArrow:
if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(option)) {
GtkWidget *gtkTreeHeader = d->gtkWidget("GtkTreeView.GtkButton");
- GtkStateType state = gtkPainter.gtkState(option);
+ GtkStateType state = qt_gtk_state(option);
style = d->gtk_widget_get_style(gtkTreeHeader);
GtkArrowType type = GTK_ARROW_UP;
// This sorting indicator inversion is intentional, and follows the GNOME HIG.
@@ -977,8 +1020,8 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
else if (header->sortIndicator & QStyleOptionHeader::SortDown)
type = GTK_ARROW_DOWN;
- gtkPainter.paintArrow(gtkTreeHeader, "button", option->rect.adjusted(1, 1, -1, -1), type, state,
- GTK_SHADOW_NONE, false, style);
+ gtkPainter->paintArrow(gtkTreeHeader, "button", option->rect.adjusted(1, 1, -1, -1), type, state,
+ GTK_SHADOW_NONE, false, style);
}
break;
@@ -989,11 +1032,11 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
// Dont draw anything
} else if (qobject_cast<const QTabBar*>(widget)) {
GtkWidget *gtkNotebook = d->gtkWidget("GtkNotebook");
- style = gtkPainter.getStyle(gtkNotebook);
- gtkPainter.paintFocus(gtkNotebook, "tab", frameRect.adjusted(-1, 1, 1, 1), GTK_STATE_ACTIVE, style);
+ style = d->gtk_widget_get_style(gtkNotebook);
+ gtkPainter->paintFocus(gtkNotebook, "tab", frameRect.adjusted(-1, 1, 1, 1), GTK_STATE_ACTIVE, style);
} else {
GtkWidget *gtkRadioButton = d->gtkWidget("GtkRadioButton");
- gtkPainter.paintFocus(gtkRadioButton, "radiobutton", frameRect, GTK_STATE_ACTIVE, style);
+ gtkPainter->paintFocus(gtkRadioButton, "radiobutton", frameRect, GTK_STATE_ACTIVE, style);
}
}
break;
@@ -1014,8 +1057,8 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
else if (option->state & State_MouseOver)
state = GTK_STATE_PRELIGHT;
- gtkPainter.paintExpander(gtkTreeView, "treeview", rect, state,
- option->state & State_Open ? openState : closedState , d->gtk_widget_get_style(gtkTreeView));
+ gtkPainter->paintExpander(gtkTreeView, "treeview", rect, state,
+ option->state & State_Open ? openState : closedState , d->gtk_widget_get_style(gtkTreeView));
}
break;
@@ -1056,15 +1099,15 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
if (isActive ) {
// Required for active/non-active window appearance
key = QLS("a");
- GTK_WIDGET_SET_FLAGS(gtkTreeView, GTK_HAS_FOCUS);
+ QGtkStylePrivate::gtkWidgetSetFocus(gtkTreeView, true);
}
bool isEnabled = (widget ? widget->isEnabled() : (vopt->state & QStyle::State_Enabled));
- gtkPainter.paintFlatBox(gtkTreeView, detail, option->rect,
- option->state & State_Selected ? GTK_STATE_SELECTED :
- isEnabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE,
- GTK_SHADOW_OUT, d->gtk_widget_get_style(gtkTreeView), key);
+ gtkPainter->paintFlatBox(gtkTreeView, detail, option->rect,
+ option->state & State_Selected ? GTK_STATE_SELECTED :
+ isEnabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE,
+ GTK_SHADOW_OUT, d->gtk_widget_get_style(gtkTreeView), key);
if (isActive )
- GTK_WIDGET_UNSET_FLAGS(gtkTreeView, GTK_HAS_FOCUS);
+ QGtkStylePrivate::gtkWidgetSetFocus(gtkTreeView, false);
}
}
break;
@@ -1076,14 +1119,14 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
const int offset = option->rect.width()/2;
QRect rect = option->rect.adjusted(offset, margin, 0, -margin);
painter->setPen(QPen(option->palette.background().color().darker(110)));
- gtkPainter.paintVline( gtkSeparator, "vseparator",
+ gtkPainter->paintVline(gtkSeparator, "vseparator",
rect, GTK_STATE_NORMAL, d->gtk_widget_get_style(gtkSeparator),
0, rect.height(), 0);
} else { //Draw vertical separator
const int offset = option->rect.height()/2;
QRect rect = option->rect.adjusted(margin, offset, -margin, 0);
painter->setPen(QPen(option->palette.background().color().darker(110)));
- gtkPainter.paintHline( gtkSeparator, "hseparator",
+ gtkPainter->paintHline(gtkSeparator, "hseparator",
rect, GTK_STATE_NORMAL, d->gtk_widget_get_style(gtkSeparator),
0, rect.width(), 0);
}
@@ -1096,9 +1139,9 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
d->gtk_widget_style_get(gtkToolbar, "shadow-type", &shadow_type, NULL);
//Note when the toolbar is horizontal, the handle is vertical
painter->setClipRect(option->rect);
- gtkPainter.paintHandle(gtkToolbar, "toolbar", option->rect.adjusted(-1, -1 ,0 ,1),
- GTK_STATE_NORMAL, shadow_type, !(option->state & State_Horizontal) ?
- GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL, d->gtk_widget_get_style(gtkToolbar));
+ gtkPainter->paintHandle(gtkToolbar, "toolbar", option->rect.adjusted(-1, -1 ,0 ,1),
+ GTK_STATE_NORMAL, shadow_type, !(option->state & State_Horizontal) ?
+ GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL, d->gtk_widget_get_style(gtkToolbar));
}
break;
@@ -1136,15 +1179,15 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
}
QRect arrowRect = option->rect.adjusted(border + bsx, border + bsy, -border + bsx, -border + bsy);
GtkShadowType shadow = option->state & State_Sunken ? GTK_SHADOW_IN : GTK_SHADOW_OUT;
- GtkStateType state = gtkPainter.gtkState(option);
+ GtkStateType state = qt_gtk_state(option);
QColor arrowColor = option->palette.buttonText().color();
GtkWidget *gtkArrow = d->gtkWidget("GtkArrow");
GdkColor color = fromQColor(arrowColor);
d->gtk_widget_modify_fg (gtkArrow, state, &color);
- gtkPainter.paintArrow(gtkArrow, "button", arrowRect,
- type, state, shadow, false, d->gtk_widget_get_style(gtkArrow),
- QString::number(arrowColor.rgba(), 16));
+ gtkPainter->paintArrow(gtkArrow, "button", arrowRect,
+ type, state, shadow, false, d->gtk_widget_get_style(gtkArrow),
+ QString::number(arrowColor.rgba(), 16));
// Passing NULL will revert the color change
d->gtk_widget_modify_fg (gtkArrow, state, NULL);
}
@@ -1156,8 +1199,8 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
case PE_PanelMenu: {
GtkWidget *gtkMenu = d->gtkWidget("GtkMenu");
- gtkPainter.setAlphaSupport(false); // Note, alpha disabled for performance reasons
- gtkPainter.paintBox(gtkMenu, "menu", option->rect, GTK_STATE_NORMAL, GTK_SHADOW_OUT, d->gtk_widget_get_style(gtkMenu), QString());
+ gtkPainter->setAlphaSupport(false); // Note, alpha disabled for performance reasons
+ gtkPainter->paintBox(gtkMenu, "menu", option->rect, GTK_STATE_NORMAL, GTK_SHADOW_OUT, d->gtk_widget_get_style(gtkMenu), QString());
}
break;
@@ -1168,9 +1211,9 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
// This is only used by floating tool bars
if (qobject_cast<const QToolBar *>(widget)) {
GtkWidget *gtkMenubar = d->gtkWidget("GtkMenuBar");
- gtkPainter.paintBox( gtkMenubar, "toolbar", option->rect,
+ gtkPainter->paintBox(gtkMenubar, "toolbar", option->rect,
GTK_STATE_NORMAL, GTK_SHADOW_OUT, style);
- gtkPainter.paintBox( gtkMenubar, "menu", option->rect,
+ gtkPainter->paintBox(gtkMenubar, "menu", option->rect,
GTK_STATE_NORMAL, GTK_SHADOW_OUT, style);
}
break;
@@ -1193,18 +1236,18 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
rect.adjust(focus_line_width, focus_line_width, -focus_line_width, -focus_line_width);
if (option->state & State_HasFocus)
- GTK_WIDGET_SET_FLAGS(gtkEntry, GTK_HAS_FOCUS);
- gtkPainter.paintShadow(gtkEntry, "entry", rect, option->state & State_Enabled ?
- GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE,
- GTK_SHADOW_IN, d->gtk_widget_get_style(gtkEntry),
- option->state & State_HasFocus ? QLS("focus") : QString());
+ QGtkStylePrivate::gtkWidgetSetFocus(gtkEntry, true);
+ gtkPainter->paintShadow(gtkEntry, "entry", rect, option->state & State_Enabled ?
+ GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE,
+ GTK_SHADOW_IN, d->gtk_widget_get_style(gtkEntry),
+ option->state & State_HasFocus ? QLS("focus") : QString());
if (!interior_focus && option->state & State_HasFocus)
- gtkPainter.paintShadow(gtkEntry, "entry", option->rect, option->state & State_Enabled ?
- GTK_STATE_ACTIVE : GTK_STATE_INSENSITIVE,
- GTK_SHADOW_IN, d->gtk_widget_get_style(gtkEntry), QLS("GtkEntryShadowIn"));
+ gtkPainter->paintShadow(gtkEntry, "entry", option->rect, option->state & State_Enabled ?
+ GTK_STATE_ACTIVE : GTK_STATE_INSENSITIVE,
+ GTK_SHADOW_IN, d->gtk_widget_get_style(gtkEntry), QLS("GtkEntryShadowIn"));
if (option->state & State_HasFocus)
- GTK_WIDGET_UNSET_FLAGS(gtkEntry, GTK_HAS_FOCUS);
+ QGtkStylePrivate::gtkWidgetSetFocus(gtkEntry, false);
}
break;
@@ -1222,7 +1265,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
resolve_mask & (1 << QPalette::Base)) // Palette overridden by user
painter->fillRect(textRect, option->palette.base());
else
- gtkPainter.paintFlatBox( gtkEntry, "entry_bg", textRect,
+ gtkPainter->paintFlatBox(gtkEntry, "entry_bg", textRect,
option->state & State_Enabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE, GTK_SHADOW_NONE, gtkEntryStyle);
}
break;
@@ -1230,8 +1273,8 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
case PE_FrameTabWidget:
if (const QStyleOptionTabWidgetFrame *frame = qstyleoption_cast<const QStyleOptionTabWidgetFrame*>(option)) {
GtkWidget *gtkNotebook = d->gtkWidget("GtkNotebook");
- style = gtkPainter.getStyle(gtkNotebook);
- gtkPainter.setAlphaSupport(false);
+ style = d->gtk_widget_get_style(gtkNotebook);
+ gtkPainter->setAlphaSupport(false);
GtkShadowType shadow = GTK_SHADOW_OUT;
GtkStateType state = GTK_STATE_NORMAL; // Only state supported by gtknotebook
bool reverse = (option->direction == Qt::RightToLeft);
@@ -1250,13 +1293,13 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
gapStart = tabframe->selectedTabRect.y();
gapSize = tabframe->selectedTabRect.height();
}
- gtkPainter.paintBoxGap(gtkNotebook, "notebook", option->rect, state, shadow, frameType,
+ gtkPainter->paintBoxGap(gtkNotebook, "notebook", option->rect, state, shadow, frameType,
gapStart, gapSize, style);
break; // done
}
// Note this is only the fallback option
- gtkPainter.paintBox(gtkNotebook, "notebook", option->rect, state, shadow, style);
+ gtkPainter->paintBox(gtkNotebook, "notebook", option->rect, state, shadow, style);
}
break;
@@ -1274,7 +1317,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
if (widget && widget->inherits("QDockWidgetTitleButton") && !(option->state & State_MouseOver))
break;
- GtkStateType state = gtkPainter.gtkState(option);
+ GtkStateType state = qt_gtk_state(option);
if (option->state & State_On || option->state & State_Sunken)
state = GTK_STATE_ACTIVE;
GtkWidget *gtkButton = isTool ? d->gtkWidget("GtkToolButton.GtkButton") : d->gtkWidget("GtkButton");
@@ -1292,16 +1335,17 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
QString key;
if (isDefault) {
key += QLS("def");
- GTK_WIDGET_SET_FLAGS(gtkButton, GTK_HAS_DEFAULT);
- gtkPainter.paintBox(gtkButton, "buttondefault", buttonRect, state, GTK_SHADOW_IN,
- style, isDefault ? QLS("d") : QString());
+ QGtkStylePrivate::gtk_widget_set_can_default(gtkButton, true);
+ QGtkStylePrivate::gtk_window_set_default((GtkWindow*)QGtkStylePrivate::gtk_widget_get_toplevel(gtkButton), gtkButton);
+ gtkPainter->paintBox(gtkButton, "buttondefault", buttonRect, state, GTK_SHADOW_IN,
+ style, isDefault ? QLS("d") : QString());
}
bool hasFocus = option->state & State_HasFocus;
if (hasFocus) {
key += QLS("def");
- GTK_WIDGET_SET_FLAGS(gtkButton, GTK_HAS_FOCUS);
+ QGtkStylePrivate::gtkWidgetSetFocus(gtkButton, true);
}
if (!interiorFocus)
@@ -1310,18 +1354,18 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
GtkShadowType shadow = (option->state & State_Sunken || option->state & State_On ) ?
GTK_SHADOW_IN : GTK_SHADOW_OUT;
- gtkPainter.paintBox(gtkButton, "button", buttonRect, state, shadow,
- style, key);
+ gtkPainter->paintBox(gtkButton, "button", buttonRect, state, shadow,
+ style, key);
if (isDefault)
- GTK_WIDGET_UNSET_FLAGS(gtkButton, GTK_HAS_DEFAULT);
+ QGtkStylePrivate::gtk_window_set_default((GtkWindow*)QGtkStylePrivate::gtk_widget_get_toplevel(gtkButton), 0);
if (hasFocus)
- GTK_WIDGET_UNSET_FLAGS(gtkButton, GTK_HAS_FOCUS);
+ QGtkStylePrivate::gtkWidgetSetFocus(gtkButton, false);
}
break;
case PE_IndicatorRadioButton: {
GtkShadowType shadow = GTK_SHADOW_OUT;
- GtkStateType state = gtkPainter.gtkState(option);
+ GtkStateType state = qt_gtk_state(option);
if (option->state & State_Sunken)
state = GTK_STATE_ACTIVE;
@@ -1337,24 +1381,24 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
gint spacing;
d->gtk_widget_style_get(gtkRadioButton, "indicator-spacing", &spacing, NULL);
QRect buttonRect = option->rect.adjusted(spacing, spacing, -spacing, -spacing);
- gtkPainter.setClipRect(option->rect);
+ gtkPainter->setClipRect(option->rect);
// ### Note: Ubuntulooks breaks when the proper widget is passed
// Murrine engine requires a widget not to get RGBA check - warnings
GtkWidget *gtkCheckButton = d->gtkWidget("GtkCheckButton");
QString key(QLS("radiobutton"));
if (option->state & State_HasFocus) { // Themes such as Nodoka check this flag
key += QLatin1Char('f');
- GTK_WIDGET_SET_FLAGS(gtkCheckButton, GTK_HAS_FOCUS);
+ QGtkStylePrivate::gtkWidgetSetFocus(gtkCheckButton, true);
}
- gtkPainter.paintOption(gtkCheckButton , buttonRect, state, shadow, d->gtk_widget_get_style(gtkRadioButton), key);
+ gtkPainter->paintOption(gtkCheckButton , buttonRect, state, shadow, d->gtk_widget_get_style(gtkRadioButton), key);
if (option->state & State_HasFocus)
- GTK_WIDGET_UNSET_FLAGS(gtkCheckButton, GTK_HAS_FOCUS);
+ QGtkStylePrivate::gtkWidgetSetFocus(gtkCheckButton, false);
}
break;
case PE_IndicatorCheckBox: {
GtkShadowType shadow = GTK_SHADOW_OUT;
- GtkStateType state = gtkPainter.gtkState(option);
+ GtkStateType state = qt_gtk_state(option);
if (option->state & State_Sunken)
state = GTK_STATE_ACTIVE;
@@ -1372,20 +1416,20 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
QString key(QLS("checkbutton"));
if (option->state & State_HasFocus) { // Themes such as Nodoka checks this flag
key += QLatin1Char('f');
- GTK_WIDGET_SET_FLAGS(gtkCheckButton, GTK_HAS_FOCUS);
+ QGtkStylePrivate::gtkWidgetSetFocus(gtkCheckButton, true);
}
// Some styles such as aero-clone assume they can paint in the spacing area
- gtkPainter.setClipRect(option->rect);
+ gtkPainter->setClipRect(option->rect);
d->gtk_widget_style_get(gtkCheckButton, "indicator-spacing", &spacing, NULL);
QRect checkRect = option->rect.adjusted(spacing, spacing, -spacing, -spacing);
- gtkPainter.paintCheckbox(gtkCheckButton, checkRect, state, shadow, d->gtk_widget_get_style(gtkCheckButton),
- key);
+ gtkPainter->paintCheckbox(gtkCheckButton, checkRect, state, shadow, d->gtk_widget_get_style(gtkCheckButton),
+ key);
if (option->state & State_HasFocus)
- GTK_WIDGET_UNSET_FLAGS(gtkCheckButton, GTK_HAS_FOCUS);
+ QGtkStylePrivate::gtkWidgetSetFocus(gtkCheckButton, false);
}
break;
@@ -1455,7 +1499,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
}
GtkStyle* style = d->gtkStyle();
- QGtkPainter gtkPainter(painter);
+ QGtkPainter* gtkPainter = d->gtkPainter(painter);
QColor button = option->palette.button().color();
QColor dark;
QColor grooveColor;
@@ -1770,8 +1814,8 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
if (option->state & State_MouseOver) {
QRect bgRect = textRect | checkBoxRect;
- gtkPainter.paintFlatBox(gtkCheckButton, "checkbutton", bgRect.adjusted(0, 0, 0, -2),
- GTK_STATE_PRELIGHT, GTK_SHADOW_ETCHED_OUT, d->gtk_widget_get_style(gtkCheckButton));
+ gtkPainter->paintFlatBox(gtkCheckButton, "checkbutton", bgRect.adjusted(0, 0, 0, -2),
+ GTK_STATE_PRELIGHT, GTK_SHADOW_ETCHED_OUT, d->gtk_widget_get_style(gtkCheckButton));
}
if (!groupBox->text.isEmpty()) {
@@ -1793,7 +1837,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
painter->drawText(textRect, Qt::TextShowMnemonic | Qt::AlignLeft| alignment, groupBox->text);
if (option->state & State_HasFocus)
- gtkPainter.paintFocus(gtkCheckButton, "checkbutton", textRect.adjusted(-4, -1, 0, -3), GTK_STATE_ACTIVE, style);
+ gtkPainter->paintFocus(gtkCheckButton, "checkbutton", textRect.adjusted(-4, -1, 0, -3), GTK_STATE_ACTIVE, style);
}
}
@@ -1817,12 +1861,12 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
if (const QStyleOptionComboBox *comboBox = qstyleoption_cast<const QStyleOptionComboBox *>(option)) {
bool sunken = comboBox->state & State_On; // play dead, if combobox has no items
BEGIN_STYLE_PIXMAPCACHE(QString::fromLatin1("cb-%0-%1").arg(sunken).arg(comboBox->editable));
- QGtkPainter gtkCachedPainter(p);
- gtkCachedPainter.setUsePixmapCache(false); // cached externally
+ gtkPainter->reset(p);
+ gtkPainter->setUsePixmapCache(false); // cached externally
bool isEnabled = (comboBox->state & State_Enabled);
bool focus = isEnabled && (comboBox->state & State_HasFocus);
- GtkStateType state = gtkPainter.gtkState(option);
+ GtkStateType state = qt_gtk_state(option);
int appears_as_list = !proxy()->styleHint(QStyle::SH_ComboBox_Popup, comboBox, widget);
QStyleOptionComboBox comboBoxCopy = *comboBox;
comboBoxCopy.rect = option->rect;
@@ -1834,7 +1878,8 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
GtkShadowType shadow = (option->state & State_Sunken || option->state & State_On ) ?
GTK_SHADOW_IN : GTK_SHADOW_OUT;
- const QHashableLatin1Literal comboBoxPath = comboBox->editable ? QHashableLatin1Literal("GtkComboBoxEntry") : QHashableLatin1Literal("GtkComboBox");
+ const QHashableLatin1Literal comboBoxPath = comboBox->editable && QGtkStylePrivate::gtk_combo_box_entry_new ?
+ QHashableLatin1Literal("GtkComboBoxEntry") : QHashableLatin1Literal("GtkComboBox");
// We use the gtk widget to position arrows and separators for us
GtkWidget *gtkCombo = d->gtkWidget(comboBoxPath);
@@ -1842,17 +1887,18 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
d->gtk_widget_set_direction(gtkCombo, reverse ? GTK_TEXT_DIR_RTL : GTK_TEXT_DIR_LTR);
d->gtk_widget_size_allocate(gtkCombo, &geometry);
- QHashableLatin1Literal buttonPath = comboBox->editable ? QHashableLatin1Literal("GtkComboBoxEntry.GtkToggleButton")
- : QHashableLatin1Literal("GtkComboBox.GtkToggleButton");
+ QHashableLatin1Literal buttonPath = comboBox->editable && QGtkStylePrivate::gtk_combo_box_entry_new ?
+ QHashableLatin1Literal("GtkComboBoxEntry.GtkToggleButton") : QHashableLatin1Literal("GtkComboBox.GtkToggleButton");
GtkWidget *gtkToggleButton = d->gtkWidget(buttonPath);
d->gtk_widget_set_direction(gtkToggleButton, reverse ? GTK_TEXT_DIR_RTL : GTK_TEXT_DIR_LTR);
if (gtkToggleButton && (appears_as_list || comboBox->editable)) {
if (focus)
- GTK_WIDGET_SET_FLAGS(gtkToggleButton, GTK_HAS_FOCUS);
+ QGtkStylePrivate::gtkWidgetSetFocus(gtkToggleButton, true);
// Draw the combo box as a line edit with a button next to it
if (comboBox->editable || appears_as_list) {
GtkStateType frameState = (state == GTK_STATE_PRELIGHT) ? GTK_STATE_NORMAL : state;
- QHashableLatin1Literal entryPath = comboBox->editable ? QHashableLatin1Literal("GtkComboBoxEntry.GtkEntry") : QHashableLatin1Literal("GtkComboBox.GtkFrame");
+ QHashableLatin1Literal entryPath = comboBox->editable && QGtkStylePrivate::gtk_combo_box_entry_new ? QHashableLatin1Literal("GtkComboBoxEntry.GtkEntry")
+ : comboBox->editable ? QHashableLatin1Literal("GtkComboBox.GtkEntry") : QHashableLatin1Literal("GtkComboBox.GtkFrame");
GtkWidget *gtkEntry = d->gtkWidget(entryPath);
d->gtk_widget_set_direction(gtkEntry, reverse ? GTK_TEXT_DIR_RTL : GTK_TEXT_DIR_LTR);
QRect frameRect = option->rect;
@@ -1870,23 +1916,23 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
-gtkEntryStyle->xthickness, -gtkEntryStyle->ythickness);
// Required for inner blue highlight with clearlooks
if (focus)
- GTK_WIDGET_SET_FLAGS(gtkEntry, GTK_HAS_FOCUS);
+ QGtkStylePrivate::gtkWidgetSetFocus(gtkEntry, true);
if (widget && widget->testAttribute(Qt::WA_SetPalette) &&
resolve_mask & (1 << QPalette::Base)) // Palette overridden by user
p->fillRect(contentRect, option->palette.base().color());
else {
- gtkCachedPainter.paintFlatBox(gtkEntry, "entry_bg", contentRect,
- option->state & State_Enabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE,
- GTK_SHADOW_NONE, gtkEntryStyle, entryPath.toString() + QString::number(focus));
+ gtkPainter->paintFlatBox(gtkEntry, "entry_bg", contentRect,
+ option->state & State_Enabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE,
+ GTK_SHADOW_NONE, gtkEntryStyle, entryPath.toString() + QString::number(focus));
}
- gtkCachedPainter.paintShadow(gtkEntry, comboBox->editable ? "entry" : "frame", frameRect, frameState,
- GTK_SHADOW_IN, gtkEntryStyle, entryPath.toString() +
- QString::number(focus) + QString::number(comboBox->editable) +
- QString::number(option->direction));
+ gtkPainter->paintShadow(gtkEntry, comboBox->editable ? "entry" : "frame", frameRect, frameState,
+ GTK_SHADOW_IN, gtkEntryStyle, entryPath.toString() +
+ QString::number(focus) + QString::number(comboBox->editable) +
+ QString::number(option->direction));
if (focus)
- GTK_WIDGET_UNSET_FLAGS(gtkEntry, GTK_HAS_FOCUS);
+ QGtkStylePrivate::gtkWidgetSetFocus(gtkEntry, false);
}
GtkStateType buttonState = GTK_STATE_NORMAL;
@@ -1899,28 +1945,28 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
buttonState = GTK_STATE_PRELIGHT;
Q_ASSERT(gtkToggleButton);
- gtkCachedPainter.paintBox( gtkToggleButton, "button", arrowButtonRect, buttonState,
+ gtkPainter->paintBox(gtkToggleButton, "button", arrowButtonRect, buttonState,
shadow, d->gtk_widget_get_style(gtkToggleButton), buttonPath.toString() +
QString::number(focus) + QString::number(option->direction));
if (focus)
- GTK_WIDGET_UNSET_FLAGS(gtkToggleButton, GTK_HAS_FOCUS);
+ QGtkStylePrivate::gtkWidgetSetFocus(gtkToggleButton, false);
} else {
// Draw combo box as a button
QRect buttonRect = option->rect;
GtkStyle *gtkToggleButtonStyle = d->gtk_widget_get_style(gtkToggleButton);
if (focus) // Clearlooks actually check the widget for the default state
- GTK_WIDGET_SET_FLAGS(gtkToggleButton, GTK_HAS_FOCUS);
- gtkCachedPainter.paintBox(gtkToggleButton, "button",
- buttonRect, state,
- shadow, gtkToggleButtonStyle,
- buttonPath.toString() + QString::number(focus));
+ QGtkStylePrivate::gtkWidgetSetFocus(gtkToggleButton, true);
+ gtkPainter->paintBox(gtkToggleButton, "button",
+ buttonRect, state,
+ shadow, gtkToggleButtonStyle,
+ buttonPath.toString() + QString::number(focus));
if (focus)
- GTK_WIDGET_UNSET_FLAGS(gtkToggleButton, GTK_HAS_FOCUS);
+ QGtkStylePrivate::gtkWidgetSetFocus(gtkToggleButton, false);
// Draw the separator between label and arrows
- QHashableLatin1Literal vSeparatorPath = comboBox->editable
+ QHashableLatin1Literal vSeparatorPath = comboBox->editable && QGtkStylePrivate::gtk_combo_box_entry_new
? QHashableLatin1Literal("GtkComboBoxEntry.GtkToggleButton.GtkHBox.GtkVSeparator")
: QHashableLatin1Literal("GtkComboBox.GtkToggleButton.GtkHBox.GtkVSeparator");
@@ -1929,9 +1975,9 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
d->gtk_widget_get_allocation(gtkVSeparator, &allocation);
QRect vLineRect(allocation.x, allocation.y, allocation.width, allocation.height);
- gtkCachedPainter.paintVline( gtkVSeparator, "vseparator",
+ gtkPainter->paintVline(gtkVSeparator, "vseparator",
vLineRect, state, d->gtk_widget_get_style(gtkVSeparator),
- 0, vLineRect.height(), 0, vSeparatorPath.toString());
+ 0, vLineRect.height(), 0, vSeparatorPath.toString());
gint interiorFocus = true;
@@ -1939,10 +1985,10 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
int xt = interiorFocus ? gtkToggleButtonStyle->xthickness : 0;
int yt = interiorFocus ? gtkToggleButtonStyle->ythickness : 0;
if (focus && ((option->state & State_KeyboardFocusChange) || styleHint(SH_UnderlineShortcut, option, widget)))
- gtkCachedPainter.paintFocus(gtkToggleButton, "button",
- option->rect.adjusted(xt, yt, -xt, -yt),
- option->state & State_Sunken ? GTK_STATE_ACTIVE : GTK_STATE_NORMAL,
- gtkToggleButtonStyle);
+ gtkPainter->paintFocus(gtkToggleButton, "button",
+ option->rect.adjusted(xt, yt, -xt, -yt),
+ option->state & State_Sunken ? GTK_STATE_ACTIVE : GTK_STATE_NORMAL,
+ gtkToggleButtonStyle);
}
}
@@ -1957,7 +2003,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
state = GTK_STATE_NORMAL;
QHashableLatin1Literal arrowPath("");
- if (comboBox->editable) {
+ if (comboBox->editable && QGtkStylePrivate::gtk_combo_box_entry_new) {
if (appears_as_list)
arrowPath = QHashableLatin1Literal("GtkComboBoxEntry.GtkToggleButton.GtkArrow");
else
@@ -1995,7 +2041,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
if (sunken) {
int xoff, yoff;
- const QHashableLatin1Literal toggleButtonPath = comboBox->editable
+ const QHashableLatin1Literal toggleButtonPath = comboBox->editable && QGtkStylePrivate::gtk_combo_box_entry_new
? QHashableLatin1Literal("GtkComboBoxEntry.GtkToggleButton")
: QHashableLatin1Literal("GtkComboBox.GtkToggleButton");
@@ -2008,8 +2054,8 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
// Some styles such as Nimbus paint outside the arrowRect
// hence we have provide the whole widget as the cliprect
if (gtkArrow) {
- gtkCachedPainter.setClipRect(option->rect);
- gtkCachedPainter.paintArrow( gtkArrow, "arrow", arrowRect,
+ gtkPainter->setClipRect(option->rect);
+ gtkPainter->paintArrow(gtkArrow, "arrow", arrowRect,
GTK_ARROW_DOWN, state, GTK_SHADOW_NONE, true,
style, arrowPath.toString() + QString::number(option->direction));
}
@@ -2128,7 +2174,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
gint trough_border = 1;
if (!d->gtk_check_version(2, 10, 0)) {
d->gtk_widget_style_get((GtkWidget*)(scrollbarWidget),
- "trough-border", &trough_border,
+ "trough-border", &trough_border,
"trough-side-details", &trough_side_details,
"trough-under-steppers", &trough_under_steppers,
"activate-slider", &activate_slider,
@@ -2173,7 +2219,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
if (trough_under_steppers)
grooveRect = option->rect;
- gtkPainter.paintBox( scrollbarWidget, "trough", grooveRect, state, GTK_SHADOW_IN, style);
+ gtkPainter->paintBox(scrollbarWidget, "trough", grooveRect, state, GTK_SHADOW_IN, style);
}
//paint slider
@@ -2197,8 +2243,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
scrollBarSlider.adjust(0, trough_border, 0, -trough_border);
}
- gtkPainter.paintSlider( scrollbarWidget, "slider", scrollBarSlider, state, shadow, style,
-
+ gtkPainter->paintSlider(scrollbarWidget, "slider", scrollBarSlider, state, shadow, style,
horizontal ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL, QString(QLS("%0%1")).arg(fakePos).arg(maximum));
}
@@ -2225,11 +2270,11 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
} else if (option->state & State_MouseOver && (scrollBar->activeSubControls & SC_ScrollBarAddLine))
state = GTK_STATE_PRELIGHT;
- gtkPainter.paintBox( scrollbarWidget,
+ gtkPainter->paintBox(scrollbarWidget,
horizontal ? "hscrollbar" : "vscrollbar", scrollBarAddLine,
state, shadow, style, QLS("add"));
- gtkPainter.paintArrow( scrollbarWidget, horizontal ? "hscrollbar" : "vscrollbar", scrollBarAddLine.adjusted(4, 4, -4, -4),
+ gtkPainter->paintArrow(scrollbarWidget, horizontal ? "hscrollbar" : "vscrollbar", scrollBarAddLine.adjusted(4, 4, -4, -4),
horizontal ? (reverse ? GTK_ARROW_LEFT : GTK_ARROW_RIGHT) :
GTK_ARROW_DOWN, state, GTK_SHADOW_NONE, false, style);
}
@@ -2257,12 +2302,12 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
} else if (option->state & State_MouseOver && (scrollBar->activeSubControls & SC_ScrollBarSubLine))
state = GTK_STATE_PRELIGHT;
- gtkPainter.paintBox(scrollbarWidget, horizontal ? "hscrollbar" : "vscrollbar", scrollBarSubLine,
- state, shadow, style, QLS("sub"));
+ gtkPainter->paintBox(scrollbarWidget, horizontal ? "hscrollbar" : "vscrollbar", scrollBarSubLine,
+ state, shadow, style, QLS("sub"));
- gtkPainter.paintArrow(scrollbarWidget, horizontal ? "hscrollbar" : "vscrollbar", scrollBarSubLine.adjusted(4, 4, -4, -4),
- horizontal ? (reverse ? GTK_ARROW_RIGHT : GTK_ARROW_LEFT) :
- GTK_ARROW_UP, state, GTK_SHADOW_NONE, false, style);
+ gtkPainter->paintArrow(scrollbarWidget, horizontal ? "hscrollbar" : "vscrollbar", scrollBarSubLine.adjusted(4, 4, -4, -4),
+ horizontal ? (reverse ? GTK_ARROW_RIGHT : GTK_ARROW_LEFT) :
+ GTK_ARROW_UP, state, GTK_SHADOW_NONE, false, style);
}
}
break;
@@ -2313,7 +2358,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
editArea.setRight(upRect.left());
}
if (spinBox->frame) {
- GtkStateType state = gtkPainter.gtkState(option);
+ GtkStateType state = qt_gtk_state(option);
if (!(option->state & State_Enabled))
state = GTK_STATE_INSENSITIVE;
@@ -2322,14 +2367,14 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
else if (state == GTK_STATE_PRELIGHT)
state = GTK_STATE_NORMAL;
- style = gtkPainter.getStyle(gtkSpinButton);
+ style = d->gtk_widget_get_style(gtkSpinButton);
QString key;
if (option->state & State_HasFocus) {
key += QLatin1Char('f');
- GTK_WIDGET_SET_FLAGS(gtkSpinButton, GTK_HAS_FOCUS);
+ QGtkStylePrivate::gtkWidgetSetFocus(gtkSpinButton, true);
}
uint resolve_mask = option->palette.resolve();
@@ -2337,36 +2382,36 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
if (resolve_mask & (1 << QPalette::Base)) // Palette overridden by user
painter->fillRect(editRect, option->palette.base().color());
else
- gtkPainter.paintFlatBox(gtkSpinButton, "entry_bg", editArea.adjusted(style->xthickness, style->ythickness,
- -style->xthickness, -style->ythickness),
- option->state & State_Enabled ?
- GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE, GTK_SHADOW_NONE, style, key);
+ gtkPainter->paintFlatBox(gtkSpinButton, "entry_bg", editArea.adjusted(style->xthickness, style->ythickness,
+ -style->xthickness, -style->ythickness),
+ option->state & State_Enabled ?
+ GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE, GTK_SHADOW_NONE, style, key);
- gtkPainter.paintShadow(gtkSpinButton, "entry", editArea, state, GTK_SHADOW_IN, d->gtk_widget_get_style(gtkSpinButton), key);
+ gtkPainter->paintShadow(gtkSpinButton, "entry", editArea, state, GTK_SHADOW_IN, d->gtk_widget_get_style(gtkSpinButton), key);
if (spinBox->buttonSymbols != QAbstractSpinBox::NoButtons) {
- gtkPainter.paintBox(gtkSpinButton, "spinbutton", buttonRect, state, GTK_SHADOW_IN, style, key);
+ gtkPainter->paintBox(gtkSpinButton, "spinbutton", buttonRect, state, GTK_SHADOW_IN, style, key);
upRect.setSize(downRect.size());
if (!(option->state & State_Enabled))
- gtkPainter.paintBox( gtkSpinButton, "spinbutton_up", upRect, GTK_STATE_INSENSITIVE, GTK_SHADOW_IN, style, key);
+ gtkPainter->paintBox(gtkSpinButton, "spinbutton_up", upRect, GTK_STATE_INSENSITIVE, GTK_SHADOW_IN, style, key);
else if (upIsActive && sunken)
- gtkPainter.paintBox( gtkSpinButton, "spinbutton_up", upRect, GTK_STATE_ACTIVE, GTK_SHADOW_IN, style, key);
+ gtkPainter->paintBox(gtkSpinButton, "spinbutton_up", upRect, GTK_STATE_ACTIVE, GTK_SHADOW_IN, style, key);
else if (upIsActive && hover)
- gtkPainter.paintBox( gtkSpinButton, "spinbutton_up", upRect, GTK_STATE_PRELIGHT, GTK_SHADOW_OUT, style, key);
+ gtkPainter->paintBox(gtkSpinButton, "spinbutton_up", upRect, GTK_STATE_PRELIGHT, GTK_SHADOW_OUT, style, key);
else
- gtkPainter.paintBox( gtkSpinButton, "spinbutton_up", upRect, GTK_STATE_NORMAL, GTK_SHADOW_OUT, style, key);
+ gtkPainter->paintBox(gtkSpinButton, "spinbutton_up", upRect, GTK_STATE_NORMAL, GTK_SHADOW_OUT, style, key);
if (!(option->state & State_Enabled))
- gtkPainter.paintBox( gtkSpinButton, "spinbutton_down", downRect, GTK_STATE_INSENSITIVE, GTK_SHADOW_IN, style, key);
+ gtkPainter->paintBox(gtkSpinButton, "spinbutton_down", downRect, GTK_STATE_INSENSITIVE, GTK_SHADOW_IN, style, key);
else if (downIsActive && sunken)
- gtkPainter.paintBox( gtkSpinButton, "spinbutton_down", downRect, GTK_STATE_ACTIVE, GTK_SHADOW_IN, style, key);
+ gtkPainter->paintBox(gtkSpinButton, "spinbutton_down", downRect, GTK_STATE_ACTIVE, GTK_SHADOW_IN, style, key);
else if (downIsActive && hover)
- gtkPainter.paintBox( gtkSpinButton, "spinbutton_down", downRect, GTK_STATE_PRELIGHT, GTK_SHADOW_OUT, style, key);
+ gtkPainter->paintBox(gtkSpinButton, "spinbutton_down", downRect, GTK_STATE_PRELIGHT, GTK_SHADOW_OUT, style, key);
else
- gtkPainter.paintBox( gtkSpinButton, "spinbutton_down", downRect, GTK_STATE_NORMAL, GTK_SHADOW_OUT, style, key);
+ gtkPainter->paintBox(gtkSpinButton, "spinbutton_down", downRect, GTK_STATE_NORMAL, GTK_SHADOW_OUT, style, key);
if (option->state & State_HasFocus)
- GTK_WIDGET_UNSET_FLAGS(gtkSpinButton, GTK_HAS_FOCUS);
+ QGtkStylePrivate::gtkWidgetSetFocus(gtkSpinButton, false);
}
}
@@ -2405,7 +2450,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
if (!(option->state & State_Enabled) || !(spinBox->stepEnabled & QAbstractSpinBox::StepUpEnabled))
state = GTK_STATE_INSENSITIVE;
- gtkPainter.paintArrow( gtkSpinButton, "spinbutton", arrowRect, GTK_ARROW_UP, state,
+ gtkPainter->paintArrow(gtkSpinButton, "spinbutton", arrowRect, GTK_ARROW_UP, state,
GTK_SHADOW_NONE, false, style);
arrowRect.moveCenter(downRect.center());
@@ -2413,7 +2458,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
if (!(option->state & State_Enabled) || !(spinBox->stepEnabled & QAbstractSpinBox::StepDownEnabled))
state = GTK_STATE_INSENSITIVE;
- gtkPainter.paintArrow( gtkSpinButton, "spinbutton", arrowRect, GTK_ARROW_DOWN, state,
+ gtkPainter->paintArrow(gtkSpinButton, "spinbutton", arrowRect, GTK_ARROW_DOWN, state,
GTK_SHADOW_NONE, false, style);
}
}
@@ -2475,17 +2520,17 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
d->gtk_widget_style_get(scaleWidget, "trough-border", &outerSize, NULL);
outerSize++;
- GtkStateType state = gtkPainter.gtkState(option);
+ GtkStateType state = qt_gtk_state(option);
int focusFrameMargin = 2;
QRect grooveRect = option->rect.adjusted(focusFrameMargin, outerSize + focusFrameMargin,
-focusFrameMargin, -outerSize - focusFrameMargin);
gboolean trough_side_details = false; // Indicates if the upper or lower scale background differs
if (!d->gtk_check_version(2, 10, 0))
- d->gtk_widget_style_get((GtkWidget*)(scaleWidget), "trough-side-details", &trough_side_details, NULL);
+ d->gtk_widget_style_get((GtkWidget*)(scaleWidget), "trough-side-details", &trough_side_details, NULL);
if (!trough_side_details) {
- gtkPainter.paintBox( scaleWidget, "trough", grooveRect, state,
+ gtkPainter->paintBox(scaleWidget, "trough", grooveRect, state,
GTK_SHADOW_IN, style, QString(QLS("p%0")).arg(slider->sliderPosition));
} else {
QRect upperGroove = grooveRect;
@@ -2509,9 +2554,9 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
}
}
- gtkPainter.paintBox( scaleWidget, "trough-upper", upperGroove, state,
+ gtkPainter->paintBox(scaleWidget, "trough-upper", upperGroove, state,
GTK_SHADOW_IN, style, QString(QLS("p%0")).arg(slider->sliderPosition));
- gtkPainter.paintBox( scaleWidget, "trough-lower", lowerGroove, state,
+ gtkPainter->paintBox(scaleWidget, "trough-lower", lowerGroove, state,
GTK_SHADOW_IN, style, QString(QLS("p%0")).arg(slider->sliderPosition));
}
}
@@ -2599,8 +2644,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
}
proxy()->drawPrimitive(PE_FrameFocusRect, &fropt, painter, widget);
}
- gtkPainter.paintSlider( scaleWidget, horizontal ? "hscale" : "vscale", handle, state, shadow, style,
-
+ gtkPainter->paintSlider(scaleWidget, horizontal ? "hscale" : "vscale", handle, state, shadow, style,
horizontal ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL);
}
painter->setBrush(oldBrush);
@@ -2638,7 +2682,7 @@ void QGtkStyle::drawControl(ControlElement element,
}
GtkStyle* style = d->gtkStyle();
- QGtkPainter gtkPainter(painter);
+ QGtkPainter* gtkPainter = d->gtkPainter(painter);
switch (element) {
case CE_ProgressBarLabel:
@@ -2771,8 +2815,8 @@ void QGtkStyle::drawControl(ControlElement element,
GtkWidget *gtkRadioButton = d->gtkWidget("GtkRadioButton");
if (option->state & State_MouseOver) {
- gtkPainter.paintFlatBox(gtkRadioButton, "checkbutton", option->rect,
- GTK_STATE_PRELIGHT, GTK_SHADOW_ETCHED_OUT, d->gtk_widget_get_style(gtkRadioButton));
+ gtkPainter->paintFlatBox(gtkRadioButton, "checkbutton", option->rect,
+ GTK_STATE_PRELIGHT, GTK_SHADOW_ETCHED_OUT, d->gtk_widget_get_style(gtkRadioButton));
}
QStyleOptionButton subopt = *btn;
@@ -2919,13 +2963,13 @@ void QGtkStyle::drawControl(ControlElement element,
Q_ASSERT(column);
GtkWidget *gtkTreeHeader = column->button;
- GtkStateType state = gtkPainter.gtkState(option);
+ GtkStateType state = qt_gtk_state(option);
GtkShadowType shadow = GTK_SHADOW_OUT;
if (option->state & State_Sunken)
shadow = GTK_SHADOW_IN;
- gtkPainter.paintBox(gtkTreeHeader, "button", option->rect.adjusted(-1, 0, 0, 0), state, shadow, d->gtk_widget_get_style(gtkTreeHeader));
+ gtkPainter->paintBox(gtkTreeHeader, "button", option->rect.adjusted(-1, 0, 0, 0), state, shadow, d->gtk_widget_get_style(gtkTreeHeader));
}
painter->restore();
@@ -2937,9 +2981,9 @@ void QGtkStyle::drawControl(ControlElement element,
GtkWidget *gtkStatusbar = d->gtkWidget("GtkStatusbar.GtkFrame");
GtkStyle *gtkStatusbarStyle = d->gtk_widget_get_style(gtkStatusbar);
QRect gripRect = option->rect.adjusted(0, 0, -gtkStatusbarStyle->xthickness, -gtkStatusbarStyle->ythickness);
- gtkPainter.paintResizeGrip( gtkStatusbar, "statusbar", gripRect, GTK_STATE_NORMAL,
+ gtkPainter->paintResizeGrip(gtkStatusbar, "statusbar", gripRect, GTK_STATE_NORMAL,
GTK_SHADOW_OUT, QApplication::isRightToLeft() ?
- GDK_WINDOW_EDGE_SOUTH_WEST : GDK_WINDOW_EDGE_SOUTH_EAST,
+ GDK_WINDOW_EDGE_SOUTH_WEST : GDK_WINDOW_EDGE_SOUTH_EAST,
gtkStatusbarStyle);
}
break;
@@ -2955,13 +2999,14 @@ void QGtkStyle::drawControl(ControlElement element,
QPixmap pixmap(menuBarRect.size());
pixmap.fill(Qt::transparent);
QPainter pmPainter(&pixmap);
- QGtkPainter gtkMenuBarPainter(&pmPainter);
+ gtkPainter->reset(&pmPainter);
GtkShadowType shadow_type;
d->gtk_widget_style_get(gtkMenubar, "shadow-type", &shadow_type, NULL);
- gtkMenuBarPainter.paintBox( gtkMenubar, "menubar", menuBarRect,
- GTK_STATE_NORMAL, shadow_type, d->gtk_widget_get_style(gtkMenubar));
+ gtkPainter->paintBox(gtkMenubar, "menubar", menuBarRect,
+ GTK_STATE_NORMAL, shadow_type, d->gtk_widget_get_style(gtkMenubar));
pmPainter.end();
painter->drawPixmap(option->rect, pixmap, option->rect);
+ gtkPainter->reset(painter);
}
}
break;
@@ -2984,15 +3029,16 @@ void QGtkStyle::drawControl(ControlElement element,
QPixmap pixmap(menuBarRect.size());
pixmap.fill(Qt::transparent);
QPainter pmPainter(&pixmap);
- QGtkPainter menubarPainter(&pmPainter);
+ gtkPainter->reset(&pmPainter);
GtkShadowType shadow_type;
d->gtk_widget_style_get(gtkMenubar, "shadow-type", &shadow_type, NULL);
GdkColor gdkBg = d->gtk_widget_get_style(gtkMenubar)->bg[GTK_STATE_NORMAL]; // Theme can depend on transparency
painter->fillRect(option->rect, QColor(gdkBg.red>>8, gdkBg.green>>8, gdkBg.blue>>8));
- menubarPainter.paintBox(gtkMenubar, "menubar", menuBarRect,
- GTK_STATE_NORMAL, shadow_type, d->gtk_widget_get_style(gtkMenubar));
+ gtkPainter->paintBox(gtkMenubar, "menubar", menuBarRect,
+ GTK_STATE_NORMAL, shadow_type, d->gtk_widget_get_style(gtkMenubar));
pmPainter.end();
painter->drawPixmap(option->rect, pixmap, option->rect);
+ gtkPainter->reset(painter);
}
QStyleOptionMenuItem item = *mbi;
@@ -3011,8 +3057,8 @@ void QGtkStyle::drawControl(ControlElement element,
if (act) {
GtkShadowType shadowType = GTK_SHADOW_NONE;
d->gtk_widget_style_get (gtkMenubarItem, "selected-shadow-type", &shadowType, NULL);
- gtkPainter.paintBox(gtkMenubarItem, "menuitem", option->rect.adjusted(0, 0, 0, 3),
- GTK_STATE_PRELIGHT, shadowType, style);
+ gtkPainter->paintBox(gtkMenubarItem, "menuitem", option->rect.adjusted(0, 0, 0, 3),
+ GTK_STATE_PRELIGHT, shadowType, style);
//draw text
QPalette::ColorRole textRole = dis ? QPalette::Text : QPalette::HighlightedText;
uint alignment = Qt::AlignCenter | Qt::TextShowMnemonic | Qt::TextDontClip | Qt::TextSingleLine;
@@ -3028,7 +3074,7 @@ void QGtkStyle::drawControl(ControlElement element,
case CE_Splitter: {
GtkWidget *gtkWindow = d->gtkWidget("GtkWindow"); // The Murrine Engine currently assumes a widget is passed
- gtkPainter.paintHandle(gtkWindow, "splitter", option->rect, gtkPainter.gtkState(option), GTK_SHADOW_NONE,
+ gtkPainter->paintHandle(gtkWindow, "splitter", option->rect, qt_gtk_state(option), GTK_SHADOW_NONE,
!(option->state & State_Horizontal) ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL,
style);
}
@@ -3050,7 +3096,7 @@ void QGtkStyle::drawControl(ControlElement element,
GtkWidget *gtkToolbar = d->gtkWidget("GtkToolbar");
GtkShadowType shadow_type = GTK_SHADOW_NONE;
d->gtk_widget_style_get(gtkToolbar, "shadow-type", &shadow_type, NULL);
- gtkPainter.paintBox( gtkToolbar, "toolbar", rect,
+ gtkPainter->paintBox(gtkToolbar, "toolbar", rect,
GTK_STATE_NORMAL, shadow_type, d->gtk_widget_get_style(gtkToolbar));
}
break;
@@ -3067,7 +3113,7 @@ void QGtkStyle::drawControl(ControlElement element,
GtkWidget *gtkMenuItem = menuItem->checked ? d->gtkWidget("GtkMenu.GtkCheckMenuItem") :
d->gtkWidget("GtkMenu.GtkMenuItem");
- style = gtkPainter.getStyle(gtkMenuItem);
+ style = d->gtk_widget_get_style(gtkMenuItem);
QColor shadow = option->palette.dark().color();
if (menuItem->menuItemType == QStyleOptionMenuItem::Separator) {
@@ -3089,10 +3135,10 @@ void QGtkStyle::drawControl(ControlElement element,
separatorRect.setWidth(option->rect.width() - 2 * (horizontal_padding + gtkMenuSeparatorStyle->xthickness));
separatorRect.moveCenter(option->rect.center());
if (wide_separators)
- gtkPainter.paintBox( gtkMenuSeparator, "hseparator",
+ gtkPainter->paintBox(gtkMenuSeparator, "hseparator",
separatorRect, GTK_STATE_NORMAL, GTK_SHADOW_NONE, gtkMenuSeparatorStyle);
else
- gtkPainter.paintHline( gtkMenuSeparator, "hseparator",
+ gtkPainter->paintHline(gtkMenuSeparator, "hseparator",
separatorRect, GTK_STATE_NORMAL, gtkMenuSeparatorStyle,
0, option->rect.right() - 1, 1);
painter->restore();
@@ -3107,7 +3153,7 @@ void QGtkStyle::drawControl(ControlElement element,
if (qobject_cast<const QComboBox*>(widget))
rect = option->rect;
#endif
- gtkPainter.paintBox( gtkMenuItem, "menuitem", rect, GTK_STATE_PRELIGHT, GTK_SHADOW_OUT, style);
+ gtkPainter->paintBox(gtkMenuItem, "menuitem", rect, GTK_STATE_PRELIGHT, GTK_SHADOW_OUT, style);
}
bool checkable = menuItem->checkType != QStyleOptionMenuItem::NotCheckable;
@@ -3138,33 +3184,33 @@ void QGtkStyle::drawControl(ControlElement element,
if (menuItem->checkType & QStyleOptionMenuItem::Exclusive) {
// Radio button
GtkShadowType shadow = GTK_SHADOW_OUT;
- GtkStateType state = gtkPainter.gtkState(option);
+ GtkStateType state = qt_gtk_state(option);
if (selected)
state = GTK_STATE_PRELIGHT;
if (checked)
shadow = GTK_SHADOW_IN;
- gtkPainter.setClipRect(checkRect.adjusted(-spacing, -spacing, spacing, spacing));
- gtkPainter.paintOption(gtkMenuItem, checkRect.translated(-spacing, -spacing), state, shadow,
- style, QLS("option"));
- gtkPainter.setClipRect(QRect());
+ gtkPainter->setClipRect(checkRect.adjusted(-spacing, -spacing, spacing, spacing));
+ gtkPainter->paintOption(gtkMenuItem, checkRect.translated(-spacing, -spacing), state, shadow,
+ style, QLS("option"));
+ gtkPainter->setClipRect(QRect());
} else {
// Check box
if (menuItem->icon.isNull()) {
GtkShadowType shadow = GTK_SHADOW_OUT;
- GtkStateType state = gtkPainter.gtkState(option);
+ GtkStateType state = qt_gtk_state(option);
if (selected)
state = GTK_STATE_PRELIGHT;
if (checked)
shadow = GTK_SHADOW_IN;
- gtkPainter.setClipRect(checkRect.adjusted(-spacing, -spacing, -spacing, -spacing));
- gtkPainter.paintCheckbox(gtkMenuItem, checkRect.translated(-spacing, -spacing), state, shadow,
- style, QLS("check"));
- gtkPainter.setClipRect(QRect());
+ gtkPainter->setClipRect(checkRect.adjusted(-spacing, -spacing, -spacing, -spacing));
+ gtkPainter->paintCheckbox(gtkMenuItem, checkRect.translated(-spacing, -spacing), state, shadow,
+ style, QLS("check"));
+ gtkPainter->setClipRect(QRect());
}
}
}
@@ -3316,8 +3362,8 @@ void QGtkStyle::drawControl(ControlElement element,
menuItem->rect.height() / 2 - dim / 2, dim, dim));
GtkStateType state = enabled ? (act ? GTK_STATE_PRELIGHT: GTK_STATE_NORMAL) : GTK_STATE_INSENSITIVE;
GtkShadowType shadowType = (state == GTK_STATE_PRELIGHT) ? GTK_SHADOW_OUT : GTK_SHADOW_IN;
- gtkPainter.paintArrow(gtkMenuItem, "menuitem", vSubMenuRect, QApplication::isRightToLeft() ? GTK_ARROW_LEFT : GTK_ARROW_RIGHT, state,
- shadowType, false, style);
+ gtkPainter->paintArrow(gtkMenuItem, "menuitem", vSubMenuRect, QApplication::isRightToLeft() ? GTK_ARROW_LEFT : GTK_ARROW_RIGHT, state,
+ shadowType, false, style);
}
}
painter->restore();
@@ -3339,10 +3385,10 @@ void QGtkStyle::drawControl(ControlElement element,
// The normal button focus rect does not work well for flat buttons in Clearlooks
proxy()->drawPrimitive(PE_FrameFocusRect, option, painter, widget);
else if (btn->state & State_HasFocus)
- gtkPainter.paintFocus(gtkButton, "button",
- option->rect.adjusted(xt, yt, -xt, -yt),
- btn->state & State_Sunken ? GTK_STATE_ACTIVE : GTK_STATE_NORMAL,
- gtkButtonStyle);
+ gtkPainter->paintFocus(gtkButton, "button",
+ option->rect.adjusted(xt, yt, -xt, -yt),
+ btn->state & State_Sunken ? GTK_STATE_ACTIVE : GTK_STATE_NORMAL,
+ gtkButtonStyle);
proxy()->drawControl(CE_PushButtonLabel, &subopt, painter, widget);
}
@@ -3353,7 +3399,7 @@ void QGtkStyle::drawControl(ControlElement element,
case CE_TabBarTabShape:
if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) {
GtkWidget *gtkNotebook = d->gtkWidget("GtkNotebook");
- style = gtkPainter.getStyle(gtkNotebook);
+ style = d->gtk_widget_get_style(gtkNotebook);
QRect rect = option->rect;
GtkShadowType shadow = GTK_SHADOW_OUT;
@@ -3381,27 +3427,27 @@ void QGtkStyle::drawControl(ControlElement element,
case QTabBar::RoundedNorth:
if (!selected)
rect.adjust(first ? 0 : -tabOverlap, topIndent, last ? 0 : tabOverlap, -bottomIndent);
- gtkPainter.paintExtention( gtkNotebook, "tab", rect,
+ gtkPainter->paintExtention(gtkNotebook, "tab", rect,
state, shadow, GTK_POS_BOTTOM, style);
break;
case QTabBar::RoundedSouth:
if (!selected)
rect.adjust(first ? 0 : -tabOverlap, 0, last ? 0 : tabOverlap, -topIndent);
- gtkPainter.paintExtention( gtkNotebook, "tab", rect.adjusted(0, 1, 0, 0),
+ gtkPainter->paintExtention(gtkNotebook, "tab", rect.adjusted(0, 1, 0, 0),
state, shadow, GTK_POS_TOP, style);
break;
case QTabBar::RoundedWest:
if (!selected)
rect.adjust(topIndent, 0, -bottomIndent, 0);
- gtkPainter.paintExtention( gtkNotebook, "tab", rect, state, shadow, GTK_POS_RIGHT, style);
+ gtkPainter->paintExtention(gtkNotebook, "tab", rect, state, shadow, GTK_POS_RIGHT, style);
break;
case QTabBar::RoundedEast:
if (!selected)
rect.adjust(bottomIndent, 0, -topIndent, 0);
- gtkPainter.paintExtention( gtkNotebook, "tab", rect, state, shadow, GTK_POS_LEFT, style);
+ gtkPainter->paintExtention(gtkNotebook, "tab", rect, state, shadow, GTK_POS_LEFT, style);
break;
default:
@@ -3420,8 +3466,8 @@ void QGtkStyle::drawControl(ControlElement element,
if (const QStyleOptionProgressBar *bar = qstyleoption_cast<const QStyleOptionProgressBar *>(option)) {
Q_UNUSED(bar);
GtkWidget *gtkProgressBar = d->gtkWidget("GtkProgressBar");
- GtkStateType state = gtkPainter.gtkState(option);
- gtkPainter.paintBox( gtkProgressBar, "trough", option->rect, state, GTK_SHADOW_IN, d->gtk_widget_get_style(gtkProgressBar));
+ GtkStateType state = qt_gtk_state(option);
+ gtkPainter->paintBox(gtkProgressBar, "trough", option->rect, state, GTK_SHADOW_IN, d->gtk_widget_get_style(gtkProgressBar));
}
break;
@@ -3431,7 +3477,7 @@ void QGtkStyle::drawControl(ControlElement element,
GtkStateType state = option->state & State_Enabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE;
GtkWidget *gtkProgressBar = d->gtkWidget("GtkProgressBar");
style = d->gtk_widget_get_style(gtkProgressBar);
- gtkPainter.paintBox( gtkProgressBar, "trough", option->rect, state, GTK_SHADOW_IN, style);
+ gtkPainter->paintBox(gtkProgressBar, "trough", option->rect, state, GTK_SHADOW_IN, style);
int xt = style->xthickness;
int yt = style->ythickness;
QRect rect = bar->rect.adjusted(xt, yt, -xt, -yt);
@@ -3477,8 +3523,6 @@ void QGtkStyle::drawControl(ControlElement element,
else if (bar->progress > bar->minimum)
fakePos = maximum - 1;
- d->gtk_progress_configure((GtkProgress*)gtkProgressBar, fakePos, 0, maximum);
-
QRect progressBar;
if (!indeterminate) {
@@ -3501,9 +3545,9 @@ void QGtkStyle::drawControl(ControlElement element,
QString key = QString(QLS("%0")).arg(fakePos);
if (inverted) {
key += QLatin1String("inv");
- gtkPainter.setFlipHorizontal(true);
+ gtkPainter->setFlipHorizontal(true);
}
- gtkPainter.paintBox( gtkProgressBar, "bar", progressBar, GTK_STATE_SELECTED, GTK_SHADOW_OUT, style, key);
+ gtkPainter->paintBox(gtkProgressBar, "bar", progressBar, GTK_STATE_SELECTED, GTK_SHADOW_OUT, style, key);
}
break;
@@ -3762,19 +3806,15 @@ QRect QGtkStyle::subControlRect(ComplexControl control, const QStyleOptionComple
case CC_ComboBox:
if (const QStyleOptionComboBox *box = qstyleoption_cast<const QStyleOptionComboBox *>(option)) {
// We employ the gtk widget to position arrows and separators for us
- GtkWidget *gtkCombo = box->editable ? d->gtkWidget("GtkComboBoxEntry")
- : d->gtkWidget("GtkComboBox");
+ GtkWidget *gtkCombo = box->editable && QGtkStylePrivate::gtk_combo_box_entry_new ?
+ d->gtkWidget("GtkComboBoxEntry") : d->gtkWidget("GtkComboBox");
d->gtk_widget_set_direction(gtkCombo, (option->direction == Qt::RightToLeft) ? GTK_TEXT_DIR_RTL : GTK_TEXT_DIR_LTR);
GtkAllocation geometry = {0, 0, qMax(0, option->rect.width()), qMax(0, option->rect.height())};
d->gtk_widget_size_allocate(gtkCombo, &geometry);
int appears_as_list = !proxy()->styleHint(QStyle::SH_ComboBox_Popup, option, widget);
- QHashableLatin1Literal arrowPath("GtkComboBoxEntry.GtkToggleButton");
- if (!box->editable) {
- if (appears_as_list)
- arrowPath = "GtkComboBox.GtkToggleButton";
- else
- arrowPath = "GtkComboBox.GtkToggleButton.GtkHBox.GtkArrow";
- }
+ QHashableLatin1Literal arrowPath = box->editable && QGtkStylePrivate::gtk_combo_box_entry_new ?
+ QHashableLatin1Literal("GtkComboBoxEntry.GtkToggleButton") : box->editable || appears_as_list ?
+ QHashableLatin1Literal("GtkComboBox.GtkToggleButton") : QHashableLatin1Literal("GtkComboBox.GtkToggleButton.GtkHBox.GtkArrow");
GtkWidget *arrowWidget = d->gtkWidget(arrowPath);
if (!arrowWidget)
@@ -4039,31 +4079,31 @@ QPixmap QGtkStyle::standardPixmap(StandardPixmap sp, const QStyleOption *option,
break;
case SP_DialogDiscardButton:
- return QGtkPainter::getIcon(GTK_STOCK_DELETE);
+ return qt_gtk_get_icon(GTK_STOCK_DELETE);
case SP_DialogOkButton:
- return QGtkPainter::getIcon(GTK_STOCK_OK);
+ return qt_gtk_get_icon(GTK_STOCK_OK);
case SP_DialogCancelButton:
- return QGtkPainter::getIcon(GTK_STOCK_CANCEL);
+ return qt_gtk_get_icon(GTK_STOCK_CANCEL);
case SP_DialogYesButton:
- return QGtkPainter::getIcon(GTK_STOCK_YES);
+ return qt_gtk_get_icon(GTK_STOCK_YES);
case SP_DialogNoButton:
- return QGtkPainter::getIcon(GTK_STOCK_NO);
+ return qt_gtk_get_icon(GTK_STOCK_NO);
case SP_DialogOpenButton:
- return QGtkPainter::getIcon(GTK_STOCK_OPEN);
+ return qt_gtk_get_icon(GTK_STOCK_OPEN);
case SP_DialogCloseButton:
- return QGtkPainter::getIcon(GTK_STOCK_CLOSE);
+ return qt_gtk_get_icon(GTK_STOCK_CLOSE);
case SP_DialogApplyButton:
- return QGtkPainter::getIcon(GTK_STOCK_APPLY);
+ return qt_gtk_get_icon(GTK_STOCK_APPLY);
case SP_DialogSaveButton:
- return QGtkPainter::getIcon(GTK_STOCK_SAVE);
+ return qt_gtk_get_icon(GTK_STOCK_SAVE);
case SP_MessageBoxWarning:
- return QGtkPainter::getIcon(GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_DIALOG);
+ return qt_gtk_get_icon(GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_DIALOG);
case SP_MessageBoxQuestion:
- return QGtkPainter::getIcon(GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
+ return qt_gtk_get_icon(GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
case SP_MessageBoxInformation:
- return QGtkPainter::getIcon(GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG);
+ return qt_gtk_get_icon(GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG);
case SP_MessageBoxCritical:
- return QGtkPainter::getIcon(GTK_STOCK_DIALOG_ERROR, GTK_ICON_SIZE_DIALOG);
+ return qt_gtk_get_icon(GTK_STOCK_DIALOG_ERROR, GTK_ICON_SIZE_DIALOG);
default:
return QCommonStyle::standardPixmap(sp, option, widget);
}
@@ -4083,31 +4123,31 @@ QIcon QGtkStyle::standardIcon(StandardPixmap standardIcon,
return QCommonStyle::standardIcon(standardIcon, option, widget);
switch (standardIcon) {
case SP_DialogDiscardButton:
- return QGtkPainter::getIcon(GTK_STOCK_DELETE);
+ return qt_gtk_get_icon(GTK_STOCK_DELETE);
case SP_DialogOkButton:
- return QGtkPainter::getIcon(GTK_STOCK_OK);
+ return qt_gtk_get_icon(GTK_STOCK_OK);
case SP_DialogCancelButton:
- return QGtkPainter::getIcon(GTK_STOCK_CANCEL);
+ return qt_gtk_get_icon(GTK_STOCK_CANCEL);
case SP_DialogYesButton:
- return QGtkPainter::getIcon(GTK_STOCK_YES);
+ return qt_gtk_get_icon(GTK_STOCK_YES);
case SP_DialogNoButton:
- return QGtkPainter::getIcon(GTK_STOCK_NO);
+ return qt_gtk_get_icon(GTK_STOCK_NO);
case SP_DialogOpenButton:
- return QGtkPainter::getIcon(GTK_STOCK_OPEN);
+ return qt_gtk_get_icon(GTK_STOCK_OPEN);
case SP_DialogCloseButton:
- return QGtkPainter::getIcon(GTK_STOCK_CLOSE);
+ return qt_gtk_get_icon(GTK_STOCK_CLOSE);
case SP_DialogApplyButton:
- return QGtkPainter::getIcon(GTK_STOCK_APPLY);
+ return qt_gtk_get_icon(GTK_STOCK_APPLY);
case SP_DialogSaveButton:
- return QGtkPainter::getIcon(GTK_STOCK_SAVE);
+ return qt_gtk_get_icon(GTK_STOCK_SAVE);
case SP_MessageBoxWarning:
- return QGtkPainter::getIcon(GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_DIALOG);
+ return qt_gtk_get_icon(GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_DIALOG);
case SP_MessageBoxQuestion:
- return QGtkPainter::getIcon(GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
+ return qt_gtk_get_icon(GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
case SP_MessageBoxInformation:
- return QGtkPainter::getIcon(GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG);
+ return qt_gtk_get_icon(GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG);
case SP_MessageBoxCritical:
- return QGtkPainter::getIcon(GTK_STOCK_DIALOG_ERROR, GTK_ICON_SIZE_DIALOG);
+ return qt_gtk_get_icon(GTK_STOCK_DIALOG_ERROR, GTK_ICON_SIZE_DIALOG);
default:
return QCommonStyle::standardIcon(standardIcon, option, widget);
}
diff --git a/src/widgets/styles/qgtkstyle_p.cpp b/src/widgets/styles/qgtkstyle_p.cpp
index 3bd5688f31..57f0ee0161 100644
--- a/src/widgets/styles/qgtkstyle_p.cpp
+++ b/src/widgets/styles/qgtkstyle_p.cpp
@@ -62,6 +62,7 @@
#include <QtCore/QLibrary>
#include <QtCore/QDebug>
+#include <private/qgtk2painter_p.h>
#include <private/qapplication_p.h>
#include <private/qiconloader_p.h>
@@ -130,10 +131,10 @@ Ptr_gtk_separator_tool_item_new QGtkStylePrivate::gtk_separator_tool_item_new =
Ptr_gtk_tree_view_new QGtkStylePrivate::gtk_tree_view_new = 0;
Ptr_gtk_combo_box_new QGtkStylePrivate::gtk_combo_box_new = 0;
Ptr_gtk_combo_box_entry_new QGtkStylePrivate::gtk_combo_box_entry_new = 0;
+Ptr_gtk_combo_box_new_with_entry QGtkStylePrivate::gtk_combo_box_new_with_entry = 0;
Ptr_gtk_progress_bar_new QGtkStylePrivate::gtk_progress_bar_new = 0;
Ptr_gtk_container_add QGtkStylePrivate::gtk_container_add = 0;
Ptr_gtk_menu_shell_append QGtkStylePrivate::gtk_menu_shell_append = 0;
-Ptr_gtk_progress_configure QGtkStylePrivate::gtk_progress_configure = 0;
Ptr_gtk_range_get_adjustment QGtkStylePrivate::gtk_range_get_adjustment = 0;
Ptr_gtk_range_set_adjustment QGtkStylePrivate::gtk_range_set_adjustment = 0;
Ptr_gtk_range_set_inverted QGtkStylePrivate::gtk_range_set_inverted = 0;
@@ -146,23 +147,8 @@ Ptr_gtk_fixed_new QGtkStylePrivate::gtk_fixed_new = 0;
Ptr_gtk_tree_view_column_new QGtkStylePrivate::gtk_tree_view_column_new = 0;
Ptr_gtk_tree_view_get_column QGtkStylePrivate::gtk_tree_view_get_column = 0;
Ptr_gtk_tree_view_append_column QGtkStylePrivate::gtk_tree_view_append_column = 0;
-Ptr_gtk_paint_check QGtkStylePrivate::gtk_paint_check = 0;
-Ptr_gtk_paint_box QGtkStylePrivate::gtk_paint_box = 0;
-Ptr_gtk_paint_box_gap QGtkStylePrivate::gtk_paint_box_gap = 0;
-Ptr_gtk_paint_flat_box QGtkStylePrivate::gtk_paint_flat_box = 0;
-Ptr_gtk_paint_option QGtkStylePrivate::gtk_paint_option = 0;
-Ptr_gtk_paint_extension QGtkStylePrivate::gtk_paint_extension = 0;
-Ptr_gtk_paint_slider QGtkStylePrivate::gtk_paint_slider = 0;
-Ptr_gtk_paint_shadow QGtkStylePrivate::gtk_paint_shadow = 0;
-Ptr_gtk_paint_resize_grip QGtkStylePrivate::gtk_paint_resize_grip = 0;
-Ptr_gtk_paint_focus QGtkStylePrivate::gtk_paint_focus = 0;
-Ptr_gtk_paint_arrow QGtkStylePrivate::gtk_paint_arrow = 0;
-Ptr_gtk_paint_handle QGtkStylePrivate::gtk_paint_handle = 0;
-Ptr_gtk_paint_expander QGtkStylePrivate::gtk_paint_expander = 0;
Ptr_gtk_adjustment_configure QGtkStylePrivate::gtk_adjustment_configure = 0;
Ptr_gtk_adjustment_new QGtkStylePrivate::gtk_adjustment_new = 0;
-Ptr_gtk_paint_hline QGtkStylePrivate::gtk_paint_hline = 0;
-Ptr_gtk_paint_vline QGtkStylePrivate::gtk_paint_vline = 0;
Ptr_gtk_menu_item_set_submenu QGtkStylePrivate::gtk_menu_item_set_submenu = 0;
Ptr_gtk_settings_get_default QGtkStylePrivate::gtk_settings_get_default = 0;
Ptr_gtk_separator_menu_item_new QGtkStylePrivate::gtk_separator_menu_item_new = 0;
@@ -175,11 +161,18 @@ Ptr_gtk_window_get_type QGtkStylePrivate::gtk_window_get_type = 0;
Ptr_gtk_widget_get_type QGtkStylePrivate::gtk_widget_get_type = 0;
Ptr_gtk_widget_get_parent QGtkStylePrivate::gtk_widget_get_parent = 0;
Ptr_gtk_widget_is_toplevel QGtkStylePrivate::gtk_widget_is_toplevel = 0;
+Ptr_gtk_widget_get_toplevel QGtkStylePrivate::gtk_widget_get_toplevel = 0;
Ptr_gtk_rc_get_style_by_paths QGtkStylePrivate::gtk_rc_get_style_by_paths = 0;
Ptr_gtk_check_version QGtkStylePrivate::gtk_check_version = 0;
Ptr_gtk_border_free QGtkStylePrivate::gtk_border_free = 0;
Ptr_gtk_widget_get_allocation QGtkStylePrivate::gtk_widget_get_allocation = 0;
Ptr_gtk_widget_set_allocation QGtkStylePrivate::gtk_widget_set_allocation = 0;
+Ptr_gtk_widget_set_can_default QGtkStylePrivate::gtk_widget_set_can_default = 0;
+Ptr_gtk_window_set_default QGtkStylePrivate::gtk_window_set_default = 0;
+
+Ptr_gdk_event_new QGtkStylePrivate::gdk_event_new = 0;
+Ptr_gdk_event_free QGtkStylePrivate::gdk_event_free = 0;
+Ptr_gtk_widget_send_focus_change QGtkStylePrivate::gtk_widget_send_focus_change = 0;
Ptr_pango_font_description_get_size QGtkStylePrivate::pango_font_description_get_size = 0;
Ptr_pango_font_description_get_weight QGtkStylePrivate::pango_font_description_get_weight = 0;
@@ -203,12 +196,8 @@ Ptr_gtk_file_chooser_set_filename QGtkStylePrivate::gtk_file_chooser_set_filenam
Ptr_gdk_pixbuf_get_pixels QGtkStylePrivate::gdk_pixbuf_get_pixels = 0;
Ptr_gdk_pixbuf_get_width QGtkStylePrivate::gdk_pixbuf_get_width = 0;
Ptr_gdk_pixbuf_get_height QGtkStylePrivate::gdk_pixbuf_get_height = 0;
-Ptr_gdk_pixmap_new QGtkStylePrivate::gdk_pixmap_new = 0;
Ptr_gdk_pixbuf_new QGtkStylePrivate::gdk_pixbuf_new = 0;
-Ptr_gdk_pixbuf_get_from_drawable QGtkStylePrivate::gdk_pixbuf_get_from_drawable = 0;
-Ptr_gdk_draw_rectangle QGtkStylePrivate::gdk_draw_rectangle = 0;
Ptr_gdk_pixbuf_unref QGtkStylePrivate::gdk_pixbuf_unref = 0;
-Ptr_gdk_drawable_unref QGtkStylePrivate::gdk_drawable_unref = 0;
Ptr_gdk_color_free QGtkStylePrivate::gdk_color_free = 0;
Ptr_gdk_x11_window_set_user_time QGtkStylePrivate::gdk_x11_window_set_user_time = 0;
Ptr_gdk_x11_drawable_get_xid QGtkStylePrivate::gdk_x11_drawable_get_xid = 0;
@@ -307,6 +296,14 @@ void QGtkStylePrivate::init()
initGtkWidgets();
}
+QGtkPainter* QGtkStylePrivate::gtkPainter(QPainter *painter)
+{
+ // TODO: choose between gtk2 and gtk3
+ static QGtk2Painter instance;
+ instance.reset(painter);
+ return &instance;
+}
+
GtkWidget* QGtkStylePrivate::gtkWidget(const QHashableLatin1Literal &path)
{
GtkWidget *widget = gtkWidgetMap()->value(path);
@@ -324,6 +321,24 @@ GtkStyle* QGtkStylePrivate::gtkStyle(const QHashableLatin1Literal &path)
return 0;
}
+void QGtkStylePrivate::gtkWidgetSetFocus(GtkWidget *widget, bool focus)
+{
+ if (QGtkStylePrivate::gtk_widget_send_focus_change) {
+ GdkEvent *event = QGtkStylePrivate::gdk_event_new(GDK_FOCUS_CHANGE);
+ event->focus_change.type = GDK_FOCUS_CHANGE;
+ event->focus_change.in = focus;
+ QGtkStylePrivate::gtk_widget_send_focus_change(widget, event);
+ QGtkStylePrivate::gdk_event_free(event);
+ } else {
+#if defined(GTK_WIDGET_SET_FLAGS) && defined(GTK_WIDGET_UNSET_FLAGS)
+ if (focus)
+ GTK_WIDGET_SET_FLAGS(widget, GTK_HAS_FOCUS);
+ else
+ GTK_WIDGET_UNSET_FLAGS(widget, GTK_HAS_FOCUS);
+#endif
+ }
+}
+
/*! \internal
* Get references to gtk functions after we dynamically load the library.
*/
@@ -356,12 +371,8 @@ void QGtkStylePrivate::resolveGtk() const
gdk_pixbuf_get_pixels = (Ptr_gdk_pixbuf_get_pixels)libgtk.resolve("gdk_pixbuf_get_pixels");
gdk_pixbuf_get_width = (Ptr_gdk_pixbuf_get_width)libgtk.resolve("gdk_pixbuf_get_width");
gdk_pixbuf_get_height = (Ptr_gdk_pixbuf_get_height)libgtk.resolve("gdk_pixbuf_get_height");
- gdk_pixmap_new = (Ptr_gdk_pixmap_new)libgtk.resolve("gdk_pixmap_new");
gdk_pixbuf_new = (Ptr_gdk_pixbuf_new)libgtk.resolve("gdk_pixbuf_new");
- gdk_pixbuf_get_from_drawable = (Ptr_gdk_pixbuf_get_from_drawable)libgtk.resolve("gdk_pixbuf_get_from_drawable");
- gdk_draw_rectangle = (Ptr_gdk_draw_rectangle)libgtk.resolve("gdk_draw_rectangle");
gdk_pixbuf_unref = (Ptr_gdk_pixbuf_unref)libgtk.resolve("gdk_pixbuf_unref");
- gdk_drawable_unref = (Ptr_gdk_drawable_unref)libgtk.resolve("gdk_drawable_unref");
gdk_color_free = (Ptr_gdk_color_free)libgtk.resolve("gdk_color_free");
gdk_x11_window_set_user_time = (Ptr_gdk_x11_window_set_user_time)libgtk.resolve("gdk_x11_window_set_user_time");
gdk_x11_drawable_get_xid = (Ptr_gdk_x11_drawable_get_xid)libgtk.resolve("gdk_x11_drawable_get_xid");
@@ -395,7 +406,8 @@ void QGtkStylePrivate::resolveGtk() const
gtk_entry_new = (Ptr_gtk_entry_new)libgtk.resolve("gtk_entry_new");
gtk_tree_view_new = (Ptr_gtk_tree_view_new)libgtk.resolve("gtk_tree_view_new");
gtk_combo_box_new = (Ptr_gtk_combo_box_new)libgtk.resolve("gtk_combo_box_new");
- gtk_progress_configure = (Ptr_gtk_progress_configure)libgtk.resolve("gtk_progress_configure");
+ gtk_combo_box_entry_new = (Ptr_gtk_combo_box_entry_new)libgtk.resolve("gtk_combo_box_entry_new");
+ gtk_combo_box_new_with_entry = (Ptr_gtk_combo_box_entry_new)libgtk.resolve("gtk_combo_box_new_with_entry");
gtk_range_get_adjustment = (Ptr_gtk_range_get_adjustment)libgtk.resolve("gtk_range_get_adjustment");
gtk_range_set_adjustment = (Ptr_gtk_range_set_adjustment)libgtk.resolve("gtk_range_set_adjustment");
gtk_range_set_inverted = (Ptr_gtk_range_set_inverted)libgtk.resolve("gtk_range_set_inverted");
@@ -409,23 +421,6 @@ void QGtkStylePrivate::resolveGtk() const
gtk_tree_view_column_new = (Ptr_gtk_tree_view_column_new)libgtk.resolve("gtk_tree_view_column_new");
gtk_tree_view_append_column= (Ptr_gtk_tree_view_append_column )libgtk.resolve("gtk_tree_view_append_column");
gtk_tree_view_get_column = (Ptr_gtk_tree_view_get_column )libgtk.resolve("gtk_tree_view_get_column");
- gtk_paint_check = (Ptr_gtk_paint_check)libgtk.resolve("gtk_paint_check");
- gtk_paint_box = (Ptr_gtk_paint_box)libgtk.resolve("gtk_paint_box");
- gtk_paint_flat_box = (Ptr_gtk_paint_flat_box)libgtk.resolve("gtk_paint_flat_box");
- gtk_paint_check = (Ptr_gtk_paint_check)libgtk.resolve("gtk_paint_check");
- gtk_paint_box = (Ptr_gtk_paint_box)libgtk.resolve("gtk_paint_box");
- gtk_paint_resize_grip = (Ptr_gtk_paint_resize_grip)libgtk.resolve("gtk_paint_resize_grip");
- gtk_paint_focus = (Ptr_gtk_paint_focus)libgtk.resolve("gtk_paint_focus");
- gtk_paint_shadow = (Ptr_gtk_paint_shadow)libgtk.resolve("gtk_paint_shadow");
- gtk_paint_slider = (Ptr_gtk_paint_slider)libgtk.resolve("gtk_paint_slider");
- gtk_paint_expander = (Ptr_gtk_paint_expander)libgtk.resolve("gtk_paint_expander");
- gtk_paint_handle = (Ptr_gtk_paint_handle)libgtk.resolve("gtk_paint_handle");
- gtk_paint_option = (Ptr_gtk_paint_option)libgtk.resolve("gtk_paint_option");
- gtk_paint_arrow = (Ptr_gtk_paint_arrow)libgtk.resolve("gtk_paint_arrow");
- gtk_paint_box_gap = (Ptr_gtk_paint_box_gap)libgtk.resolve("gtk_paint_box_gap");
- gtk_paint_extension = (Ptr_gtk_paint_extension)libgtk.resolve("gtk_paint_extension");
- gtk_paint_hline = (Ptr_gtk_paint_hline)libgtk.resolve("gtk_paint_hline");
- gtk_paint_vline = (Ptr_gtk_paint_vline)libgtk.resolve("gtk_paint_vline");
gtk_adjustment_configure = (Ptr_gtk_adjustment_configure)libgtk.resolve("gtk_adjustment_configure");
gtk_adjustment_new = (Ptr_gtk_adjustment_new)libgtk.resolve("gtk_adjustment_new");
gtk_menu_item_set_submenu = (Ptr_gtk_menu_item_set_submenu)libgtk.resolve("gtk_menu_item_set_submenu");
@@ -434,7 +429,6 @@ void QGtkStylePrivate::resolveGtk() const
gtk_frame_new = (Ptr_gtk_frame_new)libgtk.resolve("gtk_frame_new");
gtk_expander_new = (Ptr_gtk_expander_new)libgtk.resolve("gtk_expander_new");
gtk_statusbar_new = (Ptr_gtk_statusbar_new)libgtk.resolve("gtk_statusbar_new");
- gtk_combo_box_entry_new = (Ptr_gtk_combo_box_entry_new)libgtk.resolve("gtk_combo_box_entry_new");
gtk_container_forall = (Ptr_gtk_container_forall)libgtk.resolve("gtk_container_forall");
gtk_widget_size_allocate =(Ptr_gtk_widget_size_allocate)libgtk.resolve("gtk_widget_size_allocate");
gtk_widget_size_request =(Ptr_gtk_widget_size_request)libgtk.resolve("gtk_widget_size_request");
@@ -445,6 +439,7 @@ void QGtkStylePrivate::resolveGtk() const
gtk_widget_get_type =(Ptr_gtk_widget_get_type)libgtk.resolve("gtk_widget_get_type");
gtk_widget_get_parent =(Ptr_gtk_widget_get_parent)libgtk.resolve("gtk_widget_get_parent");
gtk_widget_is_toplevel =(Ptr_gtk_widget_is_toplevel)libgtk.resolve("gtk_widget_is_toplevel");
+ gtk_widget_get_toplevel =(Ptr_gtk_widget_get_toplevel)libgtk.resolve("gtk_widget_get_toplevel");
gtk_rc_get_style_by_paths =(Ptr_gtk_rc_get_style_by_paths)libgtk.resolve("gtk_rc_get_style_by_paths");
gtk_check_version =(Ptr_gtk_check_version)libgtk.resolve("gtk_check_version");
@@ -452,6 +447,13 @@ void QGtkStylePrivate::resolveGtk() const
gtk_widget_get_allocation = (Ptr_gtk_widget_get_allocation)libgtk.resolve("gtk_widget_get_allocation");
gtk_widget_set_allocation = (Ptr_gtk_widget_set_allocation)libgtk.resolve("gtk_widget_set_allocation");
+ gtk_widget_set_can_default = (Ptr_gtk_widget_set_can_default)libgtk.resolve("gtk_widget_set_can_default");
+ gtk_window_set_default = (Ptr_gtk_window_set_default)libgtk.resolve("gtk_window_set_default");
+
+ gdk_event_new = (Ptr_gdk_event_new)libgtk.resolve("gdk_event_new");
+ gdk_event_free = (Ptr_gdk_event_free)libgtk.resolve("gdk_event_free");
+ gtk_widget_send_focus_change = (Ptr_gtk_widget_send_focus_change)libgtk.resolve("gtk_widget_send_focus_change");
+
pango_font_description_get_size = (Ptr_pango_font_description_get_size)libgtk.resolve("pango_font_description_get_size");
pango_font_description_get_weight = (Ptr_pango_font_description_get_weight)libgtk.resolve("pango_font_description_get_weight");
pango_font_description_get_family = (Ptr_pango_font_description_get_family)libgtk.resolve("pango_font_description_get_family");
@@ -565,26 +567,28 @@ void QGtkStylePrivate::initGtkWidgets() const
addWidget(QGtkStylePrivate::gtk_check_button_new());
addWidget(QGtkStylePrivate::gtk_radio_button_new(NULL));
addWidget(QGtkStylePrivate::gtk_combo_box_new());
- addWidget(QGtkStylePrivate::gtk_combo_box_entry_new());
+ if (gtk_combo_box_entry_new)
+ addWidget(QGtkStylePrivate::gtk_combo_box_entry_new());
+ if (gtk_combo_box_new_with_entry)
+ addWidget(QGtkStylePrivate::gtk_combo_box_new_with_entry());
addWidget(QGtkStylePrivate::gtk_entry_new());
addWidget(QGtkStylePrivate::gtk_frame_new(NULL));
addWidget(QGtkStylePrivate::gtk_expander_new(""));
addWidget(QGtkStylePrivate::gtk_statusbar_new());
- addWidget(QGtkStylePrivate::gtk_hscale_new((GtkAdjustment*)(QGtkStylePrivate::gtk_adjustment_new(1, 0, 1, 0, 0, 0))));
+ addWidget(QGtkStylePrivate::gtk_hscale_new((QGtkStylePrivate::gtk_adjustment_new(1, 0, 1, 0, 0, 0))));
addWidget(QGtkStylePrivate::gtk_hscrollbar_new(NULL));
addWidget(QGtkStylePrivate::gtk_scrolled_window_new(NULL, NULL));
initGtkMenu();
addWidget(QGtkStylePrivate::gtk_notebook_new());
addWidget(QGtkStylePrivate::gtk_progress_bar_new());
- addWidget(QGtkStylePrivate::gtk_spin_button_new((GtkAdjustment*)
- (QGtkStylePrivate::gtk_adjustment_new(1, 0, 1, 0, 0, 0)), 0.1, 3));
+ addWidget(QGtkStylePrivate::gtk_spin_button_new((QGtkStylePrivate::gtk_adjustment_new(1, 0, 1, 0, 0, 0)), 0.1, 3));
GtkWidget *toolbar = gtk_toolbar_new();
g_signal_connect (toolbar, "notify::toolbar-style", G_CALLBACK (update_toolbar_style), toolbar);
gtk_toolbar_insert((GtkToolbar*)toolbar, gtk_separator_tool_item_new(), -1);
addWidget(toolbar);
initGtkTreeview();
- addWidget(gtk_vscale_new((GtkAdjustment*)(QGtkStylePrivate::gtk_adjustment_new(1, 0, 1, 0, 0, 0))));
+ addWidget(gtk_vscale_new((QGtkStylePrivate::gtk_adjustment_new(1, 0, 1, 0, 0, 0))));
addWidget(gtk_vscrollbar_new(NULL));
}
else // Rebuild map
@@ -796,7 +800,7 @@ void QGtkStylePrivate::addAllSubWidgets(GtkWidget *widget, gpointer v)
{
Q_UNUSED(v);
addWidgetToMap(widget);
- if (GTK_CHECK_TYPE ((widget), gtk_container_get_type()))
+ if (G_TYPE_CHECK_INSTANCE_TYPE ((widget), gtk_container_get_type()))
gtk_container_forall((GtkContainer*)widget, addAllSubWidgets, NULL);
}
diff --git a/src/widgets/styles/qgtkstyle_p.h b/src/widgets/styles/qgtkstyle_p.h
index 71c70c41f1..fc911f68a5 100644
--- a/src/widgets/styles/qgtkstyle_p.h
+++ b/src/widgets/styles/qgtkstyle_p.h
@@ -64,17 +64,9 @@
#include <QtWidgets/QGtkStyle>
#include <private/qcommonstyle_p.h>
+#include <private/qgtkglobal_p.h>
-#undef signals // Collides with GTK symbols
-#include <gtk/gtk.h>
-
-typedef unsigned long XID;
-
-#undef GTK_OBJECT_FLAGS
-#define GTK_OBJECT_FLAGS(obj)(((GtkObject*)(obj))->flags)
-#define Q_GTK_IS_WIDGET(widget) widget && GTK_CHECK_TYPE ((widget), QGtkStylePrivate::gtk_widget_get_type())
-
-#define QLS(x) QLatin1String(x)
+#define Q_GTK_IS_WIDGET(widget) widget && G_TYPE_CHECK_INSTANCE_TYPE ((widget), QGtkStylePrivate::gtk_widget_get_type())
QT_BEGIN_NAMESPACE
@@ -149,7 +141,9 @@ typedef GtkWidget* (*Ptr_gtk_separator_menu_item_new)(void);
typedef GtkWidget* (*Ptr_gtk_check_menu_item_new_with_label)(const gchar *);
typedef GtkWidget* (*Ptr_gtk_menu_bar_new)(void);
typedef GtkWidget* (*Ptr_gtk_menu_new)(void);
+typedef GtkWidget* (*Ptr_gtk_combo_box_new)(void);
typedef GtkWidget* (*Ptr_gtk_combo_box_entry_new)(void);
+typedef GtkWidget* (*Ptr_gtk_combo_box_new_with_entry)(void);
typedef GtkWidget* (*Ptr_gtk_toolbar_new)(void);
typedef GtkWidget* (*Ptr_gtk_spin_button_new)(GtkAdjustment*, double, int);
typedef GtkWidget* (*Ptr_gtk_button_new)(void);
@@ -169,14 +163,12 @@ typedef GtkToolItem* (*Ptr_gtk_separator_tool_item_new) (void);
typedef GtkWidget* (*Ptr_gtk_entry_new)(void);
typedef GtkWidget* (*Ptr_gtk_tree_view_new)(void);
typedef GtkTreeViewColumn* (*Ptr_gtk_tree_view_get_column)(GtkTreeView *, gint);
-typedef GtkWidget* (*Ptr_gtk_combo_box_new)(void);
typedef GtkWidget* (*Ptr_gtk_frame_new)(const gchar *);
typedef GtkWidget* (*Ptr_gtk_expander_new)(const gchar*);
typedef GtkWidget* (*Ptr_gtk_statusbar_new)(void);
typedef GtkSettings* (*Ptr_gtk_settings_get_default)(void);
typedef GtkAdjustment* (*Ptr_gtk_range_get_adjustment)(GtkRange *);
typedef void (*Ptr_gtk_range_set_adjustment)(GtkRange *, GtkAdjustment *);
-typedef void (*Ptr_gtk_progress_configure)(GtkProgress *, double, double, double);
typedef void (*Ptr_gtk_range_set_inverted)(GtkRange*, bool);
typedef void (*Ptr_gtk_container_add)(GtkContainer *container, GtkWidget *widget);
typedef GtkIconSet* (*Ptr_gtk_icon_factory_lookup_default) (const gchar*);
@@ -187,23 +179,8 @@ typedef GtkTreeViewColumn* (*Ptr_gtk_tree_view_column_new)(void);
typedef GtkWidget* (*Ptr_gtk_fixed_new)(void);
typedef GdkPixbuf* (*Ptr_gtk_icon_set_render_icon)(GtkIconSet *, GtkStyle *, GtkTextDirection, GtkStateType, GtkIconSize, GtkWidget *,const char *);
typedef void (*Ptr_gtk_tree_view_append_column) (GtkTreeView*, GtkTreeViewColumn*);
-typedef void (*Ptr_gtk_paint_check) (GtkStyle*,GdkWindow*, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , gint , gint);
-typedef void (*Ptr_gtk_paint_box) (GtkStyle*,GdkWindow*, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , gint , gint);
-typedef void (*Ptr_gtk_paint_box_gap) (GtkStyle*,GdkWindow*, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint, gint, gint , gint, GtkPositionType, gint gap_x, gint gap_width);
-typedef void (*Ptr_gtk_paint_resize_grip) (GtkStyle*,GdkWindow*, GtkStateType, const GdkRectangle *, GtkWidget *, const gchar *, GdkWindowEdge, gint , gint , gint , gint);
-typedef void (*Ptr_gtk_paint_focus) (GtkStyle*,GdkWindow*, GtkStateType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , gint , gint);
-typedef void (*Ptr_gtk_paint_shadow) (GtkStyle*,GdkWindow*, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , gint , gint);
-typedef void (*Ptr_gtk_paint_slider) (GtkStyle*,GdkWindow*, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , gint , gint, GtkOrientation);
-typedef void (*Ptr_gtk_paint_expander) (GtkStyle*,GdkWindow*, GtkStateType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , GtkExpanderStyle );
-typedef void (*Ptr_gtk_paint_handle) (GtkStyle*,GdkWindow*, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , gint , gint, GtkOrientation);
-typedef void (*Ptr_gtk_paint_arrow) (GtkStyle*,GdkWindow*, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, GtkArrowType, gboolean, gint , gint , gint , gint);
-typedef void (*Ptr_gtk_paint_option) (GtkStyle*,GdkWindow*, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , gint , gint);
-typedef void (*Ptr_gtk_paint_flat_box) (GtkStyle*,GdkWindow*, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , gint , gint);
-typedef void (*Ptr_gtk_paint_extension) (GtkStyle *, GdkWindow *, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint, gint, gint, gint, GtkPositionType);
typedef void (*Ptr_gtk_adjustment_configure) (GtkAdjustment *, double, double, double, double, double, double);
-typedef GtkObject* (*Ptr_gtk_adjustment_new) (double, double, double, double, double, double);
-typedef void (*Ptr_gtk_paint_hline) (GtkStyle *, GdkWindow *, GtkStateType, const GdkRectangle *, GtkWidget *, const gchar *, gint, gint, gint y);
-typedef void (*Ptr_gtk_paint_vline) (GtkStyle *, GdkWindow *, GtkStateType, const GdkRectangle *, GtkWidget *, const gchar *, gint, gint, gint);
+typedef GtkAdjustment* (*Ptr_gtk_adjustment_new) (double, double, double, double, double, double);
typedef void (*Ptr_gtk_menu_item_set_submenu) (GtkMenuItem *, GtkWidget *);
typedef void (*Ptr_gtk_container_forall) (GtkContainer *, GtkCallback, gpointer);
typedef void (*Ptr_gtk_widget_size_allocate) (GtkWidget *, GtkAllocation*);
@@ -213,11 +190,12 @@ typedef void (*Ptr_gtk_widget_path) (GtkWidget *, guint *, gchar **, gchar**);
typedef void (*Ptr_gtk_toolbar_insert) (GtkToolbar *toolbar, GtkToolItem *item, int pos);
typedef void (*Ptr_gtk_menu_shell_append)(GtkMenuShell *, GtkWidget *);
-typedef GtkType (*Ptr_gtk_container_get_type) (void);
-typedef GtkType (*Ptr_gtk_window_get_type) (void);
-typedef GtkType (*Ptr_gtk_widget_get_type) (void);
+typedef GType (*Ptr_gtk_container_get_type) (void);
+typedef GType (*Ptr_gtk_window_get_type) (void);
+typedef GType (*Ptr_gtk_widget_get_type) (void);
typedef GtkWidget* (*Ptr_gtk_widget_get_parent) (GtkWidget *);
typedef gboolean (*Ptr_gtk_widget_is_toplevel) (GtkWidget *);
+typedef GtkWidget* (*Ptr_gtk_widget_get_toplevel) (GtkWidget *);
typedef GtkStyle* (*Ptr_gtk_rc_get_style_by_paths) (GtkSettings *, const char *, const char *, GType);
typedef gint (*Ptr_pango_font_description_get_size) (const PangoFontDescription *);
typedef PangoWeight (*Ptr_pango_font_description_get_weight) (const PangoFontDescription *);
@@ -244,21 +222,20 @@ typedef void (*Ptr_gtk_border_free)(GtkBorder *);
typedef void (*Ptr_gtk_widget_get_allocation) (GtkWidget*, GtkAllocation*);
typedef void (*Ptr_gtk_widget_set_allocation) (GtkWidget*, const GtkAllocation*);
+typedef void (*Ptr_gtk_widget_set_can_default) (GtkWidget*, gboolean);
+typedef void (*Ptr_gtk_window_set_default) (GtkWindow*, GtkWidget*);
+
+typedef GdkEvent* (*Ptr_gdk_event_new) (GdkEventType);
+typedef void (*Ptr_gdk_event_free) (GdkEvent*);
+typedef void (*Ptr_gtk_widget_send_focus_change) (GtkWidget*, GdkEvent*);
+
typedef guchar* (*Ptr_gdk_pixbuf_get_pixels) (const GdkPixbuf *pixbuf);
typedef int (*Ptr_gdk_pixbuf_get_width) (const GdkPixbuf *pixbuf);
typedef void (*Ptr_gdk_color_free) (const GdkColor *);
typedef int (*Ptr_gdk_pixbuf_get_height) (const GdkPixbuf *pixbuf);
-typedef GdkPixbuf* (*Ptr_gdk_pixbuf_get_from_drawable) (GdkPixbuf *dest, GdkDrawable *src,
- GdkColormap *cmap, int src_x,
- int src_y, int dest_x, int dest_y,
- int width, int height);
-typedef GdkPixmap* (*Ptr_gdk_pixmap_new) (GdkDrawable *drawable, gint width, gint height, gint depth);
typedef GdkPixbuf* (*Ptr_gdk_pixbuf_new) (GdkColorspace colorspace, gboolean has_alpha,
- int bits_per_sample, int width, int height);
-typedef void (*Ptr_gdk_draw_rectangle) (GdkDrawable *drawable, GdkGC *gc,
- gboolean filled, gint x, gint y, gint width, gint height);
+ int bits_per_sample, int width, int height);
typedef void (*Ptr_gdk_pixbuf_unref)(GdkPixbuf *);
-typedef void (*Ptr_gdk_drawable_unref)(GdkDrawable *);
typedef void (*Ptr_gdk_x11_window_set_user_time) (GdkWindow *window, guint32);
typedef XID (*Ptr_gdk_x11_drawable_get_xid) (GdkDrawable *);
typedef Display* (*Ptr_gdk_x11_drawable_get_xdisplay) ( GdkDrawable *);
@@ -282,6 +259,7 @@ extern Q_WIDGETS_EXPORT _qt_filedialog_save_filename_hook qt_filedialog_save_fil
extern Q_WIDGETS_EXPORT _qt_filedialog_existing_directory_hook qt_filedialog_existing_directory_hook;
#endif //!QT_NO_FILEDIALOG
+class QGtkPainter;
class QGtkStylePrivate;
class QGtkStyleFilter : public QObject
@@ -326,8 +304,10 @@ public:
QGtkStyleFilter filter;
+ static QGtkPainter* gtkPainter(QPainter *painter = 0);
static GtkWidget* gtkWidget(const QHashableLatin1Literal &path);
static GtkStyle* gtkStyle(const QHashableLatin1Literal &path = QHashableLatin1Literal("GtkWindow"));
+ static void gtkWidgetSetFocus(GtkWidget *widget, bool focus);
virtual void resolveGtk() const;
virtual void initGtkMenu() const;
@@ -400,10 +380,10 @@ public:
static Ptr_gtk_tree_view_get_column gtk_tree_view_get_column;
static Ptr_gtk_combo_box_new gtk_combo_box_new;
static Ptr_gtk_combo_box_entry_new gtk_combo_box_entry_new;
+ static Ptr_gtk_combo_box_new_with_entry gtk_combo_box_new_with_entry;
static Ptr_gtk_progress_bar_new gtk_progress_bar_new;
static Ptr_gtk_container_add gtk_container_add;
static Ptr_gtk_menu_shell_append gtk_menu_shell_append;
- static Ptr_gtk_progress_configure gtk_progress_configure;
static Ptr_gtk_range_get_adjustment gtk_range_get_adjustment;
static Ptr_gtk_range_set_adjustment gtk_range_set_adjustment;
static Ptr_gtk_range_set_inverted gtk_range_set_inverted;
@@ -415,23 +395,8 @@ public:
static Ptr_gtk_fixed_new gtk_fixed_new;
static Ptr_gtk_tree_view_column_new gtk_tree_view_column_new;
static Ptr_gtk_tree_view_append_column gtk_tree_view_append_column;
- static Ptr_gtk_paint_check gtk_paint_check;
- static Ptr_gtk_paint_box gtk_paint_box;
- static Ptr_gtk_paint_box_gap gtk_paint_box_gap;
- static Ptr_gtk_paint_flat_box gtk_paint_flat_box;
- static Ptr_gtk_paint_option gtk_paint_option;
- static Ptr_gtk_paint_extension gtk_paint_extension;
- static Ptr_gtk_paint_slider gtk_paint_slider;
- static Ptr_gtk_paint_shadow gtk_paint_shadow;
- static Ptr_gtk_paint_resize_grip gtk_paint_resize_grip;
- static Ptr_gtk_paint_focus gtk_paint_focus;
- static Ptr_gtk_paint_arrow gtk_paint_arrow;
- static Ptr_gtk_paint_handle gtk_paint_handle;
- static Ptr_gtk_paint_expander gtk_paint_expander;
static Ptr_gtk_adjustment_configure gtk_adjustment_configure;
static Ptr_gtk_adjustment_new gtk_adjustment_new;
- static Ptr_gtk_paint_vline gtk_paint_vline;
- static Ptr_gtk_paint_hline gtk_paint_hline;
static Ptr_gtk_menu_item_set_submenu gtk_menu_item_set_submenu;
static Ptr_gtk_settings_get_default gtk_settings_get_default;
static Ptr_gtk_separator_menu_item_new gtk_separator_menu_item_new;
@@ -444,11 +409,18 @@ public:
static Ptr_gtk_widget_get_type gtk_widget_get_type;
static Ptr_gtk_widget_get_parent gtk_widget_get_parent;
static Ptr_gtk_widget_is_toplevel gtk_widget_is_toplevel;
+ static Ptr_gtk_widget_get_toplevel gtk_widget_get_toplevel;
static Ptr_gtk_rc_get_style_by_paths gtk_rc_get_style_by_paths;
static Ptr_gtk_check_version gtk_check_version;
static Ptr_gtk_border_free gtk_border_free;
static Ptr_gtk_widget_get_allocation gtk_widget_get_allocation;
static Ptr_gtk_widget_set_allocation gtk_widget_set_allocation;
+ static Ptr_gtk_widget_set_can_default gtk_widget_set_can_default;
+ static Ptr_gtk_window_set_default gtk_window_set_default;
+
+ static Ptr_gdk_event_new gdk_event_new;
+ static Ptr_gdk_event_free gdk_event_free;
+ static Ptr_gtk_widget_send_focus_change gtk_widget_send_focus_change;
static Ptr_pango_font_description_get_size pango_font_description_get_size;
static Ptr_pango_font_description_get_weight pango_font_description_get_weight;
@@ -472,12 +444,8 @@ public:
static Ptr_gdk_pixbuf_get_pixels gdk_pixbuf_get_pixels;
static Ptr_gdk_pixbuf_get_width gdk_pixbuf_get_width;
static Ptr_gdk_pixbuf_get_height gdk_pixbuf_get_height;
- static Ptr_gdk_pixmap_new gdk_pixmap_new;
static Ptr_gdk_pixbuf_new gdk_pixbuf_new;
- static Ptr_gdk_pixbuf_get_from_drawable gdk_pixbuf_get_from_drawable;
- static Ptr_gdk_draw_rectangle gdk_draw_rectangle;
static Ptr_gdk_pixbuf_unref gdk_pixbuf_unref;
- static Ptr_gdk_drawable_unref gdk_drawable_unref;
static Ptr_gdk_color_free gdk_color_free;
static Ptr_gdk_x11_window_set_user_time gdk_x11_window_set_user_time;
static Ptr_gdk_x11_drawable_get_xid gdk_x11_drawable_get_xid;
diff --git a/src/widgets/styles/qmacstyle_mac.h b/src/widgets/styles/qmacstyle_mac.h
index 60d5ec21eb..1de1dbbdd8 100644
--- a/src/widgets/styles/qmacstyle_mac.h
+++ b/src/widgets/styles/qmacstyle_mac.h
@@ -104,8 +104,9 @@ public:
enum WidgetSizePolicy { SizeSmall, SizeLarge, SizeMini, SizeDefault
};
+
static void setWidgetSizePolicy(const QWidget *w, WidgetSizePolicy policy);
- static WidgetSizePolicy widgetSizePolicy(const QWidget *w);
+ static WidgetSizePolicy widgetSizePolicy(const QWidget *w, const QStyleOption *opt = 0);
QPixmap standardPixmap(StandardPixmap sp, const QStyleOption *opt,
const QWidget *widget = 0) const;
@@ -124,9 +125,6 @@ public:
Qt::Orientation orientation, const QStyleOption *option = 0,
const QWidget *widget = 0) const;
-protected:
- bool eventFilter(QObject *, QEvent *);
-
private:
Q_DISABLE_COPY(QMacStyle)
Q_DECLARE_PRIVATE(QMacStyle)
diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm
index 83895b64b0..baeda89642 100644
--- a/src/widgets/styles/qmacstyle_mac.mm
+++ b/src/widgets/styles/qmacstyle_mac.mm
@@ -127,9 +127,9 @@ QMacStylePrivate *mPrivate;
{
Q_UNUSED(notification);
QEvent event(QEvent::StyleChange);
- Q_FOREACH (const QObject* target, mPrivate->animationTargets()) {
- if (target)
- QCoreApplication::sendEvent(const_cast<QObject*>(target), &event);
+ foreach (QWidget *widget, QApplication::allWidgets()) {
+ if (QScrollBar *scrollBar = qobject_cast<QScrollBar *>(widget))
+ QCoreApplication::sendEvent(scrollBar, &event);
}
}
@end
@@ -178,38 +178,6 @@ static bool isVerticalTabs(const QTabBar::Shape shape) {
|| shape == QTabBar::TriangularWest);
}
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
-/*!
- Returns the QAbstractScrollArea the scroll bar \a sb is in. If \a sb is not
- inside of a QAbstractScrollArea, this returns 0.
- \internal
- */
-static const QAbstractScrollArea *scrollBarsScrollArea(const QScrollBar *sb)
-{
- const QWidget *w = sb;
- const QAbstractScrollArea *sa = 0;
- while (w != 0 && sa == 0) {
- sa = qobject_cast<const QAbstractScrollArea *>(w);
- w = w->parentWidget();
- }
- return sa;
-}
-
-/*!
- For a scroll bar \a sb within a scroll area, this function returns all other scroll
- bars within the same scroll area.
- \internal
- */
-static QList<const QScrollBar *> scrollBarsSiblings(const QScrollBar *sb)
-{
- const QAbstractScrollArea *sa = scrollBarsScrollArea(sb);
- Q_ASSERT(sa != 0);
- QList<const QScrollBar *> list = sa->findChildren<const QScrollBar *>();
- list.removeOne(sb);
- return list;
-}
-#endif
-
void drawTabCloseButton(QPainter *p, bool hover, bool active, bool selected)
{
// draw background circle
@@ -430,18 +398,13 @@ void drawTabBase(QPainter *p, const QStyleOptionTabBarBaseV2 *tbb, const QWidget
static int getControlSize(const QStyleOption *option, const QWidget *widget)
{
- if (option) {
- if (option->state & (QStyle::State_Small | QStyle::State_Mini))
- return (option->state & QStyle::State_Mini) ? QAquaSizeMini : QAquaSizeSmall;
- } else if (widget) {
- switch (QMacStyle::widgetSizePolicy(widget)) {
- case QMacStyle::SizeSmall:
- return QAquaSizeSmall;
- case QMacStyle::SizeMini:
- return QAquaSizeMini;
- default:
- break;
- }
+ switch (QMacStyle::widgetSizePolicy(widget, option)) {
+ case QMacStyle::SizeSmall:
+ return QAquaSizeSmall;
+ case QMacStyle::SizeMini:
+ return QAquaSizeMini;
+ default:
+ break;
}
return QAquaSizeLarge;
}
@@ -1607,7 +1570,7 @@ void QMacStylePrivate::getSliderInfo(QStyle::ComplexControl cc, const QStyleOpti
tdi->reserved = 0;
tdi->filler1 = 0;
bool isScrollbar = (cc == QStyle::CC_ScrollBar);
- switch (aquaSizeConstrain(0, needToRemoveMe)) {
+ switch (aquaSizeConstrain(slider, needToRemoveMe)) {
case QAquaSizeUnknown:
case QAquaSizeLarge:
if (isScrollbar)
@@ -1683,24 +1646,6 @@ QMacStylePrivate::QMacStylePrivate()
}
-bool QMacStylePrivate::addWidget(QWidget *w)
-{
- //already knew of it
- if (w == defaultButton || animation(w))
- return false;
-
- Q_Q(QMacStyle);
- if (qobject_cast<QScrollBar *>(w)) {
- w->installEventFilter(q);
- return true;
- }
- if (w->isWindow()) {
- w->installEventFilter(q);
- return true;
- }
- return false;
-}
-
ThemeDrawState QMacStylePrivate::getDrawState(QStyle::State flags)
{
ThemeDrawState tds = kThemeStateActive;
@@ -1718,73 +1663,6 @@ ThemeDrawState QMacStylePrivate::getDrawState(QStyle::State flags)
return tds;
}
-/*! \reimp */
-bool QMacStyle::eventFilter(QObject *o, QEvent *e)
-{
- //animate
- Q_D(QMacStyle);
- if (QScrollBar *sb = qobject_cast<QScrollBar *>(o)) {
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
- // take care of fading out overlaying scrollbars (and only those!) when inactive
- const QAbstractScrollArea *scrollArea = scrollBarsScrollArea(sb);
- if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7 &&
- [NSScroller preferredScrollerStyle] == NSScrollerStyleOverlay && scrollArea) {
- QMacStylePrivate::OverlayScrollBarInfo& info = d->scrollBarInfos[sb];
- const qint64 dt = QDateTime::currentMSecsSinceEpoch();
- const qreal elapsed = dt - info.lastUpdate;
- const CGFloat opacity = 1.0 - qMax(0.0, (elapsed - QMacStylePrivate::ScrollBarFadeOutDelay)
- / QMacStylePrivate::ScrollBarFadeOutDuration);
- switch (e->type()) {
- case QEvent::MouseMove:
- // whenever the mouse moves on a not 100% transparent scroll bar,
- // the fade out is stopped and it's set to 100% opaque
- if (opacity > 0.0) {
- info.hovered = true;
- info.lastUpdate = dt;
- info.lastHovered = info.lastUpdate;
- sb->update();
- break;
- }
-
- // fall through
- case QEvent::MouseButtonPress:
- case QEvent::MouseButtonRelease:
- case QEvent::MouseButtonDblClick:
- // all mouse events which happens on a transparent scroll bar are
- // translated and passed to the scroll area's viewport
- if (opacity <= 0.0) {
- QMouseEvent* mouse = static_cast<QMouseEvent *>(e);
- QWidget* viewport = scrollArea->viewport();
- const QPoint scrollAreaPos = sb->mapTo(scrollArea, mouse->pos());
- const QPoint viewportPos = viewport->mapFromParent(scrollAreaPos);
- QMouseEvent me(mouse->type(), viewportPos, mouse->windowPos(),
- mouse->globalPos(), mouse->button(), mouse->buttons(),
- mouse->modifiers());
- QCoreApplication::sendEvent(viewport, &me);
- mouse->setAccepted(me.isAccepted());
- return true;
- }
- break;
- case QEvent::Leave:
- case QEvent::WindowDeactivate:
- // mouse leave and window deactivate sets the scrollbar to not-hovered
- // -> triggers fade out
- info.hovered = false;
- break;
- if (!info.hovered) {
- e->setAccepted(false);
- return true;
- }
- break;
- default:
- break;
- }
- }
-#endif
- }
- return false;
-}
-
void QMacStylePrivate::drawColorlessButton(const HIRect &macRect, HIThemeButtonDrawInfo *bdi,
QPainter *p, const QStyleOption *opt) const
{
@@ -2011,8 +1889,6 @@ void QMacStyle::unpolish(QApplication *)
void QMacStyle::polish(QWidget* w)
{
- Q_D(QMacStyle);
- d->addWidget(w);
if (qt_mac_is_metal(w) && !w->testAttribute(Qt::WA_SetPalette)) {
// Set a clear brush so that the metal shines through.
QPalette pal = w->palette();
@@ -2064,13 +1940,13 @@ void QMacStyle::polish(QWidget* w)
if (qobject_cast<QScrollBar*>(w)) {
w->setAttribute(Qt::WA_OpaquePaintEvent, false);
+ w->setAttribute(Qt::WA_Hover, true);
w->setMouseTracking(true);
}
}
void QMacStyle::unpolish(QWidget* w)
{
- Q_D(QMacStyle);
if ((qobject_cast<QMenu*>(w) || qt_mac_is_metal(w)) && !w->testAttribute(Qt::WA_SetPalette)) {
QPalette pal = qApp->palette(w);
w->setPalette(pal);
@@ -2098,8 +1974,8 @@ void QMacStyle::unpolish(QWidget* w)
if (qobject_cast<QScrollBar*>(w)) {
w->setAttribute(Qt::WA_OpaquePaintEvent, true);
+ w->setAttribute(Qt::WA_Hover, false);
w->setMouseTracking(false);
- d->scrollBarInfos.remove(w);
}
}
@@ -2308,8 +2184,7 @@ int QMacStyle::pixelMetric(PixelMetric metric, const QStyleOption *opt, const QW
case PM_ScrollBarExtent: {
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7 &&
- [NSScroller preferredScrollerStyle] == NSScrollerStyleOverlay &&
- scrollBarsScrollArea(qobject_cast<const QScrollBar *>(widget))) {
+ [NSScroller preferredScrollerStyle] == NSScrollerStyleOverlay) {
switch (d->aquaSizeConstrain(opt, widget)) {
case QAquaSizeUnknown:
case QAquaSizeLarge:
@@ -2710,10 +2585,11 @@ int QMacStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w
srow = sptr+((y*sbpl)/4);
drow = dptr+((y*dbpl)/4);
for (int x = 0; x < w; ++x) {
- const int diff = (((qRed(*srow)-fillR)*(qRed(*srow)-fillR)) +
- ((qGreen(*srow)-fillG)*((qGreen(*srow)-fillG))) +
- ((qBlue(*srow)-fillB)*((qBlue(*srow)-fillB))));
- (*drow++) = (diff < 100) ? 0xffffffff : 0xff000000;
+ const int redDiff = qRed(*srow) - fillR;
+ const int greenDiff = qGreen(*srow) - fillG;
+ const int blueDiff = qBlue(*srow) - fillB;
+ const int diff = (redDiff * redDiff) + (greenDiff * greenDiff) + (blueDiff * blueDiff);
+ (*drow++) = (diff < 10) ? 0xffffffff : 0xff000000;
++srow;
}
}
@@ -2836,6 +2712,13 @@ int QMacStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w
case SH_DockWidget_ButtonsHaveFrame:
ret = false;
break;
+ case SH_ScrollBar_Transient:
+ ret = QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7;
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
+ if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7)
+ ret &= [NSScroller preferredScrollerStyle] == NSScrollerStyleOverlay;
+#endif
+ break;
default:
ret = QCommonStyle::styleHint(sh, opt, w, hret);
break;
@@ -2924,7 +2807,7 @@ void QMacStyle::setWidgetSizePolicy(const QWidget *widget, WidgetSizePolicy poli
wadget->setAttribute(Qt::WA_MacMiniSize, policy == SizeMini);
}
-QMacStyle::WidgetSizePolicy QMacStyle::widgetSizePolicy(const QWidget *widget)
+QMacStyle::WidgetSizePolicy QMacStyle::widgetSizePolicy(const QWidget *widget, const QStyleOption *opt)
{
while (widget) {
if (widget->testAttribute(Qt::WA_MacMiniSize)) {
@@ -2936,6 +2819,12 @@ QMacStyle::WidgetSizePolicy QMacStyle::widgetSizePolicy(const QWidget *widget)
}
widget = widget->parentWidget();
}
+
+ if (opt && opt->state & State_Mini)
+ return SizeMini;
+ else if (opt && opt->state & State_Small)
+ return SizeSmall;
+
return SizeDefault;
}
@@ -3229,7 +3118,8 @@ void QMacStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPai
fdi.state = tds;
SInt32 frame_size;
if (pe == PE_FrameLineEdit) {
- fdi.kind = kHIThemeFrameTextFieldSquare;
+ fdi.kind = frame->features & QStyleOptionFrame::Rounded ? kHIThemeFrameTextFieldRound :
+ kHIThemeFrameTextFieldSquare;
GetThemeMetric(kThemeMetricEditTextFrameOutset, &frame_size);
if ((frame->state & State_ReadOnly) || !(frame->state & State_Enabled))
fdi.state = kThemeStateInactive;
@@ -3451,6 +3341,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
break;
case CE_HeaderLabel:
if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(opt)) {
+ p->save();
QRect textr = header->rect;
if (!header->icon.isNull()) {
QIcon::Mode mode = QIcon::Disabled;
@@ -3464,8 +3355,10 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
textr.translate(pixmap.width() + 2, 0);
}
+ p->setFont(qt_app_fonts_hash()->value("QSmallFont", QFont()));
proxy()->drawItemText(p, textr, header->textAlignment | Qt::AlignVCenter, header->palette,
header->state & State_Enabled, header->text, QPalette::ButtonText);
+ p->restore();
}
break;
case CE_ToolButtonLabel:
@@ -4354,7 +4247,8 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
tdi.min = pb->minimum;
tdi.value = pb->progress;
tdi.attributes = vertical ? 0 : kThemeTrackHorizontal;
- if (isIndeterminate) {
+
+ if (isIndeterminate || tdi.value < tdi.max) {
if (QProgressStyleAnimation *animation = qobject_cast<QProgressStyleAnimation*>(d->animation(opt->styleObject)))
tdi.trackInfo.progress.phase = animation->animationStep();
else
@@ -4558,17 +4452,22 @@ QRect QMacStyle::subElementRect(SubElement sr, const QStyleOption *opt,
rect = qt_qrectForHIRect(contentRect);
}
break;
- case SE_HeaderLabel:
- if (qstyleoption_cast<const QStyleOptionHeader *>(opt)) {
- rect = QCommonStyle::subElementRect(sr, opt, widget);
- if (widget && widget->height() <= 22){
- // We need to allow the text a bit more space when the header is
- // small, otherwise it gets clipped:
- rect.setY(0);
- rect.setHeight(widget->height());
+ case SE_HeaderLabel: {
+ int margin = proxy()->pixelMetric(QStyle::PM_HeaderMargin, opt, widget);
+ rect.setRect(opt->rect.x() + margin, opt->rect.y(),
+ opt->rect.width() - margin * 2, opt->rect.height() - 2);
+ if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(opt)) {
+ // Subtract width needed for arrow, if there is one
+ if (header->sortIndicator != QStyleOptionHeader::None) {
+ if (opt->state & State_Horizontal)
+ rect.setWidth(rect.width() - (opt->rect.height() / 2) - (margin * 2));
+ else
+ rect.setHeight(rect.height() - (opt->rect.width() / 2) - (margin * 2));
}
}
+ rect = visualRect(opt->direction, opt->rect, rect);
break;
+ }
case SE_ProgressBarGroove:
case SE_ProgressBarLabel:
break;
@@ -4998,7 +4897,7 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex
if (cc == CC_ScrollBar) {
const int scrollBarLength = (slider->orientation == Qt::Horizontal)
? slider->rect.width() : slider->rect.height();
- const QMacStyle::WidgetSizePolicy sizePolicy = widgetSizePolicy(widget);
+ const QMacStyle::WidgetSizePolicy sizePolicy = widgetSizePolicy(widget, opt);
if (scrollBarLength < scrollButtonsCutoffSize(thumbIndicatorCutoff, sizePolicy))
tdi.attributes &= ~kThemeTrackShowThumb;
if (scrollBarLength < scrollButtonsCutoffSize(scrollButtonsCutoff, sizePolicy))
@@ -5013,59 +4912,65 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex
}
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
- const qint64 dt = QDateTime::currentMSecsSinceEpoch();
- if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7 &&
- [NSScroller preferredScrollerStyle] == NSScrollerStyleOverlay &&
- scrollBarsScrollArea(qobject_cast<const QScrollBar *>(widget)) &&
- cc == CC_ScrollBar) {
- QMacStylePrivate::OverlayScrollBarInfo& info = d->scrollBarInfos[widget];
- bool showSiblings = false;
- if (info.lastValue != slider->sliderPosition ||
- info.lastMinimum != slider->minimum ||
- info.lastMaximum != slider->maximum ||
- info.lastSize != slider->rect.size()) {
- info.lastValue = slider->sliderPosition;
- info.lastMinimum = slider->minimum;
- info.lastSize = slider->rect.size();
- info.lastMaximum = slider->maximum;
- info.lastUpdate = dt;
- showSiblings = true;
- }
-
- const QList<const QScrollBar *> siblings =
- scrollBarsSiblings(qobject_cast<const QScrollBar *>(widget));
- // keep last update (last change of value) time of all siblings in sync
- Q_FOREACH (const QScrollBar *sibling, siblings) {
- info.lastUpdate = qMax(info.lastUpdate,
- d->scrollBarInfos.value(sibling).lastUpdate);
- info.cleared = false;
- if (d->scrollBarInfos.value(sibling).hovered)
- info.lastUpdate = dt;
- }
-
- qreal elapsed = dt - info.lastHovered;
- CGFloat opacity = 1.0 - qMax(0.0,
- (elapsed - QMacStylePrivate::ScrollBarFadeOutDelay) /
- QMacStylePrivate::ScrollBarFadeOutDuration);
- const bool isHorizontal = slider->orientation == Qt::Horizontal;
-
- if (info.hovered) {
- info.lastHovered = dt;
- info.lastUpdate = dt;
+ if (cc == CC_ScrollBar && proxy()->styleHint(SH_ScrollBar_Transient)) {
+ QObject *styleObject = opt->styleObject;
+ int oldPos = styleObject->property("_q_stylepos").toInt();
+ int oldMin = styleObject->property("_q_stylemin").toInt();
+ int oldMax = styleObject->property("_q_stylemax").toInt();
+ QRect oldRect = styleObject->property("_q_stylerect").toRect();
+ int oldState = styleObject->property("_q_stylestate").toInt();
+ uint oldActiveControls = styleObject->property("_q_stylecontrols").toUInt();
+
+ // a scrollbar is transient when the the scrollbar itself and
+ // its sibling are both inactive (ie. not pressed/hovered/moved)
+ bool transient = !opt->activeSubControls && !(slider->state & State_On);
+
+ CGFloat opacity = 0.0;
+ if (!transient ||
+ oldPos != slider->sliderPosition ||
+ oldMin != slider->minimum ||
+ oldMax != slider->maximum ||
+ oldRect != slider->rect ||
+ oldState != slider->state ||
+ oldActiveControls != slider->activeSubControls) {
+
+ // if the scrollbar is transient or its attributes, geometry or
+ // state has changed, the opacity is reset back to 100% opaque
opacity = 1.0;
- // if the current scroll bar is hovered, none of the others might fade out
- Q_FOREACH (const QScrollBar *sibling, siblings) {
- d->scrollBarInfos[sibling].lastUpdate = info.lastUpdate;
+
+ styleObject->setProperty("_q_stylepos", slider->sliderPosition);
+ styleObject->setProperty("_q_stylemin", slider->minimum);
+ styleObject->setProperty("_q_stylemax", slider->maximum);
+ styleObject->setProperty("_q_stylerect", slider->rect);
+ styleObject->setProperty("_q_stylestate", static_cast<int>(slider->state));
+ styleObject->setProperty("_q_stylecontrols", static_cast<uint>(slider->activeSubControls));
+
+ if (transient) {
+ QFadeOutAnimation *anim = qobject_cast<QFadeOutAnimation *>(d->animation(styleObject));
+ if (!anim) {
+ anim = new QFadeOutAnimation(styleObject);
+ d->startAnimation(anim);
+ } else {
+ // the scrollbar was already fading out while the
+ // state changed -> restart the fade out animation
+ anim->setCurrentTime(0);
+ }
+ } else {
+ d->stopAnimation(styleObject);
}
}
- // when one scroll bar was changed, all its siblings need a redraw as well, since
- // either both scroll bars within a scroll area shall be visible or none
- if (showSiblings) {
- Q_FOREACH (const QScrollBar *sibling, siblings)
- const_cast<QScrollBar *>(sibling)->update();
+ QFadeOutAnimation *anim = qobject_cast<QFadeOutAnimation *>(d->animation(styleObject));
+ if (anim) {
+ // once a scrollbar was active (hovered/pressed), it retains
+ // the active look even if it's no longer active while fading out
+ if (oldActiveControls)
+ anim->setActive(true);
+ opacity = anim->currentValue();
}
+ const bool isHorizontal = slider->orientation == Qt::Horizontal;
+
CGContextSaveGState(cg);
[NSGraphicsContext saveGraphicsState];
@@ -5075,7 +4980,7 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex
[scroller initWithFrame:NSMakeRect(0, 0, slider->rect.width(), slider->rect.height())];
// mac os behaviour: as soon as one color channel is >= 128,
// the bg is considered bright, scroller is dark
- const QColor bgColor = widget->palette().color(QPalette::Base);
+ const QColor bgColor = opt->palette.color(QPalette::Base);
const bool isDarkBg = bgColor.red() < 128 && bgColor.green() < 128 &&
bgColor.blue() < 128;
if (isDarkBg)
@@ -5092,7 +4997,7 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex
[scroller setScrollerStyle:NSScrollerStyleOverlay];
// first we draw only the track, by using a disabled scroller
- if (opacity > 0.0) {
+ if (opt->activeSubControls || (anim && anim->wasActive())) {
CGContextBeginTransparencyLayerWithRect(cg, qt_hirectForQRect(slider->rect),
NULL);
CGContextSetAlpha(cg, opacity);
@@ -5105,21 +5010,6 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex
CGContextEndTransparencyLayer(cg);
}
- // afterwards we draw the knob, since we cannot drow the know w/o the track,
- // we simulate a scrollbar with a knob from 0.0 to 1.0
- elapsed = dt - info.lastUpdate;
- opacity = 1.0 - qMax(0.0, (elapsed - QMacStylePrivate::ScrollBarFadeOutDelay) /
- QMacStylePrivate::ScrollBarFadeOutDuration);
- info.cleared = opacity <= 0.0;
-
- if (info.animating && info.cleared) {
- d->stopAnimation(slider->styleObject);
- info.animating = false;
- } else if (!info.animating && !info.cleared) {
- d->startAnimation(new QStyleAnimation(slider->styleObject));
- info.animating = true;
- }
-
CGContextBeginTransparencyLayerWithRect(cg, qt_hirectForQRect(slider->rect), NULL);
CGContextSetAlpha(cg, opacity);
@@ -5160,6 +5050,8 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex
} else
#endif
{
+ d->stopAnimation(opt->styleObject);
+
HIThemeDrawTrack(&tdi, tracking ? 0 : &macRect, cg,
kHIThemeOrientationNormal);
if (cc == CC_Slider && slider->subControls & SC_SliderTickmarks) {
@@ -5606,7 +5498,7 @@ QStyle::SubControl QMacStyle::hitTestComplexControl(ComplexControl cc,
// exclude them from the hit test.
const int scrollBarLength = (sb->orientation == Qt::Horizontal)
? sb->rect.width() : sb->rect.height();
- if (scrollBarLength < scrollButtonsCutoffSize(scrollButtonsCutoff, widgetSizePolicy(widget)))
+ if (scrollBarLength < scrollButtonsCutoffSize(scrollButtonsCutoff, widgetSizePolicy(widget, opt)))
sbi.enableState = kThemeTrackNothingToScroll;
sbi.viewsize = sb->pageStep;
@@ -6244,6 +6136,7 @@ QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt,
return sz;
case CT_ComboBox:
sz.rwidth() += 50;
+ sz.rheight() += 2;
break;
case CT_Menu: {
QStyleHintReturnMask menuMask;
@@ -6262,7 +6155,7 @@ QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt,
case CT_ScrollBar :
// Make sure that the scroll bar is large enough to display the thumb indicator.
if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(opt)) {
- const int minimumSize = scrollButtonsCutoffSize(thumbIndicatorCutoff, widgetSizePolicy(widget));
+ const int minimumSize = scrollButtonsCutoffSize(thumbIndicatorCutoff, widgetSizePolicy(widget, opt));
if (slider->orientation == Qt::Horizontal)
sz = sz.expandedTo(QSize(minimumSize, sz.height()));
else
diff --git a/src/widgets/styles/qmacstyle_mac_p.h b/src/widgets/styles/qmacstyle_mac_p.h
index af1c88d50d..f01d1e14c5 100644
--- a/src/widgets/styles/qmacstyle_mac_p.h
+++ b/src/widgets/styles/qmacstyle_mac_p.h
@@ -158,9 +158,6 @@ public:
static const qreal ScrollBarFadeOutDuration;
static const qreal ScrollBarFadeOutDelay;
- // Stuff from QAquaAnimate:
- bool addWidget(QWidget *);
-
enum Animates { AquaPushButton, AquaProgressBar, AquaListViewItemOpen, AquaScrollBar };
static ThemeDrawState getDrawState(QStyle::State flags);
QAquaWidgetSize aquaSizeConstrain(const QStyleOption *option, const QWidget *widg,
@@ -201,29 +198,6 @@ public:
mutable QPointer<QObject> defaultButton;
mutable QPointer<QObject> autoDefaultButton;
- struct OverlayScrollBarInfo {
- OverlayScrollBarInfo()
- : lastValue(-1),
- lastMinimum(-1),
- lastMaximum(-1),
- lastUpdate(QDateTime::currentMSecsSinceEpoch()),
- hovered(false),
- lastHovered(0),
- cleared(false),
- animating(false)
- {}
- int lastValue;
- int lastMinimum;
- int lastMaximum;
- QSize lastSize;
- qint64 lastUpdate;
- bool hovered;
- qint64 lastHovered;
- bool cleared;
- bool animating;
- };
- mutable QMap<const QWidget*, OverlayScrollBarInfo> scrollBarInfos;
-
struct ButtonState {
int frame;
enum { ButtonDark, ButtonLight } dir;
@@ -237,6 +211,34 @@ public:
#endif
};
+class QFadeOutAnimation : public QNumberStyleAnimation
+{
+ Q_OBJECT
+
+public:
+ QFadeOutAnimation(QObject *target) : QNumberStyleAnimation(target), _active(false)
+ {
+ setDuration(QMacStylePrivate::ScrollBarFadeOutDelay + QMacStylePrivate::ScrollBarFadeOutDuration);
+ setDelay(QMacStylePrivate::ScrollBarFadeOutDelay);
+ setStartValue(1.0);
+ setEndValue(0.0);
+ }
+
+ bool wasActive() const { return _active; }
+ void setActive(bool active) { _active = active; }
+
+private slots:
+ void updateCurrentTime(int time)
+ {
+ QNumberStyleAnimation::updateCurrentTime(time);
+ if (qFuzzyIsNull(currentValue()))
+ target()->setProperty("visible", false);
+ }
+
+private:
+ bool _active;
+};
+
QT_END_NAMESPACE
#endif // QMACSTYLE_MAC_P_H
diff --git a/src/widgets/styles/qstyle.cpp b/src/widgets/styles/qstyle.cpp
index f0d1d2319c..76d6efadee 100644
--- a/src/widgets/styles/qstyle.cpp
+++ b/src/widgets/styles/qstyle.cpp
@@ -1887,6 +1887,9 @@ void QStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment,
\value SH_RequestSoftwareInputPanel Determines when a software input panel should
be requested by input widgets. Returns an enum of type QStyle::RequestSoftwareInputPanel.
+ \value SH_ScrollBar_Transient Determines if the style supports transient scroll bars. Transient
+ scroll bars appear when the content is scrolled and disappear when they are no longer needed.
+
\sa styleHint()
*/
diff --git a/src/widgets/styles/qstyle.h b/src/widgets/styles/qstyle.h
index 48491b3e3e..387645ae11 100644
--- a/src/widgets/styles/qstyle.h
+++ b/src/widgets/styles/qstyle.h
@@ -698,6 +698,7 @@ public:
SH_DockWidget_ButtonsHaveFrame,
SH_ToolButtonStyle,
SH_RequestSoftwareInputPanel,
+ SH_ScrollBar_Transient,
// Add new style hint values here
SH_CustomBase = 0xf0000000
diff --git a/src/widgets/styles/qstyleanimation.cpp b/src/widgets/styles/qstyleanimation.cpp
index 0138996e33..9ddcbcc511 100644
--- a/src/widgets/styles/qstyleanimation.cpp
+++ b/src/widgets/styles/qstyleanimation.cpp
@@ -41,7 +41,6 @@
#include "qstyleanimation_p.h"
#include <qcoreapplication.h>
-#include <qprogressbar.h>
#include <qwidget.h>
#include <qevent.h>
@@ -208,4 +207,108 @@ bool QNumberStyleAnimation::isUpdateNeeded() const
return false;
}
+QBlendStyleAnimation::QBlendStyleAnimation(Type type, QObject *target) :
+ QStyleAnimation(target), _type(type)
+{
+ setDuration(250);
+}
+
+QImage QBlendStyleAnimation::startImage() const
+{
+ return _start;
+}
+
+void QBlendStyleAnimation::setStartImage(const QImage& image)
+{
+ _start = image;
+}
+
+QImage QBlendStyleAnimation::endImage() const
+{
+ return _end;
+}
+
+void QBlendStyleAnimation::setEndImage(const QImage& image)
+{
+ _end = image;
+}
+
+QImage QBlendStyleAnimation::currentImage() const
+{
+ return _current;
+}
+
+/*! \internal
+
+ A helper function to blend two images.
+
+ The result consists of ((alpha)*startImage) + ((1-alpha)*endImage)
+
+*/
+static QImage blendedImage(const QImage &start, const QImage &end, float alpha)
+{
+ if (start.isNull() || end.isNull())
+ return QImage();
+
+ QImage blended;
+ const int a = qRound(alpha*256);
+ const int ia = 256 - a;
+ const int sw = start.width();
+ const int sh = start.height();
+ const int bpl = start.bytesPerLine();
+ switch (start.depth()) {
+ case 32:
+ {
+ blended = QImage(sw, sh, start.format());
+ uchar *mixed_data = blended.bits();
+ const uchar *back_data = start.bits();
+ const uchar *front_data = end.bits();
+ for (int sy = 0; sy < sh; sy++) {
+ quint32* mixed = (quint32*)mixed_data;
+ const quint32* back = (const quint32*)back_data;
+ const quint32* front = (const quint32*)front_data;
+ for (int sx = 0; sx < sw; sx++) {
+ quint32 bp = back[sx];
+ quint32 fp = front[sx];
+ mixed[sx] = qRgba ((qRed(bp)*ia + qRed(fp)*a)>>8,
+ (qGreen(bp)*ia + qGreen(fp)*a)>>8,
+ (qBlue(bp)*ia + qBlue(fp)*a)>>8,
+ (qAlpha(bp)*ia + qAlpha(fp)*a)>>8);
+ }
+ mixed_data += bpl;
+ back_data += bpl;
+ front_data += bpl;
+ }
+ }
+ default:
+ break;
+ }
+ return blended;
+}
+
+void QBlendStyleAnimation::updateCurrentTime(int time)
+{
+ QStyleAnimation::updateCurrentTime(time);
+
+ float alpha = 1.0;
+ if (duration() > 0) {
+ if (_type == Pulse) {
+ time = time % duration() * 2;
+ if (time > duration())
+ time = duration() * 2 - time;
+ }
+
+ alpha = time / static_cast<float>(duration());
+
+ if (_type == Transition && time > duration()) {
+ alpha = 1.0;
+ stop();
+ }
+ } else if (time > 0) {
+ stop();
+ }
+
+ _current = blendedImage(_start, _end, alpha);
+}
+
QT_END_NAMESPACE
diff --git a/src/widgets/styles/qstyleanimation_p.h b/src/widgets/styles/qstyleanimation_p.h
index d9869533ef..9dddc7b62c 100644
--- a/src/widgets/styles/qstyleanimation_p.h
+++ b/src/widgets/styles/qstyleanimation_p.h
@@ -44,6 +44,7 @@
#include "qabstractanimation.h"
#include "qdatetime.h"
+#include "qimage.h"
QT_BEGIN_NAMESPACE
@@ -134,6 +135,33 @@ private:
mutable qreal _prev;
};
+class QBlendStyleAnimation : public QStyleAnimation
+{
+ Q_OBJECT
+
+public:
+ enum Type { Transition, Pulse };
+
+ QBlendStyleAnimation(Type type, QObject *target);
+
+ QImage startImage() const;
+ void setStartImage(const QImage& image);
+
+ QImage endImage() const;
+ void setEndImage(const QImage& image);
+
+ QImage currentImage() const;
+
+protected:
+ virtual void updateCurrentTime(int time);
+
+private:
+ Type _type;
+ QImage _start;
+ QImage _end;
+ QImage _current;
+};
+
QT_END_NAMESPACE
#endif // QSTYLEANIMATION_P_H
diff --git a/src/widgets/styles/qstylehelper.cpp b/src/widgets/styles/qstylehelper.cpp
index 8d67683eae..c6e9a8d013 100644
--- a/src/widgets/styles/qstylehelper.cpp
+++ b/src/widgets/styles/qstylehelper.cpp
@@ -99,6 +99,9 @@ bool hasAncestor(QObject *obj, QAccessible::Role role)
delete iface;
parent = parent->parent();
}
+#else
+ Q_UNUSED(obj)
+ Q_UNUSED(role)
#endif // QT_NO_ACCESSIBILITY
return found;
}
diff --git a/src/widgets/styles/qstyleoption.cpp b/src/widgets/styles/qstyleoption.cpp
index 53c1cf4559..3bc0c053b9 100644
--- a/src/widgets/styles/qstyleoption.cpp
+++ b/src/widgets/styles/qstyleoption.cpp
@@ -3889,6 +3889,13 @@ QStyleHintReturnMask::QStyleHintReturnMask() : QStyleHintReturn(Version, Type)
}
/*!
+ Destructor.
+*/
+QStyleHintReturnMask::~QStyleHintReturnMask()
+{
+}
+
+/*!
\enum QStyleHintReturnMask::StyleOptionType
This enum is used to hold information about the type of the style option, and
@@ -3942,6 +3949,13 @@ QStyleHintReturnVariant::QStyleHintReturnVariant() : QStyleHintReturn(Version, T
}
/*!
+ Destructor.
+*/
+QStyleHintReturnVariant::~QStyleHintReturnVariant()
+{
+}
+
+/*!
\enum QStyleHintReturnVariant::StyleOptionType
This enum is used to hold information about the type of the style option, and
diff --git a/src/widgets/styles/qstyleoption.h b/src/widgets/styles/qstyleoption.h
index d88582a9f8..b4641f36bb 100644
--- a/src/widgets/styles/qstyleoption.h
+++ b/src/widgets/styles/qstyleoption.h
@@ -125,7 +125,8 @@ public:
int midLineWidth;
enum FrameFeature {
None = 0x00,
- Flat = 0x01
+ Flat = 0x01,
+ Rounded = 0x02
};
Q_DECLARE_FLAGS(FrameFeatures, FrameFeature)
FrameFeatures features;
@@ -709,6 +710,7 @@ public:
enum StyleOptionVersion { Version = 1 };
QStyleHintReturnMask();
+ ~QStyleHintReturnMask();
QRegion region;
};
@@ -719,6 +721,7 @@ public:
enum StyleOptionVersion { Version = 1 };
QStyleHintReturnVariant();
+ ~QStyleHintReturnVariant();
QVariant variant;
};
diff --git a/src/widgets/styles/qstyleplugin.cpp b/src/widgets/styles/qstyleplugin.cpp
index a42e1569d2..7cd44ef455 100644
--- a/src/widgets/styles/qstyleplugin.cpp
+++ b/src/widgets/styles/qstyleplugin.cpp
@@ -82,8 +82,6 @@ QT_BEGIN_NAMESPACE
style. Note that the keys are case insensitive. For example:
\snippet qstyleplugin/main.cpp 1
-
- \sa keys()
*/
/*!
diff --git a/src/widgets/styles/qwindowscestyle.cpp b/src/widgets/styles/qwindowscestyle.cpp
index 28b8e3d549..8accf18da9 100644
--- a/src/widgets/styles/qwindowscestyle.cpp
+++ b/src/widgets/styles/qwindowscestyle.cpp
@@ -80,6 +80,10 @@ QWindowsCEStyle::QWindowsCEStyle() : QWindowsStyle() {
qApp->setEffectEnabled(Qt::UI_AnimateMenu, false);
}
+QWindowsCEStyle::~QWindowsCEStyle()
+{
+}
+
void QWindowsCEStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option,
QPainter *painter, const QWidget *widget) const {
diff --git a/src/widgets/styles/qwindowscestyle.h b/src/widgets/styles/qwindowscestyle.h
index 37471b0206..606cbafd48 100644
--- a/src/widgets/styles/qwindowscestyle.h
+++ b/src/widgets/styles/qwindowscestyle.h
@@ -56,6 +56,7 @@ class Q_WIDGETS_EXPORT QWindowsCEStyle : public QWindowsStyle
Q_OBJECT
public:
QWindowsCEStyle();
+ ~QWindowsCEStyle();
void drawPrimitive(PrimitiveElement element, const QStyleOption *option,
QPainter *painter, const QWidget *widget = 0) const;
diff --git a/src/widgets/styles/qwindowsmobilestyle.cpp b/src/widgets/styles/qwindowsmobilestyle.cpp
index 3242e6a35e..8ac9888659 100644
--- a/src/widgets/styles/qwindowsmobilestyle.cpp
+++ b/src/widgets/styles/qwindowsmobilestyle.cpp
@@ -4515,6 +4515,10 @@ QWindowsMobileStyle::QWindowsMobileStyle() : QWindowsStyle(*new QWindowsMobileSt
qApp->setEffectEnabled(Qt::UI_AnimateMenu, false);
}
+QWindowsMobileStyle::~QWindowsMobileStyle()
+{
+}
+
QWindowsMobileStylePrivate::QWindowsMobileStylePrivate() :QWindowsStylePrivate() {
#ifdef Q_OS_WINCE
diff --git a/src/widgets/styles/qwindowsmobilestyle.h b/src/widgets/styles/qwindowsmobilestyle.h
index 607d201a0e..7bb7d5c260 100644
--- a/src/widgets/styles/qwindowsmobilestyle.h
+++ b/src/widgets/styles/qwindowsmobilestyle.h
@@ -58,6 +58,7 @@ class Q_WIDGETS_EXPORT QWindowsMobileStyle : public QWindowsStyle
Q_OBJECT
public:
QWindowsMobileStyle();
+ ~QWindowsMobileStyle();
void drawPrimitive(PrimitiveElement element, const QStyleOption *option,
QPainter *painter, const QWidget *widget = 0) const;
diff --git a/src/widgets/styles/qwindowsvistastyle.cpp b/src/widgets/styles/qwindowsvistastyle.cpp
index b20e6f5ea5..093a9f7197 100644
--- a/src/widgets/styles/qwindowsvistastyle.cpp
+++ b/src/widgets/styles/qwindowsvistastyle.cpp
@@ -203,6 +203,13 @@ QWindowsVistaStyle::QWindowsVistaStyle()
{
}
+/*!
+ Destructor.
+*/
+QWindowsVistaStyle::~QWindowsVistaStyle()
+{
+}
+
//convert Qt state flags to uxtheme button states
static int buttonStateId(int flags, int partId)
{
@@ -235,119 +242,16 @@ static int buttonStateId(int flags, int partId)
return stateId;
}
-void QWindowsVistaAnimation::paint(QPainter *painter, const QStyleOption *option)
-{
- Q_UNUSED(option);
- Q_UNUSED(painter);
-}
-
bool QWindowsVistaAnimation::isUpdateNeeded() const
{
return QWindowsVistaStylePrivate::useVista();
}
-/*! \internal
-
- Helperfunction to paint the current transition state between two
- animation frames.
-
- The result is a blended image consisting of ((alpha)*_primaryImage)
- + ((1-alpha)*_secondaryImage)
-
-*/
-void QWindowsVistaAnimation::drawBlendedImage(QPainter *painter, QRect rect, float alpha) {
- if (_secondaryImage.isNull() || _primaryImage.isNull())
- return;
-
- if (_tempImage.isNull())
- _tempImage = _secondaryImage;
-
- const int a = qRound(alpha*256);
- const int ia = 256 - a;
- const int sw = _primaryImage.width();
- const int sh = _primaryImage.height();
- const int bpl = _primaryImage.bytesPerLine();
- switch(_primaryImage.depth()) {
- case 32:
- {
- uchar *mixed_data = _tempImage.bits();
- const uchar *back_data = _primaryImage.bits();
- const uchar *front_data = _secondaryImage.bits();
- for (int sy = 0; sy < sh; sy++) {
- quint32* mixed = (quint32*)mixed_data;
- const quint32* back = (const quint32*)back_data;
- const quint32* front = (const quint32*)front_data;
- for (int sx = 0; sx < sw; sx++) {
- quint32 bp = back[sx];
- quint32 fp = front[sx];
- mixed[sx] = qRgba ((qRed(bp)*ia + qRed(fp)*a)>>8,
- (qGreen(bp)*ia + qGreen(fp)*a)>>8,
- (qBlue(bp)*ia + qBlue(fp)*a)>>8,
- (qAlpha(bp)*ia + qAlpha(fp)*a)>>8);
- }
- mixed_data += bpl;
- back_data += bpl;
- front_data += bpl;
- }
- }
- default:
- break;
- }
- painter->drawImage(rect, _tempImage);
-}
-
-/*! \internal
- Paints a transition state. The result will be a mix between the
- initial and final state of the transition, depending on the time
- difference between startTime and current time.
-*/
-void QWindowsVistaTransition::paint(QPainter *painter, const QStyleOption *option)
-{
- float alpha = 1.0;
- if (_duration > 0) {
- QTime current = QTime::currentTime();
-
- if (startTime() > current)
- setStartTime(current);
-
- int timeDiff = startTime().msecsTo(current);
- alpha = timeDiff/(float)_duration;
- if (timeDiff > _duration) {
- stop();
- alpha = 1.0;
- }
- }
- else {
- stop();
- }
- drawBlendedImage(painter, option->rect, alpha);
-}
-
-/*! \internal
- Paints a pulse. The result will be a mix between the primary and
- secondary pulse images depending on the time difference between
- startTime and current time.
-*/
-void QWindowsVistaPulse::paint(QPainter *painter, const QStyleOption *option)
+void QWindowsVistaAnimation::paint(QPainter *painter, const QStyleOption *option)
{
- float alpha = 1.0;
- if (_duration > 0) {
- QTime current = QTime::currentTime();
-
- if (startTime() > current)
- setStartTime(current);
-
- int timeDiff = startTime().msecsTo(current) % _duration*2;
- if (timeDiff > _duration)
- timeDiff = _duration*2 - timeDiff;
- alpha = timeDiff/(float)_duration;
- } else {
- stop();
- }
- drawBlendedImage(painter, option->rect, alpha);
+ painter->drawImage(option->rect, currentImage());
}
-
/*!
\internal
@@ -818,8 +722,10 @@ void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt
QPixmap pixmap;
if (vopt->backgroundBrush.style() != Qt::NoBrush) {
+ const QPointF oldBrushOrigin = painter->brushOrigin();
painter->setBrushOrigin(vopt->rect.topLeft());
painter->fillRect(vopt->rect, vopt->backgroundBrush);
+ painter->setBrushOrigin(oldBrushOrigin);
}
if (hover || selected) {
@@ -1088,8 +994,8 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption
theme.stateId = PBS_DEFAULTED_ANIMATING;
theme.painter = &alternatePainter;
d->drawBackground(theme);
- pulse->setPrimaryImage(startImage);
- pulse->setAlternateImage(alternateImage);
+ pulse->setStartImage(startImage);
+ pulse->setEndImage(alternateImage);
pulse->setStartTime(QTime::currentTime());
pulse->setDuration(2000);
d->startAnimation(pulse);
diff --git a/src/widgets/styles/qwindowsvistastyle.h b/src/widgets/styles/qwindowsvistastyle.h
index 0b17881101..72950aa66d 100644
--- a/src/widgets/styles/qwindowsvistastyle.h
+++ b/src/widgets/styles/qwindowsvistastyle.h
@@ -57,6 +57,7 @@ class Q_WIDGETS_EXPORT QWindowsVistaStyle : public QWindowsXPStyle
Q_OBJECT
public:
QWindowsVistaStyle();
+ ~QWindowsVistaStyle();
void drawPrimitive(PrimitiveElement element, const QStyleOption *option,
QPainter *painter, const QWidget *widget = 0) const;
diff --git a/src/widgets/styles/qwindowsvistastyle_p.h b/src/widgets/styles/qwindowsvistastyle_p.h
index 1d427fe45c..caa10454c5 100644
--- a/src/widgets/styles/qwindowsvistastyle_p.h
+++ b/src/widgets/styles/qwindowsvistastyle_p.h
@@ -135,24 +135,14 @@ QT_BEGIN_NAMESPACE
#define TDLG_SECONDARYPANEL 8
#endif
-class QWindowsVistaAnimation : public QStyleAnimation
+class QWindowsVistaAnimation : public QBlendStyleAnimation
{
Q_OBJECT
public:
- QWindowsVistaAnimation(QObject *target) : QStyleAnimation(target), _duration(-1) { }
- virtual ~QWindowsVistaAnimation() { }
- virtual void paint(QPainter *painter, const QStyleOption *option);
+ QWindowsVistaAnimation(Type type, QObject *target) : QBlendStyleAnimation(type, target) { }
+
virtual bool isUpdateNeeded() const;
- virtual int duration() const { return _duration; }
- //set time in ms to complete a state transition / pulse cycle
- void setDuration(int duration) { _duration = duration; }
-
-protected:
- void drawBlendedImage(QPainter *painter, QRect rect, float value);
- QImage _primaryImage;
- QImage _secondaryImage;
- QImage _tempImage;
- int _duration;
+ void paint(QPainter *painter, const QStyleOption *option);
};
@@ -161,11 +151,7 @@ class QWindowsVistaTransition : public QWindowsVistaAnimation
{
Q_OBJECT
public:
- QWindowsVistaTransition(QObject *target) : QWindowsVistaAnimation(target) {}
- virtual ~QWindowsVistaTransition() { }
- void setStartImage(const QImage &image) { _primaryImage = image; }
- void setEndImage(const QImage &image) { _secondaryImage = image; }
- virtual void paint(QPainter *painter, const QStyleOption *option);
+ QWindowsVistaTransition(QObject *target) : QWindowsVistaAnimation(Transition, target) {}
};
@@ -174,11 +160,7 @@ class QWindowsVistaPulse: public QWindowsVistaAnimation
{
Q_OBJECT
public:
- QWindowsVistaPulse(QObject *target) : QWindowsVistaAnimation(target) {}
- virtual ~QWindowsVistaPulse() { }
- void setPrimaryImage(const QImage &image) { _primaryImage = image; }
- void setAlternateImage(const QImage &image) { _secondaryImage = image; }
- virtual void paint(QPainter *painter, const QStyleOption *option);
+ QWindowsVistaPulse(QObject *target) : QWindowsVistaAnimation(Pulse, target) {}
};
diff --git a/src/widgets/styles/styles.pri b/src/widgets/styles/styles.pri
index 9c5a790390..af510dc107 100644
--- a/src/widgets/styles/styles.pri
+++ b/src/widgets/styles/styles.pri
@@ -99,11 +99,14 @@ contains( styles, windowsxp ) {
}
contains( styles, gtk ) {
+ HEADERS += styles/qgtkglobal_p.h
HEADERS += styles/qgtkstyle.h
HEADERS += styles/qgtkpainter_p.h
+ HEADERS += styles/qgtk2painter_p.h
HEADERS += styles/qgtkstyle_p.h
SOURCES += styles/qgtkstyle.cpp
SOURCES += styles/qgtkpainter.cpp
+ SOURCES += styles/qgtk2painter.cpp
SOURCES += styles/qgtkstyle_p.cpp
} else {
DEFINES += QT_NO_STYLE_GTK
diff --git a/src/widgets/util/qsystemtrayicon_x11.cpp b/src/widgets/util/qsystemtrayicon_x11.cpp
index 62dab8fa11..5fefa08f77 100644
--- a/src/widgets/util/qsystemtrayicon_x11.cpp
+++ b/src/widgets/util/qsystemtrayicon_x11.cpp
@@ -102,21 +102,14 @@ QX11SystemTrayContext::QX11SystemTrayContext() : m_display(0), m_screenNumber(0)
qWarning("%s: No screen.", Q_FUNC_INFO);
return;
}
- // Open display using screen name and retrieve screen number from "hostname:0.0"
- const QByteArray name = screen->name().toLocal8Bit();
- const int dotPos = name.lastIndexOf('.');
- if (dotPos != -1) {
- bool ok;
- const int n = name.mid(dotPos + 1).toInt(&ok);
- if (ok)
- m_screenNumber = n;
- }
- m_display = XOpenDisplay(name.constData());
- if (!m_display) {
- qWarning("%s: Cannot open display '%s'.", Q_FUNC_INFO, name.constData());
+ void *displayV = QGuiApplication::platformNativeInterface()->nativeResourceForScreen(QByteArrayLiteral("display"), screen);
+ if (!displayV) {
+ qWarning("%s: Unable to obtain X11 display of primary screen.", Q_FUNC_INFO);
return;
}
+ m_display = static_cast<Display *>(displayV);
+
const QByteArray netSysTray = "_NET_SYSTEM_TRAY_S" + QByteArray::number(m_screenNumber);
m_systemTraySelection = XInternAtom(m_display, netSysTray.constData(), False);
if (!m_systemTraySelection) {
@@ -134,8 +127,6 @@ Window QX11SystemTrayContext::locateSystemTray() const
QX11SystemTrayContext::~QX11SystemTrayContext()
{
- if (m_display)
- XCloseDisplay(m_display);
}
Q_GLOBAL_STATIC(QX11SystemTrayContext, qX11SystemTrayContext)
diff --git a/src/widgets/widgets/qabstractscrollarea.cpp b/src/widgets/widgets/qabstractscrollarea.cpp
index 8aa5534366..3c21d767be 100644
--- a/src/widgets/widgets/qabstractscrollarea.cpp
+++ b/src/widgets/widgets/qabstractscrollarea.cpp
@@ -57,6 +57,7 @@
#include <QDebug>
#include "qabstractscrollarea_p.h"
+#include "qscrollbar_p.h"
#include <qwidget.h>
#include <private/qapplication_p.h>
@@ -183,6 +184,7 @@ QAbstractScrollAreaScrollBarContainer::QAbstractScrollAreaScrollBarContainer(Qt:
layout->setMargin(0);
layout->setSpacing(0);
layout->addWidget(scrollBar);
+ layout->setSizeConstraint(QLayout::SetMaximumSize);
}
/*! \internal
@@ -266,6 +268,8 @@ void QAbstractScrollAreaPrivate::replaceScrollBar(QScrollBar *scrollBar,
scrollBar->setSliderPosition(oldBar->sliderPosition());
scrollBar->setTracking(oldBar->hasTracking());
scrollBar->setValue(oldBar->value());
+ scrollBar->installEventFilter(q);
+ oldBar->removeEventFilter(q);
delete oldBar;
QObject::connect(scrollBar, SIGNAL(valueChanged(int)),
@@ -286,6 +290,7 @@ void QAbstractScrollAreaPrivate::init()
hbar = scrollBarContainers[Qt::Horizontal]->scrollBar;
hbar->setRange(0,0);
scrollBarContainers[Qt::Horizontal]->setVisible(false);
+ hbar->installEventFilter(q);
QObject::connect(hbar, SIGNAL(valueChanged(int)), q, SLOT(_q_hslide(int)));
QObject::connect(hbar, SIGNAL(rangeChanged(int,int)), q, SLOT(_q_showOrHideScrollBars()), Qt::QueuedConnection);
scrollBarContainers[Qt::Vertical] = new QAbstractScrollAreaScrollBarContainer(Qt::Vertical, q);
@@ -293,6 +298,7 @@ void QAbstractScrollAreaPrivate::init()
vbar = scrollBarContainers[Qt::Vertical]->scrollBar;
vbar->setRange(0,0);
scrollBarContainers[Qt::Vertical]->setVisible(false);
+ vbar->installEventFilter(q);
QObject::connect(vbar, SIGNAL(valueChanged(int)), q, SLOT(_q_vslide(int)));
QObject::connect(vbar, SIGNAL(rangeChanged(int,int)), q, SLOT(_q_showOrHideScrollBars()), Qt::QueuedConnection);
viewportFilter.reset(new QAbstractScrollAreaFilter(this));
@@ -323,10 +329,10 @@ void QAbstractScrollAreaPrivate::layoutChildren()
{
Q_Q(QAbstractScrollArea);
bool needh = (hbarpolicy == Qt::ScrollBarAlwaysOn
- || (hbarpolicy == Qt::ScrollBarAsNeeded && hbar->minimum() < hbar->maximum()));
+ || (hbarpolicy == Qt::ScrollBarAsNeeded && hbar->minimum() < hbar->maximum() && !hbar->sizeHint().isEmpty()));
bool needv = (vbarpolicy == Qt::ScrollBarAlwaysOn
- || (vbarpolicy == Qt::ScrollBarAsNeeded && vbar->minimum() < vbar->maximum()));
+ || (vbarpolicy == Qt::ScrollBarAsNeeded && vbar->minimum() < vbar->maximum() && !vbar->sizeHint().isEmpty()));
QStyleOption opt(0);
opt.init(q);
@@ -648,6 +654,7 @@ void QAbstractScrollArea::setVerticalScrollBarPolicy(Qt::ScrollBarPolicy policy)
d->layoutChildren();
if (oldPolicy != d->vbarpolicy)
d->scrollBarPolicyChanged(Qt::Vertical, d->vbarpolicy);
+ d->setScrollBarTransient(d->vbar, policy == Qt::ScrollBarAsNeeded);
}
@@ -709,6 +716,7 @@ void QAbstractScrollArea::setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy polic
d->layoutChildren();
if (oldPolicy != d->hbarpolicy)
d->scrollBarPolicyChanged(Qt::Horizontal, d->hbarpolicy);
+ d->setScrollBarTransient(d->hbar, policy == Qt::ScrollBarAsNeeded);
}
/*!
@@ -921,6 +929,20 @@ void QAbstractScrollArea::setViewportMargins(const QMargins &margins)
margins.right(), margins.bottom());
}
+/*! \internal */
+bool QAbstractScrollArea::eventFilter(QObject *o, QEvent *e)
+{
+ Q_D(QAbstractScrollArea);
+ if ((o == d->hbar || o == d->vbar) && (e->type() == QEvent::HoverEnter || e->type() == QEvent::HoverLeave)) {
+ Qt::ScrollBarPolicy policy = o == d->hbar ? d->vbarpolicy : d->hbarpolicy;
+ if (policy == Qt::ScrollBarAsNeeded) {
+ QScrollBar *sibling = o == d->hbar ? d->vbar : d->hbar;
+ d->setScrollBarTransient(sibling, e->type() == QEvent::HoverLeave);
+ }
+ }
+ return QFrame::eventFilter(o, e);
+}
+
/*!
\fn bool QAbstractScrollArea::event(QEvent *event)
@@ -1421,12 +1443,26 @@ bool QAbstractScrollAreaPrivate::canStartScrollingAt( const QPoint &startPos )
return true;
}
+void QAbstractScrollAreaPrivate::flashScrollBars()
+{
+ if (hbarpolicy == Qt::ScrollBarAsNeeded)
+ hbar->d_func()->flash();
+ if (vbarpolicy == Qt::ScrollBarAsNeeded)
+ vbar->d_func()->flash();
+}
+
+void QAbstractScrollAreaPrivate::setScrollBarTransient(QScrollBar *scrollBar, bool transient)
+{
+ scrollBar->d_func()->setTransient(transient);
+}
+
void QAbstractScrollAreaPrivate::_q_hslide(int x)
{
Q_Q(QAbstractScrollArea);
int dx = xoffset - x;
xoffset = x;
q->scrollContentsBy(dx, 0);
+ flashScrollBars();
}
void QAbstractScrollAreaPrivate::_q_vslide(int y)
@@ -1435,6 +1471,7 @@ void QAbstractScrollAreaPrivate::_q_vslide(int y)
int dy = yoffset - y;
yoffset = y;
q->scrollContentsBy(0, dy);
+ flashScrollBars();
}
void QAbstractScrollAreaPrivate::_q_showOrHideScrollBars()
diff --git a/src/widgets/widgets/qabstractscrollarea.h b/src/widgets/widgets/qabstractscrollarea.h
index 560df9dcae..5ac140241e 100644
--- a/src/widgets/widgets/qabstractscrollarea.h
+++ b/src/widgets/widgets/qabstractscrollarea.h
@@ -96,6 +96,7 @@ protected:
void setViewportMargins(int left, int top, int right, int bottom);
void setViewportMargins(const QMargins &margins);
+ bool eventFilter(QObject *, QEvent *);
bool event(QEvent *);
virtual bool viewportEvent(QEvent *);
diff --git a/src/widgets/widgets/qabstractscrollarea_p.h b/src/widgets/widgets/qabstractscrollarea_p.h
index d77d97e03f..7e2ca741b1 100644
--- a/src/widgets/widgets/qabstractscrollarea_p.h
+++ b/src/widgets/widgets/qabstractscrollarea_p.h
@@ -92,6 +92,9 @@ public:
virtual void scrollBarPolicyChanged(Qt::Orientation, Qt::ScrollBarPolicy) {}
bool canStartScrollingAt( const QPoint &startPos );
+ void flashScrollBars();
+ void setScrollBarTransient(QScrollBar *scrollBar, bool transient);
+
void _q_hslide(int);
void _q_vslide(int);
void _q_showOrHideScrollBars();
diff --git a/src/widgets/widgets/qabstractspinbox.cpp b/src/widgets/widgets/qabstractspinbox.cpp
index 845cb5dbd0..c48d7172ab 100644
--- a/src/widgets/widgets/qabstractspinbox.cpp
+++ b/src/widgets/widgets/qabstractspinbox.cpp
@@ -825,7 +825,7 @@ QSize QAbstractSpinBox::sizeHint() const
ensurePolished();
const QFontMetrics fm(fontMetrics());
- int h = d->edit->sizeHint().height();
+ int h = d->edit->sizeHint().height() + 4;
int w = 0;
QString s;
s = d->prefix + d->textFromValue(d->minimum) + d->suffix + QLatin1Char(' ');
@@ -843,17 +843,6 @@ QSize QAbstractSpinBox::sizeHint() const
QStyleOptionSpinBox opt;
initStyleOption(&opt);
QSize hint(w, h);
- QSize extra(35, 6);
- opt.rect.setSize(hint + extra);
- extra += hint - style()->subControlRect(QStyle::CC_SpinBox, &opt,
- QStyle::SC_SpinBoxEditField, this).size();
- // get closer to final result by repeating the calculation
- opt.rect.setSize(hint + extra);
- extra += hint - style()->subControlRect(QStyle::CC_SpinBox, &opt,
- QStyle::SC_SpinBoxEditField, this).size();
- hint += extra;
-
- opt.rect = rect();
d->cachedSizeHint = style()->sizeFromContents(QStyle::CT_SpinBox, &opt, hint, this)
.expandedTo(QApplication::globalStrut());
}
diff --git a/src/widgets/widgets/qcheckbox.cpp b/src/widgets/widgets/qcheckbox.cpp
index 29ac80c77d..bf6593d976 100644
--- a/src/widgets/widgets/qcheckbox.cpp
+++ b/src/widgets/widgets/qcheckbox.cpp
@@ -216,6 +216,13 @@ QCheckBox::QCheckBox(const QString &text, QWidget *parent)
setText(text);
}
+/*!
+ Destructor.
+*/
+QCheckBox::~QCheckBox()
+{
+}
+
void QCheckBox::setTristate(bool y)
{
Q_D(QCheckBox);
diff --git a/src/widgets/widgets/qcheckbox.h b/src/widgets/widgets/qcheckbox.h
index c7f33b933a..468c8717c7 100644
--- a/src/widgets/widgets/qcheckbox.h
+++ b/src/widgets/widgets/qcheckbox.h
@@ -61,7 +61,7 @@ class Q_WIDGETS_EXPORT QCheckBox : public QAbstractButton
public:
explicit QCheckBox(QWidget *parent=0);
explicit QCheckBox(const QString &text, QWidget *parent=0);
-
+ ~QCheckBox();
QSize sizeHint() const;
QSize minimumSizeHint() const;
diff --git a/src/widgets/widgets/qcommandlinkbutton.cpp b/src/widgets/widgets/qcommandlinkbutton.cpp
index 5207241b84..11c4b411f0 100644
--- a/src/widgets/widgets/qcommandlinkbutton.cpp
+++ b/src/widgets/widgets/qcommandlinkbutton.cpp
@@ -302,6 +302,13 @@ QCommandLinkButton::QCommandLinkButton(const QString &text, const QString &descr
d->init();
}
+/*!
+ Destructor.
+*/
+QCommandLinkButton::~QCommandLinkButton()
+{
+}
+
/*! \reimp */
bool QCommandLinkButton::event(QEvent *e)
{
diff --git a/src/widgets/widgets/qcommandlinkbutton.h b/src/widgets/widgets/qcommandlinkbutton.h
index 731d02a60c..ec8fd339d0 100644
--- a/src/widgets/widgets/qcommandlinkbutton.h
+++ b/src/widgets/widgets/qcommandlinkbutton.h
@@ -61,7 +61,9 @@ class Q_WIDGETS_EXPORT QCommandLinkButton: public QPushButton
public:
explicit QCommandLinkButton(QWidget *parent=0);
explicit QCommandLinkButton(const QString &text, QWidget *parent=0);
- QCommandLinkButton(const QString &text, const QString &description, QWidget *parent=0);
+ explicit QCommandLinkButton(const QString &text, const QString &description, QWidget *parent=0);
+ ~QCommandLinkButton();
+
QString description() const;
void setDescription(const QString &description);
diff --git a/src/widgets/widgets/qdatetimeedit.cpp b/src/widgets/widgets/qdatetimeedit.cpp
index 8a23530283..0895c96577 100644
--- a/src/widgets/widgets/qdatetimeedit.cpp
+++ b/src/widgets/widgets/qdatetimeedit.cpp
@@ -219,6 +219,13 @@ QDateTimeEdit::QDateTimeEdit(const QVariant &var, QVariant::Type parserType, QWi
}
/*!
+ Destructor.
+*/
+QDateTimeEdit::~QDateTimeEdit()
+{
+}
+
+/*!
\property QDateTimeEdit::dateTime
\brief the QDateTime that is set in the QDateTimeEdit
@@ -1562,6 +1569,13 @@ QTimeEdit::QTimeEdit(const QTime &time, QWidget *parent)
}
/*!
+ Destructor.
+*/
+QTimeEdit::~QTimeEdit()
+{
+}
+
+/*!
\property QTimeEdit::time
\internal
\sa QDateTimeEdit::time
@@ -1631,6 +1645,13 @@ QDateEdit::QDateEdit(const QDate &date, QWidget *parent)
}
/*!
+ Destructor.
+*/
+QDateEdit::~QDateEdit()
+{
+}
+
+/*!
\property QDateEdit::date
\internal
\sa QDateTimeEdit::date
diff --git a/src/widgets/widgets/qdatetimeedit.h b/src/widgets/widgets/qdatetimeedit.h
index 7ce7037dd0..7435013bec 100644
--- a/src/widgets/widgets/qdatetimeedit.h
+++ b/src/widgets/widgets/qdatetimeedit.h
@@ -100,6 +100,7 @@ public:
explicit QDateTimeEdit(const QDateTime &dt, QWidget *parent = 0);
explicit QDateTimeEdit(const QDate &d, QWidget *parent = 0);
explicit QDateTimeEdit(const QTime &t, QWidget *parent = 0);
+ ~QDateTimeEdit();
QDateTime dateTime() const;
QDate date() const;
@@ -207,8 +208,9 @@ class Q_WIDGETS_EXPORT QTimeEdit : public QDateTimeEdit
Q_OBJECT
Q_PROPERTY(QTime time READ time WRITE setTime NOTIFY userTimeChanged USER true)
public:
- QTimeEdit(QWidget *parent = 0);
- QTimeEdit(const QTime &time, QWidget *parent = 0);
+ explicit QTimeEdit(QWidget *parent = 0);
+ explicit QTimeEdit(const QTime &time, QWidget *parent = 0);
+ ~QTimeEdit();
Q_SIGNALS:
void userTimeChanged(const QTime &time);
@@ -219,8 +221,9 @@ class Q_WIDGETS_EXPORT QDateEdit : public QDateTimeEdit
Q_OBJECT
Q_PROPERTY(QDate date READ date WRITE setDate NOTIFY userDateChanged USER true)
public:
- QDateEdit(QWidget *parent = 0);
- QDateEdit(const QDate &date, QWidget *parent = 0);
+ explicit QDateEdit(QWidget *parent = 0);
+ explicit QDateEdit(const QDate &date, QWidget *parent = 0);
+ ~QDateEdit();
Q_SIGNALS:
void userDateChanged(const QDate &date);
diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp
index a06c8ed54c..f4539e8e4a 100644
--- a/src/widgets/widgets/qlineedit.cpp
+++ b/src/widgets/widgets/qlineedit.cpp
@@ -120,8 +120,7 @@ void QLineEdit::initStyleOption(QStyleOptionFrame *option) const
if (hasEditFocus())
option->state |= QStyle::State_HasEditFocus;
#endif
- if (QStyleOptionFrameV2 *optionV2 = qstyleoption_cast<QStyleOptionFrameV2 *>(option))
- optionV2->features = QStyleOptionFrameV2::None;
+ option->features = QStyleOptionFrame::None;
}
/*!
diff --git a/src/widgets/widgets/qmainwindow.cpp b/src/widgets/widgets/qmainwindow.cpp
index 93492bab61..056e2cbacc 100644
--- a/src/widgets/widgets/qmainwindow.cpp
+++ b/src/widgets/widgets/qmainwindow.cpp
@@ -100,6 +100,7 @@ public:
QCursor separatorCursor(const QList<int> &path) const;
void adjustCursor(const QPoint &pos);
QCursor oldCursor;
+ QCursor adjustedCursor;
uint hasOldCursor : 1;
uint cursorAdjusted : 1;
#endif
@@ -1300,7 +1301,7 @@ void QMainWindowPrivate::adjustCursor(const QPoint &pos)
else
q->unsetCursor();
}
- } else {
+ } else if (layout->movingSeparator.isEmpty()) { // Don't change cursor when moving separator
QList<int> pathToSeparator
= layout->layoutState.dockAreaLayout.findSeparator(pos);
@@ -1324,9 +1325,8 @@ void QMainWindowPrivate::adjustCursor(const QPoint &pos)
oldCursor = q->cursor();
hasOldCursor = q->testAttribute(Qt::WA_SetCursor);
}
- QCursor cursor = separatorCursor(hoverSeparator);
- cursorAdjusted = false; //to not reset the oldCursor in event(CursorChange)
- q->setCursor(cursor);
+ adjustedCursor = separatorCursor(hoverSeparator);
+ q->setCursor(adjustedCursor);
cursorAdjusted = true;
}
}
@@ -1452,9 +1452,15 @@ bool QMainWindow::event(QEvent *event)
#endif // Q_WS_MAC
#if !defined(QT_NO_DOCKWIDGET) && !defined(QT_NO_CURSOR)
case QEvent::CursorChange:
- if (d->cursorAdjusted) {
+ // CursorChange events are triggered as mouse moves to new widgets even
+ // if the cursor doesn't actually change, so do not change oldCursor if
+ // the "changed" cursor has same shape as adjusted cursor.
+ if (d->cursorAdjusted && d->adjustedCursor.shape() != cursor().shape()) {
d->oldCursor = cursor();
d->hasOldCursor = testAttribute(Qt::WA_SetCursor);
+
+ // Ensure our adjusted cursor stays visible
+ setCursor(d->adjustedCursor);
}
break;
#endif
diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp
index fe7e444e86..47ffdda3b6 100644
--- a/src/widgets/widgets/qmenu.cpp
+++ b/src/widgets/widgets/qmenu.cpp
@@ -543,6 +543,16 @@ void QMenuPrivate::setCurrentAction(QAction *action, int popup, SelectionReason
{
Q_Q(QMenu);
tearoffHighlighted = 0;
+ // Reselect the currently active action in case mouse moved over other menu items when
+ // moving from sub menu action to sub menu (QTBUG-20094).
+ if (reason != SelectedFromKeyboard && action == currentAction && !(action && action->menu() && action->menu() != activeMenu)) {
+ if (QMenu *menu = qobject_cast<QMenu*>(causedPopup.widget)) {
+ if (causedPopup.action && menu->d_func()->activeMenu == q)
+ menu->d_func()->setCurrentAction(causedPopup.action, 0, reason, false);
+ }
+ return;
+ }
+
if (currentAction)
q->update(actionRect(currentAction));
diff --git a/src/widgets/widgets/qprogressbar.cpp b/src/widgets/widgets/qprogressbar.cpp
index b7726e7771..2bd893003d 100644
--- a/src/widgets/widgets/qprogressbar.cpp
+++ b/src/widgets/widgets/qprogressbar.cpp
@@ -244,6 +244,13 @@ QProgressBar::QProgressBar(QWidget *parent)
}
/*!
+ Destructor.
+*/
+QProgressBar::~QProgressBar()
+{
+}
+
+/*!
Reset the progress bar. The progress bar "rewinds" and shows no
progress.
*/
diff --git a/src/widgets/widgets/qprogressbar.h b/src/widgets/widgets/qprogressbar.h
index 30a4863f84..a830df7a57 100644
--- a/src/widgets/widgets/qprogressbar.h
+++ b/src/widgets/widgets/qprogressbar.h
@@ -73,6 +73,7 @@ public:
enum Direction { TopToBottom, BottomToTop };
explicit QProgressBar(QWidget *parent = 0);
+ ~QProgressBar();
int minimum() const;
int maximum() const;
diff --git a/src/widgets/widgets/qradiobutton.cpp b/src/widgets/widgets/qradiobutton.cpp
index 78d53ad0e6..d4abd3389f 100644
--- a/src/widgets/widgets/qradiobutton.cpp
+++ b/src/widgets/widgets/qradiobutton.cpp
@@ -144,6 +144,13 @@ QRadioButton::QRadioButton(QWidget *parent)
}
/*!
+ Destructor.
+*/
+QRadioButton::~QRadioButton()
+{
+}
+
+/*!
Constructs a radio button with the given \a parent and a \a text string.
The \a parent argument is passed on to the QAbstractButton constructor.
diff --git a/src/widgets/widgets/qradiobutton.h b/src/widgets/widgets/qradiobutton.h
index eeb029871c..dec49dd090 100644
--- a/src/widgets/widgets/qradiobutton.h
+++ b/src/widgets/widgets/qradiobutton.h
@@ -59,6 +59,7 @@ class Q_WIDGETS_EXPORT QRadioButton : public QAbstractButton
public:
explicit QRadioButton(QWidget *parent=0);
explicit QRadioButton(const QString &text, QWidget *parent=0);
+ ~QRadioButton();
QSize sizeHint() const;
QSize minimumSizeHint() const;
diff --git a/src/widgets/widgets/qscrollarea.cpp b/src/widgets/widgets/qscrollarea.cpp
index be7ce10c8c..576f77a7b7 100644
--- a/src/widgets/widgets/qscrollarea.cpp
+++ b/src/widgets/widgets/qscrollarea.cpp
@@ -331,7 +331,7 @@ bool QScrollArea::eventFilter(QObject *o, QEvent *e)
if (o == d->widget && e->type() == QEvent::Resize)
d->updateScrollBars();
- return false;
+ return QAbstractScrollArea::eventFilter(o, e);
}
/*!
diff --git a/src/widgets/widgets/qscrollbar.cpp b/src/widgets/widgets/qscrollbar.cpp
index aa45b4f54e..199aaf93de 100644
--- a/src/widgets/widgets/qscrollbar.cpp
+++ b/src/widgets/widgets/qscrollbar.cpp
@@ -55,7 +55,7 @@
#include "qaccessible.h"
#endif
#include <limits.h>
-#include "qabstractslider_p.h"
+#include "qscrollbar_p.h"
QT_BEGIN_NAMESPACE
@@ -201,26 +201,6 @@ QT_BEGIN_NAMESPACE
\sa QScrollArea, QSlider, QDial, QSpinBox, {fowler}{GUI Design Handbook: Scroll Bar}, {Sliders Example}
*/
-class QScrollBarPrivate : public QAbstractSliderPrivate
-{
- Q_DECLARE_PUBLIC(QScrollBar)
-public:
- QStyle::SubControl pressedControl;
- bool pointerOutsidePressedControl;
-
- int clickOffset, snapBackPosition;
-
- void activateControl(uint control, int threshold = 500);
- void stopRepeatAction();
- int pixelPosToRangeValue(int pos) const;
- void init();
- bool updateHoverControl(const QPoint &pos);
- QStyle::SubControl newHoverControl(const QPoint &pos);
-
- QStyle::SubControl hoverControl;
- QRect hoverRect;
-};
-
bool QScrollBarPrivate::updateHoverControl(const QPoint &pos)
{
Q_Q(QScrollBar);
@@ -249,6 +229,29 @@ QStyle::SubControl QScrollBarPrivate::newHoverControl(const QPoint &pos)
return hoverControl;
}
+void QScrollBarPrivate::setTransient(bool value)
+{
+ Q_Q(QScrollBar);
+ if (transient != value) {
+ transient = value;
+ if (transient) {
+ if (q->isVisible() && q->style()->styleHint(QStyle::SH_ScrollBar_Transient))
+ q->update();
+ } else if (!q->isVisible()) {
+ q->show();
+ }
+ }
+}
+
+void QScrollBarPrivate::flash()
+{
+ Q_Q(QScrollBar);
+ if (!flashed && q->style()->styleHint(QStyle::SH_ScrollBar_Transient)) {
+ flashed = true;
+ q->show();
+ }
+}
+
void QScrollBarPrivate::activateControl(uint control, int threshold)
{
QAbstractSlider::SliderAction action = QAbstractSlider::SliderNoAction;
@@ -322,6 +325,8 @@ void QScrollBar::initStyleOption(QStyleOptionSlider *option) const
option->upsideDown = d->invertedAppearance;
if (d->orientation == Qt::Horizontal)
option->state |= QStyle::State_Horizontal;
+ if (d->flashed || !d->transient)
+ option->state |= QStyle::State_On;
}
@@ -379,6 +384,8 @@ void QScrollBarPrivate::init()
invertedControls = true;
pressedControl = hoverControl = QStyle::SC_None;
pointerOutsidePressedControl = false;
+ transient = q->style()->styleHint(QStyle::SH_ScrollBar_Transient);
+ flashed = false;
q->setFocusPolicy(Qt::NoFocus);
QSizePolicy sp(QSizePolicy::Minimum, QSizePolicy::Fixed, QSizePolicy::Slider);
if (orientation == Qt::Vertical)
@@ -476,6 +483,9 @@ bool QScrollBar::event(QEvent *event)
if (const QHoverEvent *he = static_cast<const QHoverEvent *>(event))
d_func()->updateHoverControl(he->pos());
break;
+ case QEvent::StyleChange:
+ d_func()->setTransient(style()->styleHint(QStyle::SH_ScrollBar_Transient));
+ break;
default:
break;
}
@@ -521,6 +531,10 @@ void QScrollBar::paintEvent(QPaintEvent *)
opt.activeSubControls = (QStyle::SubControl)d->hoverControl;
}
style()->drawComplexControl(QStyle::CC_ScrollBar, &opt, &p, this);
+ if (d->flashed && style()->styleHint(QStyle::SH_ScrollBar_Transient)) {
+ d->flashed = false;
+ update();
+ }
}
/*!
diff --git a/src/widgets/widgets/qscrollbar.h b/src/widgets/widgets/qscrollbar.h
index 48863616ff..3e9ac8a47f 100644
--- a/src/widgets/widgets/qscrollbar.h
+++ b/src/widgets/widgets/qscrollbar.h
@@ -83,6 +83,7 @@ protected:
private:
+ friend class QAbstractScrollAreaPrivate;
friend Q_WIDGETS_EXPORT QStyleOptionSlider qt_qscrollbarStyleOption(QScrollBar *scrollBar);
Q_DISABLE_COPY(QScrollBar)
diff --git a/src/widgets/widgets/qscrollbar_p.h b/src/widgets/widgets/qscrollbar_p.h
new file mode 100644
index 0000000000..fb4f5b07da
--- /dev/null
+++ b/src/widgets/widgets/qscrollbar_p.h
@@ -0,0 +1,89 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QSCROLLBAR_P_H
+#define QSCROLLBAR_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "private/qabstractslider_p.h"
+#include "qstyle.h"
+
+QT_BEGIN_NAMESPACE
+
+class QScrollBarPrivate : public QAbstractSliderPrivate
+{
+ Q_DECLARE_PUBLIC(QScrollBar)
+public:
+ QStyle::SubControl pressedControl;
+ bool pointerOutsidePressedControl;
+
+ int clickOffset, snapBackPosition;
+
+ void activateControl(uint control, int threshold = 500);
+ void stopRepeatAction();
+ int pixelPosToRangeValue(int pos) const;
+ void init();
+ bool updateHoverControl(const QPoint &pos);
+ QStyle::SubControl newHoverControl(const QPoint &pos);
+
+ QStyle::SubControl hoverControl;
+ QRect hoverRect;
+
+ bool transient;
+ void setTransient(bool value);
+
+ bool flashed;
+ void flash();
+};
+
+QT_END_NAMESPACE
+
+#endif // QSCROLLBAR_P_H
diff --git a/src/widgets/widgets/qspinbox.cpp b/src/widgets/widgets/qspinbox.cpp
index 6a11c6d88c..cb09e8bb32 100644
--- a/src/widgets/widgets/qspinbox.cpp
+++ b/src/widgets/widgets/qspinbox.cpp
@@ -209,6 +209,10 @@ QSpinBox::QSpinBox(QWidget *parent)
d->init();
}
+/*!
+ Destructor.
+*/
+QSpinBox::~QSpinBox() {}
/*!
\property QSpinBox::value
@@ -580,6 +584,11 @@ QDoubleSpinBox::QDoubleSpinBox(QWidget *parent)
}
/*!
+ Destructor.
+*/
+QDoubleSpinBox::~QDoubleSpinBox() {}
+
+/*!
\property QDoubleSpinBox::value
\brief the value of the spin box
diff --git a/src/widgets/widgets/qspinbox.h b/src/widgets/widgets/qspinbox.h
index b9475254db..889b283c2a 100644
--- a/src/widgets/widgets/qspinbox.h
+++ b/src/widgets/widgets/qspinbox.h
@@ -66,6 +66,7 @@ class Q_WIDGETS_EXPORT QSpinBox : public QAbstractSpinBox
public:
explicit QSpinBox(QWidget *parent = 0);
+ ~QSpinBox();
int value() const;
@@ -124,6 +125,7 @@ class Q_WIDGETS_EXPORT QDoubleSpinBox : public QAbstractSpinBox
Q_PROPERTY(double value READ value WRITE setValue NOTIFY valueChanged USER true)
public:
explicit QDoubleSpinBox(QWidget *parent = 0);
+ ~QDoubleSpinBox();
double value() const;
diff --git a/src/widgets/widgets/qsplitter.cpp b/src/widgets/widgets/qsplitter.cpp
index 794a824589..70c493cedd 100644
--- a/src/widgets/widgets/qsplitter.cpp
+++ b/src/widgets/widgets/qsplitter.cpp
@@ -124,6 +124,13 @@ QSplitterHandle::QSplitterHandle(Qt::Orientation orientation, QSplitter *parent)
}
/*!
+ Destructor.
+*/
+QSplitterHandle::~QSplitterHandle()
+{
+}
+
+/*!
Sets the orientation of the splitter handle to \a orientation.
This is usually propagated from the QSplitter.
@@ -917,6 +924,10 @@ QSplitterLayoutStruct *QSplitterPrivate::insertWidget(int index, QWidget *w)
When you hide() a child its space will be distributed among the
other children. It will be reinstated when you show() it again.
+ \note Adding a QLayout to a QSplitter is not supported (either through
+ setLayout() or making the QSplitter a parent of the QLayout); use addWidget()
+ instead (see example above).
+
\sa QSplitterHandle, QHBoxLayout, QVBoxLayout, QTabWidget
*/
@@ -1207,8 +1218,11 @@ int QSplitter::count() const
void QSplitter::childEvent(QChildEvent *c)
{
Q_D(QSplitter);
- if (!c->child()->isWidgetType())
+ if (!c->child()->isWidgetType()) {
+ if (c->type() == QEvent::ChildAdded && qobject_cast<QLayout *>(c->child()))
+ qWarning("Adding a QLayout to a QSplitter is not supported.");
return;
+ }
QWidget *w = static_cast<QWidget*>(c->child());
if (c->added() && !d->blockChildAdd && !w->isWindow() && !d->findWidget(w)) {
d->insertWidget_helper(d->list.count(), w, false);
@@ -1529,7 +1543,7 @@ void QSplitter::setSizes(const QList<int> &list)
and style preferences.
If you set handleWidth to 1 or 0, the actual grab area will grow to overlap a
- few pixels of it's respective widgets.
+ few pixels of its respective widgets.
*/
int QSplitter::handleWidth() const
diff --git a/src/widgets/widgets/qsplitter.h b/src/widgets/widgets/qsplitter.h
index 18d3bae3e2..2bcdc54c0e 100644
--- a/src/widgets/widgets/qsplitter.h
+++ b/src/widgets/widgets/qsplitter.h
@@ -140,7 +140,9 @@ class Q_WIDGETS_EXPORT QSplitterHandle : public QWidget
{
Q_OBJECT
public:
- QSplitterHandle(Qt::Orientation o, QSplitter *parent);
+ explicit QSplitterHandle(Qt::Orientation o, QSplitter *parent);
+ ~QSplitterHandle();
+
void setOrientation(Qt::Orientation o);
Qt::Orientation orientation() const;
bool opaqueResize() const;
diff --git a/src/widgets/widgets/qwidgetlinecontrol.cpp b/src/widgets/widgets/qwidgetlinecontrol.cpp
index bed8296989..7d68e40c9f 100644
--- a/src/widgets/widgets/qwidgetlinecontrol.cpp
+++ b/src/widgets/widgets/qwidgetlinecontrol.cpp
@@ -1456,6 +1456,15 @@ void QWidgetLineControl::complete(int key)
}
#endif
+void QWidgetLineControl::setReadOnly(bool enable)
+{
+ m_readOnly = enable;
+ if (enable)
+ setCursorBlinkPeriod(0);
+ else
+ setCursorBlinkPeriod(QApplication::cursorFlashTime());
+}
+
void QWidgetLineControl::setCursorBlinkPeriod(int msec)
{
if (msec == m_blinkPeriod)
@@ -1463,7 +1472,7 @@ void QWidgetLineControl::setCursorBlinkPeriod(int msec)
if (m_blinkTimer) {
killTimer(m_blinkTimer);
}
- if (msec) {
+ if (msec && !m_readOnly) {
m_blinkTimer = startTimer(msec / 2);
m_blinkStatus = 1;
} else {
@@ -1474,6 +1483,7 @@ void QWidgetLineControl::setCursorBlinkPeriod(int msec)
m_blinkPeriod = msec;
}
+// This is still used by QDeclarativeTextInput in the qtquick1 repo
void QWidgetLineControl::resetCursorBlinkTimer()
{
if (m_blinkPeriod == 0 || m_blinkTimer == 0)
diff --git a/src/widgets/widgets/qwidgetlinecontrol_p.h b/src/widgets/widgets/qwidgetlinecontrol_p.h
index 185bc117b6..13cba8baff 100644
--- a/src/widgets/widgets/qwidgetlinecontrol_p.h
+++ b/src/widgets/widgets/qwidgetlinecontrol_p.h
@@ -213,7 +213,7 @@ public:
}
bool isReadOnly() const { return m_readOnly; }
- void setReadOnly(bool enable) { m_readOnly = enable; }
+ void setReadOnly(bool enable);
QString text() const
{
diff --git a/src/widgets/widgets/widgets.pri b/src/widgets/widgets/widgets.pri
index c86bc1eff7..797f3e9b76 100644
--- a/src/widgets/widgets/widgets.pri
+++ b/src/widgets/widgets/widgets.pri
@@ -46,6 +46,7 @@ HEADERS += \
widgets/qradiobutton.h \
widgets/qrubberband.h \
widgets/qscrollbar.h \
+ widgets/qscrollbar_p.h \
widgets/qscrollarea_p.h \
widgets/qsizegrip.h \
widgets/qslider.h \
diff --git a/src/winmain/winmain.pro b/src/winmain/winmain.pro
index 843a15989e..e5da5bd97f 100644
--- a/src/winmain/winmain.pro
+++ b/src/winmain/winmain.pro
@@ -6,8 +6,7 @@ TARGET = qtmain
DESTDIR = $$QT.core.libs
CONFIG += static warn_on depend_includepath
-CONFIG -= fix_output_dirs
-QT = # qt.prf is still needed for some DEFINES, etc.
+QT = core
contains(QT_CONFIG, build_all):CONFIG += build_all
@@ -17,8 +16,6 @@ win32-msvc*:QMAKE_CFLAGS_DEBUG *= -Z7
win32-msvc*:QMAKE_CXXFLAGS_DEBUG *= -Z7
win32-g++*: DEFINES += QT_NEEDS_QMAIN
-INCLUDEPATH += $$QT.core.includes
-
SOURCES = qtmain_win.cpp
load(qt_installs)