Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-04-17 07:17:24 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-04-17 07:21:24 +0300
commite12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 (patch)
tree8cf3453d12edb177a218ef8009357518ec6cab6a /source/blender/windowmanager/gizmo/intern/wm_gizmo.c
parentb3dabc200a4b0399ec6b81f2ff2730d07b44fcaa (diff)
ClangFormat: apply to source, most of intern
Apply clang format as proposed in T53211. For details on usage and instructions for migrating branches without conflicts, see: https://wiki.blender.org/wiki/Tools/ClangFormat
Diffstat (limited to 'source/blender/windowmanager/gizmo/intern/wm_gizmo.c')
-rw-r--r--source/blender/windowmanager/gizmo/intern/wm_gizmo.c903
1 files changed, 441 insertions, 462 deletions
diff --git a/source/blender/windowmanager/gizmo/intern/wm_gizmo.c b/source/blender/windowmanager/gizmo/intern/wm_gizmo.c
index 1a4141c0178..997afb1dc6c 100644
--- a/source/blender/windowmanager/gizmo/intern/wm_gizmo.c
+++ b/source/blender/windowmanager/gizmo/intern/wm_gizmo.c
@@ -49,7 +49,7 @@
#include "UI_interface.h"
#ifdef WITH_PYTHON
-#include "BPY_extern.h"
+# include "BPY_extern.h"
#endif
/* only for own init/exit calls (wm_gizmotype_init/wm_gizmotype_free) */
@@ -59,58 +59,53 @@
#include "wm_gizmo_wmapi.h"
#include "wm_gizmo_intern.h"
-static void wm_gizmo_register(
- wmGizmoGroup *gzgroup, wmGizmo *gz);
+static void wm_gizmo_register(wmGizmoGroup *gzgroup, wmGizmo *gz);
/**
* \note Follow #wm_operator_create convention.
*/
-static wmGizmo *wm_gizmo_create(
- const wmGizmoType *gzt,
- PointerRNA *properties)
+static wmGizmo *wm_gizmo_create(const wmGizmoType *gzt, PointerRNA *properties)
{
- BLI_assert(gzt != NULL);
- BLI_assert(gzt->struct_size >= sizeof(wmGizmo));
+ BLI_assert(gzt != NULL);
+ BLI_assert(gzt->struct_size >= sizeof(wmGizmo));
- wmGizmo *gz = MEM_callocN(
- gzt->struct_size + (sizeof(wmGizmoProperty) * gzt->target_property_defs_len), __func__);
- gz->type = gzt;
+ wmGizmo *gz = MEM_callocN(
+ gzt->struct_size + (sizeof(wmGizmoProperty) * gzt->target_property_defs_len), __func__);
+ gz->type = gzt;
- /* initialize properties, either copy or create */
- gz->ptr = MEM_callocN(sizeof(PointerRNA), "wmGizmoPtrRNA");
- if (properties && properties->data) {
- gz->properties = IDP_CopyProperty(properties->data);
- }
- else {
- IDPropertyTemplate val = {0};
- gz->properties = IDP_New(IDP_GROUP, &val, "wmGizmoProperties");
- }
- RNA_pointer_create(G_MAIN->wm.first, gzt->srna, gz->properties, gz->ptr);
+ /* initialize properties, either copy or create */
+ gz->ptr = MEM_callocN(sizeof(PointerRNA), "wmGizmoPtrRNA");
+ if (properties && properties->data) {
+ gz->properties = IDP_CopyProperty(properties->data);
+ }
+ else {
+ IDPropertyTemplate val = {0};
+ gz->properties = IDP_New(IDP_GROUP, &val, "wmGizmoProperties");
+ }
+ RNA_pointer_create(G_MAIN->wm.first, gzt->srna, gz->properties, gz->ptr);
- WM_gizmo_properties_sanitize(gz->ptr, 0);
+ WM_gizmo_properties_sanitize(gz->ptr, 0);
- unit_m4(gz->matrix_space);
- unit_m4(gz->matrix_basis);
- unit_m4(gz->matrix_offset);
+ unit_m4(gz->matrix_space);
+ unit_m4(gz->matrix_basis);
+ unit_m4(gz->matrix_offset);
- gz->drag_part = -1;
+ gz->drag_part = -1;
- return gz;
+ return gz;
}
-wmGizmo *WM_gizmo_new_ptr(
- const wmGizmoType *gzt, wmGizmoGroup *gzgroup,
- PointerRNA *properties)
+wmGizmo *WM_gizmo_new_ptr(const wmGizmoType *gzt, wmGizmoGroup *gzgroup, PointerRNA *properties)
{
- wmGizmo *gz = wm_gizmo_create(gzt, properties);
+ wmGizmo *gz = wm_gizmo_create(gzt, properties);
- wm_gizmo_register(gzgroup, gz);
+ wm_gizmo_register(gzgroup, gz);
- if (gz->type->setup != NULL) {
- gz->type->setup(gz);
- }
+ if (gz->type->setup != NULL) {
+ gz->type->setup(gz);
+ }
- return gz;
+ return gz;
}
/**
@@ -118,12 +113,10 @@ wmGizmo *WM_gizmo_new_ptr(
* if you need to check it exists use #WM_gizmo_new_ptr
* because callers of this function don't NULL check the return value.
*/
-wmGizmo *WM_gizmo_new(
- const char *idname, wmGizmoGroup *gzgroup,
- PointerRNA *properties)
+wmGizmo *WM_gizmo_new(const char *idname, wmGizmoGroup *gzgroup, PointerRNA *properties)
{
- const wmGizmoType *gzt = WM_gizmotype_find(idname, false);
- return WM_gizmo_new_ptr(gzt, gzgroup, properties);
+ const wmGizmoType *gzt = WM_gizmotype_find(idname, false);
+ return WM_gizmo_new_ptr(gzt, gzgroup, properties);
}
/**
@@ -131,14 +124,14 @@ wmGizmo *WM_gizmo_new(
*/
static void gizmo_init(wmGizmo *gz)
{
- const float color_default[4] = {1.0f, 1.0f, 1.0f, 1.0f};
+ const float color_default[4] = {1.0f, 1.0f, 1.0f, 1.0f};
- gz->scale_basis = 1.0f;
- gz->line_width = 1.0f;
+ gz->scale_basis = 1.0f;
+ gz->line_width = 1.0f;
- /* defaults */
- copy_v4_v4(gz->color, color_default);
- copy_v4_v4(gz->color_hi, color_default);
+ /* defaults */
+ copy_v4_v4(gz->color, color_default);
+ copy_v4_v4(gz->color_hi, color_default);
}
/**
@@ -148,8 +141,8 @@ static void gizmo_init(wmGizmo *gz)
*/
static void wm_gizmo_register(wmGizmoGroup *gzgroup, wmGizmo *gz)
{
- gizmo_init(gz);
- wm_gizmogroup_gizmo_register(gzgroup, gz);
+ gizmo_init(gz);
+ wm_gizmogroup_gizmo_register(gzgroup, gz);
}
/**
@@ -159,41 +152,41 @@ static void wm_gizmo_register(wmGizmoGroup *gzgroup, wmGizmo *gz)
*/
void WM_gizmo_free(wmGizmo *gz)
{
- if (gz->type->free != NULL) {
- gz->type->free(gz);
- }
+ if (gz->type->free != NULL) {
+ gz->type->free(gz);
+ }
#ifdef WITH_PYTHON
- if (gz->py_instance) {
- /* do this first in case there are any __del__ functions or
- * similar that use properties */
- BPY_DECREF_RNA_INVALIDATE(gz->py_instance);
- }
+ if (gz->py_instance) {
+ /* do this first in case there are any __del__ functions or
+ * similar that use properties */
+ BPY_DECREF_RNA_INVALIDATE(gz->py_instance);
+ }
#endif
- if (gz->op_data) {
- for (int i = 0; i < gz->op_data_len; i++) {
- WM_operator_properties_free(&gz->op_data[i].ptr);
- }
- MEM_freeN(gz->op_data);
- }
+ if (gz->op_data) {
+ for (int i = 0; i < gz->op_data_len; i++) {
+ WM_operator_properties_free(&gz->op_data[i].ptr);
+ }
+ MEM_freeN(gz->op_data);
+ }
- if (gz->ptr != NULL) {
- WM_gizmo_properties_free(gz->ptr);
- MEM_freeN(gz->ptr);
- }
+ if (gz->ptr != NULL) {
+ WM_gizmo_properties_free(gz->ptr);
+ MEM_freeN(gz->ptr);
+ }
- if (gz->type->target_property_defs_len != 0) {
- wmGizmoProperty *gz_prop_array = WM_gizmo_target_property_array(gz);
- for (int i = 0; i < gz->type->target_property_defs_len; i++) {
- wmGizmoProperty *gz_prop = &gz_prop_array[i];
- if (gz_prop->custom_func.free_fn) {
- gz_prop->custom_func.free_fn(gz, gz_prop);
- }
- }
- }
+ if (gz->type->target_property_defs_len != 0) {
+ wmGizmoProperty *gz_prop_array = WM_gizmo_target_property_array(gz);
+ for (int i = 0; i < gz->type->target_property_defs_len; i++) {
+ wmGizmoProperty *gz_prop = &gz_prop_array[i];
+ if (gz_prop->custom_func.free_fn) {
+ gz_prop->custom_func.free_fn(gz, gz_prop);
+ }
+ }
+ }
- MEM_freeN(gz);
+ MEM_freeN(gz);
}
/**
@@ -202,25 +195,25 @@ void WM_gizmo_free(wmGizmo *gz)
*/
void WM_gizmo_unlink(ListBase *gizmolist, wmGizmoMap *gzmap, wmGizmo *gz, bContext *C)
{
- if (gz->state & WM_GIZMO_STATE_HIGHLIGHT) {
- wm_gizmomap_highlight_set(gzmap, C, NULL, 0);
- }
- if (gz->state & WM_GIZMO_STATE_MODAL) {
- wm_gizmomap_modal_set(gzmap, C, gz, NULL, false);
- }
- /* Unlink instead of setting so we don't run callbacks. */
- if (gz->state & WM_GIZMO_STATE_SELECT) {
- WM_gizmo_select_unlink(gzmap, gz);
- }
+ if (gz->state & WM_GIZMO_STATE_HIGHLIGHT) {
+ wm_gizmomap_highlight_set(gzmap, C, NULL, 0);
+ }
+ if (gz->state & WM_GIZMO_STATE_MODAL) {
+ wm_gizmomap_modal_set(gzmap, C, gz, NULL, false);
+ }
+ /* Unlink instead of setting so we don't run callbacks. */
+ if (gz->state & WM_GIZMO_STATE_SELECT) {
+ WM_gizmo_select_unlink(gzmap, gz);
+ }
- if (gizmolist) {
- BLI_remlink(gizmolist, gz);
- }
+ if (gizmolist) {
+ BLI_remlink(gizmolist, gz);
+ }
- BLI_assert(gzmap->gzmap_context.highlight != gz);
- BLI_assert(gzmap->gzmap_context.modal != gz);
+ BLI_assert(gzmap->gzmap_context.highlight != gz);
+ BLI_assert(gzmap->gzmap_context.modal != gz);
- WM_gizmo_free(gz);
+ WM_gizmo_free(gz);
}
/* -------------------------------------------------------------------- */
@@ -230,162 +223,160 @@ void WM_gizmo_unlink(ListBase *gizmolist, wmGizmoMap *gzmap, wmGizmo *gz, bConte
*
* \{ */
-struct wmGizmoOpElem *WM_gizmo_operator_get(
- wmGizmo *gz, int part_index)
+struct wmGizmoOpElem *WM_gizmo_operator_get(wmGizmo *gz, int part_index)
{
- if (gz->op_data && ((part_index >= 0) && (part_index < gz->op_data_len))) {
- return &gz->op_data[part_index];
- }
- return NULL;
+ if (gz->op_data && ((part_index >= 0) && (part_index < gz->op_data_len))) {
+ return &gz->op_data[part_index];
+ }
+ return NULL;
}
-PointerRNA *WM_gizmo_operator_set(
- wmGizmo *gz, int part_index,
- wmOperatorType *ot, IDProperty *properties)
+PointerRNA *WM_gizmo_operator_set(wmGizmo *gz,
+ int part_index,
+ wmOperatorType *ot,
+ IDProperty *properties)
{
- BLI_assert(part_index < 255);
- /* We could pre-allocate these but using multiple is such a rare thing. */
- if (part_index >= gz->op_data_len) {
- gz->op_data_len = part_index + 1;
- gz->op_data = MEM_recallocN(gz->op_data, sizeof(*gz->op_data) * gz->op_data_len);
- }
- wmGizmoOpElem *gzop = &gz->op_data[part_index];
- gzop->type = ot;
+ BLI_assert(part_index < 255);
+ /* We could pre-allocate these but using multiple is such a rare thing. */
+ if (part_index >= gz->op_data_len) {
+ gz->op_data_len = part_index + 1;
+ gz->op_data = MEM_recallocN(gz->op_data, sizeof(*gz->op_data) * gz->op_data_len);
+ }
+ wmGizmoOpElem *gzop = &gz->op_data[part_index];
+ gzop->type = ot;
- if (gzop->ptr.data) {
- WM_operator_properties_free(&gzop->ptr);
- }
- WM_operator_properties_create_ptr(&gzop->ptr, ot);
+ if (gzop->ptr.data) {
+ WM_operator_properties_free(&gzop->ptr);
+ }
+ WM_operator_properties_create_ptr(&gzop->ptr, ot);
- if (properties) {
- gzop->ptr.data = properties;
- }
+ if (properties) {
+ gzop->ptr.data = properties;
+ }
- return &gzop->ptr;
+ return &gzop->ptr;
}
int WM_gizmo_operator_invoke(bContext *C, wmGizmo *gz, wmGizmoOpElem *gzop)
{
- if (gz->flag & WM_GIZMO_OPERATOR_TOOL_INIT) {
- /* Merge toolsettings into the gizmo properties. */
- PointerRNA tref_ptr;
- bToolRef *tref = WM_toolsystem_ref_from_context(C);
- if (tref && WM_toolsystem_ref_properties_get_from_operator(tref, gzop->type, &tref_ptr)) {
- if (gzop->ptr.data == NULL) {
- IDPropertyTemplate val = {0};
- gzop->ptr.data = IDP_New(IDP_GROUP, &val, "wmOperatorProperties");
- }
- IDP_MergeGroup(gzop->ptr.data, tref_ptr.data, false);
- }
- }
- return WM_operator_name_call_ptr(C, gzop->type, WM_OP_INVOKE_DEFAULT, &gzop->ptr);
-}
-
-static void wm_gizmo_set_matrix_rotation_from_z_axis__internal(
- float matrix[4][4], const float z_axis[3])
-{
- /* old code, seems we can use simpler method */
+ if (gz->flag & WM_GIZMO_OPERATOR_TOOL_INIT) {
+ /* Merge toolsettings into the gizmo properties. */
+ PointerRNA tref_ptr;
+ bToolRef *tref = WM_toolsystem_ref_from_context(C);
+ if (tref && WM_toolsystem_ref_properties_get_from_operator(tref, gzop->type, &tref_ptr)) {
+ if (gzop->ptr.data == NULL) {
+ IDPropertyTemplate val = {0};
+ gzop->ptr.data = IDP_New(IDP_GROUP, &val, "wmOperatorProperties");
+ }
+ IDP_MergeGroup(gzop->ptr.data, tref_ptr.data, false);
+ }
+ }
+ return WM_operator_name_call_ptr(C, gzop->type, WM_OP_INVOKE_DEFAULT, &gzop->ptr);
+}
+
+static void wm_gizmo_set_matrix_rotation_from_z_axis__internal(float matrix[4][4],
+ const float z_axis[3])
+{
+ /* old code, seems we can use simpler method */
#if 0
- const float z_global[3] = {0.0f, 0.0f, 1.0f};
- float rot[3][3];
+ const float z_global[3] = {0.0f, 0.0f, 1.0f};
+ float rot[3][3];
- rotation_between_vecs_to_mat3(rot, z_global, z_axis);
- copy_v3_v3(matrix[0], rot[0]);
- copy_v3_v3(matrix[1], rot[1]);
- copy_v3_v3(matrix[2], rot[2]);
+ rotation_between_vecs_to_mat3(rot, z_global, z_axis);
+ copy_v3_v3(matrix[0], rot[0]);
+ copy_v3_v3(matrix[1], rot[1]);
+ copy_v3_v3(matrix[2], rot[2]);
#else
- normalize_v3_v3(matrix[2], z_axis);
- ortho_basis_v3v3_v3(matrix[0], matrix[1], matrix[2]);
+ normalize_v3_v3(matrix[2], z_axis);
+ ortho_basis_v3v3_v3(matrix[0], matrix[1], matrix[2]);
#endif
-
}
-static void wm_gizmo_set_matrix_rotation_from_yz_axis__internal(
- float matrix[4][4], const float y_axis[3], const float z_axis[3])
+static void wm_gizmo_set_matrix_rotation_from_yz_axis__internal(float matrix[4][4],
+ const float y_axis[3],
+ const float z_axis[3])
{
- normalize_v3_v3(matrix[1], y_axis);
- normalize_v3_v3(matrix[2], z_axis);
- cross_v3_v3v3(matrix[0], matrix[1], matrix[2]);
- normalize_v3(matrix[0]);
+ normalize_v3_v3(matrix[1], y_axis);
+ normalize_v3_v3(matrix[2], z_axis);
+ cross_v3_v3v3(matrix[0], matrix[1], matrix[2]);
+ normalize_v3(matrix[0]);
}
/**
* wmGizmo.matrix utils.
*/
-void WM_gizmo_set_matrix_rotation_from_z_axis(
- wmGizmo *gz, const float z_axis[3])
+void WM_gizmo_set_matrix_rotation_from_z_axis(wmGizmo *gz, const float z_axis[3])
{
- wm_gizmo_set_matrix_rotation_from_z_axis__internal(gz->matrix_basis, z_axis);
+ wm_gizmo_set_matrix_rotation_from_z_axis__internal(gz->matrix_basis, z_axis);
}
-void WM_gizmo_set_matrix_rotation_from_yz_axis(
- wmGizmo *gz, const float y_axis[3], const float z_axis[3])
+void WM_gizmo_set_matrix_rotation_from_yz_axis(wmGizmo *gz,
+ const float y_axis[3],
+ const float z_axis[3])
{
- wm_gizmo_set_matrix_rotation_from_yz_axis__internal(gz->matrix_basis, y_axis, z_axis);
+ wm_gizmo_set_matrix_rotation_from_yz_axis__internal(gz->matrix_basis, y_axis, z_axis);
}
void WM_gizmo_set_matrix_location(wmGizmo *gz, const float origin[3])
{
- copy_v3_v3(gz->matrix_basis[3], origin);
+ copy_v3_v3(gz->matrix_basis[3], origin);
}
/**
* wmGizmo.matrix_offset utils.
*/
-void WM_gizmo_set_matrix_offset_rotation_from_z_axis(
- wmGizmo *gz, const float z_axis[3])
+void WM_gizmo_set_matrix_offset_rotation_from_z_axis(wmGizmo *gz, const float z_axis[3])
{
- wm_gizmo_set_matrix_rotation_from_z_axis__internal(gz->matrix_offset, z_axis);
+ wm_gizmo_set_matrix_rotation_from_z_axis__internal(gz->matrix_offset, z_axis);
}
-void WM_gizmo_set_matrix_offset_rotation_from_yz_axis(
- wmGizmo *gz, const float y_axis[3], const float z_axis[3])
+void WM_gizmo_set_matrix_offset_rotation_from_yz_axis(wmGizmo *gz,
+ const float y_axis[3],
+ const float z_axis[3])
{
- wm_gizmo_set_matrix_rotation_from_yz_axis__internal(gz->matrix_offset, y_axis, z_axis);
+ wm_gizmo_set_matrix_rotation_from_yz_axis__internal(gz->matrix_offset, y_axis, z_axis);
}
void WM_gizmo_set_matrix_offset_location(wmGizmo *gz, const float offset[3])
{
- copy_v3_v3(gz->matrix_offset[3], offset);
+ copy_v3_v3(gz->matrix_offset[3], offset);
}
void WM_gizmo_set_flag(wmGizmo *gz, const int flag, const bool enable)
{
- if (enable) {
- gz->flag |= flag;
- }
- else {
- gz->flag &= ~flag;
- }
+ if (enable) {
+ gz->flag |= flag;
+ }
+ else {
+ gz->flag &= ~flag;
+ }
}
void WM_gizmo_set_scale(wmGizmo *gz, const float scale)
{
- gz->scale_basis = scale;
+ gz->scale_basis = scale;
}
void WM_gizmo_set_line_width(wmGizmo *gz, const float line_width)
{
- gz->line_width = line_width;
+ gz->line_width = line_width;
}
void WM_gizmo_get_color(const wmGizmo *gz, float color[4])
{
- copy_v4_v4(color, gz->color);
+ copy_v4_v4(color, gz->color);
}
void WM_gizmo_set_color(wmGizmo *gz, const float color[4])
{
- copy_v4_v4(gz->color, color);
+ copy_v4_v4(gz->color, color);
}
void WM_gizmo_get_color_highlight(const wmGizmo *gz, float color_hi[4])
{
- copy_v4_v4(color_hi, gz->color_hi);
+ copy_v4_v4(color_hi, gz->color_hi);
}
void WM_gizmo_set_color_highlight(wmGizmo *gz, const float color_hi[4])
{
- copy_v4_v4(gz->color_hi, color_hi);
+ copy_v4_v4(gz->color_hi, color_hi);
}
-
-/** \} */ // Gizmo Creation API
-
+/** \} */ // Gizmo Creation API
/* -------------------------------------------------------------------- */
/** \name Gizmo Callback Assignment
@@ -394,12 +385,11 @@ void WM_gizmo_set_color_highlight(wmGizmo *gz, const float color_hi[4])
void WM_gizmo_set_fn_custom_modal(struct wmGizmo *gz, wmGizmoFnModal fn)
{
- gz->custom_modal = fn;
+ gz->custom_modal = fn;
}
/** \} */
-
/* -------------------------------------------------------------------- */
/**
* Add/Remove \a gizmo to selection.
@@ -408,66 +398,65 @@ void WM_gizmo_set_fn_custom_modal(struct wmGizmo *gz, wmGizmoFnModal fn)
* \return if the selection has changed.
*/
bool wm_gizmo_select_set_ex(
- wmGizmoMap *gzmap, wmGizmo *gz, bool select,
- bool use_array, bool use_callback)
-{
- bool changed = false;
-
- if (select) {
- if ((gz->state & WM_GIZMO_STATE_SELECT) == 0) {
- if (use_array) {
- wm_gizmomap_select_array_push_back(gzmap, gz);
- }
- gz->state |= WM_GIZMO_STATE_SELECT;
- changed = true;
- }
- }
- else {
- if (gz->state & WM_GIZMO_STATE_SELECT) {
- if (use_array) {
- wm_gizmomap_select_array_remove(gzmap, gz);
- }
- gz->state &= ~WM_GIZMO_STATE_SELECT;
- changed = true;
- }
- }
-
- /* In the case of unlinking we only want to remove from the array
- * and not write to the external state */
- if (use_callback && changed) {
- if (gz->type->select_refresh) {
- gz->type->select_refresh(gz);
- }
- }
-
- return changed;
+ wmGizmoMap *gzmap, wmGizmo *gz, bool select, bool use_array, bool use_callback)
+{
+ bool changed = false;
+
+ if (select) {
+ if ((gz->state & WM_GIZMO_STATE_SELECT) == 0) {
+ if (use_array) {
+ wm_gizmomap_select_array_push_back(gzmap, gz);
+ }
+ gz->state |= WM_GIZMO_STATE_SELECT;
+ changed = true;
+ }
+ }
+ else {
+ if (gz->state & WM_GIZMO_STATE_SELECT) {
+ if (use_array) {
+ wm_gizmomap_select_array_remove(gzmap, gz);
+ }
+ gz->state &= ~WM_GIZMO_STATE_SELECT;
+ changed = true;
+ }
+ }
+
+ /* In the case of unlinking we only want to remove from the array
+ * and not write to the external state */
+ if (use_callback && changed) {
+ if (gz->type->select_refresh) {
+ gz->type->select_refresh(gz);
+ }
+ }
+
+ return changed;
}
/* Remove from selection array without running callbacks. */
bool WM_gizmo_select_unlink(wmGizmoMap *gzmap, wmGizmo *gz)
{
- return wm_gizmo_select_set_ex(gzmap, gz, false, true, false);
+ return wm_gizmo_select_set_ex(gzmap, gz, false, true, false);
}
bool WM_gizmo_select_set(wmGizmoMap *gzmap, wmGizmo *gz, bool select)
{
- return wm_gizmo_select_set_ex(gzmap, gz, select, true, true);
+ return wm_gizmo_select_set_ex(gzmap, gz, select, true, true);
}
void WM_gizmo_highlight_set(wmGizmoMap *gzmap, wmGizmo *gz)
{
- wm_gizmomap_highlight_set(gzmap, NULL, gz, gz ? gz->highlight_part : 0);
+ wm_gizmomap_highlight_set(gzmap, NULL, gz, gz ? gz->highlight_part : 0);
}
bool wm_gizmo_select_and_highlight(bContext *C, wmGizmoMap *gzmap, wmGizmo *gz)
{
- if (WM_gizmo_select_set(gzmap, gz, true)) {
- wm_gizmomap_highlight_set(gzmap, C, gz, gz->highlight_part);
- return true;
- }
- else {
- return false;
- }
+ if (WM_gizmo_select_set(gzmap, gz, true)) {
+ wm_gizmomap_highlight_set(gzmap, C, gz, gz->highlight_part);
+ return true;
+ }
+ else {
+ return false;
+ }
}
/**
@@ -475,157 +464,157 @@ bool wm_gizmo_select_and_highlight(bContext *C, wmGizmoMap *gzmap, wmGizmo *gz)
*
* We could do this when linking them, but this complicates things since the window update code needs to run first.
*/
-void WM_gizmo_modal_set_from_setup(
- struct wmGizmoMap *gzmap, struct bContext *C,
- struct wmGizmo *gz, int part_index, const wmEvent *event)
-{
- gz->highlight_part = part_index;
- WM_gizmo_highlight_set(gzmap, gz);
- if (false) {
- wm_gizmomap_modal_set(gzmap, C, gz, event, true);
- }
- else {
- /* WEAK: but it works. */
- WM_operator_name_call(C, "GIZMOGROUP_OT_gizmo_tweak", WM_OP_INVOKE_DEFAULT, NULL);
- }
+void WM_gizmo_modal_set_from_setup(struct wmGizmoMap *gzmap,
+ struct bContext *C,
+ struct wmGizmo *gz,
+ int part_index,
+ const wmEvent *event)
+{
+ gz->highlight_part = part_index;
+ WM_gizmo_highlight_set(gzmap, gz);
+ if (false) {
+ wm_gizmomap_modal_set(gzmap, C, gz, event, true);
+ }
+ else {
+ /* WEAK: but it works. */
+ WM_operator_name_call(C, "GIZMOGROUP_OT_gizmo_tweak", WM_OP_INVOKE_DEFAULT, NULL);
+ }
}
void wm_gizmo_calculate_scale(wmGizmo *gz, const bContext *C)
{
- const RegionView3D *rv3d = CTX_wm_region_view3d(C);
- float scale = UI_DPI_FAC;
-
- if ((gz->parent_gzgroup->type->flag & WM_GIZMOGROUPTYPE_SCALE) == 0) {
- scale *= U.gizmo_size;
- if (rv3d) {
- /* 'ED_view3d_pixel_size' includes 'U.pixelsize', remove it. */
- float matrix_world[4][4];
- if (gz->type->matrix_basis_get) {
- float matrix_basis[4][4];
- gz->type->matrix_basis_get(gz, matrix_basis);
- mul_m4_m4m4(matrix_world, gz->matrix_space, matrix_basis);
- }
- else {
- mul_m4_m4m4(matrix_world, gz->matrix_space, gz->matrix_basis);
- }
-
- /* Exclude matrix_offset from scale. */
- scale *= ED_view3d_pixel_size_no_ui_scale(rv3d, matrix_world[3]);
- }
- else {
- scale *= 0.02f;
- }
- }
-
- gz->scale_final = gz->scale_basis * scale;
+ const RegionView3D *rv3d = CTX_wm_region_view3d(C);
+ float scale = UI_DPI_FAC;
+
+ if ((gz->parent_gzgroup->type->flag & WM_GIZMOGROUPTYPE_SCALE) == 0) {
+ scale *= U.gizmo_size;
+ if (rv3d) {
+ /* 'ED_view3d_pixel_size' includes 'U.pixelsize', remove it. */
+ float matrix_world[4][4];
+ if (gz->type->matrix_basis_get) {
+ float matrix_basis[4][4];
+ gz->type->matrix_basis_get(gz, matrix_basis);
+ mul_m4_m4m4(matrix_world, gz->matrix_space, matrix_basis);
+ }
+ else {
+ mul_m4_m4m4(matrix_world, gz->matrix_space, gz->matrix_basis);
+ }
+
+ /* Exclude matrix_offset from scale. */
+ scale *= ED_view3d_pixel_size_no_ui_scale(rv3d, matrix_world[3]);
+ }
+ else {
+ scale *= 0.02f;
+ }
+ }
+
+ gz->scale_final = gz->scale_basis * scale;
}
static void gizmo_update_prop_data(wmGizmo *gz)
{
- /* gizmo property might have been changed, so update gizmo */
- if (gz->type->property_update) {
- wmGizmoProperty *gz_prop_array = WM_gizmo_target_property_array(gz);
- for (int i = 0; i < gz->type->target_property_defs_len; i++) {
- wmGizmoProperty *gz_prop = &gz_prop_array[i];
- if (WM_gizmo_target_property_is_valid(gz_prop)) {
- gz->type->property_update(gz, gz_prop);
- }
- }
- }
+ /* gizmo property might have been changed, so update gizmo */
+ if (gz->type->property_update) {
+ wmGizmoProperty *gz_prop_array = WM_gizmo_target_property_array(gz);
+ for (int i = 0; i < gz->type->target_property_defs_len; i++) {
+ wmGizmoProperty *gz_prop = &gz_prop_array[i];
+ if (WM_gizmo_target_property_is_valid(gz_prop)) {
+ gz->type->property_update(gz, gz_prop);
+ }
+ }
+ }
}
void wm_gizmo_update(wmGizmo *gz, const bContext *C, const bool refresh_map)
{
- if (refresh_map) {
- gizmo_update_prop_data(gz);
- }
- wm_gizmo_calculate_scale(gz, C);
+ if (refresh_map) {
+ gizmo_update_prop_data(gz);
+ }
+ wm_gizmo_calculate_scale(gz, C);
}
int wm_gizmo_is_visible(wmGizmo *gz)
{
- if (gz->flag & WM_GIZMO_HIDDEN) {
- return 0;
- }
- if ((gz->state & WM_GIZMO_STATE_MODAL) &&
- !(gz->flag & (WM_GIZMO_DRAW_MODAL | WM_GIZMO_DRAW_VALUE)))
- {
- /* don't draw while modal (dragging) */
- return 0;
- }
- if ((gz->flag & WM_GIZMO_DRAW_HOVER) &&
- !(gz->state & WM_GIZMO_STATE_HIGHLIGHT) &&
- !(gz->state & WM_GIZMO_STATE_SELECT)) /* still draw selected gizmos */
- {
- /* update but don't draw */
- return WM_GIZMO_IS_VISIBLE_UPDATE;
- }
-
- return WM_GIZMO_IS_VISIBLE_UPDATE | WM_GIZMO_IS_VISIBLE_DRAW;
-}
-
-void WM_gizmo_calc_matrix_final_params(
- const wmGizmo *gz,
- const struct WM_GizmoMatrixParams *params,
- float r_mat[4][4])
-{
- const float (* const matrix_space)[4] = params->matrix_space ? params->matrix_space : gz->matrix_space;
- const float (* const matrix_basis)[4] = params->matrix_basis ? params->matrix_basis : gz->matrix_basis;
- const float (* const matrix_offset)[4] = params->matrix_offset ? params->matrix_offset : gz->matrix_offset;
- const float *scale_final = params->scale_final ? params->scale_final : &gz->scale_final;
-
- float final_matrix[4][4];
- if (params->matrix_basis == NULL && gz->type->matrix_basis_get) {
- gz->type->matrix_basis_get(gz, final_matrix);
- }
- else {
- copy_m4_m4(final_matrix, matrix_basis);
- }
-
- if (gz->flag & WM_GIZMO_DRAW_NO_SCALE) {
- mul_m4_m4m4(final_matrix, final_matrix, matrix_offset);
- }
- else {
- if (gz->flag & WM_GIZMO_DRAW_OFFSET_SCALE) {
- mul_mat3_m4_fl(final_matrix, *scale_final);
- mul_m4_m4m4(final_matrix, final_matrix, matrix_offset);
- }
- else {
- mul_m4_m4m4(final_matrix, final_matrix, matrix_offset);
- mul_mat3_m4_fl(final_matrix, *scale_final);
- }
- }
-
- mul_m4_m4m4(r_mat, matrix_space, final_matrix);
+ if (gz->flag & WM_GIZMO_HIDDEN) {
+ return 0;
+ }
+ if ((gz->state & WM_GIZMO_STATE_MODAL) &&
+ !(gz->flag & (WM_GIZMO_DRAW_MODAL | WM_GIZMO_DRAW_VALUE))) {
+ /* don't draw while modal (dragging) */
+ return 0;
+ }
+ if ((gz->flag & WM_GIZMO_DRAW_HOVER) && !(gz->state & WM_GIZMO_STATE_HIGHLIGHT) &&
+ !(gz->state & WM_GIZMO_STATE_SELECT)) /* still draw selected gizmos */
+ {
+ /* update but don't draw */
+ return WM_GIZMO_IS_VISIBLE_UPDATE;
+ }
+
+ return WM_GIZMO_IS_VISIBLE_UPDATE | WM_GIZMO_IS_VISIBLE_DRAW;
+}
+
+void WM_gizmo_calc_matrix_final_params(const wmGizmo *gz,
+ const struct WM_GizmoMatrixParams *params,
+ float r_mat[4][4])
+{
+ const float(*const matrix_space)[4] = params->matrix_space ? params->matrix_space :
+ gz->matrix_space;
+ const float(*const matrix_basis)[4] = params->matrix_basis ? params->matrix_basis :
+ gz->matrix_basis;
+ const float(*const matrix_offset)[4] = params->matrix_offset ? params->matrix_offset :
+ gz->matrix_offset;
+ const float *scale_final = params->scale_final ? params->scale_final : &gz->scale_final;
+
+ float final_matrix[4][4];
+ if (params->matrix_basis == NULL && gz->type->matrix_basis_get) {
+ gz->type->matrix_basis_get(gz, final_matrix);
+ }
+ else {
+ copy_m4_m4(final_matrix, matrix_basis);
+ }
+
+ if (gz->flag & WM_GIZMO_DRAW_NO_SCALE) {
+ mul_m4_m4m4(final_matrix, final_matrix, matrix_offset);
+ }
+ else {
+ if (gz->flag & WM_GIZMO_DRAW_OFFSET_SCALE) {
+ mul_mat3_m4_fl(final_matrix, *scale_final);
+ mul_m4_m4m4(final_matrix, final_matrix, matrix_offset);
+ }
+ else {
+ mul_m4_m4m4(final_matrix, final_matrix, matrix_offset);
+ mul_mat3_m4_fl(final_matrix, *scale_final);
+ }
+ }
+
+ mul_m4_m4m4(r_mat, matrix_space, final_matrix);
}
void WM_gizmo_calc_matrix_final_no_offset(const wmGizmo *gz, float r_mat[4][4])
{
- float mat_identity[4][4];
- unit_m4(mat_identity);
+ float mat_identity[4][4];
+ unit_m4(mat_identity);
- WM_gizmo_calc_matrix_final_params(
- gz,
- &((struct WM_GizmoMatrixParams) {
- .matrix_space = NULL,
- .matrix_basis = NULL,
- .matrix_offset = mat_identity,
- .scale_final = NULL,
- }), r_mat
- );
+ WM_gizmo_calc_matrix_final_params(gz,
+ &((struct WM_GizmoMatrixParams){
+ .matrix_space = NULL,
+ .matrix_basis = NULL,
+ .matrix_offset = mat_identity,
+ .scale_final = NULL,
+ }),
+ r_mat);
}
void WM_gizmo_calc_matrix_final(const wmGizmo *gz, float r_mat[4][4])
{
- WM_gizmo_calc_matrix_final_params(
- gz,
- &((struct WM_GizmoMatrixParams) {
- .matrix_space = NULL,
- .matrix_basis = NULL,
- .matrix_offset = NULL,
- .scale_final = NULL,
- }), r_mat
- );
+ WM_gizmo_calc_matrix_final_params(gz,
+ &((struct WM_GizmoMatrixParams){
+ .matrix_space = NULL,
+ .matrix_basis = NULL,
+ .matrix_offset = NULL,
+ .scale_final = NULL,
+ }),
+ r_mat);
}
/** \name Gizmo Property Access
@@ -634,74 +623,69 @@ void WM_gizmo_calc_matrix_final(const wmGizmo *gz, float r_mat[4][4])
*
* \{ */
-
void WM_gizmo_properties_create_ptr(PointerRNA *ptr, wmGizmoType *gzt)
{
- RNA_pointer_create(NULL, gzt->srna, NULL, ptr);
+ RNA_pointer_create(NULL, gzt->srna, NULL, ptr);
}
void WM_gizmo_properties_create(PointerRNA *ptr, const char *gtstring)
{
- const wmGizmoType *gzt = WM_gizmotype_find(gtstring, false);
+ const wmGizmoType *gzt = WM_gizmotype_find(gtstring, false);
- if (gzt) {
- WM_gizmo_properties_create_ptr(ptr, (wmGizmoType *)gzt);
- }
- else {
- RNA_pointer_create(NULL, &RNA_GizmoProperties, NULL, ptr);
- }
+ if (gzt) {
+ WM_gizmo_properties_create_ptr(ptr, (wmGizmoType *)gzt);
+ }
+ else {
+ RNA_pointer_create(NULL, &RNA_GizmoProperties, NULL, ptr);
+ }
}
/* similar to the function above except its uses ID properties
* used for keymaps and macros */
void WM_gizmo_properties_alloc(PointerRNA **ptr, IDProperty **properties, const char *gtstring)
{
- if (*properties == NULL) {
- IDPropertyTemplate val = {0};
- *properties = IDP_New(IDP_GROUP, &val, "wmOpItemProp");
- }
+ if (*properties == NULL) {
+ IDPropertyTemplate val = {0};
+ *properties = IDP_New(IDP_GROUP, &val, "wmOpItemProp");
+ }
- if (*ptr == NULL) {
- *ptr = MEM_callocN(sizeof(PointerRNA), "wmOpItemPtr");
- WM_gizmo_properties_create(*ptr, gtstring);
- }
-
- (*ptr)->data = *properties;
+ if (*ptr == NULL) {
+ *ptr = MEM_callocN(sizeof(PointerRNA), "wmOpItemPtr");
+ WM_gizmo_properties_create(*ptr, gtstring);
+ }
+ (*ptr)->data = *properties;
}
void WM_gizmo_properties_sanitize(PointerRNA *ptr, const bool no_context)
{
- RNA_STRUCT_BEGIN (ptr, prop)
- {
- switch (RNA_property_type(prop)) {
- case PROP_ENUM:
- if (no_context) {
- RNA_def_property_flag(prop, PROP_ENUM_NO_CONTEXT);
- }
- else {
- RNA_def_property_clear_flag(prop, PROP_ENUM_NO_CONTEXT);
- }
- break;
- case PROP_POINTER:
- {
- StructRNA *ptype = RNA_property_pointer_type(ptr, prop);
-
- /* recurse into gizmo properties */
- if (RNA_struct_is_a(ptype, &RNA_GizmoProperties)) {
- PointerRNA opptr = RNA_property_pointer_get(ptr, prop);
- WM_gizmo_properties_sanitize(&opptr, no_context);
- }
- break;
- }
- default:
- break;
- }
- }
- RNA_STRUCT_END;
+ RNA_STRUCT_BEGIN (ptr, prop) {
+ switch (RNA_property_type(prop)) {
+ case PROP_ENUM:
+ if (no_context) {
+ RNA_def_property_flag(prop, PROP_ENUM_NO_CONTEXT);
+ }
+ else {
+ RNA_def_property_clear_flag(prop, PROP_ENUM_NO_CONTEXT);
+ }
+ break;
+ case PROP_POINTER: {
+ StructRNA *ptype = RNA_property_pointer_type(ptr, prop);
+
+ /* recurse into gizmo properties */
+ if (RNA_struct_is_a(ptype, &RNA_GizmoProperties)) {
+ PointerRNA opptr = RNA_property_pointer_get(ptr, prop);
+ WM_gizmo_properties_sanitize(&opptr, no_context);
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ }
+ RNA_STRUCT_END;
}
-
/** set all props to their default,
* \param do_update: Only update un-initialized props.
*
@@ -710,71 +694,68 @@ void WM_gizmo_properties_sanitize(PointerRNA *ptr, const bool no_context)
*/
bool WM_gizmo_properties_default(PointerRNA *ptr, const bool do_update)
{
- bool changed = false;
- RNA_STRUCT_BEGIN (ptr, prop)
- {
- switch (RNA_property_type(prop)) {
- case PROP_POINTER:
- {
- StructRNA *ptype = RNA_property_pointer_type(ptr, prop);
- if (ptype != &RNA_Struct) {
- PointerRNA opptr = RNA_property_pointer_get(ptr, prop);
- changed |= WM_gizmo_properties_default(&opptr, do_update);
- }
- break;
- }
- default:
- if ((do_update == false) || (RNA_property_is_set(ptr, prop) == false)) {
- if (RNA_property_reset(ptr, prop, -1)) {
- changed = true;
- }
- }
- break;
- }
- }
- RNA_STRUCT_END;
-
- return changed;
+ bool changed = false;
+ RNA_STRUCT_BEGIN (ptr, prop) {
+ switch (RNA_property_type(prop)) {
+ case PROP_POINTER: {
+ StructRNA *ptype = RNA_property_pointer_type(ptr, prop);
+ if (ptype != &RNA_Struct) {
+ PointerRNA opptr = RNA_property_pointer_get(ptr, prop);
+ changed |= WM_gizmo_properties_default(&opptr, do_update);
+ }
+ break;
+ }
+ default:
+ if ((do_update == false) || (RNA_property_is_set(ptr, prop) == false)) {
+ if (RNA_property_reset(ptr, prop, -1)) {
+ changed = true;
+ }
+ }
+ break;
+ }
+ }
+ RNA_STRUCT_END;
+
+ return changed;
}
/* remove all props without PROP_SKIP_SAVE */
void WM_gizmo_properties_reset(wmGizmo *gz)
{
- if (gz->ptr->data) {
- PropertyRNA *iterprop;
- iterprop = RNA_struct_iterator_property(gz->type->srna);
+ if (gz->ptr->data) {
+ PropertyRNA *iterprop;
+ iterprop = RNA_struct_iterator_property(gz->type->srna);
- RNA_PROP_BEGIN (gz->ptr, itemptr, iterprop)
- {
- PropertyRNA *prop = itemptr.data;
+ RNA_PROP_BEGIN (gz->ptr, itemptr, iterprop) {
+ PropertyRNA *prop = itemptr.data;
- if ((RNA_property_flag(prop) & PROP_SKIP_SAVE) == 0) {
- const char *identifier = RNA_property_identifier(prop);
- RNA_struct_idprops_unset(gz->ptr, identifier);
- }
- }
- RNA_PROP_END;
- }
+ if ((RNA_property_flag(prop) & PROP_SKIP_SAVE) == 0) {
+ const char *identifier = RNA_property_identifier(prop);
+ RNA_struct_idprops_unset(gz->ptr, identifier);
+ }
+ }
+ RNA_PROP_END;
+ }
}
void WM_gizmo_properties_clear(PointerRNA *ptr)
{
- IDProperty *properties = ptr->data;
+ IDProperty *properties = ptr->data;
- if (properties) {
- IDP_ClearProperty(properties);
- }
+ if (properties) {
+ IDP_ClearProperty(properties);
+ }
}
void WM_gizmo_properties_free(PointerRNA *ptr)
{
- IDProperty *properties = ptr->data;
+ IDProperty *properties = ptr->data;
- if (properties) {
- IDP_FreeProperty(properties);
- MEM_freeN(properties);
- ptr->data = NULL; /* just in case */
- }
+ if (properties) {
+ IDP_FreeProperty(properties);
+ MEM_freeN(properties);
+ ptr->data = NULL; /* just in case */
+ }
}
/** \} */
@@ -785,21 +766,19 @@ void WM_gizmo_properties_free(PointerRNA *ptr)
bool WM_gizmo_context_check_drawstep(const struct bContext *C, eWM_GizmoFlagMapDrawStep step)
{
- switch (step) {
- case WM_GIZMOMAP_DRAWSTEP_2D:
- {
- break;
- }
- case WM_GIZMOMAP_DRAWSTEP_3D:
- {
- wmWindowManager *wm = CTX_wm_manager(C);
- if (ED_screen_animation_playing(wm)) {
- return false;
- }
- break;
- }
- }
- return true;
+ switch (step) {
+ case WM_GIZMOMAP_DRAWSTEP_2D: {
+ break;
+ }
+ case WM_GIZMOMAP_DRAWSTEP_3D: {
+ wmWindowManager *wm = CTX_wm_manager(C);
+ if (ED_screen_animation_playing(wm)) {
+ return false;
+ }
+ break;
+ }
+ }
+ return true;
}
/** \} */