
:6ic           @   si   d  d l  Z d  d l Z d   Z d e j j j f d     YZ e e j j _ d e f d     YZ	 d S(   iNc         C   s   |  S(   sj   
    An edgescroll function that causes the move speed to be proportional
    from the edge distance.
    (    (   t   n(    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\viewport.pyt   edgescroll_proportional   s    t   Viewportc           B   s   e  Z d  Z e Z d   Z d d d d d e e e d d d d d e d  Z d   Z	 d   Z
 d   Z d   Z d   Z d	   Z d
   Z d   Z RS(   i   c         C   s3  | d k  rr t  j j j d d  |  _ t  j j j d d  |  _ t |  _ t |  _ t |  _	 d |  _
 d |  _ n  | d k  r d  |  _ n  | d k  r t |  _ t |  _ d  |  _ d |  _ d |  _ d  |  _ n  | d k  rd  |  _ d  |  _ d |  _ t |  _ d  |  _ d  |  _ n  | d k  r/|  j	 |  _ n  d  S(   Ni   i    i   i   i   i   (   NN(   t   renpyt   displayt   behaviort
   Adjustmentt   xadjustmentt   yadjustmentt   Falset   set_adjustmentst
   mousewheelt	   draggablet   widtht   heightt   Nonet   drag_positiont	   edge_sizet
   edge_speedt   edge_functiont   edge_xspeedt   edge_yspeedt   edge_last_stt   xadjustment_paramt   yadjustment_paramt   offsets_paramt   Truet   set_adjustments_paramt   xinitial_paramt   yinitial_paramt	   focusable(   t   selft   version(    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\viewport.pyt   after_upgrade+   s4    														t   viewportc         K   s  t  t |   j d |
 |  | d  k	 r8 |  j |  n  | |  _ | |  _ | |  _ | |  _ | |  _	 | |  _
 |  j   t | t  r | j j |  j _ | j j |  j _ | j j |  j _ | j j |  j _ | j |  _ | j |  _ | j |  _ n	 d  |  _ | \ |  _ |  _ | |  _ | |  _ | |  _ | p5| |  _ d |  _ d |  _ d |  _ d |  _ d  |  _ |	 d  k	 r|	 d |  _ |	 d |  _  t! |	  d k r|	 d |  _" qt# |  _" n d |  _ d |  _  t# |  _" d  S(   Nt   stylei    i   i   i   ($   t   superR   t   __init__R   t   addR   R   R   R   R   R   t   _showt
   isinstanceR   t   rangeR   t   valuet   xoffsett   yoffsetR   t   child_widtht   child_heightR   R   t	   arrowkeysR   R   R   R   R   R   R   R   t   lenR   R   (   R   t   childt
   child_sizet   offsetsR   R   R
   R   R   t
   edgescrollR#   t   xinitialt   yinitialt   replacesR/   t
   properties(    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\viewport.pyR%   K   sL    						
											c         C   s  |  j  d  k r- t j j j d d  |  _ n |  j  |  _ |  j d  k rf t j j j d d  |  _ n |  j |  _ |  j j	 d  k r t
 |  j _	 n  |  j j	 d  k r t
 |  j _	 n  |  j |  _ |  j } | d d  k	 r | d n |  j |  _ | d d  k	 r	| d n |  j |  _ d  S(   Ni   i    (   R   R   R   R   R   R   R   R   R   t
   adjustableR   R   R
   R   R   R+   R   R,   (   R   R3   (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\viewport.pyR'      s    	&c         C   s$   |  j  j |   |  j j |   d  S(   N(   R   t   registerR   (   R   (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\viewport.pyt   per_interact   s    c         C   s  |  j  } |  j } |  j j s0 t | |  } n  |  j j sN t | |  } n  t | |  j j  } t | |  j j  } |  j	 rBt | | d  } |  j
 j | k s |  j
 j | k r | |  j
 _ | |  j
 _ |  j
 j   n  t | | d  } |  j j | k s|  j j | k rB| |  j _ | |  j _ |  j j   qBn  |  j d k	 rt |  j t  ro|  j } n t | | d  |  j } | |  j
 _ n  |  j d k	 rt |  j t  r|  j } n t | | d  |  j } | |  j _ n  |  j r|  j d k	 r|  j s|  j rt | |  j d  }	 |  j
 j |  j
 j |	 |  j  |  j j |  j j |	 |  j  |  j |  n  t |  j
 j  }
 t |  j j  } | | k p| | k |  _ |
 | | | f S(   s>  
        This is called by render once we know the width (`cw`) and height (`ch`)
        of all the children. It returns a pair of offsets that should be applied
        to all children.

        It also requires `st`, since hit handles edge scrolling.

        The returned offsets will be negative or zero.
        i    N(   R   R   R#   t   xfillt   mint   yfillt   maxt   xminimumt   yminimumR
   R   R)   t   paget   updateR   R+   R   R(   t   intR*   R,   R   R   R   R   t   changet   check_edge_redrawt	   _clipping(   R   t   cwt   cht   stR   R   t   xaranget   yarangeR*   t   durationt   cxot   cyo(    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\viewport.pyt   update_offsets   sL    			$$*!!c         C   s<  | |  _  | |  _ |  j p | } |  j p- | } t j j j |  j | | | |  } | j   \ } }	 |  j	 | |	 |  \ }
 } } } |
 | f g |  _
 t j j j | |  } | j | |
 | f  | j d d | | f d t } |  j r| j |  d  d  d  d  d   n  |  j r8| j |  d  d d | |  n  | S(   Ni    t   focus(   R   R   R-   R.   R   R   t   renderR1   t   get_sizeRP   R3   t   Rendert   blitt
   subsurfaceR   R/   t	   add_focusR   R   (   R   R   R   RJ   t   atR-   R.   t   surfRH   RI   RN   RO   t   rv(    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\viewport.pyRR      s     		$!!		c         C   s   t  } |  j d k r6 |  j j |  j j k  r6 t } n  |  j d k  r` |  j j d k r` t } n  |  j d k r |  j j |  j j k  r t } n  |  j d k  r |  j j d k r t } n  | r t j	 j
 j |  d  | |  _ n	 d  |  _ d  S(   Ni    (   R	   R   R   R*   R)   R   R   R   R   R   RR   t   redrawR   R   (   R   RJ   R[   (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\viewport.pyRF     s    '	!	'	!	c         C   sR  d  |  _ d  |  _ t t |   j | | | |  } | d  k	 rC | S|  j rt j j	 j
   |  k r|  j \ } } | | } | | }	 |  j j |  j j |  |  j j |  j j |	  | | f |  _ t j j j | d  rt j j	 j d   t j j j    qn  d | k o'|  j k  n oHd | k oF|  j k n sfd |  _ d |  _ t }
 n t }
 |
 r|  j r|  j d k r|  j } t } nQ |  j d k r|  j } t } n0 |  j d k r|  j } t } n |  j } t } t j j j | d  r\| r| j d k rd  S| j | j | j  } | d  k	 rG| St j j j    n  t j j j | d  r| r| j | j k rd  S| j | j | j  } | d  k	 r| St j j j    qn  |  j rt j j j | d  rO|  j j d k rd  S|  j j |  j j |  j j  } | d  k	 r:| St j j j    n  t j j j | d	  r|  j j |  j j k rd  S|  j j |  j j |  j j  } | d  k	 r| St j j j    n  t j j j | d
  r?|  j j d k rd  S|  j j |  j j |  j j  } | d  k	 r*| St j j j    n  t j j j | d  r|  j j |  j j k rsd  S|  j j |  j j |  j j  } | d  k	 r| St j j j    qn  |
 rK|  j rKt j j j | d  rKt j j	 j   } | d  k s| |  k rH| | f |  _ t j j	 j |   t j j j    qHqKn  |
 rN|  j  rN| j! t" j# t" j$ t" j% g k rNd   } | | |  j |  j  |  j  } | | | |  j  d  8} |  j& |  j' |  |  _ | | |  j |  j  |  j  } | | | |  j  d  8} |  j& |  j' |  |  _ | s2| rB|  j( |  qNd  |  _) n  d  S(   Nt   viewport_drag_endi    s   horizontal-changeRE   t
   horizontalt   viewport_upt   viewport_downt   viewport_leftarrowt   viewport_rightarrowt   viewport_uparrowt   viewport_downarrowt   viewport_drag_startc         S   s:   d |  | | | }  |  d k  r& d S|  d k r6 d S|  S(   s  
                Given a position `n`, computes the speed. The speed is 0.0
                when `n` == `zero`, 1.0 when `n` == `one`, and linearly
                interpolated when between.

                Returns 0.0 when outside the bounds - in either direction.
                g      ?g        (    (   R    t   zerot   one(    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\viewport.pyt   speed  s    	(*   R   R+   R,   R$   R   t   eventR   R   R   RQ   t   get_grabR   R   RE   R*   R   R   t	   map_eventt   set_grabt   coret   IgnoreEventR   R   R   R   R	   R   R   t   stepR)   R/   t   get_focusedR   t   typet   pygamet   MOUSEMOTIONt   MOUSEBUTTONDOWNt   MOUSEBUTTONUPR   R   RF   R   (   R   t   evt   xt   yRJ   RZ   t   oldxt   oldyt   dxt   dyt   insidet
   adjustmentRE   t   focusedRg   t   xspeedt   yspeed(    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\viewport.pyRh   *  s    		!!

>											""""0	c         C   s#   | |  _  t j j j |  d  d  S(   Ni    (   R+   R   R   RR   R[   (   R   t   offset(    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\viewport.pyt   set_xoffset  s    	c         C   s#   | |  _  t j j j |  d  d  S(   Ni    (   R,   R   R   RR   R[   (   R   R   (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\viewport.pyt   set_yoffset  s    	N(   NN(   NN(   t   __name__t
   __module__t   __version__R	   R/   R!   R   R   R%   R'   R;   RP   RR   RF   Rh   R   R   (    (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\viewport.pyR   %   s2   	!A			F				t   VPGridc           B   s/   e  Z e j Z d d d d  d  Z d   Z RS(   t   vpgridc         K   s   t  t |   j d | |  | d  k rC | d  k rC t d   n  | d  k	 rp | d  k rp | d  k rp t } n  | |  _ | |  _ | |  _ d  S(   NR#   s1   A VPGrid must be given the rows or cols property.(	   R$   R   R%   R   t	   ExceptionR   t	   grid_colst	   grid_rowst   grid_transpose(   R   t   colst   rowst	   transposeR#   R8   (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\viewport.pyR%     s    $			c         C   s  | |  _  | |  _ |  j p | } |  j p- | } |  j sX g  |  _ t j j j	 d d  St
 |  j  } |  j } |  j }	 | d  k r | |	 } |	 | | k  r | d 7} q n  |	 d  k r | | }	 |	 | | k  r |	 d 7}	 q n  |  j j }
 t j j j |  j d | | | |  } | j   \ } } | |
 | |
 } | |
 |	 |
 } |  j j rz| } | | d |
 | } n  |  j j r| } | |	 d |
 |	 } n  |  j | | |  \ } } } } g  |  _ t j j j	 | |  } xlt |  j  D][\ } } |  j r#| |	 } | |	 } n | | } | | } | | |
 | } | | |
 | } | | d k  r|  j j | | f  qn  | | d k  r|  j j | | f  qn  | | k r|  j j | | f  qn  | | k r|  j j | | f  qn  t j j j | | | | |  } | j | | | | | |  } |  j j |  qW| j d d | | f d t } |  j r| j |  d  d  d  d  d   n  |  j r| j |  d  d d | |  n  | S(   Ni    i   RQ   (   R   R   R-   R.   t   childrenR3   R   R   RR   RT   R0   R   R   R   R#   t   spacingRS   R<   R>   RP   t	   enumerateR   t   appendt   placeRV   R   R/   RW   R   (   R   R   R   RJ   RX   R-   R.   t   lcR   R   R   t   rendRH   RI   t   twt   thRN   RO   RZ   t   indext   cRv   Rw   RY   t   pos(    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\viewport.pyRR     sz    						

(!		


!!		N(   R   R   R   R   R   R%   RR   (    (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\viewport.pyR     s   	(
   t   renpy.displayR   t   pygame_sdl2Rq   R   R   t   layoutt	   ContainerR   R   (    (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\viewport.pyt   <module>   s   	 