U
    Pe                     @   sD   d Z dZddlmZ ddlmZmZ ddlmZ G dd deZ	dS )	z
Damped scroll effect
====================

.. versionadded:: 1.7.0

This damped scroll effect will use the
:attr:`~kivy.effects.scroll.ScrollEffect.overscroll` to calculate the scroll
value, and slows going back to the upper or lower limit.

)DampedScrollEffect    )ScrollEffect)NumericPropertyBooleanProperty)spc                       sX   e Zd ZdZedZedZedZedZ	dd Z
dd	 Zd
d Z fddZ  ZS )r   zUDampedScrollEffect class. See the module documentation for more
    information.
    g      ?g       @g      ?Tc                 C   sD  t | j| jkr6| jdkr6d| _| jr2t| j| _d S | j| j | | j }t | j| j	kr~|| j| j
 7 }|| j| j 7 }nd| _d}| js| jdkr| jdk rd}n| jdk r| jdkrd}| j| | _| js8| | j|  |dkr| j| jkr| j| _d| _d S |dkr8| j| jk r8| j| _d| _d S |   d S )Nr    maxmin)absZvelocityZmin_velocity
overscrollround_valueroundvalueZfrictionZstd_dtmin_overscrolledge_dampingspring_constantZ	is_manualapply_distancer	   r   trigger_velocity_update)selfdtZtotal_forceZstop_overscroll r   =/tmp/pip-unpacked-wheel-xzebddm3/kivy/effects/dampedscroll.pyupdate_velocity;   s8    z"DampedScrollEffect.update_velocityc                 G   s`   | j }| j}||kr|| }}| j|k r6| j| | _n| j|krN| j| | _nd| _| j| _d S )Nr   )r	   r   r   r   Zscroll)r   argsZ
scroll_minZ
scroll_maxr   r   r   on_value^   s    


zDampedScrollEffect.on_valuec                 G   s   |    d S )N)r   )r   r   r   r   r   on_overscrollk   s    z DampedScrollEffect.on_overscrollc                    s6   t | j}|r"|d|td   }tt| | d S )Ng      ?g      i@)r
   r   r   superr   r   )r   Zdistanceos	__class__r   r   r   n   s    
z!DampedScrollEffect.apply_distance)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r   r   __classcell__r   r   r   r   r      s   	
#r   N)
r#   __all__Zkivy.effects.scrollr   Zkivy.propertiesr   r   Zkivy.metricsr   r   r   r   r   r   <module>   s
   