A REPORT WITH ALL KINDS OF GRAPHIC ELEMENTS
===========================================

This is just a report with every graphic elements

    >>> import os
    >>> cur_dir = os.path.dirname(os.path.abspath(__file__))

    >>> from reportlab.lib.pagesizes import A4
    >>> from reportlab.lib.units import cm
    >>> from reportlab.lib.colors import navy, yellow, red, purple, orange,\
    ...     green, white, blue
    >>> from reportlab.lib.enums import TA_CENTER, TA_JUSTIFY
    
    >>> from geraldo import Report, ReportBand, RoundRect, Rect, Line, Circle,\
    ...     Arc, Ellipse, SystemField, Label, BAND_WIDTH, Image

Report class

    >>> class GraphicsReport(Report):
    ...     title = 'Graphics demonstration'
    ...     print_if_empty = True
    ... 
    ...     class band_begin(ReportBand):
    ...         height = 15*cm
    ...         elements = [
    ...             RoundRect(left=0.2*cm, top=0.5*cm, width=3*cm, height=2*cm,
    ...                 radius=10, stroke_color=purple),
    ...             Rect(left=4*cm, top=1.0*cm, width=3*cm, height=2*cm,
    ...                 fill=True, stroke=False, fill_color=orange),
    ...             Line(left=8*cm, top=3*cm, right=9*cm, bottom=0),
    ...             Line(left=9*cm, top=0, right=10*cm, bottom=3*cm),
    ...             Line(left=8.5*cm, top=3*cm, right=9*cm, bottom=6*cm),
    ...             Line(left=9*cm, top=6*cm, right=10*cm, bottom=3*cm),
    ...             Circle(left_center=5*cm, top_center=5*cm, radius=1*cm, fill_color=yellow,
    ...                 fill=True),
    ...             Arc(left=1*cm, top=3.0*cm, right=4*cm, bottom=5*cm,
    ...                 start_angle=150, extent=100),
    ...             Ellipse(left=1*cm, top=6.0*cm, right=4.5*cm, bottom=8*cm,
    ...                 fill_color=blue, fill=True, stroke_width=3),
    ...             Image(left=10*cm, top=8*cm, width=4*cm, height=5.12*cm,
    ...                 filename=os.path.join(cur_dir, 'photo.jpg')),
    ...             Image(left=13*cm, top=8*cm,
    ...                 filename=os.path.join(cur_dir, 'photo.jpg')),
    ...             #Poligon(), # --> uses drawPath
    ...             Label(text="""<b>William Shakespeare</b> (baptised 26 April 1564 – 23 April 1616)[a] was an English poet and playwright, widely regarded as the greatest writer in the English language and the world's preeminent dramatist.""",
    ...                 left=12*cm, top=1*cm, width=6*cm, height=4*cm, 
    ...                 style={'wordWrap': True, 'borderWidth': 1,
    ...                     'borderColor': green, 'borderPadding': 4,
    ...                     'borderRadius': 2, 'alignment': TA_JUSTIFY}),
    ...             Rect(left=12*cm, top=5*cm, width=6*cm, height=2*cm, 
    ...                 fill=True, stroke=False, fill_color=yellow),
    ...             Label(text="Box with outside border",
    ...                 left=12*cm, top=5*cm, width=6*cm, height=2*cm, 
    ...                 borders={'all': True}),
    ...         ]
    ... 
    ...     class band_page_header(ReportBand):
    ...         height = 1.4*cm
    ...         elements = [
    ...             SystemField(expression='%(report_title)s', top=0.1*cm, left=0,
    ...                 width=BAND_WIDTH, style={'fontName': 'Helvetica-Bold',
    ...                     'fontSize': 14, 'alignment': TA_CENTER}),
    ...             Label(text="ID", top=0.8*cm, left=0, width=1*cm,
    ...                 style={'borderWidth': 1, 'borderColor': green,
    ...                     'borderPadding': 1, 'borderRadius': 2}),
    ...             Label(text="Name", top=0.8*cm, left=3*cm,
    ...                 style={'backColor': red, 'textColor': white,
    ...                 'fontName': 'Helvetica'}),
    ...         ]
    ...         borders = {'bottom': True}

    >>> report = GraphicsReport()

PDF generation

    >>> from geraldo.generators import PDFGenerator

    >>> report.generate_by(PDFGenerator, filename=os.path.join(cur_dir, 'output/graphics-report.pdf'))

Page with half height

    >>> report.page_size = (A4[0], A4[1] / 2)

    >>> report.generate_by(PDFGenerator, filename=os.path.join(cur_dir, 'output/graphics-report-half-height.pdf'))


