a
    —ÆàgF  ã                   @   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„ 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	   úN/var/www/sistema_ama/venv/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   3   r   z!plotLocations.<locals>.<listcomp>r   r   r,   r   ú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*   s    "r9   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+   Úaxisr5   r7   r8   r,   r'   r&   r   r   r   ÚnameÚXsÚXÚYÚxÚyr	   r	   r   r2   >   s     
ÿ



r2   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 )Nr:   Ú3d©Z
projectionr;   r   r<   r   )r=   r>   r   r?   r   r   r   r   r   r@   rA   Z
set_ylabelrB   Zylimr"   r   r   rC   r!   r)   r$   )r+   r%   r5   r8   r7   r,   r'   Zax1Zax2Úaxis3Dr   r   r   rE   rF   ZYsrI   rG   rH   ÚZrJ   Úzr	   r	   r   r3   S   s<    ÿ






r3   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   y   r   z plotDocument.<locals>.<listcomp>c                 S   s   g | ]
}|j ‘qS r	   )rE   rQ   r	   r	   r   r   z   r   )Ú	normalizeÚsourcesr9   )Údocr5   r'   r$   r,   r	   r	   r   ÚplotDocumentw   s    rV   c                    sº   t | jƒdksJ ‚| jd ‰ t‡ fdd„| jD ƒƒ}t‡ fdd„| jD ƒƒ}dd l}| |||| d ¡}g }|D ]"}	ˆ |	i}
|  |
|¡}| |¡ qr| 	d¡}|j
||dfi |¤Ž d S )	Nr   r   c                 3   s   | ]}|  ˆ d ¡V  qdS ©r   N©r"   ©r   r(   ©rD   r	   r   Ú	<genexpr>‚   r   z*_plotModelFromMasters2D.<locals>.<genexpr>c                 3   s   | ]}|  ˆ d ¡V  qdS rW   rX   rY   rZ   r	   r   r[   ƒ   r   éd   r:   ú-)r    Ú	axisOrderÚminr$   ÚmaxÚnumpyÚarangeÚinterpolateFromMastersrC   r=   r!   )r+   ÚmasterValuesr5   r'   Zaxis_minZaxis_maxÚnprG   rH   rI   r(   Úvr&   r	   rZ   r   Ú_plotModelFromMasters2D~   s    

rg   c                    sZ  t | jƒdksJ ‚| jd | jd  ‰ ‰t‡ fdd„| jD ƒƒ}t‡ fdd„| jD ƒƒ}t‡fdd„| jD ƒƒ}t‡fdd„| jD ƒƒ}dd l}| |||| d	 ¡}	| |||| d	 ¡}
| |	|
¡\}	}
g }t|	|
ƒD ]L\}}g }| 	|¡ t||ƒD ]*\}}ˆ |ˆ|i}|  
||¡}| 	|¡ qúqÚ| |¡}|jd
dd�}|j|	|
|fi |¤Ž d S )Nr   r   r   c                 3   s   | ]}|  ˆ d ¡V  qdS rW   rX   rY   ©Úaxis1r	   r   r[   —   r   z*_plotModelFromMasters3D.<locals>.<genexpr>c                 3   s   | ]}|  ˆ d ¡V  qdS rW   rX   rY   rh   r	   r   r[   ˜   r   c                 3   s   | ]}|  ˆ d ¡V  qdS rW   rX   rY   ©Úaxis2r	   r   r[   ™   r   c                 3   s   | ]}|  ˆ d ¡V  qdS rW   rX   rY   rj   r	   r   r[   š   r   r\   r:   rK   rL   )r    r^   r_   r$   r`   ra   rb   Zmeshgridr   rC   rc   Úarrayr=   Zplot_surface)r+   rd   r5   r'   Z	axis1_minZ	axis1_maxZ	axis2_minZ	axis2_maxre   rG   rH   rN   Zrow_xZrow_yZz_rowrI   rJ   r(   rf   rM   r	   )ri   rk   r   Ú_plotModelFromMasters3D“   s*    

rm   c                 K   sT   t | jƒdkr$t| ||fi |¤Ž n,t | jƒdkrHt| ||fi |¤Ž ntdƒ‚dS )z®Plot a variation model and set of master values corresponding
    to the locations to the model into a pyplot figure.  Variation
    model must have axisOrder of size 1 or 2.r   r   r-   N)r    r^   rg   rm   r4   )r+   rd   r5   r'   r	   r	   r   ÚplotModelFromMasters°   s
    rn   c              
      s–  ddl m} | d u r"tjdd … } |ƒ  t| ƒdk rxtdtjd� tdƒ t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 ƒ‰ d| d v�r‡ fdd„| D ƒ}t||ƒ nzg }g }| D ]F}| d¡\}}	| ttˆ dd„ | d¡D ƒƒƒ¡ | t|	ƒ¡ �qt|ˆ d t|d ƒ… ƒ}
t|
||ƒ t ¡  d S )Nr   )ÚconfigLoggerr   z/usage: fonttools varLib.plot source.designspace)Úfilez  orz4usage: fonttools varLib.plot location1 location2 ...zBusage: fonttools varLib.plot location1=value1 location2=value2 ...Tz.designspacec                 S   s   g | ]}t |ƒ‘qS r	   )Úchr)r   r   r	   r	   r   r   Ú   r   zmain.<locals>.<listcomp>ÚArN   ú=c              	      s*   g | ]"}t tˆ d d„ | d¡D ƒƒƒ‘qS )c                 s   s   | ]}t |ƒV  qd S ©N©Úfloat©r   rf   r	   r	   r   r[   Ü   r   z"main.<locals>.<listcomp>.<genexpr>ú,)Údictr   ÚsplitrQ   ©r%   r	   r   r   Ü   r   c                 s   s   | ]}t |ƒV  qd S rt   ru   rw   r	   r	   r   r[   ã   r   zmain.<locals>.<genexpr>rx   )Z	fontToolsro   ÚsysÚargvr    ÚprintÚstderrÚexitr   ÚfigureZset_tight_layoutÚendswithr   ÚreadrV   r   Úordr9   rz   rC   ry   r   rv   r   rn   Úshow)Úargsro   r5   rU   Zlocsr$   rd   Úargr(   rf   r+   r	   r{   r   Úmain¼   sB    þ

 $rˆ   Ú__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)   r9   r2   r3   rV   rg   rm   rn   rˆ   r€   r	   r	   r	   r   Ú<module>   s,   



$
/