HEX
Server: Apache
System: Linux srv1.prosuiteplus.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: prosuiteplus (1001)
PHP: 8.3.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/pdfminer/__pycache__/utils.cpython-38.pyc
U

�R�]b/�@sdZddlZddlZdZejr*ddlZeZdd�Zdd�Z	d8d
d�Z
dd
�ZdZdd�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�ZGd6d7�d7e �Z!dS)<z
Miscellaneous Routines.
�Ni���cCs0t|t�sttt|����tjr$|S|��SdS)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_bytessrcCsLt|tttf�s ttt|����tjrHt|t�rHt�	|�}|�
|d�}|S)zDIn Py2, does nothing. In Py3, converts to string, guessing encoding.�encoding)r�bytesr�unicoderrr�PY3�chardetZdetect�decode)r	�encr
r
r�make_compat_strs
 
r�utf-8�ignorecCsntjr0t|ttf�s$ttt|����|�||�Stjrjt|t�rD|St|t	�s^ttt|����|�
||�SdS)zTWhen Py2 str.encode is called, it often means bytes.encode in Py3. This does either.N)rrrrrrrrrrr)Z
bytesorstringr
Z	erractionr
r
r�compatible_encode_method#s
rcCs�|dkrtd|��|||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�|
�}}
|||
dd@}|t�|�7}�qDntd
|	��||7}|}qD|S)N�z"Unsupported `bitspercomponent': %d��r����zUnsupported predictor value: %d)�
ValueError�range�lenrrZbyte2intZint2byte�zip)�predZcolors�columnsZbitspercomponent�data�nbytesZbufZline0�iZftZline1Zline2�c�b�ar
r
r�apply_png_predictor/sP�



r+)rrrrrrcCs�|\}}}}}}|\}}	}
}}}
|||
||	||||||
||	||||||
|||	||||
fS�Nr
)Zm1Zm0Za1Zb1Zc1Zd1Ze1�f1Za0Zb0Zc0Zd0Ze0Zf0r
r
r�mult_matrixds�r.c
CsH|\}}}}}}|\}}	|||||||	|||||	||fS)zTranslates a matrix by (x, y).r
�
�m�vr*r)r(�d�e�f�x�yr
r
r�translate_matrixmsr7c
Cs@|\}}}}}}|\}}	||||	|||||	|fSr,r
r/r
r
r�apply_matrix_pttsr8c
Cs8|\}}}}}}|\}}	||||	||||	fS)zCEquivalent to apply_matrix_pt(M, (p,q)) - apply_matrix_pt(M, (0,0))r
)
r0r1r*r)r(r2r3r4�p�qr
r
r�apply_matrix_norm{sr;cCst|tjtf�Sr,)rrZ
integer_types�float)r5r
r
r�isnumber�sr=ccs.t�}|D]}||krq
|�|�|Vq
dS)zEliminates duplicated elements.N)�set�add)�objs�done�objr
r
r�uniq�s
rCcCs8g}g}|D]"}||�r$|�|�q|�|�q||fS)z9Split a list into two classes according to the predicate.)�append)r#r@�tr4rBr
r
r�fsplit�srFcCstt|�|t||�|�S)zReturns a discrete range.)r �int)Zv0Zv1r2r
r
r�drange�srHcCsZttttf\}}}}|D]0\}}t||�}t||�}t||�}t||�}q||||fS)z7Compute a minimal rectangle that covers all the points.)�INF�min�max)Zpts�x0�y0�x1�y1r5r6r
r
r�	get_bound�s


rPcCs4d}|D]&}||�}|dks$||kr||}}q|S)z;Picks the object obj where func(obj) has the highest value.Nr
)�seq�funcZmaxobjZmaxscorerBZscorer
r
r�pick�srSccs6g}|D](}|�|�t|�|krt|�Vg}qdS)z$Groups every n elements of the list.N)rDr!�tuple)�nrQ�rr5r
r
r�choplist�s

