sec_interp.gui.preview_renderer module
Preview Renderer Module (PyQGIS Native).
Handles rendering of interactive previews using native QGIS resources. This module has been refactored to delegate specialized tasks to modular components.
- class sec_interp.gui.preview_renderer.PreviewRenderer(canvas: QgsMapCanvas | None = None)
Bases:
objectRenders interactive preview using native PyQGIS resources.
Acts as an orchestrator for several specialized modules: - PreviewLayerFactory: Handles layer creation and symbology. - PreviewAxesManager: Handles grid lines and axes labels. - PreviewOptimizer: Handles geometric simplification (LOD). - PreviewLegendRenderer: Handles legend drawing.
- __init__(canvas: QgsMapCanvas | None = None) None
Initialize preview renderer.
- Parameters:
canvas – QgsMapCanvas instance (optional)
- property active_units: dict[str, Any]
Expose active units from factory for legend compatibility.
- cleanup() None
Remove transient layers from the project and release resources.
Idempotent; safe to call on dialog close and plugin unload to avoid leaking temporary (memory) layers that trigger QGIS’s “scratch layers” warning on exit.
- draw_legend(painter: qgis.PyQt.QtGui.QPainter, rect: qgis.PyQt.QtCore.QRectF) None
Draw legend on the given painter honoring the configured layout.
- legend_units() list[tuple[str, str, Any, bool, str]]
Return
(name, label, color, hidden, source)for known units, ordered.sourceis"geology"or"drillholes"; a unit present in both is attributed to geology.
- render(topo_data: ProfileData, geol_data: GeologyData | None = None, struct_data: StructureData | None = None, vert_exag: float = 1.0, dip_line_length: float | None = None, max_points: int = 1000, preserve_extent: bool = False, use_adaptive_sampling: bool = False, drillhole_data: list | None = None, interp_data: list[InterpretationPolygon] | None = None, topo_color_mode: str = 'gradient', topo_ramp_name: str | None = None, topo_single_color: str | None = None, topo_smooth_data: ProfileData | None = None, layer_styles: dict | None = None, hidden_interp_ids: set[str] | None = None) tuple[QgsMapCanvas | None, list]
Render preview with all data layers.