ó
:…6ic           @   s›   d  d l  Z d  d l Z d  d l m Z d  d l Z e ƒ  Z d e j	 j
 j f d „  ƒ  YZ d e j	 j
 j f d „  ƒ  YZ d e j j f d „  ƒ  YZ d S(	   iÿÿÿÿN(   t   rendert   ImageMapCropc           B   s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   sD   
    This handles the cropping of uncached imagemap components.
    c         C   s)   t  t |  ƒ j ƒ  | |  _ | |  _ d  S(   N(   t   superR   t   __init__t   childt   rect(   t   selfR   R   (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\imagemap.pyR   (   s    	c         C   s
   |  j  g S(   N(   R   (   R   (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\imagemap.pyt   visit.   s    c         C   s+   t  |  j | | | | ƒ } | j |  j ƒ S(   N(   R    R   t
   subsurfaceR   (   R   t   widtht   heightt   stt   att   cr(    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\imagemap.pyR    1   s    (   t   __name__t
   __module__t   __doc__R   R   R    (    (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\imagemap.pyR   #   s   		t   ImageCacheCropc           B   s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   s=   
    This handles the cropping of an imagemap component.
    c         C   s)   t  t |  ƒ j ƒ  | |  _ | |  _ d  S(   N(   R   R   R   t   cachet   index(   R   R   R   (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\imagemap.pyR   ;   s    	c         C   s   |  j  j |  j ƒ S(   N(   R   R   R   (   R   (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\imagemap.pyR   D   s    c         C   s   |  j  j |  j | | | | ƒ S(   N(   R   R    R   (   R   R	   R
   R   R   (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\imagemap.pyR    G   s    (   R   R   R   R   R   R    (    (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\imagemap.pyR   6   s   			t   ImageMapCachec           B   sP   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   c         C   s[   t  j ƒ  |  _ g  |  _ i  |  _ g  |  _ d  |  _ d  |  _ d  |  _ d  |  _	 | |  _
 d  S(   N(   t   hashlibt   md5t	   imagerectt   hotspotst   areast   NoneR   t
   cache_rectt   cache_widtht   cache_heightt   enable(   R   R   (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\imagemap.pyR   M   s    							c         C   s/   |  j  d  k	 r |  j  g S|  j | d g Sd  S(   Ni    (   R   R   R   (   R   R   (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\imagemap.pyR   g   s    
c         C   s  t  | t j j j ƒ s0 t j j s0 |  j r= t | | ƒ S| | f } |  j	 j
 | d  ƒ } | d  k	 rn | S|  j j t | j ƒ ƒ |  j j t | ƒ ƒ t |  j ƒ } t |  | ƒ } |  j j | ƒ | |  j	 | <|  j j | d d | d d | f ƒ | S(   Ni   i   (   t
   isinstancet   renpyt   displayt   imt	   ImageBaset   configt   imagemap_cacheR   R   R   t   getR   R   t   updatet   reprt   identityt   lenR   R   t   appendR   (   R   t   dR   t   keyt   rvR   (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\imagemap.pyt   cropm   s     
)c         C   sþ   |  j  j ƒ  |  j  j ƒ  d  g t |  j  ƒ |  _ |  j  d d } d } d } d } x‹ |  j  D]€ \ } } } | | | k r˜ | | 7} d } d } n  | d | d | d | d f |  j | <| | 7} | | k  r` | } q` q` W| |  _ | | |  _ d  S(   Ni    i   i   (   R   t   sortt   reverseR   R*   R   R   R   (   R   R	   t   xt   yt   line_heightt   wt   ht   i(    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\imagemap.pyt   layout„   s$    
	)
	c         C   s  | t  k r d  St  j | ƒ t j j | ƒ r3 d  St j j | ƒ } t j |  j |  j	 f t j
 d ƒ } xs t |  j ƒ D]b \ } \ } } |  j | \ } } }	 }
 t j j j j | ƒ j | ƒ } | j | | | f ƒ qy Wt j j | t j j | ƒ ƒ d  S(   Ni    (   t   cachedt   addR    t   loadert   loadablet   get_patht   pygamet   SurfaceR   R   t   SRCALPHAt	   enumerateR   R   R!   R"   R   R&   R   t   blitt   imaget   savet   exportst   fsencode(   R   t   filenamet   fnR   R7   R,   R   R2   R3   t   _wt   _ht   surf(    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\imagemap.pyt   write_cache    s    $"!c         C   s6   d } x% |  j  D] } | | d j ƒ  7} q W| d @S(   sU   
        Returns a hash of the contents of the image files. (As an integer.)
        i    iÿÿÿ(   R   t   get_hash(   R   R.   R7   (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\imagemap.pyt   image_file_hash¶   s    c         C   sÍ   |  j  s d  Sd |  j j ƒ  |  j ƒ  f } t j j j rU t j j j d | } n  d | } d  |  _ |  j	 ƒ  t j
 j rœ y |  j | ƒ Wqœ qœ Xn  t j j | ƒ rÉ t j j j | ƒ |  _ n  d  S(   Ns   im-%s-%x.pngt   -s   cache/(   R   R   t	   hexdigestRN   R    t   gamet   preferencest   languageR   R8   R$   t	   developerRL   R;   R<   R!   R"   t   ImageR   (   R   RG   (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\imagemap.pyt   finishÂ   s    	
	
c         C   sj   |  j  d  k rA |  j | \ } } t | | | | | ƒ j | ƒ St |  j  | | | | ƒ j |  j | ƒ S(   N(   R   R   R   R    R   R   (   R   R   R	   R
   R   R   R,   R   (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\imagemap.pyR    Ú   s    (
   R   R   R   R   R/   R8   RL   RN   RV   R    (    (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\imagemap.pyR   K   s   							(   t   pygame_sdl2R>   t   renpy.displayR    t   renpy.display.renderR    R   t   setR9   R!   t   coret   DisplayableR   R   t   objectt   ObjectR   (    (    (    se   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\imagemap.pyt   <module>   s   	