
    Og&                       d dl mZ d dlmZmZ d dlZd dlmZ d dlm	Z	 d dl
mZmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZmZmZmZ dgZej6                  ej8                  j6                  ej:                  ej8                  j:                  ej<                  ej8                  j<                  ej>                  ej8                  j>                  ej@                  ej8                  j>                  ejB                  ej8                  j6                  iZ"ejF                  ej8                  j6                  ejH                  ej8                  j6                  ejJ                  ej8                  j6                  ejL                  ej8                  j<                  ejN                  ej8                  j<                  ejP                  ej8                  j<                  ejR                  ej8                  j:                  ejT                  ej8                  j:                  ejV                  ej8                  j:                  i	Z,ejZ                  j\                  ejZ                  j^                  ejZ                  j`                  dZ1ddZ2	 	 	 	 	 	 ddZ3	 	 	 	 	 	 	 	 	 	 ddZ4ddZ5	 	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZ6d Z7ddZ8ddZ9 G d dejt                        Z;y)    )annotations)SequenceOptionalN)const)colors)MTextMTextColumns)MTextParagraphAlignment)fonts)text_layout)MTextParserMTextContext	TokenTypeParagraphPropertiesestimate_mtext_extentsAbstractMTextRenderer)^/#c                    g }d| z  }|}||k  rH|j                  t        j                  |t        j                  j                               ||z  }||k  rH|S )Ng      @)appendtlTabStopTabStopTypeLEFT)
cap_heightwidth	tab_stopsstepposs        i/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/render/abstract_mtext_renderer.pymake_default_tab_stopsr"   8   sZ    ID
C
+C)<)<=>t +     c                `    d| r| d   j                   | j                  fd|D               y )N        c              3  B   K   | ]  }|j                   kD  s|  y wN)r    ).0stoplast_poss     r!   	<genexpr>z+append_default_tab_stops.<locals>.<genexpr>H   s     Kdtxx(7JTKs   )r    extend)r   default_stopsr+   s     @r!   append_default_tab_stopsr/   B   s0     HR=$$KmKKr#   c                   g }|D ]  }t        |t              rLt        |dd        }|d   dk(  rt        j                  j
                  }n@t        j                  j                  }n%t        j                  j                  }t        |      }|| z  }||k  s|j                  t        j                  ||              t        ||       |S )N   r   c)
isinstancestrfloatr   r   CENTERRIGHTr   r   r   r/   )	r   r   r   r.   
_tab_stopsr*   valuekindr    s	            r!   make_tab_stopsr;   K   s     J 5dC $qr(OEAw#~~~,,~~++>>&&D$KEj ;bjjd345 Z7r#   c                R   d}| j                   r|t        j                  j                  z  }| j                  r|t        j                  j
                  z  }| j                  r|t        j                  j                  z  }| j                  r|t        j                  j                  z  }|S )Nr   )
	underliner   Stroke	UNDERLINEstrike_throughSTRIKE_THROUGHoverlineOVERLINEcontinue_strokeCONTINUE)ctxstrokes     r!   
get_strokerH   d   s|    F
}}"))%%%
"))***
||"))$$$
"))$$$Mr#   c                   | r|j                   }t        j                  |j                  t        j
                  j                        }|j                  |z  }|j                  |z  }	||j                  |z  z   }
|xs g }|}|j                  rt        |||j                  |      }t	        j                  ||
||	f||      }|j                  |        |S t	        j                  |j                  |      }|S )N)alignindentline_spacingr   )r   rL   )	paragraphALIGNgetrJ   r   ParagraphAlignmentr   leftrightrK   r   r;   	Paragraphappend_contentEmptyParagraphr   )cellsrF   r   rL   r   r.   prJ   rQ   rR   first_default_stopsr   rM   s                 r!   new_paragraphrZ   q   s     MM		!''2#8#8#=#=>vv
"*$qxx*,,/</B"	;;&z5!++~VILL4'%	
	 	  '
  %%~~L
	 r#   c                 2    t        j                  ddd      S )Nr   )r   	min_width	max_width)r   NonBreakingSpace r#   r!   
super_gluer`      s    Q!qAAr#   c                d    | j                   j                  dd      }|dk  rt        |       \  }}|S )Nr   r%   ư>)dxfrO   r   )mtextr   heights      r!   defined_widthrf      s0    IIMM'3'Et|.u5vLr#   c                    | j                   rt        | j                         }d |d<   |S t        | j                        }|dk  rd gS |g| j                  z  S )Nr&   rb   )heightslistabsdefined_heightcount)columnsrh   rk   s      r!   column_heightsrn      sV    w'//0Nvgmm++r#   c                      e Zd ZddZej
                  dd       Zej
                  dd       Zej
                  dd       Zej
                  dd       Z	ddZ
