Skip to content

Commit

Permalink
Merge pull request #7841 from radarhere/supportsgetmesh
Browse files Browse the repository at this point in the history
  • Loading branch information
hugovk authored Feb 29, 2024
2 parents 18af646 + dcbe402 commit 1f35222
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
2 changes: 2 additions & 0 deletions docs/reference/ImageOps.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ only work on L and RGB images.
.. autofunction:: colorize
.. autofunction:: crop
.. autofunction:: scale
.. autoclass:: SupportsGetMesh
:show-inheritance:
.. autofunction:: deform
.. autofunction:: equalize
.. autofunction:: expand
Expand Down
12 changes: 10 additions & 2 deletions src/PIL/ImageOps.py
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,15 @@ def scale(
return image.resize(size, resample)


class _SupportsGetMesh(Protocol):
class SupportsGetMesh(Protocol):
"""
An object that supports the ``getmesh`` method, taking an image as an
argument, and returning a list of tuples. Each tuple contains two tuples,
the source box as a tuple of 4 integers, and a tuple of 8 integers for the
final quadrilateral, in order of top left, bottom left, bottom right, top
right.
"""

def getmesh(
self, image: Image.Image
) -> list[
Expand All @@ -421,7 +429,7 @@ def getmesh(

def deform(
image: Image.Image,
deformer: _SupportsGetMesh,
deformer: SupportsGetMesh,
resample: int = Image.Resampling.BILINEAR,
) -> Image.Image:
"""
Expand Down

0 comments on commit 1f35222

Please sign in to comment.