Source code for menpo.shape.base

from menpo.base import Vectorizable
from menpo.landmark import Landmarkable
from menpo.transform.base import Transformable
from menpo.visualize import LandmarkableViewable, Viewable


[docs]class Shape(Vectorizable, Transformable, Landmarkable, LandmarkableViewable, Viewable): """ Abstract representation of shape. Shapes are :map:`Transformable`, :map:`Vectorizable`, :map:`Landmarkable`, :map:`LandmarkableViewable` and :map:`Viewable`. This base class handles transforming landmarks when the shape is transformed. Therefore, implementations of :map:`Shape` have to implement the abstract :meth:`_transform_self_inplace` method that handles transforming the :map:`Shape` itself. """ def _transform_inplace(self, transform): """ Transform the landmarks and the shape itself. Parameters ---------- transform : `function` A function to transform the spatial data with. Returns ------- self : `type(self)` A pointer to `self` (the result of :meth:`_transform_self_inplace`). """ if self.has_landmarks: self.landmarks._transform_inplace(transform) return self._transform_self_inplace(transform) def _transform_self_inplace(self, transform): """ Implement this method to transform the concrete implementation of a shape. This is then called by the Shape's :meth:`_transform_inplace` method, which will have updated the landmarks beforehand. Parameters ---------- transform : `function` A function to transform the spatial data with. Returns ------- self : `type(self)` A pointer to `self`. """ pass