24 Commits

Author SHA1 Message Date
Denis Rouzaud
758d7cff4a run sipify to update deprecation annotations 2019-10-15 13:17:38 +02:00
Nyall Dawson
2212617f0c Reuse a single expression context when building icons in QgsStyleModel
Whilst usually this is bad practice (reusing an existing expression context),
and instead you should make a new context for every batch of expression evaluations,
we can't do this in the style model and we end up potentially creating
thousands of new contexts. So instead, we use a single one, which is
safe because the actual expression context used here is a very
basic one...
2019-09-07 15:56:40 +10:00
Ismail Sunni
b9978d53d1 [FEATURE][3D] Billboard Rendering for Points (#31308)
* Add button to change billboard symbol.

* Add shaders for billboards.

* Add billboard material class.

* Add sample billboard image.

* Add dummy handler for billboard.

* Add billboard geometry class.

* First working version of 3D point as billboard.

* Make selected feature bigger.

* Use default symbol preview as billboard.

* Update billboard when changes the viewport size.

* Use QgsTerrainTextureImage for adding image to texture.

* Show better quality of billboard default symbol.

* Promote QgsSymbolButton not working.

* Add QgsSymbolButton properly.

* Add seTexture2DFromSymbol.

* Use default symbol

* [On Progress] Get symbol from the QgsSymbolButton.

* [On progress] failed to change the symbol

* Fix billboard fragment shader for macOS

* Better transparency handling.

* Use size from the symbol.

* Add set layer for 3d billboard symbol.

* Set billboard size from the symbol pixel size * 20

* Use size from the image.

* [Debug] set white symbol to success kid, it work when previous billboard is success kid.

* Use store and restore symbol from Nyall.

* Remove unrelated code.

* Apply random extent to fix the bug, from Martin.

* Remove add mesh entities for billboard.

* Hide material and transformation widget for billboard.

* Remove add scene entities for billboard.

* Add selected as parameter in drawPreviewIcon.

* Add QgsMarkerSymbol to store the symbol in billboard

* Put billboard symbol in point3dsymbol serialization.

* Add billboard height in the UI.

* Set height for billboard.

* Store billboard height separately. Perhaps better to use existing transform.

* Set height of billboard to TY.

* Flipped image for billboard symbol.

* Add helper function to set billboard function.

* Generate billboard transform from general transform.

* Use static dpi for context size.

* Remove debug message.

* Use Qgs3DRenderContext for selection color and dpi from QgsApplication.

* Remove unnecessary file and code.

* Remove commented iut code.

* Add documentation of new classes.

* Fix banned keywords.

* Add missing parameter's documentation.

* Address PR review.

* Use context from readXML.

* Remove one line function.

* Fix billboard size.

* Make some functions private, remove unused function.

* Use unique_ptr for the ownership.

* Use unique_ptr for default symbol to avoid memory leak.

* Add parent to texture2D.

* Fix documentation.

* Add copy constructor.

* Fix documentation.

* Remove documentation warning.

* Fix sip error.

* Add unit test for billboard rendering.

* Set ambient to not transparent for measurement line.

* Add dpi in the Qgs3DMapSetting

* Update billboard rendering unit test.

* Remove layer from 3d point widget since it's not supported yet.

* Addressing PR review from Martin.

* Attach dom directly for the billboard symbol.

* Remove unused constructor for point3dsymbol.

* Use stroke width ratio for solving big stroke width.

* Update unit test for rendering with some stroke color.

* Fix typo.
2019-08-27 10:04:56 +02:00
Nyall Dawson
ac0326a351 [API] Add useful PyQGIS additions to QgsSymbol
Adds:
- __len__ : returns number of symbol layers in symbol
- [ ] getter: returns a specific symbol layer, also allows negative indices to retrieve from end of symbol
- del [ ]: removes a specific symbol layer, also allows negative indices
- raise IndexError when an invalid symbol layer is requested
- allow iteration over symbol layers using
  for layer in symbol:
     print(layer.color())
2019-07-08 08:41:59 +10:00
Nyall Dawson
e23ceaa806 Mark render features methods as throwing QgsCsException, to allow it to be nicely caught in Python 2019-05-22 07:12:06 +10:00
Nyall Dawson
427ea515a5 Deprecate some more methods 2019-03-22 12:16:22 +10:00
Nyall Dawson
16a64ed84d Deprecate some methods, dox++ 2019-03-22 12:16:22 +10:00
Nyall Dawson
fa202795b0 Dox++ 2019-03-22 12:16:22 +10:00
Nyall Dawson
107b48a430 Add NULLPTR macro for use in doxygen comments
For the c++ api dox this expands to "\c nullptr" (the
\c directive indicates a code literal value), and for sipify/Python
it expands to ``None`` (`` is sphinx annotation for literal values)

Makes for nicer dox for both c++ and Python!
2019-02-27 09:41:11 +10:00
Nyall Dawson
a7ca08784c Nullptr consistency in dox 2019-02-27 09:41:11 +10:00
Nyall Dawson
b6d66becab Sipify 2019-02-27 09:41:11 +10:00
Nyall Dawson
867e39947b Allow for exact calculation of symbol sizes with mixed layer units
Fixes #21143
2019-02-05 11:07:02 +11:00
Mathieu Pellerin
8ac762e5e1
[ui] Fix tiny vertex marker on hidpi 2019-02-04 16:43:04 +07:00
Nyall Dawson
73d0ced5df [FEATURE] Add option to force right-hand-rule during polygon symbol rendering
This new option, available under the "Advanced" button for fill symbols,
allows forcing rendered polygons to follow the standard "right hand
rule" for ring orientation (where exterior ring is clockwise, and
interior rings are all counter-clockwise).

The orientation fix is applied while rendering only, and the original
feature geometry is unchanged.

This allows for creation of fill symbols with consistent appearance,
regardless of the dataset being rendered and the ring orientation
of individual features.

Refs #12652
2018-11-09 19:06:48 +10:00
Denis Rouzaud
ef1efebda4 forward declaration of QgsPoint 2018-10-09 11:48:33 -08:00
Nyall Dawson
c3fd631776 Fix dox 2018-08-31 13:50:13 +10:00
Nyall Dawson
5e1d1a4c8c Deprecate vector layer setter/getter within QgsSymbol
It's not used, and potentially very dangerous
2018-08-31 13:50:13 +10:00
Nyall Dawson
e63fedfa36 Improve/extend QgsSymbol docs 2018-08-31 13:50:13 +10:00
Denis Rouzaud
65bb60e96c run sipify 2018-05-28 10:39:34 -08:00
Nyall Dawson
4b1b752633 Fix bad regex 2018-05-27 18:54:09 +10:00
Nyall Dawson
38850bdb94 [pyqgis] Ensure that multiline param tags are indented for additional lines 2018-05-27 18:54:09 +10:00
Nyall Dawson
c864d22d1f Add "get ..." to doxygen compliance blacklist
Should be "gets ..." for consistent tense, or better yet
"returns ..." for consistency.
2018-05-27 14:05:06 +10:00
Nyall Dawson
1c615c15cc More documentation compliance
Use Qt style "returns .." tense instead of "return ..", and lock
this in with a documentation compliance unit test
2018-05-25 15:09:00 +10:00
Denis Rouzaud
7df2593caf move auto generated sip file in dedicated folder 2018-05-14 10:23:37 -04:00