o
    8Va                     @   sB   d dl mZ d dlmZmZmZ d dlmZmZ G dd dZ	dS )    )key)LEFTRIGHTMIDDLE)get_direction_vectorsget_basis_vectorsc                   @   s  e Zd ZdZdZdZdZi ejdej	dej
dejdejdejdejdejdejdejdejdejdejd	ejd	ejd
ejd
ejdi ejdejdejdejdejdejdejdej dej!dej"dej#dej$dej%dej&dej'dej(dej)dej*dej+dej,diZ-ddddZ.dd Z/dd Z0d d! Z1d"d# Z2d$d% Z3d&d' Z4d(d) Z5d*d+ Z6d,S )-PlotControllerg      @g      ?g      d@g      D@leftrightupdownrotate_z_negrotate_z_pos	spin_left
spin_rightreset_camerazoom_inzoom_outmodify_sensitivityrot_preset_xyrot_preset_xzrot_preset_yzrot_preset_perspectivetoggle_axestoggle_axe_colors
save_imageF)invert_mouse_zoomc                K   s   || _ || _|j| _i ddddddddddddddd	dd
dddddddddddddddddddd| _d S )Nr	   Fr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   )r   windowcameraaction)selfr   r   kwargs r"   K/usr/lib/python3/dist-packages/sympy/plotting/pygletplot/plot_controller.py__init__C   sR   	zPlotController.__init__c                 C   s  d}| j d r|d8 }| j d r|d7 }|dkr%| j|d |  d  d\}}}| j d r3|d8 }| j d r<|d7 }| j d	 rE|d8 }| j d
 rN|d7 }| j d rW|d7 }| j d r`|d8 }|  s|dkr{| jj|| |   gt d R   |dkr| jj|| |   gt d R   |dkr| jj|| |   gt d R   n| jdd|| |   | | |    d}| j d r|  s|d8 }| j d r|  s|d7 }|dkr| jj|| |   gt d R   | j d r| j	  | j d r	| j
d | j d r| j
d | j d r!| j
d | j d r-| j
d | j d r>d| j d< | jj  | j d rOd| j d< | jj  | j d r`d| j d< | jj  dS )Nr   r      r   g      $@)r   r   r   r	   r
   r   r   r   r      r   r   r   r   Zxyr   xzr   Zyzr   Zperspectiver   Fr   r   T)r   r   zoom_relativeget_key_sensitivityis_2DZeuler_rotater   mouse_translater   resetZset_rot_presetZaxesZtoggle_visibleZtoggle_colorsr   plotZ	saveimage)r    ZdtzdxdyZdzZrzr"   r"   r#   updateg   s   













zPlotController.updatec                 C      | j d r| jS | jS Nr   )r   modified_mouse_sensitivitynormal_mouse_sensitivityr    r"   r"   r#   get_mouse_sensitivity      
z$PlotController.get_mouse_sensitivityc                 C   r2   r3   )r   modified_key_sensitivitynormal_key_sensitivityr6   r"   r"   r#   r)      r8   z"PlotController.get_key_sensitivityc                 C   "   || j v rd| j| j | < d S d S )NTkeymapr   r    symbol	modifiersr"   r"   r#   on_key_press      
zPlotController.on_key_pressc                 C   r;   )NFr<   r>   r"   r"   r#   on_key_release   rB   zPlotController.on_key_releasec                 C   s   |t @ r$|  r| j|||| n| j|| || f||f|   |t@ r:| jddg| j | |  d  |t	@ rI| j|||| d S d S )Nr%   g      4@)
r   r*   r   r+   Zspherical_rotater7   r   r(   r   r   )r    xyr/   r0   Zbuttonsr@   r"   r"   r#   on_mouse_drag   s   
zPlotController.on_mouse_dragc                 C   s$   | j ddg| j | |   d S )Nr%   rD   )r   r(   r   r7   )r    rE   rF   r/   r0   r"   r"   r#   on_mouse_scroll   s   zPlotController.on_mouse_scrollc                 C   sB   | j jj}|D ]}t|| jdkst|| jdkr dS qdS )Nr%   r&   FT)r   r-   Z
_functionslenZi_varsZd_vars)r    Z	functionsir"   r"   r#   r*      s   
$zPlotController.is_2DN)7__name__
__module____qualname__r5   r4   r:   r9   r   r   AZNUM_4r   DZNUM_6ZUPWZNUM_8ZDOWNSZNUM_2ZZNUM_1CZNUM_3QZNUM_7EZNUM_9XZNUM_5ZNUM_ADDZPAGEUPRZNUM_SUBTRACTZPAGEDOWNFZRSHIFTZLSHIFTZF1ZF2ZF3ZF4ZF5ZF6ZF8r=   r$   r1   r7   r)   rA   rC   rG   rH   r*   r"   r"   r"   r#   r      s    	
 !#$%'(*+,-/5$Ir   N)
Zpyglet.windowr   Zpyglet.window.mouser   r   r   Zsympy.plotting.pygletplot.utilr   r   r   r"   r"   r"   r#   <module>   s    