o
    _qi!
                     @   sv   d dl Z d dlZd dlmZ dd Zdd ZdddZd	d
 ZG dd dZ	G dd dZ
dd Zdd Zdd ZdS )    Nc           
      C   s   t | dkr
tdtdd | D std| \}}}}|r%||||fn||||f}d}d}|D ]}	||	|> O }|d8 }q1|S )	N   z'Color must consist of exactly 4 values.c                 s   s(    | ]}d |  kodkn  V  qdS )r      N ).0cr   r   _/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/pypdfium2/internal/utils.py	<genexpr>   s   & zcolor_tohex.<locals>.<genexpr>zColor value exceeds boundaries.r         )len
ValueErrorall)
colorZrev_byteorderrgbaZchannelsZc_colorshiftr   r   r   r   color_tohex	   s   
r   c                 C   s   t | |tt| || d S N)setattrtypegetattr)structfnamecallbackr   r   r   set_callback   s   r   r   c                    sV   g }t |t dsJ d|v r|g d7 }d|v r |dg7 }t fdd|D S )Nrwr   )seektellreadreadintowwritec                 3   s     | ]}t t |d V  qd S r   )callabler   )r   r   bufr   r   r   (   s    zis_stream.<locals>.<genexpr>)setissubsetr   )r&   specmethodsr   r%   r   	is_stream!   s   
r+   c                 C   s   | j }t|| t|S r   )contentsr   Zfrom_addressctypesZ	addressof)Zptrsizeobjr   r   r   
get_buffer+   s   r0   c                   @      e Zd Zdd Zdd ZdS )_buffer_readerc                 C   
   || _ d S r   	py_bufferselfr5   r   r   r   __init__2      
z_buffer_reader.__init__c                 C   s&   t ||}| j| | j| dS N   )r0   r5   r   r!   )r7   _positionZp_buf_firstr.   c_bufferr   r   r   __call__5   s   
z_buffer_reader.__call__N__name__
__module____qualname__r8   r?   r   r   r   r   r2   0       r2   c                   @   r1   )_buffer_writerc                 C   r3   r   r4   r6   r   r   r   r8   >   r9   z_buffer_writer.__init__c                 C   s.   t |t t j}t||}| j| dS r:   )r-   castZPOINTERZc_ubyter0   r5   r#   )r7   r<   Zp_data_firstr.   r>   r   r   r   r?   A   s   
z_buffer_writer.__call__Nr@   r   r   r   r   rE   <   rD   rE   c                 C   sL   |  dtj}|  d t }||_t|dt|  d |_|j	f}||fS )Nr   
m_GetBlock)
r   osSEEK_ENDpdfium_cZFPDF_FILEACCESSZ	m_FileLenr   r2   Zm_ParamrG   )bufferZfile_lenreaderZto_holdr   r   r   get_bufreaderH   s   
rM   c                 C   s    t jdd}t|dt|  |S )Nr;   )versionZ
WriteBlock)rJ   ZFPDF_FILEWRITEr   rE   )rK   writerr   r   r   get_bufwriterW   s   rP   c                 C   s0   | sdS t | }tj| dd | D  }||fS )N)Nr   c                 S   s   g | ]}|j qS r   )raw)r   pr   r   r   
<listcomp>a   s    z!pages_c_array.<locals>.<listcomp>)r   rJ   Z	FPDF_PAGE)ZpagescountZc_arrayr   r   r   pages_c_array]   s
   rU   )r   )rH   r-   Zpypdfium2.rawrQ   rJ   r   r   r+   r0   r2   rE   rM   rP   rU   r   r   r   r   <module>   s   

