Qt 5.6 introduces many new features and improvements as well as bugfixes
over the 5.6.x series. For more details, refer to the online documentation
included in this distribution. The documentation is also available online:

  http://doc.qt.io/qt-5.6

The Qt version 5.6 series is binary compatible with the 5.5.x series.
Applications compiled for 5.5 will continue to run with 5.6.

Some of the changes listed in this file include issue tracking numbers
corresponding to tasks in the Qt Bug Tracker:

  http://bugreports.qt.io/

Each of these identifiers can be entered in the bug tracker to obtain more
information about a particular change.

****************************************************************************
* General
****************************************************************************

 - Gaussian Blur has a new implementation. Faster for smaller
   kernels, similar for larger kernels but allows arbitrarily large
   kernels. The fast version will support at least 15x15 kernels on
   OpenGL ES and 59x59 kernels on Desktop GL. GaussianBlur.deviation is
   now a potentially costly parameter to change and it should not be
   animated.

 - When defining blur based effects, like Glow, DropShadow and GaussianBlur,
   prefer to specify 'samples' to be an odd number and let radius be the default.
   This gives the best effect. Animate the blur by animating 'radius' from 0 to
   floor(samples/2). Using a 'radius' which is higher than samples/2 will
   result in artifacts.

 - The internal SourceProxy class has been moved from QML/JS to C++ to
   allow better control over when the proxy is used. As a result, the
   graphical effect library now has a c++ based plugin in addition to
   QML/JS source files.

 - The 'fast' property of various blur-based implementations no longer has
   any effect. The blurring algorithm used is the same for all.

 - 'DropShadow::transparentBorder', 'GaussianBlur::transparentBorder' and
   'Glow::transparentBorder' have been changed to be true by default.

 - 'MaskedBlur::transparentBorder' has no effect as the mask will anyway
   have alpha==0 outside the mask source's pixels.

 - 'GaussianBlur::samples', 'DropShadow::samples', 'Glow::samples' and
   'MaskedBlur::samples' are 9 by default.

 - When applying an effect to Item::layer.effect, the effect will now update
   the layer properties to make the effect work, such as setting
   'Layer::smooth' to 'true' and changing 'Layer::sourceRect' to take
   'transparentBorder' into account.
