Ë
    ¯·g‰,  ã                   óâ  — d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	 ddl
mZmZ ddlZddlmZ  G d	„ d
ej                  «      Zedk(  �r"ddlmZ ddlZddlZ e«       Zej1                  d«       ej3                  d«       ej5                  dddddd«       ej7                  ddd«       ej9                  dddd«       ej7                  ddd«       ej9                  dddd«       ej7                  ddd«       ej;                  ddddd«       ej7                  ddd«       ej=                  dddddd«       ej7                  ddd«       ej=                  dddddd«       ej7                  ddd«       ej?                  dddd«       ej?                  dddd«       ej?                  dddd«       ej?                  dddd«       ej7                  ddd«       ejA                  d dd!d"d#d$«       ej7                  d%d%d«       ejC                  d&d&d'«       ej7                  d%d%d%«       ejE                  d&d&«       ejE                  d&d«       ej7                  d(dd«       ejC                  d)d&d*«       ej7                  ddd«       ejG                  d)d&«        ejH                  «       Z% ee%d+d+d¬,«      Z&e&jO                  «       Z(e(jS                  ejU                  «       «       e(jW                  d-«       e(jY                  d.«        ejZ                  e%d/e%j\                  ¬0«      Z/e&ja                  d1ddd2d3¬4«       e%ja                  d2d3¬5«       e/ja                  d6¬7«       e%jc                  «        yy)8z©
A vtkTkImageViewerWidget for python, which is based on the
vtkTkImageWindowWidget.

Specify double=1 to get a double-buffered window.

Created by David Gobbi, Nov 1999
é    )Úabsolute_importN)Ú vtkStreamingDemandDrivenPipeline)ÚvtkImageViewer)Ú
vtkActor2DÚvtkTextMapperé   )ÚvtkLoadPythonTkWidgetsc                   ót   — e Zd ZdZi f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)ÚvtkTkImageViewerWidgeta8  
    A vtkTkImageViewerWidget for Python.

    Use GetImageViewer() to get the vtkImageViewer.

    Create with the keyword double=1 in order to generate a
    double-buffered viewer.

    Create with the keyword focus_on_enter=1 to enable
    focus-follows-mouse.  The default is for a click-to-focus mode.
    c                 ó¨  — t        |j                  «       	 |d   }d}	 |d   rd}|d= |j	                  d«      rd| _        |d= nd| _        |j                  d«      |d<   t        j                  j                  | |d||«       |r|j                  «       j                  «        | j                  «        y# t        $ r t        «       }Y Œ­w xY w#  Y Œ¨xY w)	a}  
        Constructor.

        Keyword arguments:

          iv -- Use passed image viewer instead of creating a new one.

          double -- If True, generate a double-buffered viewer.
          Defaults to False.

          focus_on_enter -- If True, use a focus-follows-mouse mode.
          Defaults to False where the widget will use a click-to-focus
          mode.
        Úivr   Údoubler   Úfocus_on_enterr   r   N)r	   ÚtkÚKeyErrorr   ÚgetÚ_FocusOnEnterÚGetAddressAsStringÚtkinterÚWidgetÚ__init__ÚGetRenderWindowÚDoubleBufferOnÚBindTkImageViewer)ÚselfÚmasterÚcnfÚkwÚimageViewerÚdoubleBuffers         úDlib/python3.12/site-packages/vtkmodules/tk/vtkTkImageViewerWidget.pyr   zvtkTkImageViewerWidget.__init__    sÞ   € ô  	˜vŸy™yÔ)ð	+Ø˜T™(ˆKð ˆð	Ø�(Š|Ø �Ø�8�ð
 �6‰6Ð"Ô#Ø!"ˆDÔØÐ#Ñ$à!"ˆDÔà×1Ñ1Ð2BÓCˆˆ4‰Ü�‰×Ñ  fÐ.FØ # Rô	)áØ×'Ñ'Ó)×8Ñ8Ô:à×ÑÕ øô1 ò 	+Ü(Ó*ŠKð	+ûð	Ùús   —B4 Ÿ
C Â4C
Ã	C
ÃCc                 óÄ   — |dk(  r7| j                   j                  | j                  d«      dd  }t        d|z  «      S t	        | j
                  j                  dz   |z   «      ‚)NÚ_ImageViewerÚGetImageVieweré   z_%s_vtkImageViewer_pz has no attribute named )r   ÚcallÚ_wr   ÚAttributeErrorÚ	__class__Ú__name__)r   ÚattrÚaddrs      r!   Ú__getattr__z"vtkTkImageViewerWidget.__getattr__N   sf   € ð
 �>Ò!Ø—7‘7—<‘< §¡Ð)9Ó:¸1¸2Ð>ˆDÜ!Ð"8¸4Ñ"?Ó@Ð@Ü˜TŸ^™^×4Ñ4Ø(ñ)Ø+/ñ0ó 1ð 	1ó    c                 ó   — | j                   S ©N)r#   ©r   s    r!   r$   z%vtkTkImageViewerWidget.GetImageViewerY   s   € Ø× Ñ Ð r.   c                 ó8   — | j                   j                  «        y r0   )r#   ÚRenderr1   s    r!   r3   zvtkTkImageViewerWidget.Render\   s   € Ø×Ñ× Ñ Õ"r.   c                 ób  — | j                   j                  «       }t        «       }|j                  d«       |j	                  «       }|j                  «        |j                  d«       |j                  «        |j                  «        || _	        t        «       }|j                  |«       |j                  d«       |j                  «       j                  dd«       |j                  «       j!                  ddd«       |j#                  d«       |j%                  |«       || _        t        «       }|j                  d«       |j	                  «       }|j                  «        |j                  d«       |j                  «        |j                  «        || _        t        «       }|j                  |«       |j                  d«       |j                  «       j                  dd«       |j                  «       j!                  ddd«       |j#                  d«       |j%                  |«       || _        d| _        d| _        d| _        d| _        | j5                  d| fd	„«       | j5                  d
