
    \h,                     ~    S SK Jr  S SKJr  S SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJrJrJr  S SKr " S S	\5      rg)
    N)S)ColorScheme)PlotMode)is_sequence)sleep)ThreadEventRLockc                      \ rS rSrSr  Su  rr / r / r Sr	  SSSS.r
 S	r S
rSrSrS rS rS rS rS rSS.S jrS r\S 5       r\S 5       rS rS rS rS r\S 5       rS rS rS rS  r S! r!S" r"S# r#S$ r$S% r%S& r&S' r'S( r(\S) 5       r)S* r*\S+ 5       r+\," \(\)5      r-\," \*\+5      r.\," \"5      r/\," \#5      r0\," \$5      r1\," \%5      r2\," \&5      r3\," \'5      r4S, r5S- r6S.r7g)/PlotModeBase   zq
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                     U R                   (       a   U R                  5       nU$ U R                  5       $ ! [         a(    [        R                  " S5         U R                  5       $ f = f)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     `/var/www/auris/envauris/lib/python3.13/site-packages/sympy/plotting/pygletplot/plot_mode_base.py_get_evaluatorPlotModeBase._get_evaluatorm   si    @..0 ((**  @ ? @((**@s   5  A'&A'c                     [        5       eNNotImplementedErrorr   s    r!   r   !PlotModeBase._get_sympy_evaluatorw       !##    c                     [        5       er%   r&   r(   s    r!   r   "PlotModeBase._get_lambda_evaluatorz   r*   r+   c                     [        5       er%   r&   r(   s    r!   _on_calculate_verts PlotModeBase._on_calculate_verts}   r*   r+   c                     [        5       er%   r&   r(   s    r!   _on_calculate_cverts!PlotModeBase._on_calculate_cverts   r*   r+   N)bounds_callbackc                   / U l         / U l        [        R                  [        R                  S/[        R                  [        R                  S/[        R                  [        R                  S//U l        [        R                  [        R                  S/[        R                  [        R                  S/[        R                  [        R                  S//U l        [        5       U l        [        5       U l
        [        5       U l        SU l        SU l        SU l        SU l        SU l        S/U l        S/U l        S U l        S U l        / U l        / U l        U R.                  R1                  SS 5      S L U l        U R.                  R1                  SS5      U l        U R.                  R1                  SS	5      U l        Xl        U R;                  5         g )
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   r8   r9   r4   _on_calculate)r   r4   argskwargss       r!   __init__PlotModeBase.__init__   st   


A$6$6:

A$6$6:

A$6$6:< Q%7%7;Q%7%7;Q%7%7;=  '"''#(7 &)#&)#'*$'*$&'# "t4#||//0@$G4O\\%%gr2
\\%%gy9
.r+   c                    ^  U 4S jnU$ )Nc                    > U R                   R                  5          T" U /UQ70 UD6nUU R                   R                  5         $ ! U R                   R                  5         f = fr%   )rA   acquirerelease)r   rR   rS   rfs       r!   w$PlotModeBase.synchronized.<locals>.w   sP    OO##%*d,T,V,'')'')s   A A! )r[   r\   s   ` r!   synchronizedPlotModeBase.synchronized   s    	* r+   c                     [        U5      (       d   eU R                  R                  U5        [        U R                  5      U R                  :  a  U R                  S	 ggzv
Push a function which performs gl commands
used to build a display list. (The list is
built outside of the function)
r   N)callablerI   appendlenrH   r   functions     r!   push_wireframePlotModeBase.push_wireframe   sV     !!!!##H-t##$t'B'BB$$Q' Cr+   c                     [        U5      (       d   eU R                  R                  U5        [        U R                  5      U R                  :  a  U R                  S	 ggrb   )rc   rJ   rd   re   rH   rf   s     r!   
push_solidPlotModeBase.push_solid   sU     !!!!)t 4#>#>>  # ?r+   c                     [         R                  " S5      n[         R                  " U[         R                  5        U" 5         [         R                  " 5         U$ )Nr   )pgl
glGenLists	glNewList
GL_COMPILE	glEndList)r   rg   dls      r!   _create_display_list!PlotModeBase._create_display_list   s5    ^^Ab#..)
	r+   c                 *   US   nUS:X  a  g[        U5      (       a  U R                  U5      nX24US'   U$ [        U5      S:X  aO  [        R                  [        R
                  " US   5      :X  a  US   $ U R                  US   5      nX2S   4US'   U$ g )Nr6   r   r   r   )rc   rt   re   rn   GL_TRUEglIsList)r   render_stacktoprs   s       r!   _render_stack_topPlotModeBase._render_stack_top   s    2"9c]]**3/B "yLIX]{{cll3q6221v**3q62B "F|LI r+   c                 *   [         R                  " [         R                  [         R                  -  5        [         R                  " [         R
                  [         R                  5        [         R                  " U5        [         R                  " 5         g r%   )	rn   glPushAttribGL_ENABLE_BITGL_POLYGON_BITglPolygonModeGL_FRONT_AND_BACKGL_FILL
glCallListglPopAttribr   rs   s     r!   _draw_solid_display_list%PlotModeBase._draw_solid_display_list   sQ    **S-?-??@#//=rr+   c                    [         R                  " [         R                  [         R                  -  5        [         R                  " [         R
                  [         R                  5        [         R                  " [         R                  5        [         R                  " SS5        [         R                  " U5        [         R                  " 5         g )Ng{Gztg      I)rn   r~   r   r   r   r   GL_LINEglEnableGL_POLYGON_OFFSET_LINEglPolygonOffsetr   r   r   s     r!   _draw_wireframe_display_list)PlotModeBase._draw_wireframe_display_list   ss    **S-?-??@#//=S//0FE*rr+   c                    U R                    H  n[        U5      (       d  M  U" 5         M     U R                  (       a  U R                  U R                     nOU R                  U R                     nUS-  (       aZ  U R                  U R                  5      nUS:  a9  [        R                  [        R                  " U5      :X  a  U R                  U5        US-  (       aZ  U R                  U R                  5      nUS:  a9  [        R                  [        R                  " U5      :X  a  U R                  U5        U R                   H  n[        U5      (       d  M  U" 5         M     g )Nr   r   r   )rM   rc   style_overridestylesrK   r{   rJ   rn   rw   rx   r   rI   r   rN   )r   r[   r8   rs   s       r!   drawPlotModeBase.draw   s    A{{  KK 3 34EKK,E19''(8(89BAv#++b)99--b119''(<(<=BAv#++b)9911"5A{{ r+   c                 F    [        U R                  S9R                  5         g N)target)r   _calculate_cvertsstart)r   r9   s     r!   _on_change_colorPlotModeBase._on_change_color  s    d,,-335r+   c                 F    [        U R                  S9R                  5         g r   )r   _calculate_allr   r(   s    r!   rQ   PlotModeBase._on_calculate  s    d))*002r+   c                 D    U R                  5         U R                  5         g r%   )_calculate_vertsr   r(   s    r!   r   PlotModeBase._calculate_all  s     r+   c                 b   U R                   R                  5       (       a  g U R                   R                  5          U R                  5         U R                   R	                  5         [        U R                  5      (       a  U R                  5         g g ! U R                   R	                  5         f = fr%   )rB   is_setsetr/   clearrc   r4   r(   s    r!   r   PlotModeBase._calculate_verts  s    ""))++##%	,$$&##))+D(())  " * ##))+s   B B.c                    U R                   R                  5       (       a  g U R                  R                  5       (       a,  [        S5        U R                  R                  5       (       a  M,  U R                  R	                  5          U R                  5         U R                  R                  5         g ! U R                  R                  5         f = f)Nr   )rB   r   rC   r   r   r2   r   r(   s    r!   r   PlotModeBase._calculate_cverts  s    ""))++&&--//!H &&--//  $$&	-%%'$$**,D$$**,s   B2 2Cc                 6    U R                   R                  5       $ r%   )rB   r   r(   s    r!   _get_calculating_verts#PlotModeBase._get_calculating_verts%  s    &&--//r+   c                     U R                   $ r%   )rD   r(   s    r!   _get_calculating_verts_pos'PlotModeBase._get_calculating_verts_pos(      ***r+   c                     U R                   $ r%   )rE   r(   s    r!   _get_calculating_verts_len'PlotModeBase._get_calculating_verts_len+  r   r+   c                 6    U R                   R                  5       $ r%   )rC   r   r(   s    r!   _get_calculating_cverts$PlotModeBase._get_calculating_cverts.  s    ''..00r+   c                     U R                   $ r%   )rF   r(   s    r!   _get_calculating_cverts_pos(PlotModeBase._get_calculating_cverts_pos1      +++r+   c                     U R                   $ r%   )rG   r(   s    r!   _get_calculating_cverts_len(PlotModeBase._get_calculating_cverts_len4  r   r+   c                     U R                   $ r%   )rK   r(   s    r!   
_get_stylePlotModeBase._get_style8      {{r+   c                    Uc  g US:X  aN  SnU R                    H2  nUR                  c  M  [        U[        UR                  5      /5      nM4     SS/US:     nXR                  ;  a  [        S5      eXR                  :X  a  g Xl        g )Nr   r   r   r   (   z v should be there in self.styles)	intervalsv_stepsmaxintr   
ValueErrorrK   )r   vstep_maxis       r!   
_set_stylePlotModeBase._set_style;  s    97H^^99$#aii.9: $ !(R-0AKK?@@r+   c                     U R                   $ r%   )rL   r(   s    r!   
_get_colorPlotModeBase._get_colorL  r   r+   c                     Ub$  [        U5      (       a	  [        U6 nO[        U5      n[        U5      [        U R                  5      :X  a  g U R	                  U5        Xl        g ! [
         a  n[        S[        U5      -  5      eS nAff = f)NzColor change failed. Reason: %s)r   r   reprrL   r   r   RuntimeErrorstr)r   r   r    s      r!   
_set_colorPlotModeBase._set_colorO  s    	9}q>>#QA#AAAw$t{{++!!!$K 	9  -03A 8 9 9	9s   A	A$ A$ $
B
.BB
c                     SR                  S U R                   5       5      nSU R                  -  nSR                  X/5      $ )N, c              3   8   #    U  H  n[        U5      v   M     g 7fr%   r   .0ds     r!   	<genexpr>'PlotModeBase.__str__.<locals>.<genexpr>m       2kc!ffk   z	'mode=%s')joind_varsprimary_alias)r   r[   os      r!   __str__PlotModeBase.__str__l  s;    II2dkk224--.yy!  r+   c                 \   SR                  S U R                   5       5      nSR                  S U R                   5       5      nSU R                  4S[	        U R
                  5      4S[	        U R                  5      4/nSSR                  S	 U 5       5      -  nSR                  XU/5      $ )
Nr   c              3   8   #    U  H  n[        U5      v   M     g 7fr%   r   r   s     r!   r   (PlotModeBase.__repr__.<locals>.<genexpr>r  r   r   c              3   8   #    U  H  n[        U5      v   M     g 7fr%   r   )r   r   s     r!   r   r   s  s     5nc!ffnr   moder9   r8   z'%s'z; c              3   H   #    U  H  u  pUS :w  d  M  U< SU< 3v   M     g7f)None=Nr^   )r   kr   s      r!   r   r   x  s&       >,-DAf !11a 0,-s   "")r   r   r   r   r   r9   r8   )r   r[   r   r   r   s        r!   __repr__PlotModeBase.__repr__q  s    II2dkk22II5dnn55d(()s4::'s4::') dii  >,- > > ?yy!##r+   )rC   rG   rF   rB   rE   rD   rL   rA   rJ   rI   rH   rK   r?   r4   r@   r9   r<   rN   rM   r8   r   r;   )8__name__
__module____qualname____firstlineno____doc__i_varsr   r   aliases
is_defaultr   r   default_wireframe_colordefault_solid_colordefault_rot_presetr"   r   r   r/   r2   rT   r_   rh   rk   rt   r{   r   r   r   r   rQ   r   r   r   r   r   r   r   r   r   r   r   r   r   propertyr8   r9   calculating_vertscalculating_verts_poscalculating_verts_lencalculating_cvertscalculating_cverts_poscalculating_cverts_lenr   r   __static_attributes__r^   r+   r!   r   r      s   
 NFF I G J
 q!4F N 1)+$$$$ /3 "H 	( 	( 	$ 	$  ,63!	#	-0++1,,    9 9 Z,EZ,E !78$%?@$%?@!"9:%&AB%&AB!
	$r+   r   )	pyglet.glglrn   
sympy.corer   &sympy.plotting.pygletplot.color_schemer   #sympy.plotting.pygletplot.plot_moder   sympy.utilities.iterablesr   timer   	threadingr   r	   r
   r   r   r^   r+   r!   <module>r     s.      > 8 1  * * o$8 o$r+   