%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /lib/python3/dist-packages/reportlab/graphics/barcode/__pycache__/
Upload File :
Create Path :
Current File : //lib/python3/dist-packages/reportlab/graphics/barcode/__pycache__/ecc200datamatrix.cpython-312.pyc

�

��d�E���dZidd�dd�dd�dd�d	d
�dd�d
d�dd�dd�dd�dd�dd�dd�dd�dd�dd �Zd!Zd"Zd#d$lmZGd%�d&e�Zy')()�ECC200datamatrix�)���0��o�>�)��D�����\��
)
��������t��n�=�)���������'��<�a�xr )�)���[r�*���r&��d���)�r&���_�	��wr�-���Srr;)r=��r0r#��K�Br��r.�m��^r��r�Zr?�)rr>��r7���Gr"�r?�r)���O�l�R��r<�r)�4��XrrCr#������rr[rZrrUr�|r ���`�2�r)�����+r&rKra�grT�%���5r@�"��y�rrr.��r'rirJr"�]r�$)$r$�r1�����r_�fr'�T���r]�P���r;rL�r�!�e�r6r9�s�,rr`�;�rF�b�Q�pr,)*�Mrcr����&�r)��i�zrLr$�r1�rr6r0r7�r���r�9rnrZ�rOr��6r�r���Erb����rr7rr)0r$�rUrra� �ur���r�r�rerr?���W��j���vr
rhrGrjr�rXr'r0rArr<rrRr�rYr��r�rMrr�r.rrOrFr��8)8rr7rr�r ror|��r0�rrj��r4����r��rsrr���r�r�r�ru��r���r���rr�r�r���r�r����
r�r$rt�Cr�rr[rfr��krJrk��.r)>r1rr�rbr��r#r�r�r?r��r�rQ��rhrr�r
r�r$�?r\rWrwr�r��r�@�rrK�r�r��rSru�3r�r�r�(rvr?ro�r�rYrjr�r�r�r	rEr��r^�V�/r��r)Dr|r��Yr]�r�r�r�r�r�rI�rs�Irtr.rqr�r�r\r*r�rr�rrr.rrM����rA�r)rr�r�r{r�r|r�rar�rerqr��r_rBr�rVrUr��1r�rdr�r�r�rQr)r�r�rargrRr<(i���rr�rrLrFrBrk�r�r�r�r1rfr�r�r�r>r#r�r�r�r
r���r�r
�7r�rdr�r��r�rar���r�rgr�Nr��}�r�r�rxrIr<rpr�r:�crr�r�r�r9r)����r�r+r��Lr|��r\rr&r`r(rsrrOrr�hrcrr�rP�rQ��~rNrqrlr7�J�r�r�rzr$r�r�r�r-r�r_rWr�rXr0r�r�rerbr�r�r�r2r�r'�r�rr.r�r�r�r�rrrYr	r�r�r^r�ryrur6��rGr �r�rrr{r,��rhr�r�rVrr�r�rJr�r�r�rSr!�qr���r�r*r}r�rUr�rCrrrrtr�r�rAr�r4�#r5r�r@��r�r=r�r�r�r�Urj��ArTrr?r�rr8r�r�rR�Hr~r�r�r]r�r/r�rir�rErM�{�r�r�rZr�r�r�r��:r��r;rr�rrornr�rDr�r[r�rm�Fr�rwr"rKr�r3r�r%r�rvrrHrrr�r�r�(r�rLr�r�r�r�r�r�r:rGr�r�rr�r�rrrer�r�r]r�r[rSr�rQr�r8r
r�rr`rrr<r�r/r�r�r7r;rsr�rr�r�rVr�r�rpr�rr|r�r	r2rr�r�r�r�r�r>r�r�r�rcrr�r�rFr�r�r�r�r+r~r�rvr(rRr�r�r�rr6rWr�rxr�r�r�r�r�r5r.r�r�rr�rkr�r�r�r#r�r3rZr,rzr"r�rwr�r�r�r�r�r�r�r�rr�rOr�r�rfr�rUr�r�rmrr�rr�r�rXrYr�r�r�rbr0r�r�r�rTr�r�rJrrdr�r�r�r�r$r�r�r�r�rDr�rEr?r�rjrnr1r�r�r=rr&r!r�rtrr�r�r�ryr�r_rKr-r�r�r�r�rgr�r�rPr*rorlrrqrr�rIr\r�r�r�r�rr�rNrr�r%r'rrr�r�r
r�rAr�rhr�rrrrHr�r}rMrCrur)r�rr^rr�rir�r�r rrrar4r�r9r�rBr�r{r@r�r��)�Barcodec��eZdZdZdZd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zy)�ECC200DataMatrixaThis code only supports a Type 12 (44x44) C40 encoded data matrix.
    This is the size and encoding that Royal Mail wants on all mail from October 1st 2015.
    see https://bitbucket.org/rptlab/reportlab/issues/69/implementations-of-code-128-auto-and-data
    r�c��tj|g|��i|��d|_d|_d|_d|_d|_d|_|j|jdzz