| fd„«       | j5                  d| fd„«       | j5                  d| fd„«       | j5                  d| fd„«       | j5                  d| fd„«       | j5                  d| fd„«       | j5                  d| fd„«       | j5                  d| fd„«       | j5                  d| fd„«       | j5                  d| fd„«       y )NÚnoneé   r   é   é   ç      à?r   z<ButtonPress-1>c                 óN   — |j                  | j                  | j                  «      S r0   )ÚStartWindowLevelInteractionÚxÚy©ÚeÚss     r!   Ú<lambda>z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>“   s   €  1×#@Ñ#@ÀÇÁÀQÇSÁSÔ#Ir.   z<B1-Motion>c                 óN   — |j                  | j                  | j                  «      S r0   )ÚUpdateWindowLevelInteractionr<   r=   r>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>•   s   €  1×#AÑ#AÀ!Ç#Á#ÀaÇcÁcÔ#Jr.   z<ButtonRelease-1>c                 ó"   — |j                  «       S r0   )ÚEndWindowLevelInteractionr>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>—   s   €  1×#>Ñ#>Ô#@r.   z<ButtonPress-3>c                 óN   — |j                  | j                  | j                  «      S r0   )ÚStartQueryInteractionr<   r=   r>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>›   s   €  1×#:Ñ#:¸1¿3¹3¸q¿s¹sÔ#Cr.   z<B3-Motion>c                 óN   — |j                  | j                  | j                  «      S r0   )ÚUpdateQueryInteractionr<   r=   r>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>�   s   €  1×#;Ñ#;¸A¿C¹CÀÇÁÔ#Dr.   z<ButtonRelease-3>c                 ó"   — |j                  «       S r0   )ÚEndQueryInteractionr>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>Ÿ   ó   €  1×#8Ñ#8Ô#:r.   z<Expose>c                 ó"   — |j                  «       S r0   )ÚExposeTkImageViewerr>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>¢   rL   r.   z<Enter>c                 ó"   — |j                  «       S r0   )ÚEnterTkViewerr>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>¤   ó   €  1§?¡?Ô#4r.   z<Leave>c                 ó"   — |j                  «       S r0   )ÚLeaveTkViewerr>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>¦   rQ   r.   z<KeyPress-e>c                 ó"   — |j                  «       S r0   )Úquitr>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>¨   s
   €  1§6¡6¤8r.   z<KeyPress-r>c                 ó"   — |j                  «       S r0   )ÚResetTkImageViewerr>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>ª   s   €  1×#7Ñ#7Ô#9r.   )r#   ÚGetRendererr   ÚSetInputÚGetTextPropertyÚSetFontFamilyToTimesÚSetFontSizeÚBoldOnÚShadowOnÚ_LevelMapperr   Ú	SetMapperÚSetLayerNumberÚGetPositionCoordinateÚSetValueÚGetPropertyÚSetColorÚSetVisibilityÚ
