Example #1
0
    def calculate_metrics(self):
        self.HEADER_ASCENT = getAscent(self.HEADER_FONT, self.HEADER_SIZE)
        self.HEADER_DESCENT = -getDescent(self.HEADER_FONT, self.HEADER_SIZE)
        self.HEADER_HEIGHT = self.HEADER_ASCENT + self.HEADER_DESCENT + self.HEADER_PADDING * 2

        self.BOX_ASCENT = getAscent(self.BOX_FONT, self.BOX_SIZE)
        self.BOX_DESCENT = -getDescent(self.BOX_FONT, self.BOX_SIZE)
        self.BOX_HEIGHT = self.BOX_ASCENT + self.BOX_DESCENT + self.BOX_PADDING * 2

        self.SUMMARY_BOX_WIDTH = self.WIDTH - self.PAGE_MARGIN * 2
Example #2
0
    def draw_text_cell(self,
                       a_canvas,
                       text,
                       font_name,
                       font_size,
                       vertical_align='t',
                       force_baseline=None,
                       inset_x=0.,
                       inset_y=0.,
                       draw_baseline=False):
        if text is None:
            return

        a_canvas.saveState()

        inset_rect = self.inset_xy(inset_x, inset_y)

        if vertical_align == 'm':
            y = inset_rect.center_y - getAscent(font_name, font_size) / 2.
        elif vertical_align == 't':
            y = inset_rect.max_y - getAscent(font_name, font_size)
        else:
            y = inset_rect.min_y - getDescent(font_name, font_size)

        if force_baseline is not None:
            y = self.min_y + force_baseline

        cp = a_canvas.beginPath()
        cp.rect(self.min_x, self.min_y, self.width, self.height)
        a_canvas.clipPath(cp, stroke=0, fill=0)

        a_canvas.setFont(font_name, font_size)
        tx = a_canvas.beginText()
        tx.setTextOrigin(inset_rect.min_x, y)
        tx.textLine(text)
        a_canvas.drawText(tx)

        if draw_baseline:
            a_canvas.setDash([3.0, 1.0, 2.0, 1.0])
            a_canvas.setLineWidth(0.5)
            bl = a_canvas.beginPath()
            bl.moveTo(inset_rect.min_x, y - 1.)
            bl.lineTo(inset_rect.max_x, y - 1.)
            a_canvas.drawPath(bl)

        a_canvas.restoreState()
Example #3
0
 def drawHumanReadable(self):
     if self.humanReadable:
         #we have text
         from reportlab.pdfbase.pdfmetrics import getAscent, stringWidth
         s = str(self._humanText())
         fontSize = self.fontSize
         fontName = self.fontName
         w = stringWidth(s,fontName,fontSize)
         width = self._width
         if self.quiet:
             width -= self.lquiet+self.rquiet
             x = self.lquiet
         else:
             x = 0
         if w>width: fontSize *= width/float(w)
         y = 1.07*getAscent(fontName)*fontSize/1000.
         self.annotate(x+width/2.,-y,s,fontName,fontSize)
Example #4
0
 def drawHumanReadable(self):
     if self.humanReadable:
         #we have text
         from reportlab.pdfbase.pdfmetrics import getAscent, stringWidth
         s = str(self._humanText())
         fontSize = self.fontSize
         fontName = self.fontName
         w = stringWidth(s, fontName, fontSize)
         width = self._width
         if self.quiet:
             width -= self.lquiet + self.rquiet
             x = self.lquiet
         else:
             x = 0
         if w > width: fontSize *= width / float(w)
         y = 1.07 * getAscent(fontName) * fontSize / 1000.
         self.annotate(x + width / 2., -y, s, fontName, fontSize)
Example #5
0
 def get_ascent(self):
     return getAscent(self.font, self.size)
Example #6
0
 def get_line_height(self):
     return getAscent(self.font, self.size) - getDescent(
         self.font, self.size) + self.BOX_PADDING
Example #7
0
 def getHeight(self):
     return getAscent(self.getFont(),self.getFontSize())
Example #8
0
 def ascent_pts(self):
     """Return font ascent in points."""
     return pdfmetrics.getAscent(self.name, self.size_pts)