Ë
    ¯·gø\  ã                   óü   — d Z 	 ddlZddlZddlZddlZddlmZmZmZ ej                  Z
ej                  dk(  rddlZej                  j                  Z
ej                  dk(  Z G d„ de
«      Zd„ Zed	k(  r e«        yy)
zä
A simple VTK widget for wxPython.

Find wxPython info at http://wxPython.org

Created by David Gobbi, December 2001
Based on vtkTkRenderWindget.py

Updated to new wx namespace and some cleaning by Andrea Gavana,
December 2006

é    N)ÚvtkCellPickerÚvtkPropertyÚvtkRenderWindowÚ	__WXGTK__Ú	__WXMSW__c                   ó  — 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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-d)„Z*d*„ Z+d+„ Z,d,„ Z-y().ÚwxVTKRenderWindowzµ
    A wxRenderWindow for wxPython.
    Use GetRenderWindow() to get the vtkRenderWindow.
    Create with the keyword stereo=1 in order to
    generate a stereo-capable window.
    c           	      ó.  — d| _         d| _        d| _        d| _        d| _        d| _        t        «       | _        d| _        t        «       | _
        | j                  j                  ddd«       d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        	 t)        |d   «      }|d= 	 |d	   }|d	= 	 |d
   }|d
= t,        j6                  t,        j8                  z  }	 ||d   z  }|d= g }	|}
|
r$|	j;                  |
«       |
j=                  «       }
|
rŒ$|	j?                  «        |	D ]  }
|
jA                  d«       Œ tB        jD                  dk(  r6tB        jG                  | |||||t,        jH                  jJ                  g¬«       ntB        jG                  | |||||¬«       tM        «       | _'        | jN                  jQ                  |jR                  |jT                  «       |r4| jN                  jW                  «        | jN                  jY                  «        d| _-        | j]                  t,        j^                  | j`                  «       | j]                  t,        jb                  d„ «       | j]                  t,        jd                  | jf                  «       | j]                  t,        jh                  | jf                  «       | j]                  t,        jj                  | jf                  «       | j]                  t,        jl                  | jn                  «       | j]                  t,        jp                  | jn                  «       | j]                  t,        jr                  | jn                  «       | j]                  t,        jt                  | jv                  «       | j]                  t,        jx                  | jz                  «       | j]                  t,        j|                  | j~                  «       | j]                  t,        j€                  | j‚                  «       | j]                  t,        j€                  | j„                  «       | j]                  t,        j†                  | jˆ                  «       | j]                  t,        jŠ                  | jŒ                  «       | j]                  t,        jŽ                  | j�                  «       | j]                  t,        j’                  | j”                  «       | j]                  t,        j–                  | j˜                  «       y# t*        $ r d}Y �Œkw xY w# t*        $ r t,        j.                  }Y �Œ‚w xY w# t*        $ r5 	 |j1                  «       }n# t2        $ r t,        j4                  }Y nw xY wY �Œºw xY w# t*        $ r Y �Œ�w xY w)zÆDefault class constructor.
        @param parent: parent window
        @param ID: window id
        @param **kw: wxPython keywords (position, size, style) plus the
        'stereo' keyword
        Nç      ð?r   é   é   g-Cëâ6?ÚstereoFÚpositionÚsizeÚstyleÚGLCanvas)Úposr   r   Ú
