(self, svg_bytes: bytes, prefix: str = "")
| 330 | self.prepareGeometryChange() |
| 331 | |
| 332 | def set_svg(self, svg_bytes: bytes, prefix: str = "") -> None: |
| 333 | renderer = QSvgRenderer(QByteArray(svg_bytes)) |
| 334 | if not renderer.isValid(): |
| 335 | self._svg_renderer = None |
| 336 | self._svg_bytes = b"" |
| 337 | return |
| 338 | vb = renderer.viewBoxF() |
| 339 | from .latex_label import svg_line_height |
| 340 | ref_h = svg_line_height() |
| 341 | target_h = _LABEL_SVG_HEIGHT if self.prop_key == "refdes" else _PARAM_SVG_HEIGHT |
| 342 | if ref_h and ref_h > 0: |
| 343 | scale = target_h / ref_h * 0.75 |
| 344 | elif vb.height() > 0: |
| 345 | scale = target_h / vb.height() * 0.75 |
| 346 | else: |
| 347 | scale = 1.0 |
| 348 | svg_w = vb.width() * scale |
| 349 | svg_h = vb.height() * scale |
| 350 | font, _ = self._font_and_color() |
| 351 | fm = QFontMetricsF(font) |
| 352 | prefix_w = (fm.horizontalAdvance(prefix) + fm.horizontalAdvance(" ") * 0.25) if prefix else 0.0 |
| 353 | # Bottom-aligned: y=0 is the bottom edge (matches text-mode baseline). |
| 354 | self._svg_renderer = renderer |
| 355 | self._svg_bytes = svg_bytes |
| 356 | self._svg_rect = QRectF(prefix_w, -svg_h, svg_w, svg_h) |
| 357 | self._prefix = prefix |
| 358 | self._prefix_w = prefix_w |
| 359 | self._text = "" |
| 360 | self.prepareGeometryChange() |
| 361 | |
| 362 | # ── QGraphicsItem interface ─────────────────────────────────────────────── |
| 363 |
no test coverage detected