
    hBA                    N   S SK Jr  S SKJrJrJr  S SKJr  S SKr " S S\5      r	 " S S\5      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SrS2S jrS3S jrSrSr Sr!S4S jr"Sr#S r$S!r%S"r&S#r'S$r(S%r)S&r*S'r+S(r,S)r-S5S* jr.S6S+ jr/S7S, jr0S8S- jr1S9S. jr2S:S/ jr3/ S0Qr4/ S1Qr5g);    )annotations)Union
NamedTupleSequence)SelfNc                      \ rS rSr% SrS\S'   S\S'   S\S'   SS jr\SS j5       rSS	 jr	\SS
 j5       r
\SS j5       rSrg)RGB	   zNamed tuple representing an RGB color value.

Attributes:
    r: red channel in range [0, 255]
    g: green channel in range [0, 255]
    b: blue channel in range [0, 255]
intrgbc                Z    U R                   S-  U R                  S-  U R                  S-  4$ z=Returns the color value as a tuple of floats in range [0, 1].   r   r   r   selfs    >/var/www/html/env/lib/python3.13/site-packages/ezdxf/colors.py	to_floatsRGB.to_floats   s'    vv|TVVc\466C<77    c           	         [        [        S[        US   S-  5      5      S5      n[        [        S[        US   S-  5      5      S5      n[        [        S[        US   S-  5      5      S5      nU " X#U5      $ )z=Returns an :class:`RGB` instance from floats in range [0, 1].r   r         )maxminround)clsrgbr   r   r   s        r   from_floatsRGB.from_floats   sp     Cs1v|,-q1Cs1v|,-q1Cs1v|,-q11|r   c                V    SU R                   S U R                  S U R                  S 3$ )z0Returns the color value as hex string "#RRGGBB".#02xr   r   s    r   to_hex
RGB.to_hex"   s)    466#,tvvcl466#,77r   c                    UR                  S5      n[        USS S5      n[        USS S5      n[        USS S5      nU " X4U5      $ )zReturns an :class:`RGB` instance from a hex color string, the `color` string
is a hex string "RRGGBB" with an optional leading "#", an appended alpha
channel is ignore.
r$   r   r            )lstripr   )r   color
hex_stringr   r   r   s         r   from_hexRGB.from_hex&   sT     \\#&

1Q$
1Q$
1Q$1|r   c                    [        U 5      $ zUReturns perceived luminance for an RGB color in range [0.0, 1.0]
from dark to light.
	luminancer   s    r   r4   RGB.luminance2       
 r    N)returntuple[float, float, float])r    r9   r8   r   r8   strr-   r;   r8   r   r8   float)__name__
__module____qualname____firstlineno____doc____annotations__r   classmethodr!   r&   r/   propertyr4   __static_attributes__r7   r   r   r	   r	   	   s^     F
F
F8  8 	 	  r   r	   c                      \ rS rSr% SrS\S'   S\S'   S\S'   SrS\S'   SS	 jr\SS
 j5       r	SS jr
\SS j5       r\SS j5       rSrg)RGBA:   a*  Named tuple representing an RGBA color value. 
The default alpha channel is 255 (opaque).

Attributes:
    r: red channel in range [0, 255]
    g: green channel in range [0, 255]
    b: blue channel in range [0, 255]
    a: alpha channel in range [0, 255], where 0 is transparent and 255 is opaque
r   r   r   r   r   ac                v    U R                   S-  U R                  S-  U R                  S-  U R                  S-  4$ r   r   r   r   rK   r   s    r   r   RGBA.to_floatsJ   s1    vv|TVVc\466C<#EEr   c           	     b   [        [        S[        US   S-  5      5      S5      n[        [        S[        US   S-  5      5      S5      n[        [        S[        US   S-  5      5      S5      n [        [        S[        US   S-  5      5      S5      nU " X#XE5      $ ! [         a    Sn Nf = f)zReturns an :class:`RGBA` instance from floats in range [0, 1].

