o
    vhd!                     @   s   d dl mZ d dlmZmZ d dl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 )    )colors)blackwhite)PolygonStringDrawingGroupRect)Widget)*)cm)getFont)
ShadedRectc                   @   s  e Zd ZdZedDi deedddeedddeeddd	eed
ddee	dddee	dddee
dddee
dddeedddeedddee	dddeedddeedddeedddeeddd eed!dd"eed#dd$eed%dd&eed'dd(eed)dd*eed+dd,eed-dd.eed/dd0eed1dd2eed-dd3eed4dd5eed6dd7eed8dZd9d: Zd;d< Zd=d> ZdEd@dAZdBdC Zd?S )FSlideBoxzReturns a slidebox widgetlabelFontNamez Name of font used for the labels)desclabelFontSizez Size of font used for the labelslabelStrokeColorzColour for for number outlineslabelFillColorzColour for number insides
startColorzColor of first boxendColorzColor of last boxnumberOfBoxeszHow many boxes there aretrianglePositionz)Which box is highlighted by the trianglestriangleHeightzHeight of indicator trianglestriangleWidthzWidth of indicator trianglestriangleFillColorzColour of indicator trianglestriangleStrokeColorz$Colour of indicator triangle outlinetriangleStrokeWidth	boxHeightzHeight of the boxesboxWidthzWidth of the boxes
boxSpacingzSpace between the boxesboxOutlineColorz)Colour used to outline the boxes (if any)boxOutlineWidthz!Width of the box outline (if any)leftPaddingzPadding on left of drawingrightPaddingzPadding on right of drawing
topPaddingzPadding at top of drawingbottomPaddingzPadding at bottom of drawing
backgroundz0Colour of the background to the drawing (if any)sourceLabelTextz/Text used for the 'source' label (can be empty)sourceLabelOffsetsourceLabelFontNamez(Name of font used for the 'source' labelsourceLabelFontSizez Font size for the 'source' labelsourceLabelFillColorz0Colour ink for the 'source' label (bottom right)c                 C   s   d| _ d| _t| _t| _tddd| _tddd| _	d	| _
d	| _d
t | _dt | _t| _t| _d| _dt | _dt | _dt | _t| _d| _d| _d| _d| _d| _d | _d| _dt | _d| _d| _t| _ d S )NzHelvetica-Bold
   g?g?g?g?gSSSSSS?g?   gQ?gRQ?g(\?g?g\(\?g333333?   zSource: ReportLabg?zHelvetica-Oblique   )!r   r   r   r   r   r   r   Colorr   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   )self r3   `/var/www/html/hyperkenya/venv/lib/python3.10/site-packages/reportlab/graphics/charts/slidebox.py__init__,   s8   






zSlideBox.__init__c                 C   sj   | j | j }| j dkr|| j d | j  }|| j | j }| j| j }|| j | j | j	 | j
 }||fS )N   )r   r   r    r#   r$   r   r   r%   r&   r)   r+   )r2   txtyr3   r3   r4   _getDrawingDimensionsJ   s   zSlideBox._getDrawingDimensionsc              
   C   sJ   | j d }| j}| j}g }td|D ]}|t||d|d | q|S )Nr6   r   )r   r   r   rangeappendr   linearlyInterpolatedColor)r2   	numShadesfillColorStartfillColorEnd
colorsListir3   r3   r4   
_getColorsR   s   
zSlideBox._getColorsNc                 C   s,   |s|   \}}t||}||   |S N)r9   r   adddraw)r2   drawingr7   r8   r3   r3   r4   demo]   s
   
zSlideBox.democ           
      C   s  t  }| j| jd  | j | j }| jr,|  \}}|t| j	 | ||d d| jd t
| jjjd }|dkr;d}|| j }|  }d}td| jD ]k}t }||_d|_| j|_| j|_d|_d|_|| |_||d  |_d |_d|_|| |t|d| j| j| j| j d d |t!|| jd	  | j| d	 t"|d | j#| j$d
| j| jd || j | j% }qL| j&| j }	| j&dkr|	| j&d | j%  }	|	| jd  }	|t'| j(| j)| j*|	| j| jd  |	| j+d  | j| jd  |	| j+d  | j| jd  |	| j| jd  gd |t'| j(| j)| j*|	d| jd  |	| j+d  d| jd  |	| j+d  d| jd  |	d| jd  gd | j,d krf|t!|| j% d| jd  | j | j | j,| j-d| j.| jd |/| j	| |S )N   r   )strokeColorstrokeWidth	fillColorg     @@g`"?vertical   r6   g       @middle)textrK   rI   
textAnchorfontNamefontSize)rI   rJ   rK   pointsend)rO   rK   rP   rQ   rR   )0r   r&   r   r)   r+   r'   r9   rD   r	   r#   r   r   faceascentr   rB   r:   r   r   xyr   widthr   heightorientationr=   r>   r?   rI   rJ   r!   r"   r   strr   r   r    r   r   r   r   r   r   r(   r,   r*   shift)
r2   gysrW   rX   rV   r@   fsrxtr3   r3   r4   rE   d   s   





&zSlideBox.drawr3   rC   )__name__
__module____qualname____doc__AttrMapAttrMapValueisStringisNumberisColorOrNoneisColorisIntisNumberOrNoneisNoneOrString_attrMapr5   r9   rB   rG   rE   r3   r3   r3   r4   r      s    	

r   __main__slidebox)fnRootN)reportlab.libr   reportlab.lib.colorsr   r   reportlab.graphics.shapesr   r   r   r   r	   reportlab.graphics.widgetbaser
   reportlab.lib.attrmapreportlab.lib.validatorsreportlab.lib.unitsr   reportlab.pdfbase.pdfmetricsr    reportlab.graphics.widgets.gridsr   r   rc   drG   saver3   r3   r3   r4   <module>   s     -