
    OgP%                       d dl mZ d dlmZmZ d dlmZ d dlZd dl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 d d	l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 ddl m!Z! dgZ"	 d	 	 	 	 	 	 	 	 	 	 	 ddZ# G d de      Z$ G d dejJ                        Z& G d de&      Z' G d de&      Z(	 	 	 	 	 	 	 	 	 	 ddZ) G d de      Z*y)     )annotations)IterableOptional)ProtocolN)colors)MText)const)Matrix44Vec3AnyVec)AbstractMTextRenderer)fonts)text_layout)MTextContext   )
PropertiesRenderContext
rgb_to_hex)Colorcomplex_mtext_rendererc                t    | |f||f||f| |f| |fg}|t        j                  |      S |j                  |      S N)r   generatetransform_vertices)leftbottomrighttopmcornerss         g/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/addons/drawing/mtext_complex.pycorner_verticesr"      sU     
s			v	sG 	y}}W%%##G,,    c                  D    e Zd ZddZ	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 	 	 ddZy)DrawInterfacec                     y r    )selfstartend
propertiess       r!   	draw_linezDrawInterface.draw_line,   s    r#   c                     y r   r'   )r(   pointsr+   s      r!   draw_filled_polygonz!DrawInterface.draw_filled_polygon/   s     	r#   c                     y r   r'   )r(   text	transformr+   
cap_heights        r!   	draw_textzDrawInterface.draw_text4   s     	r#   N)r)   r   r*   r   r+   r   returnNone)r.   zIterable[AnyVec]r+   r   r5   r6   )
r1   strr2   r
   r+   r   r3   floatr5   r6   )__name__
__module____qualname__r,   r/   r4   r'   r#   r!   r%   r%   +   sY    &4>	
  	
  
r#   r%   c                  `    e Zd ZddZ	 d	 	 	 	 	 	 	 	 	 	 	 ddZd	dZ	 d	 	 	 	 	 	 	 	 	 	 	 d
dZy)FrameRendererc                     || _         || _        y r   )r+   backend)r(   r+   r?   s      r!   __init__zFrameRenderer.__init__?   s    $r#   Nc                R    | j                  t        t        |||||                   y r   )_render_outlinelistr"   )r(   r   r   r   r   r   s         r!   renderzFrameRenderer.renderC   s$     	T/$sA"NOPr#   c                    | j                   }| j                  }|j                  d      }|D ]  }|j                  |||       |} y )Nr   )r?   r+   popr,   )r(   verticesr?   r+   prevvertexs         r!   rB   zFrameRenderer._render_outlineM   sG    ,,__
||A 	FdFJ7D	r#   c                    ||f||fg}||j                  |      \  }}nt        j                  |      \  }}| j                  j	                  ||| j
                         y r   )r   r   r   r?   r,   r+   )	r(   x1y1x2y2r   r.   p1p2s	            r!   linezFrameRenderer.lineU   s[     r(RH%=))&1FB]]6*FBr2t7r#   )r+   r   r?   r%   r   r   r8   r   r8   r   r8   r   r8   r   r
   r5   r6   )rG   z
list[Vec3]r5   r6   )rK   r8   rL   r8   rM   r8   rN   r8   r   r
   r5   r6   )r9   r:   r;   r@   rD   rB   rQ   r'   r#   r!   r=   r=   >   s     QQ Q 	Q
 Q Q 
Q IM88"8(-8388=E8	8r#   r=   c                  \     e Zd Z	 	 	 d	 	 	 	 	 	 	 	 	 d fdZ	 d	 	 	 	 	 	 	 	 	 	 	 ddZ xZS )ColumnBackgroundRendererc                P    t         |   ||       || _        || _        || _        y r   )superr@   bg_propertiesoffsethas_text_frame)r(   r+   r?   rW   rX   
text_frame	__class__s         r!   r@   z!ColumnBackgroundRenderer.__init__a   s+     	W-*(r#   c           	        | j                   }t        t        ||z
  ||z
  ||z   ||z   |            }| j                  &| j                  j                  || j                         | j                  r| j                  |       y y r   )rX   rC   r"   rW   r?   r/   rY   rB   )r(   r   r   r   r   r   rX   rG   s           r!   rD   zColumnBackgroundRenderer.rendern   s~     vvfa

 )LL,,Xt7I7IJ  * r#   )Nr   F)
