
    tj,                        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d2d34       e%ja                  d2d35       e/ja                  d67       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         Q/DATA/.local/lib/python3.12/site-packages/vtkmodules/tk/vtkTkImageViewerWidget.pyr   zvtkTkImageViewerWidget.__init__    s      	vyy)	+T(K 	(| 8
 66"#!"D#$!"D112B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    
 >!77<<)9:12>D!"84"?@@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#@#@QSS#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!##acc#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#:#:133qss#Cr.   z<B3-Motion>c                 N    |j                  | j                  | j                        S r0   )UpdateQueryInteractionr<   r=   r>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>   s    1#;#;ACC#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
    1668r.   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$$Qq-A%  '')##%2#Q##%..q3$$Qq-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    OO 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NN  " $: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^    NNaDN%%557*+,$$&DN  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    !!OO""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   !dkk/"4#3#3#55dllB$++/"4#4#4#66t{{B LL3BKK#B "SLKK"$EKK"$E""f%U###L6$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    ""!TM !))!,hh7DDFGAAQ1c"))+
TdSj)dSjC/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    !!OO''*##Aa(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//*;'d4T$HDAHHDAH446!A221Qq;Cc
*D " 	##Na$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   ii  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)

Qs1S1%
C"
NN1S3
Ac"
NN2c#c"
Aa 
OOC2c!$
C$
BqC*
Br"
R"R* #a 
s2b%
s3r#&
s3s2&
s3s3' 3s#
SSC0 C#
c#e$ C$
S
S 1Q
c#d#
C$
S GMMOE#E3aHF""$F
f2245
#
W^^EvejjAF
KKUqfCK@	JJF#J&
KKSK	NN r.   