Ë
    ¯·gáF  ã                   óì   — d Z ddlZddlZddlZ ej                  d«       ddlZddlZddlmZ ddlm	Z	m
Z
mZmZ  G d„ dej                  j                  «      Z G d„ d	e«      Zd
„ Zedk(  r e«        yy)a  
Description:

  This provides a VTK widget for pyGtk.  This embeds a vtkRenderWindow
  inside a GTK widget.  This is based on GtkVTKRenderWindow.py.

  The extensions here allow the use of gtkglext rather than gtkgl and
  pygtk-2 rather than pygtk-0.  It requires pygtk-2.0.0 or later.

  There is a working example at the bottom.

Credits:

  John Hunter <jdhunter@ace.bsd.uchicago.edu> developed and tested
  this code based on VTK's GtkVTKRenderWindow.py and extended it to
  work with pygtk-2.0.0.

License:

  VTK license.

é    Nz2.0)Úgdk)ÚvtkActorÚvtkCellPickerÚvtkPropertyÚvtkRenderWindowc                   óŽ   — e 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d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚGtkGLExtVTKRenderWindowBasea|   A base class that enables one to embed a vtkRenderWindow into
    a pyGTK widget.  This class embeds the RenderWindow correctly.
    Provided are some empty methods that can be overloaded to provide
    a user defined interaction behaviour.  The event handling
    functions have names that are somewhat similar to the ones in the
    vtkInteractorStyle class included with VTK. c                 ó^  — t         j                  j                  j                  | «       | j	                  t         j
                  «       t        «       | _        d| _        d| _	        d| _
        | j                  «        | j                  t         j                  «       | j                  dd«       y )Nr   é   g-Cëâ6?i,  )ÚgtkÚgtkglÚDrawingAreaÚ__init__Úset_double_bufferedÚFALSEr   Ú_RenderWindowÚ%_GtkGLExtVTKRenderWindowBase__CreatedÚ_DesiredUpdateRateÚ_StillUpdateRateÚConnectSignalsÚ	set_flagsÚ	CAN_FOCUSÚset_size_request©ÚselfÚargss     úFlib/python3.12/site-packages/vtkmodules/gtk/GtkGLExtVTKRenderWindow.pyr   z$GtkGLExtVTKRenderWindowBase.__init__*   s~   € Ü�	‰	×Ñ×&Ñ& tÔ,Ø× Ñ ¤§¡Ô+ä,Ó.ˆÔàˆŒð #%ˆÔØ &ˆÔà×ÑÔð 	�‰”s—}‘}Ô%à×Ñ˜c 3Õ'ó    c                 ó`  — | j                  d| j                  «       | j                  d| j                  «       | j                  d| j                  «       | j                  d| j                  «       | j                  d| j
                  «       | j                  d| j                  «       | j                  d| j                  «       | j                  d| j                  «       | j                  d	| j                  «       | j                  d