ddZddZdd	Zdd
ZddZddZddZddZy)r   c                    i | _         y r(   )_font_cache)selfs    r!   __init__zAbstractMTextRenderer.__init__   s
    OQr#   c                     y r(   r_   )rr   testrF   s      r!   wordzAbstractMTextRenderer.word       r#   c                     y r(   r_   )rr   datarF   s      r!   fractionzAbstractMTextRenderer.fraction   rw   r#   c                     y r(   r_   rr   rd   s     r!   get_font_facez#AbstractMTextRenderer.get_font_face   rw   r#   c                     y r(   r_   r|   s     r!   make_bg_rendererz&AbstractMTextRenderer.make_bg_renderer   rw   r#   c                   t               }t        t        j                  |j                  j
                  t        j                  j                              |_	        | j                  |      |_        |j                  j                  |_        |j                  j                  |_        |j                   }|t#        j$                  | |_        |S )N)rJ   )r   r   ATTACHMENT_POINT_TO_ALIGNrO   rc   attachment_pointr   rP   r   rM   r}   	font_facechar_heightr   coloracirgbr   RGB)rr   rd   rF   r   s       r!   make_mtext_contextz(AbstractMTextRenderer.make_mtext_context   s    n++//		**B,A,A,F,F

 **51..))//ii?jj#&CG
r#   c                $   t        j                  |j                        }||j                  |j                  f}| j
                  j                  |      }|:t        j                  ||j                  |j                        }|| j
                  |<   |S r(   )r   find_font_file_namer   r   width_factorrq   rO   	make_font)rr   rF   ttfkeyfonts        r!   get_fontzAbstractMTextRenderer.get_font   sx    ''6CNNC$4$45##C(<??38H8HID$(DS!r#   c                    t        |      S r(   )rH   rr   rF   s     r!   rH   z AbstractMTextRenderer.get_stroke   s    #r#   c                ^    t         j                  |t        j                  j                        S r(   )STACKINGrO   r   StackingLINE)rr   type_s     r!   get_stackingz"AbstractMTextRenderer.get_stacking   s    ||E2;;#3#344r#   c                @    | j                  |      j                         S r(   )r   space_widthr   s     r!   r   z!AbstractMTextRenderer.space_width   s    }}S!--//r#   c                L    t        j                  | j                  |            S Nr   )r   Spacer   r   s     r!   spacezAbstractMTextRenderer.space   s    xxd..s344r#   c                L    t        j                  | j                  |            S r   )r   	Tabulatorr   r   s     r!   	tabulatorzAbstractMTextRenderer.tabulator   s    ||$"2"23"788r#   c                L    t        j                  | j                  |            S r   )r   r^   r   r   s     r!   non_breaking_spacez(AbstractMTextRenderer.non_breaking_space   s    "")9)9#)>??r#   c                  	
 |j                   j                  |j                   j                  	
