
    g,                         d dl 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mZ d dlmZmZmZ d dlZ G d d	e          ZdS )
    N)S)ColorScheme)PlotMode)is_sequence)sleep)ThreadEventRLockc                      e Zd ZdZ	 	 d\  ZZ	 g Z	 g Z	 dZ	 	 ddddZ		 dZ
	 d	Zd
ZdZd Zd Zd Zd Zd ZdddZd Zed             Zed             Zd Zd Zd Zd Zed             Zd Zd Zd Zd Zd  Z d! Z!d" Z"d# Z#d$ Z$d% Z%d& Z&d' Z'ed(             Z(d) Z)ed*             Z* e+e'e(          Z, e+e)e*          Z- e+e!          Z. e+e"          Z/ e+e#          Z0 e+e$          Z1 e+e%          Z2 e+e&          Z3d+ Z4d, Z5dS )-PlotModeBasez
    Intended parent class for plotting
    modes. Provides base functionality
    in conjunction with its parent,
    PlotMode.
    ) r   F         )	wireframesolidbothr   )333333?r   r   )333333?r   g?xyc                     | j         r;	 |                                 }|S # t          $ r t          j        d           Y nw xY w|                                 S )NzQ
Warning: creating lambda evaluator failed. Falling back on SymPy subs evaluator.)use_lambda_eval_get_lambda_evaluator	Exceptionwarningswarn_get_sympy_evaluator)selfes     d/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/plotting/pygletplot/plot_mode_base.py_get_evaluatorzPlotModeBase._get_evaluatorm   s     	@@..00 @ @ @ ? @ @ @ @ @@ ((***s    A A c                     t                      NNotImplementedErrorr   s    r    r   z!PlotModeBase._get_sympy_evaluatorw       !###    c                     t                      r#   r$   r&   s    r    r   z"PlotModeBase._get_lambda_evaluatorz   r'   r(   c                     t                      r#   r$   r&   s    r    _on_calculate_vertsz PlotModeBase._on_calculate_verts}   r'   r(   c                     t                      r#   r$   r&   s    r    _on_calculate_cvertsz!PlotModeBase._on_calculate_cverts   r'   r(   N)bounds_callbackc                h   g | _         g | _        t          j        t          j        dgt          j        t          j        dgt          j        t          j        dgg| _        t          j        t          j        dgt          j        t          j        dgt          j        t          j        dgg| _        t                      | _        t                      | _
        t                      | _        d| _        d| _        d| _        d| _        d| _        dg| _        dg| _        d | _        d | _        g | _        g | _        | j                            dd           d u | _        | j                            dd          | _        | j                            dd	          | _        || _        |                                  d S )
Nr   g        r   use_sympy_evalstyler   colorrainbow)vertscvertsr   InfinityNegativeInfinityboundscboundsr
   
_draw_lockr	   _calculating_verts_calculating_cverts_calculating_verts_pos_calculating_verts_len_calculating_cverts_pos_calculating_cverts_len_max_render_stack_size_draw_wireframe_draw_solid_style_colorpredrawpostdrawoptionspopr   r2   r3   r.   _on_calculate)r   r.   argskwargss       r    __init__zPlotModeBase.__init__   sm   

A$6:
A$6:
A$6:< Q%7;Q%7;Q%7;=  ''"'''#(77 &)#&)#'*$'*$&'# "t4#|//0@$GG4O\%%gr22
\%%gy99
.r(   c                       fd}|S )Nc                     | j                                          	  | g|R i |}|| j                                          S # | j                                          w xY wr#   )r;   acquirerelease)r   rL   rM   rfs       r    wz$PlotModeBase.synchronized.<locals>.w   so    O##%%%*Ad,T,,,V,,''))))''))))s   A A )rT   rU   s   ` r    synchronizedzPlotModeBase.synchronized   s#    	* 	* 	* 	* 	* r(   c                     t          |          sJ | j                            |           t          | j                  | j        k    r
| j        d= dS dS z
        Push a function which performs gl commands
        used to build a display list. (The list is
        built outside of the function)
        r   N)callablerC   appendlenrB   r   functions     r    push_wireframezPlotModeBase.push_wireframe   sb     !!!!!##H---t#$$t'BBB$Q''' CBr(   c                     t          |          sJ | j                            |           t          | j                  | j        k    r
