a
    7Xhz                     @   s   d Z ddlZddlmZ ddlmZmZ ddlmZ ddl	m
Z
mZmZmZ ddlmZmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZ G dd deZe ZG dd deZe ZG dd deZG dd  d eZG dd deZdS )QrCodeWidget    N)Flowable)GroupRect)colors)isNumberisNumberOrNoneisColor	Validator)AttrMapAttrMapValue)Widget)mm)asUnicodeEx	isUnicode)	qrencoderc                   @   s   e Zd Zdd ZdS )isLevelc                 C   s   |dv S )N)LMQH selfxr   r   b/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/reportlab/graphics/barcode/qr.pytest"   s    zisLevel.testN)__name__
__module____qualname__r   r   r   r   r   r   !   s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )isUnicodeOrQRListc                 C   s&   t |rdS tdd |D r"dS dS )NTc                 s   s   | ]}t |tjV  qd S N)
isinstancer   QR).0vr   r   r   	<genexpr>*       z*isUnicodeOrQRList._test.<locals>.<genexpr>F)r   allr   r   r   r   _test'   s
    zisUnicodeOrQRList._testc                 C   s   |  |p| |S r!   )r)   ZnormalizeTestr   r   r   r   r   .   s    zisUnicodeOrQRList.testc                 C   s<   |  |r|S z
t|W S  ty6   td| Y n0 d S )NzCan't convert to unicode: %r)r)   r   UnicodeError
ValueErrorr   r   r   r   	normalize1   s    

zisUnicodeOrQRList.normalizeN)r   r   r   r)   r   r,   r   r   r   r   r    &   s   r    c                   @   s   e Zd ZejfddZdS )SRectc              
   C   s   t j| |||||d dd d S )Nr   )	fillColorZstrokeColorZstrokeWidth)r   __init__)r   r   ywidthheightr.   r   r   r   r/   ;   s    zSRect.__init__N)r   r   r   r   blackr/   r   r   r   r   r-   :   s   r-   c                   @   s   e Zd ZdZe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dZdZdZejZdZdZde Zde ZdZdZdZdZdddZdd Zdd ZdS )r   r#   zQRCode data)desczx-coordzy-coordz	bar colorzWidth of bars.zHeight of bars.zWidth of QR border.zQR Code level.zQR Code version. None for autozWidth of bar borders.zColor of bar borders.)ZBASEvaluer   r0   barFillColorbarWidth	barHeight	barBorderbarLevel	qrVersionbarStrokeWidthbarStrokeColorr   N       r   Hello Worldc                 K   s   t || _| D ]\}}t| || qttj| j}t	| j
|| jd< t| jrd| | j n| jr| jD ]}| | qpd S )Nqr)r    r,   r5   itemssetattrgetattrr   QRErrorCorrectLevelr:   QRCoder;   __dict__r   addDatar   r5   kwkr%   Zec_levelr   r   r   r/   \   s    

zQrCodeWidget.__init__c                 C   s   | j | d S r!   rA   rH   r   r5   r   r   r   rH   k   s    zQrCodeWidget.addDatac              	   C   s6  | j   t }| j}| j}| j}| j}| j}| j}|	t
||||d d | j  }tt||}	|	||d   }
|||	 d  }||	| d  }t| j jD ]\}}tt|}d}t|D ]n\}}|}tt|}|r&|| |
 }|| d |
 }t
|| || | ||
 |
|d}|	| ||7 }qq|S )N)r.          @r      )rA   maker   r6   r9   r7   r8   r   r0   addr-   getModuleCountfloatmin	enumeratemodulesmapbool	itertoolsgroupbylenlist)r   gcolorborderr1   r2   r   r0   moduleCountZminwhZboxsizeZoffsetXZoffsetYrrowctttisDarkcountsr   r   r   drawn   s:    



zQrCodeWidget.draw)r@   )r   r   r   ZcodeNamer   r   r   r    r   r	   r   r   Z_attrMapr   r0   r   r3   r6   r=   r<   r   r8   r7   r9   r:   r;   r5   r/   rH   ri   r   r   r   r   r   ?   s:   











c                   @   sN   e Zd Zde Zde ZdZdZdZdZ	dddZ
dd Zd	d
 Zdd ZdS )QrCoder>   r?   r   Nc                 K   s   t || _| D ]\}}t| || qttj| j}t	| j
|| _t| jr`| | j n| jr|| jD ]}| | qld S r!   )r    r,   r5   rB   rC   rD   r   rE   qrLevelrF   r;   rA   r   rH   rI   r   r   r   r/      s    

zQrCode.__init__c                 C   s   | j | d S r!   rL   rM   r   r   r   rH      s    zQrCode.addDatac              	   C   s   | j   | j  }| j}| j||d   }| j||d   }t| j jD ]\}}tt	|}d}t
|D ]^\}}	|}
tt|	}|
r|| | }| j|| d |  }| |||| |d  ||7 }qjqJd S )NrN   r   rO   g?)rA   rP   rR   qrBorderr1   r2   rU   rV   rW   rX   rY   rZ   r[   r\   rect)r   r`   r_   ZxsizeZysizera   rb   rc   rd   re   rf   rg   r   r0   r   r   r   ri      s     


zQrCode.drawc                 C   s   | j j||||ddd d S )Nr   rO   )Zstrokefill)Zcanvrm   )r   r   r0   whr   r   r   rm      s    zQrCode.rect)N)r   r   r   r   r2   r1   rl   rk   r;   r5   r/   rH   ri   rm   r   r   r   r   rj      s   
rj   )__all__rY   Zreportlab.platypus.flowablesr   Zreportlab.graphics.shapesr   r   Zreportlab.libr   Zreportlab.lib.validatorsr   r   r	   r
   Zreportlab.lib.attrmapr   r   Zreportlab.graphics.widgetbaser   Zreportlab.lib.unitsr   Zreportlab.lib.utilsr   r   Zreportlab.graphics.barcoder   r   r    r-   r   rj   r   r   r   r   <module>   s"   V