AddActor2DÚ_LevelActorÚ_WindowMapperÚ_WindowActorÚ_LastXÚ_LastYÚ	_OldFocusÚ	_InExposeÚbind)r   ÚimagerÚmapperÚt_propÚactors        r!   r   z(vtkTkImageViewerWidget.BindTkImageViewer_   s½  € Ø×"Ñ"×.Ñ.Ó0ˆô “ˆØ�‰˜ÔØ×'Ñ'Ó)ˆØ×#Ñ#Ô%Ø×Ñ˜2ÔØ�‰ŒØ�‰Ôà"ˆÔä“ˆØ�‰˜ÔØ×Ñ˜QÔØ×#Ñ#Ó%×.Ñ.¨q°Ô4Ø×ÑÓ×$Ñ$ Q q¨Ô-Ø×Ñ˜AÔØ×Ñ˜%Ô à ˆÔä“ˆØ�‰˜ÔØ×'Ñ'Ó)ˆØ×#Ñ#Ô%Ø×Ñ˜2ÔØ�‰ŒØ�‰Ôà#ˆÔä“ˆØ�‰˜ÔØ×Ñ˜QÔØ×#Ñ#Ó%×.Ñ.¨q°Ô3Ø×ÑÓ×$Ñ$ Q q¨Ô-Ø×Ñ˜AÔØ×Ñ˜%Ô à!ˆÔàˆŒØˆŒØˆŒØˆŒð 	�	‰	Ð#Ø!ÒIô	Kà�	‰	�-Ø!ÒJô	Là�	‰	Ð%Ø!Ò@ô	Bð 	�	‰	Ð#Ø!ÒCô	Eà�	‰	�-Ø!ÒDô	Fà�	‰	Ð%Ø!Ò:ô	<ð 	�	‰	�*Ø!Ò:ô	<à�	‰	�)Ø!Ò4ô	6à�	‰	�)Ø!Ò4ô	6à�	‰	�.Ø!Ò+ô	-à�	‰	�.Ø!Ò9õ	;r.   c                 óN   — | j                  «       | _        | j                  «        y r0   )Ú	focus_getrm   Úfocusr1   s    r!   Ú
_GrabFocusz!vtkTkImageViewerWidget._GrabFocus¬   s   € Ø—~‘~Ó'ˆŒØ�
‰
�r.   c                 ó>   — | j                   r| j                  «        y y r0   )r   rw   r1   s    r!   rP   z$vtkTkImageViewerWidget.EnterTkViewer°   s   € Ø×ÒØ�O‰OÕð r.   c                 ór   — | j                   r+| j                  d k7  r| j                  j                  «        y y y r0   )r   rm   rv   r1   s    r!   rS   z$vtkTkImageViewerWidget.LeaveTkViewer´   s.   € Ø×Ò 4§>¡>°TÒ#9Ø�N‰N× Ñ Õ"ð $:Ðr.   c                 óæ   — | j                   dk(  rbd| _         | j                  j                  «       j                  d«      s| j	                  «        | j                  j                  «        d| _         y y )Nr   r   ÚvtkCocoaRenderWindow)rn   r#   r   ÚIsAÚupdater3   r1   s    r!   rN   z*vtkTkImageViewerWidget.ExposeTkImageViewer¸   s^   € Ø�N‰N˜aÒØˆDŒNØ×%Ñ%×5Ñ5Ó7ß‘Ð*Ó+ð,à—‘”Ø×Ñ×$Ñ$Ô&ØˆD�Nð  r.   c                 óx  — | j                   s| j                  «        | j                  }|| _        || _        t        |j                  «       «      | _        t        |j                  «       «      | _	        | j                  j                  d«       | j                  j                  d«       | j                  ||«       y ©Nr   )r   rw   r#   rk   rl   ÚfloatÚGetColorWindowÚ_WindowÚGetColorLevelÚ_Levelrh   rf   rj   rC   )r   r<   r=   Úviewers       r!   r;   z2vtkTkImageViewerWidget.StartWindowLevelInteractionÁ   s’   € Ø×!Ò!Ø�O‰OÔØ×"Ñ"ˆØˆŒØˆŒÜ˜V×2Ñ2Ó4Ó5ˆŒÜ˜F×0Ñ0Ó2Ó3ˆŒð 	×Ñ×&Ñ& qÔ)Ø×Ñ×'Ñ'¨Ô*à×)Ñ)¨!¨AÕ.r.   c                 ó�   — | j                   j                  d«       | j                  j                  d«       | j                  «        y ©Nr   )rh   rf   rj   r3   r1   s    r!   rE   z0vtkTkImageViewerWidget.EndWindowLevelInteractionÐ   s3   € à×Ñ×&Ñ& qÔ)Ø×Ñ×'Ñ'¨Ô*Ø�‰�r.   c                 óf  — d|| j                   z
  z  | j                  «       z  | j                  z  }d| j                  |z
  z  | j	                  «       z  | j
                  z  }| j                  dk  r| }| j
                  dk  r| }| j                  |z   }|dk  r| j
                  |z   }n| j
                  |z
  }| j                  }|j                  |«       |j                  |«       | j                  j                  d|z  «       | j                  j                  d|z  «       | j                  «        y )Ng      @g        z