| j                  «       | j                  t        j                  t        j                  z  t        j                  z  t        j                   z  t        j"                  z  t        j$                  z  t        j&                  z  t        j(                  z  «       y )NÚrealizeÚexpose_eventÚconfigure_eventÚbutton_press_eventÚbutton_release_eventÚmotion_notify_eventÚenter_notify_eventÚleave_notify_eventÚkey_press_eventÚdelete_event)ÚconnectÚ	OnRealizeÚOnExposeÚOnConfigureÚOnButtonDownÚ
OnButtonUpÚOnMouseMoveÚOnEnterÚOnLeaveÚ
OnKeyPressÚ	OnDestroyÚ
add_eventsr   ÚEXPOSURE_MASKÚBUTTON_PRESS_MASKÚBUTTON_RELEASE_MASKÚKEY_PRESS_MASKÚPOINTER_MOTION_MASKÚPOINTER_MOTION_HINT_MASKÚENTER_NOTIFY_MASKÚLEAVE_NOTIFY_MASK©r   s    r   r   z*GtkGLExtVTKRenderWindowBase.ConnectSignals=   sC  € Ø�‰�Y §¡Ô/Ø�‰�^ T§]¡]Ô3Ø�‰Ð&¨×(8Ñ(8Ô9Ø�‰Ð)¨4×+<Ñ+<Ô=Ø�‰Ð+¨T¯_©_Ô=Ø�‰Ð*¨D×,<Ñ,<Ô=Ø�‰Ð)¨4¯<©<Ô8Ø�‰Ð)¨4¯<©<Ô8Ø�‰Ð&¨¯©Ô8Ø�‰�^ T§^¡^Ô4Ø�‰œ×)Ñ)Ü×-Ñ-ñ.ä×/Ñ/ñ0ô ×*Ñ*ñ+ô ×/Ñ/ñ	0ô
 ×4Ñ4ñ5ô ×-Ñ-ñ.ô ×-Ñ-ñ.õ 	/r   c                 ó   — | j                   S ©N)r   r>   s    r   ÚGetRenderWindowz+GtkGLExtVTKRenderWindowBase.GetRenderWindowQ   s   € Ø×!Ñ!Ð!r   c                 ó¢   — | j                   j                  «       j                  «        | j                   j                  «       j                  «       S r@   )r   ÚGetRenderersÚInitTraversalÚGetNextItemr>   s    r   ÚGetRendererz'GtkGLExtVTKRenderWindowBase.GetRendererT   s;   € Ø×Ñ×'Ñ'Ó)×7Ñ7Ô9Ø×!Ñ!×.Ñ.Ó0×<Ñ<Ó>Ð>r   c                 ó   — || _         y©úKMirrors the method with the same name in
        vtkRenderWindowInteractor.N©r   ©r   Úrates     r   ÚSetDesiredUpdateRatez0GtkGLExtVTKRenderWindowBase.SetDesiredUpdateRateX   s   € ð #'ˆÕr   c                 ó   — | j                   S ©rI   rJ   r>   s    r   ÚGetDesiredUpdateRatez0GtkGLExtVTKRenderWindowBase.GetDesiredUpdateRate]   s   € ð ×&Ñ&Ð&r   c                 ó   — || _         yrH   ©r   rK   s     r   ÚSetStillUpdateRatez.GtkGLExtVTKRenderWindowBase.SetStillUpdateRateb   s   € ð !%ˆÕr   c                 ó   — | j                   S rO   rR   r>   s    r   ÚGetStillUpdateRatez.GtkGLExtVTKRenderWindowBase.GetStillUpdateRateg   s   € ð ×$Ñ$Ð$r   c                 óR   — | j                   r| j                  j                  «        y y r@   )r   r   ÚRenderr>   s    r   rW   z"GtkGLExtVTKRenderWindowBase.Renderl   s    € Ø�>Š>Ø×Ñ×%Ñ%Õ'ð r   c                 óp  — | j                   dk(  r˜| j                  «        t        j                  dk(  r*t	        | j
                  j                  j                  «      }n)t	        | j
                  j                  j                  «      }| j                  j                  |«       d| _         t        j                  S )Nr   Úwin32é   )r   r    ÚsysÚplatformÚstrÚwidgetÚwindowÚhandleÚxidr   ÚSetWindowInfor   ÚTRUE)r   r   Úwin_ids      r   r+   z%GtkGLExtVTKRenderWindowBase.OnRealizep   s{   € Ø�>‰>˜QÒà�L‰LŒNÜ�|‰|˜WÒ$Ü˜TŸ[™[×/Ñ/×6Ñ6Ó7‘ä˜TŸ[™[×/Ñ/×3Ñ3Ó4�Ø×Ñ×,Ñ,¨VÔ4ØˆDŒNÜ�x‰xˆr   c                 ó   — | j                   S r@   )r   r>   s    r   ÚCreatedz#GtkGLExtVTKRenderWindowBase.Created|   s   € Ø�~‰~Ðr   c                 ó°   — || _         | j                  j                  |j                  |j                  «       | j                  «        t        j                  S r@   )r^   r   ÚSetSizeÚwidthÚheightrW   r   rc   )r   r^   Úevents      r   r-   z'GtkGLExtVTKRenderWindowBase.OnConfigure   s9   € ØˆŒØ×Ñ×"Ñ" 5§;¡;°·±Ô=Ø�‰ŒÜ�x‰xˆr   c                 óB   — | j                  «        t        j                  S r@   )rW   r   rc   r   s     r   r,   z$GtkGLExtVTKRenderWindowBase.OnExpose…   s   € Ø�‰ŒÜ�x‰xˆr   c                 óf   — | j                  «        | `| j                  «        t        j                  S r@   )Úhider   Údestroyr   rc   r   s     r   r4   z%GtkGLExtVTKRenderWindowBase.OnDestroy‰   s#   € Ø�	‰	ŒØÐØ�‰ŒÜ�x‰xˆr   c                 ól   — | j                   j                  | j                  «       t        j                  S )zMouse button pressed.)r   rM   r   r   rc   ©r   Úwidrk   s      r   r.   z(GtkGLExtVTKRenderWindowBase.OnButtonDown�   s%   € à×Ñ×/Ñ/°×0GÑ0GÔHÜ�x‰xˆr   c                 ól   — | j                   j                  | j                  «       t        j                  S )zMouse button released.)r   rM   r   r   rc   rq   s      r   r/   z&GtkGLExtVTKRenderWindowBase.OnButtonUp”   s%   € à×Ñ×/Ñ/°×0EÑ0EÔFÜ�x‰xˆr   c                 ó"   — t         j                  S )zMouse has moved.©r   rc   rq   s      r   r0   z'GtkGLExtVTKRenderWindowBase.OnMouseMove™   ó   € ä�x‰xˆr   c                 ó"   — t         j                  S )zEntering the vtkRenderWindow.ru   rq   s      r   r1   z#GtkGLExtVTKRenderWindowBase.OnEnter�   rv   r   c                 ó"   — t         j                  S )zLeaving the vtkRenderWindow.ru   rq   s      r   r2   z#GtkGLExtVTKRenderWindowBase.OnLeave¡   rv   r   c                 ó"   — t         j                  S )zKey pressed.ru   rq   s      r   r3   z&GtkGLExtVTKRenderWindowBase.OnKeyPress¥   rv   r   c                 ó"   — t         j                  S )zKey released.ru   rq   s      r   ÚOnKeyReleasez(GtkGLExtVTKRenderWindowBase.OnKeyRelease©   rv   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   rA   rF   rM   rP   rS   rU   rW   r+   rf   r-   r,   r4   r.   r/   r0   r1   r2   r3   r{   © r   r   r	   r	   !   sp   „ ñ4ò(ò&/ò("ò?ò'ò
'ò
%ò
%ò
(ò
òòòòòò
ò
òòòór   r	   c                   óž   — e Zd ZdZd„ Zd„ Zd„ Zdd„Zdd„Zdd„Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚGtkGLExtVTKRenderWindowzˆ An example of a fully functional GtkGLExtVTKRenderWindow that
    is based on the vtkRenderWidget.py provided with the VTK
    sources.c                 ó>  — t         j                  | «       d | _        d | _        d| _        d | _        d| _        d| _        t        «       | _	        d | _
        t        «       | _        | j                  j                  ddd«       d | _        d | _        d| _        d| _        y )Nç      ð?r   rZ   )r	   r   Ú_CurrentRendererÚ_CurrentCameraÚ_CurrentZoomÚ_CurrentLightÚ_ViewportCenterXÚ_ViewportCenterYr   Ú_PickerÚ_PickedAssemblyr   Ú_PickedPropertyÚSetColorÚ_PrePickedPropertyÚ	_OldFocusÚ_LastXÚ_LastYr   s     r   r   z GtkGLExtVTKRenderWindow.__init__´   s’   € Ü#×,Ñ,¨TÔ2à $ˆÔØ"ˆÔØˆÔØ!ˆÔà !ˆÔØ !ˆÔä$“ˆŒØ#ˆÔÜ*›}ˆÔØ×Ñ×%Ñ% a¨¨AÔ.Ø"&ˆÔàˆŒð ˆŒØˆ�r   c                 óp   — | j                   j                  | j                  «       | j                  ||«      S r@   )r   rM   r   ÚStartMotionr   rc   rq   s      r   r.   z$GtkGLExtVTKRenderWindow.OnButtonDownË   s/   € Ø×Ñ×/Ñ/°×0GÑ0GÔHØ×Ñ  UÓ+Ð+r   c                 óp   — | j                   j                  | j                  «       | j                  ||«      S r@   )r   rM   r   Ú	EndMotionr   rc   rq   s      r   r/   z"GtkGLExtVTKRenderWindow.OnButtonUpÐ   s-   € Ø×Ñ×/Ñ/°×0EÑ0EÔFØ�~‰~˜c 5Ó)Ð)r   Nc                 óR  — |j                   t        j                  z  t        j                  k(  rž|j                   t        j                  z  t        j                  k(  r8| j	                  «       }| j                  |d   |d   «       t        j                  S | j	                  «       }| j                  |d   |d   «       t        j                  S |j                   t        j                  z  t        j                  k(  r8| j	                  «       }| j                  |d   |d   «       t        j                  S |j                   t        j                  z  t        j                  k(  r8| j	                  «       }| j                  |d   |d   «       t        j                  S t        j                  S ©Nr   rZ   )Ústater   ÚBUTTON1_MASKÚ
SHIFT_MASKÚget_pointerÚPanÚRotateÚBUTTON2_MASKÚBUTTON3_MASKÚZoomr   r   rc   ©r   rr   rk   Úms       r   r0   z#GtkGLExtVTKRenderWindow.OnMouseMoveÕ   s@  € Ø�[‰[œ3×+Ñ+Ñ+´×0@Ñ0@Ò@Ø—‘œsŸ~™~Ñ-´#·.±.Ò@Ø×$Ñ$Ó&�Ø—‘˜˜1™˜q ™tÔ$ô �x‰xˆð ×$Ñ$Ó&�Ø—‘˜A˜a™D ! A¡$Ô'ô �x‰xˆð �{‰{œS×-Ñ-Ñ-´#×2BÑ2BÒBØ× Ñ Ó"ˆAØ�H‰H�Q�q‘T˜1˜Q™4Ô ô �x‰xˆð �{‰{œS×-Ñ-Ñ-´#×2BÑ2BÒBØ× Ñ Ó"ˆAØ�I‰I�a˜‘d˜A˜a™DÔ!ô �x‰xˆô —9‘9Ðr   c                 ó’   — | j                  «        | j                  «       }| j                  |d   |d   «       t        j                  S r˜   )Ú
grab_focusrœ   ÚUpdateRendererr   rc   )r   rr   rk   Úws       r   r1   zGtkGLExtVTKRenderWindow.OnEnterè   s;   € à�‰ÔØ×ÑÓˆØ×Ñ˜A˜a™D ! A¡$Ô'Ü�x‰xˆr   c                 ór  — |j                   t        j                  d«      k(  s"|j                   t        j                  d«      k(  r | j                  «        t        j
                  S |j                   t        j                  d«      k(  s"|j                   t        j                  d«      k(  r | j                  «        t        j
                  S |j                   t        j                  d«      k(  s"|j                   t        j                  d«      k(  r | j                  «        t        j
                  S |j                   t        j                  d«      k(  s"|j                   t        j                  d«      k(  r8| j                  «       }| j                  |d	   |d
   «       t        j
                  S t        j                  S )NÚrÚRr§   ÚWÚsÚSÚpÚPr   rZ   )Úkeyvalr   Úkeyval_from_nameÚResetr   rc   Ú	WireframeÚSurfacerœ   Ú	PickActorr   r¢   s       r   r3   z"GtkGLExtVTKRenderWindow.OnKeyPressï   s*  € ð
 �L‰LœC×0Ñ0°Ó5Ò5Ø�L‰LœC×0Ñ0°Ó5Ò5Ø�J‰JŒLÜ—8‘8ˆOØ�l‰lœc×2Ñ2°3Ó7Ò7Ø�l‰lœc×2Ñ2°3Ó7Ò7Ø�N‰NÔÜ—8‘8ˆOØ�l‰lœc×2Ñ2°3Ó7Ò7Ø�l‰lœc×2Ñ2°3Ó7Ò7Ø�L‰LŒNÜ—8‘8ˆOØ�l‰lœc×2Ñ2°3Ó7Ò7Ø�l‰lœc×2Ñ2°3Ó7Ò7Ø× Ñ Ó"ˆAØ�N‰N˜1˜Q™4  1¡Ô&Ü—8‘8ˆOä—9‘9Ðr   c                 ó   — | j                   S r@   ©r‡   r>   s    r   ÚGetZoomFactorz%GtkGLExtVTKRenderWindow.GetZoomFactor  s   € Ø× Ñ Ð r   c                 ó   — || _         y r@   r·   )r   Úzfs     r   ÚSetZoomFactorz%GtkGLExtVTKRenderWindow.SetZoomFactor  s
   € ØˆÕr   c                 ó   — | j                   S r@   )r‹   r>   s    r   Ú	GetPickerz!GtkGLExtVTKRenderWindow.GetPicker  s   € Ø�|‰|Ðr   c                 ó  — | j                   r^| j                   }|j                  | j                  j                  «       «       |j	                  | j                  j                  «       «       t        j                  | «       y r@   )rˆ   ÚSetPositionr†   ÚGetPositionÚSetFocalPointÚGetFocalPointr	   rW   )r   Úlights     r   rW   zGtkGLExtVTKRenderWindow.Render  s^   € Ø×ÒØ×&Ñ&ˆEØ×Ñ˜d×1Ñ1×=Ñ=Ó?Ô@Ø×Ñ × 3Ñ 3× AÑ AÓ CÔDä#×*Ñ*¨4Õ0r   c                 ó8  — | j                   j                  j                  «       \  }}| j                  j	                  «       }|j                  «       }d| _        |j                  «        t        d|«      D �]  }|j                  «       }d\  }	}
