diff --git a/src/bcf/bcf/v2/topic.py b/src/bcf/bcf/v2/topic.py index 88c991ae0b..4d016449e2 100644 --- a/src/bcf/bcf/v2/topic.py +++ b/src/bcf/bcf/v2/topic.py @@ -293,10 +293,13 @@ class TopicHandler: self.add_visinfo_handler(vi_handler) return vi_handler - def add_visinfo_handler(self, new_viewpoint: VisualizationInfoHandler) -> mdl.ViewPoint: + def add_visinfo_handler( + self, new_viewpoint: VisualizationInfoHandler, snapshot_filename: Optional[str] = None + ) -> mdl.ViewPoint: self.viewpoints[new_viewpoint.guid + ".bcfv"] = new_viewpoint viewpoint = mdl.ViewPoint( viewpoint=new_viewpoint.guid + ".bcfv", + snapshot=snapshot_filename, guid=new_viewpoint.guid, ) self.markup.viewpoints.append(viewpoint) diff --git a/src/bcf/bcf/v2/visinfo.py b/src/bcf/bcf/v2/visinfo.py index 08694b8111..ed6f3324f6 100644 --- a/src/bcf/bcf/v2/visinfo.py +++ b/src/bcf/bcf/v2/visinfo.py @@ -134,6 +134,15 @@ class VisualizationInfoHandler: self._save_bitmaps(bcf_zip, topic_dir) def _save_snapshot(self, bcf_zip: ZipFileInterface, topic_dir: str, filename: Optional[str]) -> None: + if bool(self.snapshot) ^ bool(filename): + data = ["data (VisualizationInfoHandler.snapshot)", "filename (ViewPoint.snapshot)"] + provided_data, missing_data = data if self.snapshot else data[::-1] + print( + f"WARNING. Snapshot with viewpoint guid '{self.guid}' won't be saved to bcf. " + f"Only snapshot {provided_data} is provided but snapshot {missing_data} is missing." + ) + return + if self.snapshot and filename: bcf_zip.writestr(f"{topic_dir}/{filename}", self.snapshot) diff --git a/src/bcf/bcf/v3/topic.py b/src/bcf/bcf/v3/topic.py index dbdc1e0fc3..2fd8db6fe4 100644 --- a/src/bcf/bcf/v3/topic.py +++ b/src/bcf/bcf/v3/topic.py @@ -191,12 +191,15 @@ class TopicHandler: self.add_visinfo_handler(vi_handler) return vi_handler - def add_visinfo_handler(self, new_viewpoint: VisualizationInfoHandler) -> mdl.ViewPoint: + def add_visinfo_handler( + self, new_viewpoint: VisualizationInfoHandler, snapshot_filename: Optional[str] = None + ) -> mdl.ViewPoint: self.viewpoints[new_viewpoint.guid + ".bcfv"] = new_viewpoint if self.topic.viewpoints is None: self.topic.viewpoints = mdl.TopicViewpoints() viewpoint = mdl.ViewPoint( viewpoint=new_viewpoint.guid + ".bcfv", + snapshot=snapshot_filename, guid=new_viewpoint.guid, ) self.topic.viewpoints.view_point.append(viewpoint) diff --git a/src/bcf/bcf/v3/visinfo.py b/src/bcf/bcf/v3/visinfo.py index f2666288d9..d1e438fada 100644 --- a/src/bcf/bcf/v3/visinfo.py +++ b/src/bcf/bcf/v3/visinfo.py @@ -133,6 +133,15 @@ class VisualizationInfoHandler: self._save_bitmaps(bcf_zip, topic_dir) def _save_snapshot(self, bcf_zip: ZipFileInterface, topic_dir: str, filename: Optional[str]) -> None: + if bool(self.snapshot) ^ bool(filename): + data = ["data (VisualizationInfoHandler.snapshot)", "filename (ViewPoint.snapshot)"] + provided_data, missing_data = data if self.snapshot else data[::-1] + print( + f"WARNING. Snapshot with viewpoint guid '{self.guid}' won't be saved to bcf. " + f"Only snapshot {provided_data} is provided but snapshot {missing_data} is missing." + ) + return + if self.snapshot and filename: bcf_zip.writestr(f"{topic_dir}/{filename}", self.snapshot)