403Webshell
Server IP : 93.86.61.54  /  Your IP : 216.73.216.60
Web Server : Apache/2.4.62 (Ubuntu)
System : Linux rasin.ddns.net 6.8.0-124-generic #124~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue May 26 21:05:19 UTC x86_64
User : www-data ( 33)
PHP Version : 8.4.22
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/share/inkscape/extensions/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/inkscape/extensions/__pycache__/render_barcode_qrcode.cpython-310.pyc
o

0�ai��@sdZddlmZddlmZddlZddlmZmZmZm	Z	Gdd�de
�ZGdd	�d	e
�ZGd
d�de
�Z
Gdd
�d
e
�ZGdd�de
�ZGdd�de
�Ze��Gdd�de
�ZGdd�de
�ZGdd�de
�ZGdd�de
�ZGdd�dej�Zedkr�e���dSdS)z 
Provide the QR Code rendering.
�)�print_function)�productN)�Group�	Rectangle�Use�PathElementc@s�eZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zed'd(��Zed)d*��Zed+d,��Zd-S).�QRCode���cCs"d|_||_g|_g|_d|_dS)N�r)�
typeNumber�errorCorrectLevel�
qrDataList�modules�moduleCount)�self�
correction�r�7/usr/share/inkscape/extensions/render_barcode_qrcode.py�__init__&s

zQRCode.__init__cC�|jS�N�r�rrrr�
getTypeNumber-�zQRCode.getTypeNumbercCs
||_dSrr)rrrrr�
setTypeNumber0�
zQRCode.setTypeNumbercCs
g|_dSr�rrrrr�	clearData3rzQRCode.clearDatacCs|j�t|��dSr)r�append�
QR8BitByte�r�datarrr�addData6�zQRCode.addDatacC�
t|j�Sr)�lenrrrrr�getDataCount9rzQRCode.getDataCountcC�
|j|Srr�r�indexrrr�getData<rzQRCode.getDatacCs$|j||dur|j||SdS�NF)r)r�row�colrrr�isDark?s �z
QRCode.isDarkcCrr�rrrrr�getModuleCountCrzQRCode.getModuleCountcCs|�d|���dSr-)�_make�_getBestMaskPatternrrrr�makeFr%zQRCode.makecCsHd}d}td�D]}|�d|�t�|�}|dks||kr!|}|}q|S)Nr�T)�ranger3�QRUtil�getLostPoint)r�minLostPoint�pattern�i�	lostPointrrrr4Is
�zQRCode._getBestMaskPatterncs��jdd�_�fdd�t�j�D��_��dd����jdd���d�jd���������||��jdkrE��|�t	�
�j�j�j�}��
||�dS)N�r
csg|]}dg�j�qSrr1��.0r<rrr�
<listcomp>Ws�z QRCode._make.<locals>.<listcomp>r�)rrr7r�_setupPositionProbePattern�_setupPositionAdjustPattern�_setupTimingPattern�_setupTypeInfo�_setupTypeNumberr�_createDatar
r�_mapData)r�test�maskPatternr#rrrr3Ts$
�

