
    BPc                     @   d Z ddlmZ i ddddddd	d
ddddddddddddddddddddddd d!d"d#i d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJZg dKZ edL          \  ZZZZ	Z
Z G dM dNe          ZdOS )PzM
Python barcode renderer for RM4CC barcodes. Designed for use with Inkscape.
   )Barcode(25)300505353510515253520515352515052535415053525515152525605251535705350535805351525915250535A15251525B15350525C05253515D05352515E05353505F15252515G15253505H15352505I25051535J25150535K25151525L35050535M35051525N35150525O25053525P25152515Q25153505R35052515S35053505T35152505U25251515V2535051525351505352505153525150535350505)WXYZ)ZUVWXY501234B6789AHCDEFGNIJKLMTOPQRS   c                   8    e Zd ZdZdZd Zed             Zd ZdS )Rm4sccz"Provice a Rm4scc barcode generator   c                    d}|                                 }|                    dd           |                    dd           d|z   t                              |          z   dz   }d}|D ] }|t          v r|t          |         z   }|dz  }!|S )N r   r       r   )upperreplacerW   checksumcharmap)selftextresultichars        0/usr/share/inkscape/extensions/barcode/Rm4scc.pyencodezRm4scc.encodeK   s    zz||S"S"TzFOOD111C7 	 	Dw'$-/Q    c                    d}d}| D ]}|t           v rt           |         ddd         }d}d}t          |d                   dz  r|dz  }t          |d                   dz  r|dz  }t          |d                   dz  r|dz  }t          |d                   dz  r|dz  }t          |d                   dz  r|dz  }t          |d                   dz  r|dz  }||dz  z  }||dz  z  }|dz  }|dz  }t          |         |         }|S )z2given a string of data, return the check characterr[         r      rU   )r_   intcheck)ra   total_lowertotal_upperrd   barslowerr\   	checkchars           re   r^   zRm4scc.checksum\   sJ     	% 	%Dwt}QqU+tAw<<!# QJEtAw<<!# QJEtAw<<!# QJEtAw<<!# QJEtAw<<!# QJEtAw<<!# QJE519$K519$KK!Aoq+&{3	rg   c                     dddd}|t           k    rd|d<   d|d<   nH|t          k    rd|d<   d	|d<   n2|t          k    rd	|d<   n!|t          k    rd
|d<   n|t          k    rd|d<   |S )z4Royal Mail Barcodes use a completely different stylerj   Tr[   )widthwritetoprU   rv      height      Fru   )	BAR_TRACKBAR_DOWNBAR_UPBAR_FULLWHITE_SPACE)r`   indexrb   s      re   	get_stylezRm4scc.get_style|   s    tA66IF5M F8hF5M!F8f__!F8h!F8k!!#F7Org   N)	__name__
__module____qualname____doc__default_heightrf   staticmethodr^   r    rg   re   rW   rW   F   sX        ,,N  "   \>    rg   rW   N)r   Baser   r_   rm   ranger{   r|   r}   r~   BAR_NONEr   rW   r   rg   re   <module>r      sT  &       ''' ' 	'
 ' ' ' ' ' ' ' ' ' ' '  !'" #' '$ %'& ''( )'* +', -'. /'0 1'2 3'4 5'6 7'8 9': ;'< ='> ?'@ A'B C'D E' 'F 
			M' ' 'R 	EDDAFq >Hfh+E E E E EW E E E E Erg   