attribList)r   r   r   c                  ó   — y ©N© )Úes    ú?lib/python3.12/site-packages/vtkmodules/wx/wxVTKRenderWindow.pyÚ<lambda>z,wxVTKRenderWindow.__init__.<locals>.<lambda>Ö   s   € °Tó    )MÚ_CurrentRendererÚ_CurrentCameraÚ_CurrentZoomÚ_CurrentLightÚ_ViewportCenterXÚ_ViewportCenterYr   Ú_PickerÚ_PickedActorr   Ú_PickedPropertyÚSetColorÚ_PrePickedPropertyÚ_LastXÚ_LastYÚ_ModeÚ_ActiveButtonÚ_wxVTKRenderWindow__OldFocusÚ_DesiredUpdateRateÚ_StillUpdateRateÚboolÚKeyErrorÚwxÚDefaultPositionÚGetSizeÚAttributeErrorÚDefaultSizeÚWANTS_CHARSÚNO_FULL_REPAINT_ON_RESIZEÚappendÚ	GetParentÚreverseÚShowÚ	baseClassÚ__name__Ú__init__ÚglcanvasÚWX_GL_DOUBLEBUFFERr   Ú_RenderWindowÚSetSizeÚwidthÚheightÚStereoCapableWindowOnÚSetStereoTypeToCrystalEyesÚ_wxVTKRenderWindow__handleÚBindÚ	EVT_PAINTÚOnPaintÚEVT_ERASE_BACKGROUNDÚEVT_RIGHT_DOWNÚ_OnButtonDownÚEVT_LEFT_DOWNÚEVT_MIDDLE_DOWNÚEVT_RIGHT_UPÚ_OnButtonUpÚEVT_LEFT_UPÚEVT_MIDDLE_UPÚ
EVT_MOTIONÚOnMotionÚEVT_ENTER_WINDOWÚ_OnEnterWindowÚEVT_LEAVE_WINDOWÚ_OnLeaveWindowÚEVT_CHARÚOnCharÚ	OnKeyDownÚ
EVT_KEY_UPÚOnKeyUpÚEVT_SIZEÚ_OnSizeÚEVT_MOVEÚOnMoveÚEVT_SET_FOCUSÚ
OnSetFocusÚEVT_KILL_FOCUSÚOnKillFocus)ÚselfÚparentÚIDÚargsÚkwr   r   r   r   ÚlÚps              r   r=   zwxVTKRenderWindow.__init__m   sU  € ð !%ˆÔØ"ˆÔØˆÔØ!ˆÔà !ˆÔØ !ˆÔä$“ˆŒØ ˆÔÜ*›}ˆÔØ×Ñ×%Ñ% a¨¨!Ô,Ø"&ˆÔð ˆŒØˆŒð ˆŒ
Ø!ˆÔð ˆŒð #%ˆÔØ &ˆÔð
	Ü˜"˜X™,Ó'ˆFØ�8�ð	*Ø˜*‘~ˆHØ�:�ð	&Ø�f‘:ˆDØ�6�
