def Draw(self, dc: DC, withChildren: bool = False): """ Paint handler, draws the content of the shape. Args: dc: device context to draw to withChildren: Redraw children or not """ OglObject.Draw(self, dc) dc.SetFont(self._textFont) w, h = self.GetSize() baseX, baseY = self.GetPosition() dc.SetClippingRegion(baseX, baseY, w, h) noteContent = cast(PyutText, self.getPyutObject()).content lines = LineSplitter().split(noteContent, dc, w - 2 * OglText.MARGIN) x = baseX + OglText.MARGIN y = baseY + OglText.MARGIN for line in range(len(lines)): dc.DrawText(lines[line], x, y + line * (dc.GetCharHeight() + 5)) dc.DestroyClippingRegion()
def Draw(self, dc: DC, withChildren: bool = False): """ Paint handler, draws the content of the shape. Args: dc: device context to draw to withChildren: Redraw children or not """ OglObject.Draw(self, dc) dc.SetFont(self._defaultFont) w, h = self.GetSize() try: # lines = LineSplitter().split(self.getPyutObject().getName(), dc, w - 2 * MARGIN) # noteName = self.getPyutObject().getName() noteContent = self.getPyutObject().content lines = LineSplitter().split(noteContent, dc, w - 2 * OglNote.MARGIN) except (ValueError, Exception) as e: self.logger.error(f"Unable to display note - {e}") return baseX, baseY = self.GetPosition() dc.SetClippingRegion(baseX, baseY, w, h) x = baseX + OglNote.MARGIN y = baseY + OglNote.MARGIN for line in range(len(lines)): dc.DrawText(lines[line], x, y + line * (dc.GetCharHeight() + 5)) dc.DrawLine(baseX + w - OglNote.MARGIN, baseY, baseX + w, baseY + OglNote.MARGIN) dc.DestroyClippingRegion()
def Draw(self, dc: DC, withChildren=False): """ Draw the actor. @param dc : Device context @param withChildren @since 1.0 @author Philippe Waelti <*****@*****.**> """ OglObject.Draw(self, dc, withChildren) dc.SetFont(self._defaultFont) # Gets the minimum bounding box for the shape width, height = self.GetSize() # Calculate the top left of the shape x, y = self.GetPosition() # Draw ellipse dc.DrawEllipse(x + 1, y + 1, width - 2, height - 2) # Draw text x += round(0.25 * width) y += round(0.25 * height) textWidth: int = round(0.6 * width) # Text area width space: int = round(1.1 * dc.GetCharHeight()) # Space between lines # Drawing is restricted in the specified region of the device dc.SetClippingRegion(x, y, textWidth, round(0.6 * height)) # Split lines lines = LineSplitter().split(self.pyutObject.getName(), dc, textWidth) # Draw text for line in lines: dc.DrawText(line, x, y) y += space dc.DestroyClippingRegion()