�zQRCode._makecCs�tt|j��}dd�t|jddd�D�}t�|�}d}d}|D]P}|��|D]G}	td�D]@}
|j|	||
durnd}|t|�krM|||?d@dk}||	||
�rW|}||j|	||
<|d8}|d	krn|d7}d}q.q(q dS)
NcSs g|]}|dkr|dn|�qS)�rr)r@r/rrrrAp��z#QRCode._mapData.<locals>.<listcomp>rr���rB�F���)�listr7rr8�getMaskFunction�reverserr')rr#rK�rows�cols�maskFunc�	byteIndex�bitIndexr/r.�c�darkrrrrIms4�
����zQRCode._mapDatacCs�t�|j�}|D]B}|D]=}|j||durqtdd�D]+}tdd�D]#}|dkp=|dkp=|dkp=|dkp=|dko=|dk|j||||<q$qqqdS)NrN�rOr)r8�getPatternPositionrrr7)r�posr.r/�rrYrrrrD�s �����z"QRCode._setupPositionAdjustPatterncCs�tdd�D]n}tdd�D]f}||dks(|j||ks(||dks(|j||kr)qd|ko2dknr=|dkph|dkphd|koFdknoP|dkpP|dkphd|koZdknohd|kofdkn|j||||<qqdS)NrPr6rrLrOr>�r7rr)rr.r/r^rYrrrrC�s(&�.���z!QRCode._setupPositionProbePatterncCs�td|jd�D]}|j|ddurq|ddk|j|d<qtd|jd�D]}|jd|dur4q(|ddk|jd|<q(dS)Nr6rLrOrr_)rr^rYrrrrE�s�zQRCode._setupTimingPatterncCs�t�|j�}td�D]}|o||?d@dk|j|d|d|jdd<q
td�D]}|o8||?d@dk|j|d|jdd|d<q,dS)N�rr[r6)r8�getBCHTypeNumberrr7rr)rrJ�bitsr<rrrrG�s$�$��zQRCode._setupTypeNumbercCs"|jd>|B}t�|�}td�D]3}|o||?d@dk}|dkr)||j|d<q|dkr7||j|dd<q||j|jd|d<qtd�D];}|oT||?d@dk}|dkrf||jd|j|d<qH|dkrx||jdd|dd<qH||jdd|d<qH||j|jdd<dS)Nr[�rrLr6�	)r
r8�getBCHTypeInfor7rr)rrJrKr#rbr<�modrrrrF�s"
zQRCode._setupTypeInfocCs t�||�}t�}|D]}|�|��d�|�|��|�|��|�|�qtdd�|D��}|��|dkrCt	d|��|df��|��d|dkrS|�dd�|��ddkrh|�d�|��ddks[	|��|dkrrn|�t
jd�|��|dkr�n|�t
jd�qit
�
||�S)Nr>cs��|]}|��VqdSr)r(�r@�rsBlockrrr�	<genexpr>����z%QRCode._createData.<locals>.<genexpr>r6zcode length overflow. (%s>%s)rF)�RSBlock�getRSBlocks�	BitBuffer�put�getMode�	getLength�getLengthInBits�write�sum�	Exceptionr�PAD0�PAD1�_createBytes)rr
�	dataArray�rsBlocks�bufferr#�totalDataCountrrrrH�s6��
��zQRCode._createDatacCs�d}d}d}dgt|�}dgt|�}tt|��D]�}||��}||��|}	t||�}t||	�}dg|||<tt||��D]}
d|��|
|@|||
<qC||7}t�|	�}t|||�	�d�}|�
|�}
dg|�	�d||<tt||��D]}
|
|
�	�t||�}|dkr�|
�|�nd|||
<q�qtdd�|D��}dg|}d}t|�D]}
tt|��D]}|
t||�kr�|||
||<|d7}q�q�t|�D]}
tt|��D]}|
t||�kr�|||
||<|d7}q�q�|S)Nr�rcsrgr)�
getTotalCountrhrrrrjrkz&QRCode._createBytes.<locals>.<genexpr>)
r'r7r(r~�max�	getBufferr8�getErrorCorrectPolynomial�
Polynomialrqrf�getrt)r{rz�offset�
maxDcCount�
maxEcCount�dcdata�ecdatar^�dcCount�ecCountr<�rsPoly�rawPoly�modPoly�modIndex�totalCodeCountr#r+rrrrx�sT



 ��
����zQRCode._createBytescCsltj}t|d�}|�|�|�d���}tdd�D]}|t�|||�kr1|�	|�|�
�|Sqtd��)N�rrr�z&Couldn't get minimum QR Code length...)�Mode�MODE_8BIT_BYTErr$r,rqr7r8�getMaxLengthrr5�
ValueError)r#r
�mode�qr�lengthrrrr�getMinimumQRCode+s

