1from _typeshed import Self 2from typing import Any, Callable, Iterable, Sequence, Tuple, Type 3from typing_extensions import Literal 4 5from .Image import Image 6 7_FilterArgs = Tuple[Sequence[int], int, int, Sequence[int]] 8 9# filter image parameters below are the C images, i.e. Image().im. 10 11class Filter: ... 12class MultibandFilter(Filter): ... 13 14class BuiltinFilter(MultibandFilter): 15 def filter(self, image) -> Image: ... 16 17class Kernel(BuiltinFilter): 18 name: str 19 filterargs: _FilterArgs 20 def __init__(self, size: Sequence[int], kernel: Sequence[int], scale: Any | None = ..., offset: int = ...) -> None: ... 21 22class RankFilter(Filter): 23 name: str 24 size: int 25 rank: int 26 def __init__(self, size: int, rank: int) -> None: ... 27 def filter(self, image) -> Image: ... 28 29class MedianFilter(RankFilter): 30 name: str 31 size: int 32 rank: int 33 def __init__(self, size: int = ...) -> None: ... 34 35class MinFilter(RankFilter): 36 name: str 37 size: int 38 rank: int 39 def __init__(self, size: int = ...) -> None: ... 40 41class MaxFilter(RankFilter): 42 name: str 43 size: int 44 rank: int 45 def __init__(self, size: int = ...) -> None: ... 46 47class ModeFilter(Filter): 48 name: str 49 size: int 50 def __init__(self, size: int = ...) -> None: ... 51 def filter(self, image) -> Image: ... 52 53class GaussianBlur(MultibandFilter): 54 name: str 55 radius: float 56 def __init__(self, radius: float = ...) -> None: ... 57 def filter(self, image) -> Image: ... 58 59class BoxBlur(MultibandFilter): 60 name: str 61 radius: float 62 def __init__(self, radius: float) -> None: ... 63 def filter(self, image) -> Image: ... 64 65class UnsharpMask(MultibandFilter): 66 name: str 67 radius: float 68 percent: int 69 threshold: int 70 def __init__(self, radius: float = ..., percent: int = ..., threshold: int = ...) -> None: ... 71 def filter(self, image) -> Image: ... 72 73class BLUR(BuiltinFilter): 74 name: str 75 filterargs: _FilterArgs 76 77class CONTOUR(BuiltinFilter): 78 name: str 79 filterargs: _FilterArgs 80 81class DETAIL(BuiltinFilter): 82 name: str 83 filterargs: _FilterArgs 84 85class EDGE_ENHANCE(BuiltinFilter): 86 name: str 87 filterargs: _FilterArgs 88 89class EDGE_ENHANCE_MORE(BuiltinFilter): 90 name: str 91 filterargs: _FilterArgs 92 93class EMBOSS(BuiltinFilter): 94 name: str 95 filterargs: _FilterArgs 96 97class FIND_EDGES(BuiltinFilter): 98 name: str 99 filterargs: _FilterArgs 100 101class SHARPEN(BuiltinFilter): 102 name: str 103 filterargs: _FilterArgs 104 105class SMOOTH(BuiltinFilter): 106 name: str 107 filterargs: _FilterArgs 108 109class SMOOTH_MORE(BuiltinFilter): 110 name: str 111 filterargs: _FilterArgs 112 113class Color3DLUT(MultibandFilter): 114 name: str 115 size: list[int] 116 channels: int 117 mode: str | None 118 table: Any 119 def __init__( 120 self, size: int | Iterable[int], table, channels: int = ..., target_mode: str | None = ..., **kwargs 121 ) -> None: ... 122 @classmethod 123 def generate( 124 cls: Type[Self], 125 size: int | tuple[int, int, int], 126 callback: Callable[[float, float, float], Iterable[float]], 127 channels: int = ..., 128 target_mode: str | None = ..., 129 ) -> Self: ... 130 def transform( 131 self: Self, 132 callback: Callable[..., Iterable[float]], 133 with_normals: bool = ..., 134 channels: Literal[3, 4] | None = ..., 135 target_mode: Any | None = ..., 136 ) -> Self: ... 137 def filter(self, image) -> Image: ... 138