
    M"jJ
                         d Z dZddlmZmZmZmZ d ZddZddZ	ddZ
d	 Zd
 ZddZd Zd Zd Zd Zd Zd Zd ZdS )z'functions for 2D affine transformations)nullTransform	translatescalerotateskewXskewYmmultcombineTransformsinversezTransformPointtransformPointtransformPointszTransformPoints    )cossintanradiansc                      dS )N)   r   r   r   r   r    r       ]/usr/local/lib/hermes-agent/venv/lib/python3.11/site-packages/reportlab/graphics/transform.pyr   r      s    r   c                     dddd| |fS Nr   r   r   )dxdys     r   r   r      s    q!QBr   r   c                     | dd|ddfS )Nr   r   )sxsys     r   r   r      s    1b!Qr   c                 n    t          |           }t          |          }t          |          }||| |||fS N)r   r   r   )anglecxcyasinacosas         r   r   r      s8    Aq66Dq66D$tR,,r   c                 F    ddt          t          |                     dddfS r   r   r   r"   s    r   r   r   #   s#    q#genn%%q!Q//r   c                 F    dt          t          |                     ddddfS r   r)   r*   s    r   r   r   &   s#    s75>>""Aq!Q//r   c                 x    |r*t          t          |           t          |                    S t          |           S r!   )r   r   r   )axays     r   skewr/   )   s2    	 U2YYuRyy)))Ryyr   c           	         | d         |d         z  | d         |d         z  z   | d         |d         z  | d         |d         z  z   | d         |d         z  | d         |d         z  z   | d         |d         z  | d         |d         z  z   | d         |d         z  | d         |d         z  z   | d         z   | d         |d         z  | d         |d         z  z   | d         z   fS )zA postmultiplied by Br      r            r   )ABs     r   r   r   /   s     aD1I!QqT	!aD1I!QqT	!aD1I!QqT	!aD1I!QqT	!aD1I!QqT	!AaD(aD1I!QqT	!AaD(* *r   c                     t          |           }|dk    rt          | d         | d                   nZ|dk    r9t          t          | dd          t          | d         | d                             n|dk    r| d         nt                      S )a	  
    given transform matrices in the order they should be applied generate
    a combined transform.

    combineTransforms(T0,T1,T2) == mmult(T2,mmult(T1,T0))
                                == T2*T1*T0
    so that T0 is applied first, then T1 and finally T2.
    r1   r   r   N)lenr   r	   r   )TnTs     r   r	   r	   =   s     
QB "AE!A$qtGI!tt(!ABB%0%!QqT2B2BCCCQ1	r   c                 j   t          | d         | d         z  | d         | d         z  z
            }| d         |z  | d          |z  | d          |z  | d         |z  g}t          ||d          | d         z  |d         | d         z  z
  |d          | d         z  |d         | d         z  z
  gz             S )zBFor A affine 2D represented as 6vec return 6vec version of A**(-1)r   r2   r1   r   r3   r4   )floattuple)r5   detRs      r   r
   r
   N   s     !QqT	AaD1I%
&
&C	
1cAaD59qteCi1c2AQqTE!A$JqtAaDy(!A$qtAaD1I)=>>???r   c                     | d         |d         z  | d         |d         z  z   | d         |d         z  | d         |d         z  z   fS )zBApply the homogenous part of atransformation a to vector v --> A*vr   r1   r   r2   r   r5   vs     r   r   r   U   sG    aD1Iad1Q4i!QqT	!A$qt) 344r   c                     | d         |d         z  | d         |d         z  z   | d         z   | d         |d         z  | d         |d         z  z   | d         z   fS )z*Apply transformation a to vector v --> A*vr   r1   r   r3   r2   r4   r   rA   s     r   r   r   Y   sY    aD1Iad1Q4i!$QqT!A$YqtAaDy%81%=>>r   c                 l      fd|D             }t          |t                    rt          |          }|S )Nc                 0    g | ]}t          |          S r   )r   ).0rB   matrixs     r   
<listcomp>z#transformPoints.<locals>.<listcomp>^   s#    ---aq	!	!---r   )
isinstancer=   )rG   Vrs   `  r   r   r   ]   s;    ----1---A!E(aAHr   c                 B    t          t          | fd|                    S )Nc                 "    t          ||           S r!   )r   )xrG   s     r   <lambda>z"zTransformPoints.<locals>.<lambda>c   s    OF1,E,E r   )listmap)rG   rJ   s     r   r   r   b   s#    FEEEqIIJJJr   N)r   )r   )r   r   )__doc____all__mathr   r   r   r   r   r   r   r   r   r   r/   r   r	   r
   r   r   r   r   r   r   r   <module>rU      s0   - - ( ' ' ' ' ' ' ' ' ' ' '                - - - -0 0 00 0 0   * * *  "@ @ @5 5 5? ? ?  
K K K K Kr   