
    g
f                        d Z dZdZdZdZdZddlmZ 	 dd	lZdd	l	Z	 e	j                  d
d       ddlmZ dZ G d d      Z G d de      Zy	# e$ r.ZdegZ ej"                  ej$                  ed       dZY d	Z[Dd	Z[ww xY w)z7Module for drawing highlights over an area of interest.z$Id$z
$Revision$z$Date$zCopyright (c) 2023 Igalia, S.L.LGPL   )debug    NGtkz3.0)r   Tz(HIGHLIGHTER: GtkHighlighter unavailable:Fc                   ~    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y)Highlighterz1Base class of all highlighters supported by Orca.	highlight	rectangle	underline)r   r   r   )r   r   r   )r   r   r   )r   r   r   )      ?r   r   )r   r   r   )r   g      ?g?)r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   c                     || _         || _        || _        || _        || _        || _        || _        | j                         | _        y )N)	_highlight_type_color_alpha
_thickness_padding_fill_color_fill_alpha_create_gui_gui)selfhighlight_typecoloralpha	thicknesspadding
fill_color
fill_alphas           2/usr/lib/python3/dist-packages/orca/highlighter.py__init__zHighlighter.__init__@   sF    -#%%$$&	    c                      y) Creates the gui for the overlay.N r   s    r   r   zHighlighter._create_guiJ   s    r!   c                      y)6Called by highlight to draw a highlight over the item.Nr$   r   painters     r   _draw_highlightzHighlighter._draw_highlightN       r!   c                      y)8Called by highlight to draw a rectangle around the item.Nr$   r(   s     r   _draw_rectanglezHighlighter._draw_rectangleR   r+   r!   c                      y)8Called by highlight to draw an underline under the item.Nr$   r(   s     r   _draw_underlinezHighlighter._draw_underlineV   r+   r!   c                      y)3Draws the desired indicator over the specified box.Nr$   )r   xywidthheights        r   r	   zHighlighter.highlightZ   r+   r!   c                      y)Quits the highlighter.Nr$   r%   s    r   quitzHighlighter.quit^   r+   r!   N)__name__
__module____qualname____doc__	HIGHLIGHT	RECTANGLE	UNDERLINEREDBLUEGREENYELLOWPURPLEORANGEPINKCYANMAGENTALIMENAVYTEALBLACKWHITEr    r   r*   r.   r1   r	   r:   r$   r!   r   r   r   *   s}    ;III
CDEFFFDDGDDDEE'r!   r   c                        e Zd ZdZej
                  ej                  dddddf fd	Zd Zd Z	d Z
d	 Zd
 Zd Zd Z xZS )GtkHighlighterz5Highlighter that uses a GtkWindow to highlight items.g      ?   Nc           	          t         s(d}t        j                  t        j                  |d       y t        	|   |||||||       d | _        y )Nz1GTK HIGHLIGHTER: Unavailable. Is Cairo installed?T)CAIRO_AVAILABLEr   printMessage
LEVEL_INFOsuperr    _drawing_area)
r   r   r   r   r   r   r   r   msg	__class__s
            r   r    zGtkHighlighter.__init__f   sJ     ECu//d;y':Wab!r!   c                    t        j                         }|j                  d       |j                  d       |j	                  d       |j                  d       |j                  d       |j                         }|j                         }|r!|j                         r|j                  |       t        j                         | _        | j                  j                  d| j                         |j                  | j                         |S )r#   FTdraw)r   Windowset_decoratedset_accept_focusset_app_paintableset_skip_taskbar_hintset_skip_pager_hint
get_screenget_rgba_visualis_composited
set_visualDrawingArearX   connect_on_drawadd)r   guiscreenvisuals       r   r   zGtkHighlighter._create_guiv   s     jjl% U#d#!!$'%!'')f**,NN6" __.""64==9""#
r!   c                    | j                   | j                  k(  r| j                  |       y| j                   | j                  k(  r| j	                  |       y| j                   | j
                  k(  r| j                  |       yy)z$Signal handler for the 'draw' event.N)r   r?   r*   r@   r.   rA   r1   )r   widgetr)   s      r   ri   zGtkHighlighter._on_draw   si     4>>1  )!!T^^3  )!!T^^3  ) 4r!   c                 T   | j                   | j                  | _         | j                  d| _        g | j                   | j                  } |j                  |  |j	                  t
        j                         |j                          |j	                  t
        j                         y)r'   Ng333333?)	r   rE   r   set_source_rgbaset_operatorcairoOPERATOR_SOURCEpaintOPERATOR_OVER)r   r)   fills      r   r*   zGtkHighlighter._draw_highlight   s     ##{{D#"D4!!44#3#34&U223U001r!   c                    | j                   }| j                   }| j                  j                         d| j                   z  z
  }| j                  j                         d| j                   z  z
  }| j                  ]| j
                  Qg | j                  | j
                  dz  } |j                  |  |j                  ||||       |j                          g | j                  | j                  } |j                  |  |j                  | j                         |j                  ||||       |j                          y)r-      N   )r   r   get_allocated_widthget_allocated_heightr   r   rq   r
   rw   r   r   set_line_widthr   stroke)r   r)   r4   r5   r6   r7   rw   lines           r   r.   zGtkHighlighter._draw_rectangle   s    MMMM		--/!dmm2CC//1A4EE'D,<,<,H>T%%>t'7'7#'=>D#G##T*aE62LLN**dkk*&t/!Qv.r!   c                    g | j                   | j                  } |j                  |  |j                  | j                         |j                  d| j                  j                         dz
         |j                  | j                  j                         | j                  j                         dz
         |j                          y)r0   r   rR   N)r   r   rq   r}   r   move_tor   r|   line_tor{   r~   )r   r)   r   s      r   r1   zGtkHighlighter._draw_underline   s     +*dkk*&t/49999;a?@		5579W9W9Y\]9]^r!   c                    d| d| d| d| }t        j                  t         j                  |d       	 | j                  j	                  || j
                  z
  || j
                  z
         | j                  j                  |d| j
                  z  z   |d| j
                  z  z          | j                  j                          y# t        $ r3}d|g}t        j                  t         j                  |d       Y d}~yd}~ww xY w)	r3   zGTK HIGHLIGHTER: x:z, y:z, width:z	, height:Try   zGTK HIGHLIGHTER: Exception:N)
r   rU   rV   r   mover   resizeshow_all	ExceptionprintTokens)r   r4   r5   r6   r7   rY   excerror_tokenss           r   r	   zGtkHighlighter.highlight   s     $A3d1#XeWIfXN5++S$7	!IINN1t}},a$--.?@IIUQ%66T]]AR8RS
 II 	  	D93?Le..dCC	Ds   A2C 	C>)C99C>c                     d}t        j                  t         j                  |d       | j                  j	                          d| _        d| _        y)r9   zGTK HIGHLIGHTER: Quitting.TN)r   rU   rV   r   destroyrX   )r   rY   s     r   r:   zGtkHighlighter.quit   s@     +5++S$7		!	r!   )r;   r<   r=   r>   r   rA   rD   r    r   ri   r*   r.   r1   r	   r:   __classcell__)rZ   s   @r   rQ   rQ   c   sQ    ? !, 5 5"((  " (*2(!r!   rQ   )r>   __id____version____date____copyright____license__ r   rs   girequire_versiongi.repositoryr   rT   r   errortokensr   rV   r   rQ   r$   r!   r   <module>r      s   * >1 	Bue$!O6 6rs[ s}  8%@FEe&&5Os   #A B $A;;B 