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

  Provides a simple VTK widget for pyGtk.  This embeds a
  vtkRenderWindow inside a GTK widget.  This is based on
  vtkTkRenderWidget.py.  The GtkVTKRenderWindowBase class provides the
  abstraction necessary for someone to use their own interaction
  behaviour.  The method names are similar to those in
  vtkInteractorStyle.h.

  The class uses the gtkgl.GtkGLArea widget (gtkglarea).  This avoids
  a lot of problems with flicker.

  There is a working example at the bottom.

Credits:

  Thanks to Dave Reed for testing the code under various platforms and
  for his suggestion to use the GtkGLArea widget to avoid flicker
  related issues.

Created by Prabhu Ramachandran, March 2001.

Using GtkGLArea, March, 2002.

Bugs:

  (*) There is a focus related problem.  Tkinter has a focus object
  that handles focus events.  I don't know of an equivalent object
  under GTK.  So, when an 'enter_notify_event' is received on the
  GtkVTKRenderWindow I grab the focus but I don't know what to do when
  I get a 'leave_notify_event'.

  (*) Will not work under Win32 because it uses the XID of a window in
  OnRealize.  Suggestions to fix this will be appreciated.

é    N)Ú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d„Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚGtkVTKRenderWindowBasea|   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        |«      }t        j                  t        j                  f}|j	                  d| «       |j	                  d|«       t        t        j                  j                  |«       t        «       | _	        d| _
        d| _        d| _        | j                  «        | j                  t        j                   «       | j#                  dd«       y )Nr   é   é   g-Cëâ6?i,  )ÚlistÚgtkglÚRGBAÚDOUBLEBUFFERÚinsertÚapplyÚ	GtkGLAreaÚ__init__r   Ú_RenderWindowÚ _GtkVTKRenderWindowBase__CreatedÚ_DesiredUpdateRateÚ_StillUpdateRateÚConnectSignalsÚ	set_flagsÚgtkÚ	CAN_FOCUSÚ	set_usize)ÚselfÚargsÚlÚattrs       úAlib/python3.12/site-packages/vtkmodules/gtk/GtkVTKRenderWindow.pyr   zGtkVTKRenderWindowBase.__init__5   s¡   € Ü�‹JˆÜ—
‘
œE×.Ñ.Ð/ˆØ	�‰��DÔØ	�‰��DÔÜŒe�o‰o×&Ñ&¨Ô*Ü,Ó.ˆÔð ˆŒð #%ˆÔØ &ˆÔà×ÑÔð 	�‰”s—}‘}Ô%à�‰�s˜CÕ ó    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_eventsÚGDKÚ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%GtkVTKRenderWindowBase.ConnectSignalsK   s@  € Ø�‰�Y §¡Ô/Ø�‰�^ T§]¡]Ô3Ø�‰Ð&¨×(8Ñ(8Ô9Ø�‰Ð)¨4×+<Ñ+<Ô=Ø�‰Ð+¨T¯_©_Ô=Ø�‰Ð*¨D×,<Ñ,<Ô=Ø�‰Ð)¨4¯<©<Ô8Ø�‰Ð)¨4¯<©<Ô8Ø�‰Ð&¨¯©Ô8Ø�‰�^ T§^¡^Ô4Ø�‰œ×)Ñ)¬3×+@Ñ+@Ñ@Ü×/Ñ/ñ0ä×*Ñ*ñ+ô ×/Ñ/ñ0ô ×4Ñ4ñ	5ô
 ×-Ñ-ñ.ô
 14×0EÑ0EñFõ 	Gr!   c                 ó   — | j                   S ©N)r   rB   s    r    ÚGetRenderWindowz&GtkVTKRenderWindowBase.GetRenderWindow]   s   € Ø×!Ñ!Ð!r!   c                 ó¢   — | j                   j                  «       j                  «        | j                   j                  «       j                  «       S rD   )r   ÚGetRenderersÚInitTraversalÚGetNextItemrB   s    r    ÚGetRendererz"GtkVTKRenderWindowBase.GetRenderer`   s;   € Ø×Ñ×'Ñ'Ó)×7Ñ7Ô9Ø×!Ñ!×.Ñ.Ó0×<Ñ<Ó>Ð>r!   c                 ó   — || _         y©úKMirrors the method with the same name in
        vtkRenderWindowInteractor.N©r   ©r   Úrates     r    ÚSetDesiredUpdateRatez+GtkVTKRenderWindowBase.SetDesiredUpdateRated   s   € ð #'ˆÕr!   c                 ó   — | j                   S ©rM   rN   rB   s    r    ÚGetDesiredUpdateRatez+GtkVTKRenderWindowBase.GetDesiredUpdateRatei   s   € ð ×&Ñ&Ð&r!   c                 ó   — || _         yrL   ©r   rO   s     r    ÚSetStillUpdateRatez)GtkVTKRenderWindowBase.SetStillUpdateRaten   s   € ð !%ˆÕr!   c                 ó   — | j                   S rS   rV   rB   s    r    ÚGetStillUpdateRatez)GtkVTKRenderWindowBase.GetStillUpdateRates   s   € ð ×$Ñ$Ð$r!   c                 óR   — | j                   r| j                  j                  «        y y rD   )r   r   ÚRenderrB   s    r    r[   zGtkVTKRenderWindowBase.Renderx   s    € Ø�>Š>Ø×Ñ×%Ñ%Õ'ð r!   c                 óê   — | j                   dk(  rU| j                  «        t        | j                  «       j                  «      }| j
                  j                  |«       d| _         t        j                  S ©Nr   r	   )	r   r#   ÚstrÚ
