o
    fV	                     @   sf   d dl Z d dlmZ dd Zdd Zd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   Q/home/ubuntu/webapp/venv/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)
colorrev_byteorderrgbachannels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_buffer.<locals>.<genexpr>)setissubsetr   )r)   specmethodsr   r(   r   	is_buffer    s   
r.   c                   @      e Zd Zdd Zdd ZdS )_buffer_readerc                 C   
   || _ d S r   bufferselfr3   r   r   r   __init__,      
z_buffer_reader.__init__c                 C   s6   t |t t j| }| j| | j|j dS N   )ctypescastPOINTERc_charr3   r!   r$   contents)r5   _positionp_bufsizec_bufr   r   r   __call__/   s   z_buffer_reader.__call__N__name__
__module____qualname__r6   rD   r   r   r   r   r0   *       r0   c                   @   r/   )_buffer_writerc                 C   r1   r   r2   r4   r   r   r   r6   8   r7   z_buffer_writer.__init__c                 C   s*   t |t t j| }| j|j dS r8   )r:   r;   r<   c_ubyter3   r&   r>   )r5   r?   datarB   blockr   r   r   rD   ;   s   z_buffer_writer.__call__NrE   r   r   r   r   rJ   6   rI   rJ   c                 C   sJ   |  dd}|  d t }||_t|dt|  d |_|jf}||fS )Nr      
m_GetBlock)r!   pdfium_cFPDF_FILEACCESS	m_FileLenr   r0   m_ParamrO   )r3   file_lenreaderto_holdr   r   r   get_bufreaderA   s   
rW   c                 C   s    t jdd}t|dt|  |S )Nr9   )version
WriteBlock)rP   FPDF_FILEWRITEr   rJ   )r3   writerr   r   r   get_bufwriterP   s   r\   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>Z   s    z!pages_c_array.<locals>.<listcomp>)r   rP   	FPDF_PAGE)pagescountc_arrayr   r   r   pages_c_arrayV   s
   rd   )r   )r:   pypdfium2.rawr]   rP   r   r   r.   r0   rJ   rW   r\   rd   r   r   r   r   <module>   s   

