@@ -31,45 +31,44 @@ def __init__(self):
3131 self ._used_vars [name ] = 0
3232
3333
34- def _create_scene (self , indent : str ):
34+ def _create_scene (self , indent_level : int ):
3535 #TODO: wrap in more general unique name util function
36- self ._write (f"# Generate unique scene name" , indent )
36+ self ._write (f"# Generate unique scene name" , indent_level )
3737 self ._write (f"{ BASE_NAME } = { str_to_py_str (self .compositor_name )} " ,
38- indent )
39- self ._write (f"{ END_NAME } = { BASE_NAME } " , indent )
40- self ._write (f"if bpy.data.scenes.get({ END_NAME } ) != None:" , indent )
38+ indent_level )
39+ self ._write (f"{ END_NAME } = { BASE_NAME } " , indent_level )
40+ self ._write (f"if bpy.data.scenes.get({ END_NAME } ) != None:" , indent_level )
4141
42- indent2 = f"{ indent } \t "
43- self ._write (f"{ INDEX } = 1" , indent2 )
42+ self ._write (f"{ INDEX } = 1" , indent_level + 1 )
4443 self ._write (f"{ END_NAME } = { BASE_NAME } + f\" .{{i:03d}}\" " ,
45- indent2 )
44+ indent_level + 1 )
4645 self ._write (f"while bpy.data.scenes.get({ END_NAME } ) != None:" ,
47- indent2 )
46+ indent_level + 1 )
4847
49- indent3 = f" { indent } \t \t "
50- self . _write ( f" { END_NAME } = { BASE_NAME } + f \" .{{ { INDEX } :03d}} \" " , indent3 )
51- self ._write (f"{ INDEX } += 1\n " , indent3 )
48+ self . _write ( f" { END_NAME } = { BASE_NAME } + f \" .{{ { INDEX } :03d}} \" " ,
49+ indent_level + 2 )
50+ self ._write (f"{ INDEX } += 1\n " , indent_level + 2 )
5251
53- self ._write (f"{ SCENE } = bpy.context.window.scene.copy()\n " , indent )
54- self ._write (f"{ SCENE } .name = { END_NAME } " , indent )
55- self ._write (f"{ SCENE } .use_fake_user = True" , indent )
56- self ._write (f"bpy.context.window.scene = { SCENE } " , indent )
52+ self ._write (f"{ SCENE } = bpy.context.window.scene.copy()\n " , indent_level )
53+ self ._write (f"{ SCENE } .name = { END_NAME } " , indent_level )
54+ self ._write (f"{ SCENE } .use_fake_user = True" , indent_level )
55+ self ._write (f"bpy.context.window.scene = { SCENE } " , indent_level )
5756
5857 def _initialize_compositor_node_tree (self , ntp_nt , nt_name ):
5958 #initialize node group
60- self ._write (f"#initialize { nt_name } node group" , self ._outer )
61- self ._write (f"def { ntp_nt .var } _node_group():" , self ._outer )
59+ self ._write (f"#initialize { nt_name } node group" , self ._outer_indent_level )
60+ self ._write (f"def { ntp_nt .var } _node_group():" , self ._outer_indent_level )
6261
6362 if ntp_nt .node_tree == self ._base_node_tree :
6463 self ._write (f"{ ntp_nt .var } = { SCENE } .node_tree" )
6564 self ._write (f"#start with a clean node tree" )
6665 self ._write (f"for { NODE } in { ntp_nt .var } .nodes:" )
67- self ._write (f"\t { ntp_nt .var } .nodes.remove({ NODE } )" )
66+ self ._write (f"{ ntp_nt .var } .nodes.remove({ NODE } )" , self . _inner_indent_level + 1 )
6867 else :
6968 self ._write ((f"{ ntp_nt .var } = bpy.data.node_groups.new("
7069 f"type = \' CompositorNodeTree\' , "
7170 f"name = { str_to_py_str (nt_name )} )" ))
72- self ._write ("" )
71+ self ._write ("" , 0 )
7372
7473 # Compositor node tree settings
7574 #TODO: might be good to make this optional
@@ -108,7 +107,7 @@ def _set_color_balance_settings(self, node: CompositorNodeColorBalance
108107 NTPNodeSetting ("gamma" , ST .COLOR , min_version_ = (3 , 5 , 0 )),
109108 NTPNodeSetting ("lift" , ST .VEC3 , max_version_ = (3 , 5 , 0 )),
110109 NTPNodeSetting ("lift" , ST .COLOR , min_version_ = (3 , 5 , 0 ))]
111- else :
110+ elif node . correction_method == 'OFFSET_POWER_SLOPE' :
112111 lst = [NTPNodeSetting ("correction_method" , ST .ENUM ),
113112 NTPNodeSetting ("offset" , ST .VEC3 , max_version_ = (3 , 5 , 0 )),
114113 NTPNodeSetting ("offset" , ST .COLOR , min_version_ = (3 , 5 , 0 )),
@@ -117,11 +116,20 @@ def _set_color_balance_settings(self, node: CompositorNodeColorBalance
117116 NTPNodeSetting ("power" , ST .COLOR , min_version_ = (3 , 5 , 0 )),
118117 NTPNodeSetting ("slope" , ST .VEC3 , max_version_ = (3 , 5 , 0 )),
119118 NTPNodeSetting ("slope" , ST .COLOR , min_version_ = (3 , 5 , 0 ))]
119+ elif node .correction_method == 'WHITEPOINT' :
120+ lst = [NTPNodeSetting ("correction_method" , ST .ENUM ),
121+ NTPNodeSetting ("input_temperature" , ST .FLOAT ),
122+ NTPNodeSetting ("input_tint" , ST .FLOAT ),
123+ NTPNodeSetting ("output_temperature" , ST .FLOAT ),
124+ NTPNodeSetting ("output_tint" , ST .FLOAT )]
125+ else :
126+ self .report ({'ERROR' },
127+ f"Unknown color balance correction method "
128+ f"{ enum_to_py_str (node .correction_method )} " )
129+ return
120130
121131 color_balance_info = self ._node_infos ['CompositorNodeColorBalance' ]
122132 self ._node_infos ['CompositorNodeColorBalance' ] = color_balance_info ._replace (attributes_ = lst )
123- for setting in self ._node_infos ['CompositorNodeColorBalance' ].attributes_ :
124- print (setting .name_ )
125133
126134 def _process_node (self , node : Node , ntp_nt : NTP_NodeTree ):
127135 """
@@ -191,7 +199,7 @@ def _process_node_tree(self, node_tree: CompositorNodeTree):
191199 self ._write (f"return { nt_var } \n " )
192200
193201 #create node group
194- self ._write (f"{ nt_var } = { nt_var } _node_group()\n " , self ._outer )
202+ self ._write (f"{ nt_var } = { nt_var } _node_group()\n " , self ._outer_indent_level )
195203
196204 def execute (self , context ):
197205 if not self ._setup_options (context .scene .ntp_options ):
@@ -214,8 +222,8 @@ def execute(self, context):
214222 comp_var = clean_string (self .compositor_name )
215223
216224 if self ._mode == 'ADDON' :
217- self ._outer = " \t \t "
218- self ._inner = " \t \t \t "
225+ self ._outer_indent_level = 2
226+ self ._inner_indent_level = 3
219227
220228 if not self ._setup_addon_directories (context , comp_var ):
221229 return {'CANCELLED' }
@@ -226,25 +234,25 @@ def execute(self, context):
226234 self ._class_name = clean_string (self .compositor_name , lower = False )
227235 self ._init_operator (comp_var , self .compositor_name )
228236
229- self ._write ("def execute(self, context):" , " \t " )
237+ self ._write ("def execute(self, context):" , 1 )
230238 else :
231239 self ._file = StringIO ("" )
232240 if self ._include_imports :
233241 self ._file .write ("import bpy, mathutils\n \n " )
234242
235243 if self .is_scene :
236244 if self ._mode == 'ADDON' :
237- self ._create_scene (" \t \t " )
245+ self ._create_scene (2 )
238246 elif self ._mode == 'SCRIPT' :
239- self ._create_scene ("" )
247+ self ._create_scene (0 )
240248
241249 node_trees_to_process = self ._topological_sort (self ._base_node_tree )
242250
243251 for node_tree in node_trees_to_process :
244252 self ._process_node_tree (node_tree )
245253
246254 if self ._mode == 'ADDON' :
247- self ._write ("return {'FINISHED'}\n " , self ._outer )
255+ self ._write ("return {'FINISHED'}\n " , self ._outer_indent_level )
248256
249257 self ._create_menu_func ()
250258 self ._create_register_func ()
0 commit comments