rWcCs�t|�}|s|S|dkr t|�S|dkr8t�d|�dS|dkrTt�dd|�dS|dkrlt�d|�dS|d	kr�t�d
|�dStd|��dS)
z/Unpacks 1 to 4 or 8 byte integers (big endian).rrz>Hrrz>Lr�rz>Qzinvalid length: %dN)r!�ord�structZunpack�	TypeError)�s�default�lr
r
r�nunpack�sr_�ccs|]}t�|�VqdSr,)rZunichr)�.0r5r
r
r�	<genexpr>�srb(rrrrrX���r�	�
���
���������rsi�i�i�i�i�i�i�i�� �!�"�#�$�%�&�'�(�)�*�+�,�-�.�/�0�1�2�3�4�5�6�7�8�9�:�;�<�=�>�?�@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_�`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~ri" i  i! i& i i i�iD i9 i: i"i0 i i i i i i i"!i�i�iAiRi`ixi}i1iBiSiai~ri� ������������r������������������������������������������������������������������������������������������������������������������������������������rcCs8|�d�r t�|dd�dd�Sd�dd�|D��SdS)	z+Decodes a PDFDocEncoding string to Unicode.s��rNzutf-16berr`css|]}t|VqdSr,)�PDFDocEncoding)rar(r
r
rrbszdecode_text.<locals>.<genexpr>)�
startswithrZ	text_type�join)r\r
r
r�decode_text�s
r3�asciicCsLtjrt|t�rdS|�dd��dd��dd��dd	�}|rH|�|d
�}|S)z"Encodes a string for SGML/XML/HTMLr`�&z&amp;�>z&gt;�<z&lt;�"z&quot;�xmlcharrefreplace)rrrr�replacer)r5�codecr
r
rrs$rcCs|\}}}}d||||fS)Nz%.3f,%.3f,%.3f,%.3fr
)�bboxrLrMrNrOr
r
r�bbox2str
sr=cCs$|\}}}}}}d||||||fS)Nz"[%.2f,%.2f,%.2f,%.2f, (%.2f,%.2f)]r
)r0r*r)r(r2r3r4r
r
r�
matrix2strsr>cCs�t|j|j�t|j|j�}}t|j|j�t|j|j�}}||||}}||j|j||j|j}}	|dkr�|	dkr�|j|jd|j|jd}
}|j|jd|j|jd}}
|
|||
fStd|�td|	�fSdS)a�A distance function between two TextBoxes.

    Consider the bounding rectangle for obj1 and obj2.
    Return vector between 2 boxes boundaries if they don't overlap, otherwise returns vector betweeen boxes centers
             +------+..........+ (x1, y1)
             | obj1 |          :
             +------+www+------+
             :          | obj2 |
    (x0, y0) +..........+------+
    rrN)rJrLrMrKrNrO�widthZheight)Zobj1Zobj2rLrMrNrOZowZohZiwZihZxc1Zyc1Zxc2Zyc2r
r
r�vecBetweenBoxess"""r@c@sbeZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�Planez�A set-like data structure for objects placed on a plane.

    Can efficiently find objects in a certain rectangular area.
    It maintains two parallel lists of objects, each of
    which is sorted by its x or y coordinate.
    r�cCs2g|_t�|_i|_||_|\|_|_|_|_dSr,)	�_seqr>�_objs�_grid�gridsizerLrMrNrO)�selfr<rEr
r
r�__init__7s
zPlane.__init__cCsdt|�S)Nz<Plane objs=%r>)�list�rFr
r
r�__repr__>szPlane.__repr__cs�fdd��jD�S)Nc3s|]}|�jkr|VqdSr,�rC)rarBrIr
rrbBs
z!Plane.__iter__.<locals>.<genexpr>)rBrIr
rIr�__iter__AszPlane.__iter__cCs
t|j�Sr,)r!rCrIr
r
r�__len__Dsz
Plane.__len__cCs
||jkSr,rK)rFrBr
r
r�__contains__GszPlane.__contains__ccs�|\}}}}||jks4|j|ks4||jks4|j|kr8dSt|j|�}t|j|�}t|j|�}t|j|�}t|||j�D]"}t|||j�D]}||fVq�qvdSr,)rLrNrMrOrKrJrHrE)rFr<rLrMrNrOZgrid_yZgrid_xr
r
r�	_getrangeJs(zPlane._getrangecCs|D]}|�|�qdSr,)r?)rFr@rBr
r
r�extendVszPlane.extendcCsj|�|j|j|j|jf�D]2}||jkr8g}||j|<n
|j|}|�|�q|j�|�|j�	|�dS)zplace an object.N)
rOrLrMrNrOrDrDrBrCr?)rFrB�krVr
r
rr?Zs

z	Plane.addc
Cs^|�|j|j|j|jf�D]2}z|j|�|�Wqttfk
rJYqXq|j	�|�dS)zdisplace an object.N)
rOrLrMrNrOrD�remove�KeyErrorrrC)rFrBrQr
r
rrRfszPlane.removec	cs�|\}}}}t�}|�|�D]d}||jkr,q|j|D]H}||krDq6|�|�|j|ks6||jks6|j|ks6||jkrxq6|Vq6qdS)z)finds objects that are in a certain area.N)r>rOrDr?rNrLrOrM)	rFr<rLrMrNrOrArQrBr
r
r�findos

(z
Plane.findN)r�)�__name__�
__module__�__qualname__�__doc__rGrJrLrMrNrOrPr?rRrTr
r
r
rrA/s
	rA)rr)N)r)r4)"rXrZrrIrrrrrrrr+ZMATRIX_IDENTITYr.r7r8r;r=rCrFrHrPrSrWr_r2r0r3rr=r>r@�objectrAr
r
r
r�<module>s<		
2		


$