o
    DObŒ  ã                   @   s¤   d dl Z dd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ ZedkrPd dl	Z	ee
e	jd ƒ ¡ ƒ\ZZZe	j de ¡ e	j de ¡ e	j de ¡ dS dS )é    Nc                 C   s”   t  d| ||d … ¡d }| |d |d … }d}|dkr0t  d| |d |d … ¡d }d}|dkr8|| }|| }| || |… }||||fS )Nú>Ié   r   é   é   z>Qé   ©ÚstructÚunpack)ÚdataÚ	byteStartÚnoBytesÚboxLengthValueÚboxTypeZcontentsStartOffsetÚbyteEndÚboxContents© r   ú3D:\Projects\ConvertPro\env\Lib\site-packages\jp2.pyÚgetBox   s    r   c                 C   s8   t  d| dd… ¡d }t  d| dd… ¡d }||fS )Nr   r   r   r   r   )r
   ÚheightÚwidthr   r   r   Ú
parse_ihdr'   s   r   c                 C   sd   t  d| dd… ¡d }|dkrtdƒ‚t  d| dd … ¡d }|dkr&dS |d	kr,d
S td| ƒ‚)Nz>Br   r   z&only enumerated color method supportedr   é   r   ZRGBé   ÚLz8only sRGB and greyscale color space is supported, got %d)r   r	   Ú	Exception)r
   ÚmethZenumCSr   r   r   Ú
parse_colr-   s   ÿr   c           	      C   sP   t  d| ¡\}}}}}}|| d|  d d }|| d|  d d }||fS )Nz>HHHHBBé
   éd   gR¸…ëQ@r   )	r
   ZhnumZhdenZvnumZvdenZhexpZvexpÚhdpiÚvdpir   r   r   Ú
parse_resc<   s   r!   c           	      C   sr   d\}}t | ƒ}d}d}||k r5|dkr5t| ||ƒ\}}}}|dkr-t|ƒ\}}	 ||fS ||k r5|dks||fS )N)NNr   r   s   resc)Úlenr   r!   )	r
   r   r    r   r   r   r   r   r   r   r   r   Ú	parse_resC   s   ûr#   c                 C   s    d\}}}}}t | ƒ}d}d}||k rI|dkrIt| ||ƒ\}}	}
}|	dkr,t|ƒ\}}n|	dkr5t|ƒ}n
|	dkr?t|ƒ\}}|
}||k rI|dks|||||fS )N©NNNNNr   r   s   ihdrs   colrs   res )r"   r   r   r   r#   )r
   r   r   Ú
colorspacer   r    r   r   r   r   r   r   r   r   r   Ú
parse_jp2hP   s   
ø	r&   c                 C   s¤   t | ƒ}d}d}d\}}}}}||k r9|dkr9t| ||ƒ\}}	}
}|	dkr/t|ƒ\}}}}}n
|
}||k r9|dks|s?tdƒ‚|sEtdƒ‚|sKtdƒ‚|||||fS )Nr   r   r$   s   jp2hzno width in jp2 headerzno height in jp2 headerzno colorspace in jp2 header)r"   r   r&   r   )r
   r   r   r   r   r   r%   r   r    r   r   r   r   r   r   Úparsejp2a   s$   ûr'   Ú__main__r   z
width = %dzheight = %dzcolorspace = %s)r   r   r   r   r!   r#   r&   r'   Ú__name__ÚsysÚopenÚargvÚreadr   r   r%   ÚstdoutÚwriter   r   r   r   Ú<module>   s   ú