U
    Pe                     @   s   d Z dZddlZzddlZW n& ek
rB   dejkr>edY nX ddlmZ ddl	m
Z
 ddlmZ dd	lmZ dd
lmZ dejkrddlZG dd deZG dd de
Zede dS )z
Android Joystick Input Provider
===============================

This module is based on the PyGame JoyStick Input Provider. For more
information, please refer to
`<http://www.pygame.org/docs/ref/joystick.html>`_


)AndroidMotionEventProvider    NZKIVY_DOCzandroid lib not found.)Logger)MotionEventProvider)MotionEventFactory)	ShapeRect)MotionEventc                       s(   e Zd Z fddZ fddZ  ZS )AndroidMotionEventc                    s6   | dd | dd t j|| dddg| _d S )NZis_touchTZtype_idtouchpospressureshape)
setdefaultsuper__init__Zprofile)selfargskwargs	__class__ H/tmp/pip-unpacked-wheel-xzebddm3/kivy/input/providers/androidjoystick.pyr   !   s    zAndroidMotionEvent.__init__c                    s:   |\| _ | _| _}t | _|| j_|| j_t | d S N)	sxsyr   r   r   widthheightr   depack)r   r   radiusr   r   r   r   '   s
    zAndroidMotionEvent.depack)__name__
__module____qualname__r   r   __classcell__r   r   r   r   r      s   r   c                       s<   e Zd Z fddZdd Zdd Zdd Zd	d
 Z  ZS )r   c                    s.   t t| || g | _i | _d| _d | _d S )Nr   )r   r   r   	joystickstouchesuidwindow)r   devicer   r   r   r   r   1   s
    z#AndroidMotionEventProvider.__init__c                 C   sP   t d|  tj|}|  | dkr@t d|  d S | j| d S )NzAndroid: create joystick <%d>r   z.Android: discard joystick <%d> cause no button)	r   infopygamejoystickZJoystickinitZget_numbuttonsr"   append)r   indexZjsr   r   r   create_joystick8   s    z*AndroidMotionEventProvider.create_joystickc                 C   s@   t j  tdt j   tt j D ]}| | q,d S )NzAndroid: found %d joystick)r(   r)   r*   r   r'   Z	get_countranger-   )r   ir   r   r   startB   s    
z AndroidMotionEventProvider.startc                 C   s
   g | _ d S r   )r"   )r   r   r   r   stopH   s    zAndroidMotionEventProvider.stopc                 C   sx  | j sddlm} || _ | j j\}}| j}| jD ]@}| }|d}|sT||kr0|dd | }	d|dd |  }
|dd }|dd }|r||kr|  j	d7  _	t
| j| j	|	|
||g}|||< |d	| q0|r0|| }|j|	kr|j|
kr|j|krq0||	|
||g |d
| q0|s0||kr0|| }||	|
||g |  |d| || q0d S )Nr   )Windowg      @g      ?      g     @@   beginupdateend)r%   Zkivy.core.windowr2   Zsystem_sizer#   r"   Zget_idZ
get_buttonZget_axisr$   r   r&   r   r   r   moveZupdate_time_endpop)r   Zdispatch_fnr2   whr#   ZjoyZjidZpressedxyr   r   r	   r   r   r   r7   K   sD    



z!AndroidMotionEventProvider.update)	r   r   r    r   r-   r0   r1   r7   r!   r   r   r   r   r   /   s
   
r   android)__doc____all__osr?   ImportErrorenviron	ExceptionZkivy.loggerr   Zkivy.input.providerr   Zkivy.input.factoryr   Zkivy.input.shaper   Zkivy.input.motioneventr   Zpygame.joystickr(   r   r   registerr   r   r   r   <module>   s"   


F