
    ;i@                         S r SSKrSSKJr  SSKJrJr  SSKJrJ	r	J
r
JrJr  S rS rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS r " S S\5      rS r S r!S r"S r# " S S\5      r$\\$4r%g) )classes#is_face_uv_selected_fn_from_context    N)Operator)MatrixVector)BoolPropertyEnumPropertyFloatPropertyFloatVectorPropertyIntPropertyc                     U R                   (       a  gU R                  (       a  gU(       a&  U R                   H  nUR                  (       d  M    g   gNFT)hide	uv_selectloopsuv_select_edgefaceany_edgeloops      e/home/wildlama/Downloads/blender-5.1.2-linux-x64/5.1/scripts/startup/bl_operators/uvcalc_transform.py,is_face_uv_selected_for_uv_select_sync_validr      s;    yy~~JJD"""      c                 `    U R                   R                  (       a  gU R                  (       a  ggr   )r   r   r   r   s    r   1is_loop_edge_uv_selected_for_uv_select_sync_validr   *   s    yy~~r   c                     U R                   (       a  gU R                  (       a  gU(       a0  U R                   H   nUR                  R                  (       d  M     g   gr   )r   selectr   edger   s      r   .is_face_uv_selected_for_uv_select_sync_invalidr    3   s?    yy{{JJDyy  r   c                 t    U R                   R                  (       a  gU R                  R                  (       a  ggr   )r   r   r   r   r   s    r   3is_loop_edge_uv_selected_for_uv_select_sync_invalidr"   ?   s#    yy~~yyr   c                     U R                   (       a  gU R                  (       a?  U R                  (       a  gU(       a&  U R                   H  nUR                  (       d  M    g   gr   )r   r   r   r   r   r   s      r   )is_face_uv_selected_for_uv_select_no_syncr$   H   sB    yy{{>>

&&& # r   c                     U R                   R                  (       a  gU R                   R                  (       a  U R                  (       a  ggr   )r   r   r   r   r   s    r   .is_loop_edge_uv_selected_for_uv_select_no_syncr&   U   s,    yy~~yyr   c                 ~    U R                   R                  (       a  UR                  (       a  [        $ [        $ [
        $ N)tool_settingsuse_uv_select_syncuv_select_sync_validr   r    r$   scenebms     r   r   r   ^   s,    --""??==44r   c                 ~    U R                   R                  (       a  UR                  (       a  [        $ [        $ [
        $ r(   )r)   r*   r+   r   r"   r&   r,   s     r   (is_loop_edge_uv_selected_fn_from_contextr0   f   s,    --""DDBB99r   c                 4    U  H  nU" X15      (       d  M    g   g)NTF )islandr   face_select_test_fnr   s       r   is_island_uv_selectedr5   n   s!     t..  r   c                     / SQnU  Hn  nUR                    H[  nXA   R                  u  pV[        US   U5      US'   [        US   U5      US'   [        US   U5      US'   [        US   U5      US'   M]     Mp     U$ )N)ꌠ9Y>)Fr7   ꌠ9Y>)r8   r            )r   uvminmax)r3   uv_layerminmaxr   r   uvs          r   island_uv_boundsrC   }   s     (FJJD>$$DAF1Iq)F1IF1Iq)F1IF1Iq)F1IF1Iq)F1I   Mr   c                 P    [        X5      nUS   US   -   S-  US   US   -   S-  4$ )Nr   r:          @r9   r;   )rC   )r3   r?   r@   s      r   island_uv_bounds_centerrF      sB     f/F	VAY	#%	VAY	#% r   c                    A SnSnU H  nUR                   S   U   R                  nUR                    Hy  nX   R                  n	U	S   US   -
  n
U	S   US   -
  n[        R                  " XU-  5      nUS-  nU[        R                  " U5      -  nU[        R
                  " U5      -  nU	nM{     M     [        R                  " XT5      * S-  $ )N        r   r9   g      @r   r<   mathatan2cossin)r.   r?   facesaspect_ysum_usum_vr   prev_uvr   r<   dudv
