107 lines
2.3 KiB
Python
107 lines
2.3 KiB
Python
|
from __future__ import annotations
|
||
|
|
||
|
from abc import ABC, abstractmethod
|
||
|
from typing import TYPE_CHECKING, Any
|
||
|
|
||
|
import numpy as np
|
||
|
|
||
|
if TYPE_CHECKING:
|
||
|
import io
|
||
|
|
||
|
from numpy.typing import ArrayLike
|
||
|
|
||
|
from contourpy._contourpy import CoordinateArray, FillReturn, FillType, LineReturn, LineType
|
||
|
|
||
|
|
||
|
class Renderer(ABC):
|
||
|
"""Abstract base class for renderers, defining the interface that they must implement."""
|
||
|
|
||
|
def _grid_as_2d(self, x: ArrayLike, y: ArrayLike) -> tuple[CoordinateArray, CoordinateArray]:
|
||
|
x = np.asarray(x)
|
||
|
y = np.asarray(y)
|
||
|
if x.ndim == 1:
|
||
|
x, y = np.meshgrid(x, y)
|
||
|
return x, y
|
||
|
|
||
|
x = np.asarray(x)
|
||
|
y = np.asarray(y)
|
||
|
if x.ndim == 1:
|
||
|
x, y = np.meshgrid(x, y)
|
||
|
return x, y
|
||
|
|
||
|
@abstractmethod
|
||
|
def filled(
|
||
|
self,
|
||
|
filled: FillReturn,
|
||
|
fill_type: FillType | str,
|
||
|
ax: Any = 0,
|
||
|
color: str = "C0",
|
||
|
alpha: float = 0.7,
|
||
|
) -> None:
|
||
|
pass
|
||
|
|
||
|
@abstractmethod
|
||
|
def grid(
|
||
|
self,
|
||
|
x: ArrayLike,
|
||
|
y: ArrayLike,
|
||
|
ax: Any = 0,
|
||
|
color: str = "black",
|
||
|
alpha: float = 0.1,
|
||
|
point_color: str | None = None,
|
||
|
quad_as_tri_alpha: float = 0,
|
||
|
) -> None:
|
||
|
pass
|
||
|
|
||
|
@abstractmethod
|
||
|
def lines(
|
||
|
self,
|
||
|
lines: LineReturn,
|
||
|
line_type: LineType | str,
|
||
|
ax: Any = 0,
|
||
|
color: str = "C0",
|
||
|
alpha: float = 1.0,
|
||
|
linewidth: float = 1,
|
||
|
) -> None:
|
||
|
pass
|
||
|
|
||
|
@abstractmethod
|
||
|
def mask(
|
||
|
self,
|
||
|
x: ArrayLike,
|
||
|
y: ArrayLike,
|
||
|
z: ArrayLike | np.ma.MaskedArray[Any, Any],
|
||
|
ax: Any = 0,
|
||
|
color: str = "black",
|
||
|
) -> None:
|
||
|
pass
|
||
|
|
||
|
@abstractmethod
|
||
|
def save(self, filename: str, transparent: bool = False) -> None:
|
||
|
pass
|
||
|
|
||
|
@abstractmethod
|
||
|
def save_to_buffer(self) -> io.BytesIO:
|
||
|
pass
|
||
|
|
||
|
@abstractmethod
|
||
|
def show(self) -> None:
|
||
|
pass
|
||
|
|
||
|
@abstractmethod
|
||
|
def title(self, title: str, ax: Any = 0, color: str | None = None) -> None:
|
||
|
pass
|
||
|
|
||
|
@abstractmethod
|
||
|
def z_values(
|
||
|
self,
|
||
|
x: ArrayLike,
|
||
|
y: ArrayLike,
|
||
|
z: ArrayLike,
|
||
|
ax: Any = 0,
|
||
|
color: str = "green",
|
||
|
fmt: str = ".1f",
|
||
|
quad_as_tri: bool = False,
|
||
|
) -> None:
|
||
|
pass
|