�
�zQRCode.getMinimumQRCodeN)�__name__�
__module__�__qualname__rvrwrrrrr$r(r,r0r2r5r4r3rIrDrCrErGrF�staticmethodrHrxr�rrrrr"s6
	
%
5rc@seZdZdZdZdZdZdS)r�rrOr>r6N)r�r�r��MODE_NUMBER�MODE_ALPHA_NUMr��
MODE_KANJIrrrrr�:s
r�c@s,eZdZdZdZdZdZdZdZdZ	dZ
d	S)
�MaskPatternrrrOr[r>�rLrBN)r�r�r��
PATTERN000�
PATTERN001�
PATTERN010�
PATTERN011�
PATTERN100�
PATTERN101�
PATTERN110�
PATTERN111rrrrr�Asr�c@s�eZdZedd��Zgg�ddg�ddg�ddg�ddg�ddg�gd	��gd
��gd��gd��gd
��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd ��gd!��gd"��gd#��gd$��gd%��gd&��gd'��gd(��gd)��gd*��Zgd+�gd,�gd-�gd.�ggd/�gd0�gd1�gd,�ggd2�gd3�gd/�gd4�ggd5�gd6�gd7�gd8�ggd9�gd:�gd;�gd<�ggd=�gd9�gd>�gd?�ggd@�gdA�gdB�gdC�ggdD�gdE�gdF�gd:�ggdG�gdH�gdI�gdJ�ggdK�gdL�gdM�gdN�gg
ZedOdP��ZedQdR��ZedSdT��Z	edUdV��Z
dWZdXZdYZ
edZd[��Zed\d]��Zed^d_��Zd`S)ar8cCstj|dS�Nr)r8�PATTERN_POSITION_TABLErrrrr\MszQRUtil.getPatternPositionrLr`����")rLr��&)rL��*)rLr��.)rL��2)rLr��6)rL� �:)rLr��>)rLr�r��B)rLr��0�F)rLr�r��J)rLr�r��N)rLr��8�R)rLr�r��V)rLr�r��Z)rLr�r��H�^)rLr�r�r��b)rLr�r�r��f)rLr�r��P�j)rLr�r��T�n)rLr�r�r��r)rLr�r�r��v)rLr�r�r�r��z)rLr�r�r�r��~)rLr��4r��h�)rLr�r�r��l�)rLr��<r��p�)rLr�r�r�r��)rLr�r�r�r��)rLr�r�r�r�r��)rLr�r��Lr���)rLr�r�r�r���)rLr�r�r�r���)rLr�r�r�r�r��)rLr�r�r�r�r��)�)�r
�
)r���r6)��r�rB)r
r�rBr>)�M�/r�r�)�?r�r�r�)r��r��)�r��5r�)�e�=r�r�)r��#r�rc)�r�r�r�)�r�r�r�)�o�Cr�r�)r�r�r��)r}r�r��A)��r�r�r�)��Wr��%)r��@�,r�)iB��r�r�)�r�r��-)�r�r��$)ir��r��_)i%rr��K)���}r�r�)r��]r��')i�i�r�)im���r)i�r�r�)i(iO���)i�i�r�)i8�r�r�)���r�r�)i�i�i�)ii7���)ilr�r)i ��wr�cCsHddddd�|}tjdtjdtjdtjdi|}tj|d||S)NrrrOr[�rrr[rO)r�r�r�r�r�r8�
MAX_LENGTH)rr�r
�e�mrrrr��s��zQRUtil.getMaxLengthcCs4tdg�}t|�D]}|�tdt�|�g��}q	|Sr�)r�r7�multiply�QRMath�gexp)�errorCorrectLength�ar<rrrr��s
z QRUtil.getErrorCorrectPolynomialcCsXtjdd�tjdd�tjdd�tjdd�tjdd�tjdd�tjdd�tjd	d�i|S)
NcS�||ddkS�NrOrr�r<�jrrr�<lambda>��z(QRUtil.getMaskFunction.<locals>.<lambda>cSs|ddkSr'rr(rrrr*��cSs|ddkS�Nr[rrr(rrrr*�r,cSr&r-rr(rrrr*�r+cSs|d|dddkS�NrOr[rrr(rrrr*�scSs||d||ddkSr.rr(rrrr*�scSs ||d||dddkSr.rr(rrrr*�� cSs ||d||dddkS)Nr[rOrrr(rrrr*�r/)	r�r�r�r�r�r�r�r�r�)rKrrrrR�s&��zQRUtil.getMaskFunctionc
Cs$|��}d}t|�D]`}t|�D]Y}d}|�||�}tdd�D]=}||dks-|||kr.qtdd�D](}||dksA|||krBq3|dkrK|dkrKq3||�||||�kr[|d7}q3q|dkri|d|d7}qq
t|d�D]I}t|d�D]@}d}	|�||�r�|	d7}	|�|d|�r�|	d7}	|�||d�r�|	d7}	|�|d|d�r�|	d7}	|	dks�|	dkr�|d7}qyqqt|�D]L}t|d�D]C}|�||��r
|�||d��s
|�||d��r
|�||d��r
|�||d��r
|�||d��s
|�||d��r
|d	7}q�q�t|�D]N}t|d�D]D}|�||��r[|�|d|��s[|�|d|��r[|�|d|��r[|�|d|��r[|�|d|��s[|�|d|��r[|d	7}�q�qd}
t|�D]}t|�D]}|�||��rx|
d7}
�qk�qetd
|
||d�d}||d7}|S)
NrrPrOrr�r[r>rL�(�dr�r�)r2r7r0�abs)�qrcoderr=r.r/�	sameCountrZr^rY�count�	darkCount�ratiorrrr9�s���������������
����������zQRUtil.getLostPointi7i%iTcCsn|d>}t�|�t�tj�dkr.|tjt�|�t�tj�>N}t�|�t�tj�dks|d>|BtjAS)Nr�r)r8�getBCHDigit�G15�G15_MASK�r#�drrrres
��zQRUtil.getBCHTypeInfocCsh|d>}t�|�t�tj�dkr.|tjt�|�t�tj�>N}t�|�t�tj�dks|d>|BS)Nr�r)r8r8�G18r;rrrras
��zQRUtil.getBCHTypeNumbercCs(d}|dkr|d7}|dL}|dks|S�Nrrr)r#�digitrrrr8s�zQRUtil.getBCHDigitN)r�r�r�r�r\r�rr�r�rRr9r9r=r:rerar8rrrrr8Ls�
��������	�
���
������������������� �!�"�#�$�%�&�'�(�,�




I

r8c@s6eZdZdd�Zdd�Z	dd�Zdd�Zd	d
�ZdS)r!cCs:tj|_t|t�r|�dd�}t|t�std��||_dS)N�ascii�ignorezData must be in bytes!)	r�r�r��
isinstance�str�encode�bytesr�r#r"rrrrs


zQR8BitByte.__init__cCrr)r�rrrrrp"rzQR8BitByte.getModecCs|jD]}|�|d�qdS)Nr6)r#ro)rr{r<rrrrs*s
�zQR8BitByte.writecCr&r)r'r#rrrrrq.rzQR8BitByte.getLengthcCs�d|kr
dkrnntjdtjdtjdtjdi|jS|dkr2tjdtjdtjdtjdi|jS|d	krGtjd
tjdtjdtjdi|jStd|��)
Nrr�rdr6r�r�r�r�r�r��
ztype:%s)r�r�r�r�r�r�ru)r�typerrrrr1s2������zQR8BitByte.getLengthInBitsN)r�r�r�rrprsrqrrrrrrr!sr!c@s8eZdZdZdZedd��Zedd��Zedd��ZdS)r"NcCs�dgdt_td�D])}|dkrd|>ntj|dtj|dAtj|dAtj|dAtj|<q
dgdt_td�D]
}|tjtj|<q>dS)	Nr�r6rr>r�rLr})r"�	EXP_TABLEr7�	LOG_TABLE)r<rrr�_initRs��
��zQRMath._initcCs|dkr
td|��tj|S)Nrzlog(%s))rur"rJ��nrrr�glog_s
zQRMath.glogcCs:|dkr|d7}|dks|dkr|d8}|dkstj|S)Nrr}rH)r"rIrLrrrr#es��
zQRMath.gexp)	r�r�r�rIrJr�rKrNr#rrrrr"Ns

r"c@�FeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)r�rcCsXd}t|�}||kr||dkr|d7}||kr||dks||d�dg||_dSr>�r'�num)rrQ�shiftr�r�rrrrss�zPolynomial.__init__cCr)r)rQr*rrrr�zrzPolynomial.getcCr&rrPrrrrrq}rzPolynomial.getLengthc� d��fdd�t����D��S)N�,csg|]	}t��|���qSr)rCr�r?rrrrA�s�z'Polynomial.__repr__.<locals>.<listcomp>��joinr7rqrrrr�__repr__��
�zPolynomial.__repr__crS)NrTcs g|]}tt���|����qSr)rCr"rNr�r?rrrrA�rMz*Polynomial.toLogString.<locals>.<listcomp>rUrrrr�toLogString�rXzPolynomial.toLogStringc
Cs|dg|��|��d}t|���D]&}t|���D]}|||t�t�|�|��t�|�|���N<qqt|�Sr>)rqr7r"r#rNr�r�)rrrQr<r)rrrr!�s��zPolynomial.multiplycCs�|��|��dkr|St�|�d��t�|�d��}|jdd�}t|���D]}||t�t�|�|��|�N<q)t|��|�S�Nr)	rqr"rNr�rQr7r#r�rf)rrr7rQr<rrrrf�s (zPolynomial.modN)r)
r�r�r�rr�rqrWrYr!rfrrrrr�rs
r�c@s�eZdZggd��gd��gd��gd��gd��gd��gd��gd��gd	��gd
��gd��gd��gd
��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd��gd ��gd!��gd"��gd#��gd$��gd%��gd&��gd'��gd(��Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zed1d2��Z	ed3d4��Z
d5S)6rl)rr��)rr�r�)rr�rF)rr�rd)rrr�)rrr�)rrr�)rrr�)rr��7)rr�r)rOr�r
)rOr�rF)rr1r�)rOr�r�)rOr�r�)r>r�rd)rr�r�)rOr��+)rO�!rcrOr�r�)rOr^r�rOr�r�)rOr��D)r>r]r�)r>r]r[)r>r]rc)rOr�r�)r>�1�)rOr�r�r>r^rc)r>rrFrr0r�)rO�y�a)rOr�r�rOr�r)r>r0r`rOr�r[)r>r0r�rOr�rc)rOr��t)r[r�rrO�;r�)r>rr�r>r�r
)r>rr�r>r�rF)rOr�r_rOr��E)r>rfr]rr�r)rLr]r[rOrr�)rLr]rcrOrr�cCs||_||_dSr��
totalCount�	dataCount)rrhrirrrr�s
zRSBlock.__init__cCrr)rirrrrr(�rzRSBlock.getDataCountcCrr)rhrrrrr~�rzRSBlock.getTotalCountcCsd|j|jfS)Nz(total=%s,data=%s)rgrrrrrW�szRSBlock.__repr__c	Csrt�||�}t|�d}g}t|�D]$}||dd}||dd}||dd}|t||�g|7}q|S)Nr[rrrO)rl�getRsBlockTabler'r7)	rr
rir�rQr<r5rhrirrrrm�szRSBlock.getRSBlockscCsZtj|dddtj|dddtj|dddtj|dddd�|S)Nrr>rrOr[r)rl�RS_BLOCK_TABLE)rr
rrrrj�s��zRSBlock.getRsBlockTableN)r�r�r�rkrr(r~rWr�rmrjrrrrrl�s��	�
�������������� �!�"�#�&�'�(�)�,�-�.�/�2�3�4�5�8�9�:�;�>�?�@�A�D
rlc@rO)rnr�cCs||_dg|j|_d|_dSrZ)�
inclementsr{r�)rrlrrrrs
zBitBuffer.__init__cCrr�r{rrrrr�rzBitBuffer.getBuffercCrr)r�rrrrrrrzBitBuffer.getLengthInBitscCs"|j|dd|d?d@dkS)Nr6rBrrmr*rrrr�s"z
BitBuffer.getcCsb|jt|j�dkr|jdg|j7_|r(|j|jdd|jd?O<|jd7_dS)Nr6rr�r)r�r'r{rl)r�bitrrr�putBits
"zBitBuffer.putBitcCs0t|�D]}|�|||d?d@dk�qdSr�)r7ro)rrQr�r<rrrros �z
BitBuffer.putcrS)N�c3s"�|]}��|�rdndVqdS)�1�0N)r�r?rrrrjs��z%BitBuffer.__repr__.<locals>.<genexpr>)rVr7rrrrrrrWrXzBitBuffer.__repr__N)r�)
r�r�r�rr�rrr�rororWrrrrrns
rnc@sbeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Ze	dd
��Z
e	dd��Zdd�Zddd�Z
dS)�
GridDrawerz Mechanism to draw grids of boxescCs||_||_d|_dSr)�invert_code�smoothFactor�grid)rrt�
smooth_factorrrrr#s
zGridDrawer.__init__cCs(tdd�|D��dkrtd��||_dS)NcSsh|]}t|��qSr)r')r@�grrr�	<setcomp>)sz&GridDrawer.set_grid.<locals>.<setcomp>rzThe array is not rectangular)r'rurv)rrvrrr�set_grid(s
zGridDrawer.set_gridcCs|jdur
t|j�SdSrZ)rvr'rrrr�	row_count.szGridDrawer.row_countcCs|��dkr
t|jd�SdSrZ)r{r'rvrrrr�	col_count1szGridDrawer.col_countcCsL|dkod|ko|��kno||��k}|sdS|j|||jkS)NrF)r{r|rvrt)rr/r.�insiderrrr04s0zGridDrawer.isDarkcCs>ddddd�}|d||dd|d||ddfS)	N)rr)rrP)rPr�rr)rrrOr[rrOrr)�xyd�dmrrr�moveByDirection8s0zGridDrawer.moveByDirectioncCslg}ttd�dd�D])}|�g�td�D]}|d|dkr2|d|dddkr2|d�|�qq
|S)NrOr>)�repeatr[rrrP)rr7r )�result�cfgr<rrr�makeDirectionsTable=s
(��zGridDrawer.makeDirectionsTablecCs�|��}g}t|��d�D][}t|��d�D]P}|�|d|d�r&dnd|�|d|d�r3dnd|�|d|d�rAdnd|�|d|d�rOdnd}||D]}|�|||t||�dkf�qVqq|S)NrrrOr>r6)r�r7r{r|r0r r')r�dirTabler�r.r/�indxr<rrr�createVertexesForAdvDrawerGs ��� ��	z%GridDrawer.createVertexesForAdvDrawer��?cCs�|�|�}||jd}d|}|d||d||d||d|f|d||d||d||d|ffS)Ng@r�rr)r�ru)r�v�extraSmoothFactor�vn�sc�sc1rrr�getSmoothPositionWs
`zGridDrawer.getSmoothPositionN)r�)r�r�r��__doc__rrzr{r|r0r�r�r�r�r�rrrrrs!s

	rsc@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�ZdS)�QrCodezGenerate QR Code ExtensioncCs�|jddd�|jdtdd�|jdtdd�|jdd	d�|jd
tdd�|jdtjd
d�|jddd�|jdtdd�|jddd�|jddd�dS)Nz--textzwww.inkscape.org)�defaultz--typenumberr)rGr�z--correctionlevelz
--encoding�latin_1z--modulesizeg$@z--invert�falsez
--drawtype�greedyz--smoothvalg�������?z
--symbolidrpz	--groupid)�add_argument�int�float�inkex�Boolean)r�parsrrr�
add_arguments`szQrCode.add_argumentsc	CsB|j�d�}|j}|jst�d��|jdkr |jdkr t�d��t|j|j	��
d�}t|j�}t�}|�
dd|�|jrD|�
d	|j�|jjj\}}|j�||�|rZ|j�|�|jd
krgt�||j�}nt|jd�}|�t|j��|�|�|��|j|_|j|_d|_ t!|j|j"�|_#|j#�$|j%�|�&||j�|S)
N�1pxzPlease enter an input text�symbolrpzPlease enter symbol idr�zinkscape:labelz	QR Code: �idrr�r>)'�svg�unittouu�options�textr��AbortExtension�drawtype�symbolidrE�encoding�decoderCr�set�groupid�	namedview�center�	transform�
add_translate�	add_scale�
typenumberrr��correctionlevelrr�r$r5�
modulesize�boxsize�invertrt�marginrs�	smoothval�drawrzr�
render_svg)	r�scale�opt�
text_bytes�text_str�grp�pos_x�pos_y�coderrr�generatels:




