U
    ZSh6                     @   s   d dl Z d dlZd dlZd dlZd dlmZ dddgZdZd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dddddZdd Zdd Zdd Zdd ZdS )    N)ElementTreegetgetDPI__version__z1.4.1                     )r	   r
   r   r   r   r      r   	   
         c                 C   s   |t krt| d d S |tkr0t| d d S |tkrHt| d d S |tkr`t| d d S |tkrxt| d d S |tkrt| d d S |tkrt| d d S |tkr| d	 S |t	kr| d
 S |t
kr| d S | S )Ng5B>g      ?gti0?gd?g
F%u?gK7A?RQ@gffffff9@   i	  i8c  )_UNIT_KMint
_UNIT_100M	_UNIT_10M_UNIT_1M
_UNIT_10CM_UNIT_CM_UNIT_MM_UNIT_0_1MM_UNIT_0_01MM_UNIT_UM)Zdensityunit r#   </root/rtd-docs/venv/lib/python3.8/site-packages/imagesize.py_convertToDPI*   s*    r%   c                 C   s   t d| }|std|  | \}}|dkr8t|S |dkrPt|d d S |dkrlt|d d d S |d	krt|d S |d
krt|d d S |dkrt|d d S |dkrt|S td| d S )Nz(\d+(?:\.\d+)?)?([a-z]*)$zunknown length value: %s cm`   r   mmr   inZpcr   ptZpxzunknown unit type: %s)rematch
ValueErrorgroupsfloat)valueZmatchedlengthr"   r#   r#   r$   _convertToPxB   s&    r3   c              	   C   sF  d}d}t | tjr| }n
t| d}z|d}t|}|dkr|dd dkrztd|dd \}}W n tj	k
r   t
d	Y nX n|d
kr|dr|dd dkrztd|dd
 \}}W n tj	k
r   t
dY nX n<|dkrL|drLztd|dd \}}W n  tj	k
rF   t
dY nX n|dkrB|drBz|d d}d}d|  krdkrn n
|dkr||d |d}t|dkr|d}qt|}td|dd d }qv|dd td|d\}}W n$ tj	tfk
r<   t
dY nX n|dkr|dr|d ztd|d\}}W n  tj	k
r   t
d Y nX n|dkr|d!rtd"|dd d }|| td|dd }	t|	D ]}
td#|d\}}}}|d$krR|d%kr8t|d& }n|dkrH|}nt
d'n:|d(kr|d%krtt|d& }n|dkr|}nt
d)|dkr|dkr qq|dks|dkr0t
d*nf|dkr|d+rtd,|dd d }|| td-|dd }	t|	D ]X}
td.|d\}}}}|d$krN|}n|d(kr\|}|dkr |dkr  qzq |dks|dkr0t
d*n|dkr|d/rtd,|dd d }|dkrt
d0|td1|dd d }|| td1|dd }	t|	D ]X}
td2|d3\}}}}|d$krN|}n|d(kr\|}|dkr |dkr  qzq |dks|dkr0t
d4n|d5kr6|d6s|d7r6|d |d8}z2|d9}td:|d}td;|d}W n tk
r    t
d<Y nX t|}t|}n|dd d=kr&|dd d>kr&|d g }|d}| rqh|d?krt
d@|dAkr|  qh| st
dB|}|d}| r||7 }|d}q|t| t|dkrq|dtj qh|\}}n
|dCr0|dd dDkr0|dd dEkrptdF|dGdH \}}n|dd dIkrtdJ|d
dK dL d }tdJ|dKdH dL d }nt|dd dMkr(|dNdO }|d dP@ d> |d B d }|d% dQ@ d> |d d> B |d d@ d? B d }nt
dRW 5 |  X ||fS )Sz
    Return (width, height) for a given img file content
    no requirements
    :type filepath: Union[bytes, str, pathlib.Path]
    :rtype Tuple[int, int]
    r   rb   r   Nr   s   GIF87as   GIF89az<hhzInvalid GIF file      PNG

