o
    vh                     @   s   d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
 d dlmZ d dlT d dlT d dlmZ d dlmZ d dlmZ G d	d
 d
eZedkrUe Ze jdd dS dS )    )_PCMYK_black)Label)CircleDrawingGroupLineRectString)Widget)*)cm)getFont)	_maxWidthc                   @   s   e Zd ZdZeeeddeeddeeddeeddeeddeeddeed	dee	d
deeddee	ddeeddeeddeeddeedddZ
dd Zdd ZdddZdd ZdS )DotBoxzReturns a dotbox widget.z/List of text labels for boxes on left hand side)descz+Text label for second box on left hand sidez Name of font used for the labelsz Size of font used for the labelsz&Space between label text and grid edgez!Width of the grid and dot outlinezWidth of each 'box'zColour for the box and griddingz)Diameter of the circle used for the 'dot'zColour of the circle on the boxzX Position of the circlezX Position of dotboxzY Position of dotbox)xlabelsylabelslabelFontNamelabelFontSizelabelOffsetstrokeWidthgridDivWidth	gridColordotDiameterdotColordotXPositiondotYPositionxyc                 C   s|   g d| _ g d| _d| _d| _d| _d| _dt | _t	ddd	| _
d
t | _t	ddd| _d| _d| _d| _d| _d S )N)ValueBlendGrowth)SmallMediumLarge	Helvetica      g      ?g?gSSSSSS?g?g?g?g?g?      )r   r   r   r   r   r   r   r   colorsColorr   r   r   r   r   r   r   )self r-   ^/var/www/html/hyperkenya/venv/lib/python3.10/site-packages/reportlab/graphics/charts/dotbox.py__init__.   s   




zDotBox.__init__c                 C   s   d } } }}t | j| j }|| | | j }|t| j| j| j }t | j| j }|| | | j }|t| j| j| j }||fS )Nr'   )lenr   r   r   r   r   r   r   )r,   leftPaddingrightPadding
topPaddingbottomPaddingtxtyr-   r-   r.   _getDrawingDimensions?   s   zDotBox._getDrawingDimensionsNc                 C   s,   |s|   \}}t||}||   |S N)r7   r   adddraw)r,   drawingr5   r6   r-   r-   r.   demoP   s
   
zDotBox.democ                 C   s  t  }|t| j| jt| j| j t| j| j | j	| j
d d tdt| jD ]'}|t| j	| j
| j| j|| j  | jt| j| j  | j|| j  d q)tdt| jD ]'}|t| j	| j
| j|| j  | j| j|| j  | jt| j| j  d qY|t| j	| j
| j| j| j| j  | j| j| j  | jd d t| jjj}|dkrd}|| j }| jd krtt| jd ddD ]/}| j| d kr|t| j	| j| | j| jt| j| j | j|| j | j| d   d	d
 q| jd krUtdt| jD ]R}| j| d krSt }| j|| j  | j| d  |_| jt| j| j  | j |_d|_d|_| j|_| j|_t|_| | j|  d|_!|"  || q|S )N)strokeColorr   	fillColorr(   )r=   r   x1y1x2y2g       @)r=   r   r>   cxcyrr   g`"?end)r=   textfontNamefontSizer>   r   r   
textAnchorZ   startsw)#r   r9   r   r   r   r0   r   r   r   r   r   ranger   r   r   r   r   r   r   r   faceascentr   r	   r   r   r   anglerK   rI   rJ   r>   setText	boxAnchorr:   )r,   gfrQ   lr-   r-   r.   r:   W   s~   *









 
zDotBox.drawr8   )__name__
__module____qualname____doc__AttrMapAttrMapValueisNoneOrListOfNoneOrStringsisStringisNumberisColor_attrMapr/   r7   r<   r:   r-   r-   r-   r.   r      sd    
r   __main__dotbox)fnRootN)reportlab.lib.colorsr   $reportlab.graphics.charts.textlabelsr   reportlab.graphics.shapesr   r   r   r   r   r	   reportlab.graphics.widgetbaser
   reportlab.lib.attrmapreportlab.lib.validatorsreportlab.lib.unitsr   reportlab.pdfbase.pdfmetricsr   #reportlab.graphics.charts.lineplotsr   r   rX   dr<   saver-   r-   r-   r.   <module>   s      