Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_view3d/view3d_gizmo_navigate.c
| Show All 39 Lines | |||||
| #include "WM_types.h" | #include "WM_types.h" | ||||
| #include "view3d_intern.h" /* own include */ | #include "view3d_intern.h" /* own include */ | ||||
| /* -------------------------------------------------------------------- */ | /* -------------------------------------------------------------------- */ | ||||
| /** \name View3D Navigation Gizmo Group | /** \name View3D Navigation Gizmo Group | ||||
| * \{ */ | * \{ */ | ||||
| /* Offset from screen edge. */ | |||||
| #define GIZMO_OFFSET_FAC 1.2f | |||||
| /* Size of main icon. */ | /* Size of main icon. */ | ||||
| #define GIZMO_SIZE 80 | #define GIZMO_SIZE U.gizmo_size_navigate_v3d | ||||
| /* Factor for size of smaller button. */ | |||||
| #define GIZMO_MINI_FAC 0.35f | /* Main gizmo offset from screen edges in unscaled pixels. */ | ||||
| /* How much mini buttons offset from the primary. */ | #define GIZMO_OFFSET 10.0f | ||||
| #define GIZMO_MINI_OFFSET_FAC 0.38f | |||||
| /* Width of smaller buttons in unscaled pixels. */ | |||||
| #define GIZMO_MINI_SIZE 28.0f | |||||
| /* Margin around the smaller buttons. */ | |||||
| #define GIZMO_MINI_OFFSET 2.0f | |||||
| enum { | enum { | ||||
| GZ_INDEX_MOVE = 0, | GZ_INDEX_MOVE = 0, | ||||
| GZ_INDEX_ROTATE = 1, | GZ_INDEX_ROTATE = 1, | ||||
| GZ_INDEX_ZOOM = 2, | GZ_INDEX_ZOOM = 2, | ||||
| /* just buttons */ | /* just buttons */ | ||||
| /* overlaps GZ_INDEX_ORTHO (switch between) */ | /* overlaps GZ_INDEX_ORTHO (switch between) */ | ||||
| ▲ Show 20 Lines • Show All 105 Lines • ▼ Show 20 Lines | else { | ||||
| gz->color[3] = 0.5f; | gz->color[3] = 0.5f; | ||||
| gz->color_hi[3] = 0.75f; | gz->color_hi[3] = 0.75f; | ||||
| } | } | ||||
| UI_GetThemeColorShade3fv(TH_HEADER, color_tint, gz->color); | UI_GetThemeColorShade3fv(TH_HEADER, color_tint, gz->color); | ||||
| UI_GetThemeColorShade3fv(TH_HEADER, color_tint_hi, gz->color_hi); | UI_GetThemeColorShade3fv(TH_HEADER, color_tint_hi, gz->color_hi); | ||||
| } | } | ||||
| /* may be overwritten later */ | /* may be overwritten later */ | ||||
| gz->scale_basis = (GIZMO_SIZE * GIZMO_MINI_FAC) / 2; | gz->scale_basis = GIZMO_MINI_SIZE / 2.0f; | ||||
| if (info->icon != 0) { | if (info->icon != 0) { | ||||
| PropertyRNA *prop = RNA_struct_find_property(gz->ptr, "icon"); | PropertyRNA *prop = RNA_struct_find_property(gz->ptr, "icon"); | ||||
| RNA_property_enum_set(gz->ptr, prop, info->icon); | RNA_property_enum_set(gz->ptr, prop, info->icon); | ||||
| RNA_enum_set( | RNA_enum_set( | ||||
| gz->ptr, "draw_options", ED_GIZMO_BUTTON_SHOW_OUTLINE | ED_GIZMO_BUTTON_SHOW_BACKDROP); | gz->ptr, "draw_options", ED_GIZMO_BUTTON_SHOW_OUTLINE | ED_GIZMO_BUTTON_SHOW_BACKDROP); | ||||
| } | } | ||||
| wmOperatorType *ot = WM_operatortype_find(info->opname, true); | wmOperatorType *ot = WM_operatortype_find(info->opname, true); | ||||
| Show All 21 Lines | for (int i = 0; i < ARRAY_SIZE(gz_ids); i++) { | ||||
| wmGizmo *gz = navgroup->gz_array[gz_ids[i]]; | wmGizmo *gz = navgroup->gz_array[gz_ids[i]]; | ||||
| wmGizmoOpElem *gzop = WM_gizmo_operator_get(gz, 0); | wmGizmoOpElem *gzop = WM_gizmo_operator_get(gz, 0); | ||||
| RNA_boolean_set(&gzop->ptr, "use_cursor_init", false); | RNA_boolean_set(&gzop->ptr, "use_cursor_init", false); | ||||
| } | } | ||||
| } | } | ||||
| { | { | ||||
| wmGizmo *gz = navgroup->gz_array[GZ_INDEX_ROTATE]; | wmGizmo *gz = navgroup->gz_array[GZ_INDEX_ROTATE]; | ||||
| gz->scale_basis = GIZMO_SIZE / 2; | gz->scale_basis = GIZMO_SIZE / 2.0f; | ||||
| const char mapping[6] = { | const char mapping[6] = { | ||||
| RV3D_VIEW_LEFT, | RV3D_VIEW_LEFT, | ||||
| RV3D_VIEW_RIGHT, | RV3D_VIEW_RIGHT, | ||||
| RV3D_VIEW_FRONT, | RV3D_VIEW_FRONT, | ||||
| RV3D_VIEW_BACK, | RV3D_VIEW_BACK, | ||||
| RV3D_VIEW_BOTTOM, | RV3D_VIEW_BOTTOM, | ||||
| RV3D_VIEW_TOP, | RV3D_VIEW_TOP, | ||||
| }; | }; | ||||
| Show All 34 Lines | static void WIDGETGROUP_navigate_draw_prepare(const bContext *C, wmGizmoGroup *gzgroup) | ||||
| navgroup->state.rect_visible = *rect_visible; | navgroup->state.rect_visible = *rect_visible; | ||||
| navgroup->state.rv3d.is_persp = rv3d->is_persp; | navgroup->state.rv3d.is_persp = rv3d->is_persp; | ||||
| navgroup->state.rv3d.is_camera = (rv3d->persp == RV3D_CAMOB); | navgroup->state.rv3d.is_camera = (rv3d->persp == RV3D_CAMOB); | ||||
| navgroup->state.rv3d.viewlock = RV3D_LOCK_FLAGS(rv3d); | navgroup->state.rv3d.viewlock = RV3D_LOCK_FLAGS(rv3d); | ||||
| const bool show_navigate = (U.uiflag & USER_SHOW_GIZMO_NAVIGATE) != 0; | const bool show_navigate = (U.uiflag & USER_SHOW_GIZMO_NAVIGATE) != 0; | ||||
| const bool show_rotate_gizmo = (U.mini_axis_type == USER_MINI_AXIS_TYPE_GIZMO); | const bool show_rotate_gizmo = (U.mini_axis_type == USER_MINI_AXIS_TYPE_GIZMO); | ||||
| const float icon_size = GIZMO_SIZE; | const float icon_offset = ((GIZMO_SIZE / 2.0f) + GIZMO_OFFSET) * UI_DPI_FAC; | ||||
| const float icon_offset = (icon_size * 0.52f) * GIZMO_OFFSET_FAC * UI_DPI_FAC; | const float icon_offset_mini = (GIZMO_MINI_SIZE + GIZMO_MINI_OFFSET) * UI_DPI_FAC; | ||||
| const float icon_offset_mini = icon_size * GIZMO_MINI_OFFSET_FAC * UI_DPI_FAC; | |||||
| const float co_rotate[2] = { | const float co_rotate[2] = { | ||||
| rect_visible->xmax - icon_offset, | rect_visible->xmax - icon_offset, | ||||
| rect_visible->ymax - icon_offset, | rect_visible->ymax - icon_offset, | ||||
| }; | }; | ||||
| float icon_offset_from_axis = 0.0f; | float icon_offset_from_axis = 0.0f; | ||||
| switch ((eUserpref_MiniAxisType)U.mini_axis_type) { | switch ((eUserpref_MiniAxisType)U.mini_axis_type) { | ||||
| case USER_MINI_AXIS_TYPE_GIZMO: | case USER_MINI_AXIS_TYPE_GIZMO: | ||||
| ▲ Show 20 Lines • Show All 75 Lines • Show Last 20 Lines | |||||