2011-02-23 10:52:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 *  * * * * *  BEGIN  GPL  LICENSE  BLOCK  * * * * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  program  is  free  software ;  you  can  redistribute  it  and / or 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  modify  it  under  the  terms  of  the  GNU  General  Public  License 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  as  published  by  the  Free  Software  Foundation ;  either  version  2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  of  the  License ,  or  ( at  your  option )  any  later  version .  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  but  WITHOUT  ANY  WARRANTY ;  without  even  the  implied  warranty  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  MERCHANTABILITY  or  FITNESS  FOR  A  PARTICULAR  PURPOSE .   See  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  GNU  General  Public  License  for  more  details . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  You  should  have  received  a  copy  of  the  GNU  General  Public  License 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  along  with  this  program ;  if  not ,  write  to  the  Free  Software  Foundation , 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-12 13:34:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  Inc . ,  51  Franklin  Street ,  Fifth  Floor ,  Boston ,  MA  02110 - 1301 ,  USA . 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  The  Original  Code  is  Copyright  ( C )  2009  Blender  Foundation . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  All  rights  reserved . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Contributor ( s ) :  Blender  Foundation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  * * * * *  END  GPL  LICENSE  BLOCK  * * * * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-27 20:29:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/** \file blender/editors/render/render_shading.c
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   \ ingroup  edrend 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  <stdlib.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <string.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "MEM_guardedalloc.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-02-19 22:17:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "DNA_mesh_types.h" 
  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "DNA_curve_types.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "DNA_lamp_types.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "DNA_material_types.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "DNA_node_types.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "DNA_object_types.h" 
  
						 
					
						
							
								
									
										
										
										
											2011-02-13 12:35:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "DNA_particle_types.h" 
  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "DNA_scene_types.h" 
  
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "DNA_space_types.h" 
  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "DNA_world_types.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-07 18:36:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "BLI_blenlib.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "BLI_math.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "BLI_utildefines.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
											
												merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
											 
										 
										
											2010-03-20 16:41:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "BKE_animsys.h" 
  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "BKE_context.h" 
  
						 
					
						
							
								
									
										
										
										
											2011-09-14 00:37:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "BKE_curve.h" 
  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "BKE_depsgraph.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "BKE_font.h" 
  
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "BKE_global.h" 
  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "BKE_icons.h" 
  
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "BKE_image.h" 
  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "BKE_library.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "BKE_main.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "BKE_material.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "BKE_node.h" 
  
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "BKE_report.h" 
  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "BKE_scene.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "BKE_texture.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "BKE_world.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "BKE_tessmesh.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "IMB_imbuf.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "IMB_imbuf_types.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "GPU_material.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "RNA_access.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "WM_api.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "WM_types.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-01-02 17:15:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "ED_object.h" 
  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "ED_curve.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "ED_mesh.h" 
  
						 
					
						
							
								
									
										
										
										
											2011-11-02 19:24:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "ED_node.h" 
  
						 
					
						
							
								
									
										
										
										
											2011-04-08 16:56:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "ED_render.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "ED_screen.h" 
  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "RNA_define.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "UI_interface.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-08-28 23:24:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "RE_pipeline.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "render_intern.h"	// own include 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/********************** material slot operators *********************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-15 01:36:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  material_slot_add_exec ( bContext  * C ,  wmOperator  * UNUSED ( op ) )  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2012-01-02 17:15:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Object  * ob =  ED_object_context ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ! ob ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  OPERATOR_CANCELLED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									object_add_material_slot ( ob ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									WM_event_add_notifier ( C ,  NC_OBJECT | ND_DRAW ,  ob ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-05 11:55:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									WM_event_add_notifier ( C ,  NC_OBJECT | ND_OB_SHADING ,  ob ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OPERATOR_FINISHED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  OBJECT_OT_material_slot_add ( wmOperatorType  * ot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* identifiers */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > name  =  " Add Material Slot " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > idname  =  " OBJECT_OT_material_slot_add " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > description  =  " Add a new material slot " ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* api callbacks */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > exec  =  material_slot_add_exec ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > poll  =  ED_operator_object_active_editable ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* flags */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > flag  =  OPTYPE_REGISTER | OPTYPE_UNDO ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  material_slot_remove_exec ( bContext  * C ,  wmOperator  * op )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2012-01-02 17:15:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Object  * ob =  ED_object_context ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ! ob ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  OPERATOR_CANCELLED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-15 08:11:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/* Removing material slots in edit mode screws things up, see bug #21822.*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ob  = =  CTX_data_edit_object ( C ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-19 12:26:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										BKE_report ( op - > reports ,  RPT_ERROR ,  " Unable to remove material slot in edit mode " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-15 08:11:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  OPERATOR_CANCELLED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									object_remove_material_slot ( ob ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-22 17:38:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									DAG_id_tag_update ( & ob - > id ,  OB_RECALC_DATA ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									WM_event_add_notifier ( C ,  NC_OBJECT | ND_DRAW ,  ob ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-05 11:55:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									WM_event_add_notifier ( C ,  NC_OBJECT | ND_OB_SHADING ,  ob ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OPERATOR_FINISHED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  OBJECT_OT_material_slot_remove ( wmOperatorType  * ot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* identifiers */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > name  =  " Remove Material Slot " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > idname  =  " OBJECT_OT_material_slot_remove " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > description  =  " Remove the selected material slot " ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* api callbacks */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > exec  =  material_slot_remove_exec ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > poll  =  ED_operator_object_active_editable ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* flags */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > flag  =  OPTYPE_REGISTER | OPTYPE_UNDO ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-15 01:36:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  material_slot_assign_exec ( bContext  * C ,  wmOperator  * UNUSED ( op ) )  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2012-01-02 17:15:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Object  * ob =  ED_object_context ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ! ob ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  OPERATOR_CANCELLED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ob  & &  ob - > actcol > 0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( ob - > type  = =  OB_MESH )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-02 12:09:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											BMEditMesh  * em  =  BMEdit_FromObject ( ob ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											BMFace  * efa ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											BMIter  iter ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( em )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												BM_ITER ( efa ,  & iter ,  em - > bm ,  BM_FACES_OF_MESH ,  NULL )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-12 10:51:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													if ( BM_elem_flag_test ( efa ,  BM_ELEM_SELECT ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
														efa - > mat_nr =  ob - > actcol - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  if ( ELEM ( ob - > type ,  OB_CURVE ,  OB_SURF ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Nurb  * nu ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-14 00:37:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											ListBase  * nurbs =  curve_editnurbs ( ( Curve * ) ob - > data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 11:57:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if ( nurbs )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												for ( nu =  nurbs - > first ;  nu ;  nu =  nu - > next ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
													if ( isNurbsel ( nu ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														nu - > mat_nr =  nu - > charidx =  ob - > actcol - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  if ( ob - > type  = =  OB_FONT )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											EditFont  * ef =  ( ( Curve * ) ob - > data ) - > editfont ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-22 09:30:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											int  i ,  selstart ,  selend ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( ef  & &  BKE_font_getselection ( ob ,  & selstart ,  & selend ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												for ( i = selstart ;  i < = selend ;  i + + ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-04 16:19:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													ef - > textbufinfo [ i ] . mat_nr  =  ob - > actcol ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-05 18:59:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									DAG_id_tag_update ( & ob - > id ,  OB_RECALC_DATA ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-22 09:30:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									WM_event_add_notifier ( C ,  NC_GEOM | ND_DATA ,  ob - > data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OPERATOR_FINISHED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  OBJECT_OT_material_slot_assign ( wmOperatorType  * ot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* identifiers */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > name  =  " Assign Material Slot " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > idname  =  " OBJECT_OT_material_slot_assign " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > description  =  " Assign the material in the selected material slot to the selected vertices " ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* api callbacks */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > exec  =  material_slot_assign_exec ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > poll  =  ED_operator_object_active_editable ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* flags */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > flag  =  OPTYPE_REGISTER | OPTYPE_UNDO ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  material_slot_de_select ( bContext  * C ,  int  select )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2012-03-02 12:09:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Object  * ob  =  ED_object_context ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ! ob ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  OPERATOR_CANCELLED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ob - > type  = =  OB_MESH )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-02 12:09:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										BMEditMesh  * em  =  BMEdit_FromObject ( ob ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-08-16 18:45:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										if ( em )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-08-16 18:45:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											EDBM_deselect_by_material ( em ,  ob - > actcol - 1 ,  select ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  if  ELEM ( ob - > type ,  OB_CURVE ,  OB_SURF )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-14 00:37:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ListBase  * nurbs =  curve_editnurbs ( ( Curve * ) ob - > data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Nurb  * nu ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										BPoint  * bp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										BezTriple  * bezt ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int  a ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-04 15:59:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( nurbs )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for ( nu =  nurbs - > first ;  nu ;  nu = nu - > next )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if ( nu - > mat_nr = = ob - > actcol - 1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if ( nu - > bezt )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														a =  nu - > pntsu ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														bezt =  nu - > bezt ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														while ( a - - )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															if ( bezt - > hide = = 0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																if ( select )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	bezt - > f1  | =  SELECT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	bezt - > f2  | =  SELECT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	bezt - > f3  | =  SELECT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	bezt - > f1  & =  ~ SELECT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	bezt - > f2  & =  ~ SELECT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	bezt - > f3  & =  ~ SELECT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																} 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
															} 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-04 15:59:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
															bezt + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
														} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-04 15:59:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													else  if ( nu - > bp )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														a =  nu - > pntsu * nu - > pntsv ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														bp =  nu - > bp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														while ( a - - )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															if ( bp - > hide = = 0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																if ( select )  bp - > f1  | =  SELECT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																else  bp - > f1  & =  ~ SELECT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															bp + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
														} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-22 09:30:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									WM_event_add_notifier ( C ,  NC_GEOM | ND_SELECT ,  ob - > data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OPERATOR_FINISHED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-15 01:36:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  material_slot_select_exec ( bContext  * C ,  wmOperator  * UNUSED ( op ) )  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  material_slot_de_select ( C ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  OBJECT_OT_material_slot_select ( wmOperatorType  * ot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* identifiers */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > name  =  " Select Material Slot " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > idname  =  " OBJECT_OT_material_slot_select " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > description  =  " Select vertices assigned to the selected material slot " ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* api callbacks */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > exec  =  material_slot_select_exec ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* flags */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > flag  =  OPTYPE_REGISTER | OPTYPE_UNDO ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-15 01:36:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  material_slot_deselect_exec ( bContext  * C ,  wmOperator  * UNUSED ( op ) )  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  material_slot_de_select ( C ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  OBJECT_OT_material_slot_deselect ( wmOperatorType  * ot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* identifiers */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > name  =  " Deselect Material Slot " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > idname  =  " OBJECT_OT_material_slot_deselect " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > description  =  " Deselect vertices assigned to the selected material slot " ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* api callbacks */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > exec  =  material_slot_deselect_exec ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* flags */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > flag  =  OPTYPE_REGISTER | OPTYPE_UNDO ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-15 01:36:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  material_slot_copy_exec ( bContext  * C ,  wmOperator  * UNUSED ( op ) )  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2012-01-02 17:15:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Object  * ob =  ED_object_context ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									Material  * * * matar ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ! ob  | |  ! ( matar =  give_matarar ( ob ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  OPERATOR_CANCELLED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									CTX_DATA_BEGIN ( C ,  Object * ,  ob_iter ,  selected_editable_objects )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( ob  ! =  ob_iter  & &  give_matarar ( ob_iter ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-10 01:30:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ob - > data  ! =  ob_iter - > data ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assign_matarar ( ob_iter ,  matar ,  ob - > totcol ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											if ( ob_iter - > totcol = = ob - > totcol )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												ob_iter - > actcol =  ob - > actcol ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												WM_event_add_notifier ( C ,  NC_OBJECT | ND_DRAW ,  ob_iter ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									CTX_DATA_END ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OPERATOR_FINISHED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  OBJECT_OT_material_slot_copy ( wmOperatorType  * ot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* identifiers */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > name  =  " Copy Material to Others " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > idname  =  " OBJECT_OT_material_slot_copy " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > description  =  " Copies materials to other selected objects " ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* api callbacks */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > exec  =  material_slot_copy_exec ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* flags */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > flag  =  OPTYPE_REGISTER | OPTYPE_UNDO ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/********************** new material operator *********************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-15 01:36:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  new_material_exec ( bContext  * C ,  wmOperator  * UNUSED ( op ) )  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-11-02 19:24:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Scene  * scene =  CTX_data_scene ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									Material  * ma =  CTX_data_pointer_get_type ( C ,  " material " ,  & RNA_Material ) . data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PointerRNA  ptr ,  idptr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PropertyRNA  * prop ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* add or copy material */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-02 19:24:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( ma )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										ma =  copy_material ( ma ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-02 19:24:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										ma =  add_material ( " Material " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-11-02 19:24:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( scene_use_new_shading_nodes ( scene ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ED_node_shader_default ( scene ,  & ma - > id ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ma - > use_nodes =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									/* hook into UI */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiIDContextProperty ( C ,  & ptr ,  & prop ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( prop )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										/* when creating new ID blocks, use is already 1, but RNA
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 *  pointer  se  also  increases  user ,  so  this  compensates  it  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ma - > id . us - - ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										RNA_id_pointer_create ( & ma - > id ,  & idptr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										RNA_property_pointer_set ( & ptr ,  prop ,  idptr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										RNA_property_update ( C ,  & ptr ,  prop ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									WM_event_add_notifier ( C ,  NC_MATERIAL | NA_ADDED ,  ma ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OPERATOR_FINISHED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  MATERIAL_OT_new ( wmOperatorType  * ot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* identifiers */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > name  =  " New Material " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > idname  =  " MATERIAL_OT_new " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > description  =  " Add a new material " ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* api callbacks */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > exec  =  new_material_exec ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* flags */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > flag  =  OPTYPE_REGISTER | OPTYPE_UNDO ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/********************** new texture operator *********************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-15 01:36:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  new_texture_exec ( bContext  * C ,  wmOperator  * UNUSED ( op ) )  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Tex  * tex =  CTX_data_pointer_get_type ( C ,  " texture " ,  & RNA_Texture ) . data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PointerRNA  ptr ,  idptr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PropertyRNA  * prop ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* add or copy texture */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( tex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										tex =  copy_texture ( tex ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										tex =  add_texture ( " Texture " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* hook into UI */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiIDContextProperty ( C ,  & ptr ,  & prop ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( prop )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										/* when creating new ID blocks, use is already 1, but RNA
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 *  pointer  se  also  increases  user ,  so  this  compensates  it  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										tex - > id . us - - ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										RNA_id_pointer_create ( & tex - > id ,  & idptr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										RNA_property_pointer_set ( & ptr ,  prop ,  idptr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										RNA_property_update ( C ,  & ptr ,  prop ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									WM_event_add_notifier ( C ,  NC_TEXTURE | NA_ADDED ,  tex ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OPERATOR_FINISHED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  TEXTURE_OT_new ( wmOperatorType  * ot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* identifiers */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > name  =  " New Texture " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > idname  =  " TEXTURE_OT_new " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > description  =  " Add a new texture " ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* api callbacks */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > exec  =  new_texture_exec ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* flags */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > flag  =  OPTYPE_REGISTER | OPTYPE_UNDO ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/********************** new world operator *********************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-15 01:36:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  new_world_exec ( bContext  * C ,  wmOperator  * UNUSED ( op ) )  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-11-02 19:24:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Scene  * scene =  CTX_data_scene ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									World  * wo =  CTX_data_pointer_get_type ( C ,  " world " ,  & RNA_World ) . data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PointerRNA  ptr ,  idptr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PropertyRNA  * prop ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* add or copy world */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-02 19:24:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( wo )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										wo =  copy_world ( wo ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-02 19:24:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										wo =  add_world ( " World " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-11-02 19:24:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( scene_use_new_shading_nodes ( scene ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ED_node_shader_default ( scene ,  & wo - > id ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wo - > use_nodes =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									/* hook into UI */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiIDContextProperty ( C ,  & ptr ,  & prop ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( prop )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										/* when creating new ID blocks, use is already 1, but RNA
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 *  pointer  se  also  increases  user ,  so  this  compensates  it  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										wo - > id . us - - ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										RNA_id_pointer_create ( & wo - > id ,  & idptr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										RNA_property_pointer_set ( & ptr ,  prop ,  idptr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										RNA_property_update ( C ,  & ptr ,  prop ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									WM_event_add_notifier ( C ,  NC_WORLD | NA_ADDED ,  wo ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OPERATOR_FINISHED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  WORLD_OT_new ( wmOperatorType  * ot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* identifiers */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > name  =  " New World " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > idname  =  " WORLD_OT_new " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > description  =  " Add a new world " ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* api callbacks */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > exec  =  new_world_exec ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* flags */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > flag  =  OPTYPE_REGISTER | OPTYPE_UNDO ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/********************** render layer operators *********************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-15 01:36:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  render_layer_add_exec ( bContext  * C ,  wmOperator  * UNUSED ( op ) )  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Scene  * scene =  CTX_data_scene ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-11-18 07:11:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									scene_add_render_layer ( scene ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									scene - > r . actlay =  BLI_countlist ( & scene - > r . layers )  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									WM_event_add_notifier ( C ,  NC_SCENE | ND_RENDER_OPTIONS ,  scene ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OPERATOR_FINISHED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  SCENE_OT_render_layer_add ( wmOperatorType  * ot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* identifiers */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > name  =  " Add Render Layer " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > idname  =  " SCENE_OT_render_layer_add " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > description  =  " Add a render layer " ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* api callbacks */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > exec  =  render_layer_add_exec ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* flags */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > flag  =  OPTYPE_REGISTER | OPTYPE_UNDO ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-15 01:36:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  render_layer_remove_exec ( bContext  * C ,  wmOperator  * UNUSED ( op ) )  
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-11-18 07:11:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Scene  * scene  =  CTX_data_scene ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									SceneRenderLayer  * rl  =  BLI_findlink ( & scene - > r . layers ,  scene - > r . actlay ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-11-18 07:11:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( ! scene_remove_render_layer ( CTX_data_main ( C ) ,  scene ,  rl ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  OPERATOR_CANCELLED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									WM_event_add_notifier ( C ,  NC_SCENE | ND_RENDER_OPTIONS ,  scene ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OPERATOR_FINISHED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  SCENE_OT_render_layer_remove ( wmOperatorType  * ot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* identifiers */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > name  =  " Remove Render Layer " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > idname  =  " SCENE_OT_render_layer_remove " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > description  =  " Remove the selected render layer " ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* api callbacks */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > exec  =  render_layer_remove_exec ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* flags */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > flag  =  OPTYPE_REGISTER | OPTYPE_UNDO ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  texture_slot_move ( bContext  * C ,  wmOperator  * op )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ID  * id =  CTX_data_pointer_get_type ( C ,  " texture_slot " ,  & RNA_TextureSlot ) . id . data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										MTex  * * mtex_ar ,  * mtexswap ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										short  act ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int  type =  RNA_enum_get ( op - > ptr ,  " type " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-03 12:30:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										struct  AnimData  * adt =  BKE_animdata_from_id ( id ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										give_active_mtex ( id ,  & mtex_ar ,  & act ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( type  = =  - 1 )  {  /* Up */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( act  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												mtexswap  =  mtex_ar [ act ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												mtex_ar [ act ]  =  mtex_ar [ act - 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												mtex_ar [ act - 1 ]  =  mtexswap ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-16 07:44:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												
							 
						 
					
						
							
								
									
										
										
										
											2010-12-03 12:30:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												BKE_animdata_fix_paths_rename ( id ,  adt ,  " texture_slots " ,  NULL ,  NULL ,  act - 1 ,  - 1 ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												BKE_animdata_fix_paths_rename ( id ,  adt ,  " texture_slots " ,  NULL ,  NULL ,  act ,  act - 1 ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												BKE_animdata_fix_paths_rename ( id ,  adt ,  " texture_slots " ,  NULL ,  NULL ,  - 1 ,  act ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if ( GS ( id - > name ) = = ID_MA )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													Material  * ma =  ( Material  * ) id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													int  mtexuse  =  ma - > septex  &  ( 1 < < act ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													ma - > septex  & =  ~ ( 1 < < act ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													ma - > septex  | =  ( ma - > septex  &  ( 1 < < ( act - 1 ) ) )  < <  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													ma - > septex  & =  ~ ( 1 < < ( act - 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													ma - > septex  | =  mtexuse  > >  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-16 07:44:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												set_active_mtex ( id ,  act - 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  {  /* Down */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( act  <  MAX_MTEX - 1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												mtexswap  =  mtex_ar [ act ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												mtex_ar [ act ]  =  mtex_ar [ act + 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												mtex_ar [ act + 1 ]  =  mtexswap ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-16 07:44:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												
							 
						 
					
						
							
								
									
										
										
										
											2010-12-03 12:30:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												BKE_animdata_fix_paths_rename ( id ,  adt ,  " texture_slots " ,  NULL ,  NULL ,  act + 1 ,  - 1 ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												BKE_animdata_fix_paths_rename ( id ,  adt ,  " texture_slots " ,  NULL ,  NULL ,  act ,  act + 1 ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												BKE_animdata_fix_paths_rename ( id ,  adt ,  " texture_slots " ,  NULL ,  NULL ,  - 1 ,  act ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if ( GS ( id - > name ) = = ID_MA )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													Material  * ma =  ( Material  * ) id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													int  mtexuse  =  ma - > septex  &  ( 1 < < act ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													ma - > septex  & =  ~ ( 1 < < act ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													ma - > septex  | =  ( ma - > septex  &  ( 1 < < ( act + 1 ) ) )  > >  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													ma - > septex  & =  ~ ( 1 < < ( act + 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													ma - > septex  | =  mtexuse  < <  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-16 07:44:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												set_active_mtex ( id ,  act + 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-08 14:33:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										DAG_id_tag_update ( id ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										WM_event_add_notifier ( C ,  NC_TEXTURE ,  CTX_data_scene ( C ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OPERATOR_FINISHED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  TEXTURE_OT_slot_move ( wmOperatorType  * ot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									static  EnumPropertyItem  slot_move [ ]  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ - 1 ,  " UP " ,  0 ,  " Up " ,  " " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 1 ,  " DOWN " ,  0 ,  " Down " ,  " " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 0 ,  NULL ,  0 ,  NULL ,  NULL } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* identifiers */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > name  =  " Move Texture Slot " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > idname  =  " TEXTURE_OT_slot_move " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > description  =  " Move texture slots up and down " ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* api callbacks */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > exec  =  texture_slot_move ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* flags */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > flag  =  OPTYPE_REGISTER | OPTYPE_UNDO ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-22 23:22:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									RNA_def_enum ( ot - > srna ,  " type " ,  slot_move ,  0 ,  " Type " ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2010-01-28 17:31:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/********************** environment map operators *********************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-11-21 23:56:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  save_envmap ( wmOperator  * op ,  Scene  * scene ,  EnvMap  * env ,  char  * path ,  const  char  imtype )  
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-08-28 23:24:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									float  layout [ 12 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  (  RNA_struct_find_property ( op - > ptr ,  " layout " )  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										RNA_float_get_array ( op - > ptr ,  " layout " , layout ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										memcpy ( layout ,  default_envmap_layout ,  sizeof ( layout ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-12 02:44:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-08-28 23:24:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( RE_WriteEnvmapResult ( op - > reports ,  scene ,  env ,  path ,  imtype ,  layout ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  OPERATOR_FINISHED ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-12 02:44:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-13 04:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  OPERATOR_CANCELLED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2011-08-28 23:24:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  envmap_save_exec ( bContext  * C ,  wmOperator  * op )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Tex  * tex =  CTX_data_pointer_get_type ( C ,  " texture " ,  & RNA_Texture ) . data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Scene  * scene  =  CTX_data_scene ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									//int imtype = RNA_enum_get(op->ptr, "file_type");
 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-21 23:56:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									char  imtype  =  scene - > r . im_format . imtype ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									char  path [ FILE_MAX ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2010-06-14 03:52:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									RNA_string_get ( op - > ptr ,  " filepath " ,  path ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2012-02-27 10:35:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( scene - > r . scemode  &  R_EXTENSION )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										BKE_add_image_extension ( path ,  imtype ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									WM_cursor_wait ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									save_envmap ( op ,  scene ,  tex - > env ,  path ,  imtype ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									WM_cursor_wait ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									WM_event_add_notifier ( C ,  NC_TEXTURE ,  tex ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OPERATOR_FINISHED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-15 01:36:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  envmap_save_invoke ( bContext  * C ,  wmOperator  * op ,  wmEvent  * UNUSED ( event ) )  
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									//Scene *scene= CTX_data_scene(C);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2012-01-11 16:32:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( RNA_struct_property_is_set ( op - > ptr ,  " filepath " ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  envmap_save_exec ( C ,  op ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-11-21 20:19:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									//RNA_enum_set(op->ptr, "file_type", scene->r.im_format.imtype);
 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-18 06:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									RNA_string_set ( op - > ptr ,  " filepath " ,  G . main - > name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									WM_event_add_fileselect ( C ,  op ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OPERATOR_RUNNING_MODAL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  envmap_save_poll ( bContext  * C )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Tex  * tex =  CTX_data_pointer_get_type ( C ,  " texture " ,  & RNA_Texture ) . data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! tex )  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! tex - > env  | |  ! tex - > env - > ok ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( tex - > env - > cube [ 1 ] = = NULL ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  TEXTURE_OT_envmap_save ( wmOperatorType  * ot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-08-28 23:24:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									PropertyRNA  * prop ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/* identifiers */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > name  =  " Save Environment Map " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > idname  =  " TEXTURE_OT_envmap_save " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > description  =  " Save the current generated Environment map to an image file " ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* api callbacks */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > exec  =  envmap_save_exec ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > invoke  =  envmap_save_invoke ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > poll  =  envmap_save_poll ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* flags */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > flag  =  OPTYPE_REGISTER ;  /* no undo since this doesnt modify the env-map */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* properties */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-19 12:26:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									prop =  RNA_def_float_array ( ot - > srna ,  " layout " ,  12 ,  default_envmap_layout ,  0.0f ,  0.0f ,  " File layout " ,  " Flat array describing the X,Y position of each cube face in the output image, where 1 is the size of a face - order is [+Z -Z +Y -X -Y +X] (use -1 to skip a face) " ,  0.0f ,  0.0f ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-08-28 23:24:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									RNA_def_property_flag ( prop ,  PROP_HIDDEN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-01-24 18:18:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									WM_operator_properties_filesel ( ot ,  FOLDERFILE | IMAGEFILE | MOVIEFILE ,  FILE_SPECIAL ,  FILE_SAVE ,  WM_FILESEL_FILEPATH ,  FILE_DEFAULTDISPLAY ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-15 01:36:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  envmap_clear_exec ( bContext  * C ,  wmOperator  * UNUSED ( op ) )  
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Tex  * tex =  CTX_data_pointer_get_type ( C ,  " texture " ,  & RNA_Texture ) . data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BKE_free_envmapdata ( tex - > env ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									WM_event_add_notifier ( C ,  NC_TEXTURE | NA_EDITED ,  tex ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OPERATOR_FINISHED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  envmap_clear_poll ( bContext  * C )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Tex  * tex =  CTX_data_pointer_get_type ( C ,  " texture " ,  & RNA_Texture ) . data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! tex )  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! tex - > env  | |  ! tex - > env - > ok ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( tex - > env - > cube [ 1 ] = = NULL ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  TEXTURE_OT_envmap_clear ( wmOperatorType  * ot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* identifiers */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > name  =  " Clear Environment Map " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > idname  =  " TEXTURE_OT_envmap_clear " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > description  =  " Discard the environment map and free it from memory " ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* api callbacks */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > exec  =  envmap_clear_exec ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > poll  =  envmap_clear_poll ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* flags */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > flag  =  OPTYPE_REGISTER | OPTYPE_UNDO ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-15 01:36:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  envmap_clear_all_exec ( bContext  * C ,  wmOperator  * UNUSED ( op ) )  
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Main  * bmain  =  CTX_data_main ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Tex  * tex ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( tex = bmain - > tex . first ;  tex ;  tex = tex - > id . next ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-12 02:44:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( tex - > env ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											BKE_free_envmapdata ( tex - > env ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									WM_event_add_notifier ( C ,  NC_TEXTURE | NA_EDITED ,  tex ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OPERATOR_FINISHED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  TEXTURE_OT_envmap_clear_all ( wmOperatorType  * ot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* identifiers */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > name  =  " Clear All Environment Maps " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > idname  =  " TEXTURE_OT_envmap_clear_all " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > description  =  " Discard all environment maps in the .blend file and free them from memory " ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* api callbacks */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > exec  =  envmap_clear_all_exec ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > poll  =  envmap_clear_poll ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* flags */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > flag  =  OPTYPE_REGISTER | OPTYPE_UNDO ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 07:43:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/********************** material operators *********************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-28 17:31:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* material copy/paste */  
						 
					
						
							
								
									
										
										
										
											2010-10-15 01:36:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  copy_material_exec ( bContext  * C ,  wmOperator  * UNUSED ( op ) )  
						 
					
						
							
								
									
										
										
										
											2010-01-28 17:31:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Material  * ma =  CTX_data_pointer_get_type ( C ,  " material " ,  & RNA_Material ) . data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ma = = NULL ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-28 19:18:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  OPERATOR_CANCELLED ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-28 17:31:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									copy_matcopybuf ( ma ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OPERATOR_FINISHED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  MATERIAL_OT_copy ( wmOperatorType  * ot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* identifiers */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > name  =  " Copy Material " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > idname  =  " MATERIAL_OT_copy " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > description  =  " Copy the material settings and nodes " ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-28 17:31:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* api callbacks */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > exec  =  copy_material_exec ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-28 17:31:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* flags */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > flag  =  OPTYPE_REGISTER ;  /* no undo needed since no changes are made to the material */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-28 17:31:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-15 01:36:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  paste_material_exec ( bContext  * C ,  wmOperator  * UNUSED ( op ) )  
						 
					
						
							
								
									
										
										
										
											2010-01-28 17:31:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Material  * ma =  CTX_data_pointer_get_type ( C ,  " material " ,  & RNA_Material ) . data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ma = = NULL ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-28 17:50:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  OPERATOR_CANCELLED ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-28 17:31:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									paste_matcopybuf ( ma ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									WM_event_add_notifier ( C ,  NC_MATERIAL | ND_SHADING_DRAW ,  ma ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OPERATOR_FINISHED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  MATERIAL_OT_paste ( wmOperatorType  * ot )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* identifiers */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > name  =  " Paste Material " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > idname  =  " MATERIAL_OT_paste " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > description  =  " Paste the material settings and nodes " ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-28 17:31:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* api callbacks */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > exec  =  paste_material_exec ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-28 17:31:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* flags */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > flag  =  OPTYPE_REGISTER | OPTYPE_UNDO ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-28 17:31:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2010-03-09 09:17:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-29 05:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  short  mtexcopied = 0 ;  /* must be reset on file load */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  MTex  mtexcopybuf ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ED_render_clear_mtex_copybuf ( void )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ 	/* use for file reload */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									mtexcopied =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-14 17:55:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  copy_mtex_copybuf ( ID  * id )  
						 
					
						
							
								
									
										
										
										
											2010-03-09 09:17:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-03-29 05:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									MTex  * * mtex =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch ( GS ( id - > name ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  ID_MA : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											mtex =  & ( ( ( Material  * ) id ) - > mtex [ ( int ) ( ( Material  * ) id ) - > texact ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  ID_LA : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											mtex =  & ( ( ( Lamp  * ) id ) - > mtex [ ( int ) ( ( Lamp  * ) id ) - > texact ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// la->mtex[(int)la->texact] // TODO
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  ID_WO : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											mtex =  & ( ( ( World  * ) id ) - > mtex [ ( int ) ( ( World  * ) id ) - > texact ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// mtex= wrld->mtex[(int)wrld->texact]; // TODO
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-13 12:35:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  ID_PA : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											mtex =  & ( ( ( ParticleSettings  * ) id ) - > mtex [ ( int ) ( ( ParticleSettings  * ) id ) - > texact ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-29 05:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( mtex  & &  * mtex )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										memcpy ( & mtexcopybuf ,  * mtex ,  sizeof ( MTex ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										mtexcopied =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										mtexcopied =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2010-03-09 09:17:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-14 17:55:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  paste_mtex_copybuf ( ID  * id )  
						 
					
						
							
								
									
										
										
										
											2010-03-29 05:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									MTex  * * mtex =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( mtexcopied  = =  0  | |  mtexcopybuf . tex = = NULL ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch ( GS ( id - > name ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  ID_MA : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											mtex =  & ( ( ( Material  * ) id ) - > mtex [ ( int ) ( ( Material  * ) id ) - > texact ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  ID_LA : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											mtex =  & ( ( ( Lamp  * ) id ) - > mtex [ ( int ) ( ( Lamp  * ) id ) - > texact ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// la->mtex[(int)la->texact] // TODO
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  ID_WO : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											mtex =  & ( ( ( World  * ) id ) - > mtex [ ( int ) ( ( World  * ) id ) - > texact ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// mtex= wrld->mtex[(int)wrld->texact]; // TODO
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-13 12:35:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  ID_PA : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											mtex =  & ( ( ( ParticleSettings  * ) id ) - > mtex [ ( int ) ( ( ParticleSettings  * ) id ) - > texact ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-19 05:06:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											BLI_assert ( " invalid id type " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-29 05:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( mtex )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( * mtex = = NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											* mtex =  MEM_mallocN ( sizeof ( MTex ) ,  " mtex copy " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  if ( ( * mtex ) - > tex )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											( * mtex ) - > tex - > id . us - - ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										memcpy ( * mtex ,  & mtexcopybuf ,  sizeof ( MTex ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										id_us_plus ( ( ID  * ) mtexcopybuf . tex ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-15 01:36:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  copy_mtex_exec ( bContext  * C ,  wmOperator  * UNUSED ( op ) )  
						 
					
						
							
								
									
										
										
										
											2010-03-29 05:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ID  * id =  CTX_data_pointer_get_type ( C ,  " texture_slot " ,  & RNA_TextureSlot ) . id . data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( id = = NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										/* copying empty slot */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ED_render_clear_mtex_copybuf ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-09 09:17:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  OPERATOR_CANCELLED ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-29 05:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-09 09:17:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-29 05:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									copy_mtex_copybuf ( id ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-09 09:17:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OPERATOR_FINISHED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-29 05:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  copy_mtex_poll ( bContext  * C )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ID  * id =  CTX_data_pointer_get_type ( C ,  " texture_slot " ,  & RNA_TextureSlot ) . id . data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ( id  ! =  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  TEXTURE_OT_slot_copy ( wmOperatorType  * ot )  
						 
					
						
							
								
									
										
										
										
											2010-03-09 09:17:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* identifiers */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > name  =  " Copy Texture Slot Settings " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > idname  =  " TEXTURE_OT_slot_copy " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > description  =  " Copy the material texture settings and nodes " ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-09 09:17:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* api callbacks */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > exec  =  copy_mtex_exec ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > poll  =  copy_mtex_poll ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-29 05:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2010-03-09 09:17:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/* flags */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > flag  =  OPTYPE_REGISTER ;  /* no undo needed since no changes are made to the mtex */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-09 09:17:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-15 01:36:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  paste_mtex_exec ( bContext  * C ,  wmOperator  * UNUSED ( op ) )  
						 
					
						
							
								
									
										
										
										
											2010-03-09 09:17:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-03-29 05:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ID  * id =  CTX_data_pointer_get_type ( C ,  " texture_slot " ,  & RNA_TextureSlot ) . id . data ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-09 09:17:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-29 05:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( id = = NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Material  * ma =  CTX_data_pointer_get_type ( C ,  " material " ,  & RNA_Material ) . data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Lamp  * la =  CTX_data_pointer_get_type ( C ,  " lamp " ,  & RNA_Lamp ) . data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										World  * wo =  CTX_data_pointer_get_type ( C ,  " world " ,  & RNA_World ) . data ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-13 12:35:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ParticleSystem  * psys =  CTX_data_pointer_get_type ( C ,  " particle_system " ,  & RNA_ParticleSystem ) . data ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-29 05:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ma ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											id  =  & ma - > id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  if  ( la ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											id  =  & la - > id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  if  ( wo ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											id  =  & wo - > id ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-13 12:35:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										else  if  ( psys ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											id  =  & psys - > part - > id ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-29 05:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( id = = NULL ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  OPERATOR_CANCELLED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-09 09:17:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-29 05:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									paste_mtex_copybuf ( id ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-09 09:17:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-29 05:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									WM_event_add_notifier ( C ,  NC_TEXTURE | ND_SHADING_DRAW ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-09 09:17:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OPERATOR_FINISHED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-29 05:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  TEXTURE_OT_slot_paste ( wmOperatorType  * ot )  
						 
					
						
							
								
									
										
										
										
											2010-03-09 09:17:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* identifiers */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > name  =  " Paste Texture Slot Settings " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > idname  =  " TEXTURE_OT_slot_paste " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot - > description  =  " Copy the texture settings and nodes " ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-09 09:17:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* api callbacks */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > exec  =  paste_mtex_exec ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-09 09:17:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* flags */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-22 07:26:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot - > flag  =  OPTYPE_REGISTER | OPTYPE_UNDO ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-09 09:17:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2011-05-19 11:34:11 +00:00