| j        d= dS dS rY   )rZ   rD   r[   r\   rB   r]   s     r    
push_solidzPlotModeBase.push_solid   sa     !!!!!)))t  4#>>> ### ?>r(   c                     t          j        d          }t          j        |t           j                    |             t          j                     |S )Nr   )pgl
glGenLists	glNewList
GL_COMPILE	glEndList)r   r^   dls      r    _create_display_listz!PlotModeBase._create_display_list   s@    ^Ab#.)))


	r(   c                 Z   |d         }|dk    rdS t          |          r|                     |          }||f|d<   |S t          |          dk    rZt          j        t          j        |d                   k    r|d         S |                     |d                   }||d         f|d<   |S d S )Nr0   r   r   r   )rZ   ri   r\   rc   GL_TRUEglIsList)r   render_stacktoprh   s       r    _render_stack_topzPlotModeBase._render_stack_top   s    2"992c]] 		**3//B "CyLIXX]]{cl3q622221v**3q622B "CF|LI ]r(   c                     t          j        t           j        t           j        z             t          j        t           j        t           j                   t          j        |           t          j                     d S r#   )	rc   glPushAttribGL_ENABLE_BITGL_POLYGON_BITglPolygonModeGL_FRONT_AND_BACKGL_FILL
glCallListglPopAttribr   rh   s     r    _draw_solid_display_listz%PlotModeBase._draw_solid_display_list   sZ    *S-??@@@#/===rr(   c                 b   t          j        t           j        t           j        z             t          j        t           j        t           j                   t          j        t           j                   t          j	        dd           t          j
        |           t          j                     d S )Ng{Gztg      I)rc   rq   rr   rs   rt   ru   GL_LINEglEnableGL_POLYGON_OFFSET_LINEglPolygonOffsetrw   rx   ry   s     r    _draw_wireframe_display_listz)PlotModeBase._draw_wireframe_display_list   s    *S-??@@@#/===S/000FE***rr(   c                 Z   | j         D ]}t          |          r
 |             | j        r| j        | j                 }n| j        | j                 }|dz  rW|                     | j                  }|dk    r7t          j        t          j	        |          k    r| 
                    |           |dz  rW|                     | j                  }|dk    r7t          j        t          j	        |          k    r|                     |           | j        D ]}t          |          r
 |             d S )Nr   r   r   )rG   rZ   style_overridestylesrE   ro   rD   rc   rk   rl   rz   rC   r   rH   )r   rT   r2   rh   s       r    drawzPlotModeBase.draw   s6    	 	A{{  	-K 34EEK,E19 	2''(899BAvv#+b)9)999--b11119 	6''(<==BAvv#+b)9)99911"555 	 	A{{ 	 	r(   c                 T    t          | j                                                   d S N)target)r   _calculate_cvertsstart)r   r3   s     r    _on_change_colorzPlotModeBase._on_change_color  s(    d,---3355555r(   c                 T    t          | j                                                   d S r   )r   _calculate_allr   r&   s    r    rK   zPlotModeBase._on_calculate  s(    d)***0022222r(   c                 V    |                                   |                                  d S r#   )_calculate_vertsr   r&   s    r    r   zPlotModeBase._calculate_all  s,         r(   c                 \   | j                                         rd S | j                                          	 |                                  | j                                          n# | j                                          w xY wt          | j                  r|                                  d S d S r#   )r<   is_setsetr+   clearrZ   r.   r&   s    r    r   zPlotModeBase._calculate_verts  s    "))++ 	F##%%%	,$$&&&#))++++D#))++++D()) 	#  """""	# 	#s   A$ $A?c                    | j                                         rd S | j                                        r(t          d           | j                                        (| j                                         	 |                                  | j                                         d S # | j                                         w xY w)Nr   )r<   r   r=   r   r   r-   r   r&   s    r    r   zPlotModeBase._calculate_cverts  s    "))++ 	F&--// 	!HHH &--// 	 $$&&&	-%%'''$**,,,,,D$**,,,,s   7B& &Cc                 4    | j                                         S r#   )r<   r   r&   s    r    _get_calculating_vertsz#PlotModeBase._get_calculating_verts%  s    &--///r(   c                     | j         S r#   )r>   r&   s    r    _get_calculating_verts_posz'PlotModeBase._get_calculating_verts_pos(      **r(   c                     | j         S r#   )r?   r&   s    r    _get_calculating_verts_lenz'PlotModeBase._get_calculating_verts_len+  r   r(   c                 4    | j                                         S r#   )r=   r   r&   s    r    _get_calculating_cvertsz$PlotModeBase._get_calculating_cverts.  s    '..000r(   c                     | j         S r#   )r@   r&   s    r    _get_calculating_cverts_posz(PlotModeBase._get_calculating_cverts_pos1      ++r(   c                     | j         S r#   )rA   r&   s    r    _get_calculating_cverts_lenz(PlotModeBase._get_calculating_cverts_len4  r   r(   c                     | j         S r#   )rE   r&   s    r    
_get_stylezPlotModeBase._get_style8  
    {r(   c                     |d S |dk    rEd}| j         D ]-}|j        
t          |t          |j                  g          }.ddg|dk             }|| j        vrt          d          || j        k    rd S || _        d S )Nr   r   r   r   (   z v should be there in self.styles)	intervalsv_stepsmaxintr   
ValueErrorrE   )r   vstep_maxis       r    
_set_stylezPlotModeBase._set_style;  s    9F77H^ ; ;9$#ai..9::!(R-0ADK?@@@Fr(   c                     | j         S r#   )rF   r&   s    r    
_get_colorzPlotModeBase._get_colorL  r   r(   c                 D   	 |(t          |          r
t          | }nt          |          }t          |          t          | j                  k    rd S |                     |           || _        d S # t
          $ r$}t          dt          |          z            d }~ww xY w)NzColor change failed. Reason: %s)r   r   reprrF   r   r   RuntimeErrorstr)r   r   r   s      r    
