def METHOD_NAME(self, frame: np.ndarray):
    obj = self.text
    self.prepare(frame.shape)
    text_config = self.config.text
    # Extract shape of the bbox if exists
    if obj.bbox is not None:
        # shape = self.bbox[2] - self.bbox[0], self.bbox[3] - self.bbox[1]
        tl, br = obj.bbox.denormalize(frame.shape)
        shape = br[0] - tl[0], br[1] - tl[1]
    else:
        shape = frame.shape[:2]
    font_scale = obj.size or text_config.font_scale
    if obj.size is None and text_config.auto_scale:
        font_scale = self.get_text_scale(shape, obj.bbox)
    # Calculate font thickness
    font_thickness = max(1, int(font_scale * 2)) \
        if text_config.auto_scale else obj.thickness or text_config.font_thickness
    dy = cv2.getTextSize(obj.text, text_config.font_face, font_scale, font_thickness)[0][1] + 10
    for line in obj.text.splitlines():
        y = obj.coords[1]
        if obj.outline:
            # Background
            cv2.putText(img=frame,
                        text=line,
                        org=obj.coords,
                        fontFace=text_config.font_face,
                        fontScale=font_scale,
                        color=text_config.background_color,
                        thickness=font_thickness + 1,
                        lineType=text_config.line_type)
        # Front text
        cv2.putText(img=frame,
                    text=line,
                    org=obj.coords,
                    fontFace=text_config.font_face,
                    fontScale=font_scale,
                    color=obj.color or text_config.font_color,
                    thickness=font_thickness,
                    lineType=text_config.line_type)
        obj.coords = (obj.coords[0], y + dy)