a
    èÝEb9  ã                   @   sÄ   d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlZddlZddlZe e¡Zdd	d
„Zdd„ Zddd„Zdd„ Zdd„ Zdd„ Zddd„ZedkrÀddlZe eƒ ¡ dS )z;Visualize DesignSpaceDocument and resulting VariationModel.é    )ÚVariationModelÚsupportScalar)ÚDesignSpaceDocument)Úpyplot)Úaxes3d)ÚcycleNé
   c                    sD   | \‰ ‰‰‡ ‡‡fdd„t ˆƒD ƒ‡‡‡fdd„t ˆƒD ƒ ˆg S )Nc                    s    g | ]}ˆ ˆˆ  | ˆ  ‘qS © r	   ©Ú.0Úi)ÚaÚbÚcountr	   úU/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/fontTools/varLib/plot.pyÚ
<listcomp>   ó    zstops.<locals>.<listcomp>c                    s    g | ]}ˆ ˆˆ  | ˆ  ‘qS r	   r	   r
   )r   Úcr   r	   r   r      r   )Úrange)Úsupportr   r	   )r   r   r   r   r   Ústops   s    
ÿþr   c                 K   s®   t | ttjjjƒƒD ]”\}}t|ƒdkrT|j| |d d¡gdgdfd|i|¤Ž qt|ƒdkrœ|j| |d d¡g| |d d¡gdgdfd|i|¤Ž qt	t|ƒƒ‚qd S )Né   r   ç      ð?ÚoÚcoloré   )
Úzipr   r   ÚcmÚSet1ÚcolorsÚlenÚplotÚgetÚAssertionError)Ú	locationsÚaxesÚsubplotÚkwargsÚlocr   r	   r	   r   Ú_plotLocationsDots   s.    ýüûüûú	r)   c                    sÒ   t | ƒ}t |d ¡}t || ¡}ˆd u r:d gt | ƒ ‰t| ƒ‰ ‡ ‡fdd„tt ˆƒƒD ƒ‰t| d  ¡ ƒ}t |ƒdkrœtˆ |d |||fdˆi|¤Ž n2t |ƒdkrÆtˆ ||||fdˆi|¤Ž nt	dƒ‚d S )	Ng      à?c                    s   g | ]}ˆˆ j |  ‘qS r	   )ZreverseMappingr
   ©ÚmodelÚnamesr	   r   r   7   r   z!plotLocations.<locals>.<listcomp>r   r   r,   r   zOnly 1 or 2 axes are supported)
r    ÚmathÚceilr   r   ÚsortedÚkeysÚ_plotLocations2DÚ_plotLocations3DÚ
ValueError)r$   Úfigr,   r'   ÚnÚcolsÚrowsr%   r	   r*   r   ÚplotLocations.   s2    ÿÿÿ
ÿÿÿr8   c                 K   sÔ   |  d¡}tt| jttjjjƒt|ƒƒƒD ]¤\}\}	}
}|d urJ| 	|¡ | 
|¡ t dd¡ |	 |d¡}g g  }}t|ƒD ]&}t||i|	ƒ}| |¡ | |¡ q~|j||fd|
i|¤Ž t| j|g|ƒ q*d S )Néo   ç      ð¿r   ©r:   g        r   r   )Úadd_subplotÚ	enumerater   Úsupportsr   r   r   r   r   Ú	set_titleÚ
set_xlabelÚxlimr"   r   r   Úappendr!   r)   r$   )r+   Zaxisr4   r6   r7   r,   r'   r&   r   r   r   ÚnameÚXsÚXÚYÚxÚyr	   r	   r   r1   F   s     
ÿ



r1   c                 K   sœ  |\}}|j ddd�}	tt| jttjjjƒt|ƒƒƒD �]^\}
\}}}|d urX|	 	|¡ |	 
|¡ |	 |¡ t dd¡ t dd¡ | |d¡}| |d¡}t|ƒD ]h}g g g   }}}|D ]4}t||||i|ƒ}| |¡ | |¡ | |¡ q¼|	j|||fd|i|¤Ž q¤t|ƒD ]l}g g g   }}}|D ]6}t||||i|ƒ}| |¡ | |¡ | |¡ �q.|	j|||fd|i|¤Ž �qt| j||g|	ƒ q6d S )Nr9   Z3d)Z
projectionr:   r   r;   r   )r<   r=   r   r>   r   r   r   r   r   r?   r@   Z
set_ylabelrA   Zylimr"   r   r   rB   r!   r)   r$   )r+   r%   r4   r7   r6   r,   r'   Zax1Zax2Zaxis3Dr   r   r   rC   rD   ZYsrG   rE   rF   ÚZrH   Úzr	   r	   r   r2   [   s<    ÿ






r2   c                 K   s@   |   ¡  dd„ | jD ƒ}dd„ | jD ƒ}t|||fi |¤Ž d S )Nc                 S   s   g | ]
}|j ‘qS r	   )Úlocation©r   Úsr	   r	   r   r   �   r   z plotDocument.<locals>.<listcomp>c                 S   s   g | ]
}|j ‘qS r	   )rC   rL   r	   r	   r   r   ‚   r   )Ú	normalizeÚsourcesr8   )Údocr4   r'   r$   r,   r	   r	   r   ÚplotDocument   s    rQ   c                    sö   ddl m} | d u r"tjdd … } |ƒ  t| ƒdk rbtdtjd� tdƒ tdtjd� t d¡ t 	¡ }| 
d¡ t| ƒdkr®| d  d	¡r®tƒ }| | d ¡ t||ƒ n<d
d„ ttdƒtdƒd ƒD ƒ‰ ‡ fdd„| D ƒ}t||ƒ t ¡  d S )Nr   )ÚconfigLoggerr   z/usage: fonttools varLib.plot source.designspace)Úfilez  orz4usage: fonttools varLib.plot location1 location2 ...Tz.designspacec                 S   s   g | ]}t |ƒ‘qS r	   )Úchr)r   r   r	   r	   r   r   Ÿ   r   zmain.<locals>.<listcomp>ÚArI   c              	      s*   g | ]"}t tˆ d d„ | d¡D ƒƒƒ‘qS )c                 s   s   | ]}t |ƒV  qd S )N)Úfloat)r   Úvr	   r	   r   Ú	<genexpr>    r   z"main.<locals>.<listcomp>.<genexpr>ú,)Údictr   ÚsplitrL   ©r%   r	   r   r       r   )Z	fontToolsrR   ÚsysÚargvr    ÚprintÚstderrÚexitr   ÚfigureZset_tight_layoutÚendswithr   ÚreadrQ   r   Úordr8   Úshow)ÚargsrR   r4   rP   Zlocsr	   r\   r   Úmain†   s&    

 
rh   Ú__main__)r   )N)N)Ú__doc__ZfontTools.varLib.modelsr   r   ZfontTools.designspaceLibr   Z
matplotlibr   Zmpl_toolkits.mplot3dr   Ú	itertoolsr   r-   Úloggingr]   Ú	getLoggerÚ__name__Úlogr   r)   r8   r1   r2   rQ   rh   ra   r	   r	   r	   r   Ú<module>   s&   


$