fd}| j                  |      }t	        |      t              
t        j                        |j                  rJ|j                  }|J t        |      D ]+  }j                  |j                  ||j                  |       - nj                  |       |j                         }| j                  |      	g t!        |	      D ]H  }|j"                  	|j$                  t&        j(                  k(  r |        5|j$                  t&        j*                  k(  r |        j-                          j|j$                  t&        j.                  k(  r!j1                  | j3                  	             |j$                  t&        j4                  k(  r!j1                  | j7                  	             |j$                  t&        j8                  k(  r"j1                  | j;                  	             %|j$                  t&        j<                  k(  rurFt?        d   t        j@                  t        jB                  f      rj1                  tE                      j1                  | jG                  |jH                  	             |j$                  t&        jJ                  k(  s։rFt?        d   t        j@                  t        jB                  f      rj1                  tE                      j1                  | jM                  |jH                  	             K r |        S )Nc                 j    t              } j                  | g       j                          y r(   )rZ   append_paragraphsclear)rM   rV   rF   r.   initial_cap_heightlayoutrL   r   s    r!   append_paragraphz=AbstractMTextRenderer.layout_engine.<locals>.append_paragraph   s:    %"I $$i[1KKMr#   r   )r   re   gutterrenderer)r   r&   )'rc   r   line_spacing_factorr   rf   r"   r   Layouthas_columnsrm   rn   append_columnr   gutter_widthall_columns_raw_contentr   r   rF   typer   NEW_PARAGRAPH
NEW_COLUMNnext_columnSPACEr   r   NBSPr   	TABULATORr   WORDr3   TextFractionr`   rv   ry   STACKrz   )rr   rd   r   bg_rendererrm   re   contenttokenrV   rF   r.   r   r   rL   r   s           @@@@@@@r!   layout_enginez#AbstractMTextRenderer.layout_engine   s}   "YY22yy44
	 
	 ++E2e$./A5I'mmG&&&(1 $$!--!"//(	 %    + 6//1%%e,! #. 	=E))CzzY444 "y333 """$y.TZZ_-y~~-T44S9:y222T^^C01y~~-Zb	BGGR[[3IJLL.TYYuzz378y.Zb	BGGR[[3IJLL.T]]5::s;<-	=0 r#   N)returnNone)ru   r4   rF   r   r   tl.ContentCell)ry   ztuple[str, str, str]rF   r   r   r   )rd   r   r   zfonts.FontFace)rd   r   r   ztl.ContentRenderer)rd   r   r   r   )rF   r   r   zfonts.AbstractFontrF   r   r   int)r   r4   r   ztl.Stacking)rF   r   r   r5   )rF   r   )rd   r   r   z	tl.Layout)__name__
__module____qualname__rs   abcabstractmethodrv   rz   r}   r   r   r   rH   r   r   r   r   r   r   r_   r#   r!   r   r      s    R 	  	  	  	 5059@@r#   )r   r5   r   r5   r   list[tl.TabStop])r   r   r.   Sequence[tl.TabStop]r   r   )
r   r5   r   r5   r   r   r.   r   r   r   r   )r1   r   N)rV   ri   rF   r   r   r5   rL   r5   r   r5   r.   zOptional[Sequence[tl.TabStop]])rd   r   r   r5   )rm   r	   r   zlist[Optional[float]])<
__future__r   typingr   r   r   ezdxf.lldxfr   ezdxfr   ezdxf.entities.mtextr   r	   ezdxf.enumsr
   ezdxf.fontsr   ezdxf.toolsr   r   ezdxf.tools.textr   r   r   r   r   __all__r   rP   r7   r6   	JUSTIFIEDDISTRIBUTEDDEFAULTrN   MTEXT_TOP_LEFTMTEXT_MIDDLE_LEFTMTEXT_BOTTOM_LEFTMTEXT_TOP_CENTERMTEXT_MIDDLE_CENTERMTEXT_BOTTOM_CENTERMTEXT_TOP_RIGHTMTEXT_MIDDLE_RIGHTMTEXT_BOTTOM_RIGHTr   r   OVERr   SLANTEDr   r"   r/   r;   rH   rZ   r`   rf   rn   ABCr   r_   r#   r!   <module>r      s   # % 
   4  )  #
#   ""7"7"<"<!!2#8#8#>#>""B$9$9$@$@%%r'<'<'F'F'')>)>)H)H##R%:%:%?%?	 
"//44	R2277	R2277	B1188	r44;;	r44;;	20066	b3399	b3399
  
								LL0DL	L  (	
 2
" 48	  	
  2@B,~CGG ~r#   