
    +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    rddlmZ ddlZddlZ e            Ze                    d           e                    d           e                    dddddd           e                    ddd           e                    dddd           e                    ddd           e                    dddd           e                    ddd           e                    ddddd           e                    ddd           e                    dddddd           e                    ddd           e                    dddddd           e                    ddd           e                    dddd           e                    dddd           e                    dddd           e                    dddd           e                    ddd           e                     d dd!d"d#d$           e                    d%d%d           e!                    d&d&d'           e                    d%d%d%           e"                    d&d&           e"                    d&d           e                    d(dd           e!                    d)d&d*           e                    ddd           e#                    d)d&            ej$                    Z% ee%d+d+d,          Z&e&'                                Z(e()                    e*                                           e(+                    d-           e(,                    d.            ej-        e%d/e%j.        0          Z/e&0                    d1ddd2d34           e%0                    d2d35           e/0                    d67           e%1                                 dS dS )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                   v    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dS )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         }n# t          $ r t                      }Y nw xY wd}	 |d         rd}|d= n#  Y nxY w|                    d          rd| _        |d= nd| _        |                    d          |d<   t          j        	                    | |d||           |r&|
                                                                 |                                  dS )	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         ^/DATA/AppData/hermes/venv/lib/python3.11/site-packages/vtkmodules/tk/vtkTkImageViewerWidget.pyr   zvtkTkImageViewerWidget.__init__    s1     	vy)))	+T(KK 	+ 	+ 	+(**KKK	+ 	(| ! 8	D 66"## 	#!"D#$$!"D112BCC4f.F #R	) 	) 	) 	;''))88:::     s    :: A Ac                     |dk    r:| 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   sm    
 >!!7<<)9::122>D!"84"?@@@T^4()+/0 1 1 	1    c                     | j         S N)r#   r   s    r!   r$   z%vtkTkImageViewerWidget.GetImageViewerY   s      r.   c                 8    | j                                          d S r0   )r#   Renderr1   s    r!   r3   zvtkTkImageViewerWidget.Render\   s      """""r.   c                    | j                                         }t                      }|                    d           |                                }|                                 |                    d           |                                 |                                 || _	        t                      }|                    |           |                    d           |                                                    dd           |                                                    ddd           |                    d           |                    |           || _        t                      }|                    d           |                                }|                                 |                    d           |                                 |                                 || _        t                      }|                    |           |                    d           |                                                    dd           |                                                    ddd           |                    d           |                    |           || _        d| _        d| _        d| _        d| _        |                     d| fd	           |                     d
| fd           |                     d| fd           |                     d| fd           |                     d| fd           |                     d| fd           |                     d| fd           |                     d| fd           |                     d| fd           |                     d| fd           |                     d| fd           d S )Nnone   r               ?r   z<ButtonPress-1>c                 B    |                     | j        | j                  S r0   )StartWindowLevelInteractionxyess     r!   <lambda>z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>   s    1#@#@QS#I#I r.   z<B1-Motion>c                 B    |                     | j        | j                  S r0   )UpdateWindowLevelInteractionr<   r=   r>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>   s    1#A#A!#ac#J#J r.   z<ButtonRelease-1>c                 *    |                                 S r0   )EndWindowLevelInteractionr>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>   s    1#>#>#@#@ r.   z<ButtonPress-3>c                 B    |                     | j        | j                  S r0   )StartQueryInteractionr<   r=   r>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>   s    1#:#:13qs#C#C r.   z<B3-Motion>c                 B    |                     | j        | j                  S r0   )UpdateQueryInteractionr<   r=   r>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>   s    1#;#;AC#D#D r.   z<ButtonRelease-3>c                 *    |                                 S r0   )EndQueryInteractionr>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>       1#8#8#:#: r.   z<Expose>c                 *    |                                 S r0   )ExposeTkImageViewerr>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>   rL   r.   z<Enter>c                 *    |                                 S r0   )EnterTkViewerr>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>       1??#4#4 r.   z<Leave>c                 *    |                                 S r0   )LeaveTkViewerr>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>   rQ   r.   z<KeyPress-e>c                 *    |                                 S r0   )quitr>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>   s    16688 r.   z<KeyPress-r>c                 *    |                                 S r0   )ResetTkImageViewerr>   s     r!   rA   z:vtkTkImageViewerWidget.BindTkImageViewer.<locals>.<lambda>   s    1#7#7#9#9 r.   )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0 ''))##%%%2"Q##%%..q444$$Qq---A%    ''))##%%%2#Q##%%..q333$$Qq---A%   ! 			#!III	K 	K 	K		-!JJJ	L 	L 	L		%!@@@	B 	B 	B 			#!CCC	E 	E 	E		-!DDD	F 	F 	F		%!:::	< 	< 	< 			*!:::	< 	< 	<		)!444	6 	6 	6		)!444	6 	6 	6		.!+++	- 	- 	-		.!999	; 	; 	; 	; 	;r.   c                 `    |                                  | _        |                                  d S r0   )	focus_getrm   focusr1   s    r!   
_GrabFocusz!vtkTkImageViewerWidget._GrabFocus   s$    ~~''