|dkD  rt        |«      |dz
  z  }	|dkD  r|t        |«      z
  dz
  |dz
  z  }
|j                  «       \  }}}}|	|k\  sŒf|	|k  sŒl|
|k\  sŒr|
|k  sŒx|| _        t        |«      ||z
  z  dz  |z   | _        t        |«      ||z
  z  dz  |z   | _        | j                  j                  «       | _        | j                  j!                  «       }|j                  «        |j                  «       | _         n || _        || _        y)z“
        UpdateRenderer will identify the renderer under the mouse and set
        up _CurrentRenderer, _CurrentCamera, and _CurrentLight.
        Nr   )r   r   rZ   g       @)r^   r_   Úget_sizer   rC   ÚGetNumberOfItemsr…   rD   ÚrangerE   ÚfloatÚGetViewportr‰   rŠ   ÚGetActiveCamerar†   Ú	GetLightsrˆ   r‘   r’   )r   ÚxÚyÚwindowXÚwindowYÚ	renderersÚnumRenderersÚiÚrendererÚvxÚvyÚvpxminÚvpyminÚvpxmaxÚvpymaxÚlightss                   r   r¦   z&GtkGLExtVTKRenderWindow.UpdateRenderer  s’  € ð
  Ÿ;™;×-Ñ-×6Ñ6Ó8‰ˆ�à×&Ñ&×3Ñ3Ó5ˆ	Ø ×1Ñ1Ó3ˆà $ˆÔØ×ÑÔ!Ü�q˜×&ˆAØ ×,Ñ,Ó.ˆHØ‰EˆBˆrØ˜!’Ü˜1“X˜w q™yÑ)�Ø˜!’Øœe A›hÑ& qÑ(¨7°1©9Ñ5�Ø,4×,@Ñ,@Ó,BÑ)ˆV�F˜6 &à�f“  v£Ø�f“  v£Ø(0�Ô%Ü(-¨g«¸¸v¹Ñ(FÀsÑ(JØ)/ñ)0�Ô%ä(-¨g«¸¸v¹Ñ(FÀsÑ(JØ)/ñ)0�Ô%à&*×&;Ñ&;×&KÑ&KÓ&M�Ô#Ø×.Ñ.×8Ñ8Ó:�Ø×$Ñ$Ô&Ø%+×%7Ñ%7Ó%9�Ô"Ùð) 'ð, ˆŒØˆ�r   c                 óø   — | j                   €c| j                  j                  «       }|j                  «       }|j	                  «        t        d|«      D ]  }|j                  «       } n | _         | j                   S ©Nr   )r…   r   rC   rÆ   rD   rÇ   rE   )r   rÐ   rÑ   rÒ   rÓ   s        r   ÚGetCurrentRendererz*GtkGLExtVTKRenderWindow.GetCurrentRenderer?  st   € Ø× Ñ Ð(Ø×*Ñ*×7Ñ7Ó9ˆIØ$×5Ñ5Ó7ˆLà×#Ñ#Ô%Ü˜1˜\Ö*�Ø$×0Ñ0Ó2�Ùð +ð %-ˆDÔ!Ø×$Ñ$Ð$r   c                 ó|   — | j                   €%| j                  «       }|j                  «       | _         | j                   S r@   )r†   rÝ   rÊ   )r   rÓ   s     r   ÚGetCurrentCameraz(GtkGLExtVTKRenderWindow.GetCurrentCameraK  s9   € Ø×ÑÐ&Ø×.Ñ.Ó0ˆHØ"*×":Ñ":Ó"<ˆDÔØ×"Ñ"Ð"r   c                 óv   — |j                   }|j                  }| j                  ||«       t        j                  S r@   )rÌ   rÍ   r¦   r   rc   )r   rr   rk   rÌ   rÍ   s        r   r”   z#GtkGLExtVTKRenderWindow.StartMotionQ  s-   € Ø�G‰GˆØ�G‰GˆØ×Ñ˜A˜aÔ Ü�x‰xˆr   c                 óZ   — | j                   r| j                  «        t        j                  S r@   )r…   rW   r   rc   rq   s      r   r–   z!GtkGLExtVTKRenderWindow.EndMotionW  s   € Ø× Ò Ø�K‰KŒMÜ�x‰xˆr   c                 ób  — | j                   r£| j                  j                  | j                  |z
  «       | j                  j	                  || j
                  z
  «       | j                  j                  «        || _        || _        | j                   j                  «        | j                  «        y y r@   )	r…   r†   ÚAzimuthr‘   Ú	Elevationr’   ÚOrthogonalizeViewUpÚResetCameraClippingRangerW   )r   rÌ   rÍ   s      r   rž   zGtkGLExtVTKRenderWindow.Rotate\  sƒ   € Ø× Ò à×Ñ×'Ñ'¨¯©°a©Ô8Ø×Ñ×)Ñ)¨!¨d¯k©k©/Ô:Ø×Ñ×3Ñ3Ô5àˆDŒKØˆDŒKà×!Ñ!×:Ñ:Ô<Ø�K‰K�Mð !r   c                 óÄ  — | j                   �rÓ| j                   }| j                  }|j                  «       \  }}}|j                  «       \  }}	}
