
    Og                        d dl mZ d dlmZmZmZmZ d dlmZ d dl	Z	d dl
Z
ddlmZmZ ddlmZmZ  e	j                   e
j"                  d	      Zdd
ZddZdddZddZ ed      ZddZdddZdddZdddZy)    )annotations)IterableTypeVarIteratorAny)uuid4N   )
juliandatecalendardate)hex_strings_to_bytesbytes_to_hexstrT)quotec                <    t        dt        |       z
  dz        dz  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    Y/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/tools/__init__.pyfloat2transparencyr      s"     eEl"c)*Z77    c                <    dt        t        |       dz        dz  z
  S )a  
    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                $    |r| |z  } | S | | z  } | S )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    dt        t                     j                         z   dz   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              #  P   K   t               }|}| D ]  }||u r|}
||f |} yw)z`Iterate `iterable` as non-overlapping pairs.

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

    Nobject)iterablesentinelstoreitems       r   take2r/   H   s?      xHE HE+Es   $&c              #     K   t               }|}|}|}| D ]  }||u r|}|}||f |} |r||ur||ur||f yyyyw)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   su      xHEED HEE+E h&4u+<Ek ,=&us   =?c                    |s|s| S t        |       dk(  ry| d   dv r| d   }| dd } nd}|r| j                  d      } |rd| v r| j                  d      } | d	   d
v r| dd	 } || z   S )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                F    | dz  } |rd| cxk  rdk  rn | S | dz  } | dz  } | S )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      sk    # 3 3    0 =			4;;d	3
82 , CL ."Jr   