r+   r   r?   r%   rW   zOptional[Properties]rX   r8   rZ   boolr   rR   )r9   r:   r;   r@   rD   __classcell__r[   s   @r!   rT   rT   `   s    
 /3 )) ) ,	)
 ) )& ++ + 	+
 + + 
+r#   rT   c                  Z     e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 	 d fdZ	 d	 	 	 	 	 	 	 	 	 ddZ xZS )TextRendererzText content renderer.c                ^    t         |   ||       || _        || _        || _        || _        y r   )rV   r@   r1   r3   width_factoroblique)r(   r1   r3   rc   rd   r+   r?   r[   s          r!   r@   zTextRenderer.__init__   s1     	W-	$(r#   c                   d}d}t        j                  | j                  dd      s| j                  }t        | j                        dkD  r2t        j
                  t        j                  | j                              }t        |ddd|ddddddd||ddf      }|||z  }| j                  j                  | j                  || j                  | j                         y)zCreate/render the text contentg      ?g        gư>)rel_tolgMbP?N)mathiscloserc   absrd   tanradiansr
   r?   r4   r1   r+   r3   )	r(   r   r   r   r   r   sxtxts	            r!   rD   zTextRenderer.render   s     ||D--sDA""Bt||t#$,,t||45BS#S#c3&#s	
  =FAtyy!T__dooNr#   )r1   r7   r3   r8   rc   r8   rd   r8   r+   r   r?   r%   r   )
r   r8   r   r8   r   r8   r   r8   r   r
   )r9   r:   r;   __doc__r@   rD   r^   r_   s   @r!   ra   ra      s       	
   * OO O 	O
 O Or#   ra   c                   t        | ||      }t        j                  |j                  j                        }|j                  |      }|j                  |       |j                  |j                         j                         y )N)align)
ComplexMTextRenderertlLayoutAlignmentdxfattachment_pointlayout_engineplacerD   ucsmatrix)ctxr?   mtextr+   cmrrq   rw   s          r!   r   r      sg     sGZ
8Cuyy99:E%%e,Me$++,r#   c                       e Zd Z	 	 	 	 	 	 d
 fdZddZddZddZddZedd       Z	ddZ
	 	 	 	 	 	 ddZ	 	 	 	 	 	 dd	Z xZS )rr   c                L    t         |           || _        || _        || _        y r   )rV   r@   _render_ctx_backend_properties)r(   r{   r?   r+   r[   s       r!   r@   zComplexMTextRenderer.__init__   s'     	%r#   c                ~   t        j                  | j                  |      j                  |      |j                  t        j
                  |j                        | j                  |      t        ||j                  |j                  |j                  | j                  | j                  |      | j                              S )N)widthheightvalignstrokerenderer)rs   Textget_font
text_widthr3   CellAlignmentrq   
get_strokera   rc   rd   new_text_propertiesr   r   )r(   r1   r{   s      r!   wordzComplexMTextRenderer.word   s    ww--$//5>>##CII.??3'!  (()9)93?
 	
r#   c           	        |\  }}}|rft        j                  | j                  ||      | j                  ||      | j                  |      t	        | j
                  | j                              S | j                  ||      S )N)r   r   stackingr   )rs   Fractionr   get_stackingr=   r   r   )r(   datar{   uprlwrtype_s         r!   fractionzComplexMTextRenderer.fraction   sr    S%;;IIc3'yyc***51&t'7'7G  99S#&&r#   c                .    | j                   j                  S r   )r   font)r(   r|   s     r!   get_font_facez"ComplexMTextRenderer.get_font_face   s    $$$r#   c                   |j                   }|j                  dd      }d }d }d }d}d}|r|j                  |j                  dd      dz
  z  }|t        j                  z  rH|j                  d      r|j                  }|j                  d      rd }|j                  }|d	z  d	k(  rd }d }|t        j                  z  rd
}| j                  ||      }t        | j                  | j                  |||      S )Nbg_fillr   Fbox_fill_scaleg      ?r   bg_fill_colorbg_fill_true_color   T)rX   rZ   )ru   getchar_heightr	   MTEXT_BG_COLORhasattrr   r   MTEXT_TEXT_FRAMEnew_bg_propertiesrT   r   r   )	r(   r|   ru   r   bg_acibg_true_colorrW   rY   rX   s	            r!   make_bg_rendererz%ComplexMTextRenderer.make_bg_renderer   s    ii'')Q'.2 __0@#(F(JKF---;;/ ..F;;34!F$'$:$:MaKA% "F$(M///!% 226=IM'MM%
 	
r#   c                    | j                   S r   )r   )r(   s    r!   r?   zComplexMTextRenderer.backend  s    }}r#   c                b    | j                   j                  || j                  j                        S r   )r   resolve_aci_colorr   layer)r(   acis     r!   r   z&ComplexMTextRenderer.resolve_aci_color  s'    11#t7G7G7M7MNNr#   c                    t        j                   |      }|j                  !| j                  |j                        |_        nt        |j                        |_        |j                  |_        |S r   )copyrgbr   r   colorr   	font_facer   )r(   r+   r{   new_propertiess       r!   r   z(ComplexMTextRenderer.new_text_properties  sU     :.77?#'#9#9#''#BN #-cgg#6N !mmr#   c                   t        j                   | j                        }| j                  j                  j                  |_        ||| j                  |      |_        |S t        t        j                  |            |_        |S r   )
r   r   r   current_layout_propertiesbackground_colorr   r   r   r   int2rgb)r(   r   
true_colorr   s       r!   r   z&ComplexMTextRenderer.new_bg_properties)  s{     4#3#3466GG 	 '+'='=c'B$  $.fnnZ.H#IN r#   )r{   r   r?   r%   r+   r   )r1   r7   r{   r   r5   tl.ContentCell)r   ztuple[str, str, str]r{   r   r5   r   )r|   r   r5   zfonts.FontFace)r|   r   r5   ztl.ContentRenderer)r5   r%   )r   intr5   r   )r+   r   r{   r   r5   r   )r   Optional[int]r   r   r5   r   )r9   r:   r;   r@   r   r   r   r   propertyr?   r   r   r   r^   r_   s   @r!   rr   rr      s    	&	& 	& 		&
 '%&
T  O	$	+7			 .;	r#   rr   r   )r   r8   r   r8   r   r8   r   r8   r   r
   r5   zIterable[Vec3])
r{   r   r?   r%   r|   r   r+   r   r5   r6   )+
__future__r   typingr   r   typing_extensionsr   r   rg   ezdxfr   ezdxf.entitiesr   ezdxf.lldxfr	   
ezdxf.mathr
   r   r   $ezdxf.render.abstract_mtext_rendererr   ezdxf.fontsr   ezdxf.toolsr   rs   ezdxf.tools.textr   r+   r   r   r   
type_hintsr   __all__r"   r%   ContentRendererr=   rT   ra   r   rr   r'   r#   r!   <module>r      s   # % &       - - F  ) ) = = #
$ -
-- - 
	-
 - -(H &8B&& 8D!+} !+H+O= +O\
-	
-
- 
- 	
-
 

-w0 wr#   