
    h                    
   S SK Jr  S SKJrJrJrJr  S SKJr  S SK	r	S SK
r
SSKJrJr  SSKJrJr  \	R                   " \
R"                  SS	9rSS
 jrSS jrSSS jjrSS jr\" S5      rSS jrSSS jjrSSS jjrSSS jjrg)    )annotations)IterableTypeVarIteratorAny)uuid4N   )
juliandatecalendardate)hex_strings_to_bytesbytes_to_hexstrT)quotec                <    [        S[        U 5      -
  S-  5      S-  $ )a  
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% transparency.

      ?   i   )intfloatvalues    F/var/www/html/env/lib/python3.13/site-packages/ezdxf/tools/__init__.pyfloat2transparencyr      s"     eEl"c)*Z77    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(       a  X-  n U $ X) -  n U $ )zSet/clear binary `flag` in data `flags`.

Args:
    flags: data value
    flag: flag to set/clear
    state: ``True`` for setting, ``False`` for clearing

 )flagsflagstates      r   set_flag_stater    *   s%      L Lr   c                 P    S[        [        5       5      R                  5       -   S-   $ )zReturns a general unique ID, based on :func:`uuid.uuid4`.

This function creates a GUID for the header variables $VERSIONGUID and
$FINGERPRINTGUID, which matches the AutoCAD pattern
``{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}``.

{})strr   upperr   r   r   guidr&   :   s#     UW##%%++r   Tc              #  T   #    [        5       nUnU  H  nX!L a  UnM  X#4v   UnM     g7f)zXIterate `iterable` as non-overlapping pairs.

:code:`take2('ABCDEFGH') -> AB CD EF GH`

Nobject)iterablesentinelstoreitems       r   take2r/   H   s5      xHEE+E s   &(c              #     #    [        5       nUnUnUnU  H  nXBL a  UnUnM  XE4v   UnM     U(       a  X2La  XSLa  XS4v   gggg7f)a  Iterate `iterable` as consecutive overlapping pairs.
This is similar to ``itertools.pairwise()`` in Python 3.10 but with `close` option.

:code:`polygon_segments('ABCDEFG') -> AB BC CD DE EF FG`
:code:`polygon_segments('ABCDEFG', True) -> AB BC CD DE EF FG GA`

Nr)   )r+   closer,   firstr-   r.   s         r   pairwiser3   X   se      xHEEDEE+E  &4+<k ,=&us   AAc                    U(       d	  U(       d  U $ [        U 5      S:X  a  gU S   S;   a  U S   nU SS n OSnU(       a  U R                  S5      n U(       a  SU ;   a  U R                  S5      n U S	   S
;   a  U SS	 n X0-   $ )zSuppress trailing and/or leading ``0`` of string `s`.

Args:
     s: data string
     leading: suppress leading ``0``
     trailing: suppress trailing ``0``

g        0r   z-+r	   N .z.,)r   lstriprstrip)sleadingtrailingsigns       r   suppress_zerosr?   o   s     h Qx3 	tt|tabE HHSMC1HHHSM 	u}crF8Or   c                T    U S-  n U(       a  SU s=:  a  S::  a  O  U $ U S-  n U S-  n U $ )z
Normalizes text `angle` to the range from 0 to 360 degrees and fixes upside down text angles.

Args:
    angle: text angle in degrees
    fix_upside_down: rotate upside down text angle about 180 degree

g     v@Z   i     r   )anglefix_upside_downs     r   normalize_text_anglerE      s<     EMEB-#- L 	Lr   )r   r   returnr   )r   r   rF   r   )T)r   r   r   r   r   boolrF   r   )rF   r$   )r+   zIterable[T]rF   zIterator[tuple[T, T]])F)FT)r;   r$   r<   rG   r=   rG   )rC   r   rF   r   )
__future__r   typingr   r   r   r   uuidr   	functoolshtmlr
   r   
binarydatar   r   partialescaper   r   r    r&   r'   r/   r3   r?   rE   r   r   r   <module>rP      si    # 3 3    0 =			4;;d	3
82 , CL ."Jr   