
    BPc0                         d dl Z d dlZd dlZ G d dej                  Zedk    r e                                             dS dS )    Nc                   |    e Zd ZdZd Zd Zd Zed             Zed             Z	ed             Z
ed             Zd	S )
JitterNodeszJiggle nodes aroundc                    |                     d           |                     dt          dd           |                     dt          dd           |                     dt          j        d	d
           |                     dt          j        dd           |                     d|                     d          | j        d           d S )Nz--tabz	--radiusxg      $@zRandum radius X)typedefaulthelpz	--radiusyzRandum radius Yz--ctrlFzRandomize ctrl pointsz--endTzRandomize nodesz--distdistzDistribution of displacement)add_argumentfloatinkexBoolean
arg_methoddist_uniform)selfparss     -/usr/share/inkscape/extensions/jitternodes.pyadd_argumentszJitterNodes.add_arguments   s    '"""+E4FWXXX+E4FWXXX5=%>U 	 	
 	
 	
 	%-<M 	 	
 	
 	
 	((%/	 	 	
 	
 	
 	
 	
    c                 t   | j         j                            t          j                  D ]}|j                                        }|D ]e}|d         |d         k    }t          |          D ]?\  }}|r$|t          |          dz
  k    r|d         ||<    n| j	        j
        r|                     ddg          }|d         dxx         |d         z  cc<   |d         dxx         |d         z  cc<   |d         dxx         |d         z  cc<   |d         dxx         |d         z  cc<   |d         dxx         |d         z  cc<   |d         dxx         |d         z  cc<   | j	        j        r<|                     |d                   |d<   |                     |d                   |d<   Ag||_        d S )Nr         )svg	selectionfilterr   PathElementpathto_superpath	enumeratelenoptionsend	randomizectrl)r   noder   subpathclosedindexcspdeltas           r   effectzJitterNodes.effect/   s   H&--e.?@@ 	 	D9))++D 8 8 wr{2"+G"4"4 8 8JE3 %3w<<!+;";";)0|' . $1v 6 6Aq			U1X-			Aq			U1X-			Aq			U1X-			Aq			U1X-			Aq			U1X-			Aq			U1X-			|( 8!%A!7!7A!%A!7!7ADII'	 	r   c                     | j                             | j         j        | j         j                  }|d         |d         z   |d         |d         z   gS )z9Randomise the given position [x, y] as set in the optionsr   r   )r!   r	   radiusxradiusy)r   posr*   s      r   r#   zJitterNodes.randomizeE   sH    !!$,"68LMMAq!3q6E!H#455r   c                 V    t          j        d|           t          j        d|          fS )zGaussian distribution        )randomgaussxys     r   dist_gaussianzJitterNodes.dist_gaussianJ   s'     |C##V\#q%9%999r   c           	         t          j        dd          }| t          j        t	          t          j        d          d          dz  |          z  |t          j        t	          t          j        d          d          dz  |          z  fS )zPareto distribution            ?g      4@)r2   uniformmathcopysignminparetovariater5   r6   signs      r   dist_paretozJitterNodes.dist_paretoO   s     ~dC((4=$S))40047
 
 
t}S!5c!:!:DAADH$OOOP 	Pr   c                     t          j        dd          }| t          j        t          j        dd          dz  |          z  |t          j        t          j        dd          dz  |          z  fS )zLog Norm distributionr9   r:   r1   g      @)r2   r;   r<   r=   lognormvariater@   s      r   dist_lognormzJitterNodes.dist_lognorm\   st     ~dC((4=!#s++c14
 
 
t}V23<<sBDIIIJ 	Jr   c                 Z    t          j        |  |           t          j        | |          fS )zUniform distribution)r2   r;   r4   s     r   r   zJitterNodes.dist_uniformd   s+     ~qb!$$fnaR&;&;;;r   N)__name__
__module____qualname____doc__r   r+   r#   staticmethodr7   rB   rE   r    r   r   r   r      s        
 
 
"  ,6 6 6
 : : \: 
P 
P \
P J J \J < < \< < <r   r   __main__)r<   r2   r   EffectExtensionr   rG   runrL   r   r   <module>rP      s   ,   L< L< L< L< L<%' L< L< L<^ zKMM r   