
    Eg                     (    d dl mZmZ  G d d      Zy)    )GLibGObjectc                   X    e Zd ZdZd ZddZddZd ZddZddZ	dd	Z
d
 ZddZd Zy)Faderz
    The Fader is used by the Stage to fade in from the desktop.

    It uses a widget tick callback to change the opacity over time.
    c                     || _         d | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        y )NF        r   )	widgetfinished_cbrepositionedstarting_opacitycurrent_opacitytarget_opacitytick_id
start_timeend_time)selfr	   s     -/usr/share/cinnamon-screensaver/util/fader.py__init__zFader.__init__   sF    ! #"!    Nc                 H    t        j                  | j                  |||       y N)r   idle_add_fade_in_idler   msreposition_cbr
   s       r   fade_inzFader.fade_in   s    ++RLr   c                 F    t        j                  | j                  ||       y r   )r   r   _fade_out_idler   r   r
   s      r   fade_outzFader.fade_out   s    ,,b+>r   c                 |    | j                   dkD  r-| j                  j                  | j                          d| _         y y Nr   )r   r	   remove_tick_callback)r   s    r   cancelzFader.cancel    s0    <<!KK,,T\\:DL r   c                 <   || _         || _        | j                  j                         x| _        | _        d| _        | j                  j                         r| j                  j                         j                         | _
        | j                  |dz  z   | _        | j                  dk(  r*| j                  j                  | j                        | _        | j                  | j                         t         j"                  S | j                          t         j"                  S )Ng      ?  r   )r
   r   r	   get_opacityr   r   r   
get_mappedget_frame_clockget_frame_timer   r   r   add_tick_callback_on_frame_tick_fade_in_fade_in_stepr   SOURCE_REMOVEr   s       r   r   zFader._fade_in_idle%   s    &*7;{{7N7N7PPt4!;;!!#"kk99;JJLDO OOrDy9DM||q #{{<<T=X=XYt/ !!! !!!r   c                 .   || _         | j                  j                         x| _        | _        d| _        | j                  j                         r| j                  j                         j                         | _	        | j                  |dz  z   | _
        | j                  dk(  r*| j                  j                  | j                        | _        | j                  | j                         t        j                   S | j                          t        j                   S )Nr   r'   r   )r
   r	   r(   r   r   r   r)   r*   r+   r   r   r   r,   _on_frame_tick_fade_out_fade_out_stepr   r/   r    s      r   r   zFader._fade_out_idle8   s    &7;{{7N7N7PPt4!;;!!#"kk99;JJLDO OOrDy9DM||q #{{<<T=Y=YZ0 !!! !!!r   c                 H   |j                         }| j                  |       | j                  s&| j                  dkD  rd| _        | j	                          | j                  | j
                  k(  r'd| _        | j                          t        j                  S t        j                  S )NgQ?Tr   )r+   r.   r   r   r   r   r   r
   r   r/   SOURCE_CONTINUEr   r	   clockdatanows        r   r-   zFader._on_frame_tick_fade_inJ   s    ""$3  T%9%9C%? $D 4#6#66DL%%%###r   c                     || j                   k  r7|| j                  z
  | j                   | j                  z
  z  | j                  z  }n| j                  }|| _        | j                  j                  | j                         y r   )r   r   r   r   r	   set_opacityr   r8   ts      r   r.   zFader._fade_in_stepZ   sd    'DMMDOO,KLtObObbA##A  4 45r   c                     |j                         }| j                  |       | j                  | j                  k(  r'd| _        | j                          t        j                  S t        j                  S r#   )	r+   r2   r   r   r   r
   r   r/   r4   r5   s        r   r1   zFader._on_frame_tick_fade_outd   s]    ""$C 4#6#66DL%%%###r   c                    || j                   k  rD| j                  || j                  z
  | j                   | j                  z
  z  | j                  z  z
  }n| j                  }|| _        | j
                  j                  | j                         y r   )r   r   r   r   r   r	   r:   r;   s      r   r2   zFader._fade_out_stepp   ss    %%3+@T]]UYUdUdEd*eimi~i~)~A##A  4 45r   )NNr   )__name__
__module____qualname____doc__r   r   r!   r%   r   r   r-   r.   r1   r2    r   r   r   r      s:    
M?
"&"$$ 6
$6r   r   N)gi.repositoryr   r   r   rC   r   r   <module>rE      s    (s6 s6r   