
    BPc@                        d Z ddlZddddddd	d
dddddZg dZ ej        dd                    e           d          Z ej        d          Z ej        dej         dej         d          Z	ddZ
ddZd dZd dZd ZdS )!zG
Convert to and from various units and find the closest matching unit.
    Ng      X@gUUUUUU?g      ?gx<@g\.B@gp8@g<LAgx<?g      0@g      @g      @)inptpxmmcmmkmQpcydft ) r   r   r   r   r   r   r	   r
   r   r   r   r   %emexchremvwvhvminvmaxdeggradradturnsmsHzkHzdpidpcmdppx(|)z:(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)z^\s*z\s*z\s*$r   c                     t                               t          |                     }|rCt          |                                d                   |                                d         p|fS |||fndS )zu
    Takes a value such as 55.32px and returns (55.32, 'px')
    Returns default (None) if no match can be found
    r   N)
BOTH_MATCHmatchstrfloatgroups)valuedefault_unitdefault_valuerets       -/usr/share/inkscape/extensions/inkex/units.py
parse_unitr2   Y   sl    
 

3u::
&
&C
 HSZZ\\!_%%szz||B'7'G<GG,9,EM<((4O    {Gz?c                 4    | |z
  | |z  k    o| |z
  |  |z  k    S )z)Return true if the points are near to eps )point_apoint_bepss      r1   are_near_relativer:   d   s0    g3. 'gX^+r3   c                     t          | d          \  } }|t          vr|S t          |         | z  |z  }t                                          D ]!\  }}|dk    rt          ||d          r|c S "|S )z:Attempt to detect the unit being used based on the viewboxg      Y@)r/   r   r4   )r9   )r2   CONVERSIONSitemsr:   )r-   viewboxdefaultunitthis_factorunit_factors         r1   discover_unitrC   k   s     uE:::MUD;d#e+g5K )..00  k2:: ktDDD Nr3   c                     t          | |d          \  } }|t          v r@|t          v r7| t          |         z  t                              |t          d                   z  S dS )a  Returns userunits given a string representation of units in another system

    Args:
        value: <length> string
        to_unit: unit to convert to
        default: if ``value`` contains no unit, what unit should be assumed.

            .. versionadded:: 1.1
    g        )r.   r/   r   )r2   r<   get)r-   to_unitr?   	from_units       r1   convert_unitrH   }   sd     "%gSQQQE9KG{$:$:K	**[__WkRVFW-X-XX	
 3r3   c                     	 t          | t                    rt          | |          \  } }| d|dS # t          $ r Y dS w xY w)z.Checks and then renders a number with its unit)r.   z.6gr   r   )
isinstancer*   r2   	TypeError)r-   r@   s     r1   render_unitrL      si    eS!! 	A&u4@@@MUD&&d&&&&   rrs   03 
A A)r   N)r4   )r   )__doc__rer<   UNITScompilejoin
UNIT_MATCHNUMBER_MATCHpatternr(   r2   r:   rC   rH   rL   r6   r3   r1   <module>rU      s1  0  
			 



	
	


 $!	 !	 !	F RZ/SXXe__///00
rzWXXRZQ 4QQ9KQQQRR
P P P P      $   $    r3   