
    iBU                        S SK Jr  S SK Jr  S SK Jr  S SK Jr  S SK Jr  S SK Jr  S SK Jr  S SK Jr  S S	K J	r	   " S
 S5      r
 " S S5      r " S S5      r " S S5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\\5      r " S S\\5      r " S  S!\5      r " S" S#\5      r " S$ S%\\5      r " S& S'\5      r " S( S)\5      r " S* S+\5      r " S, S-\5      r " S. S/\5      r " S0 S1\5      r " S2 S3\5      r " S4 S5\5      r " S6 S7\5      r  " S8 S9\5      r! " S: S;\!5      r" " S< S=\!5      r#g>)?   )INF)Plane)	get_bound)uniq)csort)fsplit)bbox2str)
matrix2strapply_matrix_ptc                   $    \ rS rSrSS jrS rSrg)IndexAssigner   c                     Xl         g Nindex)selfr   s     B/home/kodi/my-venv/lib/python3.13/site-packages/pdfminer/layout.py__init__IndexAssigner.__init__   s
    
    c                     [        U[        5      (       a'  U R                  Ul        U =R                  S-  sl        g [        U[        5      (       a  U H  nU R	                  U5        M     g Nr   )
isinstance	LTTextBoxr   LTTextGrouprun)r   objxs      r   r   IndexAssigner.run   sS    c9%%

CIJJ!OJ 	 [)) r   r   N    )__name__
__module____qualname____firstlineno__r   r   __static_attributes__ r   r   r   r      s    r   r   c                   2    \ rS rSr       SS jrS rSrg)LAParams!   c                 X    Xl         X l        X0l        X@l        XPl        X`l        Xpl        g r   )line_overlapchar_marginline_marginword_margin
boxes_flowdetect_vertical	all_texts)r   r.   r/   r0   r1   r2   r3   r4   s           r   r   LAParams.__init__#   s/     )&&&$."r   c                 d    SU R                   U R                  U R                  U R                  4-  $ )NzM<LAParams: char_margin=%.1f, line_margin=%.1f, word_margin=%.1f all_texts=%r>)r/   r0   r1   r4   r   s    r   __repr__LAParams.__repr__4   s3    _!!4#3#3T5E5Et~~VW 	Xr   )r4   r2   r/   r3   r0   r.   r1   N)      ?g       @r:   g?r:   FFr$   r%   r&   r'   r   r8   r(   r)   r   r   r+   r+   !   s$     "   !& "Xr   r+   c                       \ rS rSrS rSrg)LTItem;   c                     g)zPerform the layout analysis.Nr)   r   laparamss     r   analyzeLTItem.analyze=   s    r   r)   Nr$   r%   r&   r'   rB   r(   r)   r   r   r=   r=   ;       r   r=   c                        \ rS rSrS rS rSrg)LTTextD   c                 \    SU R                   R                  < SU R                  5       < S3$ N< >)	__class__r$   get_textr7   s    r   r8   LTText.__repr__F   s!    (($--/; 	<r   c                     [         er   NotImplementedErrorr7   s    r   rO   LTText.get_textJ       !!r   r)   N)r$   r%   r&   r'   r8   rO   r(   r)   r   r   rG   rG   D   s    <"r   rG   c                   h    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rSrg)LTComponentP   c                 P    [         R                  U 5        U R                  U5        g r   )r=   r   set_bboxr   bboxs     r   r   LTComponent.__init__R   s    dr   c                 f    SU R                   R                  < S[        U R                  5      < S3$ rJ   )rN   r$   r	   r\   r7   s    r   r8   LTComponent.__repr__W   s%    (((499*=? 	@r   c                     [         er   
ValueErrorr   _s     r   __lt__LTComponent.__lt__\       r   c                     [         er   ra   rc   s     r   __le__LTComponent.__le__^   rg   r   c                     [         er   ra   rc   s     r   __gt__LTComponent.__gt__`   rg   r   c                     [         er   ra   rc   s     r   __ge__LTComponent.__ge__b   rg   r   c                 n    Uu  p#pEX l         X0l        X@l        XPl        XB-
  U l        XS-
  U l        Xl        g r   )x0y0x1y1widthheightr\   )r   r\   rr   rs   rt   ru   s         r   rZ   LTComponent.set_bboxe   s:    U