Window: %gz	Level: %g)rk   Úwinfo_widthr‚   rl   Úwinfo_heightr„   r#   ÚSetColorWindowÚSetColorLevelri   rY   r_   r3   )r   r<   r=   ÚdxÚdyÚwindowÚlevelr…   s           r!   rC   z3vtkTkImageViewerWidget.UpdateWindowLevelInteractionÖ   s  € à�!�d—k‘k‘/Ñ" 4×#3Ñ#3Ó#5Ñ5°d·l±lÑBˆØ�$—+‘+ ‘/Ñ" 4×#4Ñ#4Ó#6Ñ6°t·{±{ÑBˆð �L‰L˜3ÒØ�ˆBØ�K‰K˜#ÒØ�ˆBð —‘ Ñ"ˆØ�SŠLØ—K‘K "Ñ$‰Eà—K‘K "Ñ$ˆEà×"Ñ"ˆØ×Ñ˜fÔ%Ø×Ñ˜UÔ#à×Ñ×#Ñ# L°6Ñ$9Ô:Ø×Ñ×"Ñ" ;°Ñ#6Ô7à�‰�r.   c                 óÈ  — | j                   }|j                  «       }|d k(  ry |j                  «       }|j                  «        |j	                  d«      }|j                  t        j                  «       «      }||d<   ||d<   |j                  ddd|«       |j                  «       \  }}|j                  ||z
  «       |j                  ||z   dz  «       | j                  «        y )Nr   r7   r%   r   r9   )r#   ÚGetInputÚ	GetZSliceÚUpdateInformationÚGetOutputInformationÚGetr   ÚWHOLE_EXTENTÚUpdateÚGetScalarRanger‹   rŒ   r3   )r   r…   ÚinputÚzÚinfoÚextÚlowÚhighs           r!   rW   z)vtkTkImageViewerWidget.ResetTkImageViewerò   sÏ   € à×"Ñ"ˆØ—‘Ó!ˆØ�TŠMØð ×ÑÓˆà×ÑÔ!Ø×)Ñ)¨!Ó,ˆØ�h‰hÔ7×DÑDÓFÓGˆØˆˆA‰ØˆˆA‰Ø�‰�Q˜˜1˜cÔ"à×)Ñ)Ó+‰
ˆˆTà×Ñ˜d S™jÔ)Ø×Ñ˜d S™j¨CÑ/Ô0à�‰�r.   c                 ó–   — | j                   s| j                  «        | j                  j                  d«       | j	                  ||«       y r   )r   rw   rj   rf   rI   )r   r<   r=   s      r!   rG   z,vtkTkImageViewerWidget.StartQueryInteraction
  s9   € Ø×!Ò!Ø�O‰OÔà×Ñ×'Ñ'¨Ô*Ø×#Ñ# A aÕ(r.   c                 óZ   — | j                   j                  d«       | j                  «        y r‡   )rj   rf   r3   r1   s    r!   rK   z*vtkTkImageViewerWidget.EndQueryInteraction  s   € Ø×Ñ×'Ñ'¨Ô*Ø�‰�r.   c                 óÊ  — | j                   }|j                  «       }|j                  «       }| j                  «       |z
  }|j	                  «       \  }}}}	}
}||k  s||kD  s||k  s||	kD  s
||
k  s||kD  ry |j                  «       }d}t        |«      D ]  }|j                  ||||«      }d||fz  }Œ | j                  j                  d|||fz  «       | j                  «        y )NÚ z%s  %.1fz(%d, %d): %s)r#   r’   r“   rŠ   Ú	GetExtentÚGetNumberOfScalarComponentsÚxrangeÚGetScalarComponentAsDoubleri   rY   r3   )r   r<   r=   r…   rš   r›   ÚxMinÚxMaxÚyMinÚyMaxÚzMinÚzMaxÚnumCompsÚtextÚiÚvals                   r!   rI   z-vtkTkImageViewerWidget.UpdateQueryInteraction  sð   € Ø×"Ñ"ˆØ—‘Ó!ˆØ×ÑÓˆð ×ÑÓ !Ñ#ˆð +0¯/©/Ó*;Ñ'ˆˆd�4˜˜T $Ø�ŠH˜˜Dš A¨¢HØ�ŠH˜˜Dš A¨¢HØà×4Ñ4Ó6ˆØˆÜ˜Ö!ˆAØ×2Ñ2°1°Q°q¸Ó;ˆCØ  c 
Ñ*‰Dð "ð 	×Ñ×#Ñ# N°a¸¸$°ZÑ$?Ô@à�‰�r.   N)r*   Ú
__module__Ú__qualname__Ú__doc__r   r-   r$   r3   r   rw   rP   rS   rN   r;   rE   rC   rW   rG   rK   rI   © r.   r!   r   r      s_   „ ñ
ð $&ó ,!ò\	1ò!ò#òK;òZòò#òò/òòò8ò0)òór.   r   Ú__main__)ÚvtkImageCanvasSource2Dé   iÿ  éd   éÈ   é    iô  i&  é   é   i�  r%   éÿ   é
   éZ   iþ  é2   iöÿÿÿiá  i	  iœÿÿÿé¾   é–   é(   i,  éú   i^  g      i@é7   iÂ  g      T@i   )ÚwidthÚheightr   é   g     à_@ÚQuit)r¯   ÚcommandÚtopÚbothÚt)ÚsideÚpadxÚpadyÚfillÚexpand)rÒ   rÓ   r<   )rÒ   )2r´   Ú
