
    hP%                       S SK Jr  S SKJrJr  S SKJr  S SKrS SKrS SK	J
r
  S SKJr  S SKJr  S SKJrJr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JrJr  SSK J!r!  S/r" S           SS jjr# " S S\5      r$ " S S\RJ                  5      r& " S S\&5      r' " S S\&5      r(          SS jr) " S S\5      r*g)     )annotations)IterableOptional)ProtocolN)colors)MText)const)Matrix44Vec3AnyVec)AbstractMTextRenderer)fonts)text_layout)MTextContext   )
PropertiesRenderContext
rgb_to_hex)Colorcomplex_mtext_rendererc                n    X4X#4X!4X4X4/nUc  [         R                  " U5      $ UR                  U5      $ N)r   generatetransform_vertices)leftbottomrighttopmcornerss         T/var/www/html/env/lib/python3.13/site-packages/ezdxf/addons/drawing/mtext_complex.pycorner_verticesr"      sK     
				G 	y}}W%%##G,,    c                  R    \ rS rSrSS jr      SS jr          S	S jrSrg)
DrawInterface+   c                    g r    )selfstartend
propertiess       r!   	draw_lineDrawInterface.draw_line,   s    r#   c                    g r   r(   )r)   pointsr,   s      r!   draw_filled_polygon!DrawInterface.draw_filled_polygon/   s     	r#   c                    g r   r(   )r)   text	transformr,   
cap_heights        r!   	draw_textDrawInterface.draw_text4   s     	r#   r(   N)r*   r   r+   r   r,   r   returnNone)r0   zIterable[AnyVec]r,   r   r9   r:   )
r4   strr5   r
   r,   r   r6   floatr9   r:   )__name__
__module____qualname____firstlineno__r-   r1   r7   __static_attributes__r(   r#   r!   r%   r%   +   sY    &4>	
  	
  
r#   r%   c                  t    \ rS rSrSS jr S	           S
S jjrSS jr S	           SS jjrSrg)FrameRenderer>   c                    Xl         X l        g r   )r,   backend)r)   r,   rF   s      r!   __init__FrameRenderer.__init__?   s    $r#   Nc                N    U R                  [        [        XX4U5      5      5        g r   )_render_outlinelistr"   )r)   r   r   r   r   r   s         r!   renderFrameRenderer.renderC   s      	T/$A"NOPr#   c                    U R                   nU R                  nUR                  S5      nU H  nUR                  XEU5        UnM     g )Nr   )rF   r,   popr-   )r)   verticesrF   r,   prevvertexs         r!   rJ   FrameRenderer._render_outlineM   s@    ,,__
||AFdJ7D r#   c                    X4X44/nUb  UR                  U5      u  pxO[        R                  " U5      u  pxU R                  R	                  XxU R
                  5        g r   )r   r   r   rF   r-   r,   )	r)   x1y1x2y2r   r0   p1p2s	            r!   lineFrameRenderer.lineU   sS     (RH%=))&1FB]]6*FBrt7r#   )rF   r,   )r,   r   rF   r%   r   r   r<   r   r<   r   r<   r   r<   r   r
   r9   r:   )rP   z