_set_colorzPlotModeBase._set_colorO  s    	9}q>> '#QAA#AAAww$t{++++!!!$$$DKKK 	9 	9 	9  -03A 8 9 9 9	9s   AA1 A1 1
B;BBc                     d                     d | j        D                       }d| j        z  }d                     ||g          S )N, c              3   4   K   | ]}t          |          V  d S r#   r   .0ds     r    	<genexpr>z'PlotModeBase.__str__.<locals>.<genexpr>m  (      22c!ff222222r(   z	'mode=%s')joind_varsprimary_alias)r   rT   os      r    __str__zPlotModeBase.__str__l  sG    II22dk222224-.yy!Q   r(   c                 n   d                     d | j        D                       }d                     d | j        D                       }d| j        fdt	          | j                  fdt	          | j                  fg}dd                     d	 |D                       z  }d                     |||g          S )
Nr   c              3   4   K   | ]}t          |          V  d S r#   r   r   s     r    r   z(PlotModeBase.__repr__.<locals>.<genexpr>r  r   r(   c              3   4   K   | ]}t          |          V  d S r#   r   )r   r   s     r    r   z(PlotModeBase.__repr__.<locals>.<genexpr>s  s(      55c!ff555555r(   moder3   r2   z'%s'z; c              3   6   K   | ]\  }}|d k    |d|V  dS )None=NrV   )r   kr   s      r    r   z(PlotModeBase.__repr__.<locals>.<genexpr>x  sB        >  >$(Aqf ,-11aa 01< >  >r(   )r   r   r   r   r   r3   r2   )r   rT   r   r   r   s        r    __repr__zPlotModeBase.__repr__q  s    II22dk22222II55dn55555d()s4:'s4:') dii  >  >,- >  >  > > > ?yy!Q###r(   )6__name__
__module____qualname____doc__i_varsr   r   aliases
is_defaultr   r   default_wireframe_colordefault_solid_colordefault_rot_presetr!   r   r   r+   r-   rN   rW   r_   ra   ri   ro   rz   r   r   r   rK   r   r   r   r   r   r   r   r   r   r   r   r   r   propertyr2   r3   calculating_vertscalculating_verts_poscalculating_verts_lencalculating_cvertscalculating_cverts_poscalculating_cverts_lenr   r   rV   r(   r    r   r      s>        
 NFF I G J
 q!44F N 1)+ + +$ $ $$ $ $$ $ $$ $ $ /3 " " " " "H   	( 	( \	( 	$ 	$ \	$           \,6 6 63 3 3! ! !	# 	# 	#	- 	- 	-0 0 0+ + ++ + +1 1 1, , ,, , ,     \    9 9 \9 HZ,,EHZ,,E !788$H%?@@$H%?@@!"9::%X&ABB%X&ABB! ! !
	$ 	$ 	$ 	$ 	$r(   r   )	pyglet.glglrc   
sympy.corer   &sympy.plotting.pygletplot.color_schemer   #sympy.plotting.pygletplot.plot_moder   sympy.utilities.iterablesr   timer   	threadingr   r	   r
   r   r   rV   r(   r    <module>r      s                > > > > > > 8 8 8 8 8 8 1 1 1 1 1 1       * * * * * * * * * * o$ o$ o$ o$ o$8 o$ o$ o$ o$ o$r(   