get_windowÚxidr   ÚSetWindowInfor   ÚTRUE)r   r   Úwin_ids      r    r.   z GtkVTKRenderWindowBase.OnRealize|   sR   € Ø�>‰>˜QÒà�L‰LŒNÜ˜Ÿ™Ó*×.Ñ.Ó/ˆFØ×Ñ×,Ñ,¨VÔ4ØˆDŒNÜ�x‰xˆr!   Nc                 óþ   — | j                   j                  «       }|j                  |d   k7  s|j                  |d   k7  r0| j                   j	                  |j                  |j                  «       t
        j                  S r]   )r   ÚGetSizeÚwidthÚheightÚSetSizer   rb   )r   ÚwidÚeventÚszs       r    r0   z"GtkVTKRenderWindowBase.OnConfigure…   s\   € Ø×Ñ×'Ñ'Ó)ˆØ�K‰K˜2˜a™5Ò  e§l¡l°b¸±eÒ&;Ø×Ñ×&Ñ& u§{¡{°E·L±LÔAÜ�x‰xˆr!   c                 óB   — | j                  «        t        j                  S rD   )r[   r   rb   )r   r   s     r    r/   zGtkVTKRenderWindowBase.OnExpose‹   s   € Ø�‰ŒÜ�x‰xˆr!   c                 óf   — | j                  «        | `| j                  «        t        j                  S rD   )Úhider   Údestroyr   rb   )r   rj   s     r    r7   z GtkVTKRenderWindowBase.OnDestroy�   s#   € Ø�	‰	ŒØÐØ�‰ŒÜ�x‰xˆr!   c                 ól   — | j                   j                  | j                  «       t        j                  S )zMouse button pressed.)r   rQ   r   r   rb   ©r   ri   rj   s      r    r1   z#GtkVTKRenderWindowBase.OnButtonDown•   s%   € à×Ñ×/Ñ/°×0GÑ0GÔHÜ�x‰xˆr!   c                 ól   — | j                   j                  | j                  «       t        j                  S )zMouse button released.)r   rQ   r   r   rb   rq   s      r    r2   z!GtkVTKRenderWindowBase.OnButtonUpš   s%   € à×Ñ×/Ñ/°×0EÑ0EÔFÜ�x‰xˆr!   c                 ó"   — t         j                  S )zMouse has moved.©r   rb   rq   s      r    r3   z"GtkVTKRenderWindowBase.OnMouseMoveŸ   ó   € ä�x‰xˆr!   c                 ó"   — t         j                  S )zEntering the vtkRenderWindow.rt   rq   s      r    r4   zGtkVTKRenderWindowBase.OnEnter£   ru   r!   c                 ó"   — t         j                  S )zLeaving the vtkRenderWindow.rt   rq   s      r    r5   zGtkVTKRenderWindowBase.OnLeave§   ru   r!   c                 ó"   — t         j                  S )zKey pressed.rt   rq   s      r    r6   z!GtkVTKRenderWindowBase.OnKeyPress«   ru   r!   c                 ó"   — t         j                  S )zKey released.rt   rq   s      r    ÚOnKeyReleasez#GtkVTKRenderWindowBase.OnKeyRelease¯   ru   r!   rD   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   rE   rJ   rQ   rT   rW   rY   r[   r.   r0   r/   r7   r1   r2   r3   r4   r5   r6   rz   © r!   r    r   r   ,   sl   „ ñ4ò!ò,Gò$"ò?ò'ò
