diff --git a/roentgen.py b/roentgen.py index 412ff83..3442e43 100644 --- a/roentgen.py +++ b/roentgen.py @@ -115,7 +115,7 @@ def main(argv) -> None: painter: Painter = Painter( show_missing_tags=options.show_missing_tags, overlap=options.overlap, - mode=options.mode, draw_captions=options.draw_captions, + mode=options.mode, label_mode=options.label_mode, map_=map_, flinger=flinger, svg=svg, icon_extractor=icon_extractor, scheme=scheme) diff --git a/roentgen/mapper.py b/roentgen/mapper.py index 8267aa6..bb13ef0 100644 --- a/roentgen/mapper.py +++ b/roentgen/mapper.py @@ -36,15 +36,21 @@ class Painter: """ def __init__( - self, map_: Map, flinger: Flinger, - svg: svgwrite.Drawing, icon_extractor: ShapeExtractor, - scheme: Scheme, show_missing_tags: bool = False, overlap: int = 12, - mode: str = "normal", draw_captions: str = "main" + self, + map_: Map, + flinger: Flinger, + svg: svgwrite.Drawing, + icon_extractor: ShapeExtractor, + scheme: Scheme, + show_missing_tags: bool = False, + overlap: int = 12, + mode: str = "normal", + label_mode: str = "main" ): self.show_missing_tags: bool = show_missing_tags self.overlap: int = overlap self.mode: str = mode - self.draw_captions: str = draw_captions + self.label_mode: str = label_mode self.map_: Map = map_ self.flinger: Flinger = flinger @@ -263,9 +269,11 @@ class Painter: ui.progress_bar( steps * 2 + index, steps * 3, step=10, text="Drawing texts" ) - if (self.mode not in [CREATION_TIME_MODE, AUTHOR_MODE] and - self.draw_captions != "no"): - point.draw_texts(self.svg, occupied) + if ( + self.mode not in [CREATION_TIME_MODE, AUTHOR_MODE] + and self.label_mode != "no" + ): + point.draw_texts(self.svg, occupied, self.label_mode) ui.progress_bar(-1, len(nodes), step=10, text="Drawing nodes") diff --git a/roentgen/point.py b/roentgen/point.py index 67400b7..1b4084a 100644 --- a/roentgen/point.py +++ b/roentgen/point.py @@ -154,19 +154,31 @@ class Point(Tagged): return True def draw_texts( - self, svg: svgwrite.Drawing, occupied: Optional[Occupied] = None + self, + svg: svgwrite.Drawing, + occupied: Optional[Occupied] = None, + label_mode: str = "main", ) -> None: """ Draw all labels. """ - for text_struct in self.labels: # type: Label - text = text_struct.text + labels: List[Label] + + if label_mode == "main": + labels = self.labels[:1] + elif label_mode == "all": + labels = self.labels + else: + return + + for label in labels: + text = label.text text = text.replace(""", '"') text = text.replace("&", '&') text = text[:26] + ("..." if len(text) > 26 else "") self.draw_text( svg, text, self.point + np.array((0, self.y)), - occupied, text_struct.fill, size=text_struct.size + occupied, label.fill, size=label.size ) def draw_text( diff --git a/roentgen/ui.py b/roentgen/ui.py index a09597d..07a384e 100644 --- a/roentgen/ui.py +++ b/roentgen/ui.py @@ -45,8 +45,9 @@ def parse_options(args) -> argparse.Namespace: dest="scale", type=float) parser.add_argument( - "--captions", "--no-draw-captions", - dest="draw_captions", + "--labels", + help="label drawing mode: `no`, `main`, or `all`", + dest="label_mode", default="main") parser.add_argument( "--show-missing-tags",