HEX
Server: Apache
System: Linux opal14.opalstack.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
User: curbgloabal_opal (1234)
PHP: 8.1.29
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/share/inkscape/extensions/render_barcode_datamatrix.pyo
�
��Yc@sdZddlZddlZddlmZidVd6dWd6dXd	6dYd6dZd
6d[d6d\d6d]d6d^d6d_d6d`d6dad6dbd6dcd6ddd!6ded#6dfd%6dgd'6dhd)6did+6djd-6dkd/6dld16dmd36dnd56dod66dpd76dqd86drd96dsd:6Zd;�Zd<�Zd=�Zd>�Z	d?�Z
d@�ZdA�ZdB�Z
dC�ZdD�ZdE�ZdF�ZdG�ZdH�ZdI�ZdJ�ZdK�ZdL�ZdM�ZdN�ZdO�ZdP�ZdQ�ZdR�ZdSejfdT��YZe dUkre�Z!e!j"�ndS(ts�
Copyright (C) 2009 John Beard john.j.beard@gmail.com

######DESCRIPTION######

This extension renders a DataMatrix 2D barcode, as specified in
BS ISO/IEC 16022:2006. Only ECC200 codes are considered, as these are the only
ones recommended for an "open" system.

The size of the DataMatrix is variable between 10x10 to 144x144

The absolute size of the DataMatrix modules (the little squares) is also
variable.

If more data is given than can be contained in one DataMatrix,
more than one DataMatrices will be produced.

Text is encoded as ASCII (the standard provides for other options, but these are
not implemented). Consecutive digits are encoded in a compressed form, halving 
the space required to store them.

The basis processing flow is;
    * Convert input string to codewords (modified ASCII and compressed digits)
    * Split codewords into blocks of the right size for Reed-Solomon coding
    * Interleave the blocks if required
    * Apply Reed-Solomon coding
    * De-interleave the blocks if required
    * Place the codewords into the matrix bit by bit
    * Render the modules in the matrix as squares

######LICENCE#######
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

######VERSION HISTORY#####
    Ver.       Date                       Notes
    
    0.50    2009-10-25  Full functionality, up to 144x144.
                        ASCII and compressed digit encoding only.
i����N(tcomputePointInNodei
tsq10itsq12itsq14itsq16itsq18itsq20itsq22itsq24itsq26i tsq32i$tsq36i(tsq40i,tsq44i0tsq48i4tsq52i@tsq64iHtsq72iPtsq80iXtsq88i`tsq96ihtsq104ixtsq120i�tsq132i�tsq144itrect8x18trect8x32t	rect12x26t	rect12x36t	rect16x36t	rect16x48c	Cs�|\}}t||�\}}}}}}	}
|dkoE|dksQt}nt}t|||	|
|�}g}
xJ|D]B}t|||||f�}|
jt|||||��q|W|
S(Ni�(tget_parameterstFalsetTruet
get_codewordst
place_bitstappendtadd_finder_pattern(ttextt.1tnrowtncolt	data_nrowt	data_ncoltreg_rowtreg_coltndtnctintertsize144t	codewordst
module_arraystcodeword_streamt	bit_array((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pytencodebs	$	
#c%Csi|dkr|dkrd4S|dkr8|dkr8d5S|dkrT|dkrTd6S|d	krp|d	krpd7S|d
kr�|d
kr�d8S|dkr�|dkr�d9S|dkr�|dkr�d:S|dkr�|dkr�d;S|dkr�|dkr�d<S|dkr|dkrd=S|dkr4|dkr4d>S|dkrP|dkrPd?S|dkrl|dkrld@S|dkr�|dkr�dAS|dkr�|dkr�dBS|d!kr�|d!kr�dCS|d$kr�|d$kr�dDS|d&kr�|d&kr�dES|d'kr|d'krdFS|d(kr0|d(kr0dGS|d)krL|d)krLdHS|d,krh|d,krhdIS|d.kr�|d.kr�dJS|dkr�|dkr�dKS|dkr�|d
kr�dLS|dkr�|dkr�dMS|dkr�|dkr�dNS|dkr|dkrdOS|d	kr,|dkr,dPS|d	krH|dkrHdQStjtd3��td0�dS(RNi
iiiiiiiiiiiiii$ii,ii ii>iVi*i(iri0i�i8i�iDi4ifi@ii�iHi\iPiXi`ihi�iixi�i�i�iii1sUnrecognised DataMatrix size(iiiiiii(i
i
iiiii(iiiiii
i(iiiiiii(iiiiiii(iiiiiii(iiiiiii(iiiii$ii(iiiii,ii(iiiii>i$i(iiiiiVi*i(iiiiiri0i(iiiii�i8i(iiiii�iDi(iiiiifi*i(iiiii�i8i(iiiii\i$i(iiiiiri0i(iiiii�i8i(iiiii�iDi(iiiii�i8i(iiiii�iDi(iiiii�i>i(iiiiiii(iiiiiii(iiiii
ii(i
iiiiii(i
iiiiii(iiiii ii(iiiii1ii(tinkexterrormsgt_texittNone(R(R)((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pyR~s~
cCsUt|�}|sat|||�}t||�}t|||�}t||||t�}n�t|d�}x�tt|��D]�}d}d}d}||dd	!}t|g|�}t|||�}d}d}d}||d
}	t|	g|�}	t|	||�}	|}
|
j|	�t|
d||t	�}
|
d||<q�W|S(Niii�i>iii�i
i�i�(
tencode_to_asciitpartition_datat
interleavetreed_solomontcombine_interleavedR trangetlentextendR!(R&R.R/R0R1tdatatdata_blockstitblock1tblock2tblocks((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pyR"�s2
cCs�|dkr|Sg}x�|D]�}t|�|}gt|�D]}dg|^q@}xEt|�D]7}x.t|�D] }|||||||<qyWqfW|j|�qW|SdS(Nii(RBtxrangeRARC(RIR0tresulttblocktblock_lengthRFtinter_blockstj((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pyR>s
&"cCs�|dkr|Sg}x�tt|�|�D]�}g}|rNd}d}	n||}||}	x9t|�D]+}
|j||||
||
|�qoWx=t|	�D]/}
|j||||
|||
|�q�W|j|�q-W|SdS(Niiil(RARBR$(RIR0R.R/R1RKRFtdata_codewordstnd_rangetnc_rangeRO((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pyR@s 	

)-cCs0t|�dkr(t|�dkr(tStSdS(Ni0i9(tordR!R (tchar((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pytis_digit0s$cCs�g}d}x�|t|�kr�t||�r�|t|�dkr�t||d�r�t||||d�d}|j|�|d}q|jt||�d�|d}qW|S(Niii�i(RBRUtintR$RS(R&tasciiRFtcodeword((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pyR<7s: 

cCs�d}g}d}x�|t|�kr�t|�||krb|j||||!�||}q||t|�!}t|�}t}xRt|�|kr�|s�|j|�t}n|jt||��|d}q�W|j|�PqW|S(Ni�ii(RBR$R R!trandomise_pad_253(RDtrs_datatPAD_VALRERFt
data_blocktpad_postpadded((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pyR=Ls&

	
cCs8d|dd}||}|dkr,|S|dSdS(Ni�i�ii�((t	pad_valuetpad_positiontpseudo_random_numbert
randomised((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pyRYgs

cCsB|dks|dkrdS||||||d}|SdS(Nii((txtytlogtalogtgfRK((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pytprodrscCs�dg|}dg|}d||d<d|d<x`td|�D]O}||dd||<|||kr�|||A||<n||||<qBW||fS(Niii(RA(RgtppReRfRF((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pytgen_log_alog{s


cCs�dg|d}d|d<x�td|d�D]�}||d||<|d}xJ|dkr�||dt|||||||�A||<|d}qTWt|d|||||�|d<q/W|S(Nii(RARh(R/ReRfRgtcRFRO((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pytgen_poly_coeffs�s

0(c
Cs�d}d}t||�\}}t||||�}x�|D]�}|jdg|d�xtd|�D]n}	||||	A}
xStd|�D]B}|||dt|
|||d|||�A|||<q�WqkW|j�q=W|S(Nii-ii(RjRlRCRARhtpop(RDR.R/RgRiReRfRkRLRFtkRO((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pyR?�s
DcCs|d|?dS(Nii((tbytetbit((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pyRp�scCsp|dkr/||}|d|dd}n|dkr^||}|d|dd}n||||<dS(Niii((tarrayR(R)trowtcolRp((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pytmodule�s

c	Cs4t||||ddt|d��t||||ddt|d��t||||ddt|d��t|||d|dt|d��t|||d|dt|d��t|||d|dt|d��t|||d|dt|d��t|||d|dt|d	��dS(
Niiiiiiiii(RtRp(RqR(R)RT((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pytcorner1�s&&&&&&&c	Cs4t||||ddt|d��t||||ddt|d��t||||ddt|d��t|||d|dt|d��t|||d|dt|d��t|||d|dt|d��t|||d|dt|d��t|||d|dt|d	��dS(
Niiiiiiiii(RtRp(RqR(R)RT((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pytcorner2�s&&&&&&&c	Cs4t||||ddt|d��t||||ddt|d��t||||ddt|d��t|||d|dt|d��t|||d|dt|d��t|||d|dt|d��t|||d|dt|d��t|||d|dt|d	��dS(
Niiiiiiiii(RtRp(RqR(R)RT((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pytcorner3�s&&&&&&&c	Cs8t||||ddt|d��t||||d|dt|d��t|||d|dt|d��t|||d|dt|d��t|||d|dt|d��t|||d|dt|d��t|||d|dt|d��t|||d|dt|d	��dS(
Niiiiiiiii(RtRp(RqR(R)RT((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pytcorner4�s&*&&&&&c	Cs@t||||d|dt|d��t||||d|dt|d��t||||d|dt|d��t||||d|dt|d��t||||d|t|d��t|||||dt|d��t|||||dt|d��t|||||t|d��dS(	Niiiiiiii(RtRp(RqR(R)RrRsRT((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pytutah�s****&&&c
Csb|\}}d}gt|�D]}|g|^q}d}d}d}	x�tr�||kr�|	dkr�t|||||�|d}n||dkr�|	dkr�|dr�t|||||�|d}n||dkr)|	dkr)|ddkr)t|||||�|d}n||dkry|	dkry|ddkryt|||||�|d}nx�tr||kr�|	dkr�|||	|kr�t|||||	||�|d}n|d}|	d}	|dko|	|ks|Pq|q|W|d}|	d}	x�tr�|dkr|	|kr|||	|krt|||||	||�|d}n|d}|	d}	||ko�|	dks#Pq#q#W|d}|	d}	||kp�|	|ksMPqMqMW||d|d|kr^d||d|d<d||d|d<d||d|d<d||d|d<n|S(Niiiiii(RJR!RuRvRwRxRy(
RDR'R(R)tINVALIDRFRqRTRrRs((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pyR#s^	&	
&
,
,
	,




	,




cCs�|d|}|d|}gt|�D]}dg|^q)}xct|�D]U}xLt|�D]>}	d||	||d<|	d||	||d|d<qbWqOWxgt|�D]Y}xPt|�D]B}	d|||d|d|	<|	dd|||d|	<q�Wq�Wxut||�D]c}xZt||�D]H}	|	dd|	|}
|dd||}|||	|||
<q:Wq#W|S(Niii(RJRA(RqR*R+R,R-R(R)RFt
datamatrixROtdest_coltdest_row((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pyR%Cs"&*&c
Cs�|\}}|\}}idd6dd6dd6}itj|�d6t|�d6t|�d	6t|�d
6t|�d6}tjj|tjdd
�|�}	dS(Ntnonetstroket1sstroke-widths#000000tfilltstyletheighttwidthRcRdtrecttsvg(tsimplestyletformatStyletstrR7tetreet
SubElementtaddNS(
t.0R'tparenttwthRcRdR�tattribstcirc((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pytdraw_SVG_squareds




c	Cs�x�tt|��D]�}t||�}t||d�}x�t|�D]�}x�t|�D]{}||||dkr�t||f||||||f|�q]||||dkr]tjtd��q]q]WqJWqWdS(Niis!Invalid bit value, this is a bug!(RARBR�R7R8R9(	R3tsizetspacingR�RFR�R�RdRc((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pytrender_data_matrixus/t
DataMatrixcBseZd�Zd�ZRS(c
Cs�tjj|�|jjddddddddd	�|jjd
dddddddd�|jjd
dddddddd�|jjddddddddd�|jjddddddddd�dS(Ns--texttactiontstorettypetstringtdesttTEXTtdefaulttInkscapes--symboltSYMBOLts--rowsRVtROWSi
s--colstCOLSs--sizetSIZEi(R7tEffectt__init__tOptionParsert
add_option(tself((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pyR��s 



cCsI|jd�}|j}|j}|j}|jdkrm|jtkrmt|jd}t|jd}n|jdkr�tjt	d��n�t
tt|j
�|j��}dt|�d|}d}i|tjd	d
�6|d6}tjj|jd|�}	t|j||f�}
t|
|j||jd
|	�dS(Nt1pxR�iisPlease enter an input stringt	translates
 scale(%f)R�tlabeltinkscapet	transformtgg�?(tunittouutoptionsR�R�R�tsymbolsR�R7R8R9ttupleRtlisttview_centert
current_layerR�R�R�R�R6R�R�(R�tscaletsotrowstcolstcentret
grp_transformtgrp_nametgrp_attribstgrptencoded((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pyteffect�s"			!
(t__name__t
__module__R�R�(((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pyR��s	t__main__(i
i
(ii(ii(ii(ii(ii(ii(ii(ii(i i (i$i$(i(i((i,i,(i0i0(i4i4(i@i@(iHiH(iPiP(iXiX(i`i`(ihih(ixix(i�i�(i�i�(ii(ii (ii(ii$(ii$(ii0(#t__doc__R7R�tsimpletransformRR�R6RR"R>R@RUR<R=RYRhRjRlR?RpRtRuRvRwRxRyR#R%R�R�R�R�R�tetaffect(((s;/usr/share/inkscape/extensions/render_barcode_datamatrix.pyt<module>5s|
			U	.														
	
	
			B	!		1