[Bf-blender-cvs] [fda4f8755b4] temp-workspace-changes: Context: Expose "engine" for Python and add BKE_render_engine_get()
Dalai Felinto
noreply at git.blender.org
Fri Sep 8 23:55:07 CEST 2017
Commit: fda4f8755b43ca15deac8711905f2a539253ecd9
Author: Dalai Felinto
Date: Fri Sep 8 22:29:43 2017 +0200
Branches: temp-workspace-changes
https://developer.blender.org/rBfda4f8755b43ca15deac8711905f2a539253ecd9
Context: Expose "engine" for Python and add BKE_render_engine_get()
===================================================================
M source/blender/blenkernel/BKE_context.h
M source/blender/blenkernel/BKE_scene.h
M source/blender/blenkernel/BKE_workspace.h
M source/blender/blenkernel/intern/context.c
M source/blender/blenkernel/intern/scene.c
M source/blender/blenkernel/intern/workspace.c
M source/blender/makesrna/intern/rna_context.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_context.h b/source/blender/blenkernel/BKE_context.h
index 350d7a40875..82404e72e17 100644
--- a/source/blender/blenkernel/BKE_context.h
+++ b/source/blender/blenkernel/BKE_context.h
@@ -251,6 +251,7 @@ struct Scene *CTX_data_scene(const bContext *C);
struct LayerCollection *CTX_data_layer_collection(const bContext *C);
struct SceneCollection *CTX_data_scene_collection(const bContext *C);
struct SceneLayer *CTX_data_scene_layer(const bContext *C);
+const char *CTX_data_engine(const bContext *C);
struct ToolSettings *CTX_data_tool_settings(const bContext *C);
const char *CTX_data_mode_string(const bContext *C);
diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h
index d9dca3c7e85..dbe6d0ebbaf 100644
--- a/source/blender/blenkernel/BKE_scene.h
+++ b/source/blender/blenkernel/BKE_scene.h
@@ -170,6 +170,7 @@ int BKE_scene_num_threads(const struct Scene *scene);
int BKE_render_num_threads(const struct RenderData *r);
int BKE_render_preview_pixel_size(const struct RenderData *r);
+const char *BKE_render_engine_get(const struct Scene *scene, const struct WorkSpace *workspace);
double BKE_scene_unit_scale(const struct UnitSettings *unit, const int unit_type, double value);
diff --git a/source/blender/blenkernel/BKE_workspace.h b/source/blender/blenkernel/BKE_workspace.h
index 14c4247f768..d4b353be4b3 100644
--- a/source/blender/blenkernel/BKE_workspace.h
+++ b/source/blender/blenkernel/BKE_workspace.h
@@ -115,7 +115,7 @@ struct WorkSpaceLayout *BKE_workspace_hook_layout_for_workspace_get(
void BKE_workspace_hook_layout_for_workspace_set(
struct WorkSpaceInstanceHook *hook, struct WorkSpace *workspace, struct WorkSpaceLayout *layout) ATTR_NONNULL();
-const char *BKE_workspace_engine_get(struct WorkSpace *workspace) GETTER_ATTRS;
+const char *BKE_workspace_engine_get(const struct WorkSpace *workspace) GETTER_ATTRS;
void BKE_workspace_engine_set(struct WorkSpace *workspace, const char *engine) SETTER_ATTRS;
/* flags */
diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c
index e9b0b591bf2..eaac6bf8c59 100644
--- a/source/blender/blenkernel/intern/context.c
+++ b/source/blender/blenkernel/intern/context.c
@@ -931,6 +931,20 @@ SceneLayer *CTX_data_scene_layer(const bContext *C)
}
}
+const char *CTX_data_engine(const bContext *C)
+{
+ const char *engine;
+
+ if (ctx_data_pointer_verify(C, "engine", (void *)&engine)) {
+ return engine;
+ }
+
+ Scene *scene = CTX_data_scene(C);
+ WorkSpace *workspace = CTX_wm_workspace(C);
+
+ return BKE_render_engine_get(scene, workspace);
+}
+
/**
* This is tricky. Sometimes the user overrides the render_layer
* but not the scene_collection. In this case what to do?
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index b3d9bd79760..493bfec842e 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -49,6 +49,7 @@
#include "DNA_space_types.h"
#include "DNA_view3d_types.h"
#include "DNA_windowmanager_types.h"
+#include "DNA_workspace_types.h"
#include "DNA_gpencil_types.h"
#include "BLI_math.h"
@@ -2071,6 +2072,14 @@ int BKE_render_preview_pixel_size(const RenderData *r)
return r->preview_pixel_size;
}
+const char *BKE_render_engine_get(const Scene *scene, const WorkSpace *workspace)
+{
+ if (workspace == NULL || BKE_workspace_use_scene_settings_get(workspace)) {
+ return scene->r.engine;
+ }
+ return BKE_workspace_engine_get(workspace);
+}
+
/* Apply the needed correction factor to value, based on unit_type (only length-related are affected currently)
* and unit->scale_length.
*/
diff --git a/source/blender/blenkernel/intern/workspace.c b/source/blender/blenkernel/intern/workspace.c
index 14cd7d28e59..e1911a7990a 100644
--- a/source/blender/blenkernel/intern/workspace.c
+++ b/source/blender/blenkernel/intern/workspace.c
@@ -435,7 +435,7 @@ void BKE_workspace_hook_layout_for_workspace_set(
/**
* Get the render engine of a workspace, to be used in the viewport.
*/
-const char *BKE_workspace_engine_get(WorkSpace *workspace)
+const char *BKE_workspace_engine_get(const WorkSpace *workspace)
{
return (const char *)workspace->engine;
}
diff --git a/source/blender/makesrna/intern/rna_context.c b/source/blender/makesrna/intern/rna_context.c
index 5701150b1bf..b70e443fe65 100644
--- a/source/blender/makesrna/intern/rna_context.c
+++ b/source/blender/makesrna/intern/rna_context.c
@@ -133,6 +133,18 @@ static PointerRNA rna_Context_scene_layer_get(PointerRNA *ptr)
return rna_pointer_inherit_refine(ptr, &RNA_SceneLayer, CTX_data_scene_layer(C));
}
+static void rna_Context_engine_get(PointerRNA *ptr, char *value)
+ {
+ bContext *C = (bContext *)ptr->data;
+ strcpy(value, CTX_data_engine(C));
+}
+
+static int rna_Context_engine_length(PointerRNA *ptr)
+{
+ bContext *C = (bContext *)ptr->data;
+ return strlen(CTX_data_engine(C));
+}
+
static PointerRNA rna_Context_scene_collection_get(PointerRNA *ptr)
{
bContext *C = (bContext *)ptr->data;
@@ -263,6 +275,10 @@ void RNA_def_context(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "SceneLayer");
RNA_def_property_pointer_funcs(prop, "rna_Context_scene_layer_get", NULL, NULL, NULL);
+ prop = RNA_def_property(srna, "engine", PROP_STRING, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_string_funcs(prop, "rna_Context_engine_get", "rna_Context_engine_length", NULL);
+
prop = RNA_def_property(srna, "scene_collection", PROP_POINTER, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "SceneCollection");
More information about the Bf-blender-cvs
mailing list