def apply_transform(self, transform: Affine2D) -> Paint: return dataclasses.replace( self, p0=transform.map_point(self.p0), p1=transform.map_point(self.p1), p2=transform.map_point(self.p2), ).check_overflows()
def _map_gradient_coordinates(paint: Paint, affine: Affine2D) -> Paint: if isinstance(paint, PaintLinearGradient): return dataclasses.replace( paint, p0=affine.map_point(paint.p0), p1=affine.map_point(paint.p1), p2=affine.map_point(paint.p2), ) elif isinstance(paint, PaintRadialGradient): scalex, scaley = affine.getscale() if not scalex or abs(scalex) != abs(scaley): raise ValueError( f"Expected uniform scale and/or translate, found: {affine}") return dataclasses.replace( paint, c0=affine.map_point(paint.c0), c1=affine.map_point(paint.c1), r0=affine.map_vector((paint.r0, 0)).x, r1=affine.map_vector((paint.r1, 0)).x, ) raise TypeError(type(paint))