|j	                  «       �rH|j                  ||	|
d«       |j                  «        |j                  «       \  }}}|j                  ||z
  | j                  z   ||z   | j                  z
  |«       |j                  «        |j                  «       \  }}}}|j                  |||«       |j                  |||d«       |j                  «        |j                  «       \  }}}|j                  ||z
  | j                  z   ||z   | j                  z
  |«       |j                  «        |j                  «       \  }}}}|j                  |||«       �n|j                  «       \  }}	}
|j                  ||	|
d«       |j                  «        |j                  «       }|d   }| j                  || j                  z
  z   }| j                   || j                  z
  z
  }|j                  |||«       |j                  «        |j                  «       \  }}}}|dk7  r||z  }||z  }||z  }|j                  ||z
  |z   |	|z
  |	z   |
|z
  |
z   «       |j                  ||z
  |z   |	|z
  |z   |
|z
  |z   «       || _	        || _
        | j#                  «        y y )Nr„   é   ç        )r…   r†   rÀ   rÂ   ÚGetParallelProjectionÚSetWorldPointÚWorldToDisplayÚGetDisplayPointÚSetDisplayPointr‘   r’   ÚDisplayToWorldÚGetWorldPointrÁ   r¿   r‰   rŠ   rW   )r   rÌ   rÍ   rÓ   ÚcameraÚpPoint0ÚpPoint1ÚpPoint2ÚfPoint0ÚfPoint1ÚfPoint2ÚfxÚfyÚfzÚfwÚdPointÚ
