[docs]classItemPainter:def__init__(self,selection:Optional[Selection]=None)->None:self.selection=selectionorSelection()defpaint_item(self,item:Item,cairo:CairoContext)->None:cairo.save()try:cairo.set_line_join(LINE_JOIN_ROUND)cairo.transform(item.matrix_i2c.to_cairo())selection=self.selectionitem.draw(DrawContext(cairo=cairo,selected=(iteminselection.selected_items),focused=(itemisselection.focused_item),hovered=(itemisselection.hovered_item),))finally:cairo.restore()defpaint(self,items:Collection[Item],cairo:CairoContext)->None:"""Draw the items."""foriteminitems:self.paint_item(item,cairo)