219 Commits

Author SHA1 Message Date
Nyall Dawson
b992e871ee [layouts][FEATURE] Don't force the whole layout to be rasterized
when exporting to PDF

If an individual layout item needs rasterisation in order to
be exported correctly, it can now be individually rasterised
without forcing every other item to also be rasterised.

This allows exports to PDF keeping as much as possible as vectors,
e.g. a map with layer opacity won't force labels, scalebars, etc
to be rasterised too.

To accompany this, a new "Always export as vectors" checkbox
was added to layout properties. If checked, this will force
the export to keep items as vectors, even when it causes the
output to look different to layouts.

Fixes #7885
2017-12-17 14:14:31 +10:00
Nyall Dawson
91179f1396 Work on PDF export 2017-12-17 14:14:31 +10:00
Nyall Dawson
a59dce5048 Move containsAdvancedEffects test to QgsLayoutItem
And start a generic test library for all item types to ensure
correct behavior for QgsLayoutItem subclasses

Currently justs tests to ensure that overriden
containsAdvancedEffects methods also call the base class
test
2017-12-17 14:14:31 +10:00
Nyall Dawson
8b1e057d2c Make QgsLayoutExporter::generateFileName virtual, so exporter
subclasses can be made which customise the generated file names
2017-12-17 14:14:31 +10:00
Nyall Dawson
2f0969e2bd Expose antialiasing option in image export dialog
Allows for creating non-antialiased images from layouts. Note that
some layout item types do not correctly respect this setting, but
at least map items do and the API is in place for them to be
fixed later.

Fixes #9281
2017-12-17 14:14:31 +10:00
Nyall Dawson
1b8f4a09ba Add method to determine file path for exports which encountered errors 2017-12-17 14:14:31 +10:00
Nyall Dawson
5cf36cd819 Add method to detect whether layout has uniform page sizes 2017-12-17 14:14:31 +10:00
Nyall Dawson
069a0baa40 Expose some more export related settings to GUI 2017-12-17 14:14:31 +10:00
Nyall Dawson
56383e42b0 Port world file generation code to layouts 2017-12-17 14:14:31 +10:00
Nyall Dawson
afbd1400a5 Port georeferencing from compositions 2017-12-17 14:14:31 +10:00
Nyall Dawson
94b63d17b7 Fix updating gui after undoing layout settings change 2017-12-17 14:14:31 +10:00
Nyall Dawson
aa7986f8fc Implement methods for exporting layouts as raster, add tests 2017-12-17 14:14:31 +10:00
Nyall Dawson
fe5bd47eb0 Work on resizing layouts to item bounds 2017-12-17 14:14:31 +10:00
Nyall Dawson
f4f5f75b80 Remove incorrect TransferThis annotation 2017-12-17 14:14:31 +10:00
Denis Rouzaud
c604d2dda6 run sipify 2017-12-15 22:13:44 -04:00
Nyall Dawson
8802482778 Remove redundant overridden default destructor implementations 2017-12-16 08:50:55 +10:00
Nyall Dawson
4da1ce8404 Drop redundant virtual keywords on overrides
Run clang-tidy modernize-use-override to remove all the redundant
virtual keywords from overridden methods, and add some missing
overrides.

Another benefit is that this has also added the overrides
on destructors, which will cause a build failure if a base
class is missing a virtual destructor.
2017-12-16 08:49:36 +10:00
Denis Rouzaud
f2b3ed0a9b run sipify 2017-12-15 11:12:19 -04:00
Nyall Dawson
89420fccd6 Sipify 2017-12-07 08:51:52 +10:00
Nyall Dawson
66b4b45177 Try to fix issues with sip casting collisions between layout and
compositions
2017-12-07 08:50:01 +10:00
Nyall Dawson
a9896eac05 Port a bunch of QgsLayoutManager methods to use QgsLayouts 2017-12-07 08:50:01 +10:00
Nyall Dawson
a4dea9935f Restore ability to save layouts to templates and add items from template 2017-12-07 08:49:41 +10:00
Nyall Dawson
59b6bf62ab Add a method to clear an existing layout 2017-12-07 08:49:41 +10:00
Nyall Dawson
8feac30f07 Add method to clear page collections for layouts 2017-12-07 08:49:41 +10:00
Nyall Dawson
ef9e013a5a Fix crashes when rapidly deleting/undeleting objects
Also fix some leaks
2017-12-07 08:49:41 +10:00
Nyall Dawson
f60da58256 Add some unit tests 2017-12-07 08:49:33 +10:00
Nyall Dawson
b74a0efa34 Work on layout and layout item serialization and restoration 2017-12-07 08:49:33 +10:00
Denis Rouzaud
f29306d4af [doxygen] replace @param by \param 2017-12-06 08:31:12 -04:00
Denis Rouzaud
e48cf98edb run sipify 2017-12-06 07:19:50 -04:00
Nyall Dawson
4689537842 Fix build warning 2017-12-05 08:30:52 +11:00
Nyall Dawson
3c238a2ba4 Add missing overrides 2017-12-01 15:47:53 +10:00
Nyall Dawson
cc29f0ee36 Fix some doxygen warnings 2017-11-24 16:25:49 +10:00
Nyall Dawson
32834e9bf1 Update indentation 2017-11-24 14:57:39 +10:00
Nyall Dawson
6ec96d6d8e [layouts][FEATURE] Port arrow functionality to polyline item
Instead of a separate (badly behaved) item type for arrows, instead
add the arrowhead options to the much nicer polyline item.

There's still a dedicated toolbar action for creating arrows, but
all this does is create a polyline with the arrowhead enabled
by default.
2017-11-24 14:36:02 +10:00
Nyall Dawson
f76ed223eb Port ui for attribute table 2017-11-24 11:05:56 +10:00
Nyall Dawson
f29eb7b19e Port and fix unit tests 2017-11-24 10:24:36 +10:00
Nyall Dawson
f90c5003ca Port table subclasses 2017-11-24 10:24:36 +10:00
Nyall Dawson
3a0f94389c Port text table 2017-11-24 10:24:36 +10:00
Nyall Dawson
9cf6e0a2a2 Start porting table items 2017-11-24 10:24:36 +10:00
Nyall Dawson
a615a48b40 Make scalebars auto selected between m/km and ft/miles when newly added
Based on current linked map scale and linked map CRS
2017-11-24 10:24:36 +10:00
Nyall Dawson
b7ef3d3cb9 Simplify some code, cleanup UI 2017-11-24 10:24:36 +10:00
Nyall Dawson
5b1c6901a5 Port more scalebar functionality 2017-11-24 10:24:36 +10:00
Nyall Dawson
8f5e0cb126 Begin porting scalebar item 2017-11-24 10:24:36 +10:00
Nyall Dawson
604e51d390 Restore some tests 2017-11-24 10:24:36 +10:00
Nyall Dawson
2a75ad8e96 More work on layout multiframe undo/redo 2017-11-24 10:24:36 +10:00
Nyall Dawson
f04d438572 Some undo/redo fixes for multiframe items 2017-11-24 10:24:36 +10:00
Nyall Dawson
93403647c4 Update sip 2017-11-24 10:24:36 +10:00
Nyall Dawson
dddce25e13 More work on porting multiframe items 2017-11-24 10:24:35 +10:00
Nyall Dawson
aec03269b9 Sip is p****** me off, by refusing to build for unrelated reasons
Block a bunch of classes from Python bindings for now until sip
gets over itself
2017-11-24 10:24:35 +10:00
Nyall Dawson
f1d1e454d8 Begin port of HTML item 2017-11-24 10:24:35 +10:00