'ò
%ò
%ò
(òóòóòò
ò
òòòór!   r   c                   óž   — e Zd ZdZd„ Zd„ Zd„ Zdd„Zdd„Zd„ Z	d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)ÚGtkVTKRenderWindowz An example of a fully functional GtkVTKRenderWindow that is
    based on the vtkRenderWidget.py provided with the VTK sources.c                 ó‚  — t        |«      }|j                  d| «       t        t        j                  |«       d | _        d | _        d| _        d | _        d| _	        d| _
        t        «       | _        d | _        t        «       | _        | j                  j!                  ddd«       d | _        d | _        d| _        d| _        y )Nr   ç      ð?r	   )r   r   r   r   r   Ú_CurrentRendererÚ_CurrentCameraÚ_CurrentZoomÚ_CurrentLightÚ_ViewportCenterXÚ_ViewportCenterYr   Ú_PickerÚ_PickedAssemblyr   Ú_PickedPropertyÚSetColorÚ_PrePickedPropertyÚ	_OldFocusÚ_LastXÚ_LastY)r   r   r   s      r    r   zGtkVTKRenderWindow.__init__¹   s¬   € Ü�‹JˆØ	�‰��DÔÜÔ$×-Ñ-¨qÔ1à $ˆÔØ"ˆÔØˆÔØ!ˆÔà !ˆÔØ !ˆÔä$“ˆŒØ#ˆÔÜ*›}ˆÔØ×Ñ×%Ñ% a¨¨AÔ.Ø"&ˆÔàˆŒð ˆŒØˆ�r!   c                 óp   — | j                   j                  | j                  «       | j                  ||«      S rD   )r   rQ   r   ÚStartMotionrq   s      r    r1   zGtkVTKRenderWindow.OnButtonDownÒ   s/   € Ø×Ñ×/Ñ/°×0GÑ0GÔHØ×Ñ  UÓ+Ð+r!   c                 óp   — | j                   j                  | j                  «       | j                  ||«      S rD   )r   rQ   r   Ú	EndMotionrq   s      r    r2   zGtkVTKRenderWindow.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 r]   )Ústater9   ÚBUTTON1_MASKÚ