edge_angles                r   find_rotation_autorW      s    
EE**R.*--JJD""BA#BA#BBX6J#JTXXj))ETXXj))EG   JJu$$s**r   c                    A SnSnU H  nUR                   S   U   R                  nU" UR                   S   5      n	UR                    H  n
X   R                  nU	(       af  US   US   -
  nUS   US   -
  n[        R                  " XU-  5      nUS-  nU[        R                  " U5      -  nU[        R
                  " U5      -  nUnU" U
5      n	M     M     U* U* pe[        R                  " Xe5      * S-  $ )NrH   rI   r   r9   rE   rJ   )r.   r?   rO   rP   loop_edge_select_test_fnrQ   rR   r   rS   prev_selectr   r<   rT   rU   rV   s                  r   find_rotation_edger[      s    
EE**R.*--.tzz"~>JJD""BUWQZ'UWQZ'!ZZM:
c!
*--*--G248K  $ 6E65 JJu$$s**r   c                    A [        S5      n[        S5      nU GH  n[        S[        UR                  5      5       GH  nUR                  US-
     U   R                  UR                  S   U   R                  -
  n	UR                  U   U   R                  UR                  S   U   R                  -
  n
U	S==   U-  ss'   U
S==   U-  ss'   [        X45      nUR                  5         UR                  US-
     R                  R                  UR                  S   R                  R                  -
  nUR                  U   R                  R                  UR                  S   R                  R                  -
  nUR                  U5      R                  nX\US   S   -  XS   S   -  -   U-  -  nXlUS   S   -  XS   S   -  -   U-  -  nGM     GM     US:X  a  SnOUS:X  a  SnOUS:X  a  Sn[        R                  " UW   Xo   5      $ )N)rH   rH   rH   r:   r9   r   XYZ)r   rangelenr   r<   r   invert_safevertcocrosslengthrK   rL   )r.   r?   rO   axisrP   sum_u_cosum_v_cor   fan	delta_uv0	delta_uv1mat	delta_co0	delta_co1w
axis_indexs                   r   find_rotation_geometryrr      s   
o&Ho&HC

O,C

37+H5884::a=;R;U;UUI

3144tzz!}X7N7Q7QQIaLH$LaLH$L)/0COO

37+0033djjm6H6H6K6KKI

3,,//$**Q-2D2D2G2GGI	*11ASVAY.VAY1FF!KKHSVAY.VAY1FF!KKH! - ( s{
	
	
 ::hz*H,@AAr   c                    SnUS:X  a  [        XX%5      nO'US:X  a  [        XX%U5      nOUS:X  a  [        XX$U5      nUS:X  a  g[        X!5      u  p[        R
                  " U5      n
[        R                  " U5      nXU-  -
  X-  U	-  -   nXU-  U-  -
  X-  -
  nU H[  nUR                   HH  nX   R                  nU
US   -  X-  US   -  -
  U-   nX-  US   -  U
US   -  -   U-   nUU4X   l        MJ     M]     g)	NrH   AUTOEDGEGEOMETRYFr   r9   T)	rW   r[   rr   rF   rK   rM   rN   r   r<   )r.   r?   rO   methodrg   rP   rY   anglemid_umid_v	cos_angle	sin_angledelta_udelta_vr   r   pre_uvrA   rB   s                      r   align_uv_rotation_islandr      s0   E"2A	6	"2BZ[	:	&rU(K| +5;LEII%'')*>*FFG(*U22Y5FFG JJD^&&FF1I%	(<vay(HH7RA$vay09vay3HH7RA !1DN	   r   c           
         SS K nU R                  R                  R                  R                  nU(       d  gUR
                  R                  X5      nSn	U H0  n
[        XS:H  U5      (       d  M  [        XXX#U5      (       d  M.  Sn	M2     U	$ )Nr   Fru   T)	bpy_extras.bmesh_utilsr   layersr<   activebmesh_utilsbmesh_linked_uv_islandsr5   r   )r.   rw   rg   rP   rY   r4   
bpy_extrasr?   islandschangedr3   s              r   align_uv_rotation_bmeshr     sz    !xx!!((H$$<<RJGG 6)9;NOO'fdVnoo  Nr   c                    U R                   nU(       d  gU R                   R                  R                  nU(       d  gUR                  (       d  gUR                  R                  S   nUR                  R                  S   nU(       a  X4-  $ g)N      ?r   r9   )areaspacesr   imagesize)contextr   
space_dataimage_widthimage_heights        r   get_aspect_yr   %  ss    <<D$$++J""''*K##((+L))r   c           	         SS K nU R                  nSnU(       a  [        U 5      nU R                  nU H  nUR	                  UR
                  5      n	U	R                  R                  R                  (       d  ME  [        XY5      n
[        XY5      n[        XX&X5      (       d  Mo  UR                  UR
                  5        M     S1$ )Nr   r   FINISHED)bmeshr-   r   objects_in_mode_unique_datafrom_edit_meshdatar   r   r<   r0   r   r   update_edit_mesh)r   rw   rg   correct_aspectr   r-   rP   ob_listobr.   rY   r4   s               r   align_uv_rotationr   5  s    MMEH(11G!!"''*xx!!#KE#V A%L"2t?Wmm""277+  <r   c                       \ rS rSr% SrSrSrSS1r\" SSS	S
9\	S'   \" SSSS
9\	S'   \
" SSSS9\	S'   S rS r\S 5       rSrg)AlignUVRotationiJ  zAlign the UV island's rotationzuv.align_rotationzAlign RotationREGISTERUNDOMethodz"Method to calculate rotation angle))rt   AutozAlign from all edges)ru   EdgezOnly selected edges)rv   GeometryzAlign to Geometry axis)namedescriptionitemsrw   AxiszAxis to align to))r]   r]   zX axis)r^   r^   zY axis)r_   r_   zZ axisrg   zCorrect Aspectz$Take image aspect ratio into accountFr   r   defaultr   c                 X    [        XR                  U R                  U R                  5      $ r(   )r   rw   rg   r   )selfr   s     r   executeAlignUVRotation.executeh  s     ++tyy$BUBUVVr   c                     U R                   nUR                  U S5        U R                  S:X  a  UR                  U S5        UR                  U S5        g )Nrw   rv   rg   r   )layoutproprw   )r   _contextr   s      r   drawAlignUVRotation.drawk  sB    D(#;;*$KKf%D*+r   c                      UR                   S:H  $ N	EDIT_MESHmodeclsr   s     r   pollAlignUVRotation.pollr      ||{**r   r2   N)__name__
__module____qualname____firstlineno____doc__	bl_idnamebl_label
bl_optionsr	   __annotations__r   r   r   classmethodr   __static_attributes__r2   r   r   r   r   J  s    (#IHf%J#G
  !3
  !: W, + +r   r   c                 8   SSK Jn  SSK Jn  U u  pEpgnU" XA-   5        U" SS5      n	U" SS5      n
U" SS5      nU" SS5      nU" SS5      nU(       a  XS   -  n	XS   -  n
OSn	Sn
U(       a  X-  nOSnU(       a/  USUS   -  S-
  -  S-   US   -
  nUSUS   -  S-
  -  S-   US   -
  nOSnSnU(       a  UnU[        R                  " U5      -  U* [        R
                  " U5      -  U	/U[        R
                  " U5      -  U[        R                  " U5      -  U
//$ )Nr   )uniform)seedrH   r   r9   rE   )randomr   r   rK   rM   rN   )transform_paramsentropyr   random_seedr   locrotscale
scale_evenoffset_uoffset_vrx   scale_uscale_vs                 r   get_random_transformr   z  sK   **:'TJ  sC HsC HCEc3Gc3G FF
S58^c12S858CS58^c12S858C txx&488E?(BHMtxx&$((5/(A8LN Nr   c                    [        S U 5       5      n[        X#5      n[        X5      u  pVUS   S   U-   US   S   U-  -
  US   S   U-  -
  nUS   S   U-   US   S   U-  -
  US   S   U-  -
  nU Hn  n	U	R                   H[  n
X   R                  nUS   S   US   -  US   S   US   -  -   U-   nUS   S   US   -  US   S   US   -  -   U-   nX4X   l        M]     Mp     g )Nc              3   8   #    U  H  oR                   v   M     g 7fr(   )index).0fs     r   	<genexpr>0randomize_uv_transform_island.<locals>.<genexpr>  s     )5a''5s   r   r:   r9   )r=   r   rF   r   r<   )r?   rO   r   r   	transformry   rz   del_udel_vr   r   r   rA   rB   s                 r   randomize_uv_transform_islandr     s.   )5))G$%5?I +5;LEaLOe#il1o&==	!QRW@WWEaLOe#il1o&==	!QRW@WWE JJD^&&F!Q&)+il1oq	.IIEQA!Q&)+il1oq	.IIEQA!"DN	  r   c                     SS K nU R                  R                  R                  R	                  5       nUR
                  R                  X5      nU H#  n[        USU5      (       d  M  [        XFU5        M%     g )Nr   F)	r   r   r   r<   verifyr   r   r5   r   )r.   r   r4   r   r?   r   r3   s          r   randomize_uv_transform_bmeshr     s\    !xx!!((*H$$<<RJG 0CDD)(<LM r   c                    SS K nU R                  nU R                  nU Hv  nUR                  UR                  5      nUR
                  R                  R                  (       d  ME  UR                  R                  5         [        X65      n[        XaU5        Mx     U H  nUR                  UR                  5        M      S1$ )Nr   r   )r   r-   r   r   r   r   r   r<   rO   index_updater   r   r   )r   r   r   r-   r   r   r.   r4   s           r   randomize_uv_transformr     s    MME11G!!"''*xx!! 	A%L$R;NO  rww'  <r   c            
       <   \ rS rSr% SrSrSrSS1r\" SSS	S
S	S9\	S'   \
" SSSS9\	S'   \" SSSSSSSS9\	S'   \
" SSSS9\	S'   \" SSS \R                  -  S!\R                  -  S"S#S$9\	S%'   \
" S&S'SS9\	S('   \
" S)S*S+S9\	S,'   \" S-S.SSS/SS09\	S1'   \S2 5       rS3 rS4rg5)6RandomizeUVTransformi  z7Randomize the UV island's location, rotation, and scalezuv.randomize_uv_transform	Randomizer   r   zRandom Seedz#Seed value for the random generatorr   i'  )r   r   r=   r>   r   r   zRandomize LocationzRandomize the location valuesTr   use_locLocationz6Maximum distance the objects can spread over each axisg      Yg      Y@r:   TRANSLATION)rH   rH   )r   r   r=   r>   r   subtyper   r   zRandomize RotationzRandomize the rotation valueuse_rotRotationzMaximum rotationg       rE   ANGLErH   )r   r   r=   r>   r   r   r   zRandomize ScalezRandomize the scale values	use_scalez
Scale Evenz&Use the same scale value for both axesFr   Scalez*Maximum scale randomization over each axis)r   r   )r   r   r=   r>   r   r   r   c                      UR                   S:H  $ r   r   r   s     r   r   RandomizeUVTransform.poll  r   r   c                    U R                   nU R                  (       d  SS/OU R                  nU R                  (       d  SOU R                  nU R
                  (       d  S OU R                  nU R                  nX#XEU/n[        X5      $ )NrH   )	r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   s           r   r   RandomizeUVTransform.execute  se     $sCj$((c488 NN

__
 s:>%g@@r   r2   N)r   r   r   r   r   r   r   r   r   r   r   r   r
   rK   pir   r   r   r   r2   r   r   r   r     s%   A+IHf%J9  !3 
 
L
  !2 
 
&477N$''M
  0 
 <  @  + +	Ar   r   )&__all__rK   	bpy.typesr   	mathutilsr   r   	bpy.propsr   r	   r
   r   r   r   r   r    r"   r$   r&   r   r0   r5   rC   rF   rW   r[   rr   r   r   r   r   r   r   r   r   r   r   r   r2   r   r   <module>r     s   
   $ 		
5:&$+(+8 BF@  **+h *+`)NX'*N(IA8 IAZ r   