diff options
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_layer.h | 57 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/layer_utils.c | 59 |
2 files changed, 79 insertions, 37 deletions
diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h index 9a6c3cf2b5f..d2cfb788ca2 100644 --- a/source/blender/blenkernel/BKE_layer.h +++ b/source/blender/blenkernel/BKE_layer.h @@ -10,6 +10,7 @@ #include "DNA_layer_types.h" #include "DNA_listBase.h" +#include "DNA_object_enums.h" #ifdef __cplusplus extern "C" { @@ -520,46 +521,28 @@ struct Object **BKE_view_layer_array_from_objects_in_mode_params( uint *len, const struct ObjectsInModeParams *params); -#define BKE_view_layer_array_from_objects_in_mode(view_layer, v3d, r_len, ...) \ - BKE_view_layer_array_from_objects_in_mode_params( \ - view_layer, v3d, r_len, &(const struct ObjectsInModeParams)__VA_ARGS__) - -#define BKE_view_layer_array_from_bases_in_mode(view_layer, v3d, r_len, ...) \ - BKE_view_layer_array_from_bases_in_mode_params( \ - view_layer, v3d, r_len, &(const struct ObjectsInModeParams)__VA_ARGS__) - bool BKE_view_layer_filter_edit_mesh_has_uvs(const struct Object *ob, void *user_data); bool BKE_view_layer_filter_edit_mesh_has_edges(const struct Object *ob, void *user_data); -/* Utility macros that wrap common args (add more as needed). */ - -#define BKE_view_layer_array_from_objects_in_edit_mode(view_layer, v3d, r_len) \ - BKE_view_layer_array_from_objects_in_mode(view_layer, v3d, r_len, {.object_mode = OB_MODE_EDIT}) - -#define BKE_view_layer_array_from_bases_in_edit_mode(view_layer, v3d, r_len) \ - BKE_view_layer_array_from_bases_in_mode(view_layer, v3d, r_len, {.object_mode = OB_MODE_EDIT}) - -#define BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, v3d, r_len) \ - BKE_view_layer_array_from_objects_in_mode( \ - view_layer, v3d, r_len, {.object_mode = OB_MODE_EDIT, .no_dup_data = true}) - -#define BKE_view_layer_array_from_bases_in_edit_mode_unique_data(view_layer, v3d, r_len) \ - BKE_view_layer_array_from_bases_in_mode( \ - view_layer, v3d, r_len, {.object_mode = OB_MODE_EDIT, .no_dup_data = true}) - -#define BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs( \ - view_layer, v3d, r_len) \ - BKE_view_layer_array_from_objects_in_mode( \ - view_layer, \ - v3d, \ - r_len, \ - {.object_mode = OB_MODE_EDIT, \ - .no_dup_data = true, \ - .filter_fn = BKE_view_layer_filter_edit_mesh_has_uvs}) - -#define BKE_view_layer_array_from_objects_in_mode_unique_data(view_layer, v3d, r_len, mode) \ - BKE_view_layer_array_from_objects_in_mode( \ - view_layer, v3d, r_len, {.object_mode = mode, .no_dup_data = true}) +/* Utility functions that wrap common arguments (add more as needed). */ + +struct Object **BKE_view_layer_array_from_objects_in_edit_mode(struct ViewLayer *view_layer, + const struct View3D *v3d, + uint *r_len); +struct Base **BKE_view_layer_array_from_bases_in_edit_mode(struct ViewLayer *view_layer, + const struct View3D *v3d, + uint *r_len); +struct Object **BKE_view_layer_array_from_objects_in_edit_mode_unique_data( + struct ViewLayer *view_layer, const struct View3D *v3d, uint *r_len); + +struct Base **BKE_view_layer_array_from_bases_in_edit_mode_unique_data( + struct ViewLayer *view_layer, const struct View3D *v3d, uint *r_len); +struct Object **BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs( + struct ViewLayer *view_layer, const struct View3D *v3d, uint *r_len); +struct Object **BKE_view_layer_array_from_objects_in_mode_unique_data(struct ViewLayer *view_layer, + const struct View3D *v3d, + uint *r_len, + eObjectMode mode); struct ViewLayerAOV *BKE_view_layer_add_aov(struct ViewLayer *view_layer); void BKE_view_layer_remove_aov(struct ViewLayer *view_layer, struct ViewLayerAOV *aov); diff --git a/source/blender/blenkernel/intern/layer_utils.c b/source/blender/blenkernel/intern/layer_utils.c index 0903c2a2cac..13e0a0bcf84 100644 --- a/source/blender/blenkernel/intern/layer_utils.c +++ b/source/blender/blenkernel/intern/layer_utils.c @@ -149,6 +149,65 @@ Object **BKE_view_layer_array_from_objects_in_mode_params(ViewLayer *view_layer, return (Object **)base_array; } +struct Object **BKE_view_layer_array_from_objects_in_edit_mode(ViewLayer *view_layer, + const View3D *v3d, + uint *r_len) +{ + struct ObjectsInModeParams params = {0}; + params.object_mode = OB_MODE_EDIT; + return BKE_view_layer_array_from_objects_in_mode_params(view_layer, v3d, r_len, ¶ms); +} + +struct Base **BKE_view_layer_array_from_bases_in_edit_mode(ViewLayer *view_layer, + const View3D *v3d, + uint *r_len) +{ + struct ObjectsInModeParams params = {0}; + params.object_mode = OB_MODE_EDIT; + return BKE_view_layer_array_from_bases_in_mode_params(view_layer, v3d, r_len, ¶ms); +} + +struct Object **BKE_view_layer_array_from_objects_in_edit_mode_unique_data(ViewLayer *view_layer, + const View3D *v3d, + uint *r_len) +{ + struct ObjectsInModeParams params = {0}; + params.object_mode = OB_MODE_EDIT; + params.no_dup_data = true; + return BKE_view_layer_array_from_objects_in_mode_params(view_layer, v3d, r_len, ¶ms); +} + +struct Base **BKE_view_layer_array_from_bases_in_edit_mode_unique_data(ViewLayer *view_layer, + const View3D *v3d, + uint *r_len) +{ + struct ObjectsInModeParams params = {0}; + params.object_mode = OB_MODE_EDIT; + params.no_dup_data = true; + return BKE_view_layer_array_from_bases_in_mode_params(view_layer, v3d, r_len, ¶ms); +} + +struct Object **BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs( + ViewLayer *view_layer, const View3D *v3d, uint *r_len) +{ + struct ObjectsInModeParams params = {0}; + params.object_mode = OB_MODE_EDIT; + params.no_dup_data = true; + params.filter_fn = BKE_view_layer_filter_edit_mesh_has_uvs; + return BKE_view_layer_array_from_objects_in_mode_params(view_layer, v3d, r_len, ¶ms); +} + +struct Object **BKE_view_layer_array_from_objects_in_mode_unique_data(ViewLayer *view_layer, + const View3D *v3d, + uint *r_len, + const eObjectMode mode) +{ + struct ObjectsInModeParams params = {0}; + params.object_mode = mode; + params.no_dup_data = true; + return BKE_view_layer_array_from_objects_in_mode_params(view_layer, v3d, r_len, ¶ms); +} + /** \} */ /* -------------------------------------------------------------------- */ |