|_|j|j
dzz
|_	y)Nr�rLrr�)
r�__init__�row_modules�col_modules�row_regions�col_regions�cw_data�cw_ecc�row_usable_modules�col_usable_modules)�self�args�kwargss   �M/usr/lib/python3/dist-packages/reportlab/graphics/barcode/ecc200datamatrix.pyrzECC200DataMatrix.__init__as�������.�t�.�v�.�������������������"&�"2�"2�T�5E�5E��5I�"I���"&�"2�"2�T�5E�5E��5I�"I���c��d|_|jD]}t|�dkDs�d|_y|j|_y)Nr�rr)�valid�value�ord�	validated)r�cs  r�validatezECC200DataMatrix.validatens>����
����	(�A��1�v��|���
��	(�
"�Z�Z�D�Nrc�$�t|�}g}|dk(s|dk\r|dks
|dk\rV|dkrQ|dk(r|j|dz
�|S|dk\r|dkr|j|dz
�|S|j|dz
�|S|d	k\r)|d
kr$|jd	�|j|�|S|dk\r|dks
|d
k\rL|dkrG|jd�|dk\r|dkr|j|dz
�|S|j|dz
�|S|dk\r,|dkr'|jd�|j|dz
�|S|dk\rI|dkrD|jd�|jd�||jt|dz
��z
}|St	d|�d|�d���)Nr�rr�r�rGr�r�r�rr�r�r�r+r6r�r�rartrLr�rr�zCannot encode z (�))r�append�_encode_c40_char�chr�	Exception)r�char�o�encodeds    rrz!ECC200DataMatrix._encode_c40_charws�����I������7�q�B�w�1��7��R��A��G��B�w����q�2�v�&�2��1�b��Q�"�W����q�2�v�&�.��+���q�2�v�&�*��)�!�V��R���N�N�1���N�N�1��$��#�2�g�!�r�'�q�B�w�1��7��N�N�1���B�w�1��7����q�2�v�&������q�2�v�&����"�W��c���N�N�1���N�N�1�r�6�"����#�X�!�s�(��N�N�1���N�N�2���t�,�,�S��S��\�:�:�G����t�Q�?�@�@rc��g}|D]}||j|�z
}�t|�dzr |jd�t|�dzr� g}|jd�tdt|�d�D]L}|||dz}|ddz|ddzz|dzdz}|j|dz�|j|dz��N|jd	�t|�|jkDrtd
��t|�|jkrp|jd�t|�|jkrGdt|�dzzd
zdz}|jd|zd	z�t|�|jkr�G|S)Nr�rr�i@r�r�rL�rz4Too much data to fit into a data matrix of this sizerDr�rO)r�lenr�rangerr!)	rrr$r�	codewords�i�chunk�total�rs	         r�_encode_c40zECC200DataMatrix._encode_c40�s������	0�A��t�,�,�Q�/�/�G�	0��'�l�Q���N�N�1���'�l�Q���	�������q�#�g�,��*�	*�A��A�a��c�N�E��!�H�t�O�e�A�h��m�3�e�A�h�>��B�E����U�c�\�*����U�S�[�)�		*�	������y�>�D�L�L�(��R�S�S��y�>�D�L�L�(����S�!��i�.�4�<�<�/��S��^�a�/�0�C�7�1�<��� � �#��'�S��1��i�.�4�<�<�/��rc��||zS�N��r�int1�int2s   r�_gfsumzECC200DataMatrix._gfsum�s���d�{�rc�R�|dk(s|dk(rytt|t|zdzS)Nrr)�ALOGVAL�LOGVALr2s   r�
_gfproductzECC200DataMatrix._gfproduct�s/���1�9���	���F�4�L�6�$�<�7�3�>�?�?rc��t|}dg|z}|D]h}|j||d�}t|dz
dd�D]>}|j|||�||<|dkDs�!|j||dz
||�||<�@�j|j	�|S)z�
        This method is basically verbatim from "huBarcode" which is BSD licensed
        https://github.com/hudora/huBarcode/blob/master/hubarcode/datamatrix/reedsolomon.py
        r���r�)�FACTORSr5r(r9�reverse)r�data�num_code_words�
