Source code for supervisely.geometry.any_geometry

# coding: utf-8

from copy import deepcopy

from supervisely.geometry.constants import ANY_SHAPE, GEOMETRY_SHAPE, GEOMETRY_TYPE
from supervisely.geometry.geometry import Geometry
from supervisely.geometry.rectangle import Rectangle


[docs] class AnyGeometry(Geometry): """Placeholder geometry that accepts any shape type. Used for labels with flexible geometry. Immutable.""" def __init__( self, data=None, geometry_type=None, sly_id=None, class_id=None, labeler_login=None, updated_at=None, created_at=None, ): super().__init__( sly_id=sly_id, class_id=class_id, labeler_login=labeler_login, updated_at=updated_at, created_at=created_at, ) self._data = deepcopy(data) if data is not None else {} self._geometry_type = geometry_type or ANY_SHAPE
[docs] @staticmethod def geometry_name(): """ Geometry name. :returns: Geometry name :rtype: str """ return ANY_SHAPE
@property def raw_geometry_type(self): return self._geometry_type @classmethod def from_json(cls, data): geometry_type = data.get(GEOMETRY_TYPE, data.get(GEOMETRY_SHAPE, ANY_SHAPE)) return cls( data=data, geometry_type=geometry_type, sly_id=data.get("id"), class_id=data.get("classId"), labeler_login=data.get("labelerLogin"), updated_at=data.get("updatedAt"), created_at=data.get("createdAt"), ) def to_json(self): data = deepcopy(self._data) data[GEOMETRY_TYPE] = self._geometry_type data[GEOMETRY_SHAPE] = self._geometry_type self._add_creation_info(data) return data def crop(self, rect): return [self] def resize(self, in_size, out_size): return self def scale(self, factor): return self def translate(self, drow, dcol): return self def rotate(self, rotator): return self def fliplr(self, img_size): return self def flipud(self, img_size): return self def _draw_impl(self, bitmap, color, thickness=1, config=None): return None def _draw_contour_impl(self, bitmap, color, thickness=1, config=None): return None @property def area(self): return 0 def to_bbox(self): return Rectangle(0, 0, 0, 0)