/****************************************************************************
**
** Copyright (C) 2020 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 whatsnew515.html
    \title What's New in Qt 5.15
    \brief Lists the new features in Qt 5.15.

    \section1 New Features in Qt 5.15

    \section2 Qt 3D Module

    \list
        \li Improved profiling and troubleshooting support.
        \li QSortPolicy: introduced a uniform mode to control whether uniform
            minification needs to be performed or not.
        \li QMouseDevice: introduced a \l {Qt3DInput::QMouseDevice::}
            {updateAxesContinuously} property.
        \li Isolated the OpenGL renderer as a plugin.
    \endlist

    \section2 Qt Core Module

    \list
        \li Introduced QFile::moveToTrash() to provide a cross-platform API for
            moving files to the trash/recycling bin on Windows, \macos, and Linux
            desktops. This implements the \l {https://specifications.freedesktop.org/trash-spec/trashspec-1.0.html}
            {freedesktop.org specification}.
        \li Introduced QFileInfo::isJunction() to detect whether a file system
            entry is a Windows NTFS junction.
        \li QRunnable instances can now be created from \c std::function without
            having to subclass QRunnable.
        \li QThreadPool::start() and \l {QThreadPool::}{tryStart}() can now take
            \c std::function and thereby also anonymous lambda functions as
            arguments.
        \li Added static template QDebug::toString() function, which streams the
            given object into a QDebug instance that operates on a string, and
            then returns that string. This is useful for cases where you need the
            textual representation of an object for debugging, but cannot use
            \c {operator<<}, such as when passing a failure message to QVERIFY2().
        \endlist

    \section2 Qt GUI Module

    \list
        \li QColorSpace setters can now operate on invalid color spaces, making it
            possible to set \l {QColorSpace::}{primaries} and
            \l {QColorSpace::transferFunction()}{transfer function} independently.
        \li Implemented multi-threading support for many QImage scaling and
            conversion methods.
    \endlist

    \section2 Qt Multimedia Module

    \list
        \li Deprecated all plugin APIs.
        \li Deprecated QMediaService and QMediaControl.
        \li Introduced reverse playback for GStreamer.
        \li Introduced rendering to multiple surfaces.
        \li Introduced QVideoWidget::videoSurface(),
            QGraphicsVideoItem::videoSurface(), and
            QDeclarativeVideoOutput::videoSurface().
        \li \l [QML] MediaPlayer QML type: Introduced a \l [QML] {MediaPlayer::}
            {videoOutput} property.
        \li Introduced QVideoFrame::image().
        \li GStreamer camerabin: React to changes in \c notify::zoom and
            \c notify::max-zoom properties.
    \endlist

    \section2 Qt Network Module

    \list
        \li OpenSSL backend: Added support for a new session ticket mechanism
            introduced by the TLS 1.3 protocol.
        \li Implemented timeouts for downloads and uploads with QNetworkRequest
            and QNetworkAccessManager.
        \li Increased the minimum supported version of OpenSSL to 1.1.
    \endlist

    \section2 Qt QML Module

    \list
        \li Introduced inline components; multiple QML components can be declared
            in the same file.
        \li Introduced required properties.
        \li Added a declarative way of registering types to QML.
        \li \e qmllint now has a better understanding of the code and warns about
            deprecated QML features.
        \li Added the \e qmlformat tool to automatically format any QML file
            according to the \l {QML Coding Conventions}.
        \li Added support for the \l {https://github.com/tc39/proposal-nullish-coalescing}
            {Nullish Coalescing Operator}.
        \li Added a \c colorspace property on image nodes, making it possible to
            read color spaces and transform images into a specific color space.
    \endlist

    \section2 Qt Quick Module

    \list
        \li Added a \l [QML] PathText type which can be used together with Qt
            Quick Shapes to render text as geometry, without relying on distance
            fields or pre-rendered textures. This is useful for rendering large
            font sizes which would otherwise consume a lot of texture memory.
        \li Added a \l [QML] {Image::sourceClipRect}{Image.sourceClipRect}
            property to request the image plugin to render a portion of an image
            source.
        \li Added a \c cursorShape property to pointer handlers. Most pointer
            handlers (for example DragHandler) will change the cursor when in
            active state. HoverHandler will change the cursor when the mouse is
            hovering over the Item that contains the handler.
        \li Added support for Metal on iOS for the opt-in preview of the
            \e {Graphics API Independent Rendering Architecture}.
    \endlist

    \section2 Qt Quick Controls Module

    \list
        \li Added HorizontalHeaderView and VerticalHeaderView to display header data
            in a TableView, with support for flicking synchronization and multiple
            styles: \e default, \e fusion, \e imagine, \e material, and \e universal.
        \li Added a \l [QML] {ComboBox::}{selectTextByMouse} property to ComboBox.
    \endlist

    \section2 Qt WebEngine Module

    \list
        \li Updated to Chromium 80.
        \li Switched to use a sandboxed network service.
        \li Introduced a new API for reading the subprocess ID of a page or a view.
        \li Introduced a \l [QML] {WebEngineHistory::clear()}{WebEngineHistory.clear}()
            method.
    \endlist

    \section2 Tools

    \list
        \li QDoc can now generate DocBook.
        \li QDoc now generates output for C++ class and function template parameters.
        \li QDoc now generates correct output for scoped enums (enum classes).
    \endlist

    \section1 Platform Changes

    \b Android
    \list
        \li Introduced the use of Android's native file dialog by default for open
            (file, multiple files, directory) and save operations.
    \endlist

    \b Wayland
    \list
        \li Introduced experimental support for Vulkan on the client side.
    \endlist

    \b {Embedded Linux (eglfs)}
    \list
        \li \c eglfs_viv backend: Added support for Vulkan, via VK_KHR_display, on
            NXP i.MX8 based devices.
    \endlist

    \section1 New Modules

    \b {Qt Quick 3D}
    \list
        \li Introduced post-processing effects.
        \li Introduced a custom geometry API (C++ meshes).
        \li Introduced Quaternions API for Node rotations.
        \li Switched to use a right-handed coordinate system (previously right or
            left).
        \li Improved support for Qt Quick 2D in 3D scenes.
        \li Added support for spot lights.
        \li Performance improvements.
    \endlist

    \b {Qt Lottie}
    \list
        \li Introduced a \e Bodymovin JSON renderer for Adobe After Effects
            animations.
        \li Performance and stability improvements.
    \endlist

    \b {Qt PDF}
    \list
        \li Based on a version of \e Pdfium that is shared with Qt WebEngine.
        \li Available on the same platforms as Qt WebEngine, and also on iOS.
    \endlist

    \section1 Deprecated Modules

    To help preparing for the transition to Qt 6, numerous classes and member
    functions that will be removed from Qt 6.0 have been marked as deprecated
    in the Qt 5.15 release. Unless you define QT_NO_DEPRECATED_WARNINGS in your
    project, you will get compiler warnings for code that uses any deprecated
    APIs. Those warnings will explain which API to use instead. To disable any
    deprecated APIs completely, use the QT_DISABLE_DEPRECATED_BEFORE macro.

    The following modules are part of Qt 5.15 release, but are deprecated and
    considered for removal in subsequent releases of Qt:

    \list
        \li Qt Script
        \li Qt Quick Controls 1
        \li Qt XML Patterns
    \endlist

    \section1 List of API Changes

    The pages below contain a list of API changes in Qt 5.15:
    \list
        \li \l{New Classes and Functions in Qt 5.15}
        \li \l{Obsolete Classes}
    \endlist

    \section1 Additions to Other Qt 5 Releases

    \list
        \li \l{What's New in Qt 5.14}
        \li \l{What's New in Qt 5.13}
        \li \l{What's New in Qt 5.12}
        \li \l{What's New in Qt 5.11}
        \li \l{What's New in Qt 5.10}
        \li \l{What's New in Qt 5.9}
        \li \l{What's New in Qt 5.8}
        \li \l{What's New in Qt 5.7}
        \li \l{What's New in Qt 5.6}
        \li \l{What's New in Qt 5.5}
        \li \l{What's New in Qt 5.4}
        \li \l{What's New in Qt 5.3}
        \li \l{What's New in Qt 5.2}
        \li \l{What's New in Qt 5.1}
        \li \l{What's New in Qt 5.0}
    \endlist
*/

/*!
    \page newclasses515.html
    \title New Classes and Functions in Qt 5.15
    \brief A list of new APIs in Qt 5.15.

    This page contains a comprehensive list of all new classes and functions
    introduced in Qt 5.15. Links to new APIs in previous Qt 5 releases are found
    at the bottom of this page.

    \sincelist 5.15

    \section1 Additions to Other Qt 5 Releases

    \list
        \li \l{What's New in Qt 5.14}
        \li \l{What's New in Qt 5.13}
        \li \l{What's New in Qt 5.12}
        \li \l{What's New in Qt 5.11}
        \li \l{What's New in Qt 5.10}
        \li \l{What's New in Qt 5.9}
        \li \l{What's New in Qt 5.8}
        \li \l{What's New in Qt 5.7}
        \li \l{What's New in Qt 5.6}
        \li \l{What's New in Qt 5.5}
        \li \l{What's New in Qt 5.4}
        \li \l{What's New in Qt 5.3}
        \li \l{What's New in Qt 5.2}
        \li \l{What's New in Qt 5.1}
        \li \l{What's New in Qt 5.0}
    \endlist
*/