e	r   c                 L    U R                   S:*  =(       d    U R                  S:*  $ Nr#   )rv   rw   r7   s    r   is_emptyLTComponent.is_emptyp   s    zzQ2$++"22r   c                     [        U[        5      (       d   eUR                  U R                  :*  =(       a    U R                  UR                  :*  $ r   )r   rW   rr   rt   r   r   s     r   is_hoverlapLTComponent.is_hoverlaps   :    #{++++vv 6TWW%66r   c                     [        U[        5      (       d   eU R                  U5      (       a  g[        [	        U R
                  UR                  -
  5      [	        U R                  UR
                  -
  5      5      $ rz   r   rW   r   minabsrr   rt   r~   s     r   	hdistanceLTComponent.hdistancew   X    #{++++C  s477366>*C,?@@r   c                     [        U[        5      (       d   eU R                  U5      (       aL  [        [	        U R
                  UR                  -
  5      [	        U R                  UR
                  -
  5      5      $ grz   r   r~   s     r   hoverlapLTComponent.hoverlap~   X    #{++++C  s477366>*C,?@@r   c                     [        U[        5      (       d   eUR                  U R                  :*  =(       a    U R                  UR                  :*  $ r   )r   rW   rs   ru   r~   s     r   is_voverlapLTComponent.is_voverlap   r   r   c                     [        U[        5      (       d   eU R                  U5      (       a  g[        [	        U R
                  UR                  -
  5      [	        U R                  UR
                  -
  5      5      $ rz   r   rW   r   r   r   rs   ru   r~   s     r   	vdistanceLTComponent.vdistance   r   r   c                     [        U[        5      (       d   eU R                  U5      (       aL  [        [	        U R
                  UR                  -
  5      [	        U R                  UR
                  -
  5      5      $ grz   r   r~   s     r   voverlapLTComponent.voverlap   r   r   )r\   rw   rv   rr   rt   rs   ru   N)r$   r%   r&   r'   r   r8   re   ri   rl   ro   rZ   r{   r   r   r   r   r   r   r(   r)   r   r   rW   rW   P   sK    
@
	37A7Ar   rW   c                        \ rS rSrS rS rSrg)LTCurve   c                 Z    [         R                  U [        U5      5        X l        Xl        g r   )rW   r   r   pts	linewidth)r   r   r   s      r   r   LTCurve.__init__   s#    T9S>2"r   c                 F    SR                  S U R                   5       5      $ )N,c              3   ,   #    U  H
  nS U-  v   M     g7f)z	%.3f,%.3fNr)   ).0ps     r   	<genexpr>"LTCurve.get_pts.<locals>.<genexpr>   s     :Aas   )joinr   r7   s    r   get_ptsLTCurve.get_pts   s    xx::::r   )r   r   N)r$   r%   r&   r'   r   r   r(   r)   r   r   r   r      s    ;r   r   c                       \ rS rSrS rSrg)LTLine   c                 2    [         R                  XX#/5        g r   r   r   )r   r   p0p1s       r   r   LTLine.__init__   s    2(3r   r)   Nr$   r%   r&   r'   r   r(   r)   r   r   r   r      rE   r   r   c                       \ rS rSrS rSrg)LTRect   c           	      J    Uu  p4pV[         R                  XX44XT4XV4X64/5        g r   r   )r   r   r\   rr   rs   rt   ru   s          r   r   LTRect.__init__   s0    B8bXx"*RSr   r)   Nr   r)   r   r   r   r          r   r   c                        \ rS rSrS rS rSrg)LTImage   c                 |   [         R                  X5        Xl        X l        UR	                  S5      UR	                  S5      4U l        UR	                  S5      U l        UR	                  SS5      U l        UR	                  S5      U l        [        U R                  [        5      (       d  U R                  /U l        g )N)WWidth)HHeight)IM	ImageMask)BPCBitsPerComponentr   )CS
ColorSpace)rW   r   namestreamget_anysrcsize	imagemaskbits
colorspacer   list)r   r   r   r\   s       r   r   LTImage.__init__   s    T(	~679(;<NN#>B	 ..)=>$//400#/DOr   c           	          SU R                   R                  < SU R                  < S[        U R                  5      < SU R
                  < S3	$ NrK   () rL   rM   )rN   r$   r   r	   r\   r   r7   s    r   r8   LTImage.__repr__   s1    (($))$))$dll4 	5r   )r   r   r   r   r   r   Nr;   r)   r   r   r   r      s    5r   r   c                        \ rS rSrS rS rSrg)LTAnno   c                     Xl         g r   _text)r   texts     r   r   LTAnno.__init__   s
    