ô —‘¤×!=Ñ!=Ñ=ˆð	Ø˜B˜w™KÑ'ˆEØ�7�ð ˆØˆÙØ�H‰H�QŒKØ—‘“ˆAò ð 	
�	‰	ŒÛˆAØ�F‰F�1�Ið ô ×Ñ Ò+ä×Ñ˜t V¨R°XÀDØ%*Ü+-¯;©;×+IÑ+IÐ*Jð õ Lô ×Ñ˜t V¨R°XÀDØ%*ð ô ,ô -Ó.ˆÔØ×Ñ×"Ñ" 4§:¡:¨t¯{©{Ô;áØ×Ñ×4Ñ4Ô6Ø×Ñ×9Ñ9Ô;àˆŒð 	�	‰	”"—,‘, §¡Ô-à�	‰	”"×)Ñ)©>Ô:ð 	�	‰	”"×#Ñ# T×%7Ñ%7Ô8Ø�	‰	”"×"Ñ" D×$6Ñ$6Ô7Ø�	‰	”"×$Ñ$ d×&8Ñ&8Ô9Ø�	‰	”"—/‘/ 4×#3Ñ#3Ô4Ø�	‰	”"—.‘. $×"2Ñ"2Ô3Ø�	‰	”"×"Ñ" D×$4Ñ$4Ô5Ø�	‰	”"—-‘- §¡Ô/à�	‰	”"×%Ñ% t×':Ñ':Ô;Ø�	‰	”"×%Ñ% t×':Ñ':Ô;à�	‰	”"—+‘+˜tŸ{™{Ô+ð
 	�	‰	”"—+‘+˜tŸ~™~Ô.Ø�	‰	”"—-‘- §¡Ô.à�	‰	”"—+‘+˜tŸ|™|Ô,Ø�	‰	”"—+‘+˜tŸ{™{Ô+à�	‰	”"×"Ñ" D§O¡OÔ4Ø�	‰	”"×#Ñ# T×%5Ñ%5Õ6øôq ò 	Ø‹Fð	ûô ò 	*Ü×)Ñ)‹Hð	*ûô ò 	&ð&Ø—~‘~Ó'‘øÜ!ò &Ü—~‘~’ð&ýð	&ûô ò 	Úð	úsl   Â&T Â8T& ÃU Ã+V ÔT#Ô"T#Ô&UÕUÕ	VÕU!Õ VÕ!U=Õ:VÕ<U=Õ=VÖVÖ	VÖVc                 ó   — || _         y©úTMirrors the method with the same name in
        vtkRenderWindowInteractor.
        N©r,   ©rf   Úrates     r   ÚSetDesiredUpdateRatez&wxVTKRenderWindow.SetDesiredUpdateRateò   s   € ð #'ˆÕr   c                 ó   — | j                   S ©ro   rp   ©rf   s    r   ÚGetDesiredUpdateRatez&wxVTKRenderWindow.GetDesiredUpdateRateø   s   € ð ×&Ñ&Ð&r   c                 ó   — || _         yrn   ©r-   rq   s     r   ÚSetStillUpdateRatez$wxVTKRenderWindow.SetStillUpdateRateþ   s   € ð !%ˆÕr   c                 ó   — | j                   S ru   ry   rv   s    r   ÚGetStillUpdateRatez$wxVTKRenderWindow.GetStillUpdateRate  s   € ð ×$Ñ$Ð$r   c                 óN   — t        j                  | «      }| j                  «        y)z>Handles the wx.EVT_PAINT event for wxVTKRenderWindow.
        N)r0   ÚPaintDCÚRender)rf   ÚeventÚdcs      r   rI   zwxVTKRenderWindow.OnPaint
  s   € ô �Z‰Z˜ÓˆØ�‰�r   c                 óÊ   — t         j                  dk7  r/|j                  «       \  }}| j                  j	                  ||«       | j                  |«       | j                  «        y)z=Handles the wx.EVT_SIZE event for wxVTKRenderWindow.
        r   N)r0   ÚPlatformr2   r@   rA   ÚOnSizer   )rf   r€   rB   rC   s       r   r_   zwxVTKRenderWindow._OnSize  sJ   € ô �;‰;˜+Ò%Ø!ŸM™M›O‰MˆE�6Ø×Ñ×&Ñ& u¨fÔ5Ø�‰�EÔØ�‰�r   c                  ó   — y©úOverridable event.
        Nr   ©rf   r€   s     r   r„   zwxVTKRenderWindow.OnSize  ó   € ð 	r   c                  ó   — yr†   r   rˆ   s     r   ra   zwxVTKRenderWindow.OnMove  r‰   r   c                 óH   — | j                  |«       | j                  |«       y)zMHandles the wx.EVT_ENTER_WINDOW event for
        wxVTKRenderWindow.
        N)ÚUpdateRendererÚOnEnterWindowrˆ   s     r   rV   z wxVTKRenderWindow._OnEnterWindow$  s    € ð 	×Ñ˜EÔ"Ø×Ñ˜5Õ!r   c                 óŠ   — | j                   dk(  r4t        j                  j                  «       | _         | j	                  «        yyr†   )r+   r0   ÚWindowÚ	FindFocusÚSetFocusrˆ   s     r   r�   zwxVTKRenderWindow.OnEnterWindow,  s2   € ð �?‰?˜dÒ"Ü Ÿi™i×1Ñ1Ó3ˆDŒOØ�M‰M�Oð #r   c                 ó&   — | j                  |«       y)zMHandles the wx.EVT_LEAVE_WINDOW event for
        wxVTKRenderWindow.
        N)ÚOnLeaveWindowrˆ   s     r   rX   z wxVTKRenderWindow._OnLeaveWindow3  s   € ð 	×Ñ˜5Õ!r   c                 ó`   — | j                   r"| j                   j                  «        d| _         yyr†   )r+   r‘   rˆ   s     r   r“   zwxVTKRenderWindow.OnLeaveWindow9  s'   € ð �?Š?Ø�O‰O×$Ñ$Ô&Ø"ˆD�Oð r   c                  ó   — yr†   r   rˆ   s     r   rc   zwxVTKRenderWindow.OnSetFocus@  r‰   r   c                  ó   — yr†   r   rˆ   s     r   re   zwxVTKRenderWindow.OnKillFocusE  r‰   r   c                 ó<  — | j                   j                  | j                  «       |j                  «       rd}n(|j	                  «       rd}n|j                  «       rd}nd}|r)| j                  s|| _        t        r| j                  «        | j                  |«       y)zXHandles the wx.EVT_LEFT/RIGHT/MIDDLE_DOWN events for
        wxVTKRenderWindow.
        ÚRightÚLeftÚMiddleN)
r@   rs   r,   Ú	RightDownÚLeftDownÚ
MiddleDownr*   Ú_useCaptureÚCaptureMouseÚOnButtonDown©rf   r€   Úbuttons      r   rL   zwxVTKRenderWindow._OnButtonDownJ  s„   € ð
 	×Ñ×/Ñ/°×0GÑ0GÔHà�?‰?ÔØ‰FØ�^‰^ÔØ‰FØ×ÑÔØ‰FàˆFñ ˜$×,Ò,Ø!'ˆDÔÝØ×!Ñ!Ô#à×Ñ˜%Õ r   c                 ó
  — | j                   s| j                  |«       |j                  «       r| j                  |«       y|j	                  «       r| j                  |«       y|j                  «       r| j                  |«       yyr†   )r)   rŒ   rœ   Ú
OnLeftDownr›   ÚOnRightDownr�   ÚOnMiddleDownrˆ   s     r   r    zwxVTKRenderWindow.OnButtonDownb  sf   € ð �zŠzà×Ñ Ô&à�>‰>ÔØ�O‰O˜EÕ"Ø�_‰_ÔØ×Ñ˜UÕ#Ø×ÑÔØ×Ñ˜eÕ$ð  r   c                 óŒ   — | j                   s8|j                  «       rd| _         y|j                  «       rd| _         yd| _         yy)r‡   ÚZoomÚPanÚRotateN)r)   ÚControlDownÚ	ShiftDownrˆ   s     r   r¤   zwxVTKRenderWindow.OnLeftDownp  s;   € ð �zŠzØ× Ñ Ô"Ø#�•
Ø—‘Ô"Ø"�•
à%�•
ð r   c                 ó,   — | j                   sd| _         yy)r‡   r¨   N©r)   rˆ   s     r   r¥   zwxVTKRenderWindow.OnRightDown{  s   € ð �zŠzØˆD�Jð r   c                 ó,   — | j                   sd| _         yy)r‡   r©   Nr®   rˆ   s     r   r¦   zwxVTKRenderWindow.OnMiddleDown�  s   € ð �zŠzØˆD�Jð r   c                 óV  — | j                   j                  | j                  «       |j                  «       rd}n(|j	                  «       rd}n|j                  «       rd}nd}| j                  r,|| j                  k(  rt        r| j                  «        d| _        | j                  |«       y)zVHandles the wx.EVT_LEFT/RIGHT/MIDDLE_UP events for
        wxVTKRenderWindow.
        r˜   r™   rš   N)
r@   rs   r-   ÚRightUpÚLeftUpÚMiddleUpr*   rž   ÚReleaseMouseÚ
OnButtonUpr¡   s      r   rP   zwxVTKRenderWindow._OnButtonUp‡  s‰   € ð
 	×Ñ×/Ñ/°×0EÑ0EÔFà�=‰=Œ?Ø‰FØ�\‰\Œ^Ø‰FØ�^‰^ÔØ‰FàˆFð ×Ò &¨D×,>Ñ,>Ò">ÝØ×!Ñ!Ô#Ø!%ˆDÔà�‰˜Õr   c                 ó,  — |j                  «       r| j                  |«       nC|j                  «       r| j                  |«       n!|j	                  «       r| j                  |«       | j                  r| j                  r| j                  «        d| _        yr†   )	r²   ÚOnLeftUpr±   Ú	OnRightUpr³   Ú
OnMiddleUpr)   r   r   rˆ   s     r   rµ   zwxVTKRenderWindow.OnButtonUpŸ  sf   € ð �<‰<Œ>Ø�M‰M˜%Õ Ø�]‰]Œ_Ø�N‰N˜5Õ!Ø�^‰^ÔØ�O‰O˜EÔ"ð �:Š:Ø×$Ò$Ø—‘”àˆ�
r   c                  ó   — yr†   r   rˆ   s     r   r·   zwxVTKRenderWindow.OnLeftUp°  r‰   r   c                  ó   — yr†   r   rˆ   s     r   r¸   zwxVTKRenderWindow.OnRightUpµ  r‰   r   c                  ó   — yr†   r   rˆ   s     r   r¹   zwxVTKRenderWindow.OnMiddleUpº  r‰   r   c                 óÊ   — | j                   dk(  r| j                  |«       y| j                   dk(  r| j                  |«       y| j                   dk(  r| j                  |«       yy)r‡   r©   rª   r¨   N)r)   r©   rª   r¨   rˆ   s     r   rT   zwxVTKRenderWindow.OnMotion¿  sP   € ð �:‰:˜ÒØ�H‰H�U�OØ�Z‰Z˜8Ò#Ø�K‰K˜ÕØ�Z‰Z˜6Ò!Ø�I‰I�eÕð "r   c                  ó   — yr†   r   rˆ   s     r   rZ   zwxVTKRenderWindow.OnCharÉ  r‰   r   c                 ó²  — |j                  «       t        d«      k(  r| j                  |«       |j                  «       t        d«      k(  r| j                  «        |j                  «       t        d«      k(  r| j	                  «        |j                  «       t        d«      k(  r| j                  |«       |j                  «       dk  r| j                  |«       yy)zBHandles the wx.EVT_KEY_DOWN events for wxVTKRenderWindow.
        ÚrÚwÚsrl   é€   N)Ú
GetKeyCodeÚordÚResetÚ	WireframeÚSurfaceÚ	PickActorrZ   rˆ   s     r   r[   zwxVTKRenderWindow.OnKeyDownÎ  s¥   € ð ×ÑÓ¤ S£Ò)Ø�J‰J�uÔØ×ÑÓ¤ S£Ò)Ø�N‰NÔØ×ÑÓ¤ S£Ò)Ø�L‰LŒNØ×ÑÓ¤ S£Ò)Ø�N‰N˜5Ô!à×ÑÓ Ò#Ø�K‰K˜Õð $r   c                  ó   — yr†   r   rˆ   s     r   r]   zwxVTKRenderWindow.OnKeyUpÝ  r‰   r   c                 ó   — | j                   S )z)Returns the current zoom factor.
        )r   rv   s    r   ÚGetZoomFactorzwxVTKRenderWindow.GetZoomFactorâ  s   € ð × Ñ Ð r   c                 ó   — | j                   S )z5Returns the render window (vtkRenderWindow).
        )r@   rv   s    r   ÚGetRenderWindowz!wxVTKRenderWindow.GetRenderWindowç  s   € ð ×!Ñ!Ð!r   c                 ó   — | j                   S )z4Returns the current picker (vtkCellPicker).
        )r"   rv   s    r   Ú	GetPickerzwxVTKRenderWindow.GetPickerì  s   € ð �|‰|Ðr   c                 óÎ  — | j                   r^| j                   }|j                  | j                  j                  «       «       |j	                  | j                  j                  «       «       | j                  «       j                  «       r| j                  rÑ| j                  r8| j                  | j                  «       k(  r| j                  j                  «        y| j                  «       r|| j                  j                  t        | j                  «       «      «       | j                  j                  «        | j                  «       | _        | j                  j                  «        yyy)z2Actually renders the VTK scene on screen.
        N)r   ÚSetPositionr   ÚGetPositionÚSetFocalPointÚGetFocalPointÚGetUpdateRegionÚIsEmptyrF   Ú	GetHandler@   r   ÚSetNextWindowInfoÚstrÚWindowRemap)rf   Úlights     r   r   zwxVTKRenderWindow.Renderñ  s  € ð ×ÒØ×&Ñ&ˆEØ×Ñ˜d×1Ñ1×=Ñ=Ó?Ô@Ø×Ñ × 3Ñ 3× AÑ AÓ CÔDà×#Ñ#Ó%×-Ñ-Ô/°4·=²=Ø�}Š} §¡°$·.±.Ó2BÒ!BØ×"Ñ"×)Ñ)Õ+à—‘Ô!ð ×"Ñ"×4Ñ4´S¸¿¹Ó9IÓ5JÔKØ×"Ñ"×.Ñ.Ô0à $§¡Ó 0�”à×"Ñ"×)Ñ)Õ+ð "ð	 4Ar   c                 ód  — |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       @)ÚGetXÚGetYr@   r2   ÚGetRenderersÚGetNumberOfItemsr   ÚInitTraversalÚrangeÚGetNextItemÚfloatÚGetViewportr    r!   ÚGetActiveCamerar   Ú	GetLightsr   r'   r(   )rf   r€   ÚxÚyÚwindowXÚwindowYÚ	renderersÚnumRenderersÚiÚrendererÚvxÚvyÚvpxminÚvpyminÚvpxmaxÚvpymaxÚlightss                    r   rŒ   z wxVTKRenderWindow.UpdateRenderer  s¥  € ð
 �J‰J‹LˆØ�J‰J‹LˆØ×-Ñ-×5Ñ5Ó7Ñˆ�à×&Ñ&×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 )z&Returns the current renderer.
        )r   rv   s    r   ÚGetCurrentRendererz$wxVTKRenderWindow.GetCurrentRenderer/  s   € ð ×$Ñ$Ð$r   c                 ó¢  — | j                   rÃ|j                  «       }|j                  «       }| j                  j	                  | j
                  |z
  «       | j                  j                  || j                  z
  «       | j                  j                  «        || _        || _        | j                   j                  «        | j                  «        yy)z$Rotates the scene (camera).
        N)r   rÞ   rß   r   ÚAzimuthr'   Ú	Elevationr(   ÚOrthogonalizeViewUpÚResetCameraClippingRanger   )rf   r€   ré   rê   s       r   rª   zwxVTKRenderWindow.Rotate4  s›   € ð × Ò Ø—
‘
“ˆAØ—
‘
“ˆAà×Ñ×'Ñ'¨¯©°a©Ô8Ø×Ñ×)Ñ)¨!¨d¯k©k©/Ô:Ø×Ñ×3Ñ3Ô5àˆDŒKØˆDŒKà×!Ñ!×:Ñ:Ô<Ø�K‰K�Mð !r   c                 ó  — | j                   �ró|j                  «       }|j                  «       }| 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)z!Pans the scene (camera).
        r   é   ç        N)r   rÞ   rß   r   rÓ   rÕ   ÚGetParallelProjectionÚSetWorldPointÚWorldToDisplayÚGetDisplayPointÚSetDisplayPointr'   r(   ÚDisplayToWorldÚGetWorldPointrÔ   rÒ   r    r!   r   )rf   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wxVTKRenderWindow.PanE  s  € ð × Ó Ø—
‘
“ˆAØ—
‘
“ˆAà×,Ñ,ˆ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ð} !r   c                 óê  — | j                   rç|j                  «       }|j                  «       }| j                   }| j                  }t	        j
                  dd| j                  |z
  z  «      }| j                  |z  | _        |j                  «       r%|j                  «       |z  }|j                  |«       n!|j                  |«       |j                  «        || _        || _        | j                  «        yy)z"Zooms the scene (camera).
        gR¸…ëQð?g      à?N)r   rÞ   rß   r   ÚmathÚpowr(   r   r  ÚGetParallelScaleÚSetParallelScaleÚDollyrþ   r'   r   )rf   r€   ré   rê   rð   r	  Ú
zoomFactorÚparallelScales           r   r¨   zwxVTKRenderWindow.Zoomˆ  sÊ   € ð × Ò Ø—
‘
“ˆAØ—
‘
“ˆAà×,Ñ,ˆ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   Nc                 óp   — | j                   r| j                   j                  «        | j                  «        y)zResets the camera.
        N)r   ÚResetCamerar   rˆ   s     r   rÆ   zwxVTKRenderWindow.Reset¡  s(   € ð × Ò Ø×!Ñ!×-Ñ-Ô/à�‰�r   c                 ó  — | j                   j                  «       }|j                  «       }|j                  «        t	        d|«      D ]0  }|j                  «       }|j                  «       j                  «        Œ2 | j                  «        y)z<Sets the current actor representation as wireframe.
        r   N)	r   Ú	GetActorsrá   râ   rã   rä   ÚGetPropertyÚSetRepresentationToWireframer   ©rf   ÚactorsÚ	numActorsrï   Úactors        r   rÇ   zwxVTKRenderWindow.Wireframe©  sq   € ð ×&Ñ&×0Ñ0Ó2ˆØ×+Ñ+Ó-ˆ	Ø×ÑÔÜ�q˜Ö#ˆAØ×&Ñ&Ó(ˆEØ×ÑÓ×<Ñ<Õ>ð $ð 	�‰�r   c                 ó  — | j                   j                  «       }|j                  «       }|j                  «        t	        d|«      D ]0  }|j                  «       }|j                  «       j                  «        Œ2 | j                  «        y)z:Sets the current actor representation as surface.
        r   N)	r   r'  rá   râ   rã   rä   r(  ÚSetRepresentationToSurfacer   r*  s        r   rÈ   zwxVTKRenderWindow.Surfaceµ  sq   € ð ×&Ñ&×0Ñ0Ó2ˆØ×+Ñ+Ó-ˆ	Ø×ÑÔÜ�q˜Ö#ˆAØ×&Ñ&Ó(ˆEØ×ÑÓ×:Ñ:Õ<ð $ð 	�‰�r   c                 ó  — | j                   �rt|j                  «       }|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)zPicks an actor.
        r   r  N)r   rÞ   rß   r"   r@   r2   ÚPickÚGetActorr#   r&   ÚSetPropertyÚ
UnRegisterr(  ÚRegisterr$   r   )	rf   r€   ré   rê   rð   Úpickerrë   rì   r-  s	            r   rÉ   zwxVTKRenderWindow.PickActorÁ  s6  € ð × Ó Ø—
‘
“ˆAØ—
‘
“ˆAà×,Ñ,ˆHØ—\‘\ˆFà#×1Ñ1×9Ñ9Ó;ÑˆG�WØ�K‰K˜˜7 Q™;¨™?¨C°Ô9Ø—O‘OÓ%ˆEà×!Ñ! TÒ)Ø×'Ñ'¨4Ò/Ø×!Ñ!×-Ñ-¨d×.EÑ.EÔFà×'Ñ'×2Ñ2°4×3JÑ3JÔKØ*.�Ô'à˜’Ø$)�Ô!Ø*.×*;Ñ*;×*GÑ*GÓ*I�Ô'à×'Ñ'×0Ñ0°×1HÑ1HÔIØ×!Ñ!×-Ñ-¨d×.BÑ.BÔCà�K‰K�Mð3 !r   r   ).r<   Ú
__module__Ú__qualname__Ú__doc__r=   rs   rw   rz   r|   rI   r_   r„   ra   rV   r�   rX   r“   rc   re   rL   r    r¤   r¥   r¦   rP   rµ   r·   r¸   r¹   rT   rZ   r[   r]   rÌ   rÎ   rÐ   r   rŒ   rù   rª   r©   r¨   rÆ   rÇ   rÈ   rÉ   r   r   r   r	   r	   e   sÞ   „ ñòC7òJ'ò'ò%ò%òòòò
ò"òò"ò#òò
ò
!ò0%ò	&ò òòò0ò"ò
ò
ò
òò
òò
!ò
"ò
ò
,ò.%òN%ò
ò"AòFó2ò
ò
ór   r	   c                  ó  — ddl m}  ddlm}m}m} ddl}ddl}t        j                  d«      }t        j                  dddd¬	«      }t        |d«      } |«       }|j                  «       j                  |«        | «       }	|	j                  d
«        |«       }
|
j                  |	j!                  «       «        |«       }|j#                  |
«       |j%                  |«       |j'                  «        |j)                  «        y)z)Like it says, just a simple example.
    r   )ÚvtkConeSource)ÚvtkActorÚvtkPolyDataMapperÚvtkRendererNFéÿÿÿÿr	   )é�  r@  )r   é   )Úvtkmodules.vtkFiltersSourcesr;  Úvtkmodules.vtkRenderingCorer<  r=  r>  Úvtkmodules.vtkRenderingOpenGL2Úvtkmodules.vtkInteractionStyler0   ÚAppÚFramer	   rÎ   ÚAddRendererÚSetResolutionÚSetInputConnectionÚGetOutputPortÚ	SetMapperÚAddActorr:   ÚMainLoop)r;  r<  r=  r>  Ú
vtkmodulesÚappÚframeÚwidgetÚrenÚconeÚ
coneMapperÚ	coneActors               r   ÚwxVTKRenderWindowConeExamplerW  á  sÌ   € õ ;ßTÑTã)Û)ô �&‰&�‹-€Cô �H‰H�T˜2Ð2¸ÔC€EÜ˜u bÓ)€Fá
‹-€CØ
×ÑÓ×(Ñ(¨Ô-á‹?€DØ×Ñ�qÔá"Ó$€JØ×!Ñ! $×"4Ñ"4Ó"6Ô7á“
€IØ×Ñ˜
Ô#à‡L�L�Ôð 
‡J�J„Là‡L�L…Nr   Ú__main__)r9  r  ÚosÚsysr0   rC  r   r   r   r�   r;   rƒ   Úwx.glcanvasr>   r   rž   r	   rW  r<   r   r   r   Ú<module>r\     s„   ðñð>÷B Ó Û 	ß SÑ Sð �I‰I€	Ø‡;�;�+ÒÛØ—‘×$Ñ$€Ið
 �{‰{˜kÑ)€ô
x	˜	ô x	òx#ðJ ˆzÒÙ Õ"ð r   