+
    ̧6jJ
                         R t Rt^ RIHtHtHtHt R tRR ltRR lt	RR lt
R tR tRR ltR	 tR
 tR tR tR tR tR tR# )z'functions for 2D affine transformations)cossintanradiansc                      R# )   )r       r   r   r   r    r	       T/opt/hart-platform/venv/lib/python3.14/site-packages/reportlab/graphics/transform.pynullTransformr      s    r
   c                     ^^ ^ ^W3# r   r	   )dxdys   &&r   	translater      s    q!Qr
   c                     V ^ ^ V^ ^ 3# r   r	   )sxsys   &&r   scaler      s    1b!Qr
   c                 R    \        V 4      p\        V4      p\        V4      pWTV) WQV3# N)r   r   r   )anglecxcyasinacosas   &&&   r   rotater      s.    Aq6Dq6Dt,,r
   c                 6    ^^ \        \        V 4      4      ^^ ^ 3# r   r   r   r   s   &r   skewXr#   #   s    q#gen%q!Q//r
   c                 6    ^\        \        V 4      4      ^ ^^ ^ 3# r   r!   r"   s   &r   skewYr%   &   s    s75>"Aq!Q//r
   c                 d    V'       d   \        \        V 4      \        V4      4      # \        V 4      # r   )mmultr#   r%   )axays   &&r   skewr*   )   s$    	U2YuRy))Ryr
   c           	        V ^ ,          V^ ,          ,          V ^,          V^,          ,          ,           V ^,          V^ ,          ,          V ^,          V^,          ,          ,           V ^ ,          V^,          ,          V ^,          V^,          ,          ,           V ^,          V^,          ,          V ^,          V^,          ,          ,           V ^ ,          V^,          ,          V ^,          V^,          ,          ,           V ^,          ,           V ^,          V^,          ,          V ^,          V^,          ,          ,           V ^,          ,           3# )zA postmultiplied by Br	   )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                     \        V 4      pV^8X  d   \        V ^,          V ^ ,          4      # V^8  d3   \        \        V R,          !  \        V ^,          V ^ ,          4      4      # V^8X  d
   V ^ ,          # \        4       # )z
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.
:   NN)lenr'   combineTransformsr   )TnTs   * r   r1   r1   =   sx     
QB "AE!A$qtGI!t(!B%0%!QqT2BC Q1 	r
   c                   \        V ^ ,          V ^,          ,          V ^,          V ^,          ,          ,
          4      pV ^,          V,          V ^,          ) V,          V ^,          ) V,          V ^ ,          V,          .p\        W"^ ,          ) V ^,          ,          V^,          V ^,          ,          ,
          V^,          ) V ^,          ,          V^,          V ^,          ,          ,
          .,           4      # )zBFor A affine 2D represented as 6vec return 6vec version of A**(-1))floattuple)r,   detRs   &  r   inverser9   N   s     !QqT	AaD1I%
&C	
1cAaD59qteCi1c2AqTE!A$JqtAaDy(!A$qtAaD1I)=>>??r
   c                    V ^ ,          V^ ,          ,          V ^,          V^,          ,          ,           V ^,          V^ ,          ,          V ^,          V^,          ,          ,           3# )zBApply the homogenous part of atransformation a to vector v --> A*vr	   r,   vs   &&r   zTransformPointr=   U   sG    aD1Iad1Q4i!QqT	!A$qt) 344r
   c                   V ^ ,          V^ ,          ,          V ^,          V^,          ,          ,           V ^,          ,           V ^,          V^ ,          ,          V ^,          V^,          ,          ,           V ^,          ,           3# )z*Apply transformation a to vector v --> A*vr	   r;   s   &&r   transformPointr?   Y   sY    aD1Iad1Q4i!$QqT!A$YqtAaDy%81%=>>r
   c                     V Uu. uF  p\        W4      NK  	  pp\        V\        4      '       d   \        V4      pV# u upi r   )r?   
isinstancer6   )matrixVr<   rs   &&  r   transformPointsrE   ]   s:    +,-1a	!1A-!EaAH 	.s   >c                 4    \        \        V 3R  lV4      4      # )c                     \        W4      # r   )r=   )xrB   s   &&r   <lambda>"zTransformPoints.<locals>.<lambda>c   s	    OF,Er
   )listmap)rB   rC   s   &&r   zTransformPointsrM   b   s    FEqIJJr
   N)r   r   r   r   r#   r%   r'   r1   r9   r=   r?   rE   rM   r   r   )r   r   )__doc____all__mathr   r   r   r   r   r   r   r   r#   r%   r*   r'   r1   r9   r=   r?   rE   rM   r	   r
   r   <module>rQ      s_    - ( '  -00*"@5?
Kr
   