SHIFT_MASKÚget_pointerÚPanr   rb   ÚRotateÚBUTTON2_MASKÚBUTTON3_MASKÚZoomÚFALSE©r   ri   rj   Úms       r    r3   zGtkVTKRenderWindow.OnMouseMoveÚ   s0  € Ø�[‰[œ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Ô Ü—8‘8ˆOØ�{‰{œS×-Ñ-Ñ-´#×2BÑ2BÒBØ× Ñ Ó"ˆAØ�I‰I�a˜‘d˜A˜a™DÔ!Ü—8‘8ˆOä—9‘9Ðr!   c                 ó’   — | j                  «        | j                  «       }| j                  |d   |d   «       t        j                  S r]   )Ú
grab_focusrš   ÚUpdateRendererr   rb   )r   ri   rj   Úws       r    r4   zGtkVTKRenderWindow.OnEnterï   s;   € Ø�‰ÔØ×ÑÓˆØ×Ñ˜A˜a™D ! A¡$Ô'Ü�x‰xˆr!   c                 ó"   — t         j                  S rD   rt   rq   s      r    r5   zGtkVTKRenderWindow.OnLeaveõ   s   € Ü�x‰xˆr!   c                 ó"  — |j                   t        j                  k(  s|j                   t        j                  k(  r | j	                  «        t
        j                  S |j                   t        j                  k(  s|j                   t        j                  k(  r | j                  «        t
        j                  S |j                   t        j                  k(  s|j                   t        j                  k(  r | j                  «        t
        j                  S |j                   t        j                  k(  s|j                   t        j                  k(  r8| j                  «       }| j!                  |d   |d   «       t
        j                  S t
        j"                  S r]   )Úkeyvalr9   ÚrÚRÚResetr   rb   r¦   ÚWÚ	WireframeÚsÚSÚSurfaceÚpÚPrš   Ú	PickActorr    r¡   s       r    r6   zGtkVTKRenderWindow.OnKeyPressø   sì   € Ø�L‰LœCŸE™EÒ! u§|¡|´s·u±uÒ'<Ø�J‰JŒLÜ—8‘8ˆOØ�l‰lœcŸe™eÒ#¨¯©¼¿¹Ò)>Ø�N‰NÔÜ—8‘8ˆOØ�l‰lœcŸe™eÒ#¨¯©¼¿¹Ò)>Ø�L‰LŒNÜ—8‘8ˆOØ�l‰lœcŸe™eÒ#¨¯©¼¿¹Ò)>Ø× Ñ Ó"ˆAØ�N‰N˜1˜Q™4  1¡Ô&Ü—8‘8ˆOä—9‘9Ðr!   c                 ó   — | j                   S rD   ©r†   rB   s    r    ÚGetZoomFactorz GtkVTKRenderWindow.GetZoomFactor	  s   € Ø× Ñ Ð r!   c                 ó   — || _         y rD   r¶   )r   Úzfs     r    ÚSetZoomFactorz GtkVTKRenderWindow.SetZoomFactor  s
   € ØˆÕr!   c                 ó   — | j                   S rD   )rŠ   rB   s    r    Ú	GetPickerzGtkVTKRenderWindow.GetPicker  s   € Ø�|‰|Ðr!   c                 ó  — | j                   r^| j                   }|j                  | j                  j                  «       «       |j	                  | j                  j                  «       «       t        j                  | «       y rD   )r‡   ÚSetPositionr…   ÚGetPositionÚSetFocalPointÚGetFocalPointr   r[   )r   Úlights     r    r[   zGtkVTKRenderWindow.Render  s^   € Ø×ÒØ×&Ñ&ˆEØ×Ñ˜d×1Ñ1×=Ñ=Ó?Ô@Ø×Ñ × 3Ñ 3× AÑ AÓ CÔDä×%Ñ% dÕ+r!   c                 óR  — | j                  «       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   r	   g       @)r_   rf   rg   r   rG   ÚGetNumberOfItemsr„   rH   ÚrangerI   Ú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!GtkVTKRenderWindow.UpdateRenderer  sš  € ð
 —/‘/Ó#×)Ñ)ˆØ—/‘/Ó#×*Ñ*ˆà×&Ñ&×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                   S rD   )r„   rB   s    r    ÚGetCurrentRendererz%GtkVTKRenderWindow.GetCurrentRenderer@  s   € Ø×$Ñ$Ð$r!   c                 óv   — |j                   }|j                  }| j                  ||«       t        j                  S rD   )rÊ   rË   r¥   r   rb   )r   ri   rj   rÊ   rË   s        r    r“   zGtkVTKRenderWindow.StartMotionC  s-   € Ø�G‰GˆØ�G‰GˆØ×Ñ˜A˜aÔ Ü�x‰xˆr!   c                 óZ   — | j                   r| j                  «        t        j                  S rD   )r„   r[   r   rb   rq   s      r    r•   zGtkVTKRenderWindow.EndMotionI  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 rD   )	r„   r…   ÚAzimuthr�   Ú	Elevationr‘   ÚOrthogonalizeViewUpÚResetCameraClippingRanger[   )r   rÊ   rË   s      r    rœ   zGtkVTKRenderWindow.RotateN  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‰   r[   )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GtkVTKRenderWindow.Pan[  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�   r[   )r   rÊ   rË   rÑ   rì   Ú
zoomFactorÚparallelScales          r    rŸ   zGtkVTKRenderWindow.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 rD   )r„   ÚResetCamerar[   rB   s    r    r¬   zGtkVTKRenderWindow.Reset¯  s&   € Ø× Ò Ø×!Ñ!×-Ñ-Ô/à�‰�r!   c                 ó  — | j                   j                  «       }|j                  «       }|j                  «        t	        d|«      D ]0  }|j                  «       }|j                  «       j                  «        Œ2 | j                  «        y ©Nr   )	r„   Ú	GetActorsrÄ   rH   rÅ   rI   ÚGetPropertyÚSetRepresentationToWireframer[   ©r   ÚactorsÚ	numActorsrÐ   Úactors        r    r®   zGtkVTKRenderWindow.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Ä   rH   rÅ   rI   r  ÚSetRepresentationToSurfacer[   r  s        r    r±   zGtkVTKRenderWindow.Surface¿  so   € Ø×&Ñ&×0Ñ0Ó2ˆØ×+Ñ+Ó-ˆ	Ø×ÑÔÜ�q˜Ö#ˆAØ×&Ñ&Ó(ˆEØ×ÑÓ×:Ñ:Õ<ð $ð 	�‰�r!   c                 óÀ  — | j                   �rQ| 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 )Nr	   rä   )r„   rŠ   r_   rg   ÚPickÚGetAssemblyr‹   rŽ   ÚSetPropertyÚ
UnRegisterr  ÚRegisterrŒ   r[   )r   rÊ   rË   rÑ   ÚpickerrÍ   Úassemblys          r    r´   zGtkVTKRenderWindow.PickActorÉ  s  € Ø× Ó à×,Ñ,ˆHØ—\‘\ˆFà—o‘oÓ'×.Ñ.ˆ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!   rD   )r{   r|   r}   r~   r   r1   r2   r3   r4   r5   r6   r·   rº   r¼   r[   r¥   rÚ   r“   r•   rœ   r›   rŸ   r¬   r®   r±   r´   r   r!   r    r�   r�   ´   sx   „ ñFòò2,ò*óó*òóò"!òòò,ò$òL%óóò
ò=ò~ò*òòór!   r�   c                  óv  — ddl m}  ddlm}m}m} dd l}dd l}t        j                  t        j                  «      }|j                  d«       |j                  dt        j                  «       |j                  dt        j                  «       |j                  d«       t        j                  d¬	«      }|j!                  |«       |j#                  «        t%        «       }|j'                  d
d
«       |j)                  |«       |j#                  «         | «       }|j+                  d«        |«       }	|	j-                  |j/                  «       «        |«       }
|
j1                  |	«       |
j3                  «       j5                  ddd«        |«       }|j7                  «       j9                  |«       |j;                  |
«       t        j<                  d«      }|j                  dt        j                  «       |j)                  |«       |j#                  «        |j#                  «        t        j>                  «        y )Nr   )ÚvtkConeSource)ÚvtkActorÚvtkPolyDataMapperÚvtkRendererzA GtkVTKRenderWindow Demo!ro   r,   é
   é   )Úspacingi�  éP   r   rƒ   zQuit!Úclicked) Úvtkmodules.vtkFiltersSourcesr  Úvtkmodules.vtkRenderingCorer  r   r!  Úvtkmodules.vtkRenderingOpenGL2Úvtkmodules.vtkInteractionStyler   Ú	GtkWindowÚWINDOW_TOPLEVELÚ	set_titler-   ÚmainquitÚset_border_widthÚGtkVBoxÚaddÚshowr�   r   Ú