focalDepthÚaPoint0ÚaPoint1ÚrPoint0ÚrPoint1ÚrPoint2ÚrPoint3s                          r   r�   zGtkGLExtVTKRenderWindow.Pani  së  € Ø× Ó à×,Ñ,ˆHØ×(Ñ(ˆFØ(.×(:Ñ(:Ó(<Ñ%ˆW�W˜WØ(.×(<Ñ(<Ó(>Ñ%ˆW�W˜Wà×,Ñ,Õ.Ø×&Ñ& w¨w°w¸sÔCØ×'Ñ'Ô)Ø#×3Ñ3Ó5‘��2�bØ×(Ñ(¨¨A©¨d¯k©kÑ)9Ø)+¨A©¨d¯k©kÑ)9Ø)+ô-ð ×'Ñ'Ô)Ø&×4Ñ4Ó6‘��2�b˜Ø×$Ñ$ R¨¨2Ô.à×&Ñ& w¨w°w¸sÔCØ×'Ñ'Ô)Ø#×3Ñ3Ó5‘��2�bØ×(Ñ(¨¨A©¨d¯k©kÑ)9Ø)+¨A©¨d¯k©kÑ)9Ø)+ô-ð ×'Ñ'Ô)Ø&×4Ñ4Ó6‘��2�b˜Ø×"Ñ" 2 b¨Ö,ð -3×,@Ñ,@Ó,BÑ)�˜ à×&Ñ& w¨w°w¸sÔCØ×'Ñ'Ô)à!×1Ñ1Ó3�Ø# A™Y�
à×/Ñ/°1°t·{±{±?ÑC�Ø×/Ñ/°1°t·{±{±?ÑC�à×(Ñ(¨°¸ÔDØ×'Ñ'Ô)à4<×4JÑ4JÓ4LÑ1�˜ ¨Ø˜s’NØ% g™o�GØ% g™o�GØ% g™o�Gà×$Ñ$ g°Ñ&7¸7Ñ%BØ&-°Ñ&7¸7Ñ%BØ&-°Ñ&7¸7Ñ%BôDð ×"Ñ" G¨gÑ$5¸Ñ#@Ø$+¨gÑ$5¸Ñ#@Ø$+¨gÑ$5¸Ñ#@ôBð ˆDŒKØˆDŒKà�K‰K�Mðy !r   c                 óª  — | j                   rÇ| j                   }| j                  }t        j                  dd| j                  |z
  z  «      }| j
                  |z  | _        |j                  «       r%|j                  «       |z  }|j                  |«       n!|j                  |«       |j                  «        || _        || _        | j                  «        y y )NgR¸…ëQð?ç      à?)r…   r†   ÚmathÚpowr’   r‡   rê   ÚGetParallelScaleÚSetParallelScaleÚDollyræ   r‘   rW   )r   rÌ   rÍ   rÓ   rñ   Ú
zoomFactorÚparallelScales          r   r¡   zGtkGLExtVTKRenderWindow.Zoom¨  s²   € Ø× Ò à×,Ñ,ˆHØ×(Ñ(ˆFäŸ™ $¨¨T¯[©[¸1©_Ñ(=Ó?ˆJØ $× 1Ñ 1°JÑ >ˆDÔà×+Ñ+Ô-Ø &× 7Ñ 7Ó 9¸*Ñ D�Ø×'Ñ'¨Õ6à—‘˜ZÔ(Ø×1Ñ1Ô3àˆDŒKØˆDŒKà�K‰K�Mð% !r   c                 óp   — | j                   r| j                   j                  «        | j                  «        y r@   )r…   ÚResetCamerarW   r>   s    r   r²   zGtkGLExtVTKRenderWindow.Reset½  s&   € Ø× Ò Ø×!Ñ!×-Ñ-Ô/à�‰�r   c                 ó  — | j                   j                  «       }|j                  «       }|j                  «        t	        d|«      D ]0  }|j                  «       }|j                  «       j                  «        Œ2 | j                  «        y rÜ   )	r…   Ú	GetActorsrÆ   rD   rÇ   rE   ÚGetPropertyÚSetRepresentationToWireframerW   ©r   ÚactorsÚ	numActorsrÒ   Úactors        r   r³   z!GtkGLExtVTKRenderWindow.WireframeÃ  so   € Ø×&Ñ&×0Ñ0Ó2ˆØ×+Ñ+Ó-ˆ	Ø×ÑÔÜ�q˜Ö#ˆAØ×&Ñ&Ó(ˆEØ×ÑÓ×<Ñ<Õ>ð $ð 	�‰�r   c                 ó  — | j                   j                  «       }|j                  «       }|j                  «        t	        d|«      D ]0  }|j                  «       }|j                  «       j                  «        Œ2 | j                  «        y rÜ   )	r…   r  rÆ   rD   rÇ   rE   r  ÚSetRepresentationToSurfacerW   r  s        r   r´   zGtkGLExtVTKRenderWindow.SurfaceÍ  so   € Ø×&Ñ&×0Ñ0Ó2ˆØ×+Ñ+Ó-ˆ	Ø×ÑÔÜ�q˜Ö#ˆAØ×&Ñ&Ó(ˆEØ×ÑÓ×:Ñ:Õ<ð $ð 	�‰�r   c                 óÚ  — | j                   �r^| j                   }| j                  }| j                  j                  j	                  «       \  }}|j                  |||z
  dz
  d|«       |j                  «       }| j                  d k7  r`| j                  d k7  rQ| j                  j                  | j                  «       | j                  j                  | j                  «       d | _        |d k7  rp|| _        | j                  j                  «       | _        | j                  j                  | j                  «       | j                  j                  | j                  «       | j                  «        y y )NrZ   ré   )r…   r‹   r^   r_   rÅ   ÚPickÚGetAssemblyrŒ   r�   ÚSetPropertyÚ
UnRegisterr  ÚRegisterr�   rW   )r   rÌ   rÍ   rÓ   ÚpickerrÎ   rÏ   Úassemblys           r   rµ   z!GtkGLExtVTKRenderWindow.PickActor×  s$  € Ø× Ó à×,Ñ,ˆHØ—\‘\ˆFà#Ÿ{™{×1Ñ1×:Ñ:Ó<‰OˆG�GØ�K‰K˜˜7 Q™;¨™?¨C°Ô9Ø×)Ñ)Ó+ˆHà×$Ñ$¨Ò,Ø×'Ñ'¨4Ò/Ø×$Ñ$×0Ñ0°×1HÑ1HÔIà×'Ñ'×2Ñ2°4×3JÑ3JÔKØ*.�Ô'à˜DÒ Ø'/�Ô$Ø*.×*>Ñ*>×*JÑ*JÓ*L�Ô'à×'Ñ'×0Ñ0°×1HÑ1HÔIØ×$Ñ$×0Ñ0°×1EÑ1EÔFà�K‰K�Mð/ !r   r@   )r|   r}   r~   r   r   r.   r/   r0   r1   r3   r¸   r»   r½   rW   r¦   rÝ   rß   r”   r–   rž   r�   r¡   r²   r³   r´   rµ   r€   r   r   r‚   r‚   ®   sw   „ ñòò.ò
ó
ó&óò2!òòò1ò#òJ
%ò#óóò
ò=ò~ò*òòór   r‚   c                  ó  — ddl m}  ddlm}m}m} dd l}dd l}t        j                  «       }|j                  d«       |j                  dt        j                  «       |j                  dt        j                  «       |j                  d«       t        «       }|j                  «        t        j                   d¬	«      }|j                  «        |j#                  |«       t        j$                  d
«      }|j                  «        |j#                  |«       |j'                  |«       |j)                  dd«        | «       }	|	j+                  d«        |«       }
|
j-                  |	j/                  «       «        |«       }|j1                  |
«       |j3                  «       j5                  ddd«        |«       }|j7                  «       j9                  |«       |j;                  |«       |j                  «        t        j<                  «        y )Nr   )ÚvtkConeSource)r   ÚvtkPolyDataMapperÚvtkRendererzA GtkGLExtVTKRenderWindow Demo!ro   r)   é
   é   )Úspacingz	My Buttoni�  éP   r  r„   )Úvtkmodules.vtkFiltersSourcesr"  Úvtkmodules.vtkRenderingCorer   r#  r$  Úvtkmodules.vtkRenderingOpenGL2Úvtkmodules.vtkInteractionStyler   ÚWindowÚ	set_titler*   ÚmainquitÚset_border_widthr‚   ÚshowÚVBoxÚ
pack_startÚButtonÚaddr   ÚSetResolutionÚSetInputConnectionÚGetOutputPortÚ	SetMapperr  rŽ   rA   ÚAddRendererÚAddActorÚmainloop)r"  r   r#  r$  Ú
vtkmodulesr_   ÚvtkgtkÚvboxÚbuttonÚconeÚ
coneMapperÚ	coneActorÚrens                r   ÚmainrE  ò  sv  € Ý:ßTÑTã)Û)ô �Z‰Z‹\€FØ
×ÑÐ6Ô7Ø
‡N�N�9œcŸl™lÔ+Ø
‡N�N�>¤3§<¡<Ô0Ø
×Ñ˜BÔä$Ó&€FØ
‡K�K„Mä�8‰8˜AÔ€DØ‡I�I„KØ‡O�O�FÔä�Z‰Z˜Ó$€FØ
‡K�K„MØ‡O�O�FÔØ
‡J�JˆtÔà
×Ñ˜C Ô%ñ ‹?€DØ×Ñ�rÔÙ"Ó$€JØ×!Ñ! $×"4Ñ"4Ó"6Ô7á“
€IØ×Ñ˜
Ô#Ø×ÑÓ×$Ñ$ S¨#¨sÔ3Ù
‹-€CØ
×ÑÓ×(Ñ(¨Ô-Ø‡L�L�Ôð ‡K�K„MÜ‡L�L…Nr   Ú__main__)r   r  r[   ÚpygtkÚrequirer   Ú	gtk.gtkglr   r*  r   r   r   r   r   r   r	   r‚   rE  r|   r€   r   r   Ú<module>rJ     sr   ðñ÷. Û Ø €‡�ˆeÔ Û 
Û Ý ß ]Ó ]ôJ #§)¡)×"7Ñ"7ô JôZAÐ9ô AòH
+ð\ ˆzÒÙ…Fð r   