feat(plot): configure one or two marker pairs per axis
This commit is contained in:
@@ -102,6 +102,8 @@ class Bounds:
|
||||
class Markers:
|
||||
x_enabled: bool = True
|
||||
y_enabled: bool = False
|
||||
x_pairs: int = 1
|
||||
y_pairs: int = 1
|
||||
selected: Marker = Marker.A
|
||||
a: Optional[float] = None
|
||||
b: Optional[float] = None
|
||||
@@ -112,11 +114,21 @@ class Markers:
|
||||
g: Optional[float] = None
|
||||
h: Optional[float] = None
|
||||
|
||||
def __post_init__(self) -> None:
|
||||
if self.x_pairs not in (1, 2) or self.y_pairs not in (1, 2):
|
||||
raise ValueError("Marker pair count must be 1 or 2")
|
||||
|
||||
def value(self, marker: Marker) -> Optional[float]:
|
||||
return getattr(self, marker.name.lower())
|
||||
|
||||
def enabled(self, marker: Marker) -> bool:
|
||||
return self.y_enabled if marker.horizontal else self.x_enabled
|
||||
if marker in (Marker.A, Marker.B):
|
||||
return self.x_enabled
|
||||
if marker in (Marker.C, Marker.D):
|
||||
return self.x_enabled and self.x_pairs >= 2
|
||||
if marker in (Marker.E, Marker.F):
|
||||
return self.y_enabled
|
||||
return self.y_enabled and self.y_pairs >= 2
|
||||
|
||||
def move(self, marker: Marker, value: float) -> "Markers":
|
||||
return replace(self, **{marker.name.lower(): value})
|
||||
|
||||
Reference in New Issue
Block a user