a
    w=ic	+                     @   sX   d dl mZmZ d dlmZ d dlmZ dgZdZdd Z	dd	d
Z
eddd ZdS )    )supportScalarnormalizeValue)MAX_F2DOT14)	lru_cache
rebaseTentg      ?c                 C   s   | d  | d  | d  fS )N      r    vr	   r	   r/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/fontTools/varLib/instancer/solver.py_reverse_negate
   s    r   Fc                    sF  |\}}}| \}}}||kr<dd t t| t|| D S ||krP||k rPg S ||k rtd|id| i |||f}  fddt | |D S td|id| i}	|	d fg}
td|id| i}|	|kr|d|	 ||  d|   }|||f}d}|
||	 |f ||kr:|||f}td|id| i}|
||	 |f n`||krL|t7 }|||f}d}|||f}td|id| i}|
||	 |f |
||	 |f n||| d  |krX|s||| t  |k r||| t  }||k sJ ||kr|}t||||f}d}|||f}d}||k r:|
||	 |f ||k r|
||	 |f n^t||||f}d}|||f}td|id| i}|
||	 |f ||k r|
||	 |f ||kr|||f}td|id| i}|
||	 |f nR||kr|t8 }|||f}d}|||f}d}|
||	 |f |
||	 |f |
S )Nc                 S   s(   g | ] \}}||d urt |nd fqS )N)r   .0scalartr	   r	   r   
<listcomp>   s   z_solve.<locals>.<listcomp>tagc                    s   g | ]\}}|  |fqS r	   r	   r   Zmultr	   r   r   H       r   r   r   )_solver   r   appendEPSILONr   max)tent	axisLimitnegativeaxisMinaxisDefaxisMaxlowerpeakupperZgainoutZoutGainZcrossinglocr   loc1Zscalar1loc2Zscalar2r	   r   r   r      s    





















r      c           	         s    \}}}d|  kr2|  kr2|  kr2dks8n J | \}}}d|  krj|  krj|  krjdkspn J |dks|J t |  } fddfdd	|D }|S )
a7  Given a tuple (lower,peak,upper) "tent" and new axis limits
    (axisMin,axisDefault,axisMax), solves how to represent the tent
    under the new axis configuration.  All values are in normalized
    -1,0,+1 coordinate system. Tent values can be outside this range.

    Return value is a list of tuples. Each tuple is of the form
    (scalar,tent), where scalar is a multipler to multiply any
    delta-sets by, and tent is a new tent for that output delta-set.
    If tent value is None, that is a special deltaset that should
    be always-enabled (called "gain").r   r   r   c                    s   t |  ddS )NT)Zextrapolate)r   r
   )r   r	   r   <lambda>4  r   zrebaseTent.<locals>.<lambda>c                    sF   g | ]>\}}|r||d ur< |d  |d  |d fnd fqS )Nr   r   r   r	   )r   r   r   )nr	   r   r   5  s   zrebaseTent.<locals>.<listcomp>)r   )	r   r   r   r   r   r    r!   r"   Zsolsr	   )r   r+   r   r     s    
.
.

N)F)ZfontTools.varLib.modelsr   r   ZfontTools.misc.fixedToolsr   	functoolsr   __all__r   r   r   r   r	   r	   r	   r   <module>   s   
  