aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/shapes/plugins.qmltypes
Commit message (Collapse)AuthorAgeFilesLines
* QQuickShape: override contains(QPointF); demonstrate in examplesShawn Rutledge2018-01-251-3/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QQuickItem::contains() only checks the Item's bounding box by default. In the case of Shapes, that can be comically imprecise, but it's fast. So we add a containsMode property to control whether we will do that (the default) or actually check each of the QPainterPaths within to see whether they contain the point (FillContains). FillContains could be optimized later: use QRegion perhaps, or download the rendered texture from the GPU and test whether the pixel at the point is transparent. It may also be appropriate to add a StrokeContains option. The main motivation is to detect mouse (or touch) interaction within a shaped area. QQuickSinglePointHandler::wantsEventPoint() already checks whether its parent Item contains the event point. So if a Shape has a TapHandler for example, it will respond only within the visible bounds of the Shape rather than within the entire rectangular bounding box as long as containsMode is set to FillContains. Examples quick/shapes/content/tapableTriangle.qml and tiger.qml are modified to react when a press occurs inside, and the former is fixed to be able to run standalone via the qml runtime. The latter has an offset issue when run standalone but is OK within the shape gallery example. As a drive-by optimization, QQuickShapePrivate's variables are re-ordered by type so that the compiler can place the bools and enums into bitfields; and to facilitate reordering, the initialization is done C++11-style, in the header. [ChangeLog][QtQuick][Shape] A containsMode property is added. If it is set to FillContains, then Shape.contains() returns true only within the visible bounds, so its Pointer Handlers also respond only within those bounds. Change-Id: I31c85a9b08aa6945c58dc07febfe89ffef21274b Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
* QmlJs: update plugins.qmltypesMarco Benelli2017-12-141-0/+24
| | | | | Change-Id: I3df1210088f877d4fe1d7953982e0fd2fa6ad3db Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Rename property to rendererTypeBerthold Krevert2017-07-281-1/+1
| | | | | | | This follows the documentation. Change-Id: I74d8d2b45546717c6a6b252af9370c6670ef1b78 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Update plugins.qmltypes for ShapesMarco Benelli2017-07-061-192/+25
| | | | | | | | Update qmltypes forcing the dependency to QtQuick in order to avoid the dumping of duplicated QtQuick's components. Change-Id: Ie16f21518076d0af1c744e420d689122fafb485e Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
* Use GradientStop and rename ShapeLinearGradient to LinearGradientLaszlo Agocs2017-06-081-9/+1
| | | | | | | | | | | | | | | | | | | Thus application code becomes: ShapePath { ... fillGradient: LinearGradient { ... GradientStop { ... } } } which is even more clean and readable. The duplication for stops is now avoided. Change-Id: I50ae2f388e21683a37dc4787763dc71e16eef4f5 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* Rename to Shape/ShapePath and remove public JS APILaszlo Agocs2017-06-021-0/+292
Change-Id: I299354da0632fb0b8487cfb13748ed58b97d75fd Reviewed-by: Andy Nichols <andy.nichols@qt.io>