î
hÐR\ø  ã               @   sÍ   d  d l  m Z m Z d  d l m Z m Z m Z m	 Z
 m Z d Z d Z d Z d Z d Z d Z d Z d Z d Z d Z d d „  d d „  d d „  d d „  g Z d d „  Z Gd d „  d e j ƒ Z d S)é   )ÚImageÚFontFile)Úi8Úi16leÚi32leÚi16beÚi32beifcpé    é   é   é   é   é   é   é   c             C   s   |  d d ?S)Nr   r   © )Úbitsr   r   úD/var/www/dbchiro/venv/lib/python3.4/site-packages/PIL/PcfFontFile.pyÚ<lambda>&   s    r   c             C   s   |  d d ?d @S)Né   r   r   éþÿÿÿr   )r   r   r   r   r   '   s    c             C   s   |  d d ?d @S)Né   r   éüÿÿÿr   )r   r   r   r   r   (   s    c             C   s   |  d d ?d @S)Né?   r   r   iøÿÿÿr   )r   r   r   r   r   )   s    c             C   s   |  | |  j  d | ƒ … S)Ns    )Úindex)ÚsÚor   r   r   Úsz-   s    r   c               @   s^   e  Z d  Z d Z d d „  Z d d „  Z d d „  Z d d	 „  Z d
 d „  Z d d „  Z	 d S)ÚPcfFontFileÚnamec          	   C   s«  t  | j d ƒ ƒ } | t k r0 t d ƒ ‚ n  t j j |  ƒ t  | j d ƒ ƒ } i  |  _ xl t | ƒ D]^ } t  | j d ƒ ƒ } t  | j d ƒ ƒ t  | j d ƒ ƒ t  | j d ƒ ƒ f |  j | <qk W| |  _ |  j	 ƒ  |  _
 |  j ƒ  } |  j | ƒ } |  j ƒ  } x˜ t d ƒ D]Š }	 | |	 }
 |
 d  k	 r| |
 \ } } } } } } } } | d f | | | | | | f d d | | f | |
 f } | |  j |	 <qqWd  S)Nr   znot a PCF fileé   r	   )Úl32ÚreadÚ	PCF_MAGICÚSyntaxErrorr   Ú__init__ÚtocÚrangeÚfpÚ_load_propertiesÚinfoÚ_load_metricsÚ_load_bitmapsÚ_load_encodingÚglyph)Úselfr(   ÚmagicÚcountÚiÚtypeÚmetricsÚbitmapsÚencodingÚchÚixÚxÚyÚlÚrÚwÚaÚdÚfr.   r   r   r   r%   8   s(    	G	
"<zPcfFontFile.__init__c             C   sx   |  j  | \ } } } |  j } | j | ƒ t | j d ƒ ƒ } | d @r[ t t } } n t t } } | | | | f S)Nr   )r&   r(   Úseekr!   r"   Úb16Úb32Úl16)r/   ÚtagÚformatÚsizeÚoffsetr(   Úi16Úi32r   r   r   Ú
_getformatX   s    	
zPcfFontFile._getformatc             C   s(  i  } |  j  t ƒ \ } } } } | | j d ƒ ƒ } g  } xW t | ƒ D]I } | j | | j d ƒ ƒ t | j d ƒ ƒ | | j d ƒ ƒ f ƒ qI W| d @r» | j d | d @d ƒ n  | j | | j d ƒ ƒ ƒ }	 xH | D]@ \ }
 } } t |	 |
 ƒ }
 | rt |	 | ƒ } n  | | |
 <qà W| S)Nr   r   r   )rK   ÚPCF_PROPERTIESr"   r'   Úappendr   rA   r   )r/   Z
propertiesr(   rF   rI   rJ   ZnpropsÚpr2   ÚdataÚkr   Úvr   r   r   r)   h   s    G
zPcfFontFile._load_propertiesc          
   C   sô  g  } |  j  t ƒ \ } } } } | j } | d @d k rx³t | | j d ƒ ƒ ƒ D]¹ } t | j d ƒ ƒ d } t | j d ƒ ƒ d }	 t | j d ƒ ƒ d }
 t | j d ƒ ƒ d } t | j d ƒ ƒ d } |	 | } | | } | | | | |	 |
 | | d f ƒ qV WnÚ x× t | | j d ƒ ƒ ƒ D]º } | | j d ƒ ƒ } | | j d ƒ ƒ }	 | | j d ƒ ƒ }
 | | j d ƒ ƒ } | | j d ƒ ƒ } | | j d ƒ ƒ } |	 | } | | } | | | | |	 |
 | | | f ƒ q2W| S)Ni ÿ  r    r
   r   é€   r	   r   )rK   ÚPCF_METRICSrM   r'   r"   r   )r/   r4   r(   rF   rI   rJ   rM   r2   ÚleftÚrightÚwidthZascentZdescentZxsizeZysizeZ
attributesr   r   r   r+   „   s8    	"

"

zPcfFontFile._load_metricsc          
   C   s³  g  } |  j  t ƒ \ } } } } | | j d ƒ ƒ } | t | ƒ k rW t d ƒ ‚ n  g  } x0 t | ƒ D]" }	 | j | | j d ƒ ƒ ƒ qj Wg  }
 x0 t d ƒ D]" }	 |
 j | | j d ƒ ƒ ƒ q£ W| d @} | d @} |
 | } | j | ƒ | j | ƒ } t | } d } | r"d } n  xŠ t | ƒ D]| }	 | |	 \ } } } } } } } } | |	 | |	 d } } | j t j	 d | | f | | | … d | | | ƒ ƒ ƒ q/W| S)	Nr   zWrong number of bitmapsr   r   z1;RÚ1r   Úraw)
rK   ÚPCF_BITMAPSr"   ÚlenÚIOErrorr'   rM   ÚBYTES_PER_ROWr   Ú	frombytes)r/   r4   r5   r(   rF   rI   rJ   ZnbitmapsÚoffsetsr2   ZbitmapSizesZbitorderZpadindexZ
bitmapsizerO   ÚpadÚmoder9   r:   r;   r<   r=   r>   r?   r@   ÚbÚer   r   r   r,   ²   s4      



	"9zPcfFontFile._load_bitmapsc             C   s  d  g d } |  j  t ƒ \ } } } } | | j d ƒ ƒ | | j d ƒ ƒ } } | | j d ƒ ƒ | | j d ƒ ƒ } }	 | | j d ƒ ƒ }
 | | d |	 | d } x` t | ƒ D]R } | | j d ƒ ƒ } | d k rº y | | | | <Wqt k
 rPYqXqº qº W| S)Nr    r
   r   iÿÿ  )rK   ÚPCF_BDF_ENCODINGSr"   r'   Ú
IndexError)r/   r6   r(   rF   rI   rJ   ZfirstColZlastColZfirstRowZlastRowÚdefaultZ	nencodingr2   ZencodingOffsetr   r   r   r-   ß   s    ++zPcfFontFile._load_encodingN)
Ú__name__Ú
__module__Ú__qualname__r   r%   rK   r)   r+   r,   r-   r   r   r   r   r   4   s    .-r   Nr   r
   r   r   é   é    é@   rR   r    )Ú r   r   Z_binaryr   r   rD   r   r!   r   rB   r   rC   r#   rL   ZPCF_ACCELERATORSrS   rY   ZPCF_INK_METRICSrc   ZPCF_SWIDTHSZPCF_GLYPH_NAMESZPCF_BDF_ACCELERATORSr\   r   r   r   r   r   r   Ú<module>   s"   (			