aboutsummaryrefslogtreecommitdiffstats
path: root/tests/manual/painterpathquickshape
Commit message (Collapse)AuthorAgeFilesLines
* Add fillTransform property to ShapePathEirik Aavitsland2024-05-142-0/+15
| | | | | | | This adds functionality corresponding to QBrush transform to QuickShapes. Change-Id: I2b5903f8c228adec65a6f5be64e3816143879302 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Fix fillrule setting in QuickShapes manual testEirik Aavitsland2024-03-223-4/+0
| | | | | | | | | The QuadShape, CubicShape and Small Polygon test shapes all had hardcoded the fillrule, overriding the setting in the ui, which hence was nonfunctional. Change-Id: I51d84cf38bb15a41f32bc035c67b280ddfd24967 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Make quickshapes manual test work againEirik Aavitsland2024-03-131-1/+1
| | | | | | | | A recent copy-paste change for control size policy had a syntax error. Pick-to: 6.7 Change-Id: I2153a644c7230a471598cc61cce9f4e1af0c69a2 Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
* Correct license for test filesLucie Gérard2024-02-2737-38/+38
| | | | | | | | | | | | | | According to QUIP-18 [1], all test files should be LicenseRef-Qt-Commercial OR GPL-3.0-only [1]: https://contribute.qt-project.org/quips/18 Pick-to: 6.7 Task-number: QTBUG-121787 Change-Id: I26d72e8de04d4c7c57b3b7838af5d033265de5ba Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Kai Köhne <kai.koehne@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Update manual tests and examples for change in default size policySanthosh Kumar2024-02-211-2/+23
| | | | | | | | | | | The size policy of item updated as part of task QTBUG-117597. This patch update existing examples and manual tests that depends on quick layout to embrace size policy change. Task-number: QTBUG-117597 Pick-to: 6.7 Change-Id: I68469a3bba3c4d3e5ed4b6eae0fd765b5206efc0 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Fix intersections that coincide with a vertexMatthias Rauter2024-01-181-0/+16
| | | | | | | | | This issue was found in fonts where intersection match a vertex of the path. With this change we take care of such points properly. Pick-to: 6.7 Change-Id: Ibe2f0334e748351066e324f8bb10774fc505e832 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Detect and remove self intersections of QQuadPathMatthias Rauter2024-01-076-1/+293
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently the CurveRenderer is not working when the path is self-intersecting. With this patch, the self-intersections are removed before the path is used for filling (optionally, default: on) The stroking path is untouched. The function findOverlappingCandidates finds candidates of elements that might be intersecting. Its complexity is O(n log n) and can also be used in other parts of the code where overlapping bounding triangles need to be identified. The function solveIntersections removes all intersections from a QQuadPath. If intersections are solved, the path is oriented such that the filling is on the right side of the path. If no intersections are found, the path is returned without any changes. The optional argument alwaysReorder can be used to force a reordering of the paths, such that the filling of the shape is always on the right side of the path. Intersections are found with Newtons algorithm with 9 different starting values. This is reliable in finding all intersections but the starting values could be improved/reduced to improve performance. Pick-to: 6.7 Change-Id: I088e4edfff755155521ed91114bc67f63c6e546a Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Shapes: Fix manual testPaul Olav Tvete2023-11-161-2/+0
| | | | | | | | Remove stray reference to implicitWidth/Height now that they are not 0 anymore. Change-Id: I9de062481a857f5781381aa4523272623ef780d3 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Introduce a CurveRendering backend for textEskil Abrahamsen Blomfeldt2023-11-111-1/+1
| | | | | | | | | | | This moves the internals of the curve renderer out from Qt Quick Shapes and into a more centralized location in Qt Quick, so that we can use the same code to create a new text backend for rendering large scale text without artifacts. Change-Id: I3f7e6f7961c1bbe230fcb531c0ca028e038c1afd Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Further Qt Quick Shapes curve renderer improvementsPaul Olav Tvete2023-08-183-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add AA offset for strokes in the vertex shader * Add a normal vector to the vertex data, so we know the direction to move each point. Move the HG calculation for solving the cubic to the vertex shader (done by Matthias). * Also split up the curve elements for path stroking, to create tighter fitting triangles. (This does reveal some cases where the triangulation algorithm fails, which were previously masked by the 2x safety margin) * Also improve the triangulation by using the inner bisector when possible, leading to significantly less overdraw. As part of this, customTriangulator2() got a major refactor. It now has separate logic for inside and outside points. Remove debug color from vertex attributes * We make this a uniform instead, like in the stroke node, and calculate the debug color from the curvature data. With this path, we no longer show internal triangles as green, but otherwise it should be correct. Also improved documentation and various code cleanups and refactoring Done-with: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Done-with: Eirik Aavitsland <eirik.aavitsland@qt.io> Task-number: QTBUG-104122 Pick-to: 6.6 Change-Id: Ib2817177eaaf4a0b1196cae77a28fca39349db9c Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Improve Qt Quick Shapes curve renderer strokesEskil Abrahamsen Blomfeldt2023-07-149-46/+229
| | | | | | | | | | | | | | | | | | | | | | | | | | | This adds a specialized stroke shader which replaces the curve flattening triangulating stroker as the default. The triangulating stroker is still available via an environment variable for testing. Dashed strokes are now done by cutting the path into segments ahead of time and applying the normal solid stroking algorithm to the corresponding path. In addition, the fill shader no longer depends on the derivatives extension except when used in 3D scenes to support perspective transforms. The preprocessing of the shape has also gotten a few bug fixes and improvements and there are extremely few artifacts left. Done-with: Paul Olav Tvete <paul.tvete@qt.io> Done-with: Eirik Aavitsland <eirik.aavitsland@qt.io> Done-with: Matthias Rauter <matthias.rauter@qt.io> Task-number: QTBUG-104122 Change-Id: Ib49b41019956be3e3cd509d1f3cef6842658aceb Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Matthias Rauter <matthias.rauter@qt.io>
* Improvements to curve rendererEskil Abrahamsen Blomfeldt2023-06-229-71/+255
| | | | | | | | | | | | | | | | | | | | | | | | | | This contains numerous updates/improvements to the curve renderer and the manual test. Most notably, it replaces the Delaunay triangulator with a more robust algorithm which uses qTriangulate() for the internal hull (like the basic code path) and a separate triangulation for curves which adds triangles on the outside and calculates texture coordinates accordingly. This gives antialiasing on straight lines as well. It also has multiple improvements to the cubic-to-quad algorithm, for instance circles now look as they should. Currently, the QTriangulatingStroker is used for solid strokes (causing jagged edges there) and the QPainterPath stroker is used for dash strokes (causing some issues with antialiasing). Pick-to: 6.6 Task-number: QTBUG-104122 Change-Id: Ic195aa874dc73c62359a93764ef38a09efb012e3 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Update shape rendering manual testPaul Olav Tvete2023-05-305-20/+88
| | | | | | | Make margin editable and support stroke when reading SVGs Change-Id: I1706665cd6e029c7e9f9750a2597fd55a956fdfc Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Introduce hardware accelerated curve renderer for ShapesEskil Abrahamsen Blomfeldt2023-05-2643-0/+7245
This implements the Loop/Blinn algorithm for quadratic curves as an optional backend for Qt Quick Shapes, basically distance fields where the distance to curves are calculated in the fragment shader. This means cubic curves are approximated, which will give varying results, but for many shapes (such as text) this is efficient and means the shapes can be zoomed indefinitely while still retaining curvature as well as anti-aliasing working without MSAA. Preliminary results give some frame rate improvements compared to doing MSAA and GeometryRenderer, but the major improvement is that you can get smooth curves at any zoom level without re-triangulating the shape. Note that the renderer currently does not do antialiasing for straight lines. This would still require MSAA, but at a lower cost than for GeometryRenderer since there are much fewer triangles. Adding AA here as well is work in progress. Task-number: QTBUG-104122 Done-with: Paul Olav Tvete <paul.tvete@qt.io> Done-with: Eirik Aavitsland <eirik.aavitsland@qt.io> Done-with: Amr Elsayed <amr.elsayed@qt.io> Change-Id: I6b4a1103546fbdfe760906f7a183101f8eedb9d3 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>