def testReferencePoint(self): """Test reference point parameter when resizeToContent is enabled""" QgsProject.instance().removeAllMapLayers() point_path = os.path.join(TEST_DATA_DIR, 'points.shp') point_layer = QgsVectorLayer(point_path, 'points', 'ogr') QgsProject.instance().clear() QgsProject.instance().addMapLayers([point_layer]) marker_symbol = QgsMarkerSymbol.createSimple( {'color': '#ff0000', 'outline_style': 'no', 'size': '5', 'size_unit': 'MapUnit'}) point_layer.setRenderer(QgsSingleSymbolRenderer(marker_symbol)) s = QgsMapSettings() s.setLayers([point_layer]) layout = QgsLayout(QgsProject.instance()) layout.initializeDefaults() map = QgsLayoutItemMap(layout) map.attemptSetSceneRect(QRectF(20, 20, 80, 80)) map.setFrameEnabled(True) map.setLayers([point_layer]) layout.addLayoutItem(map) map.zoomToExtent(point_layer.extent()) legend = QgsLayoutItemLegend(layout) legend.setStyleFont(QgsLegendStyle.SymbolLabel, QgsFontUtils.getStandardTestFont('Bold', 16)) legend.setReferencePoint(QgsLayoutItem.LowerLeft) legend.setResizeToContents(True) legend.setTitle("Legend") legend.attemptSetSceneRect(QRectF(20, 20, 300, 80)) legend.setFrameEnabled(True) legend.setFrameStrokeWidth(QgsLayoutMeasurement(2)) legend.setBackgroundEnabled(False) legend.setBackgroundColor(QColor(200, 200, 200)) legend.setTitle('') layout.addLayoutItem(legend) legend.setLinkedMap(map) checker = QgsLayoutChecker( 'composer_legend_reference_point', layout) checker.setControlPathPrefix("composer_legend") result, message = checker.testLayout() TestQgsLayoutItemLegend.report += checker.report() self.assertTrue(result, message) QgsProject.instance().clear()
def testResizeWithMapContentNoDoublePaint(self): """Test test legend resizes to match map content""" poly_path = os.path.join(TEST_DATA_DIR, 'polys.shp') poly_layer = QgsVectorLayer(poly_path, 'polys', 'ogr') p = QgsProject() p.addMapLayers([poly_layer]) fill_symbol = QgsFillSymbol.createSimple({ 'color': '255,0,0,125', 'outline_style': 'no' }) poly_layer.setRenderer(QgsSingleSymbolRenderer(fill_symbol)) s = QgsMapSettings() s.setLayers([poly_layer]) layout = QgsLayout(p) layout.initializeDefaults() map = QgsLayoutItemMap(layout) map.attemptSetSceneRect(QRectF(20, 20, 80, 80)) map.setFrameEnabled(True) map.setLayers([poly_layer]) layout.addLayoutItem(map) map.setExtent(poly_layer.extent()) legend = QgsLayoutItemLegend(layout) legend.setTitle("Legend") legend.attemptSetSceneRect(QRectF(120, 20, 80, 80)) legend.setFrameEnabled(True) legend.setFrameStrokeWidth(QgsLayoutMeasurement(2)) legend.setBackgroundEnabled(False) legend.setTitle('') layout.addLayoutItem(legend) legend.setLinkedMap(map) map.setExtent(QgsRectangle(-102.51, 41.16, -102.36, 41.30)) checker = QgsLayoutChecker( 'composer_legend_size_content_no_double_paint', layout) checker.setControlPathPrefix("composer_legend") result, message = checker.testLayout() self.report += checker.report() self.assertTrue(result, message)