r   c                     U R                   $ r   r   r7   s    r   rO   LTAnno.get_text       zzr   r   Nr$   r%   r&   r'   r   rO   r(   r)   r   r   r   r      s    r   r   c                   ,    \ rS rSrS rS rS rS rSrg)LTChar   c	                 ^   [         R                  U 5        X`l        Xl        UR                  U l        Xs-  U-  U l        UR                  5       (       aP  UR                  5       U-  n	Uu  pU
c  U	S-  n
OX-  S-  n
SU-
  U-  S-  nU
* nX-   nXU R
                  -   4nX-   U4nO@UR                  5       U-  nUR                  5       U-  nUU-   nSU4nU R
                  UU-   4nU R                  u  nnnnnnSUU-  U-  :  =(       a    UU-  S:*  U l
        [        U R                  U5      u  nn[        U R                  U5      u  nnUU:  a  UUnnUU:  a  UUnn[        R                  U UUUU45        UR                  5       (       a  U R                  U l        g U R                  U l        g )Nr:   gMbP?i  r#   )rG   r   r   matrixfontnameadvis_vertical	get_width
get_heightget_descentuprightr   rW   rv   sizerw   )r   r   fontfontsizescalingriser   	textwidthtextdisprv   vxvytxtybllburrw   descentabcdefrr   rs   rt   ru   s                               r   r   LTChar.__init__   s   
''1NN$x/EHRzS[]T))x'$.BBB$(({#C8R.C __&1F&&(83G4Bb'C88RY'C![[Aq!QAaCK4AaC1H"4;;4R"4;;4R7BR7BRTBB#34

DI 	 DIr   c                     SU R                   R                  < S[        U R                  5      < S[	        U R
                  5      < SU R                  < SU R                  < SU R                  5       < S3$ )NrK   rL    matrix=z font=z adv=z text=rM   )	rN   r$   r	   r\   r
   r   r   r   rO   r7   s    r   r8   LTChar.__repr__  sE    (((499*=DKK($--" 	#r   c                     U R                   $ r   r   r7   s    r   rO   LTChar.get_text  r   r   c                     g)z<Returns True if two characters can coexist in the same line.Tr)   r~   s     r   is_compatibleLTChar.is_compatible  s    r   )r   r   r   r   r   r   N)	r$   r%   r&   r'   r   r8   rO   r  r(   r)   r   r   r   r      s    )V#r   r   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
LTContaineri  c                 <    [         R                  X5        / U l        g r   )rW   r   _objsr[   s     r   r   LTContainer.__init__  s    T(
r   c                 ,    [        U R                  5      $ r   )iterr  r7   s    r   __iter__LTContainer.__iter__"  s    DJJr   c                 ,    [        U R                  5      $ r   )lenr  r7   s    r   __len__LTContainer.__len__%  s    4::r   c                 :    U R                   R                  U5        g r   )r  appendr~   s     r   addLTContainer.add(  s    

#r   c                 8    U H  nU R                  U5        M     g r   )r  )r   objsr   s      r   extendLTContainer.extend,  s    CHHSM r   c                 L    U R                    H  nUR                  U5        M     g r   )r  rB   )r   rA   r   s      r   rB   LTContainer.analyze1  s    ::CKK! r   r  N)r$   r%   r&   r'   r   r  r  r  r  rB   r(   r)   r   r   r	  r	    s     
 
r   r	  c                        \ rS rSrS rS rSrg)LTExpandableContaineri9  c                 `    [         R                  U [        7[        7[        * [        * 45        g r   )r	  r   r   r7   s    r   r   LTExpandableContainer.__init__;  s&    TSD3$sd#;<r   c           	      H   [         R                  X5        U R                  [        U R                  UR                  5      [        U R
                  UR
                  5      [        U R                  UR                  5      [        U R                  UR                  5      45        g r   )	r	  r  rZ   r   rr   rs   maxrt   ru   r~   s     r   r  LTExpandableContainer.add?  si    "s477CFF+S#&&-A477CFF+S#&&-AC 	Dr   r)   N)r$   r%   r&   r'   r   r  r(   r)   r   r   r!  r!  9  s    r   r!  c                        \ rS rSrS rS rSrg)LTTextContaineriH  c                 X    [         R                  U 5        [        R                  U 5        g r   )rG   r   r!  r7   s    r   r   LTTextContainer.__init__J  s    &&t,r   c                 2    SR                  S U  5       5      $ )N c              3   p   #    U  H,  n[        U[        5      (       d  M  UR                  5       v   M.     g 7fr   )r   rG   rO   )r   r   s     r   r   +LTTextContainer.get_text.<locals>.<genexpr>P  s#     Q#C9P~s||~~s   66)r   r7   s    r   rO   LTTextContainer.get_textO  s    wwQQQQr   r)   Nr   r)   r   r   r(  r(  H  s    
Rr   r(  c                   ,    \ rS rSrS rS rS rS rSrg)
LTTextLineiU  c                 :    [         R                  U 5        Xl        g r   )r(  r   r1   r   r1   s     r   r   LTTextLine.__init__W  s      &&r   c                     SU R                   R                  < S[        U R                  5      < SU R	                  5       < S3$ rJ   )rN   r$   r	   r\   rO   r7   s    r   r8   LTTextLine.__repr__\  s-    (((499*=" 	#r   c                 l    [         R                  X5        [        R                  U [	        S5      5        g )N
)r(  rB   r	  r  r   r@   s     r   rB   LTTextLine.analyzea  s%    /fTl+r   c                     [         er   rR   )r   planeratios      r   find_neighborsLTTextLine.find_neighborsf  rU   r   )r1   N)	r$   r%   r&   r'   r   r8   rB   r=  r(   r)   r   r   r1  r1  U  s    
#

"r   r1  c                   &    \ rS rSrS rS rS rSrg)LTTextLineHorizontalij  c                 F    [         R                  X5        [        7U l        g r   )r1  r   r   _x1r3  s     r   r   LTTextLineHorizontal.__init__l      D.4r   c                 n   [        U[        5      (       az  U R                  (       ai  U R                  [        UR                  UR
                  5      -  nU R                  UR                  U-
  :  a  [        R                  U [        S5      5        UR                  U l        [        R                  X5        g NrL   )r   r   r1   r%  rv   rw   rB  rr   r	  r  r   rt   r1  r   r   margins      r   r  LTTextLineHorizontal.addq  sv    c6""t'7'7%%CIIszz(BBFxx#&&-'fSk266t!r   c                    X R                   -  nUR                  U R                  U R                  U-
  U R                  U R
                  U-   45      nU Vs/ s H  n[        U[        5      (       d  M  [        UR                   U R                   -
  5      U:  d  MB  [        UR                  U R                  -
  5      U:  d(  [        UR                  U R                  -
  5      U:  d  M  UPM     sn$ s  snf r   )	rw   findrr   rs   rt   ru   r   r@  r   r   r;  r<  r   r  r   s         r   r=  #LTTextLineHorizontal.find_neighborsz  s    ++zz477DGGAItww	BC# 0ts$89 

4;;./!3  (1,(1,	 t 0 	0 0   C23$C2A
C2)C2)rB  Nr$   r%   r&   r'   r   r  r=  r(   r)   r   r   r@  r@  j      
0r   r@  c                   &    \ rS rSrS rS rS rSrg)LTTextLineVerticali  c                 F    [         R                  X5        [        * U l        g r   )r1  r   r   _y0r3  s     r   r   LTTextLineVertical.__init__  rD  r   c                 n   [        U[        5      (       az  U R                  (       ai  U R                  [        UR                  UR
                  5      -  nUR                  U-   U R                  :  a  [        R                  U [        S5      5        UR                  U l        [        R                  X5        g rF  )r   r   r1   r%  rv   rw   ru   rT  r	  r  r   rs   r1  rG  s      r   r  LTTextLineVertical.add  sv    c6""t'7'7%%CIIszz(BBFvvf}txx'fSk266t!r   c                    X R                   -  nUR                  U R                  U-
  U R                  U R                  U-   U R
                  45      nU Vs/ s H  n[        U[        5      (       d  M  [        UR                   U R                   -
  5      U:  d  MB  [        UR                  U R                  -
  5      U:  d(  [        UR
                  U R
                  -
  5      U:  d  M  UPM     sn$ s  snf r   )	rv   rK  rr   rs   rt   ru   r   rR  r   rL  s         r   r=  !LTTextLineVertical.find_neighbors  s    **zz47719dggtwwqy$''BC# 0ts$67 		$**,-1  (1,(1,	 t 0 	0 0rN  )rT  NrO  r)   r   r   rR  rR    rP  r   rR  c                        \ rS rSrS rS rSrg)r   i  c                 <    [         R                  U 5        SU l        g )N)r(  r   r   r7   s    r   r   LTTextBox.__init__  s      &
r   c           	          SU R                   R                  < SU R                  < S[        U R                  5      < SU R                  5       < S3	$ r   )rN   r$   r   r	   r\   rO   r7   s    r   r8   LTTextBox.__repr__  s5    ((Xdii0$--/C 	Dr   r   Nr;   r)   r   r   r   r     s    
Dr   r   c                        \ rS rSrS rS rSrg)LTTextBoxHorizontali  c                 b    [         R                  X5        [        U R                  S S9U l        g )Nc                     U R                   * $ r   )ru   r   s    r   <lambda>-LTTextBoxHorizontal.analyze.<locals>.<lambda>  
    wr   keyr   rB   r   r  r@   s     r   rB   LTTextBoxHorizontal.analyze  &    $)4::+>?
r   c                     g)Nzlr-tbr)   r7   s    r   get_writing_mode$LTTextBoxHorizontal.get_writing_mode      r   r  Nr$   r%   r&   r'   rB   rn  r(   r)   r   r   ra  ra        
r   ra  c                        \ rS rSrS rS rSrg)LTTextBoxVerticali  c                 b    [         R                  X5        [        U R                  S S9U l        g )Nc                     U R                   * $ r   )rt   rd  s    r   re  +LTTextBoxVertical.analyze.<locals>.<lambda>  rg  r   rh  rj  r@   s     r   rB   LTTextBoxVertical.analyze  rl  r   c                     g)Nztb-rlr)   r7   s    r   rn  "LTTextBoxVertical.get_writing_mode  rp  r   r  Nrq  r)   r   r   rt  rt    rr  r   rt  c                       \ rS rSrS rSrg)r   i  c                 P    [         R                  U 5        U R                  U5        g r   )r(  r   r  )r   r  s     r   r   LTTextGroup.__init__  s      &Dr   r)   Nr   r)   r   r   r   r     r   r   r   c                       \ rS rSrS rSrg)LTTextGroupLRTBi  c                 l   ^ [         R                  U T5        [        U R                  U4S jS9U l        g )Nc                    > STR                   -
  U R                  -  STR                   -   U R                  U R                  -   -  -
  $ r   )r2   rr   rs   ru   r   rA   s    r   re  )LTTextGroupLRTB.analyze.<locals>.<lambda>  s?    h111CFF;h111CFF366MBCr   rh  r   rB   r   r  r@   s    `r   rB   LTTextGroupLRTB.analyze  s1    D(+4:: ,C D
 	r   r  NrD   r)   r   r   r  r        r   r  c                       \ rS rSrS rSrg)LTTextGroupTBRLi  c                 l   ^ [         R                  U T5        [        U R                  U4S jS9U l        g )Nc                    > STR                   -   * U R                  U R                  -   -  STR                   -
  U R                  -  -
  $ r   )r2   rr   rt   ru   r  s    r   re  )LTTextGroupTBRL.analyze.<locals>.<lambda>  sA    x2223SVVCFF]C 3 33cff=>r   rh  r  r@   s    `r   rB   LTTextGroupTBRL.analyze  s/    D(+4:: ,> ?
 	r   r  NrD   r)   r   r   r  r    r  r   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	LTLayoutContaineri  c                 <    [         R                  X5        S U l        g r   )r	  r   groupsr[   s     r   r   LTLayoutContainer.__init__  s    T(r   c              #     #    S nS nU GH  nUGb  UR                  U5      =(       a    UR                  U5      =(       a    [        UR                  UR                  5      UR                  -  UR                  U5      :  =(       a?    UR                  U5      [        UR                  UR                  5      UR                  -  :  nUR                  =(       a    UR                  U5      =(       a    UR                  U5      =(       a    [        UR                  UR                  5      UR                  -  UR                  U5      :  =(       a?    UR                  U5      [        UR                  UR                  5      UR                  -  :  nU(       a  [        U[        5      (       d  U(       a'  [        U[         5      (       a  UR#                  U5        OUb  Uv   S nOU(       a?  U(       d8  [!        UR$                  5      nUR#                  U5        UR#                  U5        OrU(       a?  U(       d8  [        UR$                  5      nUR#                  U5        UR#                  U5        O,[        UR$                  5      nUR#                  U5        Uv   S nUnGM     Uc&  [        UR$                  5      nUR#                  U5        Uv   g 7fr   )r  r   r   rw   r.   r   r   r%  rv   r/   r3   r   r   r   r   r@  rR  r  r1   )r   rA   r  obj0lineobj1halignvaligns           r   group_objectsLTLayoutContainer.group_objects  sA    D ,,T2 O**40Ot{{DKK88;P;PP==./O  >>$/tzz4::69M9MMN	 * #22 Q,,T2Q**40Q tzz4::69N9NN==./Q
  >>$/t{{DKK88;O;OOP  
41E F F
41C D DHHTN%JDf1(2F2FG3H4H4HI3H4H4HI"
#D{ | <'(<(<=DHHTN
s   KKc              #   |  #    [        U R                  5      nUR                  U5        0 nU H  nUR                  X1R                  5      nXV;  a  M%  / nU H;  nUR                  U5        X;   d  M  UR                  UR                  U5      5        M=     [        U[        5      (       a  [        5       n	O
[        5       n	[        U5       H  n
U	R                  U
5        XU
'   M     M     [        5       nU HA  nXT;  a  M
  XE   n	X;   a  M  UR                  U	5        U	R                  5       (       a  M=  U	v   MC     g 7fr   )r   r\   r  r=  r0   r  popr   r@  ra  rt  r   r  setr{   )r   rA   linesr;  boxesr  	neighborsmembersr  boxr   dones               r   group_textlines!LTLayoutContainer.group_textlines8  s
    dii UD++E3G3GHI$hG!t$=NN599T?3 " $ 455)+')G} c
 %  uD (+C{HHSM<<>>	  	s   A+D<1B>D<3	D<c           
        ^ U(       d   eS nU4S jnS n/ n[        [        U5      5       HD  nX'   n[        US-   [        U5      5       H!  n	X)   n
UR                  SU" X5      X45        M#     MF     [        XeS9n[	        U R
                  5      mTR                  U5        U(       Ga"  UR                  S5      u  ppUS:X  a#  U" X5      (       a  UR                  SXU
45        ME  [        U[        [        45      (       d  [        U
[        [        45      (       a  [        X/5      nO[        X/5      nTR                  U5        TR                  U
5        U VVVV
s/ s H  u  ppUT;   d  M  U
T;   d  M  XX4PM     nnnnn
T H  nUR                  SU" X5      X45        M     [        XeS9nTR                  U5        U(       a  GM"  [        T5      S:X  d   e[        T5      $ s  sn
nnnf )Nc                 |   [        U R                  UR                  5      n[        U R                  UR                  5      n[        U R                  UR                  5      n[        U R
                  UR
                  5      nXB-
  XS-
  -  U R                  U R                  -  -
  UR                  UR                  -  -
  $ )aX  A distance function between two TextBoxes.

Consider the bounding rectangle for obj1 and obj2.
Return its area less the areas of obj1 and obj2,
shown as 'www' below. This value may be negative.
        +------+..........+ (x1, y1)
        | obj1 |wwwwwwwwww:
        +------+www+------+
        :wwwwwwwwww| obj2 |
(x0, y0) +..........+------+
)r   rr   rs   r%  rt   ru   rv   rw   )r  obj2rr   rs   rt   ru   s         r   dist/LTLayoutContainer.group_textboxes.<locals>.distZ  s     TWWdgg&BTWWdgg&BTWWdgg&BTWWdgg&BURUOdjj&<<tzz$++?UUVr   c                 `  > [        U R                  UR                  5      n[        U R                  UR                  5      n[        U R                  UR                  5      n[        U R
                  UR
                  5      n[        TR                  X#XE45      5      nUR                  X45      $ )zECheck if there's any other object between obj1 and obj2.
            )	r   rr   rs   r%  rt   ru   r  rK  
difference)r  r  rr   rs   rt   ru   r  r;  s          r   isany0LTLayoutContainer.group_textboxes.<locals>.isanyl  s~     TWWdgg&BTWWdgg&BTWWdgg&BTWWdgg&Buzz22"234D??D<00r   c                     U u  p  nX4$ r   r)   )tr   r   rd   s       r   key_obj2LTLayoutContainer.group_textboxes.<locals>.key_objv  s    IQ15Lr   r   r#   rh  )ranger  r  r   r   r\   r  r  r   rt  r  r  remover  r   )r   rA   r  r  r  r  distsir  jr  r   r   groupotherr;  s                  @r   group_textboxes!LTLayoutContainer.group_textboxesW  s   u	W$	1	
 s5z"A8D1Q3E
+xad!14>? , # e)dii U!&1Q4Av%++a$/04"3_!EFF4"3_!EFF'5'5LLLL=B =U/1t%- &,0EM &q4oUE =ae!3UBC %-EIIe# e$ 5zQE{=s   !G*
2G*
:G*
c                 v   [        S U 5      u  p#U H  nUR                  U5        M     U(       d  g [        U R                  X5      5      n[        S U5      u  peU H  nUR                  U5        M     [        U R	                  X5      5      nSUR
                  ::  a}  UR
                  S::  am  U(       af  U R                  X5      U l        [        5       nU R                   H%  n	U	R                  U5        UR                  U	5        M'     UR                  S S9  OS n
UR                  U
S9  Xs-   U-   U l        g )Nc                 "    [        U [        5      $ r   )r   r   rd  s    r   re  +LTLayoutContainer.analyze.<locals>.<lambda>  s    :c63Jr   c                 "    U R                  5       $ r   )r{   rd  s    r   re  r    s
    #,,.r   r\  r   c                     U R                   $ r   r   r  s    r   re  r    s    399r   rh  c                     [        U [        5      (       a  SU R                  * U R                  4$ SU R                  U R                  4$ )Nr#   r   )r   rt  rt   rs   rr   r  s    r   getkey)LTLayoutContainer.analyze.<locals>.getkey  s<    c#455w//svvsvv..r   )r   rB   r   r  r  r2   r  r  r   r   sortr  )r   rA   textobjs	otherobjsr   	textlinesempties	textboxesassignerr  r  s              r   rB   LTLayoutContainer.analyze  s    !''JD QCKK! ++H?@	%&@)LCKK! --hBC	$$$)<)<)By..xCDK$Hh'U# % NN4N5/
 NNvN&*W4
r   )r  r  N)
r$   r%   r&   r'   r   r  r  r  rB   r(   r)   r   r   r  r    s    EP>AFr   r  c                   &    \ rS rSrS rS rS rSrg)LTFigurei  c           	         ^ Xl         TU l        Uu  pEpg[        U4S jXE4XF-   U4XEU-   4XF-   XW-   44 5       5      n[        R	                  X5        g )Nc              3   B   >#    U  H  u  p[        TX45      v   M     g 7fr   r   )r   r   qr   s      r   r   $LTFigure.__init__.<locals>.<genexpr>  s'      Q'OVa )!88'Os   )r   r   r   r  r   )r   r   r\   r   r    ywhs      `    r   r   LTFigure.__init__  sb    	q Q)*a1c(QS!#J'OQ Q""4.r   c           
          SU R                   R                  < SU R                  < S[        U R                  5      < S[        U R                  5      < S3	$ )NrK   r   r   r  rM   )rN   r$   r   r	   r\   r
   r   r7   s    r   r8   LTFigure.__repr__  s7    (($))$))$j&=? 	@r   c                 R    UR                   (       d  g [        R                  X5        g r   )r4   r  rB   r@   s     r   rB   LTFigure.analyze  s    !!!!$1r   )r   r   N)r$   r%   r&   r'   r   r8   rB   r(   r)   r   r   r  r    s    @
r   r  c                   $    \ rS rSrSS jrS rSrg)LTPagei  c                 F    [         R                  X5        Xl        X0l        g r   )r  r   pageidrotate)r   r  r\   r  s       r   r   LTPage.__init__  s    ""4.r   c           	          SU R                   R                  < SU R                  < S[        U R                  5      < SU R
                  < S3	$ )NrK   r   r   z rotate=rM   )rN   r$   r  r	   r\   r  r7   s    r   r8   LTPage.__repr__  s1    (($++$))$dkk3 	4r   )r  r  Nr"   r;   r)   r   r   r  r    s    4r   r  N)$utilsr   r   r   r   r   r   r	   r
   r   r   r+   r=   rG   rW   r   r   r   r   r   r   r	  r!  r(  r1  r@  rR  r   ra  rt  r   r  r  r  r  r  r)   r   r   <module>r     sf           "
 $X X4 " "E& ET	;k 	;W W 5k 5.VV 8[& 8z+ <
K 
R+V R" "*0: 040 0>
D 
D) 	 / k k N Nf  24 4r   