a
    còfB!  ã                   @   s–   d dl Z d dlmZ ddlmZmZmZ ddlmZ e  	e
¡ZdZeedœdd	„Zeedœd
d„Zeedœdd„Zeedœdd„Zeedœdd„ZdS )é    N)ÚBytesIOé   )ÚWHITESPACESÚ
StreamTypeÚread_non_whitespace)ÚPdfReadErrori    )ÚstreamÚreturnc                 C   sz  d}t | ƒ|  t¡ }|s"tdƒ‚| d¡}|dkrf||d|d … 7 }|  t|ƒ | d d¡ �q| d¡}|dkrÚ|  t|ƒ | d d¡ |  d¡}|tv rÄ|  dd¡ |  d¡}|d8 }qœ||d|… 7 }�qqt|ƒd	krø||7 }tdƒ‚q||dd… 7 }|  dd¡ qt | ƒ}||  d	¡7 }|  d
d¡ |dd	… dk�sn|d	d… dk�sv|d	d… tv �svtdƒ‚|S )z_
    Extract HexEncoded Stream from Inline Image.
    the stream will be moved onto the EI
    ó    úUnexpected end of streamó   >r   Né   ó   EIéþÿÿÿr   éýÿÿÿé   úEI stream not found©r   ÚreadÚBUFFER_SIZEr   ÚfindÚseekÚlenr   )r   Údata_outÚdata_bufferedÚpos_tokÚpos_eiÚcÚei_tok© r   úX/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/pypdf/generic/_image_inline.pyÚextract_inline_AHx+   s<    





6r!   c                 C   sþ   d}t | ƒ|  t¡ }|s"tdƒ‚| d¡}|dkrf||d|d … 7 }|  t|ƒ | d d¡ q nt|ƒdkr‚||7 }tdƒ‚||dd… 7 }|  dd¡ qt | ƒ}||  d¡7 }|  d	d¡ |dd… d
ksò|dd… dksú|dd… tv sútdƒ‚|S )zX
    Extract A85 Stream from Inline Image.
    the stream will be moved onto the EI
    r
   r   s   ~>r   Nr   r   r   r   r   r   r   r   ©r   r   r   r   r   r   r   r    Úextract_inline_A85U   s,    
ÿ0r#   c                 C   sÄ   d}|   t¡}|stdƒ‚| d¡}|dkr\||d|d … 7 }|  t|ƒ | d d¡ qf||7 }qt| ƒ}||   d¡7 }|  dd¡ |dd… d	ks¸|dd
… dksÀ|dd
… tv sÀtdƒ‚|S )zW
    Extract RL Stream from Inline Image.
    the stream will be moved onto the EI
    r
   r   ó   €r   Nr   r   r   r   r   r   )r   r   r   r   r   r   r   r   r"   r   r   r    Úextract_inline_RLv   s     


0r%   c                 C   s  d}d}|   d¡}|s|dkr&||7 }|dkr2qnd}|   d¡}||7 }|dkr^|  dd¡ q|dkrhq|dkrtq¶q|d	v r|   d
¡}||7 }|d d |d  }||   |d
 ¡7 }qt| ƒ}||   d
¡7 }|  dd¡ |dd
… dk�s|d
d… dk�s|d
d… tv �stdƒ‚|S )z_
    Extract DCT (JPEG) Stream from Inline Image.
    the stream will be moved onto the EI
    r
   Fr   ó   ÿTéÿÿÿÿó    ó   Ùs&   ÀÁÂÃÄÅÆÇÉÊËÌÍÎÏÚÛÜÝÞßàáâãäåæçèéêëìíîïþr   r   é   r   r   r   r   )r   r   r   r   r   )r   r   Znotfirstr   Úszr   r   r   r    Úextract_inline_DCT‘   s:    

ÿ
6r,   c                 C   s  t ƒ }|  t¡}|stdƒ‚| d¡}|dkr:| |¡ q| |d|d … ¡ | ¡ d }|  |d t|ƒ d¡ |  ¡ }|  d¡}|dkrœ|  |d¡ q|  d¡}|t	vr¼|  |d¡ q|t	v rÐ|  d¡}q¼||d |… t	vrú|dvrú|  |d¡ q| 
|¡ �q
q| ¡ S )z+
    Legacy method
    used by default
    r   ó   Er'   r   r   ó   I>   ó   Qr-   )r   r   r   r   r   ÚwriteÚtellr   r   r   ÚtruncateÚgetvalue)r   Z
stream_outr   r   Z
sav_pos_eiÚ	saved_posZtok2Ztok3r   r   r    Úextract_inline_default½   s:    
ÿ


r5   )ÚloggingÚior   Ú_utilsr   r   r   Úerrorsr   Ú	getLoggerÚ__name__Úloggerr   Úbytesr!   r#   r%   r,   r5   r   r   r   r    Ú<module>   s   
*!,