a
    ¦¾dez  ã                   @   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   úV/var/www/sistema_ama/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 }qÀq |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