ó
ř¨ÖTc           @   sO  d  d l  Z  d  d l Z d  d l Z y d  d l Z e Z Wn e k
 rS e Z n Xe d  Z	 d e d  Z d   Z d d' d     YZ d   Z d   Z e d	 k rKd
 GHd GHd GHHe sŃ d GHe  j   n  e e  j  d k  r%d GHd GHd GHd GHd GHd GHd GHd GHd GHd GHe  j   n  e  j d Z e d j   d k s]e e  j  d k rkd GHe Z n d GHe Z e e  j  d k rEe  j d Z d( \ Z Z e e  j  d k re  j d j   sáe  j d j   ród  GHe  j   n  e e  j d  Z e e  j d  Z n  e o%e rqe rqd! GHe  j   qqn, d" j e j d"  d    e rjd# n d$ Z d% GHe rÜy e e  Z Wn" e k
 r°Z  e  GHe  j   n Xe   Z! e e! _" e e! _ e! j# e  ng y e   j$ e e e f  Z% Wn" e k
 rZ  e  GHe  j   n Xe% s3e  j   n  e e% j e  d& GHn  d S()   i˙˙˙˙Nc         C   sK   d } t  t |   } | r( | j   n  x | D] } | d >| B} q/ W| S(   Ni    i   (   t   mapt   ordt   reverse(   t   asciit   LittleEndiant   rett   lt   i(    (    sE   C:\Users\pbsdsjhgfjhgfjhg\Desktop\Flipnote-Player\Hatenatools\NTFT.pyt   AscDec   s     c         C   sš   g  } x. |  d k r6 | j  d |  d @ |  d L}  q	 W| r t |  | k r] | | } n  t |  | k  r d g | t |  | } q n  | rŁ | j   n  d j t t |   S(   Ni    i˙   i   t    (   t   insertt   lenR   t   joinR    t   chr(   t   dect   lengthR   t   out(    (    sE   C:\Users\pbsdsjhgfjhgfjhg\Desktop\Flipnote-Player\Hatenatools\NTFT.pyt   DecAsc   s    ! c         C   s$   |  | k r | S|  | k  r  | S|  S(   N(    (   t   valuet   mint   max(    (    sE   C:\Users\pbsdsjhgfjhgfjhg\Desktop\Flipnote-Player\Hatenatools\NTFT.pyt   clamp,   s
      t   NTFTc           B   s>   e  Z d    Z d   Z d   Z d   Z d   Z d   Z RS(   c         C   s   t  |  _ d  S(   N(   t   Falset   Loaded(   t   self(    (    sE   C:\Users\pbsdsjhgfjhgfjhg\Desktop\Flipnote-Player\Hatenatools\NTFT.pyt   __init__C   s    c         C   s5   t  | d  } |  j | j   |  } | j   | S(   Nt   rb(   t   opent   Readt   readt   close(   R   t   patht   sizet   fR   (    (    sE   C:\Users\pbsdsjhgfjhgfjhg\Desktop\Flipnote-Player\Hatenatools\NTFT.pyt   ReadFileE   s    
c         C   s  | \ } } g  } xL | | f D]> } d } x d | >| k  rK | d 7} q. W| j  d | > q W| \ } }	 | |	 d t |  k r d GHt St j | | f d d |  _ xÎ t |  D]Ŕ }
 xˇ t |  D]Š } | |
 | d } t | | | d !t  } | d ?d } | d ?d	 @d d	 } | d
 ?d	 @d d	 } | d	 @d d	 } | d >| d >B| d >B| B|  j | |
 f <qÎ Wqť Wt |  _	 |  S(   Ni   i   s   Invalid sizest   dtypes   >u4i   i˙   i
   i   i   i   i   i   (
   t   appendR   R   t   npt   zerost   Imaget   xrangeR   t   TrueR   (   R   t   datat   .2t   wt   ht   psizeR   t   pt   pwt   pht   yt   xt   post   bytet   at   bt   gt   r(    (    sE   C:\Users\pbsdsjhgfjhgfjhg\Desktop\Flipnote-Player\Hatenatools\NTFT.pyR   J   s.    	3	c         C   sA   |  j  r9 t | d  } | j |  j    | j   t St Sd  S(   Nt   wb(   R   R   t   writet   PackR   R*   R   (   R   R    R"   (    (    sE   C:\Users\pbsdsjhgfjhgfjhg\Desktop\Flipnote-Player\Hatenatools\NTFT.pyt	   WriteFilel   s    	
c      	   C   s  |  j  s t S|  j j \ } } g  } xL | | f D]> } d } x d | >| k  r^ | d 7} qA W| j d | > q2 Wg  } x	t | d  D]÷ } xî t | d  D]Ü } |  j t | d | d  t | d | d  f }	 |	 d ?}
 |	 d ?d @} |	 d ?d @} |	 d @} | d k rd n d } |
 d d }
 | d d } | d d } | j t | d	 >| d
 >B| d >B|
 Bd t   q˘ Wq Wd j	 |  S(   Ni   i    i   i   i˙   i   i   i   i   i
   i   i   R	   (
   R   R   R(   t   shapeR%   R)   R   R   R*   R   (   R   R-   R.   R/   R   R0   R   R3   R4   t   cR:   R9   R8   R7   (    (    sE   C:\Users\pbsdsjhgfjhgfjhg\Desktop\Flipnote-Player\Hatenatools\NTFT.pyR=   t   s.    	3

9c         C   s   | |  _  t |  _ |  S(   N(   R(   R*   R   (   R   R(   (    (    sE   C:\Users\pbsdsjhgfjhgfjhg\Desktop\Flipnote-Player\Hatenatools\NTFT.pyt   SetImage   s    		(   t   __name__t
   __module__R   R#   R   R>   R=   RA   (    (    (    sE   C:\Users\pbsdsjhgfjhgfjhg\Desktop\Flipnote-Player\Hatenatools\NTFT.pyR   B   s   			"		%c         C   st   t  s d GHt S|  j d  } t j d t |   t |  d  f |  } | | j d  d } | j | |  t S(   Ns   Error: PIL not found!t   Ft   RGBAi    t   .i   (	   t   hasPILR   t   tostringR(   t
   fromstringR   t   rfindt   saveR*   (   t   imaget
   outputPathR   t   filetype(    (    sE   C:\Users\pbsdsjhgfjhgfjhg\Desktop\Flipnote-Player\Hatenatools\NTFT.pyt
   WriteImage¤   s    +c   	      C   sÎ   t  s
 t St j |   } | j   } | j \ } } t | d  d k  rV d   } n	 d   } t j | | f d d } xM t	 |  D]? } x6 t	 |  D]( } | | | | |  | | | f <q Wq W| S(   Ni    i   c         S   s+   |  \ } } } | d >| d >B| d >Bd BS(   Ni   i   i   i˙   (    (   t   .0R:   R9   R8   (    (    sE   C:\Users\pbsdsjhgfjhgfjhg\Desktop\Flipnote-Player\Hatenatools\NTFT.pyt   CombineĆ   s    c         S   s.   |  \ } } } } | d >| d >B| d >B| BS(   Ni   i   i   (    (   RP   R:   R9   R8   R7   (    (    sE   C:\Users\pbsdsjhgfjhgfjhg\Desktop\Flipnote-Player\Hatenatools\NTFT.pyRQ   É   s    R$   s   >u4(
   RG   R   R(   R   t   getdataR!   R   R&   R'   R)   (	   R    RL   t	   pixeldataR-   R.   RQ   R   R4   R3   (    (    sE   C:\Users\pbsdsjhgfjhgfjhg\Desktop\Flipnote-Player\Hatenatools\NTFT.pyt	   ReadImagež   s     	*t   __main__s$                 ==      NTFT.py     ==s%                ==      by pbsds      ==s$                 ==       v0.95      ==s   PIL not found! Exiting...i   s   Usage:s3         NTFT.py <input> [<output> [<width> <height>]]R	   s2   Can convert a NTFT to PNG or the other way around.sO   if <output> isn't specified it will be set to <input> with an another extensionsK   The NTFT file contain only the colordata, so it's up to the user to find orsC   store the resolution of the image. <width> and <height> is requireds"   to convert a NTFT file to a image.s=   32x32 is the normal resolution for button icons in UGO files.i   iü˙˙˙t   ntfti   s   Mode: NTFT -> images   Mode: image -> NTFTi   i   s   Invalid size input!s   Image size not provided!RF   s   .ntfts   .pngs   Converting...s   Done!(    (   NN(&   t   syst   ost   numpyR&   R(   R*   RG   t   ImportErrorR   R   t   NoneR   R   R   RO   RT   RB   t   exitR   t   argvt   inputt   lowert   Encodet   outputt   widtht   heightt   isdigitt   intR   t   splitRL   t   IOErrort   errR   R   R>   R#   RV   (    (    (    sE   C:\Users\pbsdsjhgfjhgfjhg\Desktop\Flipnote-Player\Hatenatools\NTFT.pyt   <module>   s   $

	b		*+	(,			