pack_startÚSetResolutionÚSetInputConnectionÚGetOutputPortÚ	SetMapperr  r�   rE   ÚAddRendererÚAddActorÚ	GtkButtonÚmainloop)r  r  r   r!  Ú
vtkmodulesÚwindowÚvboxÚgvtkÚconeÚ
coneMapperÚ	coneActorÚrenÚquits                r    ÚmainrE  ä  s•  € Ý:ßTÑTã)Û)ô �]‰]œ3×.Ñ.Ó/€FØ
×ÑÐ1Ô2Ø
‡N�N�9œcŸl™lÔ+Ø
‡N�N�>¤3§<¡<Ô0Ø
×Ñ˜BÔô �;‰;˜qÔ!€DØ
‡J�JˆtÔØ‡I�I„Kô Ó€Dà‡N�N�3˜ÔØ‡O�O�DÔØ‡I�I„Kñ ‹?€DØ×Ñ�rÔÙ"Ó$€JØ×!Ñ! $×"4Ñ"4Ó"6Ô7á“
€IØ×Ñ˜
Ô#Ø×ÑÓ×$Ñ$ S¨#¨sÔ3Ù
‹-€CØ×ÑÓ×&Ñ& sÔ+Ø‡L�L�Ôô �=‰=˜Ó!€DØ‡L�L�œCŸL™LÔ)Ø‡O�O�DÔØ‡I�I„Kð ‡K�K„MÜ‡L�L…Nr!   Ú__main__)r~   r   r9   r   r(  r   r   r   r  r   r   r�   rE  r{   r   r!   r    Ú<module>rG     sY   ðñ$÷L Ó ß SÑ SÛ ôE˜UŸ_™_ô EôPmÐ/ô mò`	/ðd ˆzÒÙ…Fð r!   