def METHOD_NAME(self, target_surface: Surface,
             target_area: Rect,
             row_chunk_origin: int,
             row_chunk_height: int,
             row_bg_height: int,
             x_scroll_offset: int = 0,
             letter_end: Optional[int] = None):
    x_start = self.left
    y_start = self.centery - int(self.rule_dimensions[1] / 2)
    # figure out alignment and the actual width of the rule.
    if self.rule_dimensions[0] != -1 and self.rule_dimensions[0] < self.width:
        if self.alignment == HorizRuleLayoutRect.ALIGN_CENTER:
            x_start = int((self.width - self.rule_dimensions[0]) / 2)
        elif self.alignment == HorizRuleLayoutRect.ALIGN_RIGHT:
            x_start = self.width - self.rule_dimensions[0]
    else:
        self.rule_dimensions[0] = self.width
    # draw the rule to our target surface
    if self.shade:
        self._draw_shaded_rule(x_start, y_start, target_surface)
    else:  # no shade
        pygame.draw.rect(target_surface,
                         color=self.colour_or_gradient,
                         rect=Rect((x_start, y_start),
                                   (self.rule_dimensions[0], self.rule_dimensions[1])))