
    є jC!                        U d Z ddlZddlmZmZmZmZ ddl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
         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deedf         deeef         fd*Zded'ee         d(ee         dee
         d)ed+ed ed,ed!eeeeeeegdf                  deeeef         fd-ZdS )/ze
Code related to text extraction.

Some parts are still in _page.py. In doubt, they will stay there.
    N)AnyCallableOptionalUnion   )Font)DictionaryObjectTextStringObjectencode_pdfdocencodingCUSTOM_RTL_MINCUSTOM_RTL_MAXCUSTOM_RTL_SPECIAL_CHARS    LAYOUT_NEW_BT_GROUP_SPACE_WIDTHSc                       e Zd ZdS )OrientationNotFoundErrorN)__name__
__module____qualname__     sC:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\pypdf/_text_extraction/__init__.pyr   r      s        Dr   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 |D             ant          |t                    r|at          t
          t          fS )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``.

    c                 ,    g | ]}t          |          S r   )ord).0xs     r   
<listcomp>z"set_custom_rtl.<locals>.<listcomp>?   s    #=#=#=qCFF#=#=#=r   )
isinstanceintr   strr    r   r   list)r   r   r   s      r   set_custom_rtlr(      s    > $ #	D#		 #T$ #	D#		 #T(C   ,#=#=H#=#=#=  	Hd	#	# ,#+ >+CCCr   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/   E   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                 Z    | d         dk    rdS | d         dk     rdS | d         dk    rdS dS )	Nr-   gư>r   gư   r,   Z     r   )r)   s    r   orientr4   P   sF    td{ qte| stax r3r   text	cmtm_prevcmtm_matrix	memo_cmtmfont_resource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  k    r.|| z   d
         dk    r|| dz   z  }| || dz   ||||           d} n ||
|	z   |z  k    r|| z   d
         dk    r| dz  } n# t          $ r Y nw xY w|                                }|                                }| |||fS )Nr   r,   r.   r   r   r-   )r   r1   )r2   r3   g?r   
  )	r/   r4   mathsqrtr   absmin	Exceptioncopy)r5   r6   r7   r8   r9   r:   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_checkrZ   Z   sP    lGlGAIAIlGlG'7##FY	""A))KdVAYGdVAYG9WQZ]WQZ]:;;L9WQZ]WQZ]:;;Li	!a)A,/9::GG,& '&&h %$			! |sSl)BIPWDW%X%XXX 	r"d* 
$+%  Lt%!   Z*4DD	$#s*	 CKD   nnGnnG'))s   A8F 
F"!F"operandsrM   rN   fontc                 V   d}d}t          ||          }t          |          }||v rt          |           dk    rt          | d         t                    r| d         }d}nd}t          | d         t                    rt          | d                   n| d         }	t          j        t                    rP	 |	                    j        d          }nT# t          $ r& |	                    j        dk    rdndd          }Y n%w xY wd	                    fd|	D                       }||fS )	NrC   Fr   Tsurrogatepasscharmapz	utf-16-bec                     g | ]:}|j         v rj         |         n!t          |f                                          ;S r   )encodingbytesdecoder!   r"   r\   s     r   r#   z%get_text_operands.<locals>.<listcomp>   sF    bbbZ[dm);UT]1%%tASASAUAUbbbr   )
r/   r4   lenr$   r&   r   ra   rc   rI   join)
r[   rM   rN   r\   r:   tis_str_operandsr)   rR   tts
      `      r   get_text_operandsrj      s_    AOY	""A))Kl" s8}}q'8 hqk3'' 	A"OOA hqk3//!%hqk222a[ 
 $--- 			$-AAAA     		'+}	'APy' AAA	 GGbbbb_abbb  s   7C -DDtext_operandsrtl_dirc	                 ^   d}	fd|D             D ]}
t          |
          dk    rt          |
          }nd}|dk    s6d|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   } nd|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          |cxk    rt          k    r n n|sd}| || ||||           d} |
| z   } n|rd}| || ||||           d} | |
z   } |	|
dk    rj        n                    |
          z  }	| ||	fS )Ng        c                 F    g | ]}j                             ||          S r   )character_mapgetrd   s     r   r#   z#get_display_str.<locals>.<listcomp>   s,    BBBqd $$Q**BBBr   r,   /   :   @   i    io   i   i!  i  i  i  i  ip  i  TrC   FrD   )re   r    r   r   r   space_width
text_width)r5   rM   rN   r9   r\   rk   r<   rl   r=   widthsr"   xxs       `       r   get_display_strrx      s    FBBBBMBBB #G #Gq66Q; 	QBBB 4Z	 r	 	 	 	 "	 	 	 	 		 	 	 	  &		 	 	 	
 	 	 	 	
  &	 	 	 	 --	  '41t88D1HDDb	 	 	 	"	 	 	 		 	 	 	%	 	 	 	 	 	 	 	  &	 	 	 	 		 	 	 	 (6		 	 	 	 	   W Ly)]IVVVt8DD  W Ly)]IVVV!8Da3hF$""DOOA4F4FF&  r   )NNN) __doc__rE   typingr   r   r   r   _fontr   genericr	   r
   r   r   r%   __annotations__r   r   r'   r   rI   r   r&   tupler(   floatr/   r4   rZ   boolrj   rx   r   r   r   <module>r      s      1 1 1 1 1 1 1 1 1 1 1 1       O O O O O O O O O O      &( $s) ( ( (()  # ) ) )	 	 	 	 	y 	 	 	
 #'"&,0+D +D
S$
+D
S$
+D CcD()+D 3T#Y	+D +D +D +D\DK DK DK    d5k c    >*
>*T%[$u+-.>* tE{DK/0>* T%[$u+-.	>*
 ,->* S/>* >* >* 8S#sC$=t$CDE>* >* >* >* 3T%[$u+-.>* >* >* >*B% 5../0% E{%  E{%  	% 
 S/%  39%  %  %  % P2!
2!E{2! E{2! ,-	2!
 2! 2! 2! 2! 8S#sC$=t$CDE2! 3e2! 2! 2! 2! 2! 2!r   