Qt Data Visualization 1.2

New features
------------

- Added support for volumetric custom objects (QCustom3DVolume) for rendering 3D voxel data.
- Reflection support for bar graphs (floor only).
- Polar horizontal axes supported for scatter and surface graphs.
- Added flipHorizontalGrid property for surface to enable displaying grid in 2D orthographic
  projections of the surface (e.g. 2D spectrogram graphs).
- Added horizontalAspectRatio property for graphs to enable better control over graph dimensions.
- Added an API for setting a custom texture for a surface series.
- Added several properties to control the default input handler behavior.
- Exposed default input handlers to QML API.
- Camera can now be targeted at any point within axis ranges on the scatter and surface graphs.
  On bar graphs, camera target is limited to any point on the graph floor.
- Added possibility to scale custom items based on data ranges.
- Added a property for specifying the locale for the graph, which affects how various labels
  are formatted (e.g. which character is used for the decimal point).
- Added a property for specifying the Y-value of the floor level on bar graphs.
- Added a property to Q3DScene for querying the graph position at a screen position.
- The default input handlers now zoom to cursor/pinch instead of zooming toward the center of the
  graph. Added a property to restore the old zoom behavior.
- Added properties to control the minimum and maximum allowable zoom level of the camera.
- Added a method for getting the list of custom items added to the graph.
- Added a property for specifying the graph background margin.

Fixed issues
------------

General:
- Label widths now update consistently when axis range changes.
- Made selection texture creation more robust.
- Grid lines and labels no longer change size if aspect ratio changes.
- Q3DTheme::ColorStyleObjectGradient now works for surface graphs.
- Removed the superfluous common.pri.
- Fixed non-visible selected object drawing in static optimization mode.
- Gradient color styles are now supported equally in both default and static optimization modes.
- Specular highlight now works with rotated objects in static optimization mode.
- Fixed a crash in static optimization mode when data is updated without resizing.
- Fixed changing items in static optimization mode.
- Fixed issues with static optimization mode when some items were outside axis ranges.
- Slice mode grid lines should no longer vanish into the background when using high ambient light
  value.
- Reduced the size of the surface selection texture, allowing selection to work with larger
  surfaces.
- Fixed QAbstract3DGraph::renderToImage in OpenGL ES2 environments.
- Fixed crash when attempting to enable slicing without row/column selection modes.
- QCustom3DLabels now use the same shader as other labels, which means the specular highlight
  no longer makes camera facing custom labels unreadable with some themes.
- Made various selection queries thread safe.
- Fixed selection query synchronization issue when using threaded renderer.
- Font size is automatically reduced if the label gets too wide to fit the label texture.
- Fixed the ordering of the subviews.
- Fixed surface normals in cases where the surface values were not in the same order
  (ascending or descending) along both axes.
- Fixed a crash when removing and changing items on the same render frame.
- Fixed an issue with grid line color on surface graphs.
- Prevented selecting bars through the floor in bar graphs.
- Fixed recurring GL_INVALID_VALUE OpenGL errors.
- Improved the surface shadows.
- Fixed the OpenGL context cleanup upon renderer destruction.
- Fixed scatter item autosizing when adding a new series.
- Fixed a crash related to selection render buffer reuse.
- Fixed the flipped Z-coordinate for absolutely positioned custom items.
- Fixed shadows when viewing the graph directly from above or below.
- Fixed problems using large custom meshes where vertex index count overflowed unsigned short.

New examples
------------

- Qmlspectrogram example added. It shows how to display 2D spectrogram using surface graph with
  gradients and orthographic projection. Also demonstrates the use of polar axes.
- Bars example now demonstrates zooming to selection, which leverages the new ability to
  control the camera target.
- Textured surface example added.
- Volumetric example added. It shows how to use the new QCustom3DVolume object to visualize
  volumetric data.
- Reflection added to Bars and Customproxy examples.
- Custom camera targeting added to Bars example.
