Canvas raster image shape with position, size, and optional rotation.
@type t() :: %Plushie.Canvas.Shape.CanvasImage{ h: number(), opacity: number() | nil, rotation: number() | nil, source: String.t(), w: number(), x: number(), y: number() }