zQrCode.generatec	s�|j��}d}t|�dk�rqt|�d}|}g}	|�|�|j�||���fdd�t|�D�}t|�dks=t|�dkrGtdtt�d	��t|�dkrR|d}nV||dd||ddh||ddd
||ddd
hkr�tdt||d�t||d���|dk||dd||ddd
kkr�|dn|d}||kr�n|}q|j�	||d�\}	}
|d
|�
|	d|	d�7}tt|��D]�}|||}|||dt|�}
|
d|dk�rY|dks�|
d�sKd}|j�	|�\}
}|j�	||�\}
}|j�	|
|�\}}
|j�	|
�\}}
|d|�
|d|d�7}|d|�
|d|d�|�
|d|d�|�
|d|d�7}q�|d|�
|
d|
d�7}q�|d7}t|dd�D]}||=�qdt|�dkst
�}|�d|�|S)NrprrTcs4g|]\}}|d�dkr|d�dkr|�qSr~r)r@r<�x��nextPosrrrA�s4z%QrCode.render_adv.<locals>.<listcomp>rOzVertex z has no connectionsr>zBad next vertex directions rx�M %f,%f rMr[g��=�]��?zL %f,%f zC %f,%f %f,%f %f,%f zz )rSr<)r�r�r'r r��	enumeraterurC�next_cr��get_svg_posr7�sortedrr�)rr��verts�	qrPathStr�vertsIndexStart�
vertsIndexCur�ringIndexes�nextIndexes�vertsIndexNext�posStart�_�ri�vcr��ex�bs�bp1�bp2�bfr<�pathrr�r�
render_adv�s`


H(<�&���
�5zQrCode.render_advcCsft|j���D])}t|j���D]}|j�||�r/|�||�\}}t�|||j|j�SqqdSr)	r7r�r{r|r0r�r�newr�)rr.r/r��yrrr�render_obsolete�s���zQrCode.render_obsoletec	Cs�|�|�}d}t|j���D]'}t|j���D]}|j�||�r4|�||�\}}|d||f|d7}qqt�}|�d|�|S)Nrpr�z z r<)	�get_icon_path_strr7r�r{r|r0r�rr�)	r�pointStr�
singlePath�pathStrr.r/r�r�r�rrr�render_path�s
��zQrCode.render_pathc	
Cs�|j�|jj�}|durt�d|jj����|j��}tjt	|j
�|jt	|j
�|jfd�}t
�}t|j���D]-}t|j���D]#}|j�||�re|�||�\}}|�tj|||j||j|d��qBq9|S)NzCan't find symbol )r�)r�)r��getElementByIdr�r�r�r�r��bounding_box�	Transformr�r��width�heightrr7r�r{r|r0r�r rr�r%r<)	rr��bboxr�r�r.r/r�r�rrr�
render_symbol�s"
�$��zQrCode.render_symbolcCs|�|jj�Sr)r�r�r�rrrrr*�szQrCode.<lambda>cC�
|�d�S)NrM�r�rrrrr*��
cCr�)Nrxr�rrrrr*�r�cCr�)N�pr�rrrrr*�r�cCr�)Nzh 1 v 1 h -1�r�rrrrr*�r�cCsd}|�|�S)Nz�m 0.5,0.5 c 0.2761423745,0 0.5,0.2238576255 0.5,0.5 c 0,0.2761423745 -0.2238576255,0.5 -0.5,0.5 c -0.2761423745,0 -0.5,-0.2238576255 -0.5,-0.5 c 0,-0.2761423745 0.2238576255,-0.5 0.5,-0.5r�)r�srrr�
render_circle�s
zQrCode.render_circlecCs�t|d|��|j�}|durtd|��|j��d|j|j}|j��d|j|j}|�t	�
dd||��}d|jd<|jrCdnd	|jd
<|�t
��}d|jd<|jrXd	nd|jd
<|�|��dS)z
Render to svg�render_NzUnknown draw type: rOr�none�stroke�black�white�fill)�getattrr�rur�r|r�r�r{�addrr��stylertr)rr�r��drawer�canvas_width�
canvas_height�rect�qrgrrrr�s

zQrCode.render_svgcCs ||j|j||j|jfSr)r�r�)rr/r.rrrr�s zQrCode.get_svg_poscCs�d}d}|D]*}|��s|dks|dkr||7}qt|�dkr,|tt|�|j�7}d}||7}qt|�dkrB|tt|�|j�7}|S)Nrp�-�.r)�isdigitr'rCr�r�)rr�r��	digBufferrYrrrr�s

zQrCode.get_icon_path_strN)r�r�r�r�r�r�r�r�r�r��render_pathcustom�render_neutral�
render_greedy�render_proud�
render_simpler�r�r�r�rrrrr�^s"*=
r��__main__)r��
__future__r�	itertoolsrr�rrrr�objectrr�r�r8r!r"rKr�rlrnrs�GenerateExtensionr�r��runrrrr�<module>s0M6!(h=S�

Youez - 2016 - github.com/yon3zu
LinuXploit