î
úÙ X2  ã               @   sì   d  d l  m Z d  d l  m Z d  d l  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 e j Z e j Z e j Z e j Z e j Z d d „  Z Gd d „  d e j ƒ Z d S) é    )ÚImage)ÚFontFile)Ú_binaryifcpé   é   é   é   é   é   é   é   c             C   s   |  d d ?S)Nr   r   © )Úbitsr   r   úL/home/ubuntu/projects/ifolica/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   Úsz4   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!   ?   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   Ú
_getformat_   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   )rG   ÚPCF_PROPERTIESr   r#   ÚappendÚi8r=   r   )r+   Z
propertiesr$   rB   rE   rF   ZnpropsÚpr.   ÚdataÚkr   Úvr   r   r   r%   o   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   )rG   ÚPCF_METRICSrI   r#   r   rJ   )r+   r0   r$   rB   rE   rF   rI   r.   Ú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)
rG   ÚPCF_BITMAPSr   ÚlenÚIOErrorr#   rI   ÚBYTES_PER_ROWr   Z	frombytes)r+   r0   r1   r$   rB   rE   rF   ZnbitmapsÚoffsetsr.   ZbitmapSizesZbitorderZpadindexZ
bitmapsizerL   ÚpadÚmoder5   r6   r7   r8   r9   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ÿÿ  )rG   ÚPCF_BDF_ENCODINGSr   r#   Ú
IndexError)r+   r2   r$   rB   rE   rF   ZfirstColZlastColZfirstRowZlastRowÚdefaultZ	nencodingr.   ZencodingOffsetr   r   r   r)   æ   s    ++zPcfFontFile._load_encodingN)
Ú__name__Ú
__module__Ú__qualname__r   r!   rG   r%   r'   r(   r)   r   r   r   r   r   ;   s    .-r   Nr   r   r   r   é   é    é@   rO   r   )ZPILr   r   r   r   rH   ZPCF_ACCELERATORSrP   rV   ZPCF_INK_METRICSr_   ZPCF_SWIDTHSZPCF_GLYPH_NAMESZPCF_BDF_ACCELERATORSrY   rJ   Zi16ler@   Zi32ler   Zi16ber>   Zi32ber?   r   r   r   r   r   r   Ú<module>   s.   								