
    BPc\                         d dl Z d dlZd dlmZ  G d dej                  Zedk    r e                                             dS dS )    N)turtlec                   ,    e Zd Zd Zd Zd Zd Zd ZdS )Lindenmayerc                 6   |                     d           |                     dt          dd           |                     dt          dd           |                     d	t          dd
           |                     dt          dd           |                     dt          dd           |                     dt          dd           |                     ddd           |                     ddd           g | _        t	          j                    | _        d S )Nz--tabz--order   znumber of iteration)typedefaulthelpz--langleg      0@zangle for turning leftz--ranglezangle for turning rightz--stepg      9@z	step sizez--randomizestepg        zrandomize stepz--randomizeanglezrandomize anglez--axiomz++Fzinitial state of system)r	   r
   z--ruleszF=FF-[-F+F+F]+[+F-F-F]zreplacement rules)add_argumentintfloatstackpturtlepTurtler   )selfparss     -/usr/share/inkscape/extensions/lindenmayer.pyadd_argumentszLindenmayer.add_arguments   sS   '""")#q?TUUUUD7O 	 	
 	
 	
 	UD7P 	 	
 	
 	
 	(;OOOE3=M 	 	
 	
 	
 	UC>O 	 	
 	
 	
 	)U9RSSS7>Q 	 	
 	
 	
 
o''    c                 \   t          d | j        j                                                            d          D                       | _        |                     | j        j                                        d          }|                     |           | j        	                                S )Nc                     g | ]?}|                     d           dk    t          d |                    d                     @S )=   c                 *    |                                  S )N)strip)ss    r   <lambda>z0Lindenmayer.iterate.<locals>.<listcomp>.<lambda>5   s    qwwyy r   )countmapsplit).0is     r   
<listcomp>z'Lindenmayer.iterate.<locals>.<listcomp>4   sO       773<<1$$ ((1773<<88$$$r   ;r   )
dictoptionsrulesupperr    _Lindenmayer__recurseaxiom_Lindenmayer__compose_pathr   getPath)r   strings     r   iteratezLindenmayer.iterate2   s     +113399#>>  
 

  2 8 8 : :A>>F###{""$$$r   c           	      d   | j                                          | j        j        j        }| j                             |           | j                                          |D ]N}|dv ra| j                                          | j                             | j        j	        t          j        dd| j        j        z            z             h|dv ra| j                                          | j                             | j        j	        t          j        dd| j        j        z            z             |dk    rI| j                             | j        j        t          j        dd| j        j        z            z             |dk    rI| j                             | j        j        t          j        dd| j        j        z            z             k|dk    r| j                             d           |d	k    rL| j                            | j                                         | j                                         g           |d
k    ri| j                                          | j                                        \  }}| j                             |           | j                             |           Pd S )NABCDEFg      ?g{Gz?GHIJKL+-|   [])r   pusvg	namedviewcentersetpospdfdr&   steprandomnormalvariaterandomizestepltlanglerandomizeanglertrangler   appendgetpos
getheadingpop
setheading)r   r-   pointcposheadings         r   __compose_pathzLindenmayer.__compose_path>   s   ")5!!! 	0 	0AH}}   L%+C8R1RSSU    h   L%+C8R1RSSU    cL'+C8S1STTV    cL'+C8S1STTV    cs####c
!!4;#5#5#7#79O9O9Q9Q"RSSSSc   #z~~//W""3'''&&w///?	0 	0r   c                     d}|D ]U}|| j         j        k     r>	 ||                     | j        |         |dz             z   };# t          $ r ||z   }Y Lw xY w||z   }V|S )N r   )r&   orderr)   r'   KeyError)r   rulelevellevel_stringrN   s        r   	__recursezLindenmayer.__recursed   s     		0 		0At|)))4#/$..
1uqy3 3 $LL   4 4 4#/!#3LLL4  ,a/s   'A  AAc                 j   | j                             t          | j        j                  dz             | j        _        dt          | j                             d                    dddddd}t          j        t          t          j        |                    |                                 	          S )
Npxmiter1pxz1.0z#000000buttnone)zstroke-linejoinzstroke-widthzstroke-opacityzfill-opacitystrokezstroke-linecapfill)styled)	r9   unittouustrr&   r?   inkexPathElementStyler.   )r   stys     r   generatezLindenmayer.generater   s     H--c$,2C.D.Dt.KLL& 1 1% 8 899#!$
 
  s5;s+;+;'<'<OOOOr   N)__name__
__module____qualname__r   r.   r+   r)   rj    r   r   r   r      se        ( ( (.
% 
% 
%$0 $0 $0L  P P P P Pr   r   __main__)r@   rf   r   r   GenerateExtensionr   rk   runrn   r   r   <module>rr      s   *   # # # # # #cP cP cP cP cP%) cP cP cPL zKMM r   