def testContainsAdvancedEffects(self): map_settings = QgsMapSettings() map_settings.setLayers([self.vector_layer]) layout = QgsLayout(QgsProject.instance()) map = QgsLayoutItemMap(layout) self.assertFalse(map.containsAdvancedEffects()) self.vector_layer.setBlendMode(QPainter.CompositionMode_Darken) result = map.containsAdvancedEffects() self.vector_layer.setBlendMode(QPainter.CompositionMode_SourceOver) self.assertTrue(result)
def testContainsAdvancedEffects(self): map_settings = QgsMapSettings() map_settings.setLayers([self.vector_layer]) layout = QgsLayout(QgsProject.instance()) map = QgsLayoutItemMap(layout) self.assertFalse(map.containsAdvancedEffects()) self.vector_layer.setBlendMode(QPainter.CompositionMode_Darken) result = map.containsAdvancedEffects() self.vector_layer.setBlendMode(QPainter.CompositionMode_SourceOver) self.assertTrue(result)
def testContainsAdvancedEffectsAndRasterization(self): layout = QgsLayout(QgsProject.instance()) item = QgsLayoutItemLabel(layout) self.assertFalse(item.containsAdvancedEffects()) # item opacity requires that the individual item be flattened to a raster item item.setItemOpacity(0.5) self.assertTrue(item.containsAdvancedEffects()) # but not the WHOLE layout self.assertFalse(item.requiresRasterization()) item.dataDefinedProperties().setProperty( QgsLayoutObject.Opacity, QgsProperty.fromExpression('100')) item.refresh() self.assertFalse(item.containsAdvancedEffects()) self.assertFalse(item.requiresRasterization()) item.dataDefinedProperties().setProperty(QgsLayoutObject.Opacity, QgsProperty()) item.refresh() self.assertTrue(item.containsAdvancedEffects()) self.assertFalse(item.requiresRasterization()) item.setItemOpacity(1.0) self.assertFalse(item.containsAdvancedEffects()) self.assertFalse(item.requiresRasterization()) # item blend mode is NOT an advanced effect -- rather it requires that the WHOLE layout be rasterized to achieve item.setBlendMode(QPainter.CompositionMode_DestinationAtop) self.assertFalse(item.containsAdvancedEffects()) self.assertTrue(item.requiresRasterization()) map = QgsLayoutItemMap(layout) # map items are different -- because they override paint, they don't get the auto-flattening and rasterization map.setItemOpacity(0.5) self.assertFalse(map.containsAdvancedEffects()) # rather, a map with opacity requires the WHOLE layout to be rasterized self.assertTrue(map.requiresRasterization()) map.dataDefinedProperties().setProperty( QgsLayoutObject.Opacity, QgsProperty.fromExpression('100')) map.refresh() self.assertFalse(map.containsAdvancedEffects()) self.assertTrue(map.requiresRasterization())
def testContainsAdvancedEffectsAndRasterization(self): layout = QgsLayout(QgsProject.instance()) item = QgsLayoutItemLabel(layout) self.assertFalse(item.containsAdvancedEffects()) # item opacity requires that the individual item be flattened to a raster item item.setItemOpacity(0.5) self.assertTrue(item.containsAdvancedEffects()) # but not the WHOLE layout self.assertFalse(item.requiresRasterization()) item.dataDefinedProperties().setProperty(QgsLayoutObject.Opacity, QgsProperty.fromExpression('100')) item.refresh() self.assertFalse(item.containsAdvancedEffects()) self.assertFalse(item.requiresRasterization()) item.dataDefinedProperties().setProperty(QgsLayoutObject.Opacity, QgsProperty()) item.refresh() self.assertTrue(item.containsAdvancedEffects()) self.assertFalse(item.requiresRasterization()) item.setItemOpacity(1.0) self.assertFalse(item.containsAdvancedEffects()) self.assertFalse(item.requiresRasterization()) # item blend mode is NOT an advanced effect -- rather it requires that the WHOLE layout be rasterized to achieve item.setBlendMode(QPainter.CompositionMode_DestinationAtop) self.assertFalse(item.containsAdvancedEffects()) self.assertTrue(item.requiresRasterization()) map = QgsLayoutItemMap(layout) # map items are different -- because they override paint, they don't get the auto-flattening and rasterization map.setItemOpacity(0.5) self.assertFalse(map.containsAdvancedEffects()) # rather, a map with opacity requires the WHOLE layout to be rasterized self.assertTrue(map.requiresRasterization()) map.dataDefinedProperties().setProperty(QgsLayoutObject.Opacity, QgsProperty.fromExpression('100')) map.refresh() self.assertFalse(map.containsAdvancedEffects()) self.assertTrue(map.requiresRasterization())
def testRasterization(self): map_settings = QgsMapSettings() map_settings.setLayers([self.vector_layer]) layout = QgsLayout(QgsProject.instance()) map = QgsLayoutItemMap(layout) self.assertFalse(map.requiresRasterization()) self.vector_layer.setBlendMode(QPainter.CompositionMode_Darken) self.assertFalse(map.requiresRasterization()) self.assertTrue(map.containsAdvancedEffects()) map.setBackgroundEnabled(False) self.assertTrue(map.requiresRasterization()) map.setBackgroundEnabled(True) map.setBackgroundColor(QColor(1, 1, 1, 1)) self.assertTrue(map.requiresRasterization()) self.vector_layer.setBlendMode(QPainter.CompositionMode_SourceOver)
def testRasterization(self): map_settings = QgsMapSettings() map_settings.setLayers([self.vector_layer]) layout = QgsLayout(QgsProject.instance()) map = QgsLayoutItemMap(layout) self.assertFalse(map.requiresRasterization()) self.vector_layer.setBlendMode(QPainter.CompositionMode_Darken) self.assertFalse(map.requiresRasterization()) self.assertTrue(map.containsAdvancedEffects()) map.setBackgroundEnabled(False) self.assertTrue(map.requiresRasterization()) map.setBackgroundEnabled(True) map.setBackgroundColor(QColor(1, 1, 1, 1)) self.assertTrue(map.requiresRasterization()) self.vector_layer.setBlendMode(QPainter.CompositionMode_SourceOver)