
    ai
              	       T   S r SSKJr  SSKrSSKJr  SSKJrJrJ	r	J
r
Jr  SSKJrJr  SSKJr  SSKJrJr  SS	KJr  1 S
kr\" SS5      rS rS"S jrS rS rS#S jrS r " S S5      r  " S S5      r!S r"S r#S r$S r%S r&S r'S r( " S S\\\ \!\5      r) " S  S!\ \!\5      r*\)\*4r+g)$)classes    )
namedtupleN)Operator)StringPropertyBoolPropertyEnumPropertyFloatPropertyCollectionProperty)pgettext_rptcontexts)Vector)AddObjectHelperworld_to_camera_view)ImportHelper>   CYCLESBLENDER_EEVEEBLENDER_WORKBENCH	ImageSpec)imagesizeframe_startframe_offsetframe_durationc           	   #   p  #    SSK Jn  SS KnUR                  S5      nUR                  S5      n[	        [        U 5      5      n S nSn/ nS nSn	U  H  n
UR                  SU
5      n[        [        [        UR                  U
5      5      5      nX:X  aY  Uc$  [        U" 5       X|5       H  u  pnX:w  d  M  Un  O   [        U" 5       X|5       H  u  pnX:X  a  X-   nX:w  d  M    O	   U	S-  n	M  U(       a  U	S:  a
  XWU   U	4v   OUSS4v   U
nUnUnS nSn	M     U(       a  U	S:  a
  XWU   U	4v   g USS4v   g g 7f)Nr   )countz[0-9]z[0-9]+    #)	itertoolsr   recompileitersortedsublistmapintfindallzip)filesr   r    	num_regex
nums_regex	prev_filepatternmatchessegmentlengthfilenamenew_patternnew_matchesiprevcurs                   d/home/wildlama/Downloads/blender-5.1.2-linux-x64/5.1/scripts/startup/bl_operators/image_as_planes.pyfind_image_sequencesr9   8   sd      

7#IH%JEIGGGFmmC23sJ$6$6x$@AB! $'$FLAS{"# %G !$EGW B<=D; !C ! z!1699Ao%	K N A:W-v55Q/!	 s   B,D62)D6AD6c           	   #     #    SS K nSSKJn  SSKJn  U(       a  [        U 5      nO[        X" S5      U" S5      5      nU H  u  pnUR                  R                  [        R                  R                  UR                  R                  X5      5      5      (       d  M^  U" XSUS9n[        UR                  5      nUR                  S:X  a  UR                  nUR                  nOUS:  a  SUl        [!        XX:S-
  U5      v   M     g 7f)	Nr   )repeat)
load_imager   T)check_existingforce_reloadMOVIESEQUENCE)osr   r;   bpy_extras.image_utilsr<   r9   r)   pathisfilebpyabspathjointupler   sourcer   r   )	filenames	directoryr>   r   find_sequencesrA   r;   r<   	file_iterr2   offsetframesr   r   s                 r8   load_imagesrP   }   s     
  1(3		6!9fQi8	$- &ww~~chh..rww||I/PQRR8tR^_ UZZ <<7" ))F))FaZ%EL[1*fEE' %.s   DDc                     U S   n[        5       nU SS   HW  n[        UR                  UR                  -   R                  U5      5      S-  U-   nXFU-  -  nUR                  U-  Ul        UnMY     g )Nr   r          @)r   abs
dimensionsdotmatrix_worldlocation)planesgapaxispriorrN   currentlocal_offsets          r8   offset_planesr^      s{     1IEXF!":E,,w/A/AAFFtLMPSSVYY%%"//&8     c           
        ^ U R                   nUR                  nUR                  R                  US9n[	        [        S5       V^s/ s H  m[        U4S jU 5       5      PM     sn5      [	        [        S5       V^s/ s H  m[        U4S jU 5       5      PM     sn5      -
  nUR                  UR                  -  n	UR                  S:X  a  UR                  nO5[        XEU5      R                  n
XR                  -  US   R                  * -  nSnUnUS:X  a  X9:  d  US:X  a  X9:  a  S	nS
U-  nX   U-  US	U-
  '   U$ s  snf s  snf )N)scene   c              3   ,   >#    U  H	  oT   v   M     g 7fN .0vr5   s     r8   	<genexpr>&compute_camera_size.<locals>.<genexpr>        -*QaD*   c              3   ,   >#    U  H	  oT   v   M     g 7frd   re   rf   s     r8   ri   rj      rk   rl   ORTHOr   FILLFITr         ?)ra   cameradata
view_framer   rangemaxminxytypexyr   z)contextcenter	fill_modeaspectra   rr   rt   r5   
frame_sizecamera_aspectdistance
match_axismatch_aspects          `     r8   compute_camera_sizer      s9   MME\\F''e'4JuQx@x!-*--x@AuQx@x!-*--x@A	B  LL:<</M {{g]]
 (v>@@-*Q-//1AB
 JL	f	!7	e	 6
V| ",!7,!FJq:~5 A@s   E>E
c                 X   U R                   R                  nUR                  nUS   R                  U-
  nUR	                  US   R                  5      US   -  nUR	                  US   R                  5      US   -  nUS   R                  U-  US   R                  U-  -   nXH-   Ul        g )Nrb   r   r   )rV   colrW   xyzrU   )	rr   obrZ   camera_matrix_colrW   deltacamera_x_magcamera_y_magrN   s	            r8   center_in_camerar      s    ++//{{H a $$x/E 99.q1556a@L99.q1556a@L q!%%47H7K7O7OR^7^^F#BKr_   c                    U R                   nU R                  u  p#U R                  nUR                  u  pVS[	        XV5      -  nSUS4SU4XV4/n/ n	U H6  n
U
S   X%-  -   U-  U-  nU
S   X6-  -   U-  U-  nU	R                  XS45        M8     U	$ )Nrq   )        r   r   r   r   )empty_display_sizeempty_image_offsetrs   r   rv   append)r   r   rx   ry   imgres_xres_yscalingcornersobj_space_cornersconco_xnco_ys                r8   get_ref_object_space_coordr      s      D  DA
''C88LEC%%G 			e		G Q%19%-8Q%19%-8  %!23  r_   c            	           \ rS rSr% \" SSSSS9\S'   \" SS	S
SSSS9\S'   \" SSSS9\S'   \" SSS9\S'   \" SSSS9\S'   \" SSSS9\S'   \" S SS!S9\S"'   S# rS$r	g%)&MaterialProperties_MixIni  Shader))
PRINCIPLED
PrincipledzPrincipled shader)	SHADELESS	Shadelessz&Only visible to camera and reflections)EMISSIONEmissionzEmission shaderr   zNode shader to usenameitemsdefaultdescriptionshaderEmission Strengthr   rq   g      $@d   zStrength of emission)r   rw   r   soft_maxstepr   emit_strengthz	Use AlphaTz"Use alpha channel for transparencyr   r   r   use_transparencyzRender Method))DITHEREDDitheredz~Allows for grayscale hashed transparency, and compatible with render passes and ray-tracing. Also known as deferred rendering.)BLENDEDBlendedzvAllows for colored transparency, but incompatible with render passes and ray-tracing. Also known as forward rendering.)r   r   render_methodzBackface CullingFz3Use backface culling to hide the back side of facesuse_backface_cullingzShow BackfacezPRender multiple transparent layers (may introduce transparency sorting problems)show_transparent_backzOverwrite Materialz.Overwrite existing material with the same nameoverwrite_materialc                 *   U R                   nUR                  SSS9u  p4UR                  SS9  U(       a  UR                  U S5        U R                  S:X  a  UR                  U S5        UR                  U S	5        U R
                  S
:X  a  UR                  U S5        UR                  U S5        UR                  R                  R                  nU[        ;  a(  UR                  [        S5      R                  U5      SS9  UR                  U S5        g g )Nimport_image_plane_materialFdefault_closedMaterialtextr   r   r   r   r   r   r   z{:s} is not supportedERROR)r   iconr   )layoutpanellabelpropr   r   ra   renderengineCOMPATIBLE_ENGINESrpt_format)selfr}   r   headerbodyr   s         r8   draw_material_config-MaterialProperties_MixIn.draw_material_configB  s    ||$ARW|X*%IIdH%{{j(		$0IIdO,!!Y.		$ 78IId23]]))00F//

%< = D DV LSZ
[IId01 r_   re   N)
__name__
__module____qualname____firstlineno__r   __annotations__r	   r   r   __static_attributes__re   r_   r8   r   r     s    

 (	 	 ! *  #8   	
  'I  (f  %!D 2r_   r   c                      \ rS rSr% \" SSSSS9\S'   \" S\R                  S	S
SS9\S'   \R                  R                  R                  R                  S   r\" \R                  S\R                   S9\S'   \" SSSS9\S'   S rSrg)TextureProperties_MixIniZ  Interpolation))Linearr   zLinear interpolation)Closestr   z'No interpolation (sample closest texel))Cubicr   zCubic interpolation)Smartr   z1Bicubic when magnifying, else bilinear (OSL only)r   zTexture interpolationr   interpolation	Extension))CLIPClipz9Clip to image size and set exterior pixels as transparent)EXTENDExtendz,Extend by repeating edge pixels of the image)REPEATRepeatz5Cause the image to repeat horizontally and verticallyr   z6How the image is extrapolated past its original bounds)r   translation_contextr   r   r   	extensionuse_auto_refreshTr   zRelative PathszUse relative file pathsrelativec                    U R                   nUR                  SSS9u  p4UR                  SS9  U(       aX  UR                  U S5        UR                  U S5        UR	                  SSS	9nUR                  U S
SS9  UR                  U S5        g g )Nimport_image_plane_textureFr   Texturer   r   r   Alpha)alignheadingr   r   r   )r   r   r   r   row)r   r}   r   r   r   r   s         r8   draw_texture_config+TextureProperties_MixIn.draw_texture_config  s    ||$@QV|W)$IIdO,IIdK((((8CHHT-BH7IId./ r_   re   N)r   r   r   r   r   r   i18n_contextsid_imagerE   types	ImageUserbl_rna
properties_ImageUser_use_auto_refreshr   r   r   r   r   re   r_   r8   r   r   Z  s    
 +
 
 )22

 L
 
 #&))"5"5"<"<"G"GHZ"["(--/;;  - 0r_   r   c                     UR                   nU R                  Ul        UR                  Ul        UR                  Ul        UR                  Ul        UR
                  R                  S:X  a  SUl        g g )Nr@   T)
image_userr   r   r   r   r   rI   )r   textureimg_specr   s       r8   apply_texture_optionsr    sf    ##J"&"7"7J%11J&33J ( 7 7J ~~
*&*
# +r_   c                     UR                   R                  S5      nUR                  Ul        SUl        U R                  Ul        U R
                  Ul        [        XU5        U$ )NShaderNodeTexImageT)nodesnewr   show_texturer   r   r  )r   	node_treer   	tex_images       r8   create_cycles_texnoder	    sT    ##$89InnIO!I"00I..I$84r_   c                 ^   S nU R                   (       a+  [        R                  R                  R	                  US 45      nUcK  [        R                  R                  R                  US9nUR                  R                  R                  5         U R                  Ul
        U R                  Ul        U R                  Ul        UR                  nUR                  R                  S5      n[        XU5      nU R                  S:X  a  UR                  R                  S5      nOU R                  S:X  a  [!        U5      nOqU R                  S:X  aa  UR                  R                  S5      nU R"                  UR$                  S   l        SUR$                  S	   l        S
UR$                  S   l        U R                  S;   a7  UR(                  R                  WR$                  S   UR*                  S   5        OFU R                  S:X  a6  UR(                  R                  WR$                  S   UR*                  S   5        U R,                  (       Ga!  U R                  S;   a7  UR(                  R                  WR$                  S   UR*                  S   5        OUR                  R                  S5      n	UR                  R                  S5      n
UR(                  R                  U
R$                  S   UR*                  S   5        UR(                  R                  U
R$                  S   U	R*                  S   5        UR(                  R                  U
R$                  S   WR*                  S   5        U
nUR(                  R                  UR$                  S   WR*                  S   5        [/        U5        U$ )Nr   ShaderNodeOutputMaterialr   ShaderNodeBsdfPrincipledr   r   r   )r   r   r   rq   z
Base Colorr   zSpecular IOR Level>   r   r   r   ColorzEmission Color>   r   r   r   ShaderNodeBsdfTransparentShaderNodeMixShaderFacr   BSDF   Surface)r   rE   rs   	materialsgetr  r  r  clearr   surface_render_methodr   r   use_transparency_overlapr	  r   get_shadeless_noder   inputsdefault_valuelinksoutputsr   auto_align_nodes)r   r}   r   r   materialr  out_noder  core_shaderbsdf_transparent
mix_shaders              r8   create_cycles_materialr%    s   H88%%))4,788%%))t)4  &&(%)%7%7H"$($=$=H!(,(B(BH%""I""#=>H%dx@I{{l"oo))*DE		#(3	
	"oo))*DE@D@R@R./=9M<(6AD/0> {{11K..q193D3DW3MN	
	"K../?@)BSBST[B\];;44OO 2 27 ;Y=N=Nw=WX(223NO",,-BCJOO
 1 1% 8):K:KG:TUOO
 1 1! 46F6N6Nv6VWOO
 1 1! 4k6I6I!6LM$KOO	2K4G4G4JKYOr_   c                    U Vs1 s H  o"R                   U :X  d  M  UiM     nn/ n[        5       nU R                   H  n[        5       nU Hl  nUR                  n	X;   a  UR	                  U5        M'  UR
                  U:X  d  M9  UR                  U	5        UR	                  U5        UR	                  U	5        Mn     X7-  nM     U$ s  snf rd   )to_nodesetr  	from_nodeadd	to_socketr   )
noder  lnkinput_linkssorted_nodes
done_nodessocket
done_linkslinknds
             r8   get_input_nodesr5    s     #(?%3;;$+>3%K?LJ++U
DBt$6)##B't$r"   	!  ! @s
   CCc                    ^^^^ SmSmU R                   nU R                  mS nU H  nUR                  S;   d  M  Un  O   g UUUU4S jmT" U5        g )N      >   GROUP_OUTPUTOUTPUT_MATERIALc                   > [        U T5      n[        U5       H  u  p#[        UR                  R                  U R                  R                  T-
  5      UR                  l        U R                  R
                  UR                  l        UR                  =R
                  UT-  -  sl        UR                  =R
                  [        U5      S-
  T-  [        U5      -  -  sl        T" U5        M     g )Nr   )r5  	enumeraterw   rW   rx   ry   len)r'  
from_nodesr5   r,  r   r  x_gapy_gaps       r8   r   auto_align_nodes.<locals>.align  s    $We4
 ,GA!$--//73C3C3E3E3MNDMMO%..00DMMOMMOOq5y(OMMOOJ! 3u<JPPO$K -r_   )r  r  rz   )r  r  output_noder,  r   r  r?  r@  s       @@@@r8   r  r    s^     EEOOEOOEK99;;K  	  
+r_   c                     U R                   n[        U5       H&  nUR                  S:X  a  M  UR                  U5        M(     U R                   S   $ )Nr:  r   )r  r%   rz   remove)r  r  r,  s      r8   clean_node_treerE    sE    
 OOEUyy--LL  ??1r_   c                    Sn[         R                  R                  R                  US 45      =nGc  [         R                  R                  R	                  US5      nUR
                  R	                  S5      nUR
                  R	                  S5      nUR                  R                  SSSS9  UR                  R                  S	S
SS9  UR
                  R	                  S5      nUR                  R	                  UR                  S   UR                  S   5        UR
                  R	                  S5      nUR                  R	                  UR                  S   UR                  S   5        UR
                  R	                  S5      nUR                  S   nUR                  S   n	UR                  S   n
UR                  S   nUR
                  R	                  S5      nSUl        SUl        UR                  R	                  UR                  S   U
5        UR                  R	                  UR                  S   U5        UR
                  R	                  S5      nSUl        SUl        SUR                  S   l        UR                  R	                  UR                  S   UR                  S   5        UR
                  R	                  S5      nSUl        SUl        SUR                  S   l        UR                  R	                  UR                  S   U
5        UR
                  R	                  S5      nSUl        SUl        UR                  R	                  UR                  S   UR                  S   5        UR                  R	                  UR                  S   U5        UR
                  R	                  S5      nSUl        SUl        UR                  R	                  UR                  S   UR                  S   5        UR                  R	                  UR                  S   U	5        UR
                  R	                  S5      nSUl        S Ul        UR                  R	                  UR                  S   UR                  S   5        UR                  R	                  UR                  S   UR                  S   5        UR
                  R	                  S!5      nUR                  R	                  UR                  S   UR                  S   5        UR                  R	                  UR                  S   UR                  S   5        UR                  R	                  UR                  S"   UR                  S   5        UR                  R	                  UR                  S   UR                  S   5        [        U5        U R
                  R	                  S#5      nUUl        U$ )$NIAP_SHADELESSShaderNodeTreeNodeGroupOutputNodeGroupInputr   OUTPUTNodeSocketShader)in_outsocket_typer  INPUTNodeSocketColorShaderNodeBsdfDiffuser   ShaderNodeEmissionShaderNodeLightPathzIs Glossy RayzIs Shadow Rayz	Ray DepthzTransmission DepthShaderNodeMathSUBTRACTzBounce Countr   zCamera or Refractedrq   zLimit ReflectionsrR   MULTIPLYzCamera Ray to GlossyMAXIMUMzShadow or Reflection?zShadow, Reflect or Refract?r  r  ShaderNodeGroup)rE   rs   node_groupsr  r  r  	interface
new_socketr  r  r  	operationr   r  r  r  )dest_node_treenode_group_namer  rB  
input_nodediffuse_shaderemission_shader
light_pathis_glossy_rayis_shadow_ray	ray_depthtransmission_depthunrefracted_depth	refractedreflection_limitcamera_reflectedshadow_or_reflectshadow_or_reflect_or_refractr$  
group_nodes                       r8   r  r    s   
 &OXX))--.EFF	OHH((,,_>NO	oo))*;<__(()9:
&&xN`&a&&wwL]&^ #,,-DEN11!4j6H6H6KL#//--.BCO2215z7I7I!7LM__(()>?
"**?;"**?;&&{3	'//0DE%OO//0@A&0#"0-44Q7C-44Q79KLOO''(89	(	/	,/	)I,,Q/1B1J1J11MN$??../?@%/"!436"0,33A6	B$??../?@%/"!7,33A68H8P8PQR8ST,33A6F%OO//0@A&/#"9-44Q79I9Q9QRS9TU-44Q7G'0':':;K'L$1:$.-J$*8??BDUD]D]^_D`a8??BIDUDUVWDXY__(()>?
J--a02N2V2VWX2YZJ--a0.2H2H2KLJ--a0/2I2I!2LMK..q1:3E3Ea3HI#%%))*;<J$Jr_   c            
          \ rS rSr% SrSrSr1 Skr\" \	R                  R                  SS1S9\S	'   \" S
SSS1S9\S'   \" SSS1S9\S'   \" SSS1S9\S'   \" SSS1S9\S'   \" SSSS9\S'   \" SSSS9\S'   \" S5      \" S5      \" S5      \" S5      \" S5      \" S 5      S!.r\" S"SS#S9\S$'   \" S%S&S'S(S)9\S*'   \" S+S,S-S.S/S0S19\S2'   S3r\" S4S5\S6S)9\S7'   \" \S8-   S9SS1S:9\S;'   \" S<SS=S9\S>'   S? r\" S@SASB\SCSD9\SE'   \" SFSGSHSIS)9\SJ'   \" SKSLSMSNSNS/S0SO9\SP'   \" SQSMSRSSST9\SU'   SV rSW rSX rSY rSZ rS[ rS\ rS] rS^ rS_ rS` rSa r Sbr!gc)dIMAGE_OT_import_as_mesh_planesil  zGCreate mesh plane(s) from image files with the appropriate aspect ratiozimage.import_as_mesh_planeszImport Images as Planes>   UNDOPRESETREGISTERHIDDEN	SKIP_SAVE)rz   optionsr*   i   	FILE_PATH)maxlensubtyperu  rK   T)r   ru  filter_imagefilter_moviefilter_folderzForce ReloadFzCForce reload the image if it is already opened elsewhere in Blenderr   r>   zDetect Image Sequencesz\Import sequentially numbered images as an animated image sequence instead of separate planesimage_sequence)rq   r   r   )r   rq   r   r   r   rq   )      r   r   )r   r~  r   )r   r   r~  )+X+Y+Z-X-Y-ZzOffset Planesz`Offset planes from each other. If disabled, multiple planes will be created at the same locationrN   zOffset Directionr  ))r  r  zSide by Side to the Left)r  r  zSide by Side, Downward)r  r  zStacked Above)r  r  zSide by Side to the Right)r  r  zSide by Side, Upward)r  r  zStacked Belowz;How planes are oriented relative to each others' local axis)r   r   r   r   offset_axiszOffset Distancer   g?zSet distance between each planeDISTANCELENGTH)r   soft_minr   r   rx  unitoffset_amount))r  r  zFacing positive X)r  r  zFacing positive Y)r  r  zFacing positive Z)r  r  zFacing negative X)r  r  zFacing negative Y)r  r  zFacing negative Z)CAMzFace CamerazFacing camera)CAM_AXzCamera's Main Axisz!Facing the camera's dominant axisAlignr  zHow to align the planes
align_axis))NONEr   r   r  )r   r   ru  prev_align_axiszTrack Cameraz4Add a constraint to make the planes track the cameraalign_trackc                     U R                   S:X  a  U R                  U l        SU l        g U R                  S:w  a  U R                  U l        SU l        g g )NCAMERAr  r  )	size_moder  r  )r   _contexts     r8   update_size_mode/IMAGE_OT_import_as_mesh_planes.update_size_mode  sK     >>X%#'??D #DO!!V+"22DO#)D  ,r_   z	Size ModeABSOLUTE))r  AbsolutezUse absolute size)r  zScale to Camera Framez%Scale to fit or fill the camera frame)DPIzPixels per InchzScale based on pixels per inch)DPBUzPixels per Blender Unitz&Scale based on pixels per Blender Unitz#Method for computing the plane size)r   r   r   updater   r  Scalero   ))ro   Fillz-Fill camera frame, spilling outside the frame)rp   Fitz(Fit entire image within the camera framez/Method to scale the plane with the camera framer   HeightzHeight of the created planerq   gMbP?)r   r   r   rw   r  rx  r  height
Definitiong     @z)Number of pixels per inch or Blender Unit)r   rw   r   r   factorc                 8   U R                   nUR                  SSS9u  p4UR                  SS9  U(       af  UR                  5       n[        R
                  R                  Ul        UR                  U S5        UR                  U S5        UR                  U S5        g g )	Nimport_image_plane_optionsFr   Optionsr   r   r>   r|  )	r   r   r   r   rE   rs   is_savedactiver   )r   r  r   r   r   r   s         r8   draw_import_config1IMAGE_OT_import_as_mesh_planes.draw_import_config  s~    ||$@QV|W)$((*C**CJHHT:&IIdN+IId,- r_   c                    U R                   nUR                  SSS9u  p4UR                  SS9  U(       Ga  UR                  U S5        U R                  S:X  a  UR                  U S5        O5U R                  S	:X  a  UR                  U S
5        OUR                  U S5        UR                  5       nSU R                  ;  Ul        UR                  U S5        SU R                  ;   a  UR                  U S5        UR                  U S5        UR                  5       nU R                  Ul        UR                  U S5        UR                  U SSS9  g g )Nimport_image_plane_transformFr   	Transformr   r  r  r  r  r   r  r  r  r  rN   r  r  Distance)
r   r   r   r   r  r   enabledr  columnrN   )r   r  r   r   r   r   r   s          r8   draw_spatial_config2IMAGE_OT_import_as_mesh_planes.draw_spatial_config#  s   ||$BSX|Y+&IIdK(~~+		$)8+		$,		$)((*Ct~~5CKHHT<('		$.IIdH%++-C++CKHHT=)HHT?H<' r_   c                     U R                   nSUl        U R                  U5        [        R	                  X5        [
        R                  X5        U R                  U5        g )NT)r   use_property_splitr  r   r   r   r   r  )r   r}   r   s      r8   draw#IMAGE_OT_import_as_mesh_planes.draw>  sK    $(!( 55dD33DB  )r_   c                 6   UR                   R                  R                  nU[        ;  a.  U R	                  S1[        S5      R                  U5      5        S1$ US:X  a+  U R	                  S1[        S5      R                  U5      5        U R                  U5      $ Nr   z8Cannot generate materials for unknown {:s} render engine	CANCELLEDr   WARNINGzRGenerating Cycles/EEVEE compatible material, but won't be visible with {:s} engine)ra   r   r   r   reportr   r   invoke_popup)r   r}   _eventr   s       r8   invoke%IMAGE_OT_import_as_mesh_planes.invokeJ  s    %%,,++KK	4(b#c#j#jkq#rs= ((KKijqq   ))r_   c                    [         R                  R                  (       d  SU l        UR                  R
                  R                  nSUR                  R
                  l        UR                  (       aA  UR                  R                  S:w  a'  [         R                  R                  R                  SS9  U R                  U5      nX!R                  R
                  l        U$ )NFOBJECTmode)rE   rs   r  r   preferencesedituse_enter_edit_modeactive_objectr  opsobjectmode_setimport_images)r   r}   editmoderet_codes       r8   execute&IMAGE_OT_import_as_mesh_planes.executeY  s    xx  !DM &&++??7<  4  W%:%:%?%?8%KGGNN###2%%g.7?  4r_   c           	      f   [        [        S U R                   5       U R                  U R                  U R
                  S95      nU(       d  U R                  S1S5        S1$ U Vs/ s H  o0R                  X5      PM     nnUR                  R                  5         U R                  (       a  U R                  U R                     n[        X@R                  U5        U R                  S:X  aq  UR                   (       a`  U HZ  n[#        XR$                  U R&                  UR(                  R*                  UR(                  R,                  -  5      u  pxXxS4Ul        M\     U H  nUR/                  S5        M     U R                  S	1[1        S
5      R3                  [5        U5      5      5        S1$ s  snf )Nc              3   8   #    U  H  oR                   v   M     g 7frd   r  )rg   fns     r8   ri   ?IMAGE_OT_import_as_mesh_planes.import_images.<locals>.<genexpr>m  s     *zWWzs   )r>   rL   r  z Please select at least one imager  r  r   TINFOzAdded {:d} Image Plane(s)FINISHED)rH   rP   r*   rK   r>   r|  r  single_image_spec_to_plane
view_layerr  rN   axis_id_to_vectorr  r^   r  r  r|   r   rW   r   rT   rx   ry   
select_setr   r   r=  )	r   r}   imagesr   rX   r  planerx   ry   s	            r8   r  ,IMAGE_OT_import_as_mesh_planes.import_imagesi  sn    {*tzz*NN**..	
  KK%GH=  V\\U[11'DU[\!!# ;;001A1ABK&"4"4kB~~)kmm#E.(8(8(:(:U=M=M=O=O(ODA ()SyE$ $ ET"  	VHd#>?FFs6{ST|/ ]s   &F.c                 (   [         R                  R                  UR                  R                  5      nU R                  UR                  5        [        XX#5      nU R                  XU5      nUR                  R                  R                  U5        U$ rd   )rE   rC   display_name_from_filepathr   filepathapply_image_optionsr%  create_image_planers   r  r   )r   r}   r   r   r   r  s         r8   r  9IMAGE_OT_import_as_mesh_planes.single_image_spec_to_plane  su    xx228>>3J3JK 	  0 *$H ''x@ 	

##H-r_   c                     U R                   (       d  SUl        U R                  (       a0   [        R                  R                  UR                  5      Ul        g g ! [         a     g f = f)Nr  )r   
alpha_moder   rE   rC   relpathr  
ValueError)r   r   s     r8   r  2IMAGE_OT_import_as_mesh_planes.apply_image_options  sR    $$%E==!$!1!1%..!A   s   .A 
A('A(c                 F   U R                   nU R                  (       a  SUl        SUl        SUl        OSUl        SUl        SUl        SUl        SUl        U R                  Ul        SUl        US:H  Ul        US:H  Ul	        US	:X  a  U R                  Ul        g SUl        g )
Nr   Trq   Fr   Z_TRANSPARENCYr   DIFFUSEr   )r   r   alphaspecular_alphause_map_alphaspecular_intensitydiffuse_intensitytransparency_methoduse_shadelessuse_transparent_shadowsr   emit)r   r   slotr   s       r8   apply_material_options5IMAGE_OT_import_as_mesh_planes.apply_material_options  s       HN&)H#!%D HN&)H#!&D&'#%("$($9$9!'7$"(K"7,2i,?(.4
.B**r_   c                    U R                  X5      u  pE[        R                  R                  R	                  S5        UR
                  nUR                  S:w  a'  [        R                  R                  R                  SS9  XES4Ul	        U=UR                  l        Ul        [        R                  R                  R                  SSSS9  U R                  S:X  aV  U R                  U R                     nS	 Vs/ s H  oU   (       a  S
OSPM     n	n[!        UR"                  R$                  Xi5        U R'                  X5        U$ s  snf )NINVOKE_REGION_WINr  r  r   FT)rW   rotationscaler  )r   r   r   r   )compute_plane_sizerE   r  meshprimitive_plane_addr  r  r  r  rT   rs   r   transform_applyr  r  r  r   ra   rr   align_plane)
r   r}   r   r   widthr  r  r  r5   translate_axiss
             r8   r  1IMAGE_OT_import_as_mesh_planes.create_image_plane  s   //B 	(()<=%%::!GGNN###2 #-'++

%*&&T&R >>X%001A1ABKBHI&Qq>aq8&NIW]]115I( Js   7Ec                    UR                   u  p4US:X  d  US:X  a  S=p4U R                  S:X  a  U R                  nX4-  U-  nXe4$ U R                  S:X  a<  [        XR                  R
                  R                  U R                  X4-  5      u  peXe4$ U R                  S:X  a>  SU R                  -  UR                  R                  R                  -  S-  nX7-  nXG-  nXe4$ SU R                  -  nX7-  nXG-  nXe4$ )Nr   r   r  r  r  g
F%u?)r   r  r  r   ra   cursorrW   r   r  unit_settingsscale_length)r   r}   r   pxpyry   rx   facts           r8   r  1IMAGE_OT_import_as_mesh_planes.compute_plane_size  s      7bAgKB>>Z'A!A$ t! ^^x'&--66DA t ^^u$t{{?W]]%@%@%M%MMPVVD	A	A t	 t{{?D	A	Atr_   c                 N   SSK Jn  SU R                  ;   a  UR                  R                  nUb  UR
                  [        S5      -  UR
                  R                  S   R                  -
  n[        [        [        U5      5      n[        U Vs/ s H  n[        U5      U:X  a  Xv-  OSPM     sn5      nO,[        S5      nSU l        OU R                  U R                     nUR                  (       d  US-  UR                  l        UR                   S:  a  X2R                  l        OUR                   S:  a  SUR                  l        OkUR                  S:  a  US-  UR                  l        OFUR                  S:  a  U* S-  UR                  l        O UR                  S:  a  X2R                  l        U R                  S:X  a  UR"                  R%                  S	5      nWUl        S
=Ul        =Ul        Ul        U R.                  (       dB  [0        R2                  R4                  R7                  5         UR"                  R9                  5         U R                  S:X  aC  U R.                  (       a1  UR"                  R%                  S5      nWUl        SUl        SUl        g g g s  snf )Nr   )pir  r}  rb   r   r  r  COPY_ROTATIONTr  LOCKED_TRACKTRACK_ZLOCK_Y)mathr  r  ra   rr   rV   r   r   r   rv   r&   rS   r  r|   rotation_eulerrx   ry   constraintsr  targetuse_xuse_yuse_zr  rE   r  r  visual_transform_applyr  
track_axis	lock_axis)	r   r}   r  r  rr   rZ   magn
constraints	            r8   r  *IMAGE_OT_import_as_mesh_planes.align_plane  s+    	DOO#]]))F!**VO-DDvGZGZG^G^_`GaGeGee#c4.)!!  #1v}AG#5!  o."& ))$//:D vv%'!VE  "vvz)+$$&!)*$$&!)+a$$&!*,q$$& VVaZ%'  "??e#**..?J &JEIIJIz/*2B##557!!'')??h&4+;+;**..~>J &J$-J!#+J 	 ,<&Ks   J")r  r  r   N)"r   r   r   r   __doc__	bl_idnamebl_label
bl_optionsr
   rE   r   OperatorFileListElementr   r   r   r   r  r   r	   
AXIS_MODESr  r  r  r  r  r  r  r  r  r  r  r  r  r   re   r_   r8   ro  ro  l  s|    R-I(H/J YY..;' 
 ;'  th5LMMth5LMMx6MNN Y  !%8	  _%_%_%%&%&%& P	  
 R  !5 	J -	  "..;' 
 J 	* 
  9  
 F  1  ?	 .=6** &R&L,0>6,r_   ro  c                       \ rS rSr% SrSrSr1 Skr\" SSS/S	S
S9\	S'   \
" SSSS9\	S'   \S 5       r\S 5       rS rS rS rSrg)IMAGE_OT_convert_to_mesh_planei5  z8Convert selected reference images to textured mesh planezimage.convert_to_mesh_planez!Convert Image Empty to Mesh Plane>   rp  rq  rr  z
Name After)r  zSource Objectz&Name after object source with a suffix)IMAGEzSource ImagezName from loaded imager  z%Name for new mesh object and materialr   	name_fromzDelete Reference ObjectTz4Delete empty image object once mesh plane is createdr   
delete_refc                     UR                   nUS L=(       a(    UR                  5       =(       a    U R                  U5      $ rd   )r  
select_get_is_object_empty_image)clsr}   r   s      r8   poll#IMAGE_OT_convert_to_mesh_plane.pollK  s8    ^^dN +MMO+&&r*	
r_   c                 v    U R                   S:H  =(       a$    U R                  S:H  =(       a    U R                  S L$ )NEMPTYr'  )rz   empty_display_typers   )r   s    r8   r,  5IMAGE_OT_convert_to_mesh_plane._is_object_empty_imageT  s9     WW """g-"WWD 	
r_   c                 N   UR                   nUR                  R                  nU[        ;  a.  U R	                  S1[        S5      R                  U5      5        S1$ US:X  a+  U R	                  S1[        S5      R                  U5      5        UR                  R                  U 5      $ r  )	ra   r   r   r   r  r   r   window_managerinvoke_props_dialog)r   r}   r  ra   r   s        r8   r  %IMAGE_OT_convert_to_mesh_plane.invoke\  s    $$++KK	4(b#c#j#jkq#rs= ((KKijqq %%99$??r_   c                    UR                    Vs/ s H  o"PM     nnSnU GHW  nU R                  U5      (       d  M  UR                  nUR                  nUR                  nU R
                  S:X  a)  [        R                  R                  UR                  SS9nOU R
                  S:X  d   eUR                  n[        U5      n	S/n
[        R                  R                  R                  U5      nUR                  U	/ U
5        [        R                  R                  R                  X5      nUR                  R                  SS9  UR                  nU H  nUR                  R!                  U5        M      UR"                  Ul        UR$                  Ul        UR&                  Ul        [)        UUR*                  S   UR*                  S	   4UR,                  UR.                  UR0                  5      n[3        XX5      nUR                  R4                  R7                  U5        U R8                  (       a0  U H  nUR                  R;                  U5        M      X{l        X|l        UR=                  S
5        US	-  nGMZ     U(       d  U R?                  S1S5        S1$ U R?                  S1[A        S5      RC                  U5      5        S1$ s  snf )Nr   r'  F)
title_caser  )r   r   rb   r  UVMapr  r   Tr   zNo images convertedr  r  z({:d} image(s) converted to mesh plane(s)r  )"selected_objectsr,  rs   r   r   r(  rE   rC   display_namer   meshesr  from_pydataobjects	uv_layersusers_collectionr3  parentmatrix_localmatrix_parent_inverser   r   r   r   r   r%  r  r   r)  unlinkr  r  r   r   )r   r}   r   r;  	convertedr   img_userob_namer   r   facer  r  rA  
collectionr   r   s                    r8   r  &IMAGE_OT_convert_to_mesh_plane.executem  se   )0)A)AB)A2B)AB	"B..r22''C}}HggG ~~(xx,,SXX%,H~~111ww !;2 > >D88??&&t,D.D9HH$$((4ENNG,  "22.
""''. / 99EL!#E*,*B*BE' !!chhqk*$$%%''H .dXLHJJ  ''1 "2J&&--b1 #3#	$
T"NIk #n KK	#89= VHd#MNUUV_`a| Cs   Kc                    U R                   nSUl        UR                  SS9nUR                  U S5        UR                  U S5        UR	                  5         [
        R                  X5        [        R                  X5        g )NTF)r   r(  r)  )	r   r  r  r   	separatorr   r   r   r   )r   r}   r   r   s       r8   r  #IMAGE_OT_convert_to_mesh_plane.draw  sk    $(! mm%m({#|$ 	!55dD33DBr_   re   N)r   r   r   r   r  r   r!  r"  r   r   r   classmethodr.  staticmethodr,  r  r  r  r   re   r_   r8   r&  r&  5  s    B-I2H/JQ?
 ;  &J  
 
 
 
@"AFCr_   r&  )Fr   F))r   r   ),__all__collectionsr   rE   	bpy.typesr   	bpy.propsr   r   r   r	   r
   bpy.app.translationsr   r   r   r   	mathutilsr   bpy_extras.object_utilsr   r   bpy_extras.io_utilsr   r   r   r9   rP   r^   r   r   r   r   r   r  r	  r%  r5  r  rE  r  ro  r&  r   re   r_   r8   <module>rY     s   
 # 
  
 -
 F 
  	B"J!FN& F$&4P2 P2f30 30l
+0f.8
LdF,'?AXZbF,RGC%=?VX` GCV #"r_   