
    @wgl!                     4   U d Z ddlZddlmZmZmZmZmZmZm	Z	 ddl
mZmZmZ daeed<   daeed<   g aee   ed	<   d
Zeed<    G d de      Z	 	 	 d,de	eedf   de	eedf   de	eee   df   deeeee   f   fdZdee   dee   dee   fdZdee   defdZdedeee   ee   f   deee   ee   f   deee   ee   f   dee	eeeef   f   eeef   eee   f   deedf   deded eeeeeeegdf      d!ed"ed#edeeeee   ee   f   fd$Zd%ee	eef      d&ee   d'ee   dee	eeeef   f   eeef   eee   f   deedf   deeef   fd(Zded&ee   d'ee   dee	eeeef   f   eeef   eee   f   d)eded*ed eeeeeeegdf      deeef   fd+Zy)-ze
Code related to text extraction.

Some parts are still in _page.py. In doubt, they will stay there.
    N)AnyCallableDictListOptionalTupleUnion   )DictionaryObjectTextStringObjectencode_pdfdocencodingCUSTOM_RTL_MINCUSTOM_RTL_MAXCUSTOM_RTL_SPECIAL_CHARS    LAYOUT_NEW_BT_GROUP_SPACE_WIDTHSc                       e Zd Zy)OrientationNotFoundErrorN)__name__
__module____qualname__     V/var/www/horilla/myenv/lib/python3.12/site-packages/pypdf/_text_extraction/__init__.pyr   r      s    r   r   _min_maxspecialsreturnc                 ^   t        | t              r| ant        | t              rt	        |       at        |t              r|ant        |t              rt	        |      at        |t              r|D cg c]  }t	        |       c}ant        |t              r|at        t
        t        fS c c}w )a  
    Change the Right-To-Left and special characters custom parameters.

    Args:
        _min: The new minimum value for the range of custom characters that
            will be written right to left.
            If set to ``None``, the value will not be changed.
            If set to an integer or string, it will be converted to its ASCII code.
            The default value is -1, which sets no additional range to be converted.
        _max: The new maximum value for the range of custom characters that will
            be written right to left.
            If set to ``None``, the value will not be changed.
            If set to an integer or string, it will be converted to its ASCII code.
            The default value is -1, which sets no additional range to be converted.
        specials: The new list of special characters to be inserted in the
            current insertion order.
            If set to ``None``, the current value will not be changed.
            If set to a string, it will be converted to a list of ASCII codes.
            The default value is an empty list.

    Returns:
        A tuple containing the new values for ``CUSTOM_RTL_MIN``,
        ``CUSTOM_RTL_MAX``, and ``CUSTOM_RTL_SPECIAL_CHARS``.

    )
isinstanceintr   strordr   r   list)r   r   r   xs       r   set_custom_rtlr'      s    > $	D#	T$	D#	T(C 4<#=qCF#= 	Hd	##+ >+CCC $>s   1B*mnc           	      &   | d   |d   z  | d   |d   z  z   | d   |d   z  | d   |d   z  z   | d   |d   z  | d   |d   z  z   | d   |d   z  | d   |d   z  z   | d   |d   z  | d   |d   z  z   |d   z   | d   |d   z  | d   |d   z  z   |d   z   gS )Nr      r
         r   r   )r(   r)   s     r   multr.   D   s    	!qtadQqTk!	!qtadQqTk!	!qtadQqTk!	!qtadQqTk!	!qtadQqTk!AaD(	!qtadQqTk!AaD( r   c                 :    | d   dkD  ry| d   dk  ry| d   dkD  ryy)	Nr,   gư>r   gư   r+   Z     r   )r(   s    r   orientr3   O   s/    td{	
1	
1r   text	cmtm_prevcmtm_matrix	memo_cmtmcmaporientations.output	font_sizevisitor_text
str_widths
spacewidth
str_heightc                    |d   }|d   }|d   }|d   }|d   }|d   }t        ||      }t        ||      }t        |      }|d   |d   z
  }|d   |d   z
  }t        j                  |d   dz  |d   dz  z         }t        j                  |d   dz  |d   dz  z         }t        j                  |d   dz  |d   dz  z         }|}||vrt        |dv r|}|}n|dv r|}|}	 t              d	t        ||z  ||z        z  kD  r*|| z   d
   dk7  r:|| dz   z  }| || dz   |||d   |       d} n|