The alpha channel is optional. 
The default alpha channel is 255 (opaque).
r   r   r   r      )r   r   r   
IndexError)r   valuesr   r   r   rK   s         r   r!   RGBA.from_floatsN   s     Cvay3/0!4Cvay3/0!4Cvay3/0!4	CU6!9s?34a8A 1  	A	s   1%B B.-B.c                p    SU R                   S U R                  S U R                  S U R                  S 3$ )z2Returns the color value as hex string "#RRGGBBAA".r$   r%   rM   r   s    r   r&   RGBA.to_hex^   s3    466#,tvvcl466#,tvvclCCr   c                    UR                  S5      n[        USS S5      n[        USS S5      n[        USS S5      nSn[        U5      S:  a  [        USS S5      nU " X4XV5      $ )	zReturns an :class:`RGBA` instance from a hex color string, the `color` string
is a hex string "RRGGBBAA" with an optional leading "#". 
The alpha channel is optional. 
The default alpha channel is 255 (opaque).
r$   r   r   r)   r*   r+   r      )r,   r   len)r   r-   r.   r   r   r   rK   s          r   r/   RGBA.from_hexb   sw     \\#&

1Q$
1Q$
1Q$z?QJqOR(A1r   c                    [        U 5      $ r2   r3   r   s    r   r4   RGBA.luminancer   r6   r   r7   N)r8   z!tuple[float, float, float, float])rR   Sequence[float]r8   r   r:   r<   r=   )r?   r@   rA   rB   rC   rD   rK   r   rE   r!   r&   r/   rF   r4   rG   r7   r   r   rI   rI   :   si     F
F
FAsLF  D    r   rI      i  r   r   rP   r*      r+      rW   r
                  c                ^    [        U 5      nUS   [        :X  a  [        [        US   5      4$ U$ )zqDecode :term:`raw-color` value as tuple(type, Union[aci, (r, g, b)]), the
true color value is a (r, g, b) tuple.
r   r   )decode_raw_color_intCOLOR_TYPE_RGBint2rgb)valuedatas     r   decode_raw_colorrk      s3      &DAw. wtAw///Kr   c                    U S-	  S-  nU[         :X  a  [         [        4$ U[        :X  a  [        [        4$ U[        :X  a  [        U S-  4$ U[
        :X  a  [
        U S-  4$ U[        :X  a  [        S4$ [        SUS 35      e)z`Decode :term:`raw-color` value as tuple(type, int), the true color value
is a 24-bit int value.
   r    r   zUnknown color type: 0xr%   )COLOR_TYPE_BY_BLOCKBYBLOCKCOLOR_TYPE_BY_LAYERBYLAYERCOLOR_TYPE_ACIrg   COLOR_TYPE_WINDOW_BG
ValueError)ri   flagss     r   rf   rf      s     b[D E##"G++	%	%"G++	.	 ut|++	.	 ux///	&	&#Q&&1%=>>r   i   i   i   c                    [        U [        5      (       aO  U [        :X  a  [        $ U [        :X  a  [
        $ SU s=:  a  S:  a  O  O[        S-  * S-  * U -  $ [        SU  35      e[        S-  [        U 5      -   * S-  * $ )z[Encode :term:`true-color` value or :ref:`ACI` color value into a :term:
`raw color` value.
r   r]   rm   l    zInvalid color index: )

isinstancer   rp   BY_BLOCK_RAW_VALUErr   BY_LAYER_RAW_VALUErs   ru   rg   rgb2intri   s    r   encode_raw_colorr}      s     %G%%g%%__%+,z9:UBB4UG<=="b(GEN:;jHIIr   i   i  i  i  i  i  i  if  iL  i2  i  c                <    [        S[        U 5      -
  S-  5      S-  $ )z
Returns DXF transparency value as integer in the range from 0 to 255,
where 0 is 100% transparent and 255 is opaque.

Args:
    value: transparency value as float in the range from 0 to 1, where 0 is
        opaque and 1 is 100% transparent.

      ?r   i   )r   r>   r|   s    r   float2transparencyr      s"     eEl"c)*Z77r   c                <    S[        [        U 5      S-  5      S-  -
  $ )z
Returns transparency value as float from 0 to 1, 0 for no transparency
(opaque) and 1 for 100% transparency.

Args:
    value: DXF integer transparency value, 0 for 100% transparency and 255
        for opaque

r   r   g     o@)r>   r   r|   s    r   transparency2floatr      s"     s5zD()E111r   c                :    [        U S-	  S-  U S-	  S-  U S-  5      $ )z/Split RGB integer `value` into (r, g, b) tuple.r)   r   rW   )r	   r|   s    r   rh   rh      s.    	"	!t r   c                p    U u  pn[        U5      S-  S-  [        U5      S-  S-  -  [        U5      S-  -  $ )z,Combined integer value from (r, g, b) tuple.r   r)   rW   )r   )r    r   r   r   s       r   r{   r{      s=    GA!Vd]r!s1v}&:;s1v}MMr   c                H    U S:  a  [        U 5      e[        [        U    5      $ )zJConvert :ref:`ACI` into (r, g, b) tuple, based on default AutoCAD
colors.
r   )rQ   rh   DXF_DEFAULT_COLORS)indexs    r   aci2rgbr     s'     qy%e,--r   c                    [        U S   5      S-  n[        U S   5      S-  n[        U S   5      S-  n[        [        R                  " SU-  U-  SU-  U-  -   SU-  U-  -   5      S5      $ )	zYReturns perceived luminance for an RGB color in the range [0.0, 1.0]
from dark to light.
r   r   r   r   gA`"?gbX9?gv/?rP   )r>   r   mathsqrt)r-   r   r   r   s       r   r4   r4     sr     	eAh#AeAh#AeAh#A519q=519q=8519q=HI1MMr   (   r             r     rn   退  r       RR    ??   L &&L   & &  ?   ) Rg   ?O  L &/L  	& &     R R|  ? ?_  &L &9L  & &     | R  _ ?o  9L &BL  & !& r      R   ?  LL &LL  && &&     | R  _ ?o  L9 &LB  & &!     R R|  ? ?_  L& &L9  & &  ?   ) Rg   ?O  L &L/  &	 & r       RR    ??  L  &L&  &  & ?   )  gR   O? L  /L& 	&  iX    R  |R ?  _? &L  9L& &  iX    |  鑥R _  o? 9L  BL& &  XX r    饥  饥R   ? LL  LL& &&  r     |  饑R _  o? L9  i~B& &  r     R  |R ?  _? L&  i~9& &  iX ?   )  gR   O? L  i~/& &	  iX r       RR    ?? L   i~&& &   iX  ?   ) Rg   ?O L  i~&/ & 	 iX     R R|  ? ?_ L & i~&9 &  iX     | R  _ ?o L 9 L&B &  XX r      R   ? L L L&L & & rF     |  R _  o? 9 L B&L  & rF     R  |R ?  _? & L 9&L  & iX ?   )  gR   O?  L /&L 	 & iX r   ieee ifff i i rn   (   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   i& r   r   r   r   r   r   r   r   r   i& r   r   r   r   r   r  r  r  r  i!& r   r  r  r  r	  r
  r  r  r  i&& r  r  r  r  r  r  r  iLB& r  i&! r  r  r  r  r  r  r  iL9& r  i& r  r  r   r!  r"  r#  r$  iL/& r%  i& r   r&  r'  r(  r)  r*  r+  iL&& r,  i& r-  r.  r/  r0  r1  r2  r3  iL&/ r4  i& r5  r6  r7  r8  r9  r:  r;  iL&9 r<  i& r=  r>  r?  r@  rA  rB  rC  rD  rE  i&! r   rG  rH  rI  rJ  rK  rL  rM  rN  i&& rO  rP  rQ  rR  rS  rT  rU  rV  rW  i!& rX  rY  rZ  r[  r\  r]  r^  r_  r`  i& ra  rb  rc  rd  re  rf  rg  rh  ri  i& r   i--- i[[[ i i i )ri   r   r8   ztuple[int, Union[int, RGB]])ri   r   r8   ztuple[int, int])ri   zUnion[int, RGB]r8   r   )ri   r>   r8   r   )ri   r   r8   r>   )ri   r   r8   r	   )r    zRGB | tuple[int, int, int]r8   r   )r   r   r8   r	   )r-   r\   r8   r>   )6
__future__r   typingr   r   r   typing_extensionsr   r   r	   rI   rp   rr   BYOBJECTREDYELLOWGREENCYANBLUEMAGENTABLACKWHITEGRAY
LIGHT_GRAYrq   ro   rg   rs   rt   rk   rf   rz   ry   WINDOW_BG_RAW_VALUEr}   TRANSPARENCY_BYBLOCKOPAQUETRANSPARENCY_10TRANSPARENCY_20TRANSPARENCY_30TRANSPARENCY_40TRANSPARENCY_50TRANSPARENCY_60TRANSPARENCY_70TRANSPARENCY_80TRANSPARENCY_90r   r   rh   r{   r   r4   r   DXF_DEFAULT_PAPERSPACE_COLORSr7   r   r   <module>r     s$   # . . " .* .b=: =@ 
	
	
		
     ?& !     J" ! 	
82 N.N*A PA! r   