
    BPc                         d Z ddlZddlmZ g dZd Z ed          Z ee edd                    Z	 ee ed	d
                    Z
 G d de          ZdS )zD
Renderer for Code128/EAN128 codes. Designed for use with Inkscape.
    N   )Barcode)l110110011001100110110011001100110100100110001001000110010001001100100110010001001100010010001100100110010010001100100010011000100100101100111001001101110010011001110101110011001001110110010011100110110011100101100101110011001001110110111001001100111010011101101110111010011001110010110011100100110111011001001110011010011100110010110110110001101100011011000110110101000110001000101100010001000110101100010001000110100010001100010110100010001100010100011000100010101101110001011000111010001101110101110110001011100011010001110110111011101101101000111011000101110110111010001101110001011011101110111010110001110100011011100010110111011010001110110001011100011010111011110101100100001011110001010101001100001010000110010010110000100100001101000010110010000100110101100100001011000010010011010000100110000101000011010010000110010110000100101100101000011110111010110000101001000111101010100111100100101111001001001111010111100100100111101001001111001011110100100111100101001111001001011011011110110111101101111011011010101111000101000111101000101111010111101000101111000101111010100011110100010101110111101011110111011101011110111101011101101000010011010010000110100111001100011101011c                     t          |           }|D ]$}|                    t          |                     %|                    d           |                    d           |                    d           |S )zMaps the data into the charsFNC3FNC2SHIFT)listappendchr)datacharsresultchars       1/usr/share/inkscape/extensions/barcode/Code128.py	map_extrar}      sr    $ZZF ! !c$ii    
MM&
MM&
MM'M    z@ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_   `      c                   D    e Zd ZdZd Zed             Zed             ZdS )Code128z5Main barcode object, generates the encoding bits herec                    g }d}t          j        d|          D ]^}t          |          dk    r||z   }|r*|                    |                     |                     d}|                    d|g           _|r/|                    t
                              |                     d}t
                              |          S )N z(?:(?:\d\d){2,})|(?:^\d\d)|.r   C)refindalllenrv   
best_blockr   encode_blocks)selftextblocksblockdatums        r|   encodezCode128.encode   s    
 Z ?FF 	, 	,E5zzQ MM$//%"8"8999EsEl++++ 	MM',,U33444E$$V,,,r~   c                 D    t          d | D                       rd| gS d| gS )z0If this has characters above 63, select B over Ac              3   <   K   | ]}t          |          d k    V  dS )?   N)ord).0xs     r|   	<genexpr>z%Code128.best_block.<locals>.<genexpr>   s,      **qs1vv{******r~   BA)any)r   s    r|   r   zCode128.best_block   s7     **E***** 	 <U|r~   c                    d}d}d}| D ]}|d         }|d         d}|dk    rd}n|dk    rd}n|dk    rd	}|}|rd
|z
  }nd}|||z  z   }|t           |         z   }|dz  }|dv r]t          }|dk    rt          }D ]E}	||                    |	          |z  z   }|t           |                    |	                   z   }|dz  }Ffdt	          dt                    d          D             D ]9}	|t          |	          |z  z   }|t           t          |	                   z   }|dz  }:|dz  }
|t           |
         z   }|t           d         z   }|t           d         z   }|S )z,Encode the given blocks into A, B or C codesr   r   r   r   g   r   h   r   i      )r   r   c              3   2   K   | ]}||d z            V  dS )   N )r   ir   s     r|   r   z(Code128.encode_blocks.<locals>.<genexpr>   s0      OO!U1q1u9-OOOOOOr~   r   j   k   )CODE_MAPCHAR_BCHAR_Aindexranger   int)r   r   totalposr   b_setnumr   ry   r{   checksumr   s              @r|   r   zCode128.encode_blocks   s     '	 '	E!HE!HE C||##A CiC!GOEhsm+F1HC
""C<<"E!  D!U[[%6%6%<=E#hu{{4/@/@&AAF1HCC
 POOOuQE

A7N7NOOO  D!SYY_5E#hs4yy&99F1HCC
 3;(8,,(3-'(3-'r~   N)__name__
__module____qualname____doc__r   staticmethodr   r   r   r~   r|   r   r      s_        ??- - -,   \ 4 4 \4 4 4r~   r   )r   r   Baser   r   r}   ru   CHAR_ABr   r   r   r   r   r~   r|   <module>r      s   .  
			      m m m`   $V
W
W	7EE!RLL	)	)	7EE"cNN	+	+U U U U Ug U U U U Ur~   