|	z   |z  k\  r|| z   d
   dk7  r| dz  } |j                         }|j                         }| |||fS # t        $ r Y 1w xY w)Nr   r+   r-   r   r
   r,   )r   r0   )r1   r2   g?r   
  )	r.   r3   mathsqrtr   absmin	Exceptioncopy)r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   cm_prevtm_prev	cm_matrix	tm_matrixmemo_cmmemo_tmm_prevr(   orientationdelta_xdelta_yscale_prev_xscale_prev_yscale_ymoved_heightmoved_widths                               r   crlf_space_checkrY   Z   s     lGlGAIAIlGlG'7#FY	"A)KdVAYGdVAYG99WQZ]WQZ]:;L99WQZ]WQZ]:;Lii	!a)A,/9:GG,&&&h%$			!|sSl)BIPWDW%XXXr"d*$+%+ tQ! Z*4DD$#s*CKD nnGnnG'))	  s   "A&E. .	E:9E:operandsrL   rM   c                 <   d}d}t        ||      }t        |      }||v rt        |       dkD  rt        | d   t              r| d   }d}||fS d}t        | d   t              rt        | d         n| d   }	t        |d   t              r	 |	j                  |d   d      }||fS dj                  |	D 
cg c]+  }
|
|d   v r|d   |
   nt        |
f      j                         - c}
      }||fS # t        $ r" |	j                  |d   dk(  rdndd      }Y ||fS w xY wc c}
w )NrB   Fr   Tsurrogatepasscharmapz	utf-16-be)
r.   r3   lenr!   r#   r   decoderH   joinbytes)rZ   rL   rM   r8   r9   tis_str_operandsr(   rQ   ttr&   s              r   get_text_operandsre      s]    AOY	"A)Kl"s8}q'8hqk3'A"O. + A hqk3/ &hqk2a[ 
 $q'3'			$q'?;A  GGSUVa1Q<T!WQZUA4[5G5G5IIV  !  		'+Aw)';'A  Ws   C+ 00D+%DDtext_operandsrtl_dirc                 
   |D cg c]  }|d   j                  ||       c}D ]  }t        |      dk(  rt        |      }	nd}	|	dk  s/d|	cxk  rdk  s$n d|	cxk  rdk  sn d|	cxk  rdk  s
n |	t        v r|r|| z   n| |z   } `d	|	cxk  rd
k  s2n d|	cxk  rdk  s%n d|	cxk  rdk  sn t        |	cxk  r	t
        k  r n n|sd}| || |||d   |       d} || z   } |rd}| || |||d   |       d} | |z   }  | |fS c c}w )Nr+   /   :   @   i    io   i   i!  i  i  i  i  ip  i  Tr,   rB   F)getr^   r$   r   r   r   )
r4   rL   rM   r8   rf   r;   rg   r<   r&   xxs
             r   get_display_strrn      s8    *77Ad1gkk!Q7 "q6Q;QBB 4Zr!T!%v%%v%--&1t8D1HDb"F"%v%%v%5~5+ y)T!WiPt8D+ y)T!WiP!8DE"H =I 8s   D )NNN)__doc__rD   typingr   r   r   r   r   r   r	   genericr   r   r   r   r"   __annotations__r   r   r   rH   r   r#   r'   floatr.   r3   rY   boolre   rn   r   r   r   <module>ru      s    D D D O O  &( $s) (()  # )	y 	
 #'"&,0+D
S$
+D
S$
+D CcD()+D 3T#Y	+D\DK DK DK d5k c @*
@*T%[$u+-.@* tE{DK/0@* T%[$u+-.	@*
 c4S>!"DcNCBR9SS@* S/@* @* @* 8S#sC$=t$CDE@* @* @* @* 3T%[$u+-.@*F' 5../0' E{'  E{'  c4S>!"DcNCBR9SS	'  S/'  39' T1
1E{1 E{1 c4S>!"DcNCBR9SS	1 1 1 1 8S#sC$=t$CDE1 391r   