
    BPck                         d Z ddlZddlmZmZ ddlmZ  G d dej                  Ze	dk    r e            
                                 dS dS )z
Convert path to mesh gradient
    N)LineCurve)MeshGradientc                   B    e Zd ZdZd Zd Zd Zd	dZed             Z	dS )

PathToMeshz#Convert path data to mesh geometry.c                 4    |                     dd           d S )Nz--tabzThe selected UI-tab)help)add_argument)selfparss     //usr/share/inkscape/extensions/path_mesh_p2m.pyadd_argumentszPathToMesh.add_arguments   s"    '(=>>>>>    c                     | j         j                            |           |                    d           |                                S )z0Add meshgradient definition to current document.meshgradient)svgdefsappendset_random_idget_id)r   r   s     r   add_meshzPathToMesh.add_mesh"   s@    \***"">222""$$$r   c                 8   | j         j                            t          j                  D ]o}d}d}d}|j                                        }||                     ||          }||                     |          }|d	                    |          |j
        d<   pdS )z3Main routine to convert path data to mesh geometry.Nzurl(#{})fill)r   	selectionfilterinkexPathElementpathto_superpathto_meshr   formatstyle)r   nodecspr   mesh_ids        r   effectzPathToMesh.effect(   s     H&--e.?@@ 	@ 	@DCLG)((**C#||D#66'--55"%/%6%6w%?%?
6"	@ 	@r   r   c                    |                      ||                   \  }}|j                            d          dg}t          j        |d         dd          }|d         d                             |dd         |           |S )z%Convert csp to meshgradient geometry.r   z#ffffffr      )posrowscols   )to_meshdatar"   getr   new_meshstops)r   r#   r$   subpathcornersedgescolorsr   s           r   r    zPathToMesh.to_mesh<   s     ))#g,77*..(()4#,!!LLLQ  qsV444r   c                    t          |           dk    rNg }g }t          | dd                   D ]1\  }}|                    |d                    t          | |                   t          | |dz                      g}t          |d         d                   |d         d<   t          |d         d                   |d         d<   t          j                            |d         |d                   r)|                    t          |d         d                     |                    t          |d         d         |d         d         z   |d         d         z               3||fS )z/Convert csp subpath to corners, edge path data.   Nr,   r(   r      )	len	enumerater   listr   CubicSuperPathis_liner   r   )r1   r2   r3   icorneredges         r   r-   zPathToMesh.to_meshdataH   sF    w<<1GE&wrr{33 Q Q	6vay)))WQZ(($wq1u~*>*>?!$q'!*--Q
!$q'!*--Q
'//QaAA QLLtAwqz!23333LLad1gaj)@471:)M!OPPPP~r   N)r   )
__name__
__module____qualname____doc__r   r   r&   r    staticmethodr-    r   r   r   r      sy        --? ? ?% % %@ @ @(
 
 
 
   \  r   r   __main__)rC   r   inkex.pathsr   r   inkex.elementsr   EffectExtensionr   r@   runrE   r   r   <module>rK      s   &   # # # # # # # # ' ' ' ' ' '< < < < <& < < <~ zJLL r   