cw_factors�
code_words�	data_word�tmp�js        r�_get_reed_solomon_codez'ECC200DataMatrix._get_reed_solomon_code�s���
�^�,�
��S�>�)�
��	R�I��+�+�i��B��8�C��>�A�-�r�2�6�
R�� $����Z��]� C�
�1�
��q�5�$(�K�K�
�1�q�5�0A�:�a�=�$Q�J�q�M�
R�	R�	�����rc��|jd�}g}tdd�D]}|j||z	dz��|j�|S)Nrr�r�)�popr(rr=)rr>r�bitsr*s     r�_get_next_bitszECC200DataMatrix._get_next_bits�sK�����������q�!��	(�A��K�K���
�Q��'�	(������rc���|dkr'||jz
}|d|jdzdzz
z
}|dkr'||jz
}|d|jdzdzz
z
}||j||<y)Nrr�r�)rr�_matrix)r�row�col�bits    r�
_place_bitzECC200DataMatrix._place_bit�s�����7��4�*�*�*�C��A�$�1�1�A�5��:�;�<�C���7��4�*�*�*�C��A�$�1�1�A�5��:�;�<�C�!$����S��#�rc�V�|j|�}|j|jdz
d|d�|j|jdz
d|d�|j|jdz
d|d�|jd|jdz
|d�|jd|jdz
|d�|jd|jdz
|d�|jd|jdz
|d�|jd|jdz
|d�y)	Nr�rrLr�r�rr�r	�rIrOrr�rr>rHs   r�_place_bit_corner_1z$ECC200DataMatrix._place_bit_corner_1��
���"�"�4�(������/�/�!�3�Q��Q��@�����/�/�!�3�Q��Q��@�����/�/�!�3�Q��Q��@�����4�2�2�Q�6��Q��@�����4�2�2�Q�6��Q��@�����4�2�2�Q�6��Q��@�����4�2�2�Q�6��Q��@�����4�2�2�Q�6��Q��@rc�V�|j|�}|j|jdz
d|d�|j|jdz
d|d�|j|jdz
d|d�|jd|jdz
|d�|jd|jdz
|d�|jd|jdz
|d�|jd|jdz
|d�|jd|jdz
|d�y�	Nr�rrLr�r�rr�r	rQrRs   r�_place_bit_corner_2z$ECC200DataMatrix._place_bit_corner_2�rTrc�V�|j|�}|j|jdz
d|d�|j|jdz
d|d�|j|jdz
d|d�|jd|jdz
|d�|jd|jdz
|d�|jd|jdz
|d�|jd|jdz
|d�|jd|jdz
|d�yrVrQrRs   r�_place_bit_corner_3z$ECC200DataMatrix._place_bit_corner_3�rTrc�p�|j|�}|j|jdz
d|d�|j|jdz
|jdz
|d�|jd|jdz
|d�|jd|jdz
|d�|jd|jdz
|d�|jd|jdz
|d�|jd|jdz
|d�|jd|jdz
|d�y)	Nr�rr�rLr�rr�r	rQrRs   r�_place_bit_corner_4z$ECC200DataMatrix._place_bit_corner_4s���"�"�4�(������/�/�!�3�Q��Q��@�����/�/�!�3�T�5L�5L�q�5P�RV�WX�RY�Z�����4�2�2�Q�6��Q��@�����4�2�2�Q�6��Q��@�����4�2�2�Q�6��Q��@�����4�2�2�Q�6��Q��@�����4�2�2�Q�6��Q��@�����4�2�2�Q�6��Q��@rc���|j|�}|j|dz
|dz
|d�|j|dz
|dz
|d�|j|dz
|dz
|d�|j|dz
|dz
|d�|j|dz
||d�|j||dz
|d�|j||dz
|d�|j|||d�y)	NrLrr�r�r�rr�r	)rIrO)rr>rLrMrHs     r�_place_bit_standardz$ECC200DataMatrix._place_bit_standards����"�"�4�(������a���q��$�q�'�2�����a���q��$�q�'�2�����a���q��$�q�'�2�����a���q��$�q�'�2�����a���d�1�g�.�����S�1�W�d�1�g�.�����S�1�W�d�1�g�.�����S�$�q�'�*rc�P�|j}|j}|j||�|_d}d}	||k(r|dk(r|j	|�nq||dz
k(r|dk(r|dzr|j|�nM||dz
k(r|dk(r|dzdk(r|j
|�n&||dzk(r|dk(r|dzdk(r|j|�	||kr*|dk\r%|j||�|j|||�|dz}|dz
}|dks||k\rn�E|dz
}|dz
}	|dk\r*||kr%|j||�|j|||�|dz
}|dz}||k\s|dkrn�E|dz
}|dz
}||k\r||k\rn��:|jD]}td|�D]
}||��	d||<�� |jS)z�
        This method is heavily influenced by "huBarcode" which is BSD licensed
        https://github.com/hudora/huBarcode/blob/master/hubarcode/datamatrix/placement.py
        r�rrLr�r�r�)
