File: //usr/lib/python3/dist-packages/pdfminer/__pycache__/utils.cpython-38.pyc
U
�R�]b/ � @ s d Z ddlZddlZdZejr*ddlZeZdd� Zdd� Z d8d
d�Z
dd
� ZdZdd� Z
dd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd � Zd9d!d"�Zd#d$� Zd:d%d&�Zd'�d(d)� d*D ��Zd+d,� Zd;d.d/�Zd0d1� Zd2d3� Zd4d5� ZG d6d7� d7e �Z!dS )<z
Miscellaneous Routines.
� Ni���c C s0 t | t�sttt| ����tjr$| S | �� S dS )zEIn Py2, does nothing. In Py3, converts to bytes, encoding to unicode.N)�
isinstance�str�AssertionError�type�six�PY2�encode)�in_str� r
�0/usr/lib/python3/dist-packages/pdfminer/utils.py�make_compat_bytes s r c C sL t | tttf�s ttt| ����tjrHt | t�rHt� | �}| �
|d �} | S )zDIn Py2, does nothing. In Py3, converts to string, guessing encoding.�encoding)r �bytesr �unicoder r r �PY3�chardetZdetect�decode)r �encr
r
r �make_compat_str s
r �utf-8�ignorec C sn t jr0t| ttf�s$ttt| ����| �||�S t jrjt| t�rD| S t| t �s^ttt| ����| �
||�S dS )zTWhen Py2 str.encode is called, it often means bytes.encode in Py3. This does either.N)r r r r r r r r r r r )Z
bytesorstringr
Z erractionr
r
r �compatible_encode_method# s
r c C s� |dkrt d| ��|| | d }d}d| }tdt|�|d �D �]d}|| } tjrbt�| �} |d7 }|||| � }
d}| dkr�||
7 }�n| dkr�d}|
D ].}
tjr�t�|
�}
||
d@ }|t�|�7 }q�n�| dk�r,t||
�D ]@\}}
tj�rt�|�t�|
� }}
||
d@ }|t�|�7 }q�nr| d k�r�d}t||
�D ]J\}}
tj�rjt�|�t�|
� }}
|| |
d d@ }|t�|�7 }�qDnt d
| ��||7 }|}qD|S )N� z"Unsupported `bitspercomponent': %d� � r � � � � zUnsupported predictor value: %d)�
ValueError�range�lenr r Zbyte2intZint2byte�zip)�predZcolors�columnsZbitspercomponent�data�nbytesZbufZline0�iZftZline1Zline2�c�b�ar
r
r �apply_png_predictor/ sP �
r+ )r r r r r r c C s� | \}}}}}}|\}} }
}}}
|| |
| | | || || |
| | | || || |
| | | | || |
fS �Nr
)Zm1Zm0Za1Zb1Zc1Zd1Ze1�f1Za0Zb0Zc0Zd0Ze0Zf0r
r
r �mult_matrixd s �r. c
C sH | \}}}}}}|\}} |||||| | | | || | | | fS )zTranslates a matrix by (x, y).r
�
�m�vr* r) r( �d�e�f�x�yr
r
r �translate_matrixm s r7 c
C s@ | \}}}}}}|\}} || || | || || | fS r, r
r/ r
r
r �apply_matrix_ptt s r8 c
C s8 | \}}}}}}|\}} || || || || fS )zCEquivalent to apply_matrix_pt(M, (p,q)) - apply_matrix_pt(M, (0,0))r
)
r0 r1 r* r) r( r2 r3 r4 �p�qr
r
r �apply_matrix_norm{ s r; c C s t | tjtf�S r, )r r Z
integer_types�float)r5 r
r
r �isnumber� s r= c c s. t � }| D ]}||krq
|�|� |V q
dS )zEliminates duplicated elements.N)�set�add)�objs�done�objr
r
r �uniq� s
rC c C s8 g }g }|D ]"}| |�r$|� |� q|� |� q||fS )z9Split a list into two classes according to the predicate.)�append)r# r@ �tr4 rB r
r
r �fsplit� s rF c C s t t| �| t|| �| �S )zReturns a discrete range.)r �int)Zv0Zv1r2 r
r
r �drange� s rH c C sZ t t t t f\}}}}| D ]0\}}t||�}t||�}t||�}t||�}q||||fS )z7Compute a minimal rectangle that covers all the points.)�INF�min�max)Zpts�x0�y0�x1�y1r5 r6 r
r
r � get_bound� s
rP c C s4 d}| D ]&}||�}|dks$||k r|| }}q|S )z;Picks the object obj where func(obj) has the highest value.Nr
)�seq�funcZmaxobjZmaxscorerB Zscorer
r
r �pick� s rS c c s6 g }|D ](}|� |� t|�| krt|�V g }qdS )z$Groups every n elements of the list.N)rD r! �tuple)�nrQ �rr5 r
r
r �choplist� s
rW c C s� t | �}|s|S |dkr t| �S |dkr8t�d| �d S |dkrTt�dd| �d S |dkrlt�d| �d S |d kr�t�d
| �d S td| ��dS )
z/Unpacks 1 to 4 or 8 byte integers (big endian).r r z>Hr r z>Lr � r z>Qzinvalid length: %dN)r! �ord�structZunpack� TypeError)�s�default�lr
r
r �nunpack� s r_ � c c s | ]}t �|�V qd S r, )r Zunichr)�.0r5 r
r
r � <genexpr>� s rb ( r r r r rX � � � r � �
� � �
� � � � � � � � � rs i� i� i� i� i� i� i� i� � �! �"