Fix label mode argument.

This commit is contained in:
Sergey Vartanov 2021-05-29 03:00:22 +03:00
parent b086b0d108
commit b0de6754c1
4 changed files with 36 additions and 15 deletions

View file

@ -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)

View file

@ -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")

View file

@ -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(

View file

@ -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",