rr�_create_empty_matrixrKrSrWrYr[r]r()rr>�rows�colsrLrMr*s       r�_create_matrixzECC200DataMatrix._create_matrixs��
�&�&���&�&���0�0��t�<���������d�{�s�a�x��(�(��.�����"�s�a�x�T�A�X��(�(��.�����"�s�a�x�T�A�X��]��(�(��.�����"�s�a�x�T�A�X��]��(�(��.����:�#��(�t�|�|�C�/@��/E�/M��,�,�T�3��<��q����q�����7�c�T�k���
�1�H�C��1�H�C���!�8��d�
�t�|�|�C�/@��/E�/M��,�,�T�3��<��q����q����$�;�#��'���
�1�H�C��1�H�C��d�{�s�d�{��K�N�<�<�	�C��1�d�^�
���q�6�>��C��F�
�	�
�|�|�rc���g}d}d}t|j|jz�}t|j|jz�}||jkr�||jkr`||z}||z}||||z}	tdt
|	��D]}
|	|
|||z|	|
<�|j|	�|dz
}||jkr�`d}|dz
}||jkr��|S�Nrr�)�intrr
rrr(r'r)r�matrix�regions�
col_offset�
row_offsetr`ra�r_offset�c_offset�regionr*s           r�_create_data_regionsz%ECC200DataMatrix._create_data_regionsYs�����
��
��4�*�*�T�-=�-=�=�>���4�*�*�T�-=�-=�=�>���4�+�+�+��t�/�/�/�%��,��%��,�����h��7���q�#�f�+�.�B�A� &�q�	�(�4��=� A�F�1�I�B����v�&��a��
��t�/�/�/��J��!�O�J��4�+�+�+��rc�V�g}td|�D]}|jdg|z��|S)Nr)r(r)rrLrMrfr*s     rr_z%ECC200DataMatrix._create_empty_matrixos3�����q�#��	(�A��M�M�4�&�3�,�'�	(��
rc�&�g}|D�]}|jt|j|jz�t|j|j
z��}t
|�D]&\}}t
|�D]\}}|||dz|dz<��(t
|�D]`\}}	|dk(rt
|	�D]\}}
|dzdz|	|<��*|dzt|�k(rt
|	�D]
\}}
d|	|<��Td|	d<|dz|	d<�b|j|���|S)Nr�rrLr;)	r_rer	rrr
�	enumerater'r)rrg�wrappedrlrfr*r`rDr>rLrMs           r�_wrap_data_regions_with_findersz0ECC200DataMatrix._wrap_data_regions_with_findersusE�����	#�F��.�.��D�$�$�t�'7�'7�7�8��D�$�$�t�'7�'7�7�8��F�
%�V�,�
,���4�(���,�G�A�t�'+�F�1�Q�3�K��!��$�,�
,�$�F�+�	
$���3���6�"+�C�.�-���3�"#�a�%�1���A��-���U�c�&�k�)�"+�C�.�#���3�!"��A��#��C��F��!�e�C��G�	
$�
�N�N�6�"�+	#�.�rc��g}tdt|�|j�D]a}||||jz}d}|t|d�ks�)g}|D]
}|||z
}�|j|�|dz
}|t|d�kr�9�c|Srd)r(r'r
r)rrg�mergedr*r+rD�
merged_rowrLs        r�_merge_data_regionsz$ECC200DataMatrix._merge_data_regions�s������q�#�g�,��(8�(8�9�	�A��A�a�� 0� 0�0�1�E��A��c�%��(�m�#��
� �)�C��#�a�&�(�J�)��
�
�j�)��Q����c�%��(�m�#�	��
rc��t|d�r|jS|j|j�}||j	||j
�z
}|j
|�}|j|�}|j|�}|j|�|_|jj�|jS)Nr$)�hasattrr$r.rrEr
rbrmrrrvr=)rr$rf�data_regionsrqs     r�encodezECC200DataMatrix.encode�s����4��#��<�<���"�"�4�>�>�2���4�.�.�w����D�D���$�$�W�-���0�0��8���6�6�|�D���/�/��8����������|�|�rc�|�|j|jz|_|j|jz|_yr0)r�barWidth�_heightr	�_width)rrs  r�computeSizezECC200DataMatrix.computeSize�s.���'�'�$�-�-�7����&�&����6��rc�"�t|j�D]w\}}t|�D]d\}}|s�	|j|j||jzz|j
||jzz|j|j��f�yyr0)rpr$�rect�xr|�y)rr�rLr�r>s     r�drawzECC200DataMatrix.draw�s|������-�	�F�A�s�$�S�>�
���4���I�I�����T�]�]�!2�2�����T�]�]�!2�2��
�
��
�
�	�
�	rN)�__name__�
__module__�__qualname__�__doc__r|rrrr.r5r9rErIrOrSrWrYr[r]rbrmr_rrrvrzrr�r1rrrrZs�����H�J�(� �D�@�@��$�	%�	A�	A�	A�	A�	+�9�v�,��8
�� 7�	rrN)�__all__r<r8r7�!reportlab.graphics.barcode.commonrrr1rr�<module>r�s��
��'���'��'�'��7�'��;�	'�
�?�'��G�
'��	$�'��	.�'��	:�'��	M�'��	-�'�$�	H�%'�*�	$�+'�2�	J�3'�:�	$�;'�D�	@�E'��R
��,��,6�c�w�cr

Zerion Mini Shell 1.0