list[Vec3]r9   r:   )rU   r<   rV   r<   rW   r<   rX   r<   r   r
   r9   r:   )	r=   r>   r?   r@   rG   rL   rJ   r[   rA   r(   r#   r!   rC   rC   >   s     QQ Q 	Q
 Q Q 
Q IM88"8(-8388=E8	8 8r#   rC   c                  n   ^  \ rS rSr   S         SU 4S jjjr S           SS jjrSrU =r$ )	ColumnBackgroundRenderer`   c                H   > [         TU ]  X5        X0l        X@l        XPl        g r   )superrG   bg_propertiesoffsethas_text_frame)r)   r,   rF   rc   rd   
text_frame	__class__s         r!   rG   !ColumnBackgroundRenderer.__init__a   s#     	-*(r#   c           	        U R                   n[        [        X-
  X&-
  X6-   XF-   U5      5      nU R                  b%  U R                  R                  XpR                  5        U R                  (       a  U R                  U5        g g r   )rd   rK   r"   rc   rF   r1   re   rJ   )r)   r   r   r   r   r   rd   rP   s           r!   rL   ColumnBackgroundRenderer.rendern   st     va

 )LL,,X7I7IJ  * r#   )rc   re   rd   )Nr   F)
r,   r   rF   r%   rc   zOptional[Properties]rd   r<   rf   boolr   r]   )r=   r>   r?   r@   rG   rL   rA   __classcell__rg   s   @r!   r_   r_   `   s    
 /3 )) ) ,	)
 ) ) )& ++ + 	+
 + + 
+ +r#   r_   c                  j   ^  \ rS rSrSr            SU 4S jjr S         SS jjrSrU =r$ )	TextRenderer   zText content renderer.c                T   > [         TU ]  XV5        Xl        X l        X0l        X@l        g r   )rb   rG   r4   r6   width_factoroblique)r)   r4   r6   rr   rs   r,   rF   rg   s          r!   rG   TextRenderer.__init__   s'     	-	$(r#   c                   SnSn[         R                  " U R                  SSS9(       d  U R                  n[        U R                  5      S:  a4  [         R
                  " [         R                  " U R                  5      5      n[        USSSUSSSSSSSXSS45      nUb  X-  nU R                  R                  U R                  XR                  U R                  5        g)zCreate/render the text contentg      ?g        gư>)rel_tolgMbP?N)mathiscloserr   absrs   tanradiansr
   rF   r7   r4   r,   r6   )	r)   r   r   r   r   r   sxtxts	            r!   rL   TextRenderer.render   s     ||D--sDA""Bt||t#$,,t||45BS#S#c3#s	
  =FAtyy!__dooNr#   )r6   rs   r4   rr   )r4   r;   r6   r<   rr   r<   rs   r<   r,   r   rF   r%   r   )
r   r<   r   r<   r   r<   r   r<   r   r
   )	r=   r>   r?   r@   __doc__rG   rL   rA   rl   rm   s   @r!   ro   ro      s       	
   * OO O 	O
 O O Or#   ro   c                   [        XU5      n[        R                  " UR                  R                  5      nUR                  U5      nUR                  US9  UR                  UR                  5       R                  5        g )N)align)
ComplexMTextRenderertlLayoutAlignmentdxfattachment_pointlayout_engineplacerL   ucsmatrix)ctxrF   mtextr,   cmrr   r   s          r!   r   r      se     sZ
8Cuyy99:E%%e,Me$++,r#   c                     ^  \ rS rSr      SU 4S jjrSS jrSS jrSS jrSS jr\	SS j5       r
SS jr      SS	 jr      SS
 jrSrU =r$ )r      c                F   > [         TU ]  5         Xl        X l        X0l        g r   )rb   rG   _render_ctx_backend_properties)r)   r   rF   r,   rg   s       r!   rG   ComplexMTextRenderer.__init__   s!     	%r#   c                |   [         R                  " U R                  U5      R                  U5      UR                  [         R
                  " UR                  5      U R                  U5      [        UUR                  UR                  UR                  U R                  U R                  U5      U R                  5      S9$ )N)widthheightvalignstrokerenderer)r   Textget_font
text_widthr6   CellAlignmentr   
get_strokero   rr   rs   new_text_propertiesr   r   )r)   r4   r   s      r!   wordComplexMTextRenderer.word   s    ww--$//5>>##CII.??3'!  (()9)93?
 	
r#   c           	         Uu  p4nU(       ab  [         R                  " U R                  X25      U R                  XB5      U R                  U5      [	        U R
                  U R                  5      S9$ U R                  X25      $ )N)r   r   stackingr   )r   Fractionr   get_stackingrC   r   r   )r)   datar   uprlwrtype_s         r!   fractionComplexMTextRenderer.fraction   sj    %;;IIc'yy***51&t'7'7G  99S&&r#   c                .    U R                   R                  $ r   )r   font)r)   r   s     r!   get_font_face"ComplexMTextRenderer.get_font_face   s    $$$r#   c                   UR                   nUR                  SS5      nS nS nS nSnSnU(       a  UR                  UR                  SS5      S-
  -  nU[        R                  -  (       aS  UR                  S5      (       a  UR                  nUR                  S5      (       a  S nUR                  nUS	-  S	:X  a  S nS nU[        R                  -  (       a  S
nU R                  XE5      n[        U R                  U R                  UUUS9$ )Nbg_fillr   Fbox_fill_scaleg      ?r   bg_fill_colorbg_fill_true_color   T)rd   rf   )r   getchar_heightr	   MTEXT_BG_COLORhasattrr   r   MTEXT_TEXT_FRAMEnew_bg_propertiesr_   r   r   )	r)   r   r   r   bg_acibg_true_colorrc   re   rd   s	            r!   make_bg_renderer%ComplexMTextRenderer.make_bg_renderer   s   ii'')Q'.2 __0@#(F(JKF---;;// ..F;;344!F$'$:$:MaKA% "F$(M///!% 226IM'MM%
 	
r#   c                    U R                   $ r   )r   )r)   s    r!   rF   ComplexMTextRenderer.backend  s    }}r#   c                `    U R                   R                  XR                  R                  5      $ r   )r   resolve_aci_colorr   layer)r)   acis     r!   r   &ComplexMTextRenderer.resolve_aci_color  s%    11#7G7G7M7MNNr#   c                    [         R                   " U5      nUR                  c!  U R                  UR                  5      Ul        O[        UR                  5      Ul        UR                  Ul        U$ r   )copyrgbr   r   colorr   	font_facer   )r)   r,   r   new_propertiess       r!   r   (ComplexMTextRenderer.new_text_properties  sU     :.77?#'#9#9#''#BN #-cgg#6N !mmr#   c                   [         R                   " U R                  5      nU R                  R                  R                  Ul        Uc  Ub  U R                  U5      Ul        U$ [        [        R                  " U5      5      Ul        U$ r   )
r   r   r   current_layout_propertiesbackground_colorr   r   r   r   int2rgb)r)   r   
true_colorr   s       r!   r   &ComplexMTextRenderer.new_bg_properties)  s{     4#3#3466GG 	 '+'='=c'B$  $.fnnZ.H#IN r#   )r   r   r   )r   r   rF   r%   r,   r   )r4   r;   r   r   r9   tl.ContentCell)r   ztuple[str, str, str]r   r   r9   r   )r   r   r9   zfonts.FontFace)r   r   r9   ztl.ContentRenderer)r9   r%   )r   intr9   r   )r,   r   r   r   r9   r   )r   Optional[int]r   r   r9   r   )r=   r>   r?   r@   rG   r   r   r   r   propertyrF   r   r   r   rA   rl   rm   s   @r!   r   r      s    	&	& 	& 		&
 '%&
T  O	$	+7			 .;	 r#   r   r   )r   r<   r   r<   r   r<   r   r<   r   r
   r9   zIterable[Vec3])
r   r   rF   r%   r   r   r,   r   r9   r:   )+
__future__r   typingr   r   typing_extensionsr   r   rw   ezdxfr   ezdxf.entitiesr   ezdxf.lldxfr	   
ezdxf.mathr
   r   r   $ezdxf.render.abstract_mtext_rendererr   ezdxf.fontsr   ezdxf.toolsr   r   ezdxf.tools.textr   r,   r   r   r   
type_hintsr   __all__r"   r%   ContentRendererrC   r_   ro   r   r   r(   r#   r!   <module>r      s   # % &       - - F  ) ) = = #
$ -
-- - 
	-
 - -(H &8B&& 8D!+} !+H+O= +O\
-	
-
- 
- 	
-
 

-w0 wr#   