r.   c                 @    | j         r|                                  d S d S r0   )r   rw   r1   s    r!   rP   z$vtkTkImageViewerWidget.EnterTkViewer   s-     	OO	 	r.   c                 d    | j         r&| j        d k    r| j                                         d S d S d S r0   )r   rm   rv   r1   s    r!   rS   z$vtkTkImageViewerWidget.LeaveTkViewer   sC     	#4>T#9#9N  """""	# 	##9#9r.   c                     | j         dk    rid| _         | j                                                            d          s|                                  | j                                         d| _         d S d S )Nr   r   vtkCocoaRenderWindow)rn   r#   r   IsAupdater3   r1   s    r!   rN   z*vtkTkImageViewerWidget.ExposeTkImageViewer   sp    NaDN%5577*++$$&&&DNNN  r.   c                    | j         s|                                  | j        }|| _        || _        t          |                                          | _        t          |                                          | _	        | j
                            d           | j                            d           |                     ||           d S 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455F002233 	&&q)))''***))!A.....r.   c                     | j                             d           | j                            d           |                                  d S Nr   )rh   rf   rj   r3   r1   s    r!   rE   z0vtkTkImageViewerWidget.EndWindowLevelInteraction   sA    &&q)))''***r.   c                 .   d|| j         z
  z  |                                 z  | j        z  }d| j        |z
  z  |                                 z  | j        z  }| j        dk     r| }| j        dk     r| }| j        |z   }|dk     r| j        |z   }n
| j        |z
  }| j        }|                    |           |                    |           | j	        
                    d|z             | j        
                    d|z             |                                  d S )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&   !dk/"4#3#3#5#55dlB$+/"4#4#4#6#66t{B L3BK#B "SLLK"$EEK"$E"f%%%U#####L6$9:::"";#6777r.   c                    | j         }|                                }|d k    rd S |                                }|                                 |                    d          }|                    t          j                              }||d<   ||d<   |                    ddd|           |	                                \  }}|
                    ||z
             |                    ||z   dz             |                                  d S )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    "!!TMMF !!!))!,,hh7DFFGGAAQ1c"""))++
TdSj)))dSjC/000r.   c                     | j         s|                                  | j                            d           |                     ||           d S r   )r   rw   rj   rf   rI   )r   r<   r=   s      r!   rG   z,vtkTkImageViewerWidget.StartQueryInteraction
  sP    ! 	OO''***##Aa(((((r.   c                 b    | j                             d           |                                  d S r   )rj   rf   r3   r1   s    r!   rK   z*vtkTkImageViewerWidget.EndQueryInteraction  s*    ''***r.   c                 
   | j         }|                                }|                                }|                                 |z
  }|                                \  }}}}	}
}||k     s||k    s||k     s||	k    s||
k     s||k    rd S |                                }d}t          |          D ]!}|                    ||||          }d||fz  }"| j        	                    d|||fz             | 
                                 d S )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$HHDAHHHHDAHHF4466!! 	+ 	+A221Qq;;Cc
*DD##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 	1 	1! ! !# # #K; K; 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      s    ' & & & & &             O O O O O O 9 9 9 9 9 9 A A A A A A A A  : : : : : :W W W W WW^ W W Wv zCCCCC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00 C###
c#e$$$ C$$$
S
S 1Q
c#d###
C$$$
S GMOOE##E3aHHHF""$$F
f2244555
#
W^EvejAAAF
KKUqfCK@@@	JJF#J&&&
KKSK	NN r.   