/****************************************************************************
**
** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** 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 The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
\page qpa.html
\title Qt Platform Abstraction

The Qt Platform Abstraction (QPA) is the platform abstraction layer for Qt 5
and replaces Qt for Embedded Linux and the platform ports from Qt 4.

QPA plugins are implemented by subclassing various \c QPlatform* classes. There
are several \e root classes, such as \c QPlatformIntegration and
\c QPlatformWindow for window system integration and \c QPlatformTheme for
deeper platform theming and integration. QStyle is not a part of QPA.

There are no source or binary compatibility guarantees for the QPA classes,
meaning that a platform plugin is only guaranteed to work with the Qt version
it was developed against. API changes will however only be made in minor
releases. (5.1, 5.2, and so on.)

\section1 QPA Minimal Plugins

There is no detailed tutorial documentation for writing QPA plugins at this
time. However, there are two minimal plugins shipped with Qt 5 for testing and
other special purposes that you can use as examples:

\list
\li \c{qtbase/src/plugins/platforms/minimal/}
\li \c{qtbase/src/plugins/platforms/minimalegl/}
\endlist

The \c qminimal plugin is used for tools that link against \l{Qt GUI}, but do
not require window system integration (for example, \c qmlplugindump).
It also has diagnostic support for dumping window contents to image files
as determined by environment variables.

\section1 Class Overview

\list
\li QPlatformIntegration
    \list
    \li QAbstractEventDispatcher
    \li QPlatformAccessibility
    \li QPlatformBackingStore
    \li QPlatformClipboard
    \li QPlatformCursor
    \li QPlatformDrag
    \li QPlatformFontDatabase
    \li QPlatformGraphicsBuffer
    \li QPlatformInputContext
    \li QPlatformNativeInterface
    \li QPlatformOffscreenSurface
    \li QPlatformOpenGLContext
    \li QPlatformScreen
    \li QPlatformServices
    \li QPlatformSharedGraphicsCache
    \li QPlatformSurface
    \li QPlatformWindow
    \endlist

\li QPlatformTheme
    \list
    \li QPlatformDialogHelper
    \li QPlatformMenu
    \li QPlatformMenuBar
    \li QPlatformMenuItem
    \li QPlatformSystemTrayIcon
    \li platform palettes
    \li platform fonts
    \li theme hints
    \endlist
\endlist

\c{qtbase/src/platformsupport} contains several helper classes for implementing
platform plugins on Unix-like systems.

\section1 QPA Plugins

The following table summarizes the platform plugins available for QPA:

\table
\header
    \li Plugin Name
    \li Plugin Class Name
    \li Description
\row
    \li \c qandroid
    \li QAndroidPlatformIntegration
    \li \l{Qt for Android}{Android support}
\row
    \li \c qbsdfb
    \li QBsdFbIntegration
    \li BsdFb support
\row
    \li \c qcocoa
    \li QCocoaIntegrationPlugin
    \li \l{Qt for macOS}{Cocoa support}
\row
    \li \c qdirect2d
    \li QWindowsDirect2DIntegrationPlugin
    \li Similar to the \c qwindows plugin, but replaces the raster paint engine
        with a Direct2D-based paint engine for QPixmap and QBackingStore.
\row
    \li \c qdirectfb
    \li QDirectFbIntegrationPlugin
    \li DirectFB is centered around \e surfaces, which are the equivalent of a
        QPaintDevice.
\row
    \li \c qeglfs
    \li QEglFSIntegrationPlugin
    \li \l{embedded eglfs}{EGLFS} support for embedded Linux devices.
\row
    \li \c qhaiku
    \li QHaikuIntegration
    \li Haiku support
\row
    \li \c qios
    \li QIOSIntegrationPlugin
    \li \l{Qt for iOS}{iOS support}
\row
    \li \c qlinuxfb
    \li QLinuxFbIntegrationPlugin
    \li \l LinuxFB support for embedded Linux devices.
\row
    \li \c qmirclient
    \li QMirClientIntegration
    \li Mir client support
\row
    \li \c qopenwf
    \li QOpenWFDIntegrationPlugin
    \li OpenWF Display support for managing display control hardware.
\row
    \li \c qqnx
    \li QQnxIntegrationPlugin
    \li \l{Qt for QNX}{QNX support}
\row
    \li \c qvnc
    \li QVncIntegration
    \li VNC support
\row
    \li \c qwasm
    \li QWasmIntegration
    \li \l{Qt for WebAssembly}{WebAssembly support}
\row
    \li \c qwayland
    \li \list
            \li QWaylandIntegrationPlugin
            \li QWaylandBrcmEglPlatformIntegrationPlugin
            \li QWaylandEglPlatformIntegrationPlugin
            \li QWaylandXCompositeEglPlatformIntegrationPlugin
            \li QWaylandXCompositeGlxPlatformIntegrationPlugin
        \endlist
    \li \l{Qt Wayland Compositor}{Wayland support}
\row
    \li \c qwindows
    \li QWindowsIntegrationPlugin
    \li \l{Qt for Windows}{Windows support}
\row
    \li \c qwinrt
    \li QWinRTIntegrationPlugin
    \li \l{Qt for UWP}{Universal Windows Platform (UWP) support}
        \note This plugin was originally written for \WinRT (Windows Runtime),
        and is therefore called \c qwinrt.

\row
    \li \c qxcb
    \li QXcbIntegrationPlugin
    \li \l{Qt for Linux/X11}{X Window System (X11) support}
\row
    \li \c webgl
    \li QWebGLIntegrationPlugin
    \li \l{Qt Quick WebGL}{WebGL} support for Qt Quick applications
\endtable
*/
