a
    ׶a9                     @   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rd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	   e/Users/vegardjervell/Documents/master/model/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rt |d |||fdi| n2t |dkrt ||||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 )No         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| qt|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	rt }|| 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&   


$
