
    BPc                         d Z ddlZddlZddlmZmZmZ  G d dej                  Zedk    r e            	                                 dS dS )z
This extension either adds nodes to a path so that

  No segment is longer than a maximum value OR that each segment is divided
  into a given number of equal segments.

    N)bezierPathElementCubicSuperPathc                       e Zd ZdZd Zd ZdS )AddNodesz/Extension to split a path by adding nodes to itc                     |                     dt          dd           |                     dt          dd           |                     ddd	
           |                     ddd
           d S )Nz
--segments   z*Number of segments to divide the path into)typedefaulthelpz--maxg      $@z--methodbymaxzThe kind of division to perform)r   r   z--unitpxzUnit for maximum segment length)add_argumentintfloat)selfparss     */usr/share/inkscape/extensions/addnodes.pyadd_argumentszAddNodes.add_arguments#   s    =	 	 	
 	
 	
 	=	 	 	
 	
 	
 	.O 	 	
 	
 	
 	d)J 	 	
 	
 	
 	
 	
    c           	         | j         j                            t                    D ]}g }|j                                        D ]}|                    |d         d d          g           d}|t          |          dz
  k    rWt          j	        |d         d         ||                   }| j
        j        dk    r| j
        j        }nI| j                             | j
        j         | j
        j                   }t!          j        ||z            }t%          t'          |          dd          D ]n}t          j        |d         d         ||         d|z            }	d |	D             }
|
\  |d         d<   }||<   |d                             |d d                     o|d                             ||                    |dz  }|t          |          dz
  k    Wt+          |                              d          |_        d S )	Nr      bynumg      ?c                 &    g | ]}d  |D             S )c                 ,    g | ]}t          |          S  )list).0els     r   
<listcomp>z.AddNodes.effect.<locals>.<listcomp>.<listcomp>M   s    999"T"XX999r   r   )r   elementss     r   r!   z#AddNodes.effect.<locals>.<listcomp>L   s4     ) ) )>F99999) ) )r   F)curves_only)svg	selectionfilterr   pathto_superpathappendlenr   cspseglengthoptionsmethodsegmentsviewport_to_unitmaxunitmathceilranger   cspbezsplitatlengthr   to_path)r   nodenewsubilengthsplitsmaxlenselresultbetter_resultnxts               r   effectzAddNodes.effect7   s   H&--k:: 	G 	GDCy--//  

CF111I;'''3s88a<''#0Rc!fEEF|*g55!%!6!%!:!:#|/D1BDD" " "&6F?!;!;$S[[!R88 / /!'!;GBKQs" ") )JP) ) ) 4A0BS#a&Bs111v....GNN3q6***FA+ 3s88a<'', 's++333FFDII7	G 	Gr   N)__name__
__module____qualname____doc__r   rB   r   r   r   r   r       s=        99
 
 
(G G G G Gr   r   __main__)
rF   r2   inkexr   r   r   EffectExtensionr   rC   runr   r   r   <module>rK      s   &    5 5 5 5 5 5 5 5 5 53G 3G 3G 3G 3Gu$ 3G 3G 3Gl zHJJNN r   