r      s   IHDRz>LLInvalid PNG filer   r
      r         )         r	      >Hz>HHr   Invalid JPEG file      jP  

0   Invalid JPEG2000 files   MM *>Lz>HHLL   r   i   z?Invalid TIFF file: width column data type should be SHORT/LONG.i  z@Invalid TIFF file: height column data type should be SHORT/LONG.z?Invalid TIFF file: width and/or height IDS entries are missing.s   II* z<Lz<Hz<HHLLs   II+ z@Invalid BigTIFF file: Expected offset to be 8, found {} instead.z<Qz<HHQQ   zBInvalid BigTIFF file: width and/or height IDS entries are missing.r   s   <?xmls   <svgi   zutf-8z[^-]width="(.*?)"z[^-]height="(.*?)"zInvalid SVG file   Ps   123456    zInvalid Netpbm file   #z&Invalid character found on Netpbm files   RIFFs   WEBPs   VP8 z<HH      s   VP8Xz<I       s   VP8L      ?      zUnsupported WebP file)
isinstanceioBytesIOopenclosereadlenstructunpackerrorr.   
startswithseekord	TypeErrorranger   formatdecoder,   searchgroup	Exceptionr3   isspacereadlineisdigitappendosSEEK_CUR)filepathheightwidthfhandleheadsizeftypebyteoffsetZifdsizeitagdatatypecountdataZbytesize_offsetsizesZnext_chrbr#   r#   r$   r   Z   s"   

"
&



















"


$







2
c                 C   s,  d}d}t | tst| } t| d}|d}t|}|dkrV|dd dkrVn|dkrh|drhd	}|d	d }|d
d	 }|dkrztd|d	d \}	}
}W n tj	k
r   t
dY nX |rt|	t}t|
t}n|	}|
}qq||dkrqq|ztd|dd
 \}W n  tj	k
r@   t
dY nX ||d 7 }|| |d}q|n|dkr|drz|d d}d}d|  krdksrn |dkr|dd td|d\}}	}
|dks|dkr|	}|
}n|dkrrt|	t}t|
t}qr||d |d}t|dkrL|d}q0t|}td|dd d }qW n  tj	k
r   t
dY nX n|dkr|dr|d  td|d
d d	 }|d
d d!}z|dkrT|d	}|d
d }|d"kr"d#}|d	8 }qTtd|dd
 \}||d	 d ||8 }q|r|dkr|d	}|d
d }|d$krtd%|d\}
}	}}t|	|}t|
|}qtd|dd
 \}||d	 d ||8 }qZW n. tj	k
r } zt
d&W 5 d}~X Y nX W 5 Q R X ||fS )'z
    Return (x DPI, y DPI) for a given img file content
    no requirements
    :type filepath: Union[bytes, str, pathlib.Path]
    :rtype Tuple[int, int]
    r   r4   r7   r   Nr   r6   r8   r   r   s   pHYsz>LLBr:   s   IDATrG   r   r      r
   r;   r<   r=      r   r	   z>BHHr   rA   rB   rC   rD       Fs   res Ts   resdz>HHBBrF   )rU   bytesstrrX   rZ   r[   r_   r\   r]   r^   r.   r%   r   r`   r   ra   )ro   ZxDPIZyDPIrr   rs   rt   ZchunkOffsetchunkZ	chunkTypeZxDensityZyDensityr"   ZdataSizeru   rv   Z
headerSizeZfoundResBoxZ	boxHeaderZboxTypeZboxSizeZyUnitZxUniter#   r#   r$   r     s    










"








$)rV   rm   r,   r\   Z	xml.etreer   __all__r   r   r   r   r   r   r   r   r   r    r!   Z
_UNIT_INCHZ_TIFF_TYPE_SIZESr%   r3   r   r   r#   r#   r#   r$   <module>   sF   
 =