diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-03-19 00:14:53 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-03-20 17:19:03 +0300 |
commit | fc72a2ff4b470b1563d8480d231ca5b1b03a7983 (patch) | |
tree | 3fa13f6ff2c3b4fd3610992318171cb1799eebfd /source/blender/draw/modes/edit_curve_mode.c | |
parent | 69a17bce1a29f89859d0148733e8f1086b033432 (diff) |
Draw module: code style, encapsulate static vars
Diffstat (limited to 'source/blender/draw/modes/edit_curve_mode.c')
-rw-r--r-- | source/blender/draw/modes/edit_curve_mode.c | 82 |
1 files changed, 43 insertions, 39 deletions
diff --git a/source/blender/draw/modes/edit_curve_mode.c b/source/blender/draw/modes/edit_curve_mode.c index 49b48396613..745342a4f19 100644 --- a/source/blender/draw/modes/edit_curve_mode.c +++ b/source/blender/draw/modes/edit_curve_mode.c @@ -33,6 +33,12 @@ #include "draw_mode_engines.h" +/* If needed, contains all global/Theme colors + * Add needed theme colors / values to DRW_globals_update() and update UBO + * Not needed for constant color. */ +extern struct GPUUniformBuffer *globals_ubo; /* draw_common.c */ +extern struct GlobalsUboStorage ts; /* draw_common.c */ + /* *********** LISTS *********** */ /* All lists are per viewport specific datas. * They are all free when viewport changes engines @@ -85,26 +91,24 @@ typedef struct EDIT_CURVE_Data { /* *********** STATIC *********** */ -/* This keeps the references of the shading groups for - * easy access in EDIT_CURVE_cache_populate() */ -static DRWShadingGroup *group; - -/* If needed, contains all global/Theme colors - * Add needed theme colors / values to DRW_globals_update() and update UBO - * Not needed for constant color. */ -extern struct GPUUniformBuffer *globals_ubo; /* draw_common.c */ -extern struct GlobalsUboStorage ts; /* draw_common.c */ - -/* Custom shaders : - * Add sources to source/blender/draw/modes/shaders - * init in EDIT_CURVE_engine_init(); - * free in EDIT_CURVE_engine_free(); */ -static struct GPUShader *custom_shader = NULL; - -/* This keeps the reference of the viewport engine data because - * DRW_viewport_engine_data_get is slow and we don't want to - * call it for every object */ -static EDIT_CURVE_Data *vedata; +static struct { + /* Custom shaders : + * Add sources to source/blender/draw/modes/shaders + * init in EDIT_CURVE_engine_init(); + * free in EDIT_CURVE_engine_free(); */ + struct GPUShader *custom_shader; +} e_data = {NULL}; /* Engine data */ + +static struct { + /* This keeps the reference of the viewport engine data because + * DRW_viewport_engine_data_get is slow and we don't want to + * call it for every object */ + EDIT_CURVE_Data *vedata; + + /* This keeps the references of the shading groups for + * easy access in EDIT_CURVE_cache_populate() */ + DRWShadingGroup *group; +} g_data = {NULL}; /* Transient data */ /* *********** FUNCTIONS *********** */ @@ -113,10 +117,10 @@ static EDIT_CURVE_Data *vedata; * (Optional) */ static void EDIT_CURVE_engine_init(void) { - vedata = DRW_viewport_engine_data_get("EditCurveMode"); - EDIT_CURVE_TextureList *txl = vedata->txl; - EDIT_CURVE_FramebufferList *fbl = vedata->fbl; - EDIT_CURVE_StorageList *stl = vedata->stl; + g_data.vedata = DRW_viewport_engine_data_get("EditCurveMode"); + EDIT_CURVE_TextureList *txl = g_data.vedata->txl; + EDIT_CURVE_FramebufferList *fbl = g_data.vedata->fbl; + EDIT_CURVE_StorageList *stl = g_data.vedata->stl; UNUSED_VARS(txl, fbl, stl); @@ -135,8 +139,8 @@ static void EDIT_CURVE_engine_init(void) * tex, 2); */ - if (!custom_shader) { - custom_shader = GPU_shader_get_builtin_shader(GPU_SHADER_3D_UNIFORM_COLOR); + if (!e_data.custom_shader) { + e_data.custom_shader = GPU_shader_get_builtin_shader(GPU_SHADER_3D_UNIFORM_COLOR); } } @@ -144,9 +148,9 @@ static void EDIT_CURVE_engine_init(void) * Assume that all Passes are NULL */ static void EDIT_CURVE_cache_init(void) { - vedata = DRW_viewport_engine_data_get("EditCurveMode"); - EDIT_CURVE_PassList *psl = vedata->psl; - EDIT_CURVE_StorageList *stl = vedata->stl; + g_data.vedata = DRW_viewport_engine_data_get("EditCurveMode"); + EDIT_CURVE_PassList *psl = g_data.vedata->psl; + EDIT_CURVE_StorageList *stl = g_data.vedata->stl; UNUSED_VARS(stl); @@ -157,16 +161,16 @@ static void EDIT_CURVE_cache_init(void) /* Create a shadingGroup using a function in draw_common.c or custom one */ /* - * group = shgroup_dynlines_uniform_color(psl->pass, ts.colorWire); + * g_data.group = shgroup_dynlines_uniform_color(psl->pass, ts.colorWire); * -- or -- - * group = DRW_shgroup_create(custom_shader, psl->pass); + * g_data.group = DRW_shgroup_create(e_data.custom_shader, psl->pass); */ - group = DRW_shgroup_create(custom_shader, psl->pass); + g_data.group = DRW_shgroup_create(e_data.custom_shader, psl->pass); /* Uniforms need a pointer to it's value so be sure it's accessible at * any given time (i.e. use static vars) */ static float color[4] = {0.2f, 0.5f, 0.3f, 1.0}; - DRW_shgroup_uniform_vec4(group, "color", color, 1); + DRW_shgroup_uniform_vec4(g_data.group, "color", color, 1); } } @@ -174,8 +178,8 @@ static void EDIT_CURVE_cache_init(void) /* Add geometry to shadingGroups. Execute for each objects */ static void EDIT_CURVE_cache_populate(Object *ob) { - EDIT_CURVE_PassList *psl = vedata->psl; - EDIT_CURVE_StorageList *stl = vedata->stl; + EDIT_CURVE_PassList *psl = g_data.vedata->psl; + EDIT_CURVE_StorageList *stl = g_data.vedata->stl; UNUSED_VARS(psl, stl); @@ -184,15 +188,15 @@ static void EDIT_CURVE_cache_populate(Object *ob) struct Batch *geom = DRW_cache_surface_get(ob); /* Add geom to a shading group */ - DRW_shgroup_call_add(group, geom, ob->obmat); + DRW_shgroup_call_add(g_data.group, geom, ob->obmat); } } /* Optional: Post-cache_populate callback */ static void EDIT_CURVE_cache_finish(void) { - EDIT_CURVE_PassList *psl = vedata->psl; - EDIT_CURVE_StorageList *stl = vedata->stl; + EDIT_CURVE_PassList *psl = g_data.vedata->psl; + EDIT_CURVE_StorageList *stl = g_data.vedata->stl; /* Do something here! dependant on the objects gathered */ UNUSED_VARS(psl, stl); @@ -203,7 +207,7 @@ static void EDIT_CURVE_draw_scene(void) { EDIT_CURVE_Data *ved = DRW_viewport_engine_data_get("EditCurveMode"); EDIT_CURVE_PassList *psl = ved->psl; - EDIT_CURVE_FramebufferList *fbl = vedata->fbl; + EDIT_CURVE_FramebufferList *fbl = ved->fbl; /* Default framebuffer and texture */ DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get(); |