
    =	f                     X   d dl Z d dlZ d dlZd dlZ ej                  dej
                        Z ej                  dej
                        Z ej                  dej
                  ej                  z        Z	 ej                  dej
                        Z
 ej                  dej
                        Z ej                  d      Zd$dZd	 Zd
 Zd Zd Zd Zd Zd Zd Z ej                  d      def ej                  d      def ej                  d      def ej                  d      def ej                  d      def ej                  d      def ej                  d      def ej                  d      def ej                  d       d!ef ej                  d"      defi
Zd%d#Zy)&    Nz2^\#define\s*\S*\s*(\d+)\s*\n\#define\s*\S*\s*(\d+)z("\s*(\d+)\s+(\d+)(\s+\d+\s+\d+){1,2}\s*"z^\#.*z^(P[1-6])\s+(\d+)\s+(\d+)zIMGINFO:(\d+)x(\d+)z
II\x2a\x00c                 R    |dk7  r| j                  |d       | j                  |      S )Nr   )seekread)streamlengthoffsets      "/usr/share/hplip/base/imagesize.pyreadinr
   (   s&    {FA;;v    c                     d\  }}t         j                  t        | d            }	 t        |j	                  d            }t        |j	                  d            }||fS #  Y ||fS xY wNr            )xbm_patmatchr
   intgroupr   widthheightr   s       r	   xbmsizer   /   si    ME6MM&-.EEKKN#U[[^$ &=&=s   4A A%c                     d\  }}t        j                  t        t        | d            }	 t	        |j                  d            }t	        |j                  d            }||fS #  Y ||fS xY wr   )researchxpm_patr
   r   r   r   s       r	   xpmsizer   <   sk    ME6IIgvfd34EEKKN#U[[^$ &=&=s   4A# #A*c                     d\  }}t        | dd      dv r(t        j                  d| j                  d            \  }}||fS )Nr         )IHDRMHDRz!II   )r
   structunpackr   r   r   r   s      r	   pngsizer)   H   sC    ME6fa 00eV[[^<<r   c                 D   d\  }}| j                  d       	 d}t        | |      }	 t        j                  d|      \  }}}|dk7  r	 ||fS dt	        |      cxk  rdk  r)n n&d}t        j                  d	t        | |            \  }}nt        | |dz
         #  Y ||fS xY w)
Nr   r   r!   z!c c h   ÿ         z!xhh)r   r
   r&   r'   ord)r   r   r   r   buffermarkercodes          r	   jpegsizer3   Q   s    ME6
KKN
'	#)==6#B FD& V &= 3t9$$F"MM&&2HIMFE 66!8$! 
	 &=s   B Bc                    d\  }}t        j                  t        dt        | d            }t        j                  |      }d}	 |j                  d      }t        |j                  d            }t        |j                  d            }|dk(  rNt        j                  |      }	 t        |j                  d            }t        |j                  d            }||fS ||fS #  Y [xY w#  Y ||fS xY w)Nr    r   r   r      P7)	r   subppm_pat1r
   ppm_pat2r   r   r   ppm_pat3)r   r   r   headerr   typs         r	   ppmsizer>   i   s    ME6VVHb&"67FNN6"E
Ckk!nEKKN#U[[^$ d{v&	A'EQ(F &=5&=	&=s   AC #4C& C#&C-c                 h   t        | d      }d}t        j                  |      }|d}t        | dd      }t        j                  d|z  |      d   }t        j                  d|z  t        | d|            d   }|dz  }||dz  z   }d	\  }}	 t        | d|      }	|	d
k(  s||kD  r	 ||fS |dz  }t        j                  d|z  |	dd       d   }
t        j                  d|z  |	dd       d   }|
dk(  r t        j                  d|z  |	dd       d   }n$|
dk(  rt        j                  d|z  |	dd       d   })Nr!   ><z%sir   z%sHr   r"   r   r5      r%   i  )r
   tiff_endian_patr   r&   r'   )r   r<   endianr   inputr   
num_direntr   r   ifdtagtypes               r	   tiffsizerJ      s_   FAFF!!&)E61a E]]56>51!4Fuv~vfa/HI!LJ
aKFB'JME6
VR("9+ &= 	"mmE6M3q84Q7}}UV^S1X6q9&=MM%&.#a)<Q?EF]]]56>3q9=a@F r   c                 R    t        j                  dt        | dd            \  }}||fS )Nz<IIr%      )r&   r'   r
   r(   s      r	   bmpsizerM      s)    MM%2)>?ME6&=r   c                 \    t        | dd      }t        j                  d|      \  }}}}}||fS )N      z<HHBBB)r
   r&   r'   )r   bufr   r   flagsbcipars          r	   gifsizerU      s7     A
C%+]]8S%A"FE5#s&=r   z^GIF8[7,9]az	image/gifu   ^ÿØz
image/jpegu
   ^PNG

z	image/pngz^P[1-7]zimage/x-portable-pixmapz\#define\s+\S+\s+\d+zimage/x-xbitmapz\/\* XPM \*\/zimage/x-xpixmapz^MM *z
image/tiffz^II\* z^BMzimage/x-bitmapu
   ^MNG

c                    d\  }}t        | d      }|j                  d      }|s,t        D ]#  }|j                  |      }|t        |   \  }} n |rr|j	                  d        ||      \  }}nd\  }}|j                          |||fS )Nr   ri   r   )openr   TYPE_MAPr   r   close)	filename	mime_typer   r   fr0   tr   funcs	            r	   	imagesizer`      s    ME6XsAVVD\F 	AHHV$E "*1+	4		 T	q	QvvGGI5)##r   )r   )r5   )osos.pathr   r&   compile
IGNORECASEr   r   	MULTILINEr9   r:   r;   rC   r
   r   r   r)   r3   r>   rJ   rM   rU   rY   r`    r   r	   <module>rg      s  4 
  	  "**JBMM
Z
"**@"--
P2::h <=2::2BMMB2::,bmm<"**]+
	00D
	 BJJ}%k75KRZZ$|X6NRZZ23{G6LRZZ	"7PRY6ZRZZ./7H'6RRZZ(7H'6RRZZ&|X6NRZZ$|X6NRZZ7G6QRZZ23{G6L
$r   