
    iG!                     6   % S r SSKrSSKJrJrJrJr  SSKJrJ	r	J
r
  Sq\\S'   Sq\\S'   / q\\   \S	'   S
r\\S'    " S S\5      r   S,S\\\S4   S\\\S4   S\\\\   S4   S\\\\\   4   4S jjrS\\   S\\   S\\   4S jrS\\   S\4S jrS\S\\\   \\   4   S\\\   \\   4   S\\\   \\   4   S\\\\\\4   4   \\\4   \\\   4   S\\S4   S\S\S \\\\\\\/S4      S!\S"\S#\S\\\\\   \\   4   4S$ jrS%\\\\	4      S&\\   S'\\   S\\\\\\4   4   \\\4   \\\   4   S\\S4   S\\\4   4S( jrS\S&\\   S'\\   S\\\\\\4   4   \\\4   \\\   4   S)\S\S*\S \\\\\\\/S4      S\\\4   4S+ jrg)-ze
Code related to text extraction.

Some parts are still in _page.py. In doubt, they will stay there.
    N)AnyCallableOptionalUnion   )DictionaryObjectTextStringObjectencode_pdfdocencodingCUSTOM_RTL_MINCUSTOM_RTL_MAXCUSTOM_RTL_SPECIAL_CHARS    LAYOUT_NEW_BT_GROUP_SPACE_WIDTHSc                       \ rS rSrSrg)OrientationNotFoundError    N)__name__
__module____qualname____firstlineno____static_attributes__r       Y/home/james-whalen/.local/lib/python3.13/site-packages/pypdf/_text_extraction/__init__.pyr   r      s    r   r   _min_maxspecialsreturnc                    [        U [        5      (       a  U qO [        U [        5      (       a  [	        U 5      q[        U[        5      (       a  UqO [        U[        5      (       a  [	        U5      q[        U[        5      (       a  U Vs/ s H  n[	        U5      PM     snqO[        U[        5      (       a  Uq[        [
        [        4$ s  snf )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<#=HqCFH#= 	Hd	#	##+ >+CCC $>s   
Cmnc           	      &   U S   US   -  U S   US   -  -   U S   US   -  U S   US   -  -   U S   US   -  U S   US   -  -   U S   US   -  U S   US   -  -   U S   US   -  U S   US   -  -   US   -   U S   US   -  U S   US   -  -   U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                 @    U S   S:  a  gU S   S:  a  gU S   S:  a  gg)	Nr,   gư>r   gư   r+   Z     r   )r(   s    r   orientr3   O   s/    td{te|taxr   text	cmtm_prevcmtm_matrix	memo_cmtmcmaporientations.output	font_sizevisitor_text
str_widths
spacewidth
str_heightc                    US   nUS   nUS   nUS   nUS   nUS   n[        X5      n[        X5      n[        U5      nUS   US   -
  nUS   US   -
  n[        R                  " US   S-  US   S-  -   5      n[        R                  " US   S-  US   S-  -   5      n[        R                  " US   S-  US   S-  -   5      nUnUU;  a  [        eUS;   a  UnUnO
US;   a  UnUn [        W5      S	[        UU-  UU-  5      -  :  a*  X`-   S
   S:w  a  X`S-   -  nUb  U" U S-   UUUS   U5        Sn OWX-   U-  :  a  X`-   S
   S:w  a  U S-  n UR                  5       nUR                  5       nXX4$ ! [         a     N0f = f)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   Y   s     lGlGAIAIlGlG'#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E4 5E4 4
F FoperandsrL   rM   c                 `   SnSn[        X!5      n[        U5      nX;   a  [        U 5      S:  a  [        U S   [        5      (       a
  U S   nSnXV4$ Sn[        U S   [        5      (       a  [        U S   5      OU S   n	[        US   [        5      (       a   U	R                  US   S5      nXV4$ SR                  U	 V
s/ s H-  oUS   ;   a  US   U
   O[        U
45      R                  5       PM/     sn
5      nXV4$ ! [         a"    U	R                  US   S:X  a  SOSS5      n XV4$ f = fs  sn
f )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"s8}q'8hqk3''A"O. + A hqk3// &hqk2a[ 
 $q'3''			$q'?;A  GGSUVSUaQ<T!WQZUA4[5G5G5IISUV  !  		'+Aw)';'A  Ws   C< >4D+<'D('D(text_operandsrtl_dirc                 H   U Vs/ s H  oS   R                  X5      PM     sn H  n[        U5      S:X  a  [        U5      n	OSn	U	S::  d7  SU	s=::  a  S::  d*  O  SU	s=::  a  S::  d  O  SU	s=::  a  S::  d  O  U	[        ;   a  U(       a  X-   OX-   n Mn  S	U	s=::  a  S
::  d8  O  SU	s=::  a  S::  d)  O  SU	s=::  a  S::  d  O  [        U	s=::  a
  [
        ::  a$  O  O!U(       d  SnUb  U" XX#S   U5        Sn X-   n M  U(       a  SnUb  U" XX#S   U5        Sn X-   n M     X4$ s  snf )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      s!    *77A1gkk!7q6Q;QBB 4Zr!T!%v%%v%--&18DHDb"F"%v%%v%5~5+ )!WiP8D+ )!WiP8DE 8H =I 8s   D)NNN)__doc__rD   typingr   r   r   r   genericr   r	   r
   r   r"   __annotations__r   r   r%   r   rH   r   r#   tupler'   floatr.   r3   dictrY   boolre   rn   r   r   r   <module>rw      s    1 1 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   