__future__r   ÚmathÚosÚsysÚ"vtkmodules.vtkCommonExecutionModelr   Úvtkmodules.vtkInteractionImager   Úvtkmodules.vtkRenderingCorer   r   r   r	   r   r   r*   Úvtkmodules.vtkImagingSourcesr·   Úvtkmodules.vtkRenderingOpenGL2Ú
vtkmodulesÚvtkmodules.vtkInteractionStyleÚcanvasÚSetNumberOfScalarComponentsÚSetScalarTypeÚ	SetExtentÚSetDrawColorÚFillBoxÚFillTubeÚDrawSegment3DÚDrawSegmentÚFillTriangleÚ
DrawCircleÚ	DrawPointÚ	FillPixelÚFrameÚframeÚwidgetr$   r…   ÚSetInputConnectionÚGetOutputPortr‹   rŒ   ÚButtonrU   ÚbuttonÚpackÚmainlooprµ   r.   r!   Ú<module>rõ      s6  ðñõ 'ß Ó Ý OÝ 9ß Aã å :ôW˜WŸ^™^ô Wðv ˆzÓÝCã)Û)á#Ó%€FØ
×&Ñ& qÔ)Ø
×Ñ˜ÔØ
×Ñ�Q�s˜1˜S  1Ô%Ø
×Ñ˜˜C Ô"Ø
‡N�N�1�S˜˜3ÔØ
×Ñ˜˜A˜cÔ"Ø
‡N�N�2�c˜#˜cÔ"Ø
×Ñ˜˜A˜aÔ Ø
‡O�O�C˜˜2˜c !Ô$Ø
×Ñ˜˜C Ô$Ø
×Ñ˜˜B˜q  C¨Ô*Ø
×Ñ˜˜B˜rÔ"Ø
×Ñ˜˜R  " R¨Ô*ð ×Ñ˜˜#˜aÔ Ø
×Ñ�s˜2˜b Ô%Ø
×Ñ�s˜3˜r #Ô&Ø
×Ñ�s˜3˜s 2Ô&Ø
×Ñ�s˜3˜s 3Ô'ð ×Ñ˜˜3˜sÔ#Ø
×Ñ˜˜S  S¨¨CÔ0ð ×Ñ˜˜C Ô#Ø
×Ñ�c˜#˜eÔ$ð ×Ñ˜˜C Ô$Ø
×Ñ�S˜ÔØ
×Ñ�S˜Ôð ×Ñ˜˜1˜QÔØ
×Ñ�c˜#˜dÔ#Ø
×Ñ˜˜C Ô$Ø
×Ñ�S˜Ôð ˆG�M‰M‹O€Eá# E°¸3ÀaÔH€FØ×"Ñ"Ó$€FØ
×Ñ˜f×2Ñ2Ó4Ô5Ø
×Ñ˜#ÔØ
×Ñ˜ÔàˆW�^‰^˜E v°e·j±jÔA€Fà
‡K�K�U  q¨f¸C€KÔ@Ø	‡J�J�F #€JÔ&Ø
‡